Introduction to Computational Drug Discovery¶

8/24/2026¶

print view

In [1]:
%%html
<script src="https://bits.csb.pitt.edu/preamble.js"></script>

COBB2035: Modern Methods for Structure Based Drug Discovery¶

The course explores how biomolecular structure and dynamics inform the rational design of therapeutics and how machine learning can be harnessed to improve drug discovery. Topics include molecular interactions, statistical mechanics and thermodynamics, generative modeling, molecular simulations, coarse-grained and enhanced sampling techniques, free energy calculations, protein structure prediction, protein design, molecular docking, de novo design, and virtual screening.

Life is basically atoms interacting with one another, so we're going to study that.¶

No description has been provided for this image

Instructor¶

No description has been provided for this image No description has been provided for this image No description has been provided for this image David Koes
dkoes@pitt.edu
Office: Fifth and Halket 10188
Office Hours: After class Monday and by appointment



TA¶

No description has been provided for this image Marios Gavrielatos
mag1037@pitt.edu
Office Hours: TBD
In [3]:
%%html
<div id="dogpref" style="width: 500px"></div>
<script>
    var divid = '#dogpref';
	jQuery(divid).asker({
	    id: divid,
	    question: "How to you feel about dogs?",
		answers: ["Love them","Like them",'Neutral',"Want to avoid"],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

Logistics¶

  • Lectures 12:00-1:20pm on Monday and Wednesday in 10105 Fifth & Halket.

  • Building Access Should

  • Recitations After class on Wednesday. Average recitation length should be ~1 hour but will stick around until 3:30pm.

  • Course material will be posted to class website: https://compstruct.org/

  • Slack will be used for group discussions, announcements, and contacting staff. https://compstruct.slack.com/

  • Panopto All classes are automatically recorded and are available on Panopto as linked from the class website. Recordings are provided as a study aid, not a replacement for attending class.

  • Zoom is available as a fallback when in-person attendance is not possible (must request link).

No description has been provided for this image
In [3]:
%%html
<div id="labpref" style="width: 500px"></div>
<script>
    var divid = '#labpref';
	jQuery(divid).asker({
	    id: divid,
	    question: "What is the most convenient time for you?",
		answers: ["10am","11am",'Noon',"1pm", "2pm"],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

Assignments¶

  • Seven assignments and a project
  • A mix of programming (Python) and free response.
  • Students work individually on assignments
    • Do discuss general concepts, strategies for debugging, and the particulars of a specific software package.
    • Do not show your code to fellow classmates.
    • Do not have ChatGPT do your assignment for you. It is your responsibility to manage your learning - use AI as a research and debugging tool that helps you learn, not as a crutch.

Lateness¶

  • One automatic late day per assignment
  • Late assignments have maximum score of 95%
  • Additional late day requests require substantial justification and may be significantly penalized
No description has been provided for this image

Books¶

No required books, but several are available for reference (bookshelf outside my office).

  • LIFE: Kuriyan, Konforti, Wemmer. The Molecules of Life
  • Z: Zuckerman. Statistical Physics of Biomolecules (Library)
  • BJD: Bahar, Jernigan, Dill. Protein Actions: Principles & Modeling
  • DILL: Dill, Bromberg. Molecular Driving Forces: Statistical Thermodynamics in Biology, Chemistry, Physics, and Nanoscience
  • KB: Kessel, Ben-tal. Introduction to Proteins: Structure, Function, and Motion

 

  • ML: Deprez, Robinson. Machine Learning for Biomedical Applications with Scikit-Learn and PyTorch
  • DL: Ramsundar, Eastman, Walters, Pande. Deep Learning for the Life Sciences: Applying Deep Learning to Genomics, Microscopy, Drug Discovery, and More (Library)

Grades¶

  • 45% Assignments
  • 10% Recitation (checks)
  • 20% Exams
  • 10% Journal Club
  • 15% Project

Final Grade Targets¶

  • A+ 97–100%
  • A 93–96%
  • A− 90–92%
  • B+ 87–89%
  • B 83–86%
  • B− 80–82%

We reserve the right to modify grade distributions and cutoffs to most accurately reflect student performance.

Any questions on course mechanics?¶

https://compstruct.org/

No description has been provided for this image
No description has been provided for this image

Sun D, Gao W, Hu H, Zhou S. Why 90% of clinical drug development fails and how to improve it?. Acta Pharmaceutica Sinica B. 2022 Jul 1;12(7):3049-62.

No description has been provided for this image

Harrison RK. Phase II and phase III failures: 2013–2015. Nature reviews Drug discovery. 2016 Dec;15(12):817-8.

What is a drug?¶

Section 201(g) of the FD&C Act (21 USC 321(g)) provides that the term "drug" means:

(A) articles recognized in the official United States Pharmacopoeia, official Homoeopathic Pharmacopoeia of the United States, or official National Formulary, or any supplement to any of them; and (B) articles intended for use in the diagnosis, cure, mitigation, treatment, or prevention of disease in man or other animals; and (C) articles (other than food) intended to affect the structure or any function of the body of man or other animals; and (D) articles intended for use as a component of any articles specified in clause (A), (B), or (C).

No description has been provided for this image

Annual numbers of new molecular entities (NMEs) and biologics license applications (BLAs) approved by the FDA’s Center for Drug Evaluation and Research (CDER). Does not include products approved by the Center for Biologics Evaluation and Research (CBER) (vaccines, gene and cell therapies).

Mullard A. 2025 FDA approvals. Nat. Rev. Drug Discov. 2026 Jan 2.

No description has been provided for this image

Mullard A. 2025 FDA approvals. Nat. Rev. Drug Discov. 2026 Jan 2.

Drug Discovery¶

No description has been provided for this image

Kinds of Virtual Screening¶

  • ADMET
  • Ligand Based
    • similarity
    • QSAR
    • pharmacophore
  • Structure Based
    • molecular docking
    • simulation

ADMET¶

No description has been provided for this image By Scivit - CC BY 4.0, Link

Basically everything other than efficacy that determines if a compound will be a usable drug.

  • Absorption
  • Distribution
  • Metabolism
  • Excretion
  • Toxicity

Pharmacokinetics - what the body does to the drug.

Pharmacodynamics - what the drug does to the body.

Ligand Based Drug Discovery¶

Not the focus of this course (obviously). Requires you already have data (hits) for your target.

  • QSAR Quantitative Structure-Activity Relationship. A model of compound activity.
  • QSPR Quantitative Structure-Property Relationship. A model of some other property of the compound (e.g. solubility, toxicity).

An assumption of QSAR modeling is that similar compounds have similar activities/properties.

Activity cliffs are pairs of similar compounds that have large differences in activity.

Activity Cliffs¶

No description has been provided for this image

Stumpfe D, Hu H, Bajorath J. Evolving concept of activity cliffs. ACS omega. 2019 Aug 26;4(11):14360-8.

Cheminformatics¶

Cheminformatics (also known as chemoinformatics, chemioinformatics and chemical informatics) is the use of computer and informational techniques applied to a range of problems in the field of chemistry. --Wikipedia

Open Source Cheminformatic Toolkits¶

  • rdkit http://www.rdkit.org

    • BSD License
    • Relatively new, very nicely architected C++ backend
    • Actively developed
    • Native Python interface
  • OpenBabel http://openbabel.org

    • GNU License
    • Older (forked from OpenEye in 2001), a bit crufty and complicated
    • Lots of functionality (e.g., support for more than 100 file formats)
    • Python interface is through SWIG (auto-generated) bindings to C/C++
    • Includes standalone programs: babel, obabel, etc.
  • Pybel

    • A native, user-friendly python interface to OpenBabel
    • Limited functionality (but can always fallback to OpenBabel)
    • Simplest to use

How do we get a molecule into a model?¶

"2D" Representations (3D is coming)

DNA¶

ATGAGCTCCGCAGCCGGGTTCTGCGCC...

Protein¶

MSSAAGFCASRPGLLFLGLL...

Small Molecules?¶

No description has been provided for this image

Simplified Molecular Input Line Entry System (SMILES)¶

CN(C)[C@@H]3C(\O)=C(\C(N)=O)C(=O)[C@@]4(O)C(/O)=C2/C(=O)c1c(cccc1O)[C@H](C)[C@H]2[C@H](O)[C@@H]34

Atoms¶

Specified by their atomic symbols inside brackets: [Au], [Fe], [Zn], etc

No brackets needed for organic subset: B, C, N, O, P, S, F, Cl, Br, and I

Aromatic atoms are lower case: c1ccccc1

Bonds¶

  • Single -
  • Double =
  • Triple #
  • Aromatic :

Single and aromatic can be omitted.

In [5]:
%%html
<div id="mmchem1" style="width: 500px"></div>
<script>
    var divid = '#mmchem1';
	jQuery(divid).asker({
	    id: divid,
	    question: "What is a SMILES string for ethane?",
		answers: ['c-c','CC','C=C','C#C','[Ca]-[Ca]'],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
    $(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

SMILES, cont.¶

No description has been provided for this image

Branches¶

Parentheses denote branches and can be nested.

Example: SC(N)CO

Cycles¶

Break a bond in the cycle and use a digit to label the break.

No description has been provided for this image

As long as rings are separate, digits can be reused.

SMILES, cont.¶

Disconnections¶

A period . separates nonbonded molecules.

[Na+].[Cl-]

Isomeric Smiles¶

Slashes (/ \) denote configuration around double bonds.

At (@) denotes configuration around chiral centers.

In [6]:
%%html
<div id="mmchem3" style="width: 500px"></div>
<script>

    var divid = '#mmchem3';
	jQuery(divid).asker({
	    id: divid,
	    question: "What is a SMILES expression for benzene?",
		answers: ['c1cccc1','cccccc1','c2ccccc2','1cccccc1','c1ccccc1c'],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
    $(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

Drawing¶

All but the simplest smiles can be challenging to interpret (especially if chirality is included). Fortunately, you can use pybel (or molecular viewers like MarvinView) to convert them to their 2D representation.

Example: CC(NC1=CC=C(O)C=C1)=O

In [7]:
from openbabel import pybel
pybel.readstring('smi','CC(NC1=CC=C(O)C=C1)=O')
Out[7]:
No description has been provided for this image

RDKit Example¶

In [8]:
from rdkit import Chem
Chem.MolFromSmiles('CC(NC1=CC=C(O)C=C1)=O')
Out[8]:
No description has been provided for this image

Lipinski's Rule of Five¶

In 1997 Christopher Lipinski analyzed existing drugs and came up with a set of molecular property rules for classifying a small molecule as drug-like and having good oral bioavailability.

  • No more than 5 hydrogen bond donors
  • No more than 10 hydrogen bond acceptors
  • Molecular weight less than 500 daltons
  • Partition coefficient logP less than 5
  • There is no fifth rule, but it is okay if at most one rule is violated
In [9]:
mol = pybel.readstring('smi','CC(=O)Nc1ccc(O)cc1')
desc = mol.calcdesc()
desc['MW'], desc['HBA1'], desc['HBD'], desc['logP'] 
Out[9]:
(151.16256, 3.0, 2.0, 1.4236)
In [10]:
from rdkit.Chem import Descriptors
mol = Chem.MolFromSmiles('CC(=O)Nc1ccc(O)cc1')  # e.g. Paracetamol

# Ro5 descriptors
MW = Descriptors.MolWt(mol)
HBA = Descriptors.NOCount(mol)
HBD = Descriptors.NHOHCount(mol)
LogP = Descriptors.MolLogP(mol)
conditions = [MW <= 500, HBA <= 10, HBD <= 5, LogP <= 5]
pass_ro5 = conditions.count(True) >= 3
MW,HBA,HBD,LogP,pass_ro5
Out[10]:
(151.165, 3, 2, 1.3505999999999998, True)

logP¶

No description has been provided for this image

Fingerprints¶

A molecular fingerprint reduces the chemical features of a molecule into a bit vector. The features of the fingerprint correspond to a bit in the vector. This bit is set if the compound has that feature.

The most common type of fingerprint is a Daylight style fingerprint where all the paths (up to a given length) are enumerated and hashed to their bit positions.

No description has been provided for this image
In [11]:
%%html
<div id="mmfinger" style="width: 500px"></div>
<script>
$('head').append('<link rel="stylesheet" href="https://bits.csb.pitt.edu/asker.js/themes/asker.default.css" />');

    var divid = '#mmfinger';
	jQuery(divid).asker({
	    id: divid,
	    question: "If I know a specific bit is set in a fingerprint, do I know what functional group that corresponds to?",
		answers: ['Yes','No'],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

This provides a fixed length vector representation of a chemical structure.¶

No description has been provided for this image
In [12]:
%%html
<div id="mmqsar" style="width: 500px"></div>
<script>
$('head').append('<link rel="stylesheet" href="https://bits.csb.pitt.edu/asker.js/themes/asker.default.css" />');

    var divid = '#mmqsar';
	jQuery(divid).asker({
	    id: divid,
	    question: "The previous slide had what kind of model on it?",
		answers: ['QSAR','QSPR','Generative','Activity cliff'],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

Fingerprints¶

Bit vectors can easily be compared, most commonly with the Tanimoto coefficient: $$\frac{|A \cap B|}{|A \cup B|}$$

This provides a quantitative measure of chemical similarity.

Similarity search is a surprisingly effective mechanism of virtual screening (given enough data).

In [13]:
%%html
<div id="mmchemsim" style="width: 500px"></div>
<script>
$('head').append('<link rel="stylesheet" href="https://bits.csb.pitt.edu/asker.js/themes/asker.default.css" />');

    var divid = '#mmchemsim';
	jQuery(divid).asker({
	    id: divid,
	    question: "What is the Tanimoto coefficient of the bitstrings 1001 and 0011?",
		answers: ['0','0.25','0.33','0.5','0.66','0.75','1.0'],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>
In [14]:
%%html
<div id="mmchemsim2" style="width: 500px"></div>
<script>
$('head').append('<link rel="stylesheet" href="https://bits.csb.pitt.edu/asker.js/themes/asker.default.css" />');

    var divid = '#mmchemsim2';
	jQuery(divid).asker({
	    id: divid,
	    question: "Do you think Tanimoto similarity of the molecular fingerprints of proteins would be useful?",
		answers: ['Yes','No'],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

Central Dogma¶

DNA Sequence $\rightarrow$ RNA $\rightarrow$ Protein $\rightarrow$ Structure (Dynamics) $\rightarrow$ Function

In [15]:
import py3Dmol

Molecular Representations¶

Cartoons trace molecule and show key features.

In [16]:
v = py3Dmol.view('4c64',style='cartoon'); v.show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

DNA Structure¶

Where is major/minor groove?

In [18]:
v = py3Dmol.view('4c64',style='cartoon'); v.show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

Molecular Representations¶

Spheres (space-filling) highlights individual atoms (usually color coded by element).

In [19]:
v = py3Dmol.view('4c64',style='sphere'); v.show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

Molecular Representations¶

Sticks (licorice) highlights bonds. Often used for small molecules.

In [20]:
v = py3Dmol.view('4c64',style='stick'); v.show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

Note that sticks and cartoon won't show nonbonded atoms...

In [21]:
v = py3Dmol.view('4c64',style='stick')
v.setStyle({'bonds':0},{'sphere':{'radius':0.5}}); v.show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

In [22]:
%%html
<div id="whatdots" style="width: 500px"></div>
<script>
    var divid = '#whatdots';
	jQuery(divid).asker({
	    id: divid,
	    question: "What are the red dots?",
		answers: ["Water","Ions","Cofactors","Phosphates"],
        server: "https://bits.csb.pitt.edu/asker.js/example/asker.cgi",
		charter: chartmaker})
    
$(".jp-InputArea .o:contains(html)").closest('.jp-InputArea').hide();


</script>

Molecular Representations¶

Surfaces show the overall shape.

In [23]:
v = py3Dmol.view('4c64',style='stick')
v.addSurface().show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

Molecular Surfaces¶

From Introduction to Proteins: Structure, Function, and Motion. Amit Kessel & Nir Ben-Tal

Molecular Surfaces¶

In [24]:
v = py3Dmol.view('4c64',width=770,viewergrid=(1,3))
v.addSurface('VDW',viewer=(0,0)); v.addSurface('MS',viewer=(0,1)); v.addSurface('SAS',viewer=(0,2)); v.show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

RNA Can Have Interesting Structure¶

S-adenosylmethionine (SAM) / S-adenosylhomocysteine (SAH) riboswitch - regulates transcription of SAM-biosynthetic enzymes.

In [25]:
v = py3Dmol.view(query='6HAG',style='cartoon',height=400)
v.setStyle({'resn':'SAH'},'sphere').show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

RNA Can Have Interesting Structure¶

Transfer RNA

In [26]:
py3Dmol.view(query='4tna',style='stick').show()

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

...But We're Going To Focus on Proteins¶

proteins

Key Concepts¶

  • clinical trial phases
  • hits, leads
  • biologics vs. small molecules
  • cheminformatics
  • QSAR, QSPR, activity cliffs
  • molecular fingerprints, Tanimoto similarity
  • stick/cartoon/surface representations

Tomorrow.. getting setup on the cluster¶

Next lecture.. proteins!¶