code: def merge_overlapping_boxes(
      boxes: List[CoordinateBox], threshold: float = 0.8
  ) -> List[CoordinateBox]:
      """Merge boxes which have an overlap greater than threshold.
  
      Parameters
      ----------
      boxes: list[CoordinateBox]
          A list of `CoordinateBox` objects.
      threshold: float, default 0.8
          The volume fraction of the boxes that must overlap for them to be
          merged together.
  
      Returns
      -------
      List[CoordinateBox]
          List[CoordinateBox] of merged boxes. This list will have length less
          than or equal to the length of `boxes`.
      """
      outputs: List[CoordinateBox] = []
      for box in boxes:
          for other in boxes:
              if box == other:
                  continue
              intersect_box = intersection(box, other)
              if (
                  intersect_box.volume() >= threshold * box.volume()
                  or intersect_box.volume()
                  >= threshold * other.volume()
              ):
                  box = union(box, other)
          unique_box = True
          for output in outputs:
              if output.contains(box):
                  unique_box = False
          if unique_box:
              outputs.append(box)
      return outputs
  
file_path: deepchem/deepchem/utils/coordinate_box_utils.py
imports: from typing import List, Sequence, Tuple
  import numpy
  from scipy.spatial import ConvexHull
label_desc: Use image node_id 4 for calling a global function with example usage: merge_overlapping_boxes(boxes, threshold) and returns: outputs