Skip to main content
Banner with logo showing a swift in a spiral and the text SWIFTGalaxy.

Python Version from PEP 621 TOML PyPI - Version JOSS doi:10.21105/joss.09278 pyOpenSci Peer-Reviewed ascl:2505.002 Project Status: Active – The project has reached a stable, usable state and is being actively developed. Zenodo DOI Build Status Documentation Status CodeCov status Ruff

SWIFTGalaxy is an open-source astrophysics module that extends SWIFTSimIO tailored to analyses of particles belonging to individual galaxies simulated with SWIFT. It inherits from and extends the functionality of the SWIFTDataset. It understands the content of halo catalogues (supported: Velociraptor, Caesar, SOAP) and therefore which particles belong to a galaxy or other group of particles, and its integrated properties. The particles occupy a coordinate frame that is enforced to be consistent, such that particles loaded on-the-fly will match e.g. rotations and translations of particles already in memory. Intuitive masking of particle datasets is also enabled. Utilities to make working in cylindrical and spherical coordinate systems more convenient are also provided. Finally, tools to iterate efficiently over multiple galaxies are also provided.

Installation is as simple as pip install swiftgalaxy.

To install optional dependencies to support Velociraptor catalogues use pip install swiftgalaxy[velociraptor]. For Caesar support use:

pip install git+https://github.com/dnarayanan/caesar.git

No additional dependencies are needed for reading SOAP catalogues. If you want to generate example input files for SOAP, you should install:

pip install git+https://github.com/SWIFTSIM/soap.git

Once installed, creating a SWIFTGalaxy object to get started with analysis is simple! For instance, for a SWIFT simulation with a SOAP-format halo catalogue (an example - 300 MB - will be automatically downloaded):

from swiftgalaxy import SWIFTGalaxy, SOAP
from swiftgalaxy.demo_data import web_examples

sg = SWIFTGalaxy(
    web_examples.virtual_snapshot,
    SOAP(web_examples.soap, soap_index=0)
)

# access data for particles belonging to the galaxy:
sg.gas.temperatures

# access integrated properties from the halo catalogue
sg.halo_catalogue.spherical_overdensity_200_crit.soradius

# automatically generated spherical/cylindrical coordinates:
sg.gas.spherical_coordinates.r

# consistent coordinate transformations of all particles, even those not loaded yet:
from scipy.spatial.transform import Rotation
sg.rotate(Rotation.from_euler("x", 90, degrees=True))

# compatible with swiftsimio visualisation:
import numpy as np
import unyt as u
from swiftsimio import cosmo_array
from swiftsimio.visualisation import project_gas
import matplotlib.pyplot as plt
img = project_gas(
    sg,
    periodic=False,
    resolution=256,
    region=cosmo_array(
        [-30, 30, -30, 30],
        u.kpc,
        comoving=True,
        scale_factor=sg.metadata.a,
        scale_exponent=1
    ),
)
plt.imsave("eagle6_galaxy.png", np.log10(img.T), origin="lower", cmap="inferno")
https://github.com/SWIFTSIM/swiftgalaxy/raw/main/eagle6_galaxy.png

Examples

More usage examples can be found in the examples folder on github.

Citing SWIFTGalaxy

If your use of SWIFTGalaxy leads to a publication, please cite the JOSS paper (ADS listing). You may also cite the swiftgalaxy entry in the ASCL (indexed on ADS). Ideally specify the version used (Zenodo DOI, git commit ID and/or version number) and link to the github repository.

@ARTICLE{2025JOSS...10.9278O,
    author = {{Oman}, Kyle A.},
    title = "{SWIFTGalaxy: a Python package to work with particle groups from SWIFT simulations}",
    journal = {The Journal of Open Source Software},
    keywords = {astronomy, simulations},
    year = 2025,
    month = oct,
    volume = {10},
    number = {114},
    eid = {9278},
    pages = {9278},
    doi = {10.21105/joss.09278},
    adsurl = {https://ui.adsabs.harvard.edu/abs/2025JOSS...10.9278O},
    adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

@MISC{
    2025ascl.soft05002O,
    author = {{Oman}, Kyle A.},
    title = "{swiftgalaxy}",
    keywords = {Software},
    howpublished = {Astrophysics Source Code Library, record ascl:2505.002},
    year = 2025,
    month = may,
    eid = {ascl:2505.002},
    pages = {ascl:2505.002},
    archivePrefix = {ascl},
    eprint = {2505.002},
    adsurl = {https://ui.adsabs.harvard.edu/abs/2025ascl.soft05002O},
    adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Please also consider the citations requested for SWIFTSimIO.

Community

Code contributions are very welcome! A good place to start is the contributing guide and how to set up a development environment.

SWIFTGalaxy is licensed under GPL-3.0 and community members are expected to abide by the code of conduct.

Metadata

Release files for swiftgalaxy 3.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for swiftgalaxy 3.0.2
File Size Uploaded
swiftgalaxy-3.0.2.tar.gz 2.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for swiftgalaxy 3.0.2
File Interpreter ABI Platform
swiftgalaxy-3.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / swiftgalaxy-3.0.2.tar.gz

Download URL swiftgalaxy-3.0.2.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
9f45914b41b6a1b08d10036f703365356a5c3d458b86fa506d6e7928e372acba
BLAKE2b-256 checksum
How to use checksums
e80db117ceac1c2bca7860ca9201a1aacd60f55c148aa20aea7a7aa1bcf3d37f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 5, 2026.

Transparency log

Release files / swiftgalaxy-3.0.2-py3-none-any.whl

Download URL swiftgalaxy-3.0.2-py3-none-any.whl
Size 83.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
57e8ab4fac45112fec7f26810ef3f56158881fe70ad0e26a8abc73d003356ef4
BLAKE2b-256 checksum
How to use checksums
9457853536c80aa439aeb7e444e36f40ddb69a2771995eb316d0f4d18a372825
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.0.2 This release

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

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