Skip to main content

CROISSANT: Rapid spherical harmonics-based simulator of visibilities

Project description

# CROISSANT: spheriCal haRmOnics vISibility SimulAtor iN pyThon

[![codecov](https://codecov.io/gh/christianhbye/croissant/branch/main/graph/badge.svg?token=pj1hkgcazd)](https://codecov.io/gh/christianhbye/croissant)

CROISSANT is a rapid visiblity simulator in python based on spherical harmonics. Given an antenna design and a sky model, CROISSANT simulates the visbilities - that is, the perceived sky temperature.

CROISSANT uses spherical harmonics to decompose the sky and antenna beam to a set of coefficients. Since the spherical harmonics represents a complete, orthormal basis on the sphere, the visibility computation reduces nicely from a convolution to a dot product.

In frequency domain, CROISSANT uses Discrete Prolate Spheroidal Sequences as a rapid linear interpolation scheme. Being linear, this interpolation can be done directly on the spherical harmonics coefficients, avoiding redoing the most expensive part of the computation.

Moreover, the time evolution of the simulation is very natural in this representation. In the antenna reference frame, the sky rotates overhead with time. To account for this rotation, it is enough to rotate the spherical harmonics coefficients. In the right choice of coordinates (that is, one where the z-axis is aligned with the rotation axis of the earth or the moon), this rotation is simply achieved by multiplying the spherical coefficient by a phase.

> New in version 4.0.0: CROISSANT is now fully compatible with JAX, provided in the interfeace croissant.jax. Spherical harmonics transforms (built on [s2ftt](https://github.com/astro-informatics/s2fft/)), coordinate system transforms, rotations, and the simulator itself can now all be differentiated using JAX autograd.

Overall, this makes CROISSANT a very fast visibility simulator. CROISSANT can therefore be used to simulate a large combination of antenna models and sky models - allowing for the exploration of a range of propsed designs before choosing an antenna for an experiment.

## Installation For the latest release, do pip install croissant-sim (see https://pypi.org/project/croissant-sim). Git clone this repository for the newest changes (this is under activate development, do so at your own risk!).

To access the JAX features, JAX must also be installed. See the [installation guide](https://github.com/google/jax#installation).

Note that croissant is only tested up to Python 3.12. Python 3.13 and newer are not yet supported.

## Demo Jupyter Notebook: https://nbviewer.org/github/christianhbye/croissant/blob/main/notebooks/example_sim.ipynb

## Contributing Contributions are welcome - please see the [contribution guidelines](https://github.com/christianhbye/croissant/blob/add_contributing/CONTRIBUTING.md).

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

croissant_sim-4.0.0.tar.gz (18.3 MB view details)

Uploaded Source

Built Distribution

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

croissant_sim-4.0.0-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file croissant_sim-4.0.0.tar.gz.

File metadata

  • Download URL: croissant_sim-4.0.0.tar.gz
  • Upload date:
  • Size: 18.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for croissant_sim-4.0.0.tar.gz
Algorithm Hash digest
SHA256 6608fa10a581826eeb3afea3899b58403d1613618416bc9fd88e5f493e2913ed
MD5 3dd34479f479c1655bee5924af3a0f9d
BLAKE2b-256 53127a4c79d3ea1910ea7005f263832b3a300ab5f11339c068f61f6f2a8c917d

See more details on using hashes here.

File details

Details for the file croissant_sim-4.0.0-py3-none-any.whl.

File metadata

  • Download URL: croissant_sim-4.0.0-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for croissant_sim-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db7e415d06e13500541668cbdb4018d280914ecdcf7e257f8b1d8f30bf80bbd3
MD5 3ad88df7bf39f94719a6001d09c068fc
BLAKE2b-256 a32b55c6c97ba7e789387ba9ba7cb795370fef0a1d0a1b19c142c049e72380d7

See more details on using hashes here.

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