class_docstr: This class is a featurizer of general graph convolution networks for molecules.
  
  The default node(atom) and edge(bond) representations are based on
  `WeaveNet paper <https://arxiv.org/abs/1603.00856>`_. If you want to use your own representations,
  you could use this class as a guide to define your original Featurizer. In many cases, it's enough
  to modify return values of `construct_atom_feature` or `construct_bond_feature`.
  
  The default node representation are constructed by concatenating the following values,
  and the feature length is 30.
  
  - Atom type: A one-hot vector of this atom, "C", "N", "O", "F", "P", "S", "Cl", "Br", "I", "other atoms".
  - Formal charge: Integer electronic charge.
  - Hybridization: A one-hot vector of "sp", "sp2", "sp3".
  - Hydrogen bonding: A one-hot vector of whether this atom is a hydrogen bond donor or acceptor.
  - Aromatic: A one-hot vector of whether the atom belongs to an aromatic ring.
  - Degree: A one-hot vector of the degree (0-5) of this atom.
  - Number of Hydrogens: A one-hot vector of the number of hydrogens (0-4) that this atom connected.
  - Chirality: A one-hot vector of the chirality, "R" or "S". (Optional)
  - Partial charge: Calculated partial charge. (Optional)
  
  The default edge representation are constructed by concatenating the following values,
  and the feature length is 11.
  
  - Bond type: A one-hot vector of the bond type, "single", "double", "triple", or "aromatic".
  - Same ring: A one-hot vector of whether the atoms in the pair are in the same ring.
  - Conjugated: A one-hot vector of whether this bond is conjugated or not.
  - Stereo: A one-hot vector of the stereo configuration of a bond.
  
  If you want to know more details about features, please check the paper [1]_ and
  utilities in deepchem.utils.molecule_feature_utils.py.
  
  Examples
  --------
  >>> smiles = ["C1CCC1", "C1=CC=CN=C1"]
  >>> featurizer = MolGraphConvFeaturizer(use_edges=True)
  >>> out = featurizer.featurize(smiles)
  >>> type(out[0])
  <class 'deepchem.feat.graph_data.GraphData'>
  >>> out[0].num_node_features
  30
  >>> out[0].num_edge_features
  11
  
  References
  ----------
  .. [1] Kearnes, Steven, et al. "Molecular graph convolutions: moving beyond fingerprints."
      Journal of computer-aided molecular design 30.8 (2016):595-608.
  
  Note
  ----
  This class requires RDKit to be installed.
docstr: Parameters
  ----------
  use_edges: bool, default False
      Whether to use edge features or not.
  use_chirality: bool, default False
      Whether to use chirality information or not.
      If True, featurization becomes slow.
  use_partial_charge: bool, default False
      Whether to use partial charge data or not.
      If True, this featurizer computes gasteiger charges.
      Therefore, there is a possibility to fail to featurize for some molecules
      and featurization becomes slow.
code: def __init__(
      self,
      use_edges: bool = False,
      use_chirality: bool = False,
      use_partial_charge: bool = False,
  ):
      """
      Parameters
      ----------
      use_edges: bool, default False
          Whether to use edge features or not.
      use_chirality: bool, default False
          Whether to use chirality information or not.
          If True, featurization becomes slow.
      use_partial_charge: bool, default False
          Whether to use partial charge data or not.
          If True, this featurizer computes gasteiger charges.
          Therefore, there is a possibility to fail to featurize for some molecules
          and featurization becomes slow.
      """
      self.use_edges = use_edges
      self.use_partial_charge = use_partial_charge
      self.use_chirality = use_chirality
  
imports: from typing import List, Tuple
  import numpy
  from deepchem.utils.typing import RDKitAtom, RDKitBond, RDKitMol
  from deepchem.feat.graph_data import GraphData
  from deepchem.feat.base_classes import MolecularFeaturizer
  from deepchem.utils.molecule_feature_utils import one_hot_encode
  from deepchem.utils.molecule_feature_utils import get_atom_type_one_hot
  from deepchem.utils.molecule_feature_utils import construct_hydrogen_bonding_info
  from deepchem.utils.molecule_feature_utils import get_atom_hydrogen_bonding_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_hybridization_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_total_num_Hs_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_is_in_aromatic_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_chirality_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_formal_charge
  from deepchem.utils.molecule_feature_utils import get_atom_partial_charge
  from deepchem.utils.molecule_feature_utils import get_atom_total_degree_one_hot
  from deepchem.utils.molecule_feature_utils import get_bond_type_one_hot
  from deepchem.utils.molecule_feature_utils import get_bond_is_in_same_ring_one_hot
  from deepchem.utils.molecule_feature_utils import get_bond_is_conjugated_one_hot
  from deepchem.utils.molecule_feature_utils import get_bond_stereo_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_formal_charge_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_implicit_valence_one_hot
  from deepchem.utils.molecule_feature_utils import get_atom_explicit_valence_one_hot
  from deepchem.utils.rdkit_utils import compute_all_pairs_shortest_path
  from deepchem.utils.rdkit_utils import compute_pairwise_ring_info
label_desc: Use image node_id 1 to create a new MolGraphConvFeaturizer object from inherited base classes: MolecularFeaturizer with example: obj = MolGraphConvFeaturizer(use_edges, use_chirality, use_partial_charge)