code: def snap_to_cube(q_start, q_stop, chunk_depth=16, q_index=1):
      
      lo = 0
      hi = 0
      # Start by indexing everything at zero for our own sanity
      q_start -= q_index
      q_stop -= q_index
  
      if q_start % chunk_depth == 0:
          lo = q_start
      else:
          lo = q_start - (q_start % chunk_depth)
  
      if q_stop % chunk_depth == 0:
          hi = q_stop
      else:
          hi = q_stop + (chunk_depth - q_stop % chunk_depth)
  
      return [lo + q_index, hi + q_index + 1]
docs: For any q in {x, y, z, t}
      Takes in a q-range and returns a 1D bound that starts at a cube
      boundary and ends at another cube boundary and includes the volume
      inside the bounds. For instance, snap_to_cube(2, 3) = (1, 17)
  
      Arguments:
          q_start (int): The lower bound of the q bounding box of volume
          q_stop (int): The upper bound of the q bounding box of volume
          chunk_depth (int : CHUNK_DEPTH) The size of the chunk in this
              volume (use ``get_info()``)
          q_index (int : 1): The starting index of the volume (in q)
  
      Returns:
          2-tuple: (lo, hi) bounding box for the volume