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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

File metadata

  • Download URL: cosmosim-2.6.2.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.2.tar.gz
Algorithm Hash digest
SHA256 b7fc5599dba2c332204ce822c37c27064086e329a6eccb4c4c56d8018e37259e
MD5 9154b9cc83a6ebb40162795aefba1d98
BLAKE2b-256 4b20cfc3e8e488830378e1ddd6340d4d1bea5bab7f26bf465db6b6d293cc894d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f7b7bc41728a945e6cdba185ec6ca863f73bfecd0803335f99096599151b033
MD5 05c6d2fb6b60f06ca5fe09322d5caafe
BLAKE2b-256 512c673c11701194f1b58342be5693708bcb2f41e663462e6c9ed2b858f58bab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6a8905eb66a6c9c68fa604d7ba4f534bc9b3e72368b13e787fb287933d3e9ea
MD5 4ccae5a1f4ff310d3a3bddbc0fcff193
BLAKE2b-256 ffc3f62bc181406eafcd74dd73bb4560b463485074d7b3ce8f5faebdad684220

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4ec032337559478721d6ebf068c3641490201404f48543f074428eb27c9f924
MD5 1125ae095dd77a1e8e96bf8cd810e842
BLAKE2b-256 2938a1550a7ba9ec24e7a3edaad822dbed6b4728330999182711bfd4dce9d8c9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2b910ef022f19aa463e4e99516e5f28a731c076bd9ef55556923b62786b053e
MD5 560f94f06ea81dfcc921c3d2d1b1534d
BLAKE2b-256 bb8c3e3f330fe07ffe9e670ffb070bcfa5e2a12dfe4d68f830ea98cba38807b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3cb55103ea406c174070948d0a3c0633a26f48b4de27824819e6d0b9066750b6
MD5 d53a829f5401c1f32b3f30aece8a224f
BLAKE2b-256 194c83e753cc62dc42127ff2295e360c8acfc238268769ff77afbf50f60f57a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12e3c4b5f9bc4558a29883dcd36bb0bba700478bd4b6f4acb3281b0b12868991
MD5 160db81b33fc019c248369a445bc3f9d
BLAKE2b-256 ef41e4ea8770adeeede75c8a1390e886fd3b64ccdc01e87e32c4c9accf65e528

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df3a6b2eb3f2b7f89a60130338bcaee6e50eab6ff36e659e7c058ff4a7106101
MD5 e2f3f436e5f3280776d92112e67f59f7
BLAKE2b-256 529c486c432e4106ea3137c547a147a56cde1479a2485c1709c2acc57c75a08b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c92983d9bfc727f1399a7051067206d5ac6c516190371ce2979c45f2f61d4bcb
MD5 6598fd547c1cc73361e000e079d0aff4
BLAKE2b-256 ceffe29141e96d86839f02855c7d89efb1c7438b8d91ce4ef1a39725bea7cd1c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c747f9b531b0b1b3ed602f977fd1bb9200ee805f668f180f05347c90e92ea91e
MD5 34fca9e26e4393749841c4224d12cfe4
BLAKE2b-256 f5243a7c16f379bc6b9ee039cef59c04b28ec6f38b950a7ab1347012eec0186f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-2.6.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d68386e8b23a9f6b7b306beec30446db52c554fec673337dbec2dfe3238cc90e
MD5 29f0629f0d7924f74bdcd4ff803946da
BLAKE2b-256 d2dd1dd91de43a0ed1d5988565aa314ab2c4767eef4531f526c81999333b3c2a

See more details on using hashes here.

Provenance

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