dgllife.utils.mol_to_graph(mol, graph_constructor, node_featurizer, edge_featurizer, canonical_atom_order, explicit_hydrogens=False, num_virtual_nodes=0)[source]

Convert an RDKit molecule object into a DGLGraph and featurize for it.

This function can be used to construct any arbitrary DGLGraph from an RDKit molecule instance.

  • mol (rdkit.Chem.rdchem.Mol) – RDKit molecule holder

  • graph_constructor (callable) – Takes an RDKit molecule as input and returns a DGLGraph

  • node_featurizer (callable, rdkit.Chem.rdchem.Mol -> dict) – Featurization for nodes like atoms in a molecule, which can be used to update ndata for a DGLGraph.

  • edge_featurizer (callable, rdkit.Chem.rdchem.Mol -> dict) – Featurization for edges like bonds in a molecule, which can be used to update edata for a DGLGraph.

  • canonical_atom_order (bool) – Whether to use a canonical order of atoms returned by RDKit. Setting it to true might change the order of atoms in the graph constructed.

  • explicit_hydrogens (bool) – Whether to explicitly represent hydrogens as nodes in the graph. If True, it will call rdkit.Chem.AddHs(mol). If False, it will do nothing. Default to False.

  • num_virtual_nodes (int) – The number of virtual nodes to add. The virtual nodes will be connected to all real nodes with virtual edges. If the returned graph has any node/edge feature, an additional column of binary values will be used for each feature to indicate the identity of virtual node/edges. The features of the virtual nodes/edges will be zero vectors except for the additional column. Default to 0.


Converted DGLGraph for the molecule if mol is valid and None otherwise.

Return type

DGLGraph or None