Skip to main content

Code abstraction of objects (galaxies) in simulations.

Project description

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.

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

swiftgalaxy-3.0.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

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

swiftgalaxy-3.0.1-py3-none-any.whl (82.3 kB view details)

Uploaded Python 3

File details

Details for the file swiftgalaxy-3.0.1.tar.gz.

File metadata

  • Download URL: swiftgalaxy-3.0.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for swiftgalaxy-3.0.1.tar.gz
Algorithm Hash digest
SHA256 6cfed99ddf0f70d0ad2b30bc93f0915fb49bf28fd028b377078a20fa97061920
MD5 0bf66065b5d85eedf87c61ed1cdcd221
BLAKE2b-256 21a0644af63af4d30c6f4906468bd61209107e9e323943522287e42d33faa7b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for swiftgalaxy-3.0.1.tar.gz:

Publisher: python-publish.yml on SWIFTSIM/swiftgalaxy

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

File details

Details for the file swiftgalaxy-3.0.1-py3-none-any.whl.

File metadata

  • Download URL: swiftgalaxy-3.0.1-py3-none-any.whl
  • Upload date:
  • Size: 82.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for swiftgalaxy-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25d1e5c8ce3ac7741e0ef6a6a643339918c23be2e3750fb55aaa59e7b665e37d
MD5 201e9762eebb9f9448ef50631eb03b07
BLAKE2b-256 9c4e21b55c0afb5ee345487a3cd2358d8425b6180b3abd688618f110eada7907

See more details on using hashes here.

Provenance

The following attestation bundles were made for swiftgalaxy-3.0.1-py3-none-any.whl:

Publisher: python-publish.yml on SWIFTSIM/swiftgalaxy

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