Skip to content

Runtime Operations

Operating scientific software means preserving the reasoning around a run, not merely obtaining a zero exit status. These guides connect environment, inputs, method choice, execution, diagnostics, artifacts, and review.

flowchart LR
    install["Install and identify<br/>versions"] --> prepare["Validate inputs<br/>and assumptions"]
    prepare --> execute["Execute native method<br/>or adapter"]
    execute --> inspect["Inspect diagnostics<br/>and sensitivity"]
    inspect --> preserve["Preserve manifests<br/>and review artifacts"]

Start By Outcome

Outcome Guide
create a reliable environment Installation and setup
move from input data to a reviewable result Common workflows
run raw sequences through alignment, trimming, inference and support Sequence-to-tree study
fit comparative regression and reconstruct discrete history Comparative and ancestral study
compare two tree topologies under an explicit population Topology comparison study
hand structured analysis into a linked human review view Analysis report handoff
run owned maximum-likelihood inference Native maximum-likelihood workflows
run a supported Bayesian DNA path Native Bayesian workflows
interpret benchmark records Native benchmark review
understand what automation cannot decide Operational boundaries

Read A Guide At Three Levels

Every operational guide separates three records that are easy to collapse:

Level Owns Completion question
execution programs, arguments, environment, process state, and native files did the declared computation run as identified?
scientific result admitted population, estimand, model, diagnostics, exclusions, and structured values is the result interpretable for the declared question?
claim bounded statement, observation population, comparison rule, verdict, and freshness does governed evidence support the exact statement?

A complete execution can yield a scientifically rejected result. A valid scientific result can exist without a parity or Evidence Book claim. A claim can become stale while the historical execution remains reconstructable. Carry all three identities when the run will be cited; do not use one status as shorthand for the others.

Establish The Run Identity First

Before selecting a model, record the input set and the runtime that will own the result:

bijux-phylogenetics --version
bijux-phylogenetics env inspect --json
bijux-phylogenetics inspect dataset/tree.nwk --json
bijux-phylogenetics alignment validate-input dataset/alignment.fasta --json

The last two commands are independent intake checks; use only the objects present in the analysis. For trait work, validate the tree–table join and retain the reconciliation output before fitting a model. For external engines, capture executable discovery and version output before execution.

Follow The Operational State Machine

stateDiagram-v2
    [*] --> Intake
    Intake --> Refused: invalid identity or assumptions
    Intake --> Ready: validated inputs and configuration
    Ready --> Running
    Running --> Partial: some declared components unavailable
    Running --> Failed: computation or infrastructure failure
    Running --> Complete: required outputs and diagnostics present
    Partial --> Review
    Failed --> Review
    Complete --> Review
    Refused --> Review

Review does not mean success. It means that the terminal state, diagnostics, and output denominator are preserved well enough to understand what happened.

Select One Accepted Execution

Retries, alternate models, and sensitivity runs form branches. They must not write into a shared result identity and later appear to be one uninterrupted successful execution.

flowchart LR
    parent["Validated inputs<br/>and declared question"]
    first["Execution A<br/>terminal record"]
    retry["Execution B<br/>changed seed or recovery"]
    alternate["Execution C<br/>changed model or data"]
    decision["Acceptance decision<br/>selected scope and reason"]

    parent --> first --> decision
    parent --> retry --> decision
    parent --> alternate --> decision

The acceptance decision identifies every candidate execution, the scientific differences among them, the selected record, the rule used to select it, and the conclusions excluded by failed or rejected candidates. A retry with identical identity may demonstrate recoverability; a changed seed, model, engine, tolerance, input, or incomplete-run policy is a new branch.

Preserve non-selected branches when they affect failure rates, sensitivity, search coverage, or the credibility of the selection rule. Deleting an unfavorable attempt changes the denominator and is not operational cleanup.

The Operational Contract

A defensible run records:

  • installed runtime and, where applicable, external-engine versions;
  • immutable or checksummed input identities;
  • taxon reconciliation and validation outcomes;
  • model, partition, search, sampling, and seed configuration;
  • warnings, convergence state, support, uncertainty, or sensitivity diagnostics;
  • a declared output inventory and the command or call that produced it.

The exact fields vary by method. The invariant is that a reviewer should not have to guess which assumptions created the result.

Native And External Execution

Native workflows fail within the Python runtime and can return rich diagnostic state directly. Adapter workflows add executable discovery, subprocess exit, captured stdout/stderr, output parsing, and engine-version provenance. Plan for those additional failure and reproducibility boundaries.

Reproducibility Levels

Level What it establishes
command recorded invocation can be inspected
environment recorded software identity is known
inputs and configuration fixed the run can be reconstructed
deterministic or seeded replay passes the declared execution reproduces within its contract
reference or evidence checks pass bounded comparison claims gain additional support

Do not collapse these levels into “reproducible.” State which one applies.

Before Interpretation

Review validation warnings, optimizer or sampler diagnostics, support and uncertainty, missing-data behavior, taxon coverage, and sensitivity to material choices. A result object existing is an execution fact; it is not an automatic scientific verdict.

Use a refusal or incomplete status as information. A taxon mismatch, missing engine, unconverged optimizer, low effective sample size, incomplete support replicates, or absent required artifact should stop the corresponding claim. Changing presentation or omitting the failed check does not make the run complete.

Minimum Handoff Record

Preserve enough state for a second person to answer these questions without terminal history:

  • Which exact inputs and taxa were analyzed?
  • Which runtime and external-engine versions executed?
  • Which model, partitions, transformations, priors, costs, and seeds applied?
  • Which diagnostics passed, warned, failed, or remained unavailable?
  • Which files are canonical machine output and which are presentations?
  • Which comparison or Evidence Book claim, if any, supports interpretation?

Generated References

The exhaustive CLI surface and generated parts of common workflows are lookup references. Use this operations section to decide why and how to run; use generated references to confirm exact arguments and available methods.