Skip to main content

GALFORM execution helper utilities

Project description

galform_execution

CI License: MIT

A Python-based utility to manage GALFORM N-body simulation submissions to SLURM on COSMA.

galform_execution automates the generation and submission of SLURM batch scripts for GALFORM runs. It handles environment setup, parameter injection into .input.ref files, and conditional post-processing (NETA, LUM_FUN, etc.), providing a robust and reproducible workflow for large-scale galaxy formation simulations.

Key Features

  • Dynamic Script Generation: Generates self-contained tcsh scripts with resolved simulation and model parameters.
  • Config-Driven: Manage simulations, models, and dust parameters via JSON configurations.
  • SLURM Optimized: Automatic job array support and remapping of high subvolume indices.
  • Robustness: Built-in retries with exponential backoff for transient scheduler errors.

Prerequisites

  • Environment: Access to the COSMA HPC cluster (Durham University).
  • Tooling: uv is recommended for fast installation and dependency management.

Installation

# Install the package and its dependencies directly from PyPI using uv
uv pip install galform_execution

For development installation from source:

git clone https://github.com/OscarHickman/galform_execution.git
cd galform_execution
uv pip install -e .

Quick Start

1. Identify your GALFORM directory

You need a compiled version of GALFORM with the standard directory structure (containing build/galform2, *.input.ref, etc.).

2. Preview a submission (Dry Run)

Check the generated SLURM script without submitting to the queue:

submit-galform-job /path/to/your/galform --nbody-sim Mill2 --model lc16 --iz 40 --nvol 1-64 --dry-run

3. Submit a job array

submit-galform-job /path/to/your/galform --nbody-sim Mill2 --model lc16 --iz 40 --nvol 1-64 --output-folder-name MyProject

Configuration

Configurations are stored in galform_execution/config/:

  • simulations/: JSON files defining N-body simulation parameters (tree paths, cosmology).
  • models.json: Maps model names to base input files and dust profiles.
  • redshift_lists/: Redshift mappings for various simulations.

Development

Running Tests

uv run pytest tests

Linting

uv run ruff check galform_execution

Citing this software

If you use galform_execution in your research, please cite it. GitHub will show a "Cite this repository" button (top-right of the repo page) once CITATION.cff is committed.

After connecting Zenodo (see below), each release gets a permanent DOI. Replace YOUR_ZENODO_DOI with the DOI minted on first release:

@software{hickman_galform_execution,
  author    = {Hickman, Oscar},
  title     = {galform\_execution},
  url       = {https://github.com/OscarHickman/galform_execution},
  doi       = {YOUR_ZENODO_DOI},
  license   = {MIT}
}

Setting up citation infrastructure

Zenodo (DOIs for every release) — already connected: Push a new version tag and the release workflow will create a GitHub Release, which Zenodo archives automatically and mints a DOI. Update CITATION.cff and this README with the DOI badge Zenodo provides.

Conda-forge:

  1. Get the sha256 of the PyPI source tarball:
    curl -s https://pypi.org/pypi/galform_execution/json \
      | python -c "import sys,json; d=json.load(sys.stdin); \
        [print(f['digests']['sha256']) for v in d['releases'].values() \
         for f in v if f['filename'].endswith('.tar.gz')]" | tail -1
    
  2. Paste it into recipe/meta.yaml.
  3. Fork conda-forge/staged-recipes, copy recipe/meta.yaml to recipes/galform_execution/meta.yaml, and open a PR.

License

Distributed under the MIT License. See LICENSE for more information.

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

galform_execution-0.1.7.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

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

galform_execution-0.1.7-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file galform_execution-0.1.7.tar.gz.

File metadata

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

File hashes

Hashes for galform_execution-0.1.7.tar.gz
Algorithm Hash digest
SHA256 a4afae29b53f16191a42242df6f4b2a6885b663b4a8d1b38035fbb9e6f97b7de
MD5 9ec04e6bc3569f52e374ac40277988c3
BLAKE2b-256 337fa543d0a2b70779ffa1ed895ac9f4999f5667e145162af5a1e80313fea4be

See more details on using hashes here.

Provenance

The following attestation bundles were made for galform_execution-0.1.7.tar.gz:

Publisher: publish.yml on OscarHickman/galform_execution

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

File details

Details for the file galform_execution-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for galform_execution-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7be277728e4c6e19820da98ce4255aa445757418b7f89a4768248179da00abad
MD5 2cd7a70ee555f545c90a0b0d7d42c44d
BLAKE2b-256 94af66a0fb8605a07620f0e2ec4fe96962f6852798830e417bb829130249b954

See more details on using hashes here.

Provenance

The following attestation bundles were made for galform_execution-0.1.7-py3-none-any.whl:

Publisher: publish.yml on OscarHickman/galform_execution

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