code: def test_compute_binding_pocket_cation_pi(self):
      # TODO find better example, currently dicts are empty
      prot_dict, lig_dict = compute_binding_pocket_cation_pi(
          self.prot, self.lig
      )
  
      exp_prot_dict, exp_lig_dict = compute_cation_pi(
          self.prot, self.lig
      )
      add_lig, add_prot = compute_cation_pi(self.lig, self.prot)
      for exp_dict, to_add in (
          (exp_prot_dict, add_prot),
          (exp_lig_dict, add_lig),
      ):
          for atom_idx, count in to_add.items():
              if atom_idx not in exp_dict:
                  exp_dict[atom_idx] = count
              else:
                  exp_dict[atom_idx] += count
  
      self.assertEqual(prot_dict, exp_prot_dict)
      self.assertEqual(lig_dict, exp_lig_dict)
  
imports: import os
  import unittest
  import numpy
  from deepchem.utils.rdkit_utils import load_molecule
  from deepchem.utils.rdkit_utils import compute_ring_center
  from deepchem.utils.rdkit_utils import compute_ring_normal
  from deepchem.utils.noncovalent_utils import is_pi_parallel
  from deepchem.utils.noncovalent_utils import is_pi_t
  from deepchem.utils.noncovalent_utils import compute_pi_stack
  from deepchem.utils.noncovalent_utils import is_cation_pi
  from deepchem.utils.noncovalent_utils import compute_cation_pi
  from deepchem.utils.noncovalent_utils import compute_binding_pocket_cation_pi
label_desc: Use image node_id 8 for calling the TestPiInteractions obj's underlying member method code with example usage: obj.test_compute_binding_pocket_cation_pi() without return types