Skip to main content

Jarvis-HEP V2

Jarvis-HEP V2 is a distributed runtime for high-energy-physics parameter scans. You describe a scan as a validated YAML task card; Jarvis generates parameter points, evaluates external calculators and/or Python operators in parallel, and archives observables, sample artifacts, logs, and run summaries.

The PyPI distribution is named Jarvis-HEP (current version 2.0.14). Its Python import package remains jarvishep2, and it exposes a single user-facing command: Jarvis.

What V2 provides

Capability V2 implementation
Distributed execution Redis-backed queue with Python spawn Workers
Parameter sampling Stable catalog: Random, Grid, Bridson, AdaptiveBridson, CSV, Dynesty, and MultiNest
HEP calculator integration Jarvis-HEP-Portal for calculator file I/O
Python operators Jarvis-Operas for registered operators and expressions
Reliability Checkpoints, resume, graceful shutdown, and per-sample failure artifacts
Observability Validation diagnostics, monitor snapshots, component logs, and performance summaries
Project workflow Scaffold, validate, run, package, fetch, and inspect standalone projects

The execution model is deliberately simple:

Task YAML → sampler → Redis → Workers → Archiver
                                      ├─ DATABASE/samples.hdf5
                                      ├─ SAMPLE/<bucket>/<uuid>/
                                      └─ logs/<scan>/ + run_summary.*

Installation

Requirements:

  • Python 3.10 or newer
  • Redis for distributed runs; V2 uses the local 127.0.0.1:6379 service

From PyPI:

python3 -m pip install Jarvis-HEP

If the short-lived jarvishep2 distribution was installed previously, remove it before installing V2 from Jarvis-HEP; both distributions provide the same jarvishep2 import package and should not be installed together:

python3 -m pip uninstall jarvishep2
python3 -m pip install --upgrade Jarvis-HEP

From a source checkout:

python3 -m pip install -e .

For development and tests, install the test tools separately:

python3 -m pip install -e .
python3 -m pip install "pytest>=7.0" "fakeredis>=2.0" "colorlog>=6.0"

Start Redis before a real scan. For example, on macOS:

brew install redis
brew services start redis
redis-cli ping       # PONG

On the first Jarvis command after installation, Jarvis checks whether a Redis-compatible server executable (redis-server, redis6-server, or valkey-server) is available. If it is missing, the command's normal output is followed by a one-time, OS-specific installation hint (written to stderr so JSON/stdout output remains usable). The hint is advisory only; Jarvis does not install operating-system packages automatically. Linux hints cover Debian/Ubuntu, Fedora/RHEL, Amazon Linux, Arch, openSUSE, Alpine, Gentoo, Void, NixOS and other package-manager families. The check marker is stored at ~/.jarvis/redis-install-check-v1.

The default install includes every Jarvis runtime dependency: the Redis Python client, msgpack, aiofiles, Textual Monitor, Jarvis-HEP-Portal, Jarvis-Operas, and JarvisPLOT. Jarvis does not publish optional dependency groups.

For the complete installation guide, Redis options, and project-packaging workflow, see INSTALL.md.

First run

The project scaffold includes a runnable Bridson + Operas example that does not need an external calculator:

Jarvis project create MyScan
cd MyScan

Jarvis validate bin/quickstart_bridson_operas.yaml
Jarvis run bin/quickstart_bridson_operas.yaml

The scaffold also contains calculator, CSV, Dynesty, and MultiNest examples. List the built-in examples with:

Jarvis man example

Task-card contract

V2 task cards use one closed, consistent vocabulary across validate, check, run, and man:

  • Required top-level blocks: Scan, Sampling, and EnvReqs.
  • Declare at least one execution backend: Calculators or Operas.
  • Put method-specific sampler settings under Sampling.Bounds and use lower snake_case keys.
  • Put V2 runtime settings such as worker count and checkpoint (heartbeat in seconds) under EnvReqs.V2.
  • Use Jarvis check TASK.yaml for the fixed-point calculator smoke test.
  • Outputs are written to the project output tree; cleanup.strategy and archiver.handoff are not V2 task-card interfaces.

A card starts with this shape:

Scan:
  name: my_scan

Sampling:
  Method: Random
  Bounds:
    point_number: 100
    seed: 7
  Variables:
    - name: x
      distribution:
        type: Flat
        parameters: {min: 0.0, max: 1.0}

EnvReqs:
  V2:
    workers: 2

Operas:
  Modules:
    - name: my_operator
      operator: my_package.my_function

Use the generated manuals instead of guessing field names:

Jarvis man                         # interactive YAML authoring guide
Jarvis man --json                  # structured output for tooling and agents
Jarvis man sampler                 # sampler catalog
Jarvis man sampler.ToyMCMC         # reference independent-chain MCMC Bounds
Jarvis man sampler.mcmc-runtime    # MCMC multi-chain Redis pipeline design
Jarvis man yaml.EnvReqs.V2         # one YAML section
Jarvis man calculator.execution.output --type JSON

Jarvis validate performs schema and semantic checks without starting Redis or Workers. It is the recommended gate before run.

CLI workflow

Jarvis validate TASK.yaml          # validate only
Jarvis check TASK.yaml             # fixed-point calculator smoke test
Jarvis run TASK.yaml               # execute a distributed scan
Jarvis run TASK.yaml --resume      # resume from a checkpoint
Jarvis convert TASK.yaml           # refresh DATABASE/samples.csv from HDF5
Jarvis monitor                     # read one live monitor snapshot
Jarvis ps                          # list Jarvis process groups
Jarvis kill --yes                  # terminate selected runtime processes
Jarvis --refs                      # print framework and sampler references

Additional integrations are available through native subcommands:

Jarvis project create MyScan
Jarvis project browse
Jarvis project fetch Eggbox
Jarvis portal man
Jarvis operas list
Jarvis gen-plot-yaml TASK.yaml
Jarvis plot path/to/plot.yaml      # Jarvis-PLOT is installed by default

Use Jarvis COMMAND -h for command-specific options. Screen logging defaults to WARNING; use --console-level INFO, --debug, or --silence as needed. File logs remain available under logs/<scan>/.

Outputs

Set EnvReqs.V2.store_samples: false for large scans that only need DATABASE results (default: true). This disables SAMPLE directories, bucket packing and per-sample logs, including failure logs. Required @Sdir files and calculator IO copies use temporary scratch space and are removed after each sample; scalar observables, failure status, resume data and process-level logs remain. The switch overrides sample storage/packing settings and persistent save: true retention. Existing SAMPLE files are left untouched. See storage policy for details and limitations.

For a scan named my_scan, the project root typically contains:

outputs/my_scan/
├── DATABASE/
│   ├── samples.hdf5              # archived observables
│   └── samples.csv               # CSV snapshot after `Jarvis convert`
├── SAMPLE/
│   ├── 000001/<uuid>/             # per-sample files when retained
│   └── 000001.tar.gz              # packed sample bucket when enabled
├── run_summary.json
├── run_summary.csv
└── run_summary.txt

logs/my_scan/
├── core.log
├── sampler.log
├── archiver.log
└── worker-00.log ...

Checkpoints are stored under checkpoints/<scan>/<sampler>/state.pkl. Press Ctrl+C to stop a scan cleanly; Jarvis shuts down its Workers, Archiver, and any Redis process it manages.

Development

python3 -m pip install -e .
python3 -m pip install "pytest>=7.0" "fakeredis>=2.0" "colorlog>=6.0"
python3 -m pytest -q

The long-running AdaptiveBridson integration tests are skipped by default; run them explicitly with python3 -m pytest -q tests/test_adaptive_bridson.py when changing that sampler.

The long-running feedback-loop coverage in tests/test_ensemble_samplers.py is also skipped by default; run it explicitly for EnsembleMCMC/DEMCMC/PT changes:

python3 -m pytest -q tests/test_ensemble_samplers.py

The slow distributed acceptance gates in tests/test_distributed_acceptance.py are also skipped by default; run them explicitly when validating Worker/ Archiver performance:

python3 -m pytest -q tests/test_distributed_acceptance.py

tests/test_distributed_resume.py, tests/test_mcmc_sampler.py, and tests/test_worker_pool.py are also excluded from the default suite. They exercise interruption/checkpoint resume, multi-process sampler execution, and Worker calculator-pool concurrency; run the relevant file explicitly after changing those paths:

python3 -m pytest -q tests/test_distributed_resume.py
python3 -m pytest -q tests/test_mcmc_sampler.py
python3 -m pytest -q tests/test_worker_pool.py

tests/test_variable_distributions.py and tests/test_worker_failure.py are also excluded from the default suite while their V1-card/schema fixture and calculator-pool SIGKILL fixture are reconciled. Run either explicitly when working on those paths:

python3 -m pytest -q tests/test_variable_distributions.py
python3 -m pytest -q tests/test_worker_failure.py

Useful repository documentation:

V1 (jarvishep) is frozen and CLI-retired. V2 uses jarvishep2 and the Jarvis command; Jarvis2 is not installed.

Metadata

Release files for Jarvis-HEP 2.0.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Jarvis-HEP 2.0.14
File Size Uploaded
jarvis_hep-2.0.14.tar.gz 920.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Jarvis-HEP 2.0.14
File Interpreter ABI Platform
jarvis_hep-2.0.14-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / jarvis_hep-2.0.14.tar.gz

Download URL jarvis_hep-2.0.14.tar.gz
Size 920.7 kB
Tags Source
SHA-256 checksum
How to use checksums
30ac71f4be257159172723ff0c170fe1d06a490c6a13cc4a0ea3f1d56fc21e08
BLAKE2b-256 checksum
How to use checksums
f3c988f597d4a2a675ff12db69688b1a83ae5a20b25886cbdd549fd61785217f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / jarvis_hep-2.0.14-py3-none-any.whl

Download URL jarvis_hep-2.0.14-py3-none-any.whl
Size 804.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87dd438d47d404e9802a03c7a70f0376382bbfb838161c2d226b9a14480f43b1
BLAKE2b-256 checksum
How to use checksums
7926a3a2785f22e7dc2ac10ebb5d82b082b3ba528eddca2471643cef0bbe0406
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release history Release notifications | RSS feed

2.1.0

2 release files

2.0.17

2 release files

This release

2.0.14 This release

2 release files

2.0.13

2 release files

2.0.12

2 release files

2.0.11

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.22

2 release files

1.6.21

2 release files

1.6.20

2 release files

1.6.19

2 release files

1.6.18

2 release files

1.6.17

2 release files

1.6.13

2 release files

1.6.12

2 release files

1.6.11

2 release files

1.6.10

2 release files

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page