code: def _gwf_channel_segments(path, channel, warn=True):
      
      stream = open_gwf(path)
      # get segments for frames
      toc = stream.GetTOC()
      secs = toc.GetGTimeS()
      nano = toc.GetGTimeN()
      dur = toc.GetDt()
  
      readers = [getattr(stream, 'ReadFr{0}Data'.format(type_.title())) for
                 type_ in ("proc", "sim", "adc")]
  
      # for each segment, try and read the data for this channel
      for i, (s, ns, dt) in enumerate(zip(secs, nano, dur)):
          for read in readers:
              try:
                  read(i, channel)
              except (IndexError, ValueError):
                  continue
              readers = [read]  # use this one from now on
              epoch = LIGOTimeGPS(s, ns)
              yield Segment(epoch, epoch + dt)
              break
          else:  # none of the readers worked for this channel, warn
              if warn:
                  warnings.warn(
                      "{0!r} not found in frame {1} of {2}".format(
                          channel, i, path),
                  )
docs: Yields the segments containing data for ``channel`` in this GWF path