code: def read_detections(fname):
      
      f = open(fname, 'r')
      detections = []
      for index, line in enumerate(f):
          if index == 0:
              continue  # Skip header
          if line.rstrip().split('; ')[0] == 'Template name':
              continue  # Skip any repeated headers
          detection = line.rstrip().split('; ')
          detection[1] = UTCDateTime(detection[1])
          detection[2] = int(float(detection[2]))
          detection[3] = ast.literal_eval(detection[3])
          detection[4] = float(detection[4])
          detection[5] = float(detection[5])
          if len(detection) < 9:
              detection.extend(['Unset', float('NaN')])
          else:
              detection[7] = float(detection[7])
          detections.append(Detection(
              template_name=detection[0], detect_time=detection[1],
              no_chans=detection[2], detect_val=detection[4],
              threshold=detection[5], threshold_type=detection[6],
              threshold_input=detection[7], typeofdet=detection[8],
              chans=detection[3]))
      f.close()
      return detections
docs: Read detections from a file to a list of Detection objects.
  
      :type fname: str
      :param fname: File to read from, must be a file written to by \
          Detection.write.
  
      :returns: list of :class:`eqcorrscan.core.match_filter.Detection`
      :rtype: list
  
      .. note::
          :class:`eqcorrscan.core.match_filter.Detection`'s returned do not
          contain Detection.event