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.6.4.tar.gz (22.2 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.6.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (30.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cosmosim-2.6.4-cp314-cp314t-macosx_11_0_arm64.whl (24.1 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-2.6.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cosmosim-2.6.4-cp314-cp314-macosx_11_0_arm64.whl (19.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-2.6.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cosmosim-2.6.4-cp313-cp313-macosx_11_0_arm64.whl (19.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-2.6.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cosmosim-2.6.4-cp312-cp312-macosx_11_0_arm64.whl (19.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-2.6.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cosmosim-2.6.4-cp311-cp311-macosx_11_0_arm64.whl (19.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for cosmosim-2.6.4.tar.gz
Algorithm Hash digest
SHA256 23c3c97b8ac1cdb16191db69e269faf5617d013bc9e5d3e12a1c0e7a1d7fa091
MD5 3f0a8b6eefefb4c8273778a832179e53
BLAKE2b-256 97fb57dcad3753daecb3d11c66fc9c49f23e74b63316dd8fd9162da90a4b3ae4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 080a87022bf3ba3fb02c78708d2116a8367f7e417baeb2640e460b9dd090a6ae
MD5 2d8996a0b37549e5be93a02e873ca708
BLAKE2b-256 388d38249c8ac34fd7fe11bf9302f9660e048c547aae9848e016bd244767fd36

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42dc6c2179cf96303e0dca62b6e5db0c43ec6cc28317db17456ffdd938cc2174
MD5 13f7a910b8e19af3fd4bb7c49038e101
BLAKE2b-256 324663dd04348017b88dfad91c50cb44c27e226265aa8073f6d87bb254db51f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aafcded3268672bfdf297fbcf6708cbab349306d06d5b68719f4b4180815670c
MD5 180a0de8570fd4e65f1871be5b55e105
BLAKE2b-256 bca01246a5d09a6e56b2ebc54985d392ad748b7790167346200104cd5c63e28e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9caefa3a7d1fef34fd842d90480564a7a771082ab16f6b734118844ecaa41ee6
MD5 d8cb558c018db69dce66f02e3c81cdf3
BLAKE2b-256 53d10ef50f7101307b19b176e72db2027a90910f496e609ed6f822f39a302c7b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 659a2329d089b9bfb06ab09a49ccabb5fb5f9d8abdb8dac4add9007c9413936c
MD5 50a4b4d45a26c1924cdff29dc314296a
BLAKE2b-256 8735b3e5e145c648fc8574d6122a94862c92bd7cf808de76a2710b7fad86d0e0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c769bcdbf422843ccf8c948de59dc1856a012fd9637a04958979c4546b471adf
MD5 1fc6e1197005b7598915959cb8a7cc66
BLAKE2b-256 ba573abc9644babaa5c55e20e952d978b1f0a785a041afd9b84038ae79b6a8a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2faddfaafe3be54828c51ca212762e207e60697d173e6c4780439e769e7f6720
MD5 9d3c572e839eea99cb4fc5415c246ace
BLAKE2b-256 dc6567940f0389afbfad33cebf05f415fcc6c9c58f4eb6e19c34dfacd633f710

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af418351b7eed6b8df298830e82f967a76d437b1e3b713e81a01899973a4f5e9
MD5 3d2260b877bdc9a300569fa3719e806a
BLAKE2b-256 24647925e08bd3fdc60565697ae68f2dede8aa959242be70da68ee1bd45bd476

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f1cb1db608a530b2235df0d5dafb938cabbec1d0f4f3726fbe79123a408246b7
MD5 4c277ea1b9d0d483628884643dad1099
BLAKE2b-256 12659022f7f96d5013b9a96af71c1f448104cbc4b684b912ecbb73b7ad72152f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8dfde75da71c3778ef9ac3e680de93316ac3f46436e19f410552be73ea10666a
MD5 cd5e09c768508855b17de77d5e77266a
BLAKE2b-256 6b17c90d9c3159e2b5cda2cf5861aee7a20fcff08cac33e19d41868a570d75ec

See more details on using hashes here.

Provenance

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