class_docstr: This class is a featuriser of PAGTN graph networks for molecules.
  
  The featurization is based on `PAGTN model <https://arxiv.org/abs/1905.12712>`_. It is
  slightly more computationally intensive than default Graph Convolution Featuriser, but it
  builds a Molecular Graph connecting all atom pairs accounting for interactions of an atom with
  every other atom in the Molecule. According to the paper, interactions between two pairs
  of atom are dependent on the relative distance between them and and hence, the function needs
  to calculate the shortest path between them.
  
  The default node representation is constructed by concatenating the following values,
  and the feature length is 94.
  
  - Atom type: One hot encoding of the atom type. It consists of the most possible elements in a chemical compound.
  - Formal charge: One hot encoding of formal charge of the atom.
  - Degree: One hot encoding of the atom degree
  - Explicit Valence: One hot encoding of explicit valence of an atom. The supported possibilities
      include ``0 - 6``.
  - Implicit Valence: One hot encoding of implicit valence of an atom. The supported possibilities
      include ``0 - 5``.
  - Aromaticity: Boolean representing if an atom is aromatic.
  
  The default edge representation is constructed by concatenating the following values,
  and the feature length is 42. It builds a complete graph where each node is connected to
  every other node. The edge representations are calculated based on the shortest path between two nodes
  (choose any one if multiple exist). Each bond encountered in the shortest path is used to
  calculate edge features.
  
  - Bond type: A one-hot vector of the bond type, "single", "double", "triple", or "aromatic".
  - Conjugated: A one-hot vector of whether this bond is conjugated or not.
  - Same ring: A one-hot vector of whether the atoms in the pair are in the same ring.
  - Ring Size and Aromaticity: One hot encoding of atoms in pair based on ring size and aromaticity.
  - Distance: One hot encoding of the distance between pair of atoms.
  
  Examples
  --------
  >>> from deepchem.feat import PagtnMolGraphFeaturizer
  >>> smiles = ["C1CCC1", "C1=CC=CN=C1"]
  >>> featurizer = PagtnMolGraphFeaturizer(max_length=5)
  >>> out = featurizer.featurize(smiles)
  >>> type(out[0])
  <class 'deepchem.feat.graph_data.GraphData'>
  >>> out[0].num_node_features
  94
  >>> out[0].num_edge_features
  42
  
  References
  ----------
  .. [1] Chen, Barzilay, Jaakkola "Path-Augmented Graph Transformer Network"
      10.26434/chemrxiv.8214422.
  
  Note
  ----
  This class requires RDKit to be installed.
docstr: Calculate Atom features from RDKit atom object.
  
  Parameters
  ----------
  mol: rdkit.Chem.rdchem.Mol
      RDKit mol object.
  
  Returns
  -------
  atom_feat: np.ndarray
      numpy vector of atom features.
code: def _pagtn_atom_featurizer(self, atom: RDKitAtom) -> np.ndarray:
      """Calculate Atom features from RDKit atom object.
  
      Parameters
      ----------
      mol: rdkit.Chem.rdchem.Mol
          RDKit mol object.
  
      Returns
      -------
      atom_feat: np.ndarray
          numpy vector of atom features.
  
      """
      atom_type = get_atom_type_one_hot(atom, self.SYMBOLS, False)
      formal_charge = get_atom_formal_charge_one_hot(
          atom, include_unknown_set=False
      )
      degree = get_atom_total_degree_one_hot(
          atom, list(range(11)), False
      )
      exp_valence = get_atom_explicit_valence_one_hot(
          atom, list(range(7)), False
      )
      imp_valence = get_atom_implicit_valence_one_hot(
          atom, list(range(6)), False
      )
      armoticity = get_atom_is_in_aromatic_one_hot(atom)
      atom_feat = np.concatenate(
          [
              atom_type,
              formal_charge,
              degree,
              exp_valence,
              imp_valence,
              armoticity,
          ]
      )
      return atom_feat
  
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 2 for calling the PagtnMolGraphFeaturizer obj's underlying member method code with example usage: obj._pagtn_atom_featurizer(atom) and returns: atom_feat