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.0b2.tar.gz (25.0 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.0b2-cp314-cp314t-manylinux_2_28_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b2-cp314-cp314t-macosx_11_0_arm64.whl (26.9 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-3.0.0b2-cp314-cp314-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b2-cp314-cp314-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-3.0.0b2-cp313-cp313-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b2-cp313-cp313-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-3.0.0b2-cp312-cp312-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b2-cp312-cp312-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-3.0.0b2-cp311-cp311-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b2-cp311-cp311-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cosmosim-3.0.0b2.tar.gz
  • Upload date:
  • Size: 25.0 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.0b2.tar.gz
Algorithm Hash digest
SHA256 0958577bbb3cecb5f860e7261a3b665efa4e11c19c0777ed6e98ab1d752bf736
MD5 019a166c15077ce66dffe3134f673b57
BLAKE2b-256 65dcf09a55499be77f7bc2825a9b19a43233e06a87033ecd37abba86608b6470

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a5cc33c5aeca3d19fed42132d420c8e37b43dc94dace24fec581b6785885fee
MD5 296cf4470901f371acefa5f611d817f5
BLAKE2b-256 1847d1facd09a43bc7fc0e142e40674b467d1ac9fb283cf284f2f298c1e82873

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03fe9e222b9cce7b37bd3bf54f6184a0af74ad48dd14ed7eabd75d2f49c95f44
MD5 5c67b64c4a13bc7b75618bf187b2752c
BLAKE2b-256 e89c86ede90d0cee2fe2d329d5bbb50f1c1f5f45cfae16123cd31a38d94f6e7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3d5a4fb1d641be3c1ed0b2be3e712b0d59152a229ca096c5330154738dcef80
MD5 20e4c2737213e0c990c99d642e4f5ed1
BLAKE2b-256 959bc81362cbbf7d0328ee407b3a2e973da13f7ce338fef09eaac16b01009e58

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55f1b500bf5aaf1c17ca057dc38f3f72818e376dd061319c13313a22c056a358
MD5 5a4771e5c67c599bebe283772e0b3452
BLAKE2b-256 820577951fa0d549469c29453d317c7376e1e8c119c6b3957c3628a6e66ad935

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c75af22d1bbb75b20cea418b53b66a5f89b842515a66c323015057892e4c7994
MD5 240a2eff40248afd067314934c06059d
BLAKE2b-256 aa887ef420b9f2be4e536cd40d177188809d1c4633b50a4aee25e92601c86e28

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd849fe59912dee2e51bf24099f369996899c4a19f182ab6334dc80b4fbe71d2
MD5 36fe42a0d97075cedb047e0aca6509df
BLAKE2b-256 060e83714b26ca0d24980311339fb1e6163ef24b7e6219d13dfb70fac368a22b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 18d2ebe6d92bc206b1ba6a4cbd685f2555b1b5f7f088e464bb481866d4dbcbb6
MD5 d843efb56f015817aaa2abfbc6529f7a
BLAKE2b-256 6becd1e621bf07288731dc133c8a4f99f3c4041fd662772055b3de78e3dbcf35

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b8e42ae97cb298bc3260a95b067832690871ecba5dce8b1206a102b55b81109
MD5 813083641ec2d46b1e94b49e0805bdd1
BLAKE2b-256 0c7223cd539fe76daa084631403ce81b519cf6cff3f346b46f20e2517fe6937a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1441b9022d2d2a320437f2efd494206096ae3310608eefcc6d9c4dd67ca99d9a
MD5 b0183eb2e37ef6e9b9900bc94c67c7ac
BLAKE2b-256 39228764ba147aa1bdd4ad52cdf13bae0393709907977d50a8eac630912124e7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0e27427c04d3abc1cfddf3238d442e5ad8f415389422149e5560037c84cfdc7
MD5 8ee9433da6193f56ede0b39ed5fa103b
BLAKE2b-256 bbd6f2f823247dbf9f98a316b0e5d4a6fb585a4a75f4aae522d0bf3828e9c34c

See more details on using hashes here.

Provenance

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