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.1.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.1-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.1-cp314-cp314t-macosx_11_0_arm64.whl (34.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-3.0.1-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.1-cp314-cp314-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-3.0.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-3.0.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (29.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-3.0.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: cosmosim-3.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 386d57935d61c8d14b7fdeab23042037ad1d63443765985fb98ae2600da63599
MD5 cf6e6a387d5db96b74ef3dc9b99fd7cc
BLAKE2b-256 3d0c9c35791aa1351811012d4b880cd5bf4c6c9687f6d78f9cd0c55556841fe8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69c139893d4367b194226d5d7605b93420a3492a702241c1691c400384a6e0e1
MD5 da0f0ca2b61defc66458c9416fed1d4a
BLAKE2b-256 9e71dc52628baa740b1590832c95d676acbd2f1d0edca403f850d7e17b125fd5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b79d23c168b07427bce3026d37c95aa780ee01feb22d6a22c84cd660340a0b6
MD5 e90bd3215efffa07fe88a6c4fb91313b
BLAKE2b-256 0f0ec7ffbbf96cfb651938cf694190dfc4c96fedb3ed5389d414ede9690376ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ba7fd4142d96f3e4e663801d26ada48392317ede4797468f14cd338bff12f5b
MD5 5bed61ca87b58726d92da1bdd01fb087
BLAKE2b-256 51d7c50fa2d836a31b1ff84d58e787d5ec3250b6d0eafd16d447b41760b5d9b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d12fefdbe627098a50867d1f405223d1efe75de929dfab2e36d8e7286710fe7
MD5 45cafa73f42aa5bcbd7e605187b3b555
BLAKE2b-256 e5d549d20fbd3de389a3983f969f8d6c04809dafd21a34cea61298fa32eee4a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5190715a01677c1032bc3d65499a61c375f8b0041a41995296c235d9c3a37a4
MD5 50593e8c755d74d8c0574d06282de871
BLAKE2b-256 81c05bad6f119711013a1f41e619db1f4238b85a9584874a9294abd6feb2d617

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b3e35e79e069e48ff557f202b98de14971d9d5bb53b21d975c6b77037f257b4
MD5 f7a82594ed2cde86a367a6263931222c
BLAKE2b-256 ef45b68be9f2d8a3590586ac1871339bd2f41c39eda66c9173d1e2556a3577a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f1b9e8a3dba3bd3b007058f025d0121b619d9ea336f590e056abd1f0c39f540a
MD5 d03cadfd51596b57fcd90830132ae5c5
BLAKE2b-256 08032d19718e453213a9aa6eb6d405f3d0c7e24bd891e4b0d5eae26b409e93cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a452109360a9449ea7c4f8921c6b85002f25aa2ea7a9da79debff603385c66b
MD5 8e427acb931effad55a48e4fb5774ea4
BLAKE2b-256 689c6230de772e6b46fb20bbdd58a2edb56175fae56bd5481601b1f2b301fc83

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dff8ac470b60870994f06872047b13aa71240d24436fe3218c46fa4f77d96ee4
MD5 0eeac1d592695857e7e3e86f9c67d0ab
BLAKE2b-256 81a4d1ffc60c04243bce975785bb3c20d5758cd80a75686b4280d406bf0947a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c14007d673eb398febe52a7ab173283373bcdb05d4ba14a271d3a0766f60b37a
MD5 78921d1f2ec4897c37ca24cff99af908
BLAKE2b-256 e463ea9c456284a8df9316e6d9d50754ff15e91bdd574d7bc707db0a223391c6

See more details on using hashes here.

Provenance

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