DrugTSR
Represents drug and ligand 3D structures as TSR keys, and builds cross keys spanning both the drug and its target so a complex can be compared as a whole.
Read the paper: Development of a novel representation of drug 3D structures and enhancement of the TSR-based method for probing drug and target interactions (opens in a new tab)Computational Biology and Chemistry, 2024, 112, 108117

On this page
Overview
DrugTSR extends the Triangular Spatial Relationship (TSR)-based approach to drug–target interactions, introducing specialised TSR keys for both the drug and the target structure. It makes three contributions.
- 3D structure representation for drugs and ligands. DrugTSR uses TSR keys to represent the 3D structures of drugs, capturing the structural relationships within them. These keys allow common substructures to be searched for, so drug properties and interaction patterns can be compared.
- Cross TSR keys for drug–target interactions. By constructing triangles that span both drug and protein atoms, cross TSR keys quantify the structural relationship within a drug–target complex. They distinguish binding sites and reveal interactions specific to primary or off-target sites, supporting selective drug design.
- Side chain representations for amino acids. A refined representation of side-chain interactions, which matter for drug–target binding accuracy, aids identification of binding sites while limiting off-target effects.
Results indicate that DrugTSR can improve clustering accuracy for drug families and predict interaction profiles across similar drugs, with applications ranging from virtual screening to drug design.
Run it with BioTSR
BioTSR computes the two kinds of key at the centre of DrugTSR: keys within a ligand, and atomic cross keys whose triangles span a ligand and its protein. For the benzamidine (BEN) bound to trypsin in PDB entry 3PTB:
python -m pip install "biotsr==1.0.0"
biotsr fetch 3PTB --pdb-dir structures
biotsr run --method drug --pdb structures/3PTB.pdb --chain A --entity-name BEN --entity-id 1 --output results
biotsr run --method drug_protein_cross --pdb structures/3PTB.pdb --chain A --chain-2 A --entity-name BEN --entity-id 1 --output resultsThe first command gives the ligand's own keys (84 triangles, 38 distinct keys,
prefix results/3PTB_A_drug_BEN_1). The second gives the cross keys between
the ligand and the protein chain (84 triangles, 72 distinct keys, prefix
results/3PTB_A_A_drug_protein_cross_BEN_1). --chain is the ligand's chain
and --chain-2 the protein's; both are always required.
Ligand BEN 1
3 of 9 heavy atoms in contact
- C
- N1
- N2
Protein chain
7 of 1,629 heavy atoms in contact
- Asp189 CG
- Asp189 OD1
- Asp189 OD2
- Gly219 O
- Gly226 CA
- Ser190 O
- Ser190 OG
Every triangle has atoms on both sides: two ligand atoms and one protein atom, or one and two. With 3 and 7 atoms that is 3 × C(7, 2) + 7 × C(3, 2) = 63 + 21 = 84 triangles, with 72 distinct keys. Triangles with all three atoms on one side are not formed.
- Which atoms take part in a cross: a ligand atom is kept if a protein
heavy atom lies within the contact cutoff of it, and a protein atom if a
ligand heavy atom does. The reference cutoff is 3.5 Å, set with
--contact-cutoff, and the cutoff used is recorded with every result. - One copy or every copy: with
--entity-idthe ligand is that one copy; without it, every copy of that name on the chain is taken together.biotsr.list_entity_targetslists the ligands on a chain. - Other methods:
drug_atom_selectionuses ligand atoms you name, and the protein's own keys come from the protein Cα and amino-acid methods. The paper's named key types (CA, CABS, ATOMBS, CATOM, CATOM2) are not BioTSR method names, and BioTSR's documentation does not map them to its methods. - Options: the
drugmethod takes mirror images and size filtering; the cross method takes size filtering only. - From Python:
biotsr.analyze(..., method="drug", ...)andbiotsr.analyze_cross(..., method="drug_protein_cross", ...).
The user guide, §7 covers the ligand methods, tutorial 04 the cross methods, and the cross-TSR method record defines them.
How BioTSR's cross keys differ from the earlier programs
The earlier cross-key programs differ from BioTSR in ways its cross-TSR record, §10 lists one by one, among them:
- contact filtering: one earlier program narrowed only the protein side by the cutoff and admitted the whole ligand; BioTSR narrows both sides. On 6G9M with ligand ESW 404 at 3.5 Å, that is 37 ligand atoms against 10, and 8,325 triangles against 900;
- atom identity: two earlier programs identified pooled atoms by name, so two same-named atoms of different residues became one;
- alternate locations, distance classes and the angle divisor: BioTSR reads
alternate location blank or
Aonly, uses 18 atomic distance classes, and divides by π rather than 3.14.
Matching the cutoff alone therefore does not reproduce an earlier program's selection.
Earlier settings and BioTSR's
The DrugTSR study represented a binding site in two ways, both used in its Figure 3:
- Cα binding site (CABS keys): one Cα atom from each binding-site residue, a residue with an atom within the cutoff of the drug. The Cα itself need not lie within the cutoff.
- All-atom binding site (ATOMBS keys): only the protein atoms within the cutoff of the drug, not every atom of the residues they belong to.
Contact cutoffs in the group's earlier work ranged from 3 to 5 Å, most often 3.5 Å. This page does not say which cutoff each published figure used or which program produced it.
BioTSR 1.0.0's behaviour is its own, not a record of earlier work:
drug_protein_crossapplies the same atom-level rule as the all-atom binding site, and to both sides: a protein heavy atom is kept when a ligand heavy atom lies within the cutoff of it, and a ligand atom when a protein heavy atom does. It builds only cross triangles, with atoms on both sides, and computes no keys over the binding-site atoms alone.- No BioTSR method selects a ligand's binding-site residues or atoms for keys
of the protein alone.
aa_selectionandamino_acid_atom_selectioncompute Cα or atomic keys over residues or atoms you list, but choosing them by their distance from the ligand is left to you. - The reference cutoff is 3.5 Å, changed with
--contact-cutoff, and the cutoff used is recorded with every result.
Source code
BioTSR (opens on GitHub)
Current software
Used by the examples on this page.
Licence Apache License 2.0
TSR-Package (opens on GitHub)
Earlier implementation
DrugTSR was first implemented here, as the DrugTSR() function. It is kept unchanged for provenance and for work that depends on it; its README has its own installation instructions.
Licence MIT License