Skip to main content

Jarvis-HEP-Sampler

Jarvis-HEP-Sampler is the plug-in SDK for user-defined samplers in the Jarvis ecosystem.

A user writes a sampler as one Python file, loads it once, and from then on uses it in a task card exactly like a built-in method. No Jarvis-HEP source code is changed. The plug-in's points go through the same Redis queue, logging and monitor as built-in samplers. The sampler-enabled HEP branch binds each scan to an exact source snapshot and checks scientific settings before resume. Project packages include the source and its full hash; fetch verifies it and prints a load command.

Jarvis sampler init MyLatinHypercube       # fixed template -> ./MyLatinHypercube.py
#   edit draw() (and optionally OPTIONS_SCHEMA)
Jarvis sampler check MyLatinHypercube.py   # optional offline check, no Redis
Jarvis sampler load MyLatinHypercube.py    # snapshot into ~/.jarvis/samplers; reloading replaces it
Jarvis run task.yaml                     # Sampling.Method: MyLatinHypercube

The Jarvis sampler commands are part of Jarvis-HEP and use this package. They are available in the sampler-enabled Jarvis-HEP development branch. The SDK also supports offline Python use (see Python API).

Scope

Jarvis-HEP-Sampler owns the plug-in format:

  • the fixed template
  • the PLUGIN metadata rules and method-name rule
  • loading a plug-in file
  • the user registry in ~/.jarvis/samplers/
  • the deterministic random streams
  • the output contract (shape, real, finite, inside [0, 1])
  • the log facade handed to plug-ins
  • the offline driver and conformance checks

Jarvis-HEP owns the runtime:

  • the Jarvis sampler CLI
  • task-card validation
  • the run preflight
  • mapping unit-cube points to physical parameters, and selection
  • Sample UUIDs, Redis, Workers and the Archiver
  • checkpoints and resume
  • the sampler log, telemetry and monitor
  • Jarvis man and project packing

This package never imports Jarvis-HEP, Redis or Portal.

Complete package installation

Version 1.0.0. Install from PyPI:

python -m pip install "Jarvis-HEP-Sampler==1.0.0"

From this repository:

python -m pip install .

Dependencies: NumPy and jsonschema. A sampler-enabled Jarvis-HEP installs this SDK with Jarvis-HEP-Sampler>=1.0.0,<2.

The end-to-end user tutorial lives in Jarvis-Books, in the TeX manual chapter Jarvis-HEP-Sampler: Implementing Your Own Sampler (TeX/Jarvis-HEP-V2 manual).

A plug-in

"""Latin hypercube design: one point per stratum in every variable."""

import numpy as np

PLUGIN = {
    "api_version": 1,
    "method": "MyLatinHypercube",
    "version": "0.1.0",
    "profile": "independent",
}

OPTIONS_SCHEMA = {  # optional
    "type": "object",
    "properties": {"centered": {"type": "boolean"}},
    "additionalProperties": False,
}


def prepare(setup):
    rng = setup.rng()
    perms = np.stack([rng.permutation(setup.point_number) for _ in range(setup.dimension)])
    return {"perms": perms, "centered": bool(setup.options.get("centered", False))}


def draw(context, rng, plan):
    strata = plan["perms"][:, context.candidate_index]
    offset = 0.5 if plan["centered"] else rng.random(context.dimension)
    return (strata + offset) / context.point_number
Sampling:
  Method: MyLatinHypercube
  Variables:
    - name: mass
      distribution: {type: Flat, parameters: {min: 100.0, max: 1000.0}}
  Bounds:
    seed: 7
    point_number: 10000
    centered: false

The full contract is in Plug-in authoring.

A complete runnable card is provided in examples/MyLatinHypercube.task.yaml. It uses Jarvis-HEP's bundled Eggbox demonstration operator:

Jarvis sampler check examples/MyLatinHypercube.py --card examples/MyLatinHypercube.task.yaml
Jarvis sampler load examples/MyLatinHypercube.py
Jarvis validate examples/MyLatinHypercube.task.yaml
Jarvis check examples/MyLatinHypercube.task.yaml
Jarvis run examples/MyLatinHypercube.task.yaml

Jarvis sampler check is the offline file check and does not require load. Jarvis check is the calculator smoke: its identity, bound source and checkpoint stay under DATABASE/test and checkpoints/<scan>/<Method>/check/, and the formal scan's science database and resume checkpoint stay in place.

Reloading the same method updates future scans. Removing the registration preserves an existing scan's bound source and its normal Jarvis run ... --resume workflow.

Python API

from jarvis_hep_sampler import SamplerRegistry, write_template
from jarvis_hep_sampler.testing import check_plugin, run_offline

path = write_template("MyLatinHypercube")                  # Jarvis sampler init
report = check_plugin(path, dimension=2, options={})     # Jarvis sampler check
for name, result in report.rows():
    print(f"{name:14} {result}")

run = run_offline(path, variable_names=["mass", "coupling"], point_number=1000, seed=7)
print(run.points.shape, run.stop_reason)

SamplerRegistry().load(path)                             # Jarvis sampler load

Documentation

Status

Alpha. API version 1 supports the independent execution contract; generational metadata reserves a future profile, whose running state/feedback contract remains under design. This release runs independent plug-ins; generational (feedback samplers) arrives in a later release.

License

MIT. See LICENSE. Copyright (c) 2026 Pengxuan Zhu.

Metadata

Release files for Jarvis-HEP-Sampler 1.0.0

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-Sampler 1.0.0
File Size Uploaded
jarvis_hep_sampler-1.0.0.tar.gz 52.4 kB Details

Built distribution (wheel)

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

Total release size: 90.1 kB

Release files / jarvis_hep_sampler-1.0.0.tar.gz

Download URL jarvis_hep_sampler-1.0.0.tar.gz
Size 52.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a47012c7d2d676fe23ad9a0d77d97f79f4db33cbdf5351759a2d40748b2d9261
BLAKE2b-256 checksum
How to use checksums
9b94c5de5aae5b32a7ee0a7421298888ec8d8e156d500f827f4f8d4c28727a53
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_sampler-1.0.0-py3-none-any.whl

Download URL jarvis_hep_sampler-1.0.0-py3-none-any.whl
Size 37.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
13b0ea49644dd85fb94b5b8ff7501eed4d13f569e59e0df9a4ec9f75187d22e8
BLAKE2b-256 checksum
How to use checksums
56c3bd4c3088125eaf17738e0bd5ebce3ce392d962de2265df4e10720a7e6feb
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

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

This release

1.0.0 This release

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