def METHOD_NAME(self, datapoint: RDKitMol, **kwargs) -> GraphData:
    """Calculate molecule graph features from RDKit mol object.
    Parameters
    ----------
    datapoint: RDKitMol
        RDKit mol object.
    Returns
    -------
    graph: GraphData
        A molecule graph object with features:
        - node_features: np.ndarray
                Node feature matrix with shape [num_nodes, num_node_features]
        - edge_index: np.ndarray, dtype int
                Graph connectivity in COO format with shape [2, num_edges]
        - node_pos_features: np.ndarray, optional (default None)
                Node position matrix with shape [num_nodes, num_dimensions].
    """
    if isinstance(datapoint, Chem.rdchem.Mol):
        if self.is_adding_hs:
            datapoint = Chem.AddHs(datapoint)
    else:
        raise ValueError(
            "Feature field should contain smiles for MXMNet featurizer!")
    pos: List = []
    pos_x: np.ndarray
    pos_y: np.ndarray
    pos_z: np.ndarray
    # load_sdf_files returns pos as strings but user can also specify
    # numpy arrays for atom coordinates
    if 'pos_x' in kwargs and 'pos_y' in kwargs and 'pos_z' in kwargs:
        if isinstance(kwargs['pos_x'], str):
            pos_x = eval(kwargs['pos_x'])
        elif isinstance(kwargs['pos_x'], np.ndarray):
            pos_x = kwargs['pos_x']
        if isinstance(kwargs['pos_y'], str):
            pos_y = eval(kwargs['pos_y'])
        elif isinstance(kwargs['pos_y'], np.ndarray):
            pos_y = kwargs['pos_y']
        if isinstance(kwargs['pos_z'], str):
            pos_z = eval(kwargs['pos_z'])
        elif isinstance(kwargs['pos_z'], np.ndarray):
            pos_z = kwargs['pos_z']
        for x, y, z in zip(pos_x, pos_y, pos_z):
            pos.append([x, y, z])
        node_pos_features: Optional[np.ndarray] = np.asarray(pos)
    else:
        node_pos_features = None
    # get atom features
    f_atoms: np.ndarray = atom_features(datapoint)
    # get edge index
    edge_index: np.ndarray = self._construct_bond_index(datapoint)
    return GraphData(node_features=f_atoms,
                     edge_index=edge_index,
                     node_pos_features=node_pos_features)