Skip to main content

Auto-differentiable strong lens modelling

Project description

Herculens logo

Herculens: differentiable gravitational lensing

PyPi python support Tests arXiv License

Analysis of strong lensing imaging data

The primary purpose of Herculens is to provide flexible modeling methods to model current and future observations of strong gravitational lenses. Currently, it supports various degrees of model complexity, ranging from standard smooth analytical profiles to pixelated models combined with machine learning approaches.

Currently, Herculens supports several of the most widely-used analytical profiles, as well as multi-scale pixelated models regularized with wavelets. Future updates will include the support of point source modeling, new regularization techniques, and more expressive models based on neural networks.

JAX-based automatic differentiation and code compilation

Herculens is based on the powerful framework of differentiable programming. The code is entirely based on the automatic differentiation and compilation features of JAX. This simply means that you have access, analytically, to all partial derivatives of your model with respect to any of its parameters. This enables faster convergence to the solution, more efficient exploration of the parameter space including the sampling of posterior distributions, and new ways to mitigate degeneracies that affect gravitational lensing.

This highly modular framework offers a way to merge all modeling paradigms explored in the literature, into a single tool:

  • analytical: model components are described by analytical functions with few parameters and clear physical meaning, but that may be insufficient to fit all observations;
  • pixelated: regular or irregular grid of pixels are used as individual parameters, which offer higher flexibility, but requires well-motivated regularization strategies;
  • deep learning: neural networks (among others) are by construction fully differentiable, regardless of being pre-trained or not. It is therefore effortless to plug-in any deep learning-based model component to Herculens.

Being based on JAX means that Herculens runs effortlessly on CPUs, GPUs and TPUs with no changes to the code.

Works using Herculens

You can find a list of analyses that used Herculens, as well as their ADS bibtex entries, on this page.

Example notebooks

Several examples to run Herculens in many different situations are available in the herculens_workspace repository.

Installation

Manual installation

The package will be soon available through PyPi directly, but it is as easy to install it manually. It has been texted against Python 3.7, but should work with Python 3.8 or more recent versions.

Good practice is to create a new python environment:

conda create -n herculens-env python=3.12
conda activate herculens-env

Download the package cd into the directory. Then install the local Herculens package (or use -e for a development install) as follows:

pip install (-e) .

The mandatory dependencies will be installed automatically.

Package requirements

The requirements.txt file lists all required and optional package dependencies, along with their specific versions. IMPORTANT NOTE: do not only install blindly the required packages; please also have a look at the content of the file itself to learn more about additional optional packages, depending on your goals.

Attribution

Citation

If you make use of Herculens, please cite Galan et al. 2022. If you use the CorrelatedField model, please also cite Galan et al. 2024. You will find in this file the related bibtex entries.

Special mention regarding Lenstronomy

Part of the Herculens code originates from the open-source lens modeling software package lenstronomy, described in Birrer et al. 2021 (and references therein). In every source file, proper credits are given to the specific developers and contributors to both the original lenstronomy (up to version 1.9.3) and Herculens.

Contributors

The list of people that contributed to Herculens and credits to original lenstronomy contributors, is in this document.

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

herculens-0.2.2.tar.gz (156.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

herculens-0.2.2-py3-none-any.whl (198.2 kB view details)

Uploaded Python 3

File details

Details for the file herculens-0.2.2.tar.gz.

File metadata

  • Download URL: herculens-0.2.2.tar.gz
  • Upload date:
  • Size: 156.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for herculens-0.2.2.tar.gz
Algorithm Hash digest
SHA256 481875a150fa0b217a635a50749e9941ac5f86ce1ccb151cfc920e4aa6a23f90
MD5 eed64fad9407ddfa72637ff55cf64a4b
BLAKE2b-256 b958e50fa60f2197c4916be32240f2fc3d60f21624605f05a56511a282fe16f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for herculens-0.2.2.tar.gz:

Publisher: publish-to-pypi.yml on Herculens/herculens

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file herculens-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: herculens-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 198.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for herculens-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8f1e228711aaf84b3e680bc1213fd7be34e790a8bf3b084d79794f75592e95cd
MD5 120d31f12cdf94e1f5a6c6534a67d6ce
BLAKE2b-256 6d01c3c16ae8e0c59f0b698ce698ddebbebf1b3678be2364badd5fb6dcd48e7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for herculens-0.2.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on Herculens/herculens

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