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-3.0.0b7.tar.gz (32.4 MB view details)

Uploaded Source

Built Distributions

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

cosmosim-3.0.0b7-cp314-cp314t-manylinux_2_28_x86_64.whl (40.7 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b7-cp314-cp314t-macosx_11_0_arm64.whl (34.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-3.0.0b7-cp314-cp314-manylinux_2_28_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b7-cp314-cp314-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-3.0.0b7-cp313-cp313-manylinux_2_28_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b7-cp313-cp313-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-3.0.0b7-cp312-cp312-manylinux_2_28_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b7-cp312-cp312-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-3.0.0b7-cp311-cp311-manylinux_2_28_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b7-cp311-cp311-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file cosmosim-3.0.0b7.tar.gz.

File metadata

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

File hashes

Hashes for cosmosim-3.0.0b7.tar.gz
Algorithm Hash digest
SHA256 115724f5b66244cd0a06cc5c998ad727238bdb603156b60307858f81ee983b33
MD5 8c3b363e3bc5ca2186fff571421e4dc4
BLAKE2b-256 216a5722a011e8280d8704f25a0a061fce0c9265d15caf276196b88ce4031e3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7.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-3.0.0b7-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f681a5766df3d8412c1909cddc340c4a5f0f501ce051bf0e0057b08ec459f4a2
MD5 f63cfd44ca4900b0f9efa3f6fec239d1
BLAKE2b-256 ef24a0e6355640ee24339ad1fe2c3ad6ae3b64e7c17d415035b792d43c5f92b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a914e7d9ea9f7958f7033a954912a9e3e4fcaab621af7c17bc4a068dca239abb
MD5 723cb8a585137d1a17d8d6651a392255
BLAKE2b-256 61d8c07d32ba93f5a962f72393cea517eb158faf9cd7ca7d8a186e47194c6518

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca0d2722241e8d5f9d24bbb1398fe1a173ae07f34ac88d4d8c309718f42fd968
MD5 8bae371466b5a85080b0d2f6e0690e60
BLAKE2b-256 a40a683f5b0781082aeb071646563fb4d0f312bcaeb30df391a2efcb22e4dbb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2733935105ec5f3c2a78cdca522fe04b8b85d74280ce11f04ba6b2cf0e4fcd66
MD5 51ae6645855f58ebedc7e33b9d2ff6ac
BLAKE2b-256 3215432873428aa5028beed1b9a51c94c0d20f4e63326da9b3dc500ba0026f21

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd6b237a3073b56e4b98ccd27afd9c07582c13e2345f25bf653766d22b56ca71
MD5 08503273f4f52b9cdb9d7145917cf0b9
BLAKE2b-256 742067d76ae09fc49eb771ce7114ec2f3b0085aa909e4bac7da8775f298aa91f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce7ea99633bfeb3e0dd4b4078744718ab516c5ff1684046a7cde6b1c31a01cb5
MD5 c7217bbad016fbe56c1ade66bdc6cc82
BLAKE2b-256 91a7f26dfc05bdbf6bea35623768ecc10ecf3d1a67a55b72ea149006568041b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 29e567f8d9c41ec904b26c1b45ad8ab6b49f36e7b4ba8f4009a52690fcd0cf33
MD5 15f01e2be8ab62b3a964530e551d36ca
BLAKE2b-256 f9042c676e88fb1b5a0e1fb26a5edfadf5ec0503f85d7c8a86058d957e255b7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3373a57afe1b363269704ee4f82a7b25e6719f327dba2469371122c3d8d1a11
MD5 86a227c0ea8acb174384583dc69779b6
BLAKE2b-256 14b57523f98494d50182b4d7dc7364c5e17cdd15bc5aba8e131f2f4a1c9750f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b6dbe8720879d9c2bb50ae97f276e3925862f2d31c4a48c61f61658a13c7873
MD5 3dfc3a10df522850931b372b7c785729
BLAKE2b-256 006ddc9b89490e93efdf3333f164c0d77f31aaf532ae26d17c3f091ad7ce617c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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-3.0.0b7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmosim-3.0.0b7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c03b4a6b84f07333fec423c1e23361587df647eeb88428f423ab77e39c8cf4c4
MD5 68d572bf080d3e95f44cfaa0f132eab6
BLAKE2b-256 3b1f2b27dbccc858dce7e2384e30a262d3d9f9b39fd8cfe6ca4c4aef5a4eb388

See more details on using hashes here.

Provenance

The following attestation bundles were made for cosmosim-3.0.0b7-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