Chapter 8: Small Molecule Cheminformatics & Chemical Databases
Tested Stacks:
GATK 4.6.1
Samtools 1.21
Nextflow 24.10
Seurat v5.1
Python 3.12
Prerequisites: Basic Linux CLI & Sequencing Formats
📚 Chapter 8 of 13
0% Course Completed
Chapter 8: Small Molecule Cheminformatics & Chemical Databases
Structure-based drug design requires representing small molecule drug candidates in computational formats. Cheminformatics provides the algorithms and mathematical graph representations needed to search chemical space, evaluate drug-likeness, and calculate molecular fingerprints.
Chemical Notation: SMILES & InChIKey
- SMILES (Simplified Molecular Input Line Entry System): Human-readable ASCII string representing molecular graph connectivity (e.g. Aspirin:
CC(=O)Oc1ccccc1C(=O)O). - InChIKey: Fixed-length 27-character SHA-256 hashed unique chemical digital identifier (e.g.
BSYNRYMUTXBXSQ-UHFFFAOYSA-N).
1. Cheminformatics with RDKit in Python
from rdkit import Chem
from rdkit.Chem import Descriptors, Lipinski, AllChem
# Parse SMILES string into an RDKit Mol object
aspirin = Chem.MolFromSmiles("CC(=O)Oc1ccccc1C(=O)O")
# Calculate physicochemical properties
mw = Descriptors.MolWt(aspirin) # Molecular Weight: 180.16 g/mol
logp = Descriptors.MolLogP(aspirin) # Octanol-water partition coefficient: 1.31
hbd = Lipinski.NumHDonors(aspirin) # Hydrogen bond donors: 1
hba = Lipinski.NumHAcceptors(aspirin) # Hydrogen bond acceptors: 3
tpsa = Descriptors.TPSA(aspirin) # Topological Polar Surface Area: 63.6 A^2
# Lipinski's Rule of 5 Check (Oral Bioavailability)
is_drug_like = (mw <= 500) and (logp <= 5) and (hbd <= 5) and (hba <= 10)
print(f"Drug-like: {is_drug_like}")
# Generate Morgan Circular Fingerprint (ECFP4 equivalent)
fp = AllChem.GetMorganFingerprintAsBitVect(aspirin, radius=2, nBits=2048)2. Major Chemical Databases
- ChEMBL: Curated database of bioactive molecules with quantitative binding affinities (IC50, Ki, Kd) against biological targets.
- PubChem: Massive repository of >110 million chemical substances and biological assay results.
- ZINC20: Curated collection of >1 billion commercially available compounds ready for virtual screening.
⚠️
Common Pitfalls & Troubleshooting Checklist
- Java Heap Exhaustion (GATK / Picard): If processes terminate with
java.lang.OutOfMemoryError, set your environment variable explicitly:export _JAVA_OPTIONS="-Xmx16g -Djava.io.tmpdir=/tmp". - Index Timestamp Mismatch: If tools complain that a BAM index is missing or out of date, regenerate with
samtools index -@ 4 sample.bam. - Conda Channel Conflicts: Avoid ABI incompatibilities between bioconda and conda-forge by setting strict priority:
conda config --set channel_priority strict. - Chromosome Naming Contamination: Always verify whether reference FASTA headers use
chr1or1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.