Tyk2 RBFE network variants

16 ligands · every pair feasible · one connected component. Every row is a real planning run; click a variant for its full report.

Planned with rbfe-network-map (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.
Optimal design buys precision, not accuracy. The two optimal-design rows below implement NetBFE — a published method by Li et al., not part of this package and not a mode of it. In that paper 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

variantedgesvs floorcostGPU h deg min/mean/maxdiamcycles ≤4bridges edge cyc covnon‑uniform SCrejectedCBFErobust
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.0079 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.62103 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.03127 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.37119 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.37179 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.7060 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.7060 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.23476 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.5395 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.70103 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.7979 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.04175 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.40175 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.04175 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.35292 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.0079 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.7979 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.0079 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.7579 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.7579 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.0079 2/2.5/4 7 4 3 85% 8 0.77
vs floor
edges relative to the n·ln(n) = 45 precision floor for n=16 (Pitman 2023). Negative is below it.
cost
scorer units. Comparable only within one scorer. The A‑/D‑optimal rows use the 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.
non-uniform SC
ligands carrying more than one distinct soft-core mask across their edges — each one needs a different scmask per edge in Amber.
rejected
candidate pairs the feasibility gate refused. Each one is drawn in the variant's own report, under “Rejected candidates”, with the mapping that provoked it.
robust
fraction of 100 Monte-Carlo trials still connected at a 5% per-edge failure rate (seed 20260824).

What the soft-core repair fix changed

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.

It moved less than the headline suggests. 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 (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:
variantbefore the fixafterrejected
edgescostedgescost
mst-epl43338.943238.034 → 0
rmst-n34554.484554.374 → 0
complete116218.45120226.234 → 0
a-optimal-4444221.7344221.044 → 0
d-optimal-4444221.4144220.404 → 0
a-optimal-44-allocated44221.7344221.044 → 0

The gain is a candidate pool that stops refusing edges it can run, not a cheaper default network. --edges-per-ligand 4 is the clearest win: degree four reached with one fewer edge, and cheaper.

What each option does

--edges-per-ligand N
Target minimum degree. After the spanning tree is fixed, edges are added until every ligand has at least N. The main redundancy dial (default 2).
--planner redundant-mst --n-redundancy N
Overlay N spanning trees, then apply the usual degree and cycle redundancy on top. Redundancy from independent trees rather than from degree.
--planner star [--hub-selection ...]
Connect every ligand to one hub. most_partners picks the ligand with the most feasible edges; min_total_cost the one whose edges are cheapest in total.
--planner complete
Select every feasible candidate pair. A reference point.
--max-diameter N
Add edges until no two ligands are more than N perturbations apart. Long chains are where error accumulates; LOMAP caps at 6, FEP+ works below 5.
--cycle-coverage-mode {node,edge}
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.
--scorer variance
Score edges as a predicted standard deviation in kcal/mol rather than on an arbitrary difficulty scale. Required for optimal design, which needs a real σ.
--planner optimal --design {a_optimal,d_optimal}
Choose edges to minimise a functional of the estimate covariance C. A-optimal minimises tr(C), the average variance. D-optimal minimises det(C), which favours more cycles.
--design-total-ns NS
Divide a total simulation budget across the selected edges by predicted information gain, and write per-edge λ windows and nanoseconds into the Amber runconfigs.
--cbfe {off,bridge,cycles,all}
Allow counterpoised edges — two absolute calculations run in opposite directions, needing no atom mapping. bridge only to join disconnected pieces, cycles also to close cycles, all for the entire network.
--consistency {pairwise,component,graph}
How widely a ligand's soft-core must agree. 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.
--compat v0.4
Pin every algorithmic knob to released v0.4 behaviour, so a known result stays reachable by name.

What the runs actually showed

Nothing is rejected any more

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.

The default network is below the floor and has three bridges

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 free

It 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.

Both star hub heuristics pick the same ligand, by coincidence

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 edges are never competitive on this set

--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 edge

23 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.

Soft-core consistency is the one that changes the Amber setup

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.