Skip to content
Plate XMatrix

Compound–target analysis

One compound per row, one target per column. Two bodies of evidence can fill it — the affinities this archive holds, and predictions from DRIFT — and they are never combined into one grid. A measurement and a model’s estimate answer different questions, and a heatmap is exactly where that difference stops being visible if you let it.

Evidence
Columns
Compounds

163 of 163 selected

Order
Point at a cell to read it
Targets measured
Z-score
5-HT2A
5-HT2C
5-HT1A
5-HT2B
5-HT2
5-HT1B
Serotonin (5-HT) receptor
5-HT7
5-HT6
CB1
5-HT1D
5-HT1
SERT
5-HT1E
Alpha2A
CB2
D2
D1
KOR
Alpha2B
Alpha2C
5-HT5A
Sigma 1
D3
MOR
Alpha1A
DOR
Sigma 2
NET
Beta2
Alpha1B
DAT
Muscarinic acetylcholine receptor
Cannabinoid receptor
Beta1
D4
D5
5-HT1F
NMDA
5-HT5B
Alpha1D
Amine oxidase [flavin-containing]…
5-HT4
hERG
GABAA
L-lactate dehydrogenase A chain
Adrenergic receptor alpha-1
5-HT3
Adrenergic receptor alpha-2
Cytochrome P450 2A6
5-HT7B
Cytochrome P450 1A1
Cytochrome P450 1B1
Cytochrome P450 2C19
Cytochrome P450 2B6
TAAR1
Dual specificity protein kinase C…
Dual specificity tyrosine-phospho…
Dual specificity tyrosine-phospho…
Glycogen synthase kinase-3 beta
GABAB
Nicotinic acetylcholine receptor …
Neuronal acetylcholine receptor
Neuronal acetylcholine receptor; …
Cytochrome P450 2A13
Androgen receptor
Amine oxidase [flavin-containing]…
5-HT4A
5-HT4B
5-HT4C
5-HT4D
Cytochrome P450 1A2
Acetylcholinesterase
Cholinesterase
Muscarinic acetylcholine receptor…
M1
M2
M3
5-HT3A
Serotonin receptor 2a and 2c (5HT…
26
+3.87
23
+3.32
23
+3.32
19
+2.59
18
+2.41
16
+2.04
16
+2.04
11
+1.13
15
+1.86
13
+1.49
12
+1.31
12
+1.31
11
+1.13
7
+0.40
10
+0.95
10
+0.95
10
+0.95
9
+0.76
9
+0.76
8
+0.58
8
+0.58
7
+0.40
7
+0.40
6
+0.22
6
+0.22
5
+0.03
4
−0.15
5
+0.03
4
−0.15
4
−0.15
4
−0.15
4
−0.15
4
−0.15
4
−0.15
4
−0.15
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
3
−0.33
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
2
−0.51
1
−0.70
1
−0.70
2
−0.51
2
−0.51
2
−0.51
2
−0.51
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
1
−0.70
Compounds measured
76
63
48
40
36
27
26
23
22
22
20
20
19
18
18
18
17
16
16
15
15
14
13
12
12
11
10
8
7
6
6
6
6
6
5
5
5
5
5
4
4
4
3
3
3
3
3
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3.911.0 pX

Blank cell · not measured

163 × 80 · 785 values · 6% filled

Save figure

The strip under the plate counts, for each column, how many of the selected compounds carry a published Kᵢ or Kd at that target. The bar beneath each number is that same number and nothing else — one value drawn twice, not a second measurement. Both are counted off the cells above them, so they follow the current selection rather than the whole archive. Columns are ordered by that count, which is why the bars fall away to the right: most of this pharmacology rests on a handful of targets that have been assayed against nearly everything, and a long tail measured once or twice.

Every cell is a published equilibrium constant — Ki or Kd, the strongest recorded for that pair. Functional readouts are not pooled with them. The whole grid is shown: 163 compounds against 80 molecular targets, from 2,351 measurements. It is mostly empty, and that is a true fact about how thinly this pharmacology has been assayed rather than a fact about the compounds. 24 of those targets were recorded under more than one name — ChEMBL writes “Cannabinoid receptor 1” where the PDSP ingest writes “CB1” — and are folded onto one column by the table in src/lib/targets.ts. Point at a column heading to see the other spellings; the fault and every fold are set out on the integrity report.

Network

Interaction graph

The same cells as a bipartite network: a circle for each compound, a square for each target, and an edge wherever the archive holds a value for that pair. It answers what a grid answers badly — which targets a group of compounds have in common — because a shared target is one node with several edges running into it rather than a column you read down. Node area is degree and edge weight is the stored value; position carries nothing except in the spring layout, which says so. It follows the source and the compound selection set above.

Layout
Edges

Compounds in one column, targets in the other, each ordered by degree. The honest default for two-kind data: no position is invented, and a target's edges fan visibly into one point.

ErgotamineLisurideLSDBromocriptineN,N-Dipropyltryptamine (D…MethysergideDimethyltryptamine (DMT)DALT5-Methoxytryptamine5-MeO-DALTLSZPsilocinMitragynineCannabidiolTryptamineHarminemeta-chlorophenylpiperazi…ErgonovineDOITMA-2QuipazineMDMADiPTDOB5-MeO-DMTDOET5-MeO-2-TMT2C-IDOMPsilocybin2C-HMescalineTFMPPPhencyclidine (PCP)5-HT2A5-HT2C5-HT1A5-HT2B5-HT25-HT1BSerotonin (5-HT) receptor5-HT75-HT6CB15-HT1D5-HT1SERT5-HT1EAlpha2ACB2D2D1KORAlpha2BAlpha2C5-HT5ASigma 1D3MORAlpha1ADORSigma 2NETBeta2Alpha1BDATMuscarinic acetylcholine …Cannabinoid receptor
CompoundTargetNode area · degreeEdge weight · value

163 compounds · 80 targets · 785 of 785 edges

Point at a node to trace it

Save figure

Compound × compound

Profile similarity

The same evidence read the other way round: not which targets a compound binds, but how alike two compounds’ whole profiles are. Each compound becomes a vector over every target of the source above — carrying 1/Ki at each target and zero where there is no interaction — and a cell is the cosine of the angle between two of them. It follows the source and the compound selection you set for the plate above.

Order

163 × 163 · 13,203 pairs

Point at a cell to read it
Ergotamine
TFMPP
meta-chlorophenylpiperazine
MK-212
LSD
5-MeO-DMT
5-MeO-DALT
DiPT
LSZ
5-Chloro-DMT (5-Cl-DMT)
5-Bromo-DMT (5-Br-DMT)
5-MeO-DET
RU-28253
Bufotenine
N,N-Diethyltryptamine
2C-H
5-MeO-DPT
Dimemebfe
N,N-Dipropyltryptamine (DPT)
5-MeO-AMT
5-Fluoro-DMT (5-F-DMT)
DALT
Lisuride
Methysergide
4-AcO-DMT
N-Methyltryptamine
Glaucine
Psilocin
Lorcaserin
25I-NBOMe
Dimethyltryptamine (DMT)
4-HO-pyr-T
alpha-Methylserotonin
4-Hydroxytryptamine
1-Methylpsilocin
Ro60-0175
5-Fluoro-AMT
4-HO-DET
6-MeO-isoDMT
2,5-Dimethoxy-4-butylamphetamine
Tryptamine
DOI
LPH-5
DOB
DOET
BOB
BOH-2C-B
AMT
2C-B-FLY
Escaline
5-MeO-NMT
UCD0094 (RU 28306)
UCD0076
UCD0830
UCD0120
UCD0179
2CB-Ind
5-MeO-MPMI
AL-38022A
Jimscaline
N-Ethyl-2C-B
TCB-2
Bis-TOM
Phenescaline
2C-TFM
2,5-Dimethoxyamphetamine
2C-B
2C-I
DOM
Psilocybin
Mescaline
2,5-Dimethoxy-4-trifluoromethylam…
DOPR
DOC (2,5-dimethoxy-4-chloroamphet…
psi-DOM
Pinoline
6-Fluoro-N,N-diethyltryptamine
Ergonovine
Methergine
TMA-2
MDA
5-Methoxytryptamine
Harmalan
5-MeO-pyr-T
5-MeO-2-TMT
Harmaline
1-(2-naphthyl)piperazine
Beatrice
Mebfap
2C-B-PP
Methyl-DOB
3,4,5-Trimethoxyamphetamine
2,4-dimethoxyamphetamine
4-Fluoro-2,5-dimethoxyamphetamine
3,4-Dimethoxyamphetamine
TMA-6
MMDA-2
TMA-3
TMA-4
MDPEA
7,N,N-TMT
N-Methylmescaline
3,4-Dimethoxyphenethylamine
2,5-Dimethoxy-4-ethoxyamphetamine
2,5-Dimethoxy-4-nitroamphetamine
3-Methoxyamphetamine
Bromocriptine
Cannabidiol
UH-232
Ergocristine
Lysergic acid amide (LSA)
Mitragynine
7-Hydroxymitragynine
Mitragynine pseudoindoxyl
Corynantheidine
Herkinorin
Paynantheine
Salvinorin A
Quipazine
MDMA
MXE
Dextromethorphan
Phencyclidine (PCP)
Ketamine
Dextrorphan
Ibogaine
para-chlorophenylpiperazine
Noribogaine
Voacangine
Harmine
p-Methoxyamphetamine
4-Methylthioamphetamine
Norharman
Muscimol
Harmane
Cannabinol
Tetrahydrocannabinol (THC)
HU-210
Tetrahydrocannabivarin
WIN 55212-2
Delta-8-tetrahydrocannabinol
JWH-018
Rimonabant
11-Hydroxy-delta9-tetrahydrocanna…
Nabilone
JWH-073
AM-2201
AM-251
Tetrahydrocannabiphorol
Cannabidivarin
Cannabichromene
Cannabigerol
CP 55940
HU-308
JWH-122
JWH-210
3-Quinuclidinyl benzilate
Atropine
Scopolamine
Muscarine
N-Methyl-3-piperidyl benzilate
Arecoline
Eticyclidine
Save figure
0.01.0 cos θ

Each compound is a vector over all 80 targets of this source, carrying 1/Ki at each target and zero where there is no interaction. A cell is cos θ between two such vectors: 1 is the same direction, 0 is orthogonal. The diagonal is 1 by construction, not by finding. Cosine normalizes each vector by its own length, so the units cancel and the axis needs none.

The reciprocal is what makes the zero honest. 1/Ki tends to zero as Ki tends to infinity, so an empty cell holds the limit of the quantity at “does not bind” rather than a number standing in for one. Measured in pX instead, the same cell would assert a binding constant of one molar — and because a weak target would then contribute a component of the same order as a strong one, the angle would largely track whether two compounds had been assayed at the same targets. Here a target bound at 10 µM contributes about a hundred-thousandth of what one bound at 100 pM does, so the profile is set by the interactions that dominate it and being co-assayed buys nothing on its own.

What the reciprocal does not fix. An empty cell here still means “nobody ran this assay”, which is not the same fact as “this compound does not bind”. Zero is the right value for the second and says nothing about the first, and no complete-vector method can tell them apart. The drug–target plate above is the one that refuses to conflate them — it never fills a gap, and pays for it by comparing a pair only over targets they share. The two orderings disagreeing is informative rather than a fault.

Because every vector is complete, every pair here is comparable and the clustering carries no fallback distance at all. Distances are 1 − cos θ, average linkage; a group is shaded where its members joined within the closest quartile of observed distances.

Distribution

Target count

How many targets each selected compound carries a value at. The filled bars are the 163 compounds chosen above; where that is fewer than all 163, the outline behind them is the whole source. The outline is what the Z-score column standardizes against, and it deliberately does not move with the selection — a Z measured against a shifting population would be measuring the view rather than the archive.

μ = 4.8 σ = 5.5028550481216202428compoundstargets measured →bin width 2
Save figure

μ = 4.82, σ = 5.48 over 163 compounds; the sample standard deviation, with n − 1 in the denominator. Both are computed over every compound of this source and over its whole target space, so neither moves when you change the selection or hide a column above.

This is why there is no p-value beside the Z. The distribution is strongly right-skewed and bounded below at zero — most compounds have been assayed at a handful of targets, a few at scores of them. A Z-score needs no distributional assumption to be computed and reads as exactly what it is: how far from typical a compound’s coverage is, in standard deviations. Turning it into a two-tailed p would assume a normal distribution, and this histogram is what that assumption would have to hold for. It also matters what is being standardized — how thoroughly a compound has been studied, which is a fact about the literature rather than about the molecule, and not a thing a hypothesis test has a null for.

Every cell in the measured grid is a Ki or Kd published for that compound at that target, shown as pX and traceable from the compound’s own page. Functional readouts are excluded: pooling IC₅₀ with an equilibrium constant puts two different quantities on one axis. Empty cells mean no measurement exists — not that the compound fails to bind. Sources.