Graphical interface

rbfenet plan has some sixty knobs. Choosing among them from the command line means running it, opening the report, changing a flag, running it again, and holding the previous answer in your head. rbfenet gui closes that loop: move a knob, see the network and its metrics, pin the run, move another knob, compare.

rbfenet gui --ligands ligands.sdf
Loaded 16 ligand(s).
rbfenet gui listening on http://127.0.0.1:8765/  (ctrl-c to stop)

It is part of the package, not an extra: the server is standard library only, and there is nothing to install beyond what planning already needs.

--ligands takes what it takes everywhere else – SDF, mol2, .smi, directories, or several of them at once – and so does the box in the page, which additionally expands a pattern like data/*.mol2 for you, since there is no shell behind it to do that.

The form is the command line

Every control on the page is generated from the CLI’s own argument parser, and the filled form is turned back into flags that rbfenet plan parses. The GUI holds no list of knobs of its own.

That is worth stating plainly because of what it buys. A flag added to the CLI appears in the form with no change to the GUI. Every refusal you see – an edge budget too small to span the ligands, a --compat level contradicting a knob it pins, a soft-core threshold out of range – is the CLI’s own message, not a second opinion about it. And the page can always show you the exact command that produced what you are looking at:

rbfenet plan --ligands ligands.sdf --planner redundant-mst --n-redundancy 3 --cbfe bridge

Copy that into a job script and you get the network on the screen. Exploring interactively and running reproducibly are the same activity, rather than two that have to be kept in agreement by hand.

What it shows you that the command line cannot

Knobs the chosen planner will ignore are greyed out. star, explicit and complete accept some fourteen network flags and then never read them; only --design and --cbfe are refused out loud, by the planner’s own support checks. The form marks the rest rather than letting you tune something that cannot take effect. --pair-evaluation adaptive gets the same treatment: it is honoured only by the mst planner and falls back to eager evaluation under any other.

Knobs that cannot change the network are labelled. --design-total-ns and the lambda bounds are read by the Amber exporter when it writes runconfigs. They are worth setting and they will not move an edge, so the page says so instead of leaving you to wonder why the diagram did not change.

Peak mapping memory is estimated as you type. FindMCS allocates monotonically and frees nothing until it returns, at roughly 40 MB per second of --mcs-timeout per job, so the defaults of 60 s and 8 jobs are some 20 GB before a single candidate is retained. The page works that out from the two knobs and warns before you start the run rather than after the machine has begun swapping.

Why a second run is faster

Mapping is where a plan spends its time, and it is the one stage that does not depend on which planner runs afterwards. Over the shipped Tyk2 set – sixteen ligands, a hundred and twenty pairs – a full plan takes about 2.1 s, and takes about 2.1 s for every variant in the published matrix whatever the selection knobs; the same run with --cbfe all, which skips mapping entirely, takes 0.5 s.

So the GUI remembers atom correspondences. Moving a selection knob re-runs the repair and the scorer, which are cheap, while the MCS searches come back from a cache. Failed mappings are remembered too: a pair no search can relate is exactly the one that costs a full --mcs-timeout to fail, and its answer cannot change when a planner knob moves.

--cache-dir keeps that across sessions, which makes the second launch fast rather than only the second run:

rbfenet gui --ligands ligands.sdf --cache-dir ~/.cache/rbfenet

The cache is keyed on the molecules’ atom blocks, the mapper, and the mapping options, so editing a ligand file or changing --mcs-timeout correctly misses. Nothing in it can go stale into a result: everything cached is recomputable, and a damaged cache file is discarded with a warning rather than raising.

Running it on a cluster

The server binds the loopback interface. To use it against ligands on a remote machine, forward the port rather than binding a public one:

ssh -L 8765:127.0.0.1:8765 user@cluster
# then, on the cluster:
rbfenet gui --ligands /scratch/ligands.sdf --no-browser --cache-dir ~/.cache/rbfenet

--host will bind elsewhere and warns when you ask it to. The server plans networks from any ligand path it is given, runs with your privileges, and has no authentication; it is a local tool, and it is not written to face a network.

Options

--ligands PATH...     Ligands to load at startup. Optional; a file can be chosen in the page.
--name-property PROP  Molecule property to read ligand names from (default: _Name).
--host HOST           Interface to bind (default: 127.0.0.1).
--port PORT           Port to bind (default: 8765). 0 picks a free one.
--no-browser          Do not open a browser window.
--cache-dir DIR       Persist mapped atom correspondences between sessions.

What it does not do

It plans and it compares. It does not export: a run offers its network.json and its full HTML report for download, and everything downstream – Amber setup, surgery and replanning – stays with the CLI and the Python API. Nor does it expose knobs the CLI has not got, such as the FindMCS settings on MappingOptions or the fields of CostModel. A knob the GUI had and the command line could not express would break the one property the whole design rests on.