code: def extract_from_stream(stream, detections, pad=5.0, length=30.0):
      
      streams = []
      for detection in detections:
          cut_stream = Stream()
          for pick in detection.event.picks:
              tr = stream.select(station=pick.waveform_id.station_code,
                                 channel=pick.waveform_id.channel_code)
              if len(tr) == 0:
                  print('No data in stream for pick:')
                  print(pick)
                  continue
              cut_stream += tr.slice(
                  starttime=pick.time - pad,
                  endtime=pick.time - pad + length).copy()
          streams.append(cut_stream)
      return streams
docs: Extract waveforms for a list of detections from a stream.
  
      :type stream: obspy.core.stream.Stream
      :param stream: Stream containing the detections.
      :type detections: list
      :param detections: list of eqcorrscan.core.match_filter.detection
      :type pad: float
      :param pad: Pre-detection extract time in seconds.
      :type length: float
      :param length: Total extracted length in seconds.
  
      :returns:
          list of :class:`obspy.core.stream.Stream`, one for each detection.
      :type: list