JSON settings and reproducible runs
The action bar starts with Compute/Evaluate, followed by Input Parameters:
Examples, Store, Load and Reset. Store downloads
parameter.json containing non-default settings and embedded input text in the
native JSON format. _comment records compiled
tool/library versions and executable reproduction commands. It is JSON metadata,
not a nonstandard comment syntax. Settings can be saved before sequences are
complete; Compute still validates the complete job before loading WASM.
Load validates the complete document before replacing the form, including the task, signed start indices, input text, CSV selection/order and additional outputs. Malformed documents and settings the browser cannot represent leave the form unchanged with an error. Native-only settings and external file paths must be used in the CLI; the browser requires embedded text. JSON uploads are limited to 5 MB. The application never uploads these files to a server.
ZIP uses the same serializer on the completed run, including normalized FASTA.
It contains only parameter.json and output files. Native replay uses:
IntaRNA --parameterFile=parameter.json --out=intarna-interactions.csv
Additional report commands are listed in _comment. They override outMode
and CSV-only settings while retaining the same inputs and analysis settings.
Reports run independently, matching the worker. The WASM integration test
replays the JSON in fresh engines and compares every output byte.
Computed sessions
Each successful computation, including a run with no interaction rows, creates a
new session with a unique ID within the page and a default name such as
Prediction 1, Evaluation 2 or Mutation Design 3. The session retains the computed inputs in JSON,
CSV output, additional files and diagnostics. Editing parameters, Load, examples,
Reset, invalid inputs, failed computations and cancellation preserve prior
sessions. Failed or aborted computations do not create a session.
The newest session opens automatically under Results. Use Show, select its header/name, or select its output area to restore that session’s computed inputs and fold the other sessions. The task, sequence text, signed indices, SHAPE/accessibility text, CSV selection/order and additional output selection are restored together. Hide folds the output. Each session keeps its own filter, sorting and visible columns; folded vaRRI frames are unloaded and restored when their session is reopened.
Edit Session name directly in the header. Names are plain text; an empty name
returns to the default. Download ZIP remains available while folded and always
archives that session’s original JSON and complete outputs, regardless of the
current form or table filters. The session name supplies a safe download filename;
ZIP members remain parameter.json and output files. The garbage-bin button
removes only its session and releases its output; it does not change form inputs.
Sessions exist only in the current page’s browser memory. They are not written to browser storage or uploaded. Reloading or closing the page discards them; use ZIP exports to retain results. Memory use grows with the runs kept open, so delete sessions that are no longer needed. Store continues to save the editable form. If compiled metadata cannot be fetched, a completed run is still retained and its JSON explicitly records that version information is unavailable.
Reset and examples
Reset clears the editable sequences, interactions and uploaded files and restores prediction defaults (10 interactions per pair, expanded energy/seed columns). Evaluation defaults select all energy columns. These GUI defaults are written explicitly in JSON when they differ from the CLI; importing existing JSON still uses native defaults for omitted parameters. Inactive controls keep their edits in the form for switching modes, but their values are omitted from executed and stored settings. Previously computed sessions remain available. Empty FASTA fields show the short demonstration sequences as placeholders only. The Examples disclosure menu follows the Input Parameters label and lists only examples for the selected Prediction, Evaluation or Mutation Design task.
Maintainers edit gui/examples/index.json, whose entries provide a local JSON
filename, display name and description. Each listed example file is directly the
same native JSON parameter document used by Store and Load: a maintainer can set
up an input in the GUI, download it with Store and replace an example file without
adding an example-only wrapper. Three replaceable examples cover prediction,
evaluation and mutation design. Loading validates their settings and sequences
through the same importer and computation validator. Missing or invalid examples
show an error in the menu; they never overwrite the form.
Local FASTA files
Each strand has an Upload button and accepts a text-file drop into its textarea. Files are read locally (at most 1 MB), validated with the same FASTA checks as manual entry, and replace only that strand after successful validation. Prediction accepts up to 50 FASTA records per strand, each 2–5,000 nt; evaluation and mutation design require one record. The longest selected query × longest selected target must be at most 1,000,000. Names end at the first whitespace; ignored header descriptions produce a warning below the corresponding field. Both FASTA fields scroll horizontally and vertically. Invalid files leave the previous input intact. A later edit, reset, import or computation discards any pending file read, so delayed reads cannot replace newer input.
Validation of the PR #287 revision (2026-10-23)
- GCC 14 release and debug:
make tests -j2passed all nine API/CLI groups, includingrunParameterFile.sh. The existing out-of-tree CLI fixture harness required source data files linked into each build’stests/datadirectory. npm test --prefix gui: all 18 tests passed.- Emscripten 4.0.23 / ViennaRNA 2.7.2 / Boost 1.87.0: actual WASM build,
node scripts/wasm/smoke.mjsandnode scripts/wasm/smoke-protocol.mjspassed. Exported JSON reproduced selected CSV, signed/multiple sequences, additional outputs and reports byte for byte in fresh engines. scripts/wasm/test-browser.pypassed in Chromium and Firefox at a nested URL, covering blank startup/reset, both JSON examples, Load/Store round trips, FASTA file upload/drop, stale-read protection, task keyboard controls, JSON ZIP contents, result exploration, cancellation/recovery and mobile overflow. The desktop screenshot was inspected.- Embedded ViennaRNA energy-parameter text matched native file input. Existing
dependency-download and ViennaRNA-release tests, shell syntax, workflow YAML,
source-distribution contents, vendor checksums and
git diff --checkpassed.
Session follow-up validation (2026-10-23)
npm test --prefix gui: all 18 Node tests passed.scripts/wasm/test-browser.pypassed in Chromium and Firefox with real WASM at nested URLs. Session checks cover input/JSON restoration, task changes, signed indices, SHAPE text, CSV order, reports, independent filters/columns, edits/reset/imports, failed/aborted runs, keyboard selection, safe renaming, folded-session archives, deletion, stale file reads and page reload.- Desktop screenshots were inspected; session controls remain accessible at a 390 px viewport without document overflow.
node scripts/wasm/smoke-protocol.mjspassed native-reference checks and byte-identical archive replay. Browser checks reused the parent branch’s compiled Emscripten 4.0.23 / ViennaRNA 2.7.2 assets with their original metadata; this follow-up changes no C++ code or worker protocol.- A fresh GCC 14 release build passed
make tests -j2: all nine native API/CLI groups passed. Tracked fixtures were linked into the out-of-tree build’stests/datadirectory for the existing CLI harness. - Static staging (including the new session module and engine digest checks),
shell syntax and
git diff --checkpassed.
PR #299 review validation (2026-10-24)
npm test --prefix gui: all 20 tests passed, including FASTA limits, header warnings, complete column grouping and explicit browser-default JSON replay.scripts/wasm/test-browser.pypassed with real WASM in Chromium and Firefox. It covers the reordered panels, aligned controls, shared accessibility flags, seed/accessibility/helix modes, inactive values, explicit-seed Load/Store, group selection, FASTA scrolling/warnings and result header/name selection, plus the existing prediction/evaluation, ZIP, abort and session checks.- Desktop and 390 px mobile screenshots were inspected. All seven panels have no document overflow; table contents retain their own horizontal scrolling.
node scripts/wasm/smoke-protocol.mjs <staged-engine>passed native-reference checks and byte-identical JSON archive replay. The unchanged engine uses the parent branch’s Emscripten 4.0.23 / ViennaRNA 2.7.2 assets and original metadata.- A fresh GCC 14 release build passed
make tests -j2: all nine API/CLI groups. Existing CLI fixtures were linked into the out-of-treetests/datadirectory. - Static staging with engine digest validation, JavaScript/Python syntax checks,
shell syntax and
git diff --checkpassed.