Lenstronomy: multi-purpose gravitational lens modelling software package
Simon Birrer Adam Amara

































[cor1]corresponding author and lead developer
sibirrer@astro.ucla.edu
Department of Physics and Astronomy, University of California, Los Angeles, 475 Portola Plaza, Los Angeles, CA 90095-1547, USA


adam.amara@phys.ethz.ch
Institute of Particle Physics and Astrophysics, Department of Physics, ETH Zurich, Wolfgang-Pauli-Strasse 27, 8093, Zurich, Switzerland





We present , a multi-purpose open-source gravitational lens modeling  package.  is able to reconstruct the lens mass and surface brightness distributions of strong lensing systems using forward modelling.  supports a wide range of analytic lens and light models in arbitrary combination. The software is also able to reconstruct complex extended sources (Birrer et. al 2015) as well as being able to model point sources. We designed  to be stable, flexible and numerically accurate, with a clear user interface that could be deployed across different platforms. Throughout its development, we have actively used  to make several measurements including deriving constraints on dark matter properties in strong lenses, measuring the expansion history of the universe with time-delay cosmography, measuring cosmic shear with Einstein rings and decomposing quasar and host galaxy light. The software is distributed under the MIT license. The documentation, starter guide, example notebooks, source code and installation guidelines can be found at .



gravitational lensing software image simulations
















§ INTRODUCTION
 
Strong gravitational lensing, the bending of light by foreground masses to such an extent that multiple images of the same source are formed, is an important phenomenon that can be used to probe the matter distribution and geometry of the universe. The detailed reconstruction of the light paths can be used to test the nature of the unknown components dark matter and dark energy. These dominate the matter-energy content of the Universe today.

In strong lensing studies, significant progress has been made in recent years in both quantifying the small scale matter distribution, with techniques such as gravitational imaging <cit.> and flux ratio anomalies <cit.>, and measuring the expansion history of the universe, with time-delay cosmography <cit.>. These successes have in part been made possible due to the development of state-of-the-art lens modelling software and algorithms that can extract the required lensing information from high resolution imaging data. Several of the codes used for doing this have been made publicly available to the community (see <ref>).


From the current and upcoming surveys, the sample of known strong lenses is rapidly increasing <cit.> and Treu et al. (submitted).
This enlarged sample enables competitive measurements of the Hubble constant <cit.> as well as can strengthen constraints on dark matter properties on sub-galactic scales <cit.>. To fully exploit the science potential of these new strong lensing data, our modelling tools need to be continually developed and improved. 

In this publication, we present the first public release of , which is an open source multi-purpose strong lens modelling software package.  has been used as a research tool throughout its development. This includes being used for time-delay cosmography <cit.>, lensing substructure analysis <cit.>, line-of-sight shear measurements from an Einstein ring <cit.> and its forecast to measure cosmic shear with Einstein rings <cit.>. Each of these tasks required the modelling of Hubble Space Telescope (HST) imaging data at the pixel level.

We developed  to be stable, flexible and numerically accurate, with a clear Application programming interface (API) that could be used across different platforms. The  software architecture was designed to be able to scale from the current era, where individual lenses are studied in detail, to the case where several hundreds of lenses, from future surveys, will need to be processed.  

Given that an essential part of precision cosmology is the control of systematic errors, it is important for the community to develop multiple independent pipelines. This allows for the cross-checks that are necessary for complex precision measurements. Community standard benchmark efforts also make important contributions. For instance, the time-delay lens modelling challenge <cit.> offers a realistic and blind comparison framework in the domain of cosmography. Similar efforts are underway by the substructure lensing community. The public release of  enables a transparent and effective comparison with other software used in strong lensing.


 includes, but is not limited to, the methods presented in <cit.>. This includes a linear source reconstruction method based on Shapelet <cit.> basis sets, a Particle Swarm Optimization <cit.> for optimizing the non-linear lens model parameters and a MCMC framework for Bayesian parameter inference <cit.>. The software supports a high dynamic range in angular scales, complexity in source and lens models, can handle various image qualities and meets the requirements for diverse science applications. Furthermore,  enables a consistent integration of imaging, time-delay and kinematic data to provide model constraints.

There is continued development and support of  to expand its scope and scientific application for a growing user community.


This paper is structured as follows: In Section <ref>, we provide an overview of the software architecture and deployment, including installation and dependencies. In Section <ref>, we describe the core modules of  with some simple examples of how to use them. We provide some modelling examples in Section <ref> to demonstrate the capabilities and flexibility of . In Section <ref>, we give some science application highlights. We summarize in Section <ref>.

This publication is accompanied by a public release of the source code with extensive online documentation[]. Additionally, we provide [<http://jupyter.org>] notebook examples for different science cases. We refer the reader to these online resources for the most updated version of the software package.






§ PACKAGE OVERVIEW




[language=bash]
pip install lenstronomy –user
 is an open source software package developed in  <cit.>. Distribution is granted through the MIT open source software license.  relies on packages included in the  standard library[] and the proven open-source libraries [<www.numpy.org>], [<www.scipy.org>], <cit.>, and <cit.>. For optimization and parameter inference routines, <cit.> is used, which supports Message Passing Interface (MPI) and allows for massive parallelization of the emcee <cit.> algorithm. 

The stable release version can be installed at the command line via pip:



 is compatible with both [ will not be maintained past 2020] and . The code design and development follow effective practices for scientific computing. The development is coordinated on [] and stable versions are released through [] - the python packaging index. This full integration of  in the  packaging environment allows third party to release and share software packages, analysis routines and work-flows that rely upon .


Extensive tests have been added to   which allows us to develop the package using a Continuous Integration (CI) process. The tests are performed on a virtual environment[] to ensure cross-platform stability and the test coverage report is publicly available[]. Documentation for the various routines and classes are provided through [<www.sphinx-doc.org>] and are available on []. To make use of , a start guide and several application examples are provided in the form of  notebooks in an extension module[].

 is structured in multiple independent modules, each consisting of multiple classes and sub-packages. These modules execute specific tasks and come with well-defined API. Among the core modules are:


  * : Provides the lensing functionalities. The full functionality is supported with an arbitrary superposition of individual lens models (Section <ref>).
    
  * : Enables a variety of surface brightness descriptions and profiles. See Section <ref>.
    
  * : Handles the point sources (Section <ref>).
    
  * : Handling all data specific tasks. Including Point-Spread function (PSF), coordinate systems and noise properties (Section <ref>).
    
  * : Simulates images. Queries the specifications made in , ,  and  (Section <ref>).
    
  * : Performs the sampling of the parameter space. Aside from the  class that offers pre-defined sampling algorithm, the module includes the ,  class to computes the likelihood based on the  module and the  class to handle the parameters and their assigned constraints throughout the sampling (Section <ref>).
    
  * : Higher level API to define fitting sequences and infer model parameters based on the  (Section <ref>).
    
  * : Computes (stellar) kinematics of the deflector galaxy with spherical Jeans modeling based on the mass model specified in  and the lens light model specified in  (Section <ref>).


The core modules perform the individual tasks associated with lens modeling. Each module can be used as a stand-alone package and various extension modules are available. The strength of  is the full integrated support of each individual module when it comes to lens modeling.





In Section <ref>, we briefly describe the main functionalities of the core modules and provide some simple use cases. The interplay between the modules is demonstrated in Section <ref> and <ref>.





§ CORE MODULES OF 

In the following, we describe the basic functionalities of the most important modules of  with some simple examples. More detailed information about the available routines and their use can be accessed through the online documentation.



 §.§  module
 and its sub-packages execute all the purely lensing related tasks of . This includes ray-shooting, solving the lens equation, arrival time computation and non-linear solvers to optimize lens models for specific image configurations. The module allows consistent integration with single and multi plane lensing and an arbitrary superpositions of lens models. There is a wide range of lens models available. For details we refer the reader to the online-documentation.

To demonstrate the design of , we initialize a lens model and then execute some lensing calculations. First, we perform these calculations in a single-plane configuration <ref> and then in a multi-plane configuration <ref>. Then we demonstrate the lens equation solver, that can be applied in both cases with the same API <ref>.




  §.§.§ Single-plane lensing

The default setting of  is to operate in single lens plane mode, where the superpositions of multiple lens models are de-coupled. Below we provide and example of a lens model, that consists of a super-position of an elliptical power-law potential, an external shear and an additional singular isothermal sphere perturber. We initialize the  class, define the parameters for each individual model and perform some standard lensing calculations, such as a backwards ray-shooting of an image plane coordinate, computation of the Fermat potential and evaluating the magnification.

[language=Python]py_sources/lens_model.txt


Additionally, the  class allows to compute the Hessian matrix, shear and convergence, deflection angle and lensing potential. These routines are fully compatible with the  array structure and superposition of an arbitrary number of lens models.



  §.§.§ Multi-plane lensing

The multi-plane setting of  allows the user to place several deflectors at different redshifts. When not further specified, the default cosmology used is that of the  cosmology class. The API to access the lensing functionalities remains the same as for the single-plane setting <ref>. As an example, we take the same setting as in <ref> but place the singular isothermal sphere perturber at a lower redshift.
[language=Python]py_sources/multi_plane.txt

  §.§.§ Lens equation solver

Solving the lens equation to compute the (multiple) image positions of a given source position can be conveniently performed within  and is supported with a general instance of the  class.
[language=Python]py_sources/lens_equation_solver.txt

Two lens models are shown in Figure <ref>. The source position of the example and the solutions of the lens equation (image positions) are marked.



 §.§  module

The  class provides the functionality to describe galaxy surface brightnesses.  supports various analytic profiles as well as representations in shapelet basis sets. Any superposition of different profiles is supported. We refer to the online documentation for the full list of surface brightness profiles available and their parameterisation.

As an example, we initialize two  class, one with a spherical Sersic profile and one with an elliptical Sersic profile. We define the profile parameters and evaluate the surface brightness at a specific position. The two  instances will later be used as the lens light and the source light.

[language=Python]py_sources/light_model.txt

 §.§  module

To accurately predict and model the positions and fluxes of point sources, different numerical procedures are needed compared to extended surface brightness features. The  module manages the different options in describing point sources (e.g. in the image plane or source plane, with fixed magnification or allowed with individual variations thereof) and provides a homogeneous API to access image positions and magnifications. The  class requires an instance of a  class in case of lensed sources and arbitrary superpositions of point sources are allowed.

In the example below, we create two instances of the  class. One with a parameterization in the source plane and one with a parameterization in the image plane. The API to access the necessary information about the image positions and magnifications remain the same in both cases.

[language=Python]py_sources/point_source_model.txt

 §.§  module

The  module consists of two main classes. The  class stores and manages all the imaging data relevant information. This includes the coordinate frame, coordinate-to-pixel transformation (and the inverse), and, in the case of fitting, also noise properties for computing the likelihood of the data given the model. The  class handles the point spread function convolution. Supported are pixelised convolution kernels as well as some analytic profiles.
[language=Python]py_sources/data.txt

 §.§  module

At the core of the  module is the  class.  is the interface to combine all the different components, , ,  and  to model images. The  can be used to model both lens light (un-lensed) and source light (lensed) components.  supports all functionalities of each of those components.  is supported by the class  that specifies and executes the numerical options accessible. Among the numerical options are sub-pixel grid resolution ray-tracing and convolutions that can improve numerical accuracy in the presence of either small lensing perturbations and/or a highly variable surface brightness profile <cit.>.



  §.§.§ Image simulation

As an example, we simulate an image with an instance of  that use instances of the classes we created above. We can define two different  instances for the lens and source light. We define the sub-pixel ray-tracing resolution and whether the PSF convolution is applied on the higher resolution ray-tracing grid or on the degraded pixel image.
[language=Python]py_sources/imsim.txt

Figure <ref> shows the simulated image of the example computed above with the single-plane lens model of Section <ref> (left panel) and for the same Sersic light profiles but with the multi-plane lens model of Section <ref> in the right panel. To illustrate the numerical procedure in how  renders images, we provide another example consisting of a high resolution galaxy profile in Figure <ref>.



  §.§.§ Linear inversion

Parameters corresponding to an an amplitude of a surface brightness distribution have a linear response on the predicted flux values of pixels and can be inferred by a linear minimization based on the data <cit.>.  automatically identifies those parameters. The  module comes with an option such that the linear parameters do not have to be provided when fitting a model to data. This can reduce the number of non-linear parameters significantly, depending on the source complexity to be modelled. In the example provided in Section <ref>, we have 6 linear parameters, the 4 point source amplitudes and the amplitudes of the Sersic profile of the lens and source. To perform the linear inversion, noise properties of the data have to be known or assumed (see Section <ref>). There are different approaches in the literature that perform different types of semi-linear inversions <cit.>.

In the example below, we add the noisy data to the  instance, then delete the knowledge about the linear parameters and solve for the linear coefficients based on the data.
[language=Python]py_sources/linear_inversion.txt

  §.§.§ Likelihood definition

The likelihood of the data given a modelp(d_data|d_model)is key in sampling the parameter posterior distribution (Section <ref>) and also to perform the linear inversion (Section <ref>). The convention  uses to computep(d_data|d_model)is

    log p(d_data|d_model) = ∑_i (d_data,i - d_model,i)^2/2σ_i^2 + const.

The constant term in equation <ref> is not computed by .
The error in each pixel,σ_i, consists of a Gaussian background term,σ_bkg, and a Poisson term based on the count statistics of an individual pixel,f_i, such thatd_model,i / f_iis the Poisson error predicted by the model in the time units of the data, and writes

    σ_i^2 = σ_bkgd^2 + d_model,i/f_i.

In our example of <ref>,f_iis the exposure time for each pixel andσ_bkgdis the background rms value. CCD gain and other components may be incorporated intof_i.

The linear inversion requires an estimate of the noise term,σ_i^2, without the knowledge of the model,d_model,i. For this particular step, the linear inversion is performed based on the Poisson noise expected by the data itself

    σ_linear, i^2 = σ_bkgd^2 + d_data,i/f_i.


The analytic marginalization over the covariance matrix of the linear inversion (Gaussian approximation) can be added <cit.>. Additionally, pixel masks can be set and additional error terms can be plugged in, if required.  provides a direct access to the likelihood of the data given a model and performs all the required computations:
[language=Python]py_sources/likelihood.txt

 §.§  module

The  module manages the execution of the non-linear fitter (e.g. PSO) and the parameter inference (e.g. emcee). The module is built up such that the user can plug in their own customized sampler.
The  Module consists of three major classes: The  class manages the specific likelihood function, consisting of the imaging likelihood and potential other data and constraints and provides the interface to the sampling routines. The  class handles all the model choices and the parameters going in it and supports the  class. Together they handle all the model choices of the user and mitigate them to the external modules and from the external modules back to .
Finally, the  class gives specific examples how the  class can be used to execute specific samplers.


  §.§.§ Parameter handling

External sampling modules require a likelihood function that is consistent with their own parameter handling, mostly in ordered arrays. The likelihood in Section <ref> requires  conventions in terms of lists of keyword arguments.
The  class is the API of the  conventions of parameters used in the  module and the standardized parameter arrays used by external samplers (such as  or ). The  class enables the user further to set options:

  *  keep certain parameters fixed
    
  *  handling of the linear parameters
    
  *  provide additional constraints on the modelling (e.g. fix source profile to point source position etc.)

Below we provide an example where initialize a  class consistent with the options chosen in the previous sections and where we specify fixed and joint parameters. We then perform the mapping between  conventions and formats being used by external sampling modules.
[language=Python]py_sources/parameters.txt

  §.§.§ Likelihood execution

The  class combines the  module and the  class to allow a direct access to the  likelihood from an external sampler. In addition, the  class allows to a simultaneous handling of multi-band data and to incorporate other data, such as time-delay measurements. Below we initialize a  class and execute the likelihood function from an ordered array of parameters.
[language=Python]py_sources/likelihood_class.txt

  §.§.§ Sampling the parameter space

The  class consists of examples of different samplers that can be used. As an example, we run a Particle Swarm Optimization (PSO) with the previous instance of the  class.
[language=Python]py_sources/sampler.txt
Additionally to the example mentioned above, hard bounds on the upper and lower range in parameter space can be provided.





 §.§  module



The  module allows the user to perform a sequence of PSO and/or MCMC runs. The user can run the sequence of fitting routines with taking the results of the previous routine as an input of the next one. The user can specify (optionally) to keep one or multiple parameter classes (lens model, source model, lens light model and source model) fixed during the fitting process of individual runs. Iterative PSF optimization can also be injected within the fitting sequence.
The  class enables a reliable execution of tasks on non-local platforms, such as hight performance clusters and supports parallel executions of likelihood evaluations with the MPI portocoll built in <cit.>.


 §.§  module

Kinematics of the lensing galaxy can provide additional constraints on the lens model and can help to reduce systematics inherent in lensing. The  module provides the support to self-consistently model and predict the velocity dispersion of the lensing galaxy given the surface brightness profile and the lens model upon which the image modelling consists of. The kinematics require the knowledge/assumption of the 3d light and mass profiles. Not all lens and light models can be analytically de-projected. In these cases,  performs a Multi-Gaussian decomposition <cit.> and the de-projection is performed on the individual Gaussian components. The kinematics is computed with spherical Jeans anisotropy modelling (JAM).  supports the stellar anisotropy profiles described in <cit.>. Observational conditions, i.e. the PSF and the aperture are modelled with a spectral rendering approach described in <cit.>.


§ MODELLING EXAMPLES

The design of  and the core modules described in Section <ref> allow a wide range of modelling tasks to be executed. We demonstrated in the previous section how to combine the modules to enable a joint sampling of point source, extended source, lens light and lens deflector model. In this section, we provide five examples in different sub-domains where we demonstrate the capabilities of , source reconstruction <ref>, image de-convolution <ref>, galaxy structural analysis <ref>, quasar-host galaxy decomposition <ref> and multiband fitting <ref>. Detailed example workflows for the different applications are presented in the online documentation.



 §.§ Source reconstruction

Reconstruction techniques are required to describe the source morphology at the scales relevant for given data. The needed complexity may strongly depend on the type of galaxy being lensed and the resolution and signal-to-noise of the data. In Figure <ref>, we provide an example where we reconstruct a source galaxy with complex morphology with a Shapelet basis set with maximum polynomial order,n_max = 29. We are able to represent the features present in the image. The reconstruction of the source reproduces the macroscopic morphology of the input galaxy.


 supports a wide range in models and also allows to superpose analytical models with basis sets <cit.>. The reconstruction for a given set of lens and light model parameters is performed by the linear lens inversion (Section <ref>).  does not provide a Bayesian evidence optimization itself, but this can be performed by the user in post-processing <cit.>.
The performance of the source reconstruction capabilities has been compared with the  software <cit.> and was found to behave well in speed and reconstruction accuracy.




 §.§ Image de-convolution

The source reconstruction in Section <ref> is a combination of two distinct steps: a de-lensing (effectively a non-linear mapping between the image plane and the basis set represented in the source plane) and a de-convolution. By removing the class instance of  from the  module or by removing all the lens models, the linear inversion method built in  effectively performs a de-convolution. This is demonstrated in Figure <ref> where we take a scaled version of the same galaxy as for Figure <ref> with a PSF convolution kernel and apply the same shapelet basis set to describe the image.



 §.§ Galaxy structural analysis
 can be used to extract structural components from galaxy images. This is yet another example where the lensing capabilities of  do not have to be used necessarily. In terms of flexibility,  contains similar features as the well established software <cit.>.  provides an open source alternative in . We also emphasize that  comes along with an MCMC algorithm that can provide covariances between inferred parameters. Additionally,  is able to extract structural parameters from lensed and highly distorted galaxies.




 §.§ Quasar-host galaxy decomposition

In the case where the galaxy contains a quasar, simultaneous decompositions of the host galaxy and a point source component can be performed with . Figure <ref> demonstrates this capability. A joint fitting of two component Sersic profile for the host galaxy and a quasar point source were used as an input model and the different components were recovered in the modelling.



 §.§ Multiband fitting
 is explicitly designed to simultaneously model lenses in multiple imaging bands. The coordinate system definition is image independent and can be shared among multiple data sets. The  module (see <ref>) contains a class  that naturally handles an arbitrary number of data sets, all with their own descriptions (see <ref>). The  class shares the same API as the  class for single images and thus allows to be used with the  and  modules. The non-linear parameters, such as lens model, point source position and light profile shapes are shared among the different bands. The linear parameters, however, are optimized for each band individually. This allows e.g. for different galaxy morphologies in different wavelength. The multi-band approach allows also to model a set of single exposures directly rather than rely on combined post-processed data products. This approach can also be used to model disjoint patches of a cluster arc without requiring a large image.

Precise relative astrometry may be required to perform the lens modelling in a joint coordinate frame.  comes with an iterative routine to align coordinate frames from different bands given a shared model description. This can be used to align images to determine e.g. a point source or the lensing galaxy light center.






§ SCIENCE APPLICATIONS OF 


In this section we provide science examples that  has enabled. In particular, we will highlight specific settings within  that were required to conduct the analysis in the domain of substructure lensing, time-delay cosmography and cosmic shear measurements.

As the size and diversity of known strong lensing systems increases, a wider variety of science topics can be tackled, such as time-delay cosmography with lensed SNIa <cit.>, single star micro-lensing cluster arcs <cit.>, double source-plane cosmography <cit.> or cosmic shear measurements with Einstein rings <cit.>.

We emphasize that the choices when modelling a specific system remains the task of the user.  may facilitate scientific analysis of strong lenses, but should be accompanied by rigorous testing of the specific method applied, desirably through simulations.  allows to simulate accurate mock data with very complex structure in lens and source and therefore facilitate the exploration of systematics in the analysis.




 §.§ Lensing substructure quantification


Modeling substructure within a deflector can be done by combining multiple lens models (e.g. a main deflector, external shear and a small clump) within one instance of  (Section <ref>). Substructure can be represented by a NFW profile, truncated NFW profile or a variety of other profiles implemented in . A superposition of an arbitrary number of lens profiles based on a mass function is possible and has been used by <cit.>. The multi-plane setting also allows to model the full line-of-sight contribution of field halos.

Lensing substructure is expected to perturb the deflection angles at the milliarcsecond scale, which is  e.g. below the pixel resolution of an HST image. To detect and/or quantify those astrometric anomalies, the numerical description in the modelling must accurately capture these small effects. Sub-grid resolution ray-tracing is required to perform such analysis on HST images. Accuracy comes with a computational cost and  enables the user to set the right numerical description for the problem in hand.

Additionally, the source surface brightness resolution captured by the model must be sufficiently high resolution not to falsely attribute residuals in the image reconstruction to lensing substructure when they originate from missing scales in the source reconstruction. In <cit.>, we specifically enhanced the source reconstruction resolution where we proposed a clump to be present.




 §.§ Time-delay cosmography

The workflow API facilitates a fast exploration of various choices and options in all the aspects of lens modelling. It is necessary to explore the degeneracies inherent in lensing and their impact on the cosmographic inference. In <cit.>, we explored the source scale degeneracy by explicitly mapping out the source size with the shapelet scale parameter. In <cit.> we combined 128 different model settings based on their relative Bayesian Information Criteria to provide a posterior distribution reflecting uncertainties in the model choices. The built-in time-delay likelihood and the  module provide the full support for a fully self-consistent analysis of imaging, time-delay and kinematic data to derive cosmographic constraints. 




 §.§ Cosmic shear measurements

We applied  to model and reconstruct the non-linear shear distortions that couple to the main deflector in an Einstein ring lens in the COSMOS field <cit.>. The detailed modelling of the HST imaging of the Einstein ring allowed us to constrain the shear parameters to very high precision.  is aimed to have the flexibility to model hundreds or even the aimed thousands of Einstein ring lenses expected in future space based surveys to provide comparable and complementary cosmic shear measurements, as been fore-casted by <cit.>.





§ CONCLUSION

We have presented  , a multi-purpose open source lens modelling software package in . We outlined its design and the major supported features.  has been used to study the expansion history of the universe with time-delay cosmography and to probe dark matter properties by substructure lensing. The modular nature of  provides support for a wide range of scientific studies. We have provided modelling and science examples to illustrate some of the capabilities of  . The software is distributed under the MIT license. The software is actively used and maintained and the latest stable release will be distributed through the python packaging index. We refer to the online documentation[], where the latest starter guide, example notebooks, source code and installation guidelines can be found. 





§ ACKNOWLEDGEMENTS

SB thanks Alexandre Refregier and Tommaso Treu for useful comments and support that enabled the development and public release of . SB thanks Joel Akeret for valuable software engineering support and advices in design and good practice software development. The software was and is actively in use by multiple users. We especially thank Anowar Shajib, Daniel Gilman, Felix A. Kuhn, Kevin Fusshoeller, Cyril Welschen, Felix Mayor, Remy Joseph, Martin Millon, Xuheng Ding and Brian Nord. Their valuable feedback lead to improvements in stability, bug fixing, more general design implementations and extended the capabilities of .

SB acknowledges support from NASA through grant HST-GO-14254 and HST-GO-14630 from the Space Telescope Science Institute, which is operated by the Association of Universities for Research in Astronomy, Inc., under NASA contract NAS 5-26555.





§ PUBLICLY AVAILABLE LENS MODELLING SOFTWARE

A collection of public available lens modelling software presented in the literature is listed below. We refer to specific literature and online documentations for the scope of each individual software and its current development status.



  * <cit.>[<http://www.physics.rutgers.edu/ keeton/gravlens/>]: A standard lens model software widely used in the community. Includes a wide range of basic lensing calculations and comes with an extension that adds many routines for modeling strong lenses.
    
  * <cit.>[<
http://projets.lam.fr/projects/lenstool/wiki>]: A lensing software for modeling mass distribution of galaxies and clusters. Comes with a Bayesian inference method.
    
  * <cit.>[<http://www.physik.uzh.ch/ psaha/lens/pixelens.php>]: A program for reconstructing gravitational lenses from multiple-imaged point sources. It can explore ensembles of lens-models consistent with given data on several different lens systems at once.
    
  * <cit.>[<
http://www.slac.stanford.edu/ oguri/glafic/>]: Support for many mass models and parametric light models. Simulats lensed extended images with PSF convolution.
    
  * <cit.>[<
http://glenco.github.io/lensed/>]: Performs forward parametric modelling of strong lenses. Supports computing on GPUs.
    
  * <cit.>[<http://jamesnightingale.net/AutoLens/>]: An automated modeling suite for the analysis of galaxy-scale strong gravitational lenses. Incorporates an adaptive grid source reconstruction technique.
    
  * <cit.>[<https://github.com/yasharhezaveh/Ensai>]: Estimating parameters of strong gravitational lenses with convolutional neural networks.
    
  * <cit.>[<https://github.com/owertz/pySPT>]: A package dedicated to the Source Position Transformation (SPT). The main goal of pySPT is to provide a tool to quantify the systematic errors that are introduced by the SPT in lens modeling.






elsarticle-harv