Molecule#

Molecule wraps an RDKit Mol object together with its extracted interaction profiles (molecular surface, ESP point cloud, and pharmacophore positions/types/vectors).

Helper functions#

shepherd_score.container._core.update_mol_coordinates(mol, coordinates)[source]#

Updates the coordinates of a 3D RDKit mol object with a new set of coordinates

Parameters:
  • mol (Chem.Mol) – RDKit mol object with 3D coordinates to be replaced

  • coordinates (Union[List, np.ndarray]) – List/array of new [x,y,z] coordinates

Returns:

mol_new – deep-copied RDKit mol object with updated 3D coordinates

Return type:

Chem.Mol

Class reference#

class shepherd_score.container._core.Molecule(mol, num_surf_points=None, density=None, probe_radius=None, surface_points=None, partial_charges=None, electrostatics=None, pharm_multi_vector=None, pharm_types=None, pharm_ancs=None, pharm_vecs=None)[source]#

Bases: object

Molecule contains ways to hold/generate molecule geometries

Parameters:
__init__(mol, num_surf_points=None, density=None, probe_radius=None, surface_points=None, partial_charges=None, electrostatics=None, pharm_multi_vector=None, pharm_types=None, pharm_ancs=None, pharm_vecs=None)[source]#

Molecule constructor to extract interaction profiles.

If partial_charges are not provided, they will be generated using MMFF94 which may result in subpar performance.

Parameters:
  • mol (rdkit.Chem.rdchem.Mol)

  • num_surf_points (Optional[int]) – Number of surface points to sample. If None, the surface point cloud is not generated. More efficient if only doing volumentric.

  • density (Optional[float]) – Density of points to sample on molecular surface. If None, the surface point cloud is not generated. More efficient if only doing volumentric. If both num_surf_points and density are not None, num_surf_points supercedes density.

  • surface_points (Optional[np.ndarray]) – Surface points if they were previously generated. Shape: (M,3).

  • probe_radius (Optional[float]) – The radius of a probe atom to act as a “solvent accessible surface”. Default is 1.2 if None is passed.

  • partial_charges (Optional[np.ndarray]) – Partial charges for each atom. Shape: (N,). If None is passed and ESP surface is generated, it will default to MMFF94 partial charges.

  • electrostatics (Optional[np.ndarray]) – Electrostatic potential if they were previously generated. Shape: (M,).

  • pharm_multi_vector (Optional[bool]) – If None, don’t generate pharmacophores, else generate pharmacophores with/without (True/False) multi-vectors.

  • pharm_types (Optional[np.ndarray]) – Types of pharmacophores. Shape: (P,).

  • pharm_ancs (Optional[np.ndarray]) – Anchor positions of pharmacophores. Shape: (P,3).

  • pharm_vecs (Optional[np.ndarray]) – Unit vectors relative to anchor positions of pharmacophores. Shape: (P,3).

get_partial_charges()[source]#

Get the partial charges on each atom using MMFF.

Return type:

ndarray

get_pc(use_density=False)[source]#

Gets the point cloud positions.

Return type:

Tuple[ndarray, ndarray, ndarray]

get_electrostatic_potential()[source]#

Get the electrostatic potential at each surface point.

Return type:

ndarray

center_to(xyz_means)[source]#

If you want to center the molecule with respect to a certain coordinate frame.

Parameters:

xyz_means (ndarray)

Return type:

None

get_pharmacophore(multi_vector=True, exclude=[], check_access=False, scale=1)[source]#

Get the pharmacophores of the molecule.

Parameters: