Dyno Phi
ContentsHotspots and numberingShow

Hotspots and numbering

Use author residue numbers when defining hotspots for each model.

Author numbering

A residue is named the way the deposited structure names it: chain, then the author's residue number, as in A150. That number is not its position in the sequence. Chains routinely start above 1, skip numbers at gaps, and carry insertion codes. Phi keeps author numbering everywhere a residue is shown or typed, and converts only at the edge where a model wants something else.

The chain summary

Loading a target returns a chain summary before anything runs: chain ids, lengths, the numbering range, and the sequence. Read it before choosing hotspots. The example below is TFR1 chain A from PDB 9GH7, whose first residue is 122.

Author numbering, as deposited. Marked residues are the example hotspot set.

A
122130140150160170180
LYWDDLKRKLSEKLDSTDFTGTIKLLNENSYVPREAGSQKDENLALYVENQFREFKLSKV

Sequence positions, counted from 1. The same residues, different numbers.

A
1102030405060
LYWDDLKRKLSEKLDSTDFTGTIKLLNENSYVPREAGSQKDENLALYVENQFREFKLSKV

9GH7 chain A: 636 residues, 122 to 757, no gaps. Residue 150 is position 29.

Avoid shifted hotspot positions

A hotspot list written as sequence positions, or a structure renumbered from 1, aims the run at the wrong residues without any error. On a chain that starts at 122, position 29 and residue 150 are the same atom; a model given 29 as an author number would look 121 residues away. Phi's hotspot fields show the chain's numbering range beside them for this reason.

What each model takes

Most generators take hotspots as a list of author-numbered residues under params.hotspots. Some take them elsewhere or in another form. The table shows one set as each model wants it; the values are computed from the target's real numbering.

ModelParameterValue for this set
BoltzGenparams.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
Germinalparams.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
RFantibodyparams.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
BindCraftparams.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
Dyno Psiparams.hotspots`hotspots` are required. `binder_center_of_mass` is required for the default `binder_centering=predefined`; set `binder_centering=sphere_exclusion` to omit it. The centre is then computed from the hotspots. Hotspots use 'Chain:Residue' form, e.g. 'A7:58'.
RFD4-Proteinaparams.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
RFdiffusionparams.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
RFdiffusion 3params.hotspots["A150","A154","A156","A159","A160","A161","A193","A219"]
PXDesigninputs.target_chains, 1-based[29,33,35,38,39,40,72,98] (chain A starts at 122, so subtract 121)

Through the MCP tools, phi_design_binder takes the author-numbered list and does the conversion. Through the REST API and the CLI you write the model's own field.

Checked 2026-09-29