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.9.0.tar.gz (22.6 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.9.0-cp314-cp314t-manylinux_2_28_x86_64.whl (30.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

cosmosim-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl (24.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-2.9.0-cp314-cp314-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cosmosim-2.9.0-cp314-cp314-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-2.9.0-cp313-cp313-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cosmosim-2.9.0-cp313-cp313-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-2.9.0-cp312-cp312-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cosmosim-2.9.0-cp312-cp312-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-2.9.0-cp311-cp311-manylinux_2_28_x86_64.whl (23.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cosmosim-2.9.0-cp311-cp311-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for cosmosim-2.9.0.tar.gz
Algorithm Hash digest
SHA256 11863838b2294799ec017d609e527f81513fe20005cd5974c83e741568cc8159
MD5 9b0a92f248bdc2636e9dfcb493631453
BLAKE2b-256 b8954e0ace35688ff1021d0cc4303fe1f1fcb160c9992e5ed2bf1477c180dbff

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 06402d8ea5c49a5aeb784e54daebf08ffde34671708fc4f469f8f886a49b6e0b
MD5 6aabc87110a42560f0535996d6599eb6
BLAKE2b-256 407850a7266e66479bc76dda191603e8593a16dc174cd5fc8c1cfe47e0eb275c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 348029044436757b3713122a4c780bc8d70dc72aa9c88a953e959566a842fbf5
MD5 8f6bb53a2e10dfeff6b15a8bee953ce7
BLAKE2b-256 6184f877ae12aed81941994cd5050a29f17c1667abfd6b987264d67e8840fdd6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 097b7b2d069b2a7224fdaae3d7876d5810999a4c4398623f0451a6c8cde2b3df
MD5 3907a1d5e36563e35d1c9029aa7f9eed
BLAKE2b-256 265a2ae52697384dd8d544e2dec26af9138c279d1521a0738be539fd01102d0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d89baf0cd81030b21e9afa0a4fc45d3d0f729f186eb1ba0934e4c06eb5e1820
MD5 dccaf363c235cb7d3b224b4aef6d3f5b
BLAKE2b-256 17ff4bcb10fee1d69fd69dd6848c42ea2e0d028cdeea6aa8e6520d0a41a63514

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba876e4550df90d9f1734b3e56e204fa72d169a69ea83807d3e883ea9c2ceae6
MD5 a630fbb2942829d72e4188299d6254b8
BLAKE2b-256 b7be3721d87b2c5eb333815499554e8b0dabdfe0e7092a3039cd5f398e990b22

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb9f0ed922e379d8a25e04881e62fb79e07aff16e2f8189362102cf2fdddd72d
MD5 9adaa9b521b0796f2d842ae6115f606b
BLAKE2b-256 e253ad214db12db21d9b728b6685fef07286d2854799a03455c14a8dadac9c50

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4fdbdbd74f7491be3dfe14a57121af067c1161f281c0c7fcabd63d87c03322d
MD5 5587f92c1da5daeaf05163465e469126
BLAKE2b-256 b13f13f9192626844ced7b4289f06a19cc27ebd5115acd27e40e2e5bbb31c0d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7dc23d18da08626ececf9a2389d370e9c82ef80aecc3aa72e0c44923c390d34
MD5 e87cf251c6ebfbd1bbf3d2ed135fe43f
BLAKE2b-256 b5c476a1666e7fa2bb39ce49bf10aa3ee654d0326b7f8eabe5925f8c0c3c323b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 32a43f1c203117a6f154841235648b1794319cdc9e6dba93fa71c0d58cbbdba2
MD5 c353717f2c92ed2e1905906b49257026
BLAKE2b-256 87dcbd20de70385aac5d11ace1a7e756f4a2bb62e9eae30fc00a486b9dc3f921

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.9.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 371ff7a9dc542c18fd2f8fc66c87e91cf2bfb72094221533aea3827451259339
MD5 7ff7b18e06425a13e70760cb6af3d21e
BLAKE2b-256 87b2d6bb79301088b706c9edd80f603d45d53541c0f8f64591cc82db9418adad

See more details on using hashes here.

Provenance

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