from dotenv import load_dotenv
load_dotenv()
True
%load_ext autoreload
%autoreload 2
Docking a single ligand¶
This notebook shows you how to dock a single ligand to a protein
Setup¶
First, we'll import the necessary Deep Origin drug discovery modules.
from deeporigin.drug_discovery import (
BRD_DATA_DIR,
Pocket,
Protein,
Protonation,
Docking,
Ligand,
LigandSet,
)
from deeporigin.platform import DeepOriginClient
import deeporigin
deeporigin.__version__
'0.0.0.dev0'
You don't have to explictitly initialize a client, but you can if you want:
client = DeepOriginClient()
client
/home/runner/work/do-dd-client/do-dd-client/.venv/lib/python3.11/site-packages/jwt/api_jwt.py:147: InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2. return self._jws.encode(
DeepOrigin Platform Client for Local User (org_key=deeporigin, base_url=http://127.0.0.1:4931/)
Load protein and register on the platform¶
We use the same BRD protein as registered_protein in tests/test_functions_with_data_platform.py: load brd.pdb, remove waters, then sync so the structure exists on the platform for docking.
protein = Protein.from_file(BRD_DATA_DIR / "brd.pdb")
protein.remove_water()
protein.sync()
protein.id
'brd'
## Load ligand
ligand = Ligand.from_sdf(BRD_DATA_DIR/"brd-2.sdf")
ligand.sync()
ligand
<rdkit.Chem.rdchem.Mol object at 0x7febb64c5ee0>
ligand.id
'brd-2'
Protonate Ligand¶
protonator = Protonation(ligand=ligand)
protonator.run()
LigandSet with 1 ligand
SMILES: CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 PROTONATED (pH=7.4) 2D
Properties: initial_smiles, r_exp_dg
Use .to_dataframe() to convert to a dataframe, .show_df() to view dataframewith structures, or .show() for 3D visualization, .prepare() to prepare ligands for docking
Work with a pocket¶
Here, we will use a previously identified novel pocket using the PocketFinder tool.
pockets = Pocket.from_result(protein_id=protein.id)
pocket = pockets[0]
pocket
Pocket: ╭─────────────────────────┬──────────────────────────────────────╮ │ Name │ pocket_1 │ ├─────────────────────────┼──────────────────────────────────────┤ │ ID │ c002d6b3-0d66-4265-91db-8bec0392751d │ ├─────────────────────────┼──────────────────────────────────────┤ │ Protein ID │ brd │ ├─────────────────────────┼──────────────────────────────────────┤ │ Color │ red │ ├─────────────────────────┼──────────────────────────────────────┤ │ Center │ (-13.52, -4.94, 15.46) │ ├─────────────────────────┼──────────────────────────────────────┤ │ Box size │ 14.00 × 14.00 × 19.00 Å │ ├─────────────────────────┼──────────────────────────────────────┤ │ Volume │ 300 ų │ ├─────────────────────────┼──────────────────────────────────────┤ │ Total SASA │ 1225.8883 Ų │ ├─────────────────────────┼──────────────────────────────────────┤ │ Polar SASA │ 309.8629 Ų │ ├─────────────────────────┼──────────────────────────────────────┤ │ Polar/Apolar SASA ratio │ 0.3382689 │ ├─────────────────────────┼──────────────────────────────────────┤ │ Hydrophobicity │ 29.92 │ ├─────────────────────────┼──────────────────────────────────────┤ │ Polarity │ 10 │ ├─────────────────────────┼──────────────────────────────────────┤ │ Drugability score │ 0.94304204 │ ├─────────────────────────┼──────────────────────────────────────┤ │ Pocket count │ 1 │ ├─────────────────────────┼──────────────────────────────────────┤ │ Pocket min size │ 30 ų │ ╰─────────────────────────┴──────────────────────────────────────╯
Estimate cost¶
docking = Docking(protein=protein, pocket=pockets[0], ligand=ligand)
docking.quote()
docking.estimate
0.2
Dock ligand¶
poses = docking.run()
poses.to_dataframe()
| box_size_z | pose_score | box_size_x | pocket_id | box_size_y | pocket_center | best_pose | id | protein_id | binding_energy | SMILES | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 20 | 0.904670 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | True | 08E5F60ACA0CF | brd | -8.015328 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 1 | 20 | 0.898408 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08ACE7D177B27 | brd | -8.961081 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 2 | 20 | 0.852781 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08CDE114BC6F1 | brd | -7.692511 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 3 | 20 | 0.807688 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08F02FF3AAE9D | brd | -9.012382 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 4 | 20 | 0.796831 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08B186E997015 | brd | -7.441937 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 5 | 20 | 0.757949 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 0822FA6EF6A65 | brd | -8.609729 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 6 | 20 | 0.709940 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08A00C4C6EA2B | brd | -8.411566 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 7 | 20 | 0.624421 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08D90A1FB9522 | brd | -7.697807 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 8 | 20 | 0.594424 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 085AD49AD4EE4 | brd | -7.191995 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 9 | 20 | 0.585849 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 088A8C6BCE6B8 | brd | -6.837277 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 10 | 20 | 0.573230 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08824450B182F | brd | -6.739297 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 11 | 20 | 0.544384 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 086B46F7208E9 | brd | -8.172841 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 12 | 20 | 0.537316 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 080663800F120 | brd | -7.280019 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 13 | 20 | 0.535973 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08B010AA4A052 | brd | -8.083034 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 14 | 20 | 0.534965 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 08D8107C74D34 | brd | -7.644990 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
| 15 | 20 | 0.513628 | 20 | pocket-test-id | 20 | [-13.146394729614258, -5.712231636047363, 14.7... | False | 0813380E24280 | brd | -8.500072 | CN(C)C(=O)c1cccc(-c2cn(C)c(=O)c3[nH]ccc23)c1 |
Show poses¶
poses.download()
protein.show(poses=poses)
Downloading files: 0%| | 0/16 [00:00<?, ?file/s]
Downloading files: 69%|██████▉ | 11/16 [00:00<00:00, 103.20file/s]
Downloading files: 100%|██████████| 16/16 [00:00<00:00, 128.24file/s]