stimela-ninja¶
Stimela 3.0 – a simple but flexible framework for reproducible radio astronomy pipelines.
A spiritual successor to Stimela classic, built around the same core philosophy (see Design philosophy for the full rationale). Recipes are plain Python: a step is a function call, and a step’s output is a Python value you wire into the next call. There is no YAML expression/substitution language, no alias-propagation system, and no stacked config libraries – control flow is just Python, and it doesn’t need reinventing.
Note
Early scaffolding. The interfaces documented here are real and tested
(pytest), but the project is not yet ready to run real pipelines.
from pydantic import BaseModel
from shinobi import Cab, step
class ImageInputs(BaseModel):
ms: str = "obs.ms"
prefix: str = "img"
wsclean = Cab(
name="wsclean",
command="wsclean",
image="quay.io/stimela/wsclean:latest",
inputs_model=ImageInputs,
)
@step(wsclean, backend="native")
def image(ctx):
return ctx.run()
$ ninja run myrecipe.py:image --ms data.ms --prefix out
Getting started
Using ninja
- Command-line interface
- Global options
- Targets
ninja run– run a targetninja replay– reproduce a recorded runninja cab– inspect a cab schema by fileninja cabs– look up installed cabs by nameninja download– fetch cab definitionsninja compile– offload a recipeninja clean– remove runtime artifactsninja status– check a detached runninja runs– list every detached runninja logs– read a detached run’s outputninja version– print the version
- Offloading to a cluster
Reference
Project