code: def voxelize_pi_stack(
      prot_xyz,
      prot_rdk,
      lig_xyz,
      lig_rdk,
      distances,
      pi_stack_dist_cutoff,
      pi_stack_angle_cutoff,
      box_width,
      voxel_width,
  ):
      (
          protein_pi_t,
          protein_pi_parallel,
          ligand_pi_t,
          ligand_pi_parallel,
      ) = compute_pi_stack(
          prot_rdk,
          lig_rdk,
          distances,
          dist_cutoff=pi_stack_dist_cutoff,
          angle_cutoff=pi_stack_angle_cutoff,
      )
      pi_parallel_tensor = voxelize(
          convert_atom_to_voxel,
          prot_xyz,
          box_width=box_width,
          voxel_width=voxel_width,
          feature_dict=protein_pi_parallel,
          nb_channel=1,
      )
  
      pi_parallel_tensor += voxelize(
          convert_atom_to_voxel,
          lig_xyz,
          box_width=box_width,
          voxel_width=voxel_width,
          feature_dict=ligand_pi_parallel,
          nb_channel=1,
      )
  
      pi_t_tensor = voxelize(
          convert_atom_to_voxel,
          prot_xyz,
          box_width=box_width,
          voxel_width=voxel_width,
          feature_dict=protein_pi_t,
          nb_channel=1,
      )
  
      pi_t_tensor += voxelize(
          convert_atom_to_voxel,
          lig_xyz,
          box_width=box_width,
          voxel_width=voxel_width,
          feature_dict=ligand_pi_t,
          nb_channel=1,
      )
  
      return [pi_parallel_tensor, pi_t_tensor]
  
file_path: deepchem/deepchem/utils/voxel_utils.py
imports: import logging
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import numpy
  from deepchem.utils.noncovalent_utils import compute_pi_stack
label_desc: Use image node_id 4 for calling a global function with example usage: voxelize_pi_stack(prot_xyz, prot_rdk, lig_xyz, lig_rdk, distances, pi_stack_dist_cutoff, pi_stack_angle_cutoff, box_width, voxel_width) and returns: list