Migrating From R-STILT#

R-STILT organizes projects around R functions, the run_stilt.r script, and filesystem conventions. PYSTILT expresses the same broad ideas through Python classes, config.yaml, and a output simulation index.

R-STILT concept

R-STILT API

PYSTILT equivalent

Project initialization

stilt_init(project_path)

stilt init or stilt.Model(project=...)

Run controls

run_stilt.r variables

stilt.ModelConfig fields

Meteorology

met_directory, met_file_format, met_file_tres

stilt.MetConfig in ModelConfig.mets

Receptors

receptor data.frame

stilt.PointReceptor / stilt.ColumnReceptor / stilt.MultiPointReceptor or stilt.read_receptors()

Footprint grid

xmn, xmx, ymn, ymx, xres, yres

stilt.Grid inside stilt.FootprintConfig

Parallel execution

slurm=TRUE and scheduler options

execution.backend: slurm plus executor config

Before-footprint transform

callback hooks in R

FootprintConfig.transforms or runtime particle transforms

Trajectory output

R serialized trajectory objects

Parquet trajectory files

Footprint output

NetCDF footprint outputs

NetCDF footprint outputs with output per-name status

Simulation identity

timestamp plus location string

<met>_<YYYYMMDDHHMM>_<location_id>

Key differences#

  • configuration is validated before execution

  • project, output, and compute roots can be separate

  • output status and reruns are first-class rather than incidental

  • local, Slurm, and Kubernetes execution share one runtime model

Practical advice#

  • Port one receptor family at a time.

  • Start with one met stream and one footprint.

  • Treat config.yaml as your migration boundary.

  • Validate parity on a few representative receptors before scaling out.