scientific-skills/rdkit/references/descriptors_reference.md
Complete reference for molecular descriptors available in RDKit's Descriptors module.
from rdkit import Chem
from rdkit.Chem import Descriptors
mol = Chem.MolFromSmiles('CCO')
# Calculate individual descriptor
mw = Descriptors.MolWt(mol)
# Calculate all descriptors at once
all_desc = Descriptors.CalcMolDescriptors(mol)
Average molecular weight of the molecule.
Descriptors.MolWt(mol)
Exact molecular weight using isotopic composition.
Descriptors.ExactMolWt(mol)
Average molecular weight ignoring hydrogens.
Descriptors.HeavyAtomMolWt(mol)
Wildman-Crippen LogP (octanol-water partition coefficient).
Descriptors.MolLogP(mol)
Wildman-Crippen molar refractivity.
Descriptors.MolMR(mol)
Topological polar surface area (TPSA) based on fragment contributions.
Descriptors.TPSA(mol)
Labute's Approximate Surface Area (ASA).
Descriptors.LabuteASA(mol)
Number of hydrogen bond donors (N-H and O-H).
Descriptors.NumHDonors(mol)
Number of hydrogen bond acceptors (N and O).
Descriptors.NumHAcceptors(mol)
Number of N and O atoms.
Descriptors.NOCount(mol)
Number of N-H and O-H bonds.
Descriptors.NHOHCount(mol)
Number of heavy atoms (non-hydrogen).
Descriptors.HeavyAtomCount(mol)
Number of heteroatoms (non-C and non-H).
Descriptors.NumHeteroatoms(mol)
Total number of valence electrons.
Descriptors.NumValenceElectrons(mol)
Number of radical electrons.
Descriptors.NumRadicalElectrons(mol)
Number of rings.
Descriptors.RingCount(mol)
Number of aromatic rings.
Descriptors.NumAromaticRings(mol)
Number of saturated rings.
Descriptors.NumSaturatedRings(mol)
Number of aliphatic (non-aromatic) rings.
Descriptors.NumAliphaticRings(mol)
Number of aromatic carbocycles (rings with only carbons).
Descriptors.NumAromaticCarbocycles(mol)
Number of aromatic heterocycles (rings with heteroatoms).
Descriptors.NumAromaticHeterocycles(mol)
Number of saturated carbocycles.
Descriptors.NumSaturatedCarbocycles(mol)
Number of saturated heterocycles.
Descriptors.NumSaturatedHeterocycles(mol)
Number of aliphatic carbocycles.
Descriptors.NumAliphaticCarbocycles(mol)
Number of aliphatic heterocycles.
Descriptors.NumAliphaticHeterocycles(mol)
Number of rotatable bonds (flexibility).
Descriptors.NumRotatableBonds(mol)
Number of aromatic atoms.
Descriptors.NumAromaticAtoms(mol)
Fraction of carbons that are sp3 hybridized.
Descriptors.FractionCsp3(mol)
Bertz complexity index.
Descriptors.BertzCT(mol)
Information content (complexity measure).
Descriptors.Ipc(mol)
Molecular shape descriptors based on graph invariants.
First kappa shape index.
Descriptors.Kappa1(mol)
Second kappa shape index.
Descriptors.Kappa2(mol)
Third kappa shape index.
Descriptors.Kappa3(mol)
Molecular connectivity indices.
Simple chi connectivity indices.
Descriptors.Chi0(mol)
Descriptors.Chi1(mol)
Descriptors.Chi2(mol)
Descriptors.Chi3(mol)
Descriptors.Chi4(mol)
Valence-modified chi connectivity indices.
Descriptors.Chi0n(mol)
Descriptors.Chi1n(mol)
Descriptors.Chi2n(mol)
Descriptors.Chi3n(mol)
Descriptors.Chi4n(mol)
Valence chi connectivity indices.
Descriptors.Chi0v(mol)
Descriptors.Chi1v(mol)
Descriptors.Chi2v(mol)
Descriptors.Chi3v(mol)
Descriptors.Chi4v(mol)
Hall-Kier alpha value (molecular flexibility).
Descriptors.HallKierAlpha(mol)
Balaban's J index (branching descriptor).
Descriptors.BalabanJ(mol)
Electrotopological state indices.
Maximum E-state value.
Descriptors.MaxEStateIndex(mol)
Minimum E-state value.
Descriptors.MinEStateIndex(mol)
Maximum absolute E-state value.
Descriptors.MaxAbsEStateIndex(mol)
Minimum absolute E-state value.
Descriptors.MinAbsEStateIndex(mol)
Maximum partial charge.
Descriptors.MaxPartialCharge(mol)
Minimum partial charge.
Descriptors.MinPartialCharge(mol)
Maximum absolute partial charge.
Descriptors.MaxAbsPartialCharge(mol)
Minimum absolute partial charge.
Descriptors.MinAbsPartialCharge(mol)
Measures the density of molecular fingerprints.
Morgan fingerprint density at radius 1.
Descriptors.FpDensityMorgan1(mol)
Morgan fingerprint density at radius 2.
Descriptors.FpDensityMorgan2(mol)
Morgan fingerprint density at radius 3.
Descriptors.FpDensityMorgan3(mol)
Partial Equalization of Orbital Electronegativities (PEOE) VSA descriptors.
MOE-type descriptors using partial charges and surface area contributions.
Descriptors.PEOE_VSA1(mol)
# ... through PEOE_VSA14
Molecular refractivity VSA descriptors.
MOE-type descriptors using MR contributions and surface area.
Descriptors.SMR_VSA1(mol)
# ... through SMR_VSA10
LogP VSA descriptors.
MOE-type descriptors using LogP contributions and surface area.
Descriptors.SLogP_VSA1(mol)
# ... through SLogP_VSA12
MOE-type descriptors using E-state indices and surface area.
Descriptors.EState_VSA1(mol)
# ... through EState_VSA11
van der Waals surface area descriptors.
EState VSA descriptors.
Descriptors.VSA_EState1(mol)
# ... through VSA_EState10
Burden-CAS-University of Texas eigenvalue descriptors.
Highest eigenvalue of Burden matrix weighted by molecular weight.
Descriptors.BCUT2D_MWHI(mol)
Lowest eigenvalue of Burden matrix weighted by molecular weight.
Descriptors.BCUT2D_MWLOW(mol)
Highest eigenvalue weighted by partial charges.
Descriptors.BCUT2D_CHGHI(mol)
Lowest eigenvalue weighted by partial charges.
Descriptors.BCUT2D_CHGLO(mol)
Highest eigenvalue weighted by LogP.
Descriptors.BCUT2D_LOGPHI(mol)
Lowest eigenvalue weighted by LogP.
Descriptors.BCUT2D_LOGPLOW(mol)
Highest eigenvalue weighted by molar refractivity.
Descriptors.BCUT2D_MRHI(mol)
Lowest eigenvalue weighted by molar refractivity.
Descriptors.BCUT2D_MRLOW(mol)
2D autocorrelation descriptors (if enabled). Various autocorrelation indices measuring spatial distribution of properties.
Molecular Quantum Numbers - 42 simple descriptors.
Integer descriptors counting various molecular features.
# Access via CalcMolDescriptors
desc = Descriptors.CalcMolDescriptors(mol)
mqns = {k: v for k, v in desc.items() if k.startswith('mqn')}
Quantitative Estimate of Drug-likeness.
Descriptors.qed(mol)
Check drug-likeness using Lipinski's criteria:
def lipinski_rule_of_five(mol):
mw = Descriptors.MolWt(mol) <= 500
logp = Descriptors.MolLogP(mol) <= 5
hbd = Descriptors.NumHDonors(mol) <= 5
hba = Descriptors.NumHAcceptors(mol) <= 10
return mw and logp and hbd and hba
Calculate all descriptors at once:
from rdkit import Chem
from rdkit.Chem import Descriptors
mol = Chem.MolFromSmiles('CCO')
# Get all descriptors as dictionary
all_descriptors = Descriptors.CalcMolDescriptors(mol)
# Access specific descriptor
mw = all_descriptors['MolWt']
logp = all_descriptors['MolLogP']
# Get list of available descriptor names
from rdkit.Chem import Descriptors
descriptor_names = [desc[0] for desc in Descriptors._descList]
def screen_druglikeness(mol):
return {
'MW': Descriptors.MolWt(mol),
'LogP': Descriptors.MolLogP(mol),
'HBD': Descriptors.NumHDonors(mol),
'HBA': Descriptors.NumHAcceptors(mol),
'TPSA': Descriptors.TPSA(mol),
'RotBonds': Descriptors.NumRotatableBonds(mol),
'AromaticRings': Descriptors.NumAromaticRings(mol),
'QED': Descriptors.qed(mol)
}
def is_leadlike(mol):
mw = 250 <= Descriptors.MolWt(mol) <= 350
logp = Descriptors.MolLogP(mol) <= 3.5
rot_bonds = Descriptors.NumRotatableBonds(mol) <= 7
return mw and logp and rot_bonds
def molecular_complexity(mol):
return {
'BertzCT': Descriptors.BertzCT(mol),
'NumRings': Descriptors.RingCount(mol),
'NumRotBonds': Descriptors.NumRotatableBonds(mol),
'FractionCsp3': Descriptors.FractionCsp3(mol),
'NumAromaticRings': Descriptors.NumAromaticRings(mol)
}