code: def read(self,filename,min_length,slide_sec=0,buffer=0):
      
      self.__filename = filename
      octothorpe = re.compile(r'\A#')
      for line in open(filename):
        if not octothorpe.match(line) and int(line.split()[3]) >= min_length:
          (id,st,en,du) = map(int,line.split())
  
          # slide the data if doing a background estimation
          if slide_sec > 0:
            st += slide_sec
          elif slide_sec < 0:
            en += slide_sec
          du -= abs(slide_sec)
  
          # add a buffer
          if buffer > 0:
            st += buffer
            en -= buffer
            du -= 2*abs(buffer)
  
          x = ScienceSegment(tuple([id,st,en,du]))
          self.__sci_segs.append(x)
docs: Parse the science segments from the segwizard output contained in file.
      @param filename: input text file containing a list of science segments generated by
      segwizard.
      @param min_length: only append science segments that are longer than min_length.
      @param slide_sec: Slide each ScienceSegment by::
  
        delta > 0:
          [s,e] -> [s+delta,e].
        delta < 0:
          [s,e] -> [s,e-delta].
  
      @param buffer: shrink the ScienceSegment::
  
        [s,e] -> [s+buffer,e-buffer]