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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-3.0.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: cosmosim-3.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 6988a434d321e0223b91c2c960fb413d1a995002b0f67fc939dffb27aba4e163
MD5 66669764b1a34c6a90c4dd8a14f93212
BLAKE2b-256 def28e2ae1771237847c38bea597577df2f2f6f04def22ced4b903582d9fe738

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a34d22d13c8d8f23f5ecce749d8b871e08718dfa747b0ea036cef33ed6587430
MD5 81e786af9844b14ae3c5ada9e1a6ca35
BLAKE2b-256 787d45d0b822acef275ef0cb84d131461aff99d49d517c1b261eadf161bf632d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6f5869c586761385d153234f1ca58b500fcfac1c9d7ae9da7a09f4451878ef4a
MD5 60d66332993e25931bdf48a8450a2c3e
BLAKE2b-256 5c991428c01fc9e1bc3435d248215d4eedee69263497313cbf14ea9d2142b9f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 864ddba3b83e0aa44c67486794fb2a3b1fc6e78f951213f322e45093d00929cf
MD5 5a534b2bfe5b1ce0eb2613b72bd0ea6b
BLAKE2b-256 ca715bcb63fcff0016d7aa1015522eaa39cea3291706c8c9dccd4889edb09fe0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f7e07bccb69a8f99db39f1b93167a5625ab48614f85e6345ed2970c5f6f320e
MD5 edf8845c01f9cc2114ca9920c1bda834
BLAKE2b-256 0fc4a4ef971fd0ee85d3948d613d5fa4095637c79dd3ef613905ef9a9341b4db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7d67cc4eefa2a8b7a7c69d617d6738756d5fb777d557b342ad41309da9234746
MD5 e0a399d6940909284f6d66543e845c35
BLAKE2b-256 f17acb22be8e9c33f9c96c7faf81a8357f136273eb14b170149f83304a938b1b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56f40064bd9725d27fefcac3b84e58e7d06ecf5c51c658b52aaa3e45d0c846ac
MD5 b84df20510082add483f87610f30a128
BLAKE2b-256 0d62e018aadb5d7c5ce247be7c1a5094131dc9dd0d6f4584de840833ff2eeb3e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5d4fc89b577c6f4cfbb4f014451146ff5abdaa7b0bef24349e8608c25609120
MD5 586720f357d7f8fc40e2af22a3a8d247
BLAKE2b-256 8bf98b15017f8c2651531b8be50bb7d9263dbf3df4d6eef2b933eaa247c06b39

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2998bea6cabb81c19b81df4633f6f9ecc53ad4b3ba02048e1a63006295b26a8
MD5 3469232afc2d3ff84ab44b3e30d4d13b
BLAKE2b-256 e214be8214ffdbf619f9971747df7ba23873fbe956e46f836d19062943d03a0a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08a7ed66a5db4b19d028d0a6ac8d6aeceb0074bb8c5d9ae7319eb23affab61c7
MD5 938a748e920311a41cdfada36c79af6f
BLAKE2b-256 9eb459124f83dd368fc0781e86393186764431d5d51ab23957d5a6eeb9f261a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1628ece14d0911c35a9b64d14dbae3a1682622c293ed0ac51c06a79e4b4aff77
MD5 f23d027847e8853b595baeb8156d7477
BLAKE2b-256 ee300ea6f0de64d72a847d4a11a486f62ca8a455628f94672eb0af3e855dd4bd

See more details on using hashes here.

Provenance

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