16 ligands · every pair feasible · one connected component. Every row is a real planning run; click a variant for its full report.
rbfenetmap). Every row is one
rbfenet plan invocation over the same 16 input structures, shipped in
examples/data/tyk2/; the flags shown are the only difference between them.
Regenerate the whole page with
python examples/06_variant_matrix.py docs/source/_static/tyk2-matrix.
tr(C) fell monotonically
(1.08 → 0.78) as the design was optimised while RMSE against experiment
rose (0.84 → 0.91), measured on 16 TYK2 inhibitors —
almost certainly this same ejm*/jmc* series. Minimising predicted
variance does not make the underlying free energies more correct.
Note also that the published method is iterative: it re-optimises allocation each round from variances measured in the previous one. The rows here are the static first pass, with no MD round trip behind them.
Li, P.; Li, Z.; Wang, Y.; Dou, H.; Radak, B. K.; Allen, B. K.; Sherman, W.; Xu, H. “Precise Binding Free Energy Calculations for Multiple Molecules Using an Optimal Measurement Network of Pairwise Differences.” J. Chem. Theory Comput. 2022, 18(2), 650–663. doi:10.1021/acs.jctc.1c00703
| variant | edges | vs floor | cost | GPU h | deg min/mean/max | diam | cycles ≤4 | bridges | edge cyc cov | non‑uniform SC | rejected | CBFE | robust |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Topology | |||||||||||||
| mst-default (defaults) The shipped default. Minimum spanning tree, then edges added until every ligand has 2. Everything else is compared to this. |
20 | −25 | 20.00 | 79 | 2/2.5/4 | 7 | 4 | 3 | 85% | 8 | — | — | 0.77 |
| mst-epl3 --edges-per-ligand 3 Raise the per-ligand degree target to 3. More edges, more redundancy, more GPU time. |
26 | −19 | 28.62 | 103 | 3/3.2/5 | 6 | 16 | 0 | 100% | 8 | — | — | 0.98 |
| mst-epl4 --edges-per-ligand 4 Degree target 4. Approaching the n·ln(n) floor by brute force. |
32 | −13 | 38.03 | 127 | 4/4.0/4 | 4 | 41 | 0 | 100% | 8 | — | — | 0.99 |
| rmst-n2 --planner redundant-mst --n-redundancy 2 Overlay 2 spanning trees before adding degree redundancy. A different route to redundancy than raising degree. |
30 | −15 | 30.37 | 119 | 2/3.8/6 | 6 | 42 | 0 | 100% | 8 | — | — | 0.99 |
| rmst-n3 --planner redundant-mst --n-redundancy 3 Overlay 3 spanning trees. Lands almost exactly on the 45-edge floor. |
45 | +0 | 54.37 | 179 | 3/5.6/11 | 4 | 188 | 0 | 100% | 9 | — | — | 1.0 |
| star-most-partners --planner star Every ligand connected to one hub, chosen as the ligand with the most feasible partners. |
15 | −30 | 22.70 | 60 | 1/1.9/15 | 2 | 0 | 15 | 0% | 1 | — | — | 0.41 |
| star-min-total-cost --planner star --hub-selection min_total_cost Same star, but the hub is the ligand whose edges are cheapest in total. |
15 | −30 | 22.70 | 60 | 1/1.9/15 | 2 | 0 | 15 | 0% | 1 | — | — | 0.41 |
| complete --planner complete Every feasible pair. Not a proposal — the upper bound that makes the others readable. |
120 | +75 | 226.23 | 476 | 15/15.0/15 | 1 | 6020 | 0 | 100% | 11 | — | — | 1.0 |
| Path length and cycles | |||||||||||||
| diameter-4 --max-diameter 4 Keep adding edges until no two ligands are more than 4 perturbations apart. |
24 | −21 | 24.53 | 95 | 2/3.0/6 | 4 | 11 | 0 | 100% | 9 | — | — | 0.98 |
| diameter-3 --max-diameter 3 Same, tightened to 3. Shorter chains, more edges. |
26 | −19 | 28.70 | 103 | 2/3.2/8 | 3 | 17 | 0 | 100% | 8 | — | — | 0.95 |
| cycle-coverage-edge --cycle-coverage-mode edge Demand that every edge lie on a cycle, not merely every ligand. The FEP+ invariant. |
20 | −25 | 21.79 | 79 | 2/2.5/4 | 5 | 3 | 0 | 100% | 9 | — | — | 0.93 |
| Statistical design | |||||||||||||
| a-optimal-44 --scorer variance --planner optimal --design a_optimal --n-edges 44 Pick 44 edges minimising the average variance of the predicted affinities (trace of the covariance). |
44 | −1 | 221.04 | 175 | 1/5.5/13 | 3 | 205 | 2 | 95% | 10 | — | — | 0.89 |
| d-optimal-44 --scorer variance --planner optimal --design d_optimal --n-edges 44 Pick 44 edges minimising the covariance determinant. Tends to produce more cycles than A-optimal. |
44 | −1 | 220.40 | 175 | 1/5.5/12 | 3 | 209 | 2 | 95% | 10 | — | — | 0.9 |
| a-optimal-44-allocated --scorer variance --planner optimal --design a_optimal --n-edges 44 --design-total-ns 400 The A-optimal network, plus a 400 ns simulation budget divided across its edges by predicted information gain. |
44 | −1 | 221.04 | 175 | 1/5.5/13 | 3 | 205 | 2 | 95% | 10 | — | — | 0.89 |
| Counterpoised | |||||||||||||
| cbfe-all --cbfe all Replace every edge with a counterpoised (CBFE) calculation. No atom mapping needed at all. |
23 | −22 | 236.35 | 292 | 2/2.9/15 | 2 | 9 | 0 | 100% | 0 | — | 23 | 0.94 |
| cbfe-cycles --cbfe cycles Allow counterpoised edges, but only where they would buy cycle coverage. |
20 | −25 | 20.00 | 79 | 2/2.5/4 | 7 | 4 | 3 | 85% | 8 | — | — | 0.77 |
| cbfe-cycles-edgecov --cbfe cycles --cycle-coverage-mode edge The combination that actually forces the question: CBFE allowed and every edge required on a cycle. |
20 | −25 | 21.79 | 79 | 2/2.5/4 | 5 | 3 | 0 | 100% | 9 | — | — | 0.93 |
| cbfe-bridge --cbfe bridge Allow counterpoised edges only to join otherwise-disconnected pieces. |
20 | −25 | 20.00 | 79 | 2/2.5/4 | 7 | 4 | 3 | 85% | 8 | — | — | 0.77 |
| Soft-core consistency | |||||||||||||
| consistency-component --consistency component Force one soft-core per ligand within each connected component, so a ligand keeps one scmask. |
20 | −25 | 24.75 | 79 | 2/2.5/4 | 7 | 4 | 3 | 85% | 0 | — | — | 0.77 |
| consistency-graph --consistency graph Force one soft-core per ligand across the whole network. |
20 | −25 | 24.75 | 79 | 2/2.5/4 | 7 | 4 | 3 | 85% | 0 | — | — | 0.77 |
| Reference | |||||||||||||
| compat-v0.4 --compat v0.4 Reproduce released v0.4 behaviour exactly. Confirms none of the above drifted the baseline. |
20 | −25 | 20.00 | 79 | 2/2.5/4 | 7 | 4 | 3 | 85% | 8 | — | — | 0.77 |
n·ln(n) = 45
precision floor for n=16 (Pitman 2023). Negative is below it.variance scorer (kcal/mol predicted σ)
and their cost is not on the same scale as the linear-scorer rows.
GPU h is comparable across every row.scmask per edge in Amber.Four pairs used to be refused for softcore_multiple_attachments:
ejm42~ejm44, ejm42~ejm55, ejm43~ejm55,
ejm44~ejm55. The MCS kept a terminal methyl in the common core while the atom
joining it to the rest of the core went soft-core, so the soft-core became a bridge rather than
a substituent. The repair now absorbs the stranded fragment, and the pool is
120 of 120 feasible with no rejections anywhere.
repair_cost term (0.75 per demoted atom). So the default
network is identical, and 15 of the 21 variants did not move at all. Only
the denser ones did:
| variant | before the fix | after | rejected | ||
|---|---|---|---|---|---|
| edges | cost | edges | cost | ||
| mst-epl4 | 33 | 38.94 | 32 | 38.03 | 4 → 0 |
| rmst-n3 | 45 | 54.48 | 45 | 54.37 | 4 → 0 |
| complete | 116 | 218.45 | 120 | 226.23 | 4 → 0 |
| a-optimal-44 | 44 | 221.73 | 44 | 221.04 | 4 → 0 |
| d-optimal-44 | 44 | 221.41 | 44 | 220.40 | 4 → 0 |
| a-optimal-44-allocated | 44 | 221.73 | 44 | 221.04 | 4 → 0 |
most_partners picks the ligand with the most feasible edges; min_total_cost
the one whose edges are cheapest in total.node (default) asks that every
ligand lie on a cycle. edge asks that every edge does — strictly
stronger, and what makes cycle-closure error checking apply to every transformation.C. A-optimal minimises tr(C), the
average variance. D-optimal minimises det(C), which favours more cycles.bridge only to join disconnected
pieces, cycles also to close cycles, all for the entire network.pairwise (default) lets each edge choose its own; component forces one per
ligand within a component; graph forces one across the whole network — which is
what lets a ligand keep a single Amber scmask.Every pair in the set is now feasible: 120 of 120. Until the stranded-core
repair landed, four pairs — ejm42~ejm44, ejm42~ejm55,
ejm43~ejm55 and ejm44~ejm55 — were refused for
softcore_multiple_attachments. The MCS had kept a terminal methyl in the common core
while the atom joining it to the rest of the core went soft-core, which made the soft-core a
bridge rather than a substituent. The repair now absorbs the stranded fragment instead of
rejecting the edge.
It changed less than you might expect. The recovered edges cost 1.544–2.354 against a
selected range of 0.273–1.983, because the demotion is charged through the scorer's
repair_cost term, so the default network is identical. Only the
denser variants move: --edges-per-ligand 4 now reaches degree four with 32 edges
instead of 33 and costs less, complete gains the four edges, and the two optimal
designs swap a few for marginally better totals.
mst at the default --edges-per-ligand 2 gives 20 edges — 25
short of the 45-edge floor — a diameter of 7, and three bridge edges. Node cycle coverage
is already 1.0, which is why the default stops there, but 15% of edges sit on no cycle at all
and cannot be error-checked. Its robustness is the worst of any connected variant: only
77% of failure trials stay connected.
--cycle-coverage-mode edge is nearly freeIt swaps exactly one edge (still 20 total), and takes bridges 3 → 0 and edge cycle coverage 85% → 100% for +1.79 cost and no extra GPU time. On this set it is the single best value change to the default.
ejm46 is simultaneously tied for most partners (15) and the strict
minimum-total-cost hub (22.70, next best 23.55). So --hub-selection min_total_cost
is genuinely evaluated here but changes nothing — this set does not discriminate the two
heuristics. Either way the star has 15 bridges and zero cycles: no cycle closure anywhere, so
no internal consistency check.
--cbfe bridge and --cbfe cycles both return the default network
unchanged. That is not an inert flag: cycles mode does stock the CBFE pool, but
with node coverage already satisfied nothing spends it. Forcing the issue with
--cbfe cycles --cycle-coverage-mode edge still selects zero CBFE
edges — the result is identical to the pure-RBFE cycle-coverage-edge run.
With every pair feasible there is always a cheaper RBFE edge available. CBFE is
worth reaching for on this series only as a deliberate methodological choice, not for topology.
--cbfe all costs 3.2× per edge23 counterpoised edges at 12.70 GPU h each against 3.97 for the 20 RBFE edges — a per-edge ratio of 3.20×. Whole-network: 79 → 292 GPU h, a 3.68× increase. It also plans in 0.5 s because it needs no mapping.
Under every default-mapping variant, 8 of 16 ligands carry more than one
distinct soft-core mask across their edges — a different scmask per edge for
half the series. Both --consistency component and --consistency graph
take that to 0, on the identical 20-edge topology, for +4.75 cost
(20.00 → 24.75) and no change in GPU hours. The two modes give byte-identical
networks here because the candidate pool is a single component.