class_docstr: This class implements the featurization to implement Duvenaud graph convolutions.
  
  Duvenaud graph convolutions [1]_ construct a vector of descriptors for each
  atom in a molecule. The featurizer computes that vector of local descriptors.
  
  Examples
  ---------
  >>> import deepchem as dc
  >>> smiles = ["C", "CCC"]
  >>> featurizer=dc.feat.ConvMolFeaturizer(per_atom_fragmentation=False)
  >>> f = featurizer.featurize(smiles)
  >>> # Using ConvMolFeaturizer to create featurized fragments derived from molecules of interest.
  ... # This is used only in the context of performing interpretation of models using atomic
  ... # contributions (atom-based model interpretation)
  ... smiles = ["C", "CCC"]
  >>> featurizer=dc.feat.ConvMolFeaturizer(per_atom_fragmentation=True)
  >>> f = featurizer.featurize(smiles)
  >>> len(f) # contains 2 lists with  featurized fragments from 2 mols
  2
  
  See Also
  --------
  Detailed examples of `GraphConvModel` interpretation are provided in Tutorial #28
  
  References
  ---------
  
  .. [1] Duvenaud, David K., et al. "Convolutional networks on graphs for
      learning molecular fingerprints." Advances in neural information
      processing systems. 2015.
  
  Note
  ----
  This class requires RDKit to be installed.
docstr: For a given input RDKit atom return the values of the properties
  requested when initializing the featurize.  See the __init__ of the
  class for a full description of the names of the properties
  
  Parameters
  ----------
  atom: RDKit.rdchem.Atom
      Atom to get the properties of
  returns a numpy lists of floats of the same size as self.atom_properties
docstr_tok: ["For","a","given","input","RDKit","atom","return","the","values","of","the","properties","requested","when","initializing","the","featurize",".","See","the","__init__","of","the","class","for","a","full","description","of","the","names","of","the","properties","Parameters","--","--","--","--","--","atom",":","RDKit.rdchem.Atom","Atom","to","get","the","properties","of","returns","a","numpy","lists","of","floats","of","the","same","size","as","self.atom_properties"]
code: def _get_atom_properties(self, atom):
      """
      For a given input RDKit atom return the values of the properties
      requested when initializing the featurize.  See the __init__ of the
      class for a full description of the names of the properties
  
      Parameters
      ----------
      atom: RDKit.rdchem.Atom
          Atom to get the properties of
      returns a numpy lists of floats of the same size as self.atom_properties
      """
      values = []
      for prop in self.atom_properties:
          mol_prop_name = str("atom %08d %s" % (atom.GetIdx(), prop))
          try:
              values.append(
                  float(atom.GetOwningMol().GetProp(mol_prop_name))
              )
          except KeyError:
              raise KeyError(
                  "No property %s found in %s in %s"
                  % (mol_prop_name, atom.GetOwningMol(), self)
              )
      return np.array(values)
  
imports: import numpy
  import deepchem
  from deepchem.feat.base_classes import MolecularFeaturizer
  from deepchem.feat.mol_graphs import ConvMol, WeaveMol
  from deepchem.data import DiskDataset
  import logging
  from typing import Optional, List, Tuple, Union, Iterable
  from deepchem.utils.typing import RDKitMol, RDKitAtom
  from deepchem.utils.molecule_feature_utils import one_hot_encode
label_desc: Use image node_id 3 for calling the ConvMolFeaturizer obj's underlying member method code with example usage: obj._get_atom_properties(atom) and returns: np