code: def get_science_segs_from_datafind_outs(datafindcaches):
      
      newScienceSegs = {}
      for cache in datafindcaches:
          if len(cache) > 0:
              groupSegs = segments.segmentlist(e.segment for e in cache).coalesce()
              ifo = cache.ifo
              if ifo not in newScienceSegs:
                  newScienceSegs[ifo] = groupSegs
              else:
                  newScienceSegs[ifo].extend(groupSegs)
                  newScienceSegs[ifo].coalesce()
      return newScienceSegs
docs: This function will calculate the science segments that are covered in
      the OutGroupList containing the frame files returned by various
      calls to the datafind server. This can then be used to check whether this
      list covers what it is expected to cover.
  
      Parameters
      ----------
      datafindcaches : OutGroupList
          List of all the datafind output files.
  
      Returns
      --------
      newScienceSegs : Dictionary of ifo keyed glue.segment.segmentlist instances
          The times covered by the frames found in datafindOuts.