omics.co.in logo omics.co.in

Chapter 5: Virtual Screening Techniques: Drug-Likeness Filters, PAINS & Hit Selection Criteria

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 5 of 10 0% Course Completed
Module 05 • Virtual Screening Track 22 • 10 Modular Chapters AutoDock Vina • PyRx • PyMOL

Chapter 5: Virtual Screening Techniques: Drug-Likeness Filters, PAINS & Hit Selection Criteria

Structure-Based Virtual Screening (SBVS) vs Ligand-Based Virtual Screening (LBVS); physicochemical property filters: Lipinski's Rule of 5, Veber's rule; PAINS (Pan-Assay Interference Compounds) elimination; binding affinity thresholds; and ligand efficiency metrics.

⏱️ Estimated Study: 45–60 mins 🧪 Workflows: OpenBabel, AutoDock Vina, CB-Dock2, PyMOL, Discovery Studio 📋 Level: Beginner to Advanced Computational Biophysics

1. Physicochemical Drug-Likeness Filters

High-throughput screening against millions of compounds without pre-filtering wastes computational cycles on intractable chemical space. Pre-docking filtering applies established medicinal chemistry rules:

  • Lipinski's Rule of 5 (Oral Bioavailability):
    • Molecular Weight ($\text{MW}$) $\le 500\text{ Da}$
    • Octanol-water partition coefficient ($\log P$) $\le 5$
    • Hydrogen Bond Donors ($\text{HBD}$) $\le 5$ ($\text{O-H}$ and $\text{N-H}$ groups)
    • Hydrogen Bond Acceptors ($\text{HBA}$) $\le 10$ ($\text{O}$ and $\text{N}$ atoms)
  • Veber's Rules (Membrane Permeability): Rotatable bonds ($N_{\text{rot}}$) $\le 10$, and Topological Polar Surface Area ($\text{TPSA}$) $\le 140\text{ \AA}^2$.
  • PAINS (Pan-Assay Interference Compounds): Highly reactive substructures (e.g., rhodanines, quinones, curcumin-like enones) that produce false positives in biochemical assays via covalent reactivity, fluorescence quenching, or colloidal aggregation.
python # Python: Drug-Likeness & PAINS Filtering with RDKit
from rdkit import Chem
from rdkit.Chem import Descriptors, Lipinski
from rdkit.Chem.FilterCatalog import FilterCatalog, FilterCatalogParams

def filter_drug_likeness(mol):
    mw = Descriptors.MolWt(mol)
    logp = Descriptors.MolLogP(mol)
    hbd = Lipinski.NumHDonors(mol)
    hba = Lipinski.NumHAcceptors(mol)
    rotb = Lipinski.NumRotatableBonds(mol)
    tpsa = Descriptors.TPSA(mol)
    
    # Check Lipinski & Veber
    if mw <= 500 and logp <= 5.0 and hbd <= 5 and hba <= 10 and rotb <= 10 and tpsa <= 140.0:
        return True
    return False

# Setup PAINS filter
params = FilterCatalogParams()
params.AddCatalog(FilterCatalogParams.FilterCatalogs.PAINS)
pains_catalog = FilterCatalog(params)

def is_pains_free(mol):
    return not pains_catalog.HasMatch(mol)

2. Hit Selection Metrics: Beyond Raw Binding Affinity

Relying solely on AutoDock Vina binding energy ($\Delta G$) introduces a bias toward large, high-molecular-weight molecules that accumulate non-specific dispersion forces. Rigorous hit selection requires:

Ligand Efficiency (LE)

LE = -ΔGbind / Nheavy_atoms [kcal / mol · heavy atom]

A drug-like hit should have $LE \ge 0.30\text{ kcal/mol per non-hydrogen atom}$. A $-9.0\text{ kcal/mol}$ hit with 20 heavy atoms ($LE = 0.45$) is significantly more promising for medicinal chemistry optimization than a $-10.5\text{ kcal/mol}$ hit with 45 heavy atoms ($LE = 0.23$).

  • RMSD Clustering: Multiple docking runs yielding poses clustered within $<2.0\text{ \AA}$ RMSD signify a robust, energetically stable free energy well.
  • Key Catalytic Interactions: A candidate hit must form verifiable hydrogen bonds or salt bridges with essential catalytic residues (e.g., Cys145/His41 in SARS-CoV-2 Mpro). Poses with favorable energy that bind outside the active site should be rejected or classified as putative allosteric hits.
⚠️

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 chr1 or 1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.
📝 Propose Edit on GitHub ↗