code: def _assemble_node(self, i):
      neighbors = [
          self.nodes_dict[j]
          for j in self.graph.successors(i).numpy()
          if self.nodes_dict[j]["mol"].GetNumAtoms() > 1
      ]
      neighbors = sorted(
          neighbors, key=lambda x: x["mol"].GetNumAtoms(), reverse=True
      )
      singletons = [
          self.nodes_dict[j]
          for j in self.graph.successors(i).numpy()
          if self.nodes_dict[j]["mol"].GetNumAtoms() == 1
      ]
      neighbors = singletons + neighbors
  
      cands = enum_assemble_nx(self.nodes_dict[i], neighbors)
  
      if len(cands) > 0:
          (
              self.nodes_dict[i]["cands"],
              self.nodes_dict[i]["cand_mols"],
              _,
          ) = list(zip(*cands))
          self.nodes_dict[i]["cands"] = list(
              self.nodes_dict[i]["cands"]
          )
          self.nodes_dict[i]["cand_mols"] = list(
              self.nodes_dict[i]["cand_mols"]
          )
      else:
          self.nodes_dict[i]["cands"] = []
          self.nodes_dict[i]["cand_mols"] = []
  
file_path: dgl/examples/pytorch/jtnn/jtnn/mol_tree_nx.py
imports: import dgl
  import numpy
  import rdkit.Chem
  from .chemutils import decode_stereo, enum_assemble_nx, get_clique_mol, get_mol, get_smiles, set_atommap, tree_decomp
label_desc: Use image node_id 4 for calling the DGLMolTree obj's underlying member method code with example usage: obj._assemble_node(i) without return types