class_docstr: Implementation that uses convex hull of protein to find pockets.
  
  Based on https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4112621/pdf/1472-6807-14-18.pdf
docstr: Find list of binding pockets on protein.
  
  Parameters
  ----------
  protein_file: str
      Protein to load in.
  
  Returns
  -------
  List[CoordinateBox]
      List of binding pockets on protein. Each pocket is a `CoordinateBox`
docstr_tok: ["Find","list","of","binding","pockets","on","protein",".","Parameters","--","--","--","--","--","protein_file",":","str","Protein","to","load","in",".","Returns","--","--","--","-","List","[","CoordinateBox","]","List","of","binding","pockets","on","protein",".","Each","pocket","is","a","`","CoordinateBox","`"]
code: def find_all_pockets(self, protein_file: str) -> List[CoordinateBox]:
      """Find list of binding pockets on protein.
  
      Parameters
      ----------
      protein_file: str
          Protein to load in.
  
      Returns
      -------
      List[CoordinateBox]
          List of binding pockets on protein. Each pocket is a `CoordinateBox`
      """
      coords, _ = load_molecule(protein_file)
      return get_face_boxes(coords, self.pad)
  
file_path: deepchem/deepchem/dock/binding_pocket.py
imports: import logging
  import numpy
  from typing import Any, List, Optional, Tuple
  from deepchem.models import Model
  from deepchem.utils.rdkit_utils import load_molecule
  from deepchem.utils.coordinate_box_utils import CoordinateBox, get_face_boxes, merge_overlapping_boxes
  from deepchem.utils.fragment_utils import get_contact_atom_indices
label_desc: Use image node_id 2 for calling the ConvexHullPocketFinder obj's underlying member method code with example usage: obj.find_all_pockets(protein_file) and returns: get_face_boxes