Skip to main content

The modular galaxy image simulation toolkit, but in JAX

Project description

JAX-GalSim

JAX port of GalSim, for parallelized, GPU accelerated, and differentiable galaxy image simulations.

Contributor Covenant Python package Ruff pre-commit.ci status CodSpeed Badge

Disclaimer: This project is still in an early development phase, please use the reference GalSim implementation for any scientific applications.

Objective and Design

The goal of this library is to reimplement GalSim functionalities in pure JAX to allow for automatic differentiation, GPU acceleration, and batched computations.

Guiding Principles

  • Strive to be a drop-in replacement for GalSim, i.e. provide a close match to the GalSim API.
  • Each function/feature will be tested against the reference GalSim implementation.
  • This package will aim to be a subset of GalSim (i.e. only contains functions with a reference GalSim implementation).
  • Implementations should be easy to read and understand.
  • Code should be pip-installable on any machine, no compilation required.
  • Any notable differences between the JAX and reference implementations will be clearly documented.

Notable Differences

  • JAX arrays are immutable. Thus, in-place operations on images are not possible and a new image is returned instead. Also, the RNG classes cannot fill arrays and instead return new arrays.
  • JAX arrays do not support all the kinds of views that numpy arrays support. This means that some operations that work in GalSim may not work in JAX-GalSim (e.g., real views of complex images).
  • JAX-GalSim uses a different random number generator than GalSim. This leads to different results in terms of both the generated random numbers and in terms of which RNGs have stable discarding.

Contributing

Everyone can contribute to this project, please refer to the CONTRIBUTING.md document for details.

In short, to interact with the project you can:

Issues marked with contributions welcome or good first issue are particularly good places to start. These are great ways to learn more about the inner workings of GalSim and how to code in JAX.

Current GalSim API Coverage

JAX-GalSim has implemented 22.5% of the GalSim API. See the list below for the supported APIs.

  • galsim.Add
  • galsim.AffineTransform
  • galsim.Angle
  • galsim.AngleUnit
  • galsim.BaseDeviate
  • galsim.BaseNoise
  • galsim.BaseWCS
  • galsim.BinomialDeviate
  • galsim.Bounds
  • galsim.BoundsD
  • galsim.BoundsI
  • galsim.Box
  • galsim.CCDNoise
  • galsim.CelestialCoord
  • galsim.Chi2Deviate
  • galsim.Convolution
  • galsim.Convolve
  • galsim.Cubic
  • galsim.Deconvolution
  • galsim.Deconvolve
  • galsim.Delta
  • galsim.DeltaFunction
  • galsim.DeviateNoise
  • galsim.Exponential
  • galsim.FitsHeader
  • galsim.FitsWCS
  • galsim.GSFitsWCS
  • galsim.GSObject
  • galsim.GSParams
  • galsim.GalSimBoundsError
  • galsim.GalSimConfigError
  • galsim.GalSimConfigValueError
  • galsim.GalSimDeprecationWarning
  • galsim.GalSimError
  • galsim.GalSimFFTSizeError
  • galsim.GalSimHSMError
  • galsim.GalSimImmutableError
  • galsim.GalSimIncompatibleValuesError
  • galsim.GalSimIndexError
  • galsim.GalSimKeyError
  • galsim.GalSimNotImplementedError
  • galsim.GalSimRangeError
  • galsim.GalSimSEDError
  • galsim.GalSimUndefinedBoundsError
  • galsim.GalSimValueError
  • galsim.GalSimWarning
  • galsim.GammaDeviate
  • galsim.Gaussian
  • galsim.GaussianDeviate
  • galsim.GaussianNoise
  • galsim.Image
  • galsim.ImageCD
  • galsim.ImageCF
  • galsim.ImageD
  • galsim.ImageF
  • galsim.ImageI
  • galsim.ImageS
  • galsim.ImageUI
  • galsim.ImageUS
  • galsim.Interpolant
  • galsim.InterpolatedImage
  • galsim.JacobianWCS
  • galsim.Lanczos
  • galsim.Linear
  • galsim.Moffat
  • galsim.Nearest
  • galsim.OffsetShearWCS
  • galsim.OffsetWCS
  • galsim.PhotonArray
  • galsim.Pixel
  • galsim.PixelScale
  • galsim.PoissonDeviate
  • galsim.PoissonNoise
  • galsim.Position
  • galsim.PositionD
  • galsim.PositionI
  • galsim.Quintic
  • galsim.Sensor
  • galsim.Shear
  • galsim.ShearWCS
  • galsim.SincInterpolant
  • galsim.Spergel
  • galsim.Sum
  • galsim.TanWCS
  • galsim.Transform
  • galsim.Transformation
  • galsim.UniformDeviate
  • galsim.VariableGaussianNoise
  • galsim.WeibullDeviate
  • galsim.bessel.j0
  • galsim.bessel.kv
  • galsim.bessel.si
  • galsim.fits.closeHDUList
  • galsim.fits.readCube
  • galsim.fits.readFile
  • galsim.fits.readMulti
  • galsim.fits.write
  • galsim.fits.writeFile
  • galsim.fitswcs.CelestialWCS
  • galsim.integ.int1d
  • galsim.noise.addNoise
  • galsim.noise.addNoiseSNR
  • galsim.random.permute
  • galsim.utilities.g1g2_to_e1e2
  • galsim.utilities.horner
  • galsim.utilities.printoptions
  • galsim.utilities.unweighted_moments
  • galsim.utilities.unweighted_shape
  • galsim.wcs.EuclideanWCS
  • galsim.wcs.LocalWCS
  • galsim.wcs.UniformWCS

Note: The coverage list is generated automatically by the scripts/update_api_coverage.py script. To update it, run python scripts/update_api_coverage.py from the root of the repository.

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

jax_galsim-2026.2.0.tar.gz (253.9 kB view details)

Uploaded Source

Built Distribution

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

jax_galsim-2026.2.0-py3-none-any.whl (173.2 kB view details)

Uploaded Python 3

File details

Details for the file jax_galsim-2026.2.0.tar.gz.

File metadata

  • Download URL: jax_galsim-2026.2.0.tar.gz
  • Upload date:
  • Size: 253.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jax_galsim-2026.2.0.tar.gz
Algorithm Hash digest
SHA256 234adbca30bf1c36bdbd01bb48f5dfc2254e9ff5891ad728ca479678e103b3bb
MD5 33962f2f5380f33dcab57e89316df5eb
BLAKE2b-256 3a34048d1ab179020b2fc5d2ac187ec1b53ac5806be8359ba4485ff30c0e7a32

See more details on using hashes here.

Provenance

The following attestation bundles were made for jax_galsim-2026.2.0.tar.gz:

Publisher: release.yml on GalSim-developers/JAX-GalSim

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

File details

Details for the file jax_galsim-2026.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for jax_galsim-2026.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ffa304d641be5db5546c2a5227f3eec545c49abbdf559cf8444c47d45aa7614e
MD5 19b2fc4f56a0dc2ef650706604a890c4
BLAKE2b-256 9185e23e25f65d0d2c393de11e840d9eacf5b3fa3f5020e96bc5390f535cb925

See more details on using hashes here.

Provenance

The following attestation bundles were made for jax_galsim-2026.2.0-py3-none-any.whl:

Publisher: release.yml on GalSim-developers/JAX-GalSim

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