Skip to main content

Run, sweep, and analyze JuPedSim scenarios from the web-app JSON schema.

Project description

jupedsim-scenarios

Python toolkit for running, sweeping, and analyzing JuPedSim scenarios authored in the Web-Based JuPedSim editor.

Status

Alpha (0.3.0). Single-run (run_scenario), Monte Carlo sweeps (run_sweep — now multiprocess), and a jps-scenarios CLI are shipped. Restartable / resumable sweeps land in 0.4.0.

Install

pip install jupedsim-scenarios

For development from a clone:

pip install -e ".[dev]"

Single-run usage

from jupedsim_scenarios import Scenario, run_scenario

scenario = Scenario(
    raw=data_dict,                          # the JSON exported by the web app
    walkable_area_wkt=data_dict["walkable_area_wkt"],
    model_type="CollisionFreeSpeedModel",
    seed=42,
    sim_params=data_dict["config"]["simulation_settings"]["simulationParams"],
    source_path="my_scenario.json",
)
result = run_scenario(scenario, seed=42)
print(result.metrics["evacuation_time"])
df = result.trajectory_dataframe()
result.cleanup()

A higher-level load_scenario(path) is available for zipped exports (JSON + WKT file in the same archive or directory).

Monte Carlo sweep

from jupedsim_scenarios import load_scenario, run_sweep

base = load_scenario("faster_is_slower.zip")

sweep = run_sweep(
    base,
    axes={
        "v0":    [0.8, 1.2, 1.6, 1.8],
        "model": ["CollisionFreeSpeedModel", "AnticipationVelocityModel"],
    },
    apply={
        "v0":    lambda s, v: s.set_agent_params(0, desired_speed=v),
        "model": lambda s, v: s.set_model_type(v),
    },
    seeds=range(40, 50),
    output_dir="runs/",
)

df = sweep.to_dataframe()       # one row per (v0, model, seed) trial
print(df.groupby(["v0", "model"])["evacuation_time"].agg(["mean", "std"]))
sweep.cleanup()                 # delete the per-trial sqlite files

The library walks the cartesian product of the named axes, calls each axis's apply function on an isolated .copy() of the base scenario, runs the simulation, and tabulates the results. Anything the Scenario.set_* mutators can change is fair game for sweeping.

Pass workers=N (or workers=0 for one worker per CPU) to run trials in parallel:

sweep = run_sweep(base, axes=..., apply=..., seeds=range(40, 50), workers=4)

Mutations are applied in the calling process — only the resulting mutated Scenario crosses the process boundary, so user apply lambdas don't need to be picklable.

Command line

jps-scenarios run scenario.json --seed 42 --out trajectory.sqlite

Runs a single scenario and prints a one-line JSON summary (evacuation_time, agent counts, sqlite_file) to stdout. Useful in CI or scripted pipelines; notebook workflows should stay on the Python API.

Roadmap

Release Scope
0.1.0 Verbatim extraction of Scenario + run_scenario from web app.
0.2.0 run_sweep(scenario, axes={...}, seeds=...).
0.3.0 Multiprocess worker pool + jps-scenarios CLI.
0.3.1 Public aliases for helpers shared with Web-Based-Jupedsim.
0.3.2 First PyPI release (this release).
0.4.0 Restartable / resumable sweeps, persisted results.

License

MIT. See LICENSE.

Project details


Download files

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

Source Distribution

jupedsim_scenarios-0.3.2.tar.gz (47.4 kB view details)

Uploaded Source

Built Distribution

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

jupedsim_scenarios-0.3.2-py3-none-any.whl (45.3 kB view details)

Uploaded Python 3

File details

Details for the file jupedsim_scenarios-0.3.2.tar.gz.

File metadata

  • Download URL: jupedsim_scenarios-0.3.2.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jupedsim_scenarios-0.3.2.tar.gz
Algorithm Hash digest
SHA256 84d751bcf9ae8563608c4b79d63cfefffb8d7c510c6812d8b1e4f7809a714454
MD5 8d79f7d988a35d2702c8cab65333e9aa
BLAKE2b-256 605d2fcffe4c74890766f876a1d3279e6d7c467e0acce4d4021c6bc1796a078b

See more details on using hashes here.

Provenance

The following attestation bundles were made for jupedsim_scenarios-0.3.2.tar.gz:

Publisher: workflow.yml on PedestrianDynamics/jupedsim-scenarios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jupedsim_scenarios-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for jupedsim_scenarios-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 103b438b29fbaab5a782e13c97fc21666dce422a18c3262653703fa191f4d9c0
MD5 b4402e2951691fc648ac118ba7b6523f
BLAKE2b-256 16812a270c73b6a15b01e75cb9b615f6f737053fefbf1bfe01bb7f2d61a89193

See more details on using hashes here.

Provenance

The following attestation bundles were made for jupedsim_scenarios-0.3.2-py3-none-any.whl:

Publisher: workflow.yml on PedestrianDynamics/jupedsim-scenarios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page