code: def _bool_segments(array, start=0, delta=1, minlen=1):
      
      array = iter(array)
      i = 0
      while True:
          try:  # get next value
              val = next(array)
          except StopIteration:  # end of array
              return
  
          if val:  # start of new segment
              n = 1  # count consecutive True
              try:
                  while next(array):  # run until segment will end
                      n += 1
              except StopIteration:  # have reached the end
                  return  # stop
              finally:  # yield segment (including at StopIteration)
                  if n >= minlen:  # ... if long enough
                      yield (start + i * delta, start + (i + n) * delta)
              i += n
          i += 1
docs: Yield segments of consecutive `True` values in a boolean array
  
      Parameters
      ----------
      array : `iterable`
          An iterable of boolean-castable values.
  
      start : `float`
          The value of the first sample on the indexed axis
          (e.g.the GPS start time of the array).
  
      delta : `float`
          The step size on the indexed axis (e.g. sample duration).
  
      minlen : `int`, optional
          The minimum number of consecutive `True` values for a segment.
  
      Yields
      ------
      segment : `tuple`
          ``(start + i * delta, start + (i + n) * delta)`` for a sequence
          of ``n`` consecutive True values starting at position ``i``.
  
      Notes
      -----
      This method is adapted from original code written by Kipp Cannon and
      distributed under GPLv3.
  
      The datatype of the values returned will be the larger of the types
      of ``start`` and ``delta``.
  
      Examples
      --------
      >>> print(list(_bool_segments([0, 1, 0, 0, 0, 1, 1, 1, 0, 1]))
      [(1, 2), (5, 8), (9, 10)]
      >>> print(list(_bool_segments([0, 1, 0, 0, 0, 1, 1, 1, 0, 1]
      ...                           start=100., delta=0.1))
      [(100.1, 100.2), (100.5, 100.8), (100.9, 101.0)]