Skip to main content

Simulator of Gravitational Lenses

Project description


title: The CosmoAI project

The CosmoSim software

This project provides a simulator for gravitational lensing based on Chris Clarkson's Roulettes framework. The code is experimental, and intended for research, with many loose ends. If you think it may be useful, we shall be happy to discuss collaboration and help you get started.

The core team is

Installation Guide

CosmoSim is set up to build python packages (wheels) that can be installed with pip.

pip install CosmoSim

We successfully build CosmoSim for Linux/x86_64 and MacOS/arm, for python 3.11 trough 3.14, and 3.14.t Buiilding for python 3.10 is impossible because tomllib is required. Building on Windows (amd64, python 3.11-3.14) sometimes works, but currently not.

To build locally from source, you can run (from the root of the repo),

pip install build
python -m build

This is highly dependent on the local configuration, and may fail for a number of reasons. If it succeeds, the binary file for the python module appears under src/CosmoSim.

If you can build, pip can also install the package from the working directory. Again, from the root of the repo,

pip install .

For non-standard building, see BUILD.md.

Running the GUI

python3 -m CosmoSim.GUI

The GUI tool is hopefully quite self-explanatory.
The images shown are the actual source on the left and the distorted (lensed) image on the right.

The Command Line Interface (CLI)

Overview of Tools

The modules that can be run as command line scripts are the following:

  • python -m CosmoSim.datagen (simulate images from lens parameters)
  • python -m CosmoSim.roulettegen (simulate images from roulette amplitudes)
  • python -m CosmoSim.roulettestatistics (descriptive statistics of roulette amplitudes)

Testing

Once built, an illustrative test set can be generated by

the following command issued from the root directory. Note that you have to install python dependencies from the requirements file. You may want to install python libraries in a virtual environment. Here this is given to do that in global user space.

mkdir images
python3 -m CosmoSim.datagen -CR -Z 400 --csvfile Datasets/debug.csv --directory images

This generates a range of images in the newly created images directory. This should be on the .gitignore.

The flags may be changed; -C centres det distorted image in the centre of the image (being debugged); -Z sets the image size; -R prints an axes cross.

Dataset generation

The basic use case is bulk generation of images. The parameter distribution can be specified in a TOML file, see Datasets/dataset.toml for an example.

The following command generates a dataset.

python3 -m CosmoSim.datagen --toml dataset.toml --csvfile dataset.csv --outfile roulette.csv --directory images -C

Note the following

  • dataset.csv - contains the dataset with all the lens and source parameters.
  • The images directory contains the images generated from the dataset.
  • roulette.csv gives the dataset with roulette amplitudes.
  • -C centres the images on the centre of mass (luminence). This is necessary to avoid leaking information to a machine learning model. Most of the options are optional, and further options are available. See below.

Two-step generation

It is possible two generate the dataset and the images in two separate steps.

python3 -m CosmoSim.dataset input.toml output.csv
python3 -m CosmoSim.datagen --csvfile output.csv --outfile roulette.csv --directory images -C

Roulette Resimulation

TODO

python3 -m CosmoSim.roulettegen 

Generating individual images

To generate images from specified parameters, you can use

python3 -m CosmoSim.datagen -S sourcemodel -L lensmodel -x x -y y -s sigma -X chi -E einsteinR -n n -I imageSize -N name -R -C

Here are the options specified:

  • lensmodel is p for point mass (exact), r for Roulette (point mass), or s for SIS (Roulette).
  • sourcemodel is s for sphere, e for ellipse, or t for triangle.
  • -C centres the image on the centre of mass (centre of light)
  • -R draw the axes cross
  • x and y are the coordinates of the actual source
  • s is the standard deviation of the source
  • chi is the distance to the lens in percent of the distance to the source
  • einsteinR is the Einstein radius of the lens
  • n is the number of terms to use in roulette sum.
    (Not used for the point mass model.)
  • imageSize size of output image in pixels. The image will be imageSize$\times$imageSize pixels.
  • name is the name of the simulation, and used to generate filenames.
  • --help for a complete list of options.

Use cases

Training sets for roulette amplitudes

The datasets generated from datasetgen.py give the parameters for the lens and the source, as well as the image file. This allows us to train a machine learning model to identify the lens parameters, assuming a relatively simple lens model. It is still a long way to go to map cluster lenses.

An alternative approach is to try to estimate the effect (lens potential) in a neighbourhood around a point in the image. For instance, we may want to estimate the roulette amplitudes in the centre of the image. The datagen.py script can generate a CSV file containing these data along with the image, as follows:

mkdir images
python3 -m CosmoSim.datagen -C -Z 400 --csvfile Datasets/debug.csv \
        --directory images --outfile images.csv --nterms 5

The images should be centred (-C); the amplitudes may not be meaningful otherwise. The --directory flag puts images in the given directory which must exist. The image size is given by -Z and is square. The input and output files go without saying. The number of terms (--nterms) is the maximum $m$ for which the amplitudes are generated; 5 should give about 24 scalar values.

The amplitudes are labeled alpha[$s$,$m$] and beta[$s$,$m$] in the outout CSV file. One should focus on predicting the amplitudes for low values of $m$ first. The file also reproduces the source parameters, and the centre of mass $(x,y)$ in the original co-ordinate system using image coordinates with the origin in the upper left corner.

The most interesting lens model for this exercise is PsiFunctionSIS (fs), which gives the most accurate computations. The roulette amplitudes have not been implemented for any of the point mass lenses yet, and it also does not work for «SIS (rotated)» which is a legacy implementation of the roulette model with SIS and functionally equivalent to «Roulette SIS« (rs).

Warning This has yet to be tested properly.

Other scripts

The python/ directory contains scripts which do not depend on C++ code.

  • compare.py is used to compare images in the Regression Tests.
  • Several scripts used to calculate roulette amplitudes.

Versions

  • The imortant git branches are
    • develop is the current state of the art
    • pypitest is used for final testing with automatic deployment to the PyPI test index.
    • master should be the last stable version
  • Releases
    • v-test-* are test releases, used to debug workflows. Please ignore.
    • see the releases on githun and CHANGELOG.md
  • Prior to v2.0.0 some releases have been tagged, but not registered as releases in github.
    • v0.1.0, v0.2.0, v1.0.0 are versions made by the u/g students Spring 2022.
    • v1.0.1 is cleaned up to be able to build v1.0.0

Caveats

The simulator makes numerical calculations and there will always be approximation errors.

  1. The images generated from the same parameters have changed slightly between version. Some changes are because some unfortunate uses of integers and single-precision numbers have later been avoided, and some simply because the order of calculation has changed.
  2. The SIS model is implemented in two versions, one rotating to have the source on the x-axis and one working directly with arbitrary position. Difference are not perceptible by visual comparison, but the difference image shows noticeable difference.

Contributors

The initial prototype was an undergraduate final year project by Ingebrigtsen, Remøy, Westbø, Nedreberg, and Austnes (2022). The software includes both a GUI simulator for interactive experimentation, and a command line interface for batch generation of datasets.

  • Idea and Current Maintainance Hans Georg Schaathun hasc@ntnu.no
  • Mathematical Models Ben David Normann
  • Initial Prototype Simon Ingebrigtsen, Sondre Westbø Remøy, Einar Leite Austnes, and Simon Nedreberg Runde
  • Other Contributors Oda Hjemli

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

cosmosim-2.8.0.tar.gz (22.6 MB view details)

Uploaded Source

Built Distributions

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

cosmosim-2.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl (30.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

cosmosim-2.8.0-cp314-cp314t-macosx_11_0_arm64.whl (24.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-2.8.0-cp314-cp314-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cosmosim-2.8.0-cp314-cp314-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cosmosim-2.8.0-cp313-cp313-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cosmosim-2.8.0-cp312-cp312-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cosmosim-2.8.0-cp311-cp311-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file cosmosim-2.8.0.tar.gz.

File metadata

  • Download URL: cosmosim-2.8.0.tar.gz
  • Upload date:
  • Size: 22.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cosmosim-2.8.0.tar.gz
Algorithm Hash digest
SHA256 514c3ee02211af834df3079cb788cf5c382a4b49ae5bcda8bab27dd6ac1eb450
MD5 2af54e7270d5e301c916bfcdb8dc35f0
BLAKE2b-256 e4707ef9fc48cc106fadb2ba8a6c60229043d7acb5f871b25d67eb5f8f5fda34

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0.tar.gz:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20d1eb5f17d75e06215f45689c1fe37ebc802892c04ab19d4e0abddf9eab98d1
MD5 ad28434cd2f5c489ecc66b66f03e2ba7
BLAKE2b-256 d03ec7d595295a4eed8e8165306108fb8566fdb731b97849b5c9fea7a588959a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83da1b3f40d6ea4aaf5a373ee3c3b3518faae6866c9e39619dce7d5295c59273
MD5 9a9b3ab4f82704a2a6b03b2d11782dc1
BLAKE2b-256 c018bd787babe696277be2115817afbef074dbeadf3ba91e23d1060260498bee

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a8dc81537f14f47ddd44b872c2b0dd0b5afc460d59ceac5f3a37fa0f97b77128
MD5 a4e064ec9c575860686c5203673c2ff2
BLAKE2b-256 150c3f757618f925c15d090f620793000ea186de4bb036d39f1e4f62895a2208

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c74c89ff20058f06af0522d7f303edf6ca1e4c98e67d5824dc65abb7e1e1d43b
MD5 57dfab0ae034bb06957a020bec87d067
BLAKE2b-256 580a250f130154c7906fad7e8b3733cf5cde20aff17b6c42a59d16ace6adf39b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7964bb623c4dbbe8a6bd7b22d0b801ab15d242c578367a449a2f717637eb64fe
MD5 0961c5dc5036519e3098b71570527ae7
BLAKE2b-256 f7d7cc2dfe1d6762019efb11c32644020f157feac844c7240d566787b375caab

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cf235b648a4808e556ae3cf0c311b56b516c271e87fad55af26ea197ffea00a
MD5 c824ff6d03c2ae960571d05ef9a2efb1
BLAKE2b-256 7919d108b0db7064022ca5777a1b6c4205723360b2f7d3ad08f1637f1e2747d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c8435dfa031a61da2b2964b50facc8fe1732d1893497d0889d0d5e4deb29e158
MD5 ed1df280c7dc478338ff486219ddebe1
BLAKE2b-256 511bcc1cd627ce6a008a54c0713b1fc733205502274499e724312538e09371fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15fd1acf0d73ccfbeb2a74d0cbbaab902b8f448415fff0377ac353ccd005fbd2
MD5 baea8dd19be4c301bedd8ec45db9bfa1
BLAKE2b-256 a0d7217bf580382a8149e0503b64c2c36a1f026ad1b964b8081a220e4b4da945

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e22c5ca55d432d138ddc26d5868fc39ef459111e3fa0c0d61b5d3f1e7de04ec9
MD5 19c0e25c569fd56905ef5fb310151691
BLAKE2b-256 e95de8360627f199f2a6653a52ea9a82a1a177f22e9c6b13253c79938def7c7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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

File details

Details for the file cosmosim-2.8.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-2.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 821df9ecada0378a9495b4918bc0745d0237965cf91df858ae8a25f9c0062b4a
MD5 959039c5c95e39e9b60f3e936f105c4e
BLAKE2b-256 1e6b199cc5ec018b27854a37ee19c917a2e3c3368dc33601889fbaa86ec1aaba

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-2.8.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pypideploy.yml on CosmoAI-AES/CosmoSim

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