CLI · Infrastructure
A Rust-based CLI for running NONMEM that automatically fingerprints every dataset, input, and output, so each run can be traced and reproduced.
Months after a NONMEM run, a reviewer asks a simple question: what dataset did this model use, and has anything changed since? Too often, the answer has to be pieced together from file names, folders, and memory.
Pharos is a modern, Rust-based command-line tool for running NONMEM that writes the answer down as it goes. Before each run, it records the model and dataset along with a fingerprint of each. When the run finishes, it records the start and end times, the exit status, and a fingerprint of each key output file. If a job is canceled or killed, it records that too. Every run folder holds a plain-JSON record of what went in and what came out, and any file can be re-fingerprinted with standard tools to confirm it hasn't changed. pharos tracks how models relate to each other. Copying a model to start the next iteration records where it came from, renames its output files, and can carry forward the previous run's final estimates, with optional jitter. A single command shows a project's lineage from base model to final, with each model's description, tags, and fingerprints.
pharos handles the day-to-day work as well. It catches control-stream errors before a run, down to the exact line and column. It runs batches in parallel, locally or on SLURM and SGE, and switches between NONMEM versions. Its summaries flag common problems like a failed covariance step or a parameter near its boundary. It runs on its own from the command line and pairs with hyperion for teams that work in R.
| Source | github.com/A2-ai/pharos |
|---|---|
| Type | CLI |
| Category | Infrastructure |
| License | MIT |