class_docstr: Computes SPLIF voxel grid for a macromolecular complex.
  
  SPLIF fingerprints are based on a technique introduced in the
  following paper [1]_.
  
  The SPLIF voxelizer localizes local SPLIF descriptors in
  space, by assigning features to the voxel in which they
  originated. This technique may be useful for downstream
  learning methods such as convolutional networks.
  
  Featurizes a macromolecular complex into a tensor of shape
  `(voxels_per_edge, voxels_per_edge, voxels_per_edge, size)`
  where `voxels_per_edge = int(box_width/voxel_width)`.
  
  References
  ----------
  .. [1] Da, C., and D. Kireev. "Structural protein–ligand interaction
  fingerprints (SPLIF) for structure-based virtual screening:
  method and benchmark study." Journal of chemical information
  and modeling 54.9 (2014): 2555-2561.
docstr: Parameters
  ----------
  cutoff: float (default 4.5)
      Distance cutoff in angstroms for molecules in complex.
  contact_bins: list[tuple]
      List of contact bins. If not specified is set to default
      `[(0, 2.0), (2.0, 3.0), (3.0, 4.5)]`.
  radius : int, optional (default 2)
      Fingerprint radius used for circular fingerprints.
  size: int, optional (default 8)
      Length of generated bit vector.
  box_width: float, optional (default 16.0)
      Size of a box in which voxel features are calculated. Box
      is centered on a ligand centroid.
  voxel_width: float, optional (default 1.0)
      Size of a 3D voxel in a grid.
docstr_tok: ["Parameters","--","--","--","--","--","cutoff",":","float","(","default","4.5",")","Distance","cutoff","in","angstroms","for","molecules","in","complex",".","contact_bins",":","list","[","tuple","]","List","of","contact","bins",".","If","not","specified","is","set","to","default","`","[","(","0",",","2.0",")",",","(","2.0",",","3.0",")",",","(","3.0",",","4.5",")","]","`",".","radius",":","int",",","optional","(","default","2",")","Fingerprint","radius","used","for","circular","fingerprints",".","size",":","int",",","optional","(","default","8",")","Length","of","generated","bit","vector",".","box_width",":","float",",","optional","(","default","16.0",")","Size","of","a","box","in","which","voxel","features","are","calculated",".","Box","is","centered","on","a","ligand","centroid",".","voxel_width",":","float",",","optional","(","default","1.0",")","Size","of","a","3D","voxel","in","a","grid","."]
code: def __init__(
      self,
      cutoff: float = 4.5,
      contact_bins: Optional[List] = None,
      radius: int = 2,
      size: int = 8,
      box_width: float = 16.0,
      voxel_width: float = 1.0,
  ):
      """
      Parameters
      ----------
      cutoff: float (default 4.5)
          Distance cutoff in angstroms for molecules in complex.
      contact_bins: list[tuple]
          List of contact bins. If not specified is set to default
          `[(0, 2.0), (2.0, 3.0), (3.0, 4.5)]`.
      radius : int, optional (default 2)
          Fingerprint radius used for circular fingerprints.
      size: int, optional (default 8)
          Length of generated bit vector.
      box_width: float, optional (default 16.0)
          Size of a box in which voxel features are calculated. Box
          is centered on a ligand centroid.
      voxel_width: float, optional (default 1.0)
          Size of a 3D voxel in a grid.
      """
      self.cutoff = cutoff
      if contact_bins is None:
          self.contact_bins = SPLIF_CONTACT_BINS
      else:
          self.contact_bins = contact_bins
      self.size = size
      self.radius = radius
      self.box_width = box_width
      self.voxel_width = voxel_width
      self.voxels_per_edge = int(self.box_width / self.voxel_width)
  
imports: import logging
  import itertools
  import numpy
  from deepchem.utils.hash_utils import hash_ecfp_pair
  from deepchem.utils.rdkit_utils import load_complex
  from deepchem.utils.rdkit_utils import compute_all_ecfp
  from deepchem.utils.rdkit_utils import MoleculeLoadException
  from deepchem.utils.rdkit_utils import compute_contact_centroid
  from deepchem.feat import ComplexFeaturizer
  from deepchem.utils.hash_utils import vectorize
  from deepchem.utils.voxel_utils import voxelize
  from deepchem.utils.voxel_utils import convert_atom_pair_to_voxel
  from deepchem.utils.geometry_utils import compute_pairwise_distances
  from deepchem.utils.geometry_utils import subtract_centroid
  from typing import Optional, Tuple, Dict, List
label_desc: Use image node_id 1 to create a new SplifVoxelizer object from inherited base classes: ComplexFeaturizer with example: obj = SplifVoxelizer(cutoff, contact_bins, radius, size, box_width, voxel_width)