Chapter 2: Macromolecular Models & File Formats: Receptor & Small-Molecule Ligand Preparation
Chapter 2: Macromolecular Models & File Formats: Receptor & Small-Molecule Ligand Preparation
PDB, PDBQT, MOL2, SDF, and SMILES format anatomy; receptor preparation, resolving alternate locations, loop repair, crystallographic water policy; protonation states at physiological pH 7.4 via PROPKA; partial charge assignment; and ligand energy minimization with OpenBabel and MGLTools.
1. Chemical & Macromolecular File Formats
Molecular docking requires converting standard structural formats into specialized representation formats that define atom types, partial charges, and rotatable dihedral bonds.
| Format | Description | Key Data Fields | Primary Application |
|---|---|---|---|
| .pdb | Protein Data Bank standard | ATOM/HETATM, coordinates (x,y,z), B-factor, occupancy | Crystallographic coordinates repository |
| .mol2 | Tripos Sybyl chemical table | Atoms, formal bond orders, partial atomic charges | Small-molecule structural representation |
| .sdf | MDL Structure-Data File | Multi-molecule batch table, 2D/3D coords, property tags | Chemical screening libraries (ZINC, PubChem) |
| .pdbqt | AutoDock / Vina native format | PDB records + Q (partial charge) + T (AutoDock atom type) + ROOT/BRANCH rotamers | Direct input for AutoDock Vina & PyRx |
2. Receptor Preparation Protocol: Resolving Experimental Artifacts
Raw PDB crystal structures cannot be docked directly due to experimental artifacts, unassigned hydrogens, and crystallographic additives. Follow this systematic preparation checklist:
- Crystallographic Water Molecules: Remove bulk crystallization solvent ($H_2O$ / HOH). Crucial exception: Conserved structural waters bridging catalytic residues and the ligand (e.g., $W_1$ in HIV-1 protease or Wat418 in viral polymerases) should be retained and docked as a receptor-water adduct.
- Heteroatoms & Co-Crystallized Additives: Remove cryoprotectants (glycerol, PEG), buffer salts (sulfates, phosphates), and native co-crystallized inhibitors (save the native ligand coordinates for grid box centering and redocking validation).
- Alternate Conformations (AltLoc): PDB files frequently contain multiple occupancies (e.g., atom records with AltLoc 'A' and 'B'). Select the higher occupancy conformation or conformer 'A'.
- Protonation States at Physiological pH 7.4: Amino acid sidechains titrate based on local electrostatic microenvironments. Use
PROPKA 3.4to predict $pK_a$ shifts: histidine tautomers ($\text{HID}$ with $\delta$-protonation, $\text{HIE}$ with $\epsilon$-protonation, or $\text{HIP}$ diprotonated positively charged state) must be assigned accurately. - Partial Charges: X-ray diffraction does not resolve electrons on individual nuclei. Assign Kollman united-atom partial charges for the receptor.
# 1. Strip non-protein heteroatoms and crystallization waters
grep -v "^HETATM" target_raw.pdb | grep -v "HOH" > target_clean.pdb
# 2. Add polar hydrogens and compute protonation at pH 7.4
obabel -ipdb target_clean.pdb -opdb -O target_h.pdb -p 7.4
# 3. Convert to PDBQT with Kollman charges and AutoDock atom typing
prepare_receptor4.py -r target_h.pdb -o target_receptor.pdbqt -A checkhydrogens -U nphs_lps_waters3. Small-Molecule Ligand Preparation: Conformation & Torsion Trees
Ligands are typically stored as 1D SMILES strings or 2D SDF connection tables. Converting them into 3D docking-ready structures requires energy minimization and defining rotational degrees of freedom:
# Convert 2D SMILES into 3D coordinates with MMFF94 force field minimization
obabel -:"CC(=O)Oc1ccccc1C(=O)O" -osdf -O aspirin_3d.sdf --gen3d --minimize --ff MMFF94 --steps 500
# Convert to PDBQT, calculate Gasteiger partial charges, and assign rotatable bonds
prepare_ligand4.py -l aspirin_3d.sdf -o aspirin.pdbqt -A hydrogens_charges
Inside the generated .pdbqt ligand file, the tags ROOT, BRANCH, and ENDBRANCH specify the torsion tree. Rigid aromatic bonds and double bonds are locked, while $sp^3-sp^3$ single bonds are allowed full 360° rotational freedom during search space exploration.
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.