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.0b1.tar.gz (25.0 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.0b1-cp314-cp314t-manylinux_2_28_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b1-cp314-cp314t-macosx_11_0_arm64.whl (26.9 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cosmosim-3.0.0b1-cp314-cp314-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b1-cp314-cp314-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cosmosim-3.0.0b1-cp313-cp313-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b1-cp313-cp313-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cosmosim-3.0.0b1-cp312-cp312-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b1-cp312-cp312-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cosmosim-3.0.0b1-cp311-cp311-manylinux_2_28_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cosmosim-3.0.0b1-cp311-cp311-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file cosmosim-3.0.0b1.tar.gz.

File metadata

  • Download URL: cosmosim-3.0.0b1.tar.gz
  • Upload date:
  • Size: 25.0 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.0b1.tar.gz
Algorithm Hash digest
SHA256 56a8b8889fe60d372c66ed880b097c9c40219470c51c8cec66d7961f7a5cfcd2
MD5 7f07e621e237290555178125c4e652cd
BLAKE2b-256 28202aec3ba5cee68656bacbc0ab294971f5ada9c9a004d412ab4951414adb20

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a779d40b622c7fe3a0e57aa70093c3d649881b23b548b502c5993bd267302f6
MD5 cb2ebacf83572805335529d97850989f
BLAKE2b-256 1abfcde1b2dcfbb081e337624412ccba3fce4711dd91ee6b160228e84a8a19a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bc7420992877324e3aef3a19fefb85e0c7a4bee8f14ca372cca9ade028da57a
MD5 0f9e8270b49951bc0a0962b86b618f2a
BLAKE2b-256 ef3d55361b08941a79421815ecf757db464ea5b41f4320105e7eed04775a8e43

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 735f825f3fb730d9921bb2cdc328c5b3f8faa8f3f3b2cf70b79d8acfb3388b78
MD5 44ff9bef824a4abae13c90f8df594be7
BLAKE2b-256 3a890a55129c10bd18c9bbb9b2b0a5c012822eddb8edf39997ba2ecaf991694b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4cd4f6235dcae16576fb01cb1089c7c2d3f86883d543b60a5e828e59472ed853
MD5 9843aed8f04234b1cd42ecb05de92e66
BLAKE2b-256 eead49c5fc7e8ee68cca28afbac7af79f5ca96a3029ae87fc3c10430b3840844

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 14c6d56b1ab163e337d81cb82f5a065db9065265a931bb9d4c5e7edc5cb566f4
MD5 217337d6a45d6798e141db1ae4ecdf98
BLAKE2b-256 7ea59b82aa4746c470ccbf274dc62dd87c0202d328d5ab96bcc808122d48f2aa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55985b6ccc9cefb3b944988f4958b274393026152044aeb69697cde98ddfda58
MD5 f58d9c7f027a47eab921111dc7687cb5
BLAKE2b-256 5c845d12e3dcd126d2a015c761973c5ccc7f0028f964493c0f78188049f317e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ea010afd8fc523c793de822fb18ed9949e61770695aa8861756337489c4215f
MD5 cf21e83d17c77e8d6c37464b1dccdb11
BLAKE2b-256 36918aad5b3e7ec9ac7f7093b0f46338dd1a5bb2177f37113b86fbcd93f0b900

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 161f0dbd01b0bd61618406d22c3f280e7c75573c3fd7bfbe2bf30dfdd01425f2
MD5 3dae7d5ef848500f02f1b6522b058abd
BLAKE2b-256 18512c559c5a30f0a30861341834e979eb2416c0d58eff693d4de59469036f07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 554ae1829a74cfc78a269b39c993f34dede8b0b65004e56d9267624c820c0fdb
MD5 ec6407608dbecae7fe178999f2f0237f
BLAKE2b-256 b359da0b819c19e9ea115e76124802cdc0f78edda11bbf3f17ada4a6ba03c8cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cosmosim-3.0.0b1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8f6827fef1a087e70df2ce01f5a9ca98ce4dfb3c4730af23ef7148ce91b9c44
MD5 e9d8f4232f9bfcf718eee56861cc44bf
BLAKE2b-256 d2586584b4920413cd11fc972215600ca66cb8e2c9a1271315485e88f1674510

See more details on using hashes here.

Provenance

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