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.8.1.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.8.1-cp314-cp314t-manylinux_2_28_x86_64.whl (30.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cosmosim-2.8.1-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.8.1.tar.gz.

File metadata

  • Download URL: cosmosim-2.8.1.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.8.1.tar.gz
Algorithm Hash digest
SHA256 470227c01b7c110e98372da98820064a5a6f52ee42c12ec596442e423f4cce89
MD5 5bf4f24fff693d4958893847b1565562
BLAKE2b-256 ecc3c890f5e40fa0b373189ed62b10cc3e3caa7bcb36662bcc8d28da73a58c90

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 383bc6e027dad76883b7eea8c2496a876ba039f8bcd9991ef06d8c7d96e1ad22
MD5 14e5b5b242789a25741928a1d293654d
BLAKE2b-256 ef787262bfae27ce4a8d780de767bce17bbd0c970e302b4fb401d403c2d73f77

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f2d64b06d86bff771db672aba23a3ea9f5dbff61f4e5529100e091392a09a0e
MD5 5b69edbff7da375b28e8cbb544dc0235
BLAKE2b-256 0c7debd7fd73dc95bfaf26ec8d88abbd578fbdedefc9ad5b452b0e1cebd79dc5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5a035082eb4f34044f32f40de7c158aa1764fd32e8f763af285ae4ce505dcdcf
MD5 354b4c8ca1f78f699d671af88695f5b9
BLAKE2b-256 d3d9e07ba0246828e25476c0905395ce282c288ffa665a470bd606a0e08464d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e02b283d5866d2368f63d935cc83df3cc3ce0c45bb3145f15ef2da038d32d135
MD5 aa0d13a1d59858230b32e910b268c957
BLAKE2b-256 8837a03739c4e533e0e69042409bd02a63671d6d78dd19634622f8da8381dc34

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 96e611659552da8075c1c51cd6a3a5c79c3a13abac84493f9076fcfac32e24b8
MD5 453fc2e56a0299f090e1ba0a76187816
BLAKE2b-256 87a1964012d24a0641517f8a1c720371483463b1520dcd509105cfb40513a40b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 608292829df904c320fbc54610fa4e1925bd836504d4857c4a0808cb88386be6
MD5 b4ed9e1bd679913836649f2650490cc2
BLAKE2b-256 ef359482d0c2293207683a64d5bf2b718d4e0f3bd1e434aae93f591e2f67c507

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a0a012bf046415f79f918b66216f9f62484c2a44263483009c5c19b9c7adaafe
MD5 f16491f4be401bf4722854e6363d34b2
BLAKE2b-256 257f5278b983dbf5d2d4b0edeb168ae95c3bd3aedba5e6af1ea32a914c05ca51

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad122575cdab2676aa516a09781ec03f10bb74e2f7284271e1ca8f349823a7ed
MD5 772c7aaae91296e7608cd0fd83b04031
BLAKE2b-256 9ed1e0e55df1d2271c2211a661521015a03021e9b961443ad277f1da455d42fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b90b3905b918f998c5bd6d31a5f6694c1badbb1ad888c0d5dce12578c7d354a5
MD5 10c1ba6efe3919f8c119758ead9d9464
BLAKE2b-256 ca2e008ca5774608395be749294c6f7deb6b1c63dadaff1c53b41f11207cc519

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.8.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c78be16ea7d2fbb53bec3166014a77fb9eb4f7f3b235ee572aba9d13aaa51511
MD5 af0efb1e88024011d737e7bc75195df6
BLAKE2b-256 d4d2b6a697ddc433d3165d05188b3ec4d19b07ee30ae745384ba123a2e3c1904

See more details on using hashes here.

Provenance

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