code: def _required_segments(self, sampfrom, sampto):
          
  
          # The starting segment with actual samples
          if self.layout == 'fixed':
              startseg = 0
          else:
              startseg = 1
  
          # Cumulative sum of segment lengths (ignoring layout segment)
          cumsumlengths = list(np.cumsum(self.seg_len[startseg:]))
          # Get first segment
          seg_numbers = [[sampfrom < cs for cs in cumsumlengths].index(True)]
          # Get final segment
          if sampto == cumsumlengths[len(cumsumlengths) - 1]:
              seg_numbers.append(len(cumsumlengths) - 1)
          else:
              seg_numbers.append([sampto <= cs for cs in cumsumlengths].index(True))
  
          # Add 1 for variable layout records
          seg_numbers = list(np.add(seg_numbers,startseg))
  
          # Obtain the sampfrom and sampto to read for each segment
          if seg_numbers[1] == seg_numbers[0]:
              # Only one segment to read
              seg_numbers = [seg_numbers[0]]
              # The segment's first sample number relative to the entire record
              segstartsamp = sum(self.seg_len[0:seg_numbers[0]])
              readsamps = [[sampfrom-segstartsamp, sampto-segstartsamp]]
  
          else:
              # More than one segment to read
              seg_numbers = list(range(seg_numbers[0], seg_numbers[1]+1))
              readsamps = [[0, self.seg_len[s]] for s in seg_numbers]
  
              # Starting sample for first segment.
              readsamps[0][0] = sampfrom - ([0] + cumsumlengths)[seg_numbers[0]-startseg]
  
              # End sample for last segment
              readsamps[-1][1] = sampto - ([0] + cumsumlengths)[seg_numbers[-1]-startseg]
  
          return (seg_numbers, readsamps)
docs: Determine the segments and the samples within each segment in a
          multi-segment record, that lie within a sample range.
  
          Parameters
          ----------
          sampfrom : int
              The starting sample number to read for each channel.
          sampto : int
              The sample number at which to stop reading for each channel.