class_docstr: This class is a featurizer for Multiplex Molecular Graph Neural Network (MXMNet) implementation.
  
  The atomic numbers(indices) of atoms will be used later to generate randomly initialized trainable embeddings to be the input node embeddings.
  
  This featurizer is based on
  `Molecular Mechanics-Driven Graph Neural Network with Multiplex Graph for Molecular Structures <https://arxiv.org/pdf/2011.07457.pdf>`_.
  
  Examples
  --------
  >>> smiles = ["C1=CC=CN=C1", "C1CCC1"]
  >>> featurizer = MXMNetFeaturizer()
  >>> out = featurizer.featurize(smiles)
  >>> type(out[0])
  <class 'deepchem.feat.graph_data.GraphData'>
  >>> out[0].num_nodes
  6
  >>> out[0].num_node_features
  1
  >>> out[0].node_features.shape
  (6, 1)
  >>> out[0].num_edges
  12
  
  Note
  ----
  We are not explitly handling hydrogen atoms for now. We only support 'H', 'C', 'N', 'O' and 'F' atoms to be present in the smiles at this point for MXMNet Model.
class_docstr_tok: ["This","class","is","a","featurizer","for","Multiplex","Molecular","Graph","Neural","Network","(","MXMNet",")","implementation",".","The","atomic","numbers","(","indices",")","of","atoms","will","be","used","later","to","generate","randomly","initialized","trainable","embeddings","to","be","the","input","node","embeddings",".","This","featurizer","is","based","on","`","Molecular","Mechanics-Driven","Graph","Neural","Network","with","Multiplex","Graph","for","Molecular","Structures","<","https",":","\/\/arxiv.org\/pdf\/2011.07457.pdf",">","`","_",".","Examples","--","--","--","--",">",">",">","smiles","=","[","``","C1=CC=CN=C1","''",",","``","C1CCC1","''","]",">",">",">","featurizer","=","MXMNetFeaturizer","(",")",">",">",">","out","=","featurizer.featurize","(","smiles",")",">",">",">","type","(","out","[","0","]",")","<","class","'deepchem.feat.graph_data.GraphData","'",">",">",">",">","out","[","0","]",".num_nodes","6",">",">",">","out","[","0","]",".num_node_features","1",">",">",">","out","[","0","]",".node_features.shape","(","6",",","1",")",">",">",">","out","[","0","]",".num_edges","12","Note","--","--","We","are","not","explitly","handling","hydrogen","atoms","for","now",".","We","only","support","'","H","'",",","'","C","'",",","'N","'",",","'","O","'","and","'","F","'","atoms","to","be","present","in","the","smiles","at","this","point","for","MXMNet","Model","."]
docstr: Construct edge (bond) index
  
  Parameters
  ----------
  datapoint: RDKitMol
      RDKit mol object.
  
  Returns
  -------
  edge_index: np.ndarray
      Edge (Bond) index
docstr_tok: ["Construct","edge","(","bond",")","index","Parameters","--","--","--","--","--","datapoint",":","RDKitMol","RDKit","mol","object",".","Returns","--","--","--","-","edge_index",":","np.ndarray","Edge","(","Bond",")","index"]
code: def _construct_bond_index(self, datapoint: RDKitMol) -> np.ndarray:
      """
      Construct edge (bond) index
  
      Parameters
      ----------
      datapoint: RDKitMol
          RDKit mol object.
  
      Returns
      -------
      edge_index: np.ndarray
          Edge (Bond) index
  
      """
  
      # row, col = edge_index
      src: List[int] = []
      dest: List[int] = []
      for bond in datapoint.GetBonds():
          start, end = bond.GetBeginAtomIdx(), bond.GetEndAtomIdx()
          src += [start, end]
          dest += [end, start]
  
      return np.asarray([src, dest], dtype=int)
  
file_path: deepchem/deepchem/feat/molecule_featurizers/mxmnet_featurizer.py
imports: from rdkit import Chem
  import numpy
  import logging
  from typing import List, Optional
  from deepchem.utils.typing import RDKitMol
  from deepchem.feat.base_classes import MolecularFeaturizer
  from deepchem.feat.graph_data import GraphData
label_desc: Use image node_id 2 for calling the MXMNetFeaturizer obj's underlying member method code with example usage: obj._construct_bond_index(datapoint) and returns: np