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.5). 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[distributed]'

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[distributed]'

From a source checkout:

python3 -m pip install -e '.[distributed]'

For development and tests:

python3 -m pip install -e '.[distributed,dev]'

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 the current compatible releases of Jarvis-HEP-Portal, Jarvis-Operas, and the JarvisPLOT distribution (product name: Jarvis-PLOT). The optional extras are:

  • distributed: Redis, msgpack, and aiofiles
  • plot: compatibility alias for the default Jarvis-PLOT dependency (JarvisPLOT on PyPI)
  • dev: pytest, fakeredis, and colorlog

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 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

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 '.[distributed,dev]'
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 Ensemble/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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jarvis_hep-2.0.5.tar.gz (762.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jarvis_hep-2.0.5-py3-none-any.whl (675.6 kB view details)

Uploaded Python 3

File details

Details for the file jarvis_hep-2.0.5.tar.gz.

File metadata

  • Download URL: jarvis_hep-2.0.5.tar.gz
  • Upload date:
  • Size: 762.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for jarvis_hep-2.0.5.tar.gz
Algorithm Hash digest
SHA256 89baa92b62226dd32d379af4db4e29a16a33ca5eb1097f1ccf107021253bfe37
MD5 89fa4facc1f44dea177aa0697eef7054
BLAKE2b-256 6ef5303f09813a2710c73a60d660c5830c1fa6c8c514d30925c1b1a82c44bd5f

See more details on using hashes here.

File details

Details for the file jarvis_hep-2.0.5-py3-none-any.whl.

File metadata

  • Download URL: jarvis_hep-2.0.5-py3-none-any.whl
  • Upload date:
  • Size: 675.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for jarvis_hep-2.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 380ae2d525966e4ab7b14cf62a5326d426b176eeec292cfa2da8e2acccccc90d
MD5 0550ae9bd812f9a199d98164e4074755
BLAKE2b-256 c786a43f8a95722146d17e01fda25f1ffd910b74ce3c92a6dbbc723ef7d5eeef

See more details on using hashes here.

Release history Release notifications | RSS feed

2.0.12

2 files

2.0.11

2 files

2.0.10

2 files

2.0.9

2 files

2.0.8

2 files

2.0.7

2 files

2.0.6

2 files

This release

2.0.5 This release

2 files

2.0.4

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.7.5

2 files

1.7.4

2 files

1.7.3

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.25

2 files

1.6.24

2 files

1.6.23

2 files

1.6.22

2 files

1.6.21

2 files

1.6.20

2 files

1.6.19

2 files

1.6.18

2 files

1.6.17

2 files

1.6.16

2 files

1.6.15

2 files

1.6.14

2 files

1.6.13

2 files

1.6.12

2 files

1.6.11

2 files

1.6.10

2 files

1.6.9

2 files

1.6.8

2 files

1.6.7

2 files

1.6.6

2 files

1.6.5

2 files

1.6.4

2 files

1.6.3

2 files

1.6.2

2 files

1.6.1

2 files

1.6.0

2 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