From db68ce70f6dcd7a5db7965993a0454eec95d4d8e Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:28:44 +0000 Subject: [PATCH 01/22] =?UTF-8?q?refactor:=20restructure=20chapters=20?= =?UTF-8?q?=E2=80=94=20search=20chaining=20folds=20into=20chapter=202,=20p?= =?UTF-8?q?ixelizations=20become=20chapter=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chapter 3 (search chaining) is dissolved: tutorials 1, 2 and 6 move to the end of chapter 2 as tutorials 9 (search chaining), 10 (prior passing) and 11 (SLaM); tutorials 3, 4 and 5 are deleted. Chapter 4 (pixelizations) is renamed chapter 3, with tutorials 5-11 renumbered to 6-12 to make room for a new tutorial 5 (bayesian_formalism, added next). An empty chapter_4_scaling_up_lensing is scaffolded for the new scaling-up chapter. File moves only (plus the no_run.yaml borders rename); content updates to titles, cross-references and prose land in follow-up commits. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- config/build/no_run.yaml | 2 +- .../tutorial_10_prior_passing.ipynb} | 0 .../tutorial_11_slam.ipynb} | 0 .../tutorial_9_search_chaining.ipynb} | 0 .../README.md | 0 .../tutorial_10_fit_problems.ipynb} | 0 .../tutorial_11_brightness_adaption.ipynb} | 0 ...tutorial_12_adaptive_regularization.ipynb} | 0 .../tutorial_1_pixelizations.ipynb | 0 .../tutorial_2_mappers.ipynb | 0 .../tutorial_3_inversions.ipynb | 0 .../tutorial_4_bayesian_regularization.ipynb | 0 .../tutorial_6_borders.ipynb} | 0 .../tutorial_7_lens_modeling.ipynb} | 0 .../tutorial_8_adaptive_pixelization.ipynb} | 0 .../tutorial_9_model_fit.ipynb} | 0 notebooks/chapter_3_search_chaining/README.md | 18 - .../tutorial_3_lens_and_source.ipynb | 592 ------------------ .../tutorial_4_x2_lens_galaxies.ipynb | 515 --------------- .../tutorial_5_complex_source.ipynb | 511 --------------- .../tutorial_10_prior_passing.py} | 0 .../tutorial_11_slam.py} | 0 .../tutorial_9_search_chaining.py} | 0 .../README.md | 0 .../__init__.py | 0 .../introduction | 0 .../tutorial_10_fit_problems.py} | 0 .../tutorial_11_brightness_adaption.py} | 0 .../tutorial_12_adaptive_regularization.py} | 0 .../tutorial_1_pixelizations.py | 0 .../tutorial_2_mappers.py | 0 .../tutorial_3_inversions.py | 0 .../tutorial_4_bayesian_regularization.py | 0 .../tutorial_6_borders.py} | 0 .../tutorial_7_lens_modeling.py} | 0 .../tutorial_8_adaptive_pixelization.py} | 0 .../tutorial_9_model_fit.py} | 0 scripts/chapter_3_search_chaining/README.md | 18 - .../chapter_3_search_chaining/introduction | 12 - .../tutorial_3_lens_and_source.py | 359 ----------- .../tutorial_4_x2_lens_galaxies.py | 329 ---------- .../tutorial_5_complex_source.py | 323 ---------- .../__init__.py | 0 43 files changed, 1 insertion(+), 2678 deletions(-) rename notebooks/{chapter_3_search_chaining/tutorial_2_prior_passing.ipynb => chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb} (100%) rename notebooks/{chapter_3_search_chaining/tutorial_6_slam.ipynb => chapter_2_lens_modeling/tutorial_11_slam.ipynb} (100%) rename notebooks/{chapter_3_search_chaining/tutorial_1_search_chaining.ipynb => chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb} (100%) rename notebooks/{chapter_4_pixelizations => chapter_3_pixelizations}/README.md (100%) rename notebooks/{chapter_4_pixelizations/tutorial_9_fit_problems.ipynb => chapter_3_pixelizations/tutorial_10_fit_problems.ipynb} (100%) rename notebooks/{chapter_4_pixelizations/tutorial_10_brightness_adaption.ipynb => chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb} (100%) rename notebooks/{chapter_4_pixelizations/tutorial_11_adaptive_regularization.ipynb => chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb} (100%) rename notebooks/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_1_pixelizations.ipynb (100%) rename notebooks/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_2_mappers.ipynb (100%) rename notebooks/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_3_inversions.ipynb (100%) rename notebooks/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_4_bayesian_regularization.ipynb (100%) rename notebooks/{chapter_4_pixelizations/tutorial_5_borders.ipynb => chapter_3_pixelizations/tutorial_6_borders.ipynb} (100%) rename notebooks/{chapter_4_pixelizations/tutorial_6_lens_modeling.ipynb => chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb} (100%) rename notebooks/{chapter_4_pixelizations/tutorial_7_adaptive_pixelization.ipynb => chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb} (100%) rename notebooks/{chapter_4_pixelizations/tutorial_8_model_fit.ipynb => chapter_3_pixelizations/tutorial_9_model_fit.ipynb} (100%) delete mode 100644 notebooks/chapter_3_search_chaining/README.md delete mode 100644 notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb delete mode 100644 notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb delete mode 100644 notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb rename scripts/{chapter_3_search_chaining/tutorial_2_prior_passing.py => chapter_2_lens_modeling/tutorial_10_prior_passing.py} (100%) rename scripts/{chapter_3_search_chaining/tutorial_6_slam.py => chapter_2_lens_modeling/tutorial_11_slam.py} (100%) rename scripts/{chapter_3_search_chaining/tutorial_1_search_chaining.py => chapter_2_lens_modeling/tutorial_9_search_chaining.py} (100%) rename scripts/{chapter_4_pixelizations => chapter_3_pixelizations}/README.md (100%) rename scripts/{chapter_3_search_chaining => chapter_3_pixelizations}/__init__.py (100%) rename scripts/{chapter_4_pixelizations => chapter_3_pixelizations}/introduction (100%) rename scripts/{chapter_4_pixelizations/tutorial_9_fit_problems.py => chapter_3_pixelizations/tutorial_10_fit_problems.py} (100%) rename scripts/{chapter_4_pixelizations/tutorial_10_brightness_adaption.py => chapter_3_pixelizations/tutorial_11_brightness_adaption.py} (100%) rename scripts/{chapter_4_pixelizations/tutorial_11_adaptive_regularization.py => chapter_3_pixelizations/tutorial_12_adaptive_regularization.py} (100%) rename scripts/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_1_pixelizations.py (100%) rename scripts/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_2_mappers.py (100%) rename scripts/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_3_inversions.py (100%) rename scripts/{chapter_4_pixelizations => chapter_3_pixelizations}/tutorial_4_bayesian_regularization.py (100%) rename scripts/{chapter_4_pixelizations/tutorial_5_borders.py => chapter_3_pixelizations/tutorial_6_borders.py} (100%) rename scripts/{chapter_4_pixelizations/tutorial_6_lens_modeling.py => chapter_3_pixelizations/tutorial_7_lens_modeling.py} (100%) rename scripts/{chapter_4_pixelizations/tutorial_7_adaptive_pixelization.py => chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py} (100%) rename scripts/{chapter_4_pixelizations/tutorial_8_model_fit.py => chapter_3_pixelizations/tutorial_9_model_fit.py} (100%) delete mode 100644 scripts/chapter_3_search_chaining/README.md delete mode 100755 scripts/chapter_3_search_chaining/introduction delete mode 100644 scripts/chapter_3_search_chaining/tutorial_3_lens_and_source.py delete mode 100644 scripts/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.py delete mode 100644 scripts/chapter_3_search_chaining/tutorial_5_complex_source.py rename scripts/{chapter_4_pixelizations => chapter_4_scaling_up_lensing}/__init__.py (100%) mode change 100755 => 100644 diff --git a/config/build/no_run.yaml b/config/build/no_run.yaml index a7b9259..3eb2e69 100644 --- a/config/build/no_run.yaml +++ b/config/build/no_run.yaml @@ -26,7 +26,7 @@ # banner. Investigate the failure, fix the underlying bug, and remove # the NEEDS_FIX marker. -- tutorial_5_borders # NEEDS_FIX 2026-08-04 - cap-induced, not a mask problem: +- tutorial_6_borders # NEEDS_FIX 2026-08-04 - cap-induced, not a mask problem: # fails only under PYAUTO_SMALL_DATASETS (IndexError: index 371 out of bounds # for axis 0 with size 272) and passes on the same dataset files without the # cap. Hardcoded pix/border indices outrun the capped mesh. Fix by decoupling diff --git a/notebooks/chapter_3_search_chaining/tutorial_2_prior_passing.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb similarity index 100% rename from notebooks/chapter_3_search_chaining/tutorial_2_prior_passing.ipynb rename to notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb diff --git a/notebooks/chapter_3_search_chaining/tutorial_6_slam.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb similarity index 100% rename from notebooks/chapter_3_search_chaining/tutorial_6_slam.ipynb rename to notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb diff --git a/notebooks/chapter_3_search_chaining/tutorial_1_search_chaining.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb similarity index 100% rename from notebooks/chapter_3_search_chaining/tutorial_1_search_chaining.ipynb rename to notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb diff --git a/notebooks/chapter_4_pixelizations/README.md b/notebooks/chapter_3_pixelizations/README.md similarity index 100% rename from notebooks/chapter_4_pixelizations/README.md rename to notebooks/chapter_3_pixelizations/README.md diff --git a/notebooks/chapter_4_pixelizations/tutorial_9_fit_problems.ipynb b/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_9_fit_problems.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_10_brightness_adaption.ipynb b/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_10_brightness_adaption.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_11_adaptive_regularization.ipynb b/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_11_adaptive_regularization.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_1_pixelizations.ipynb b/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_1_pixelizations.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_2_mappers.ipynb b/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_2_mappers.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_3_inversions.ipynb b/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_3_inversions.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_4_bayesian_regularization.ipynb b/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_4_bayesian_regularization.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_5_borders.ipynb b/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_5_borders.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_6_lens_modeling.ipynb b/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_6_lens_modeling.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.ipynb b/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb diff --git a/notebooks/chapter_4_pixelizations/tutorial_8_model_fit.ipynb b/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb similarity index 100% rename from notebooks/chapter_4_pixelizations/tutorial_8_model_fit.ipynb rename to notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb diff --git a/notebooks/chapter_3_search_chaining/README.md b/notebooks/chapter_3_search_chaining/README.md deleted file mode 100644 index 2e2091f..0000000 --- a/notebooks/chapter_3_search_chaining/README.md +++ /dev/null @@ -1,18 +0,0 @@ -In chapter 3, we introduce non-linear search chaining, whereby lens modeling pipelines are composed which each fit a -different lens model. - -**Colab** links to every tutorial are included. - -# Files - -- [Tutorial 1: Search Chaining](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_1_search_chaining.ipynb) — Breaking the lens modeling procedure into a chained sequence of model-fits. - -- [Tutorial 2: Prior Passing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_2_prior_passing.ipynb) — How the results of earlier searches are passed to later searches. - -- [Tutorial 3: Lens and Source](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb) — Fitting the lens's light followed by its mass using chained searches. - -- [Tutorial 4: Two Lens galaxies](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb) — Modeling a strong lens with two lens galaxies using chained searches. - -- [Tutorial 5: Complex Source](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb) — Using multiple light profiles to fit a complex and irregular source using chained searches. - -- [Tutorial 6: SLaM](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_6_slam.ipynb) — Template pipelines for fitting lens model is standardized ways. diff --git a/notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb b/notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb deleted file mode 100644 index 00e1ab9..0000000 --- a/notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb +++ /dev/null @@ -1,592 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tutorial 3: Lens and Source\n", - "===========================\n", - "\n", - "In this tutorial, we demonstrate search chaining using three searches to fit strong lens `Imaging` which includes the\n", - "lens galaxy's light.\n", - "\n", - "The crucial point to note is that for many lenses the lens galaxy's light can be fitted and subtracted reasonably\n", - "well before we attempt to fit the source galaxy. This makes sense, as fitting the lens's light (which is an elliptical\n", - "blob of light in the centre of the imaging) looks nothing like the source's light (which is a ring of light)! Formally,\n", - "we would say that these two model components (the lens's light and source's light) are not covariate.\n", - "\n", - "So, as a newly trained lens modeler, what does the lack of covariance between these parameters make you think?\n", - "Hopefully, you're thinking, why should I bother fitting the lens and source galaxy simultaneously? Surely we can\n", - "find the right regions of non-linear parameter space by fitting each separately first? This is what we're going to do\n", - "in this tutorial, using a pipeline composed of a modest 3 searches:\n", - "\n", - " 1) Fit the lens galaxy's light, ignoring the source.\n", - " 2) Fit the source-galaxy's light (and therefore lens galaxy's mass), ignoring the len`s light.\n", - " 3) Fit both simultaneously, using these results to initialize our starting location in parameter space.\n", - "\n", - "Of course, given that we do not care for the errors in searches 1 and 2, we will set up our non-linear search to\n", - "perform sampling as fast as possible!\n", - "\n", - "__Contents__\n", - "\n", - "- **Dated Tutorial:** This example tutorial was written ~4 years ago, when **PyAutoLens** was in its infancy and had a.\n", - "- **Initial Setup:** we'll use strong lensing data, where.\n", - "- **Paths:** All three searches will use the same `path_prefix`, so we write it here to avoid repetition.\n", - "- **Notes:** We use linear light profiles througout this script, given that the model is quite complex and this.\n", - "- **Wrap Up:** Summary of the script and next steps.\n", - "\n", - "__Dated Tutorial__\n", - "\n", - "This example tutorial was written ~4 years ago, when **PyAutoLens** was in its infancy and had a number of limitations:\n", - "\n", - " - The non-linear search used MultiNest or dynesty, which were less reliable (e.g. more likely to infer a local maxima\n", - " for complex lens models) and less efficient than Nautilus.\n", - "\n", - " - Linear light profiles and techniques like a Multi-Gaussian Expansion were not available.\n", - "\n", - "With all the new features added to **PyAutoLens** since, we no longer recommend that one breaks down the fitting of\n", - "the lens and source galaxy's light into separate searches, as perform in this search chaining example. Instead, we\n", - "would recommend you fit the lens and source simultaneously, using linear light profiles to make the model simpler\n", - "or a Multi-Gaussian Expansion.\n", - "\n", - "However, the example is still useful for demonstrating the core concepts of search chaining, which is still vital\n", - "for fitting complex lens model. Therefore, we recommend you still read through this tutorial and try to get a good\n", - "understanding of how search chaining works, but bear in mind that the example is a little dated and we now recommend\n", - "you fit the lens and source simultaneously!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Google Colab Setup__\n", - "\n", - "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", - "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", - "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", - "your own installation) it does nothing, and you can run it safely.\n", - "\n", - "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", - "type\" -> \"Hardware accelerator\" before running the notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " import google.colab\n", - "except ImportError:\n", - " from autolens import setup_colab as _setup_colab\n", - "else:\n", - " import importlib\n", - " import subprocess\n", - " import sys\n", - "\n", - " subprocess.check_call(\n", - " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", - " )\n", - " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", - "\n", - "_setup_colab.setup(\"howtolens\")" - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "\n", - "from autolens import jax_wrapper # Sets JAX environment before other imports\n", - "\n", - "# from autolens import setup_notebook; setup_notebook()\n", - "\n", - "from pathlib import Path\n", - "import autofit as af\n", - "import autolens as al\n", - "import autolens.plot as aplt" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Initial Setup__\n", - "\n", - "we'll use strong lensing data, where:\n", - "\n", - " - The lens galaxy's light is an `Sersic`.\n", - " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", - " - The source galaxy's light is an `Exponential`.\n", - " \n", - "This image was fitted throughout chapter 2." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "dataset_name = \"lens_sersic\"\n", - "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Dataset Auto-Simulation__\n", - "\n", - "If the dataset does not already exist on your system, it will be created by running the corresponding\n", - "simulator script. This ensures that all example scripts can be run without manually simulating data first." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "if al.util.dataset.should_simulate(str(dataset_path)):\n", - " import subprocess\n", - " import sys\n", - "\n", - " subprocess.run(\n", - " [sys.executable, \"scripts/simulator/lens_sersic.py\"],\n", - " check=True,\n", - " )\n", - "\n", - "dataset = al.Imaging.from_fits(\n", - " data_path=dataset_path / \"data.fits\",\n", - " noise_map_path=dataset_path / \"noise_map.fits\",\n", - " psf_path=dataset_path / \"psf.fits\",\n", - " pixel_scales=0.1,\n", - ")" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Paths__\n", - "\n", - "All three searches will use the same `path_prefix`, so we write it here to avoid repetition." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "path_prefix = Path(\"howtolens\") / \"chapter_3\" / \"tutorial_3_lens_and_source\"" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Masking (Search 1)__\n", - "\n", - "We need to choose our mask for the analysis. We use an annular mask that does not remove the source's light \n", - "from the fit, assuming the lens light model will still be sufficiently accurate to reveal the source in the \n", - "second search." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "mask = al.Mask2D.circular(\n", - " shape_native=dataset.shape_native, pixel_scales=dataset.pixel_scales, radius=3.0\n", - ")\n", - "\n", - "dataset = dataset.apply_mask(mask=mask)\n", - "\n", - "aplt.subplot_imaging_dataset(dataset=dataset)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 1)__\n", - "\n", - "Search 1 fits a lens model where:\n", - "\n", - " - The lens galaxy's light is a linear `Sersic` bulge [6 parameters].\n", - " \n", - " - The lens galaxy's mass and source galaxy are omitted.\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=6.\n", - "\n", - "__Notes__\n", - "\n", - "We use linear light profiles througout this script, given that the model is quite complex and this helps\n", - "simplify it." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "model_1 = af.Collection(\n", - " galaxies=af.Collection(lens=af.Model(al.Galaxy, redshift=0.5, bulge=al.lp.Sersic)),\n", - ")" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `info` attribute shows the model in a readable format." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "print(model_1.info)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Search + Analysis + Model-Fit (Search 1)__" - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "analysis_1 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_1 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[1]_light[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=75,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_1 = search_1.fit(model=model_1, analysis=analysis_1)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Result (Search 1)__\n", - "\n", - "The results which are used for prior passing are summarised in the `info` attribute." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "print(result_1.info)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Masking (Search 2)__\n", - "\n", - "Search 2 we are only fitting the source's light, thus we can apply an annular mask that removes regions of the\n", - "image that contained only the lens's light." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "dataset = al.Imaging.from_fits(\n", - " data_path=dataset_path / \"data.fits\",\n", - " noise_map_path=dataset_path / \"noise_map.fits\",\n", - " psf_path=dataset_path / \"psf.fits\",\n", - " pixel_scales=0.1,\n", - ")\n", - "\n", - "mask = al.Mask2D.circular_annular(\n", - " shape_native=dataset.shape_native,\n", - " pixel_scales=dataset.pixel_scales,\n", - " inner_radius=0.6,\n", - " outer_radius=2.4,\n", - ")\n", - "\n", - "dataset = dataset.apply_mask(mask=mask)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 2)__\n", - "\n", - "Search 2 fits a lens model where:\n", - "\n", - " - The lens galaxy's light is a linear `Sersic` bulge [Parameters fixed to results of search 1].\n", - " \n", - " - The lens galaxy's total mass distribution is an `Isothermal` with `ExternalShear` [7 parameters].\n", - " \n", - " - The source galaxy's light is a linear `Sersic` [6 parameters].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=13.\n", - "\n", - "Search 2, we fit the source-`galaxy's light and fix the lens light model to the model inferred in search 1, \n", - "ensuring the image we has the foreground lens subtracted. We do this below by passing the lens light as an `instance` \n", - "object.\n", - "\n", - "By passing an `instance`, we are telling **PyAutoLens** that we want it to pass the maximum log likelihood result of \n", - "that search and use those parameters as fixed values in the model. The model parameters passed as an `instance` are not \n", - "free parameters fitted for by the non-linear search, thus this reduces the dimensionality of the non-linear search \n", - "making model-fitting faster and more reliable. \n", - " \n", - "Thus, search 2 includes the lens light model from search 1, but it is completely fixed during the model-fit!\n", - "\n", - "We also use the centre of the `bulge` to initialize the priors on the lens's `mass`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "mass = af.Model(al.mp.Isothermal)\n", - "mass.centre_0 = result_1.model.galaxies.lens.bulge.centre_0\n", - "mass.centre_1 = result_1.model.galaxies.lens.bulge.centre_1\n", - "\n", - "model_2 = af.Collection(\n", - " galaxies=af.Collection(\n", - " lens=af.Model(\n", - " al.Galaxy,\n", - " redshift=0.5,\n", - " bulge=result_1.instance.galaxies.lens.bulge,\n", - " mass=mass,\n", - " shear=al.mp.ExternalShear,\n", - " ),\n", - " source=af.Model(al.Galaxy, redshift=1.0, bulge=al.lp.Sersic),\n", - " ),\n", - ")\n", - "\n", - "analysis_2 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_2 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[2]_mass[sie]_source[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=100,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_2 = search_2.fit(model=model_2, analysis=analysis_2)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Result (Search 2)__\n", - "\n", - "The results which are used for prior passing are summarised in the `info` attribute." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "print(result_2.info)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Masking (Search 3)__\n", - "\n", - "Search 3 we fit the lens and source, therefore we will use a large circular mask." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "dataset = al.Imaging.from_fits(\n", - " data_path=dataset_path / \"data.fits\",\n", - " noise_map_path=dataset_path / \"noise_map.fits\",\n", - " psf_path=dataset_path / \"psf.fits\",\n", - " pixel_scales=0.1,\n", - ")\n", - "\n", - "mask_radius = 3.0\n", - "\n", - "mask = al.Mask2D.circular(\n", - " shape_native=dataset.shape_native,\n", - " pixel_scales=dataset.pixel_scales,\n", - " radius=mask_radius,\n", - ")\n", - "\n", - "dataset = dataset.apply_mask(mask=mask)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 3)__\n", - "\n", - "Search 3 fits a lens model where:\n", - "\n", - " - The lens galaxy's light is a linear `Sersic` bulge [6 Parameters: priors initialized from search 1].\n", - " \n", - " - The lens galaxy's total mass distribution is an `Isothermal` with `ExternalShear` [7 parameters: priors\n", - " initialized from search 2].\n", - " \n", - " - The source galaxy's light is a linear `Sersic` [6 parameters: priors initialized from search 2].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=23.\n", - "\n", - "There isn't a huge amount to say about this search, we have initialized the priors on all of our models parameters\n", - "and the only thing that is left to do is fit for all model components simultaneously, with slower Nautilus settings\n", - "that will give us more accurate parameter values and errors." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "model_3 = af.Collection(\n", - " galaxies=af.Collection(\n", - " lens=af.Model(\n", - " al.Galaxy,\n", - " redshift=0.5,\n", - " bulge=result_1.model.galaxies.lens.bulge,\n", - " mass=result_2.model.galaxies.lens.mass,\n", - " ),\n", - " source=af.Model(\n", - " al.Galaxy, redshift=1.0, bulge=result_2.model.galaxies.source.bulge\n", - " ),\n", - " ),\n", - ")\n", - "\n", - "analysis_3 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_3 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[3]_light[bulge]_mass[sie]_source[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=150,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_3 = search_3.fit(model=model_3, analysis=analysis_3)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Result (Search 3)__\n", - "\n", - "The final results are summarised in the `info` attribute." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "print(result_3.info)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Wrap Up__\n", - "\n", - "And there we have it, a sequence of searches that breaks modeling the lens and source galaxy into 3 simple searches. \n", - "This approach is much faster than fitting the lens and source simultaneously from the beginning. Instead of asking you \n", - "questions at the end of this chapter`s tutorials, I'm going to ask questions which I then answer. This will hopefully \n", - "get you thinking about how to approach pipeline writing.\n", - "\n", - " 1) Can this pipeline really be generalized to any lens? Surely the radii of the masks depends on the lens and source \n", - " galaxies?\n", - "\n", - "Whilst this is true, we chose mask radii above that are `excessive` and masks out a lot more of the image than just \n", - "the source (which, in terms of run-time, is desirable). Thus, provided you know the Einstein radius distribution of \n", - "your lens sample, you can choose mask radii that will masks out every source in your sample adequately (and even if \n", - "some of the source is still there, who cares? The fit to the lens galaxy will be okay).\n", - "\n", - "However, the template pipelines provided on the `autolens_workspace` simply use circular masks for every search and do\n", - "not attempt to use different masks for the lens light fit and source fit. This is to keep things simple (at the expense\n", - "of slower run times). It is up to you if you want to adapt these scripts to try and use more specific masking strategies.\n", - "\n", - "__Dated Tutorial__\n", - "\n", - "In fact, we now strongly recommend that you do not change masks between each search when using search chaining. \n", - "This is because it is very fiddly, and can waste a lot of your time refining masks to ensure they are suitable for\n", - "each lens. We recommend you always just use a large circular mask which is big enough to include the entire lens and \n", - "source of all lenses in your sample. This will save you a lot of time and means lens modeling can be automated much\n", - "easier.\n", - "\n", - "Building on the discussion above, a known limitation of using a pipeline which fits the lens light first, then the\n", - "source, is that it will do a poor job deblending the lens and source light if the Einstein radius is low. This often\n", - "leads the mass model to infer incorrect solutions which fit residuals from the lens light subtraction.\n", - "\n", - "This is why, given all the improvements to autolens, we now recommend that you do not use this pipeline and instead\n", - "always begin by fitting the lens and source simultaneously. This can use linear light profiles of a Multi-Gaussian\n", - "Expansion. " - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb b/notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb deleted file mode 100644 index 01f53e5..0000000 --- a/notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb +++ /dev/null @@ -1,515 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tutorial 4: Two Lens galaxies\n", - "=============================\n", - "\n", - "Up to now, all the images we've fitted had one lens galaxy. However, we saw in chapter 1 that our lens plane can\n", - "consist of multiple galaxies which each contribute to the strong lensing. Multi-galaxy systems are challenging to\n", - "model, because they add an extra 5-10 parameters to the non-linear search and, more problematically, the degeneracies\n", - "between the parameters of the mass profiles of the two galaxies can be severe.\n", - "\n", - "However, we can still break their analysis down using multiple searches and give ourselves a shot at getting a good\n", - "lens model. Here, we're going to fit a double lens system, fitting as much about each individual lens galaxy before\n", - "fitting them simultaneously.\n", - "\n", - "Up to now, I've put a focus on an analysis being general. The script we write in this example is going to be the\n", - "opposite, specific to the image we're modeling. Fitting multiple lens galaxies is really difficult and writing a\n", - "pipeline that we can generalize to many lenses isn't currently possible.\n", - "\n", - "__Contents__\n", - "\n", - "- **Initial Setup:** we'll use new strong lensing data, where.\n", - "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", - "- **Paths:** All four searches will use the same `path_prefix`, so we write it here to avoid repetition.\n", - "- **Search Chaining Approach:** Looking at the image, there are two blobs of light corresponding to the two lens galaxies.\n", - "- **Wrap Up:** Summary of the script and next steps." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Google Colab Setup__\n", - "\n", - "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", - "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", - "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", - "your own installation) it does nothing, and you can run it safely.\n", - "\n", - "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", - "type\" -> \"Hardware accelerator\" before running the notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " import google.colab\n", - "except ImportError:\n", - " from autolens import setup_colab as _setup_colab\n", - "else:\n", - " import importlib\n", - " import subprocess\n", - " import sys\n", - "\n", - " subprocess.check_call(\n", - " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", - " )\n", - " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", - "\n", - "_setup_colab.setup(\"howtolens\")" - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "\n", - "from autolens import jax_wrapper # Sets JAX environment before other imports\n", - "\n", - "# from autolens import setup_notebook; setup_notebook()\n", - "\n", - "from pathlib import Path\n", - "import autofit as af\n", - "import autolens as al\n", - "import autolens.plot as aplt" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Initial Setup__\n", - "\n", - "we'll use new strong lensing data, where:\n", - "\n", - " - There are two lens galaxy's whose `LightProfile`'s are both linear `Sersic`'s.\n", - " - There are two lens galaxy's whose `MassProfile`'s are both `Isothermal`'s\n", - " - The source galaxy's light is an `Exponential`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "dataset_name = \"x2_lens_galaxies\"\n", - "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Dataset Auto-Simulation__\n", - "\n", - "If the dataset does not already exist on your system, it will be created by running the corresponding\n", - "simulator script. This ensures that all example scripts can be run without manually simulating data first." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "if al.util.dataset.should_simulate(str(dataset_path)):\n", - " import subprocess\n", - " import sys\n", - "\n", - " subprocess.run(\n", - " [sys.executable, \"scripts/simulator/lens_x2.py\"],\n", - " check=True,\n", - " )\n", - "\n", - "dataset = al.Imaging.from_fits(\n", - " data_path=dataset_path / \"data.fits\",\n", - " noise_map_path=dataset_path / \"noise_map.fits\",\n", - " psf_path=dataset_path / \"psf.fits\",\n", - " pixel_scales=0.05,\n", - ")" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Mask__\n", - "\n", - "We need to choose our mask for the analysis. Given the lens light is present in the image we'll need to include all \n", - "of its light in the central regions of the image, so lets use a circular mask. \n", - "\n", - "We'll use this mask in all four searches." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "mask_radius = 3.0\n", - "\n", - "mask = al.Mask2D.circular(\n", - " shape_native=dataset.shape_native,\n", - " pixel_scales=dataset.pixel_scales,\n", - " radius=mask_radius,\n", - ")\n", - "\n", - "dataset = dataset.apply_mask(mask=mask)\n", - "\n", - "aplt.subplot_imaging_dataset(dataset=dataset)\n" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Paths__\n", - "\n", - "All four searches will use the same `path_prefix`, so we write it here to avoid repetition." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "path_prefix = Path(\"howtolens\") / \"chapter_3\" / \"tutorial_4_x2_lens_galaxies\"" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Search Chaining Approach__\n", - "\n", - "Looking at the image, there are two blobs of light corresponding to the two lens galaxies. The source's light is also \n", - "pretty complex and the arcs don't posses the rotational symmetry we're used to seeing up to now. \n", - "Multi-galaxy ray-tracing is just a lot more complicated, which means so is modeling it!\n", - "\n", - "So, how can we break the lens modeling up? As follows:\n", - "\n", - " 1) Fit and subtract the light of each lens galaxy individually.\n", - " 2) Use these results to initialize each lens galaxy's total mass distribution.\n", - "\n", - "So, with this in mind, we'll perform an analysis using searches:\n", - "\n", - " 1) Fit the light of the lens galaxy on the left of the image, at coordinates (0.0\", -1.0\").\n", - " 2) Fit the light of the lens galaxy on the right of the image, at coordinates (0.0\", 1.0\").\n", - " 3) Use this lens-subtracted image to fit the source's light. The mass profile centres of the two lens galaxies are \n", - " fixed to (0.0\", -1.0\") and (0.0\", 1.0\").\n", - " 4) Fit all relevant parameters simultaneously, using priors from searches 1, 2 and 3.\n", - "\n", - "__Model + Search + Analysis + Model-Fit (Search 1)__\n", - "\n", - "Search 1 fits a lens model where:\n", - "\n", - " - The left lens galaxy's light is a linear `Sersic` bulge with a fixed centre [4 parameters].\n", - "\n", - " - The lens galaxy's mass and source galaxy are omitted.\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=4.\n", - "\n", - "We fix the centre of its light to (0.0, -1.0), the pixel we know the left galaxy's light centre peaks." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "left_lens = af.Model(al.Galaxy, redshift=0.5, bulge=al.lp_linear.Sersic)\n", - "left_lens.bulge.centre_0 = 0.0\n", - "left_lens.bulge.centre_1 = -1.0\n", - "\n", - "model_1 = af.Collection(galaxies=af.Collection(left_lens=left_lens))" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `info` attribute shows the model in a readable format." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "print(model_1.info)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Search + Analysis + Model-Fit (Search 1)__" - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "analysis_1 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_1 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[1]__left_lens_light[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=75,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_1 = search_1.fit(model=model_1, analysis=analysis_1)\n" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 2)__\n", - "\n", - "Search 2 fits a lens model where:\n", - "\n", - " - The left lens galaxy's light is a linear `Sersic` bulge [0 parameters: fixed from search 1].\n", - "\n", - " - The right lens galaxy's light is a linear `Sersic` bulge with a fixec centre [4 parameters].\n", - "\n", - " - The lens galaxy's mass and source galaxy are omitted.\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=4.\n", - "\n", - "We fix the centre of the right lens's light to (0.0, 1.0), the pixel we know the right galaxy's light centre peaks.\n", - "\n", - "We also pass the result of the `left_lens` from search ` as an `instance`, which should improve the fitting of the\n", - "right lens." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "right_lens = af.Model(al.Galaxy, redshift=0.5, bulge=al.lp_linear.Sersic)\n", - "right_lens.bulge.centre_0 = 0.0\n", - "right_lens.bulge.centre_1 = 1.0\n", - "\n", - "model_2 = af.Collection(\n", - " galaxies=af.Collection(\n", - " left_lens=result_1.instance.galaxies.left_lens, right_lens=right_lens\n", - " ),\n", - ")\n", - "\n", - "analysis_2 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_2 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[2]__right_lens_light[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=75,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_2 = search_2.fit(model=model_2, analysis=analysis_2)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 3)__\n", - "\n", - "Search 3 fits a lens model where:\n", - "\n", - " - The left lens galaxy's light is a linear `Sersic` bulge [0 parameters: fixed from search 1].\n", - "\n", - " - The right lens galaxy's light is a linear `Sersic` bulge [0 parameters: fixed from search 2].\n", - "\n", - " - The lens galaxy's mass is modeled using two `Isothermal` profiles whose centres are fixed to (0.0, -1.0)\n", - " and (0.0, 1.0) [6 parameters].\n", - " \n", - " - The source galaxy's light is a linear `Exponential` [5 parameters].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=11." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "left_lens = af.Model(\n", - " al.Galaxy,\n", - " redshift=0.5,\n", - " bulge=result_1.instance.galaxies.left_lens.bulge,\n", - " mass=al.mp.Isothermal,\n", - ")\n", - "\n", - "right_lens = af.Model(\n", - " al.Galaxy,\n", - " redshift=0.5,\n", - " bulge=result_2.instance.galaxies.right_lens.bulge,\n", - " mass=al.mp.Isothermal,\n", - ")\n", - "\n", - "left_lens.mass.centre_0 = 0.0\n", - "left_lens.mass.centre_1 = -1.0\n", - "right_lens.mass.centre_0 = 0.0\n", - "right_lens.mass.centre_1 = 1.0\n", - "\n", - "model_3 = af.Collection(\n", - " galaxies=af.Collection(\n", - " left_lens=left_lens,\n", - " right_lens=right_lens,\n", - " source=af.Model(al.Galaxy, redshift=1.0, bulge=al.lp_linear.ExponentialCore),\n", - " ),\n", - ")\n", - "\n", - "analysis_3 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_3 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[3]__mass_x2[sie]__source[exp]\",\n", - " unique_tag=dataset_name,\n", - " n_live=100,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_3 = search_3.fit(model=model_3, analysis=analysis_3)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 4)__\n", - "\n", - "Search 4 fits a lens model where:\n", - "\n", - " - The left lens galaxy's light is a linear `Sersic` bulge [6 parameters: priors initialized from search 1].\n", - "\n", - " - The right lens galaxy's light is a linear `Sersic` bulge [6 parameters: priors initialized from search 2].\n", - "\n", - " - The lens galaxy's mass is modeled using two `Isothermal` profiles whose centres are fixed to (0.0, -1.0)\n", - " and (0.0, 1.0) [6 parameters: priors initialized from search 3].\n", - "\n", - " - The source galaxy's light is a linear `Sersic` [6 parameters: priors initialized from search 3].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=24.\n", - "\n", - "We don't explicitly check the run-time, but the same principles discussed above apply here." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "left_lens = af.Model(\n", - " al.Galaxy,\n", - " redshift=0.5,\n", - " bulge=result_1.model.galaxies.left_lens.bulge,\n", - " mass=result_3.model.galaxies.left_lens.mass,\n", - ")\n", - "\n", - "right_lens = af.Model(\n", - " al.Galaxy,\n", - " redshift=0.5,\n", - " bulge=result_2.model.galaxies.right_lens.bulge,\n", - " mass=result_3.model.galaxies.right_lens.mass,\n", - ")\n", - "\n", - "source_bulge = af.Model(al.lp_linear.Sersic)\n", - "\n", - "source_bulge.take_attributes(result_3.model.galaxies.source.bulge)\n", - "\n", - "model_4 = af.Collection(\n", - " galaxies=af.Collection(\n", - " left_lens=left_lens,\n", - " right_lens=right_lens,\n", - " source=af.Model(al.Galaxy, redshift=1.0, bulge=source_bulge),\n", - " ),\n", - ")\n", - "\n", - "analysis_4 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_4 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[4]_light_x2[bulge]_mass_x2[sie]_source[exp]\",\n", - " unique_tag=dataset_name,\n", - " n_live=100,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_4 = search_4.fit(model=model_4, analysis=analysis_4)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Wrap Up__\n", - "\n", - "This pipeline takes a while to run, as is the nature of multi-galaxy modeling. Nevertheless, the techniques we've \n", - "learnt above can be applied to systems with even more galaxies, albeit the increases in parameters will slow down the \n", - "non-linear search. Here are some more Q&A`s\n", - "\n", - " 1) This system had two very similar lens galaxy's with comparable amounts of light and mass. How common is this? \n", - " Does it make it harder to model them?\n", - "\n", - "Typically, lenses with 2 galaxies have one massive galaxy (that makes up some 80%-90% of the overall light and mass), \n", - "accompanied by a smaller satellite. The satellite cannotbe ignored, it impacts the ray-tracing in a measureable way, \n", - "but it is a lot less degenerate with the main lens galaxy. This means we can often model the satellite with much \n", - "simpler profiles (e.g. spherical profiles). So yes, multi-galaxy systems can often be easier to model.\n", - "\n", - " 2) It got pretty confusing passing all those priors towards the end of the pipeline there, didn`t it?\n", - "\n", - "It does get confusing. This is why we made galaxies named objects, so that we could call them the `left_lens` and \n", - "`right_lens`. It still requires caution when writing the pipeline, but goes to show that if you name your galaxies \n", - "sensibly you should be able to avoid errors, or spot them quickly when you make them." - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb b/notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb deleted file mode 100644 index be9fe14..0000000 --- a/notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb +++ /dev/null @@ -1,511 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tutorial 5: Complex Source\n", - "==========================\n", - "\n", - "Up to now, we've not paid much attention to the source galaxy's morphology. We've assumed its a single-component\n", - "exponential profile, which is a fairly crude assumption. A quick look at any image of a real galaxy reveals a\n", - "wealth of different structures that could be present: bulges, disks, bars, star-forming knots and so on. Furthermore,\n", - "there could be more than one source-galaxy!\n", - "\n", - "In this example, we'll explore how far we get fitting a complex source using a pipeline. Fitting complex source's is\n", - "an exercise in diminishing returns. Each light profile we add to our source model brings with it an extra 5-7,\n", - "parameters. If there are 4 components, or multiple galaxies, we are quickly entering the somewhat nasty regime of\n", - "30-40+ parameters in our non-linear search. Even with a pipeline, that is a lot of parameters to fit!\n", - "\n", - "__Contents__\n", - "\n", - "- **Initial Setup:** we'll use new strong lensing data, where.\n", - "- **Paths:** All four searches will use the same `path_prefix`, so we write it here to avoid repetition.\n", - "- **Search Chaining Approach:** The source is clearly complex, with more than 4 peaks of light.\n", - "- **Run Times:** Profiling the expected run time of the model-fit.\n", - "- **Wrap Up:** Summary of the script and next steps." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Google Colab Setup__\n", - "\n", - "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", - "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", - "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", - "your own installation) it does nothing, and you can run it safely.\n", - "\n", - "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", - "type\" -> \"Hardware accelerator\" before running the notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " import google.colab\n", - "except ImportError:\n", - " from autolens import setup_colab as _setup_colab\n", - "else:\n", - " import importlib\n", - " import subprocess\n", - " import sys\n", - "\n", - " subprocess.check_call(\n", - " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", - " )\n", - " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", - "\n", - "_setup_colab.setup(\"howtolens\")" - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "\n", - "from autolens import jax_wrapper # Sets JAX environment before other imports\n", - "\n", - "# from autolens import setup_notebook; setup_notebook()\n", - "\n", - "from pathlib import Path\n", - "import autofit as af\n", - "import autolens as al\n", - "import autolens.plot as aplt" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Initial Setup__\n", - "\n", - "we'll use new strong lensing data, where:\n", - "\n", - " - The lens galaxy's light is omitted.\n", - " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", - " - The source galaxy's light is four linear `Sersic`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "dataset_name = \"source_complex\"\n", - "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Dataset Auto-Simulation__\n", - "\n", - "If the dataset does not already exist on your system, it will be created by running the corresponding\n", - "simulator script. This ensures that all example scripts can be run without manually simulating data first." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "if al.util.dataset.should_simulate(str(dataset_path)):\n", - " import subprocess\n", - " import sys\n", - "\n", - " subprocess.run(\n", - " [sys.executable, \"scripts/simulator/source_complex.py\"],\n", - " check=True,\n", - " )\n", - "\n", - "dataset = al.Imaging.from_fits(\n", - " data_path=dataset_path / \"data.fits\",\n", - " noise_map_path=dataset_path / \"noise_map.fits\",\n", - " psf_path=dataset_path / \"psf.fits\",\n", - " pixel_scales=0.05,\n", - ")\n", - "\n", - "mask_radius = 3.0\n", - "\n", - "mask = al.Mask2D.circular(\n", - " shape_native=dataset.shape_native,\n", - " pixel_scales=dataset.pixel_scales,\n", - " radius=mask_radius,\n", - ")\n", - "\n", - "dataset = dataset.apply_mask(mask=mask)\n", - "\n", - "aplt.subplot_imaging_dataset(dataset=dataset)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Paths__\n", - "\n", - "All four searches will use the same `path_prefix`, so we write it here to avoid repetition." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "path_prefix = Path(\"howtolens\") / \"chapter_3\" / \"tutorial_4_complex_source\"" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Search Chaining Approach__\n", - "\n", - "The source is clearly complex, with more than 4 peaks of light. Through visual inspection of this image, we cannot state\n", - "with confidence how many sources of light there truly is! The data also omits he lens galaxy's light. This keep the \n", - "number of parameters down and therefore makes the searches faster, however we would not get such a luxury for a real \n", - "galaxy.\n", - "\n", - "To fit this lens with a complex source model, our approach is simply to fit the lens galaxy mass and source using\n", - "one light profile in the first search, and then add an additional light profile to each search. The mass model and\n", - "light profiles inferred in the previous search are then used to pass priors.\n", - "\n", - "__Run Times__\n", - "\n", - "In this example we don't explicitly check run-times, for brevity. However, the same rules of thumb we discussed in the\n", - "previous tutorial still apply. \n", - "\n", - "For example, as we add more light profiles to the source model, the likelihood evaluation time will increase. As the\n", - "model becomes more complex, search chaining is key to ensuring run times stay lower.\n", - "\n", - "__Model + Search + Analysis + Model-Fit (Search 1)__\n", - "\n", - " - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters].\n", - " \n", - " - The source galaxy's light is a linear `Sersic` [6 parameters].\n", - " \n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=11." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "model_1 = af.Collection(\n", - " galaxies=af.Collection(\n", - " lens=af.Model(al.Galaxy, redshift=0.5, mass=al.mp.Isothermal),\n", - " source=af.Model(al.Galaxy, redshift=1.0, bulge_0=al.lp_linear.Sersic),\n", - " ),\n", - ")" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `info` attribute shows the model in a readable format." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "print(model_1.info)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Search + Analysis + Model-Fit (Search 1)__" - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "analysis_1 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_1 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[1]__mass[sie]__source_x1[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=120,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_1 = search_1.fit(model=model_1, analysis=analysis_1)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 2)__\n", - "\n", - " - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters: priors initialized from \n", - " search 1].\n", - "\n", - " - The source galaxy's light is two linear `Sersic` [12 parameters: first Sersic initialized from \n", - " search 1].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=17." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "model_2 = af.Collection(\n", - " galaxies=af.Collection(\n", - " lens=af.Model(al.Galaxy, redshift=0.5, mass=result_1.model.galaxies.lens.mass),\n", - " source=af.Model(\n", - " al.Galaxy,\n", - " redshift=1.0,\n", - " bulge_0=result_1.model.galaxies.source.bulge_0,\n", - " bulge_1=al.lp_linear.Sersic,\n", - " ),\n", - " ),\n", - ")\n", - "\n", - "analysis_2 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_2 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[2]_mass[sie]_source_x2[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=120,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_2 = search_2.fit(model=model_2, analysis=analysis_2)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 3)__\n", - "\n", - " - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters: priors initialized from \n", - " search 2].\n", - "\n", - " - The source galaxy's light is three linear `Sersic` [18 parameters: first two Sersic's initialized from \n", - " search 2].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=21." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "model_3 = af.Collection(\n", - " galaxies=af.Collection(\n", - " lens=af.Model(al.Galaxy, redshift=0.5, mass=result_2.model.galaxies.lens.mass),\n", - " source=af.Model(\n", - " al.Galaxy,\n", - " redshift=1.0,\n", - " bulge_0=result_2.model.galaxies.source.bulge_0,\n", - " bulge_1=result_2.model.galaxies.source.bulge_1,\n", - " bulge_2=al.lp_linear.Sersic,\n", - " ),\n", - " ),\n", - ")\n", - "\n", - "analysis_3 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_3 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[3]_mass[sie]_source_x3[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=140,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_3 = search_3.fit(model=model_3, analysis=analysis_3)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Model + Search + Analysis + Model-Fit (Search 4)__\n", - "\n", - " - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters: priors initialized from \n", - " search 4].\n", - "\n", - " - The source galaxy's light is four linear `Sersic` [24 parameters: first three Sersic's initialized from \n", - " search 2].\n", - "\n", - "The number of free parameters and therefore the dimensionality of non-linear parameter space is N=29." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "model_4 = af.Collection(\n", - " galaxies=af.Collection(\n", - " lens=af.Model(al.Galaxy, redshift=0.5, mass=result_3.model.galaxies.lens.mass),\n", - " source=af.Model(\n", - " al.Galaxy,\n", - " redshift=1.0,\n", - " bulge_0=result_3.model.galaxies.source.bulge_0,\n", - " bulge_1=result_3.model.galaxies.source.bulge_1,\n", - " bulge_2=result_3.model.galaxies.source.bulge_2,\n", - " bulge_3=al.lp_linear.Sersic,\n", - " ),\n", - " ),\n", - ")\n", - "\n", - "analysis_4 = al.AnalysisImaging(dataset=dataset)\n", - "\n", - "search_4 = af.Nautilus(\n", - " path_prefix=path_prefix,\n", - " name=\"search[4]_mass[sie]_source_x4[bulge]\",\n", - " unique_tag=dataset_name,\n", - " n_live=160,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", - ")\n", - "\n", - "result_4 = search_4.fit(model=model_4, analysis=analysis_4)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Wrap Up__\n", - "\n", - "With four light profiles, we were still unable to produce a fit to the source that did not leave residuals. However, I \n", - "actually simulated the lens using a source with four light profiles. A `perfect fit` was therefore somewhere in \n", - "parameter space, but our search unfortunately was unable to locate this.\n", - "\n", - "Lets confirm this, by manually fitting the imaging data with the true input model.\n", - "\n", - "We cannot apply a mask to a dataset that was already masked, so we first reload the imaging from .fits." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "dataset = dataset.apply_mask(\n", - " mask=al.Mask2D.circular(\n", - " shape_native=dataset.shape_native, pixel_scales=dataset.pixel_scales, radius=3.0\n", - " )\n", - ")\n", - "\n", - "lens_galaxy = al.Galaxy(\n", - " redshift=0.5,\n", - " mass=al.mp.Isothermal(\n", - " centre=(0.0, 0.0), einstein_radius=1.6, ell_comps=(0.17647, 0.0)\n", - " ),\n", - ")\n", - "\n", - "source_galaxy = al.Galaxy(\n", - " redshift=1.0,\n", - " light_0=al.lp.Sersic(\n", - " centre=(0.1, 0.1),\n", - " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0),\n", - " intensity=0.1,\n", - " effective_radius=1.0,\n", - " sersic_index=2.5,\n", - " ),\n", - " light_1=al.lp.Sersic(\n", - " centre=(0.8, 0.6),\n", - " ell_comps=al.convert.ell_comps_from(axis_ratio=0.5, angle=30.0),\n", - " intensity=0.2,\n", - " effective_radius=0.3,\n", - " sersic_index=3.0,\n", - " ),\n", - " light_2=al.lp.Sersic(\n", - " centre=(-0.3, 0.6),\n", - " ell_comps=al.convert.ell_comps_from(axis_ratio=0.3, angle=120.0),\n", - " intensity=0.6,\n", - " effective_radius=0.5,\n", - " sersic_index=1.5,\n", - " ),\n", - " light_3=al.lp.Sersic(\n", - " centre=(-0.3, -0.3),\n", - " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=85.0),\n", - " intensity=0.4,\n", - " effective_radius=0.1,\n", - " sersic_index=2.0,\n", - " ),\n", - ")\n", - "\n", - "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy])\n", - "\n", - "true_fit = al.FitImaging(dataset=dataset, tracer=tracer)\n", - "\n", - "aplt.subplot_fit_imaging(fit=true_fit)\n", - "aplt.subplot_fit_imaging_of_planes(fit=true_fit)" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And indeed, we see an improved residual-map, chi-squared-map, and so forth.\n", - "\n", - "If the source morphology is complex, there is no way we chain searches to fit it perfectly. The non-linear parameter \n", - "space simply becomes too complex. For this tutorial, this was true even though our source model could actually fit \n", - "the data perfectly. For real lenses, the source may be *even more complex* giving us even less hope of getting a \n", - "good fit.\n", - "\n", - "But fear not, **PyAutoLens** has you covered. In chapter 4, we'll introduce a completely new way to model the source \n", - "galaxy, which addresses the problem faced here." - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/scripts/chapter_3_search_chaining/tutorial_2_prior_passing.py b/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py similarity index 100% rename from scripts/chapter_3_search_chaining/tutorial_2_prior_passing.py rename to scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py diff --git a/scripts/chapter_3_search_chaining/tutorial_6_slam.py b/scripts/chapter_2_lens_modeling/tutorial_11_slam.py similarity index 100% rename from scripts/chapter_3_search_chaining/tutorial_6_slam.py rename to scripts/chapter_2_lens_modeling/tutorial_11_slam.py diff --git a/scripts/chapter_3_search_chaining/tutorial_1_search_chaining.py b/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py similarity index 100% rename from scripts/chapter_3_search_chaining/tutorial_1_search_chaining.py rename to scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py diff --git a/scripts/chapter_4_pixelizations/README.md b/scripts/chapter_3_pixelizations/README.md similarity index 100% rename from scripts/chapter_4_pixelizations/README.md rename to scripts/chapter_3_pixelizations/README.md diff --git a/scripts/chapter_3_search_chaining/__init__.py b/scripts/chapter_3_pixelizations/__init__.py similarity index 100% rename from scripts/chapter_3_search_chaining/__init__.py rename to scripts/chapter_3_pixelizations/__init__.py diff --git a/scripts/chapter_4_pixelizations/introduction b/scripts/chapter_3_pixelizations/introduction similarity index 100% rename from scripts/chapter_4_pixelizations/introduction rename to scripts/chapter_3_pixelizations/introduction diff --git a/scripts/chapter_4_pixelizations/tutorial_9_fit_problems.py b/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_9_fit_problems.py rename to scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py diff --git a/scripts/chapter_4_pixelizations/tutorial_10_brightness_adaption.py b/scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_10_brightness_adaption.py rename to scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py diff --git a/scripts/chapter_4_pixelizations/tutorial_11_adaptive_regularization.py b/scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_11_adaptive_regularization.py rename to scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py diff --git a/scripts/chapter_4_pixelizations/tutorial_1_pixelizations.py b/scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_1_pixelizations.py rename to scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py diff --git a/scripts/chapter_4_pixelizations/tutorial_2_mappers.py b/scripts/chapter_3_pixelizations/tutorial_2_mappers.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_2_mappers.py rename to scripts/chapter_3_pixelizations/tutorial_2_mappers.py diff --git a/scripts/chapter_4_pixelizations/tutorial_3_inversions.py b/scripts/chapter_3_pixelizations/tutorial_3_inversions.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_3_inversions.py rename to scripts/chapter_3_pixelizations/tutorial_3_inversions.py diff --git a/scripts/chapter_4_pixelizations/tutorial_4_bayesian_regularization.py b/scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_4_bayesian_regularization.py rename to scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py diff --git a/scripts/chapter_4_pixelizations/tutorial_5_borders.py b/scripts/chapter_3_pixelizations/tutorial_6_borders.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_5_borders.py rename to scripts/chapter_3_pixelizations/tutorial_6_borders.py diff --git a/scripts/chapter_4_pixelizations/tutorial_6_lens_modeling.py b/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_6_lens_modeling.py rename to scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py diff --git a/scripts/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.py b/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.py rename to scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py diff --git a/scripts/chapter_4_pixelizations/tutorial_8_model_fit.py b/scripts/chapter_3_pixelizations/tutorial_9_model_fit.py similarity index 100% rename from scripts/chapter_4_pixelizations/tutorial_8_model_fit.py rename to scripts/chapter_3_pixelizations/tutorial_9_model_fit.py diff --git a/scripts/chapter_3_search_chaining/README.md b/scripts/chapter_3_search_chaining/README.md deleted file mode 100644 index 2e2091f..0000000 --- a/scripts/chapter_3_search_chaining/README.md +++ /dev/null @@ -1,18 +0,0 @@ -In chapter 3, we introduce non-linear search chaining, whereby lens modeling pipelines are composed which each fit a -different lens model. - -**Colab** links to every tutorial are included. - -# Files - -- [Tutorial 1: Search Chaining](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_1_search_chaining.ipynb) — Breaking the lens modeling procedure into a chained sequence of model-fits. - -- [Tutorial 2: Prior Passing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_2_prior_passing.ipynb) — How the results of earlier searches are passed to later searches. - -- [Tutorial 3: Lens and Source](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb) — Fitting the lens's light followed by its mass using chained searches. - -- [Tutorial 4: Two Lens galaxies](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb) — Modeling a strong lens with two lens galaxies using chained searches. - -- [Tutorial 5: Complex Source](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb) — Using multiple light profiles to fit a complex and irregular source using chained searches. - -- [Tutorial 6: SLaM](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_search_chaining/tutorial_6_slam.ipynb) — Template pipelines for fitting lens model is standardized ways. diff --git a/scripts/chapter_3_search_chaining/introduction b/scripts/chapter_3_search_chaining/introduction deleted file mode 100755 index e359483..0000000 --- a/scripts/chapter_3_search_chaining/introduction +++ /dev/null @@ -1,12 +0,0 @@ -You are now familiar and have a clear understanding of lens modeling. In this chapter, we'll -introduce search chaining, a concept we mentioned in the previous chapter. Search chaining allows us to generically link -searches together, so that we can seamlessly navigate the complex non-linear parameter spaces that come when fitting -realistic lens models. - -With these pipelines, you'll be able to: - -1) Fit a lens mass model and source light model to an image of a strongly lensed source. -2) Additionally fit the lens galaxy's light, if it is present. -3) Write customized pipelines for strong lens systems with multiple lens galaxies or source galaxies. -4) Customize pipelines such that the priors on parameters during the fit are adjusted to provide a more robust or - efficient fit. \ No newline at end of file diff --git a/scripts/chapter_3_search_chaining/tutorial_3_lens_and_source.py b/scripts/chapter_3_search_chaining/tutorial_3_lens_and_source.py deleted file mode 100644 index 5b8d6ce..0000000 --- a/scripts/chapter_3_search_chaining/tutorial_3_lens_and_source.py +++ /dev/null @@ -1,359 +0,0 @@ -""" -Tutorial 3: Lens and Source -=========================== - -In this tutorial, we demonstrate search chaining using three searches to fit strong lens `Imaging` which includes the -lens galaxy's light. - -The crucial point to note is that for many lenses the lens galaxy's light can be fitted and subtracted reasonably -well before we attempt to fit the source galaxy. This makes sense, as fitting the lens's light (which is an elliptical -blob of light in the centre of the imaging) looks nothing like the source's light (which is a ring of light)! Formally, -we would say that these two model components (the lens's light and source's light) are not covariate. - -So, as a newly trained lens modeler, what does the lack of covariance between these parameters make you think? -Hopefully, you're thinking, why should I bother fitting the lens and source galaxy simultaneously? Surely we can -find the right regions of non-linear parameter space by fitting each separately first? This is what we're going to do -in this tutorial, using a pipeline composed of a modest 3 searches: - - 1) Fit the lens galaxy's light, ignoring the source. - 2) Fit the source-galaxy's light (and therefore lens galaxy's mass), ignoring the len`s light. - 3) Fit both simultaneously, using these results to initialize our starting location in parameter space. - -Of course, given that we do not care for the errors in searches 1 and 2, we will set up our non-linear search to -perform sampling as fast as possible! - -__Contents__ - -- **Dated Tutorial:** This example tutorial was written ~4 years ago, when **PyAutoLens** was in its infancy and had a. -- **Initial Setup:** we'll use strong lensing data, where. -- **Paths:** All three searches will use the same `path_prefix`, so we write it here to avoid repetition. -- **Notes:** We use linear light profiles througout this script, given that the model is quite complex and this. -- **Wrap Up:** Summary of the script and next steps. - -__Dated Tutorial__ - -This example tutorial was written ~4 years ago, when **PyAutoLens** was in its infancy and had a number of limitations: - - - The non-linear search used MultiNest or dynesty, which were less reliable (e.g. more likely to infer a local maxima - for complex lens models) and less efficient than Nautilus. - - - Linear light profiles and techniques like a Multi-Gaussian Expansion were not available. - -With all the new features added to **PyAutoLens** since, we no longer recommend that one breaks down the fitting of -the lens and source galaxy's light into separate searches, as perform in this search chaining example. Instead, we -would recommend you fit the lens and source simultaneously, using linear light profiles to make the model simpler -or a Multi-Gaussian Expansion. - -However, the example is still useful for demonstrating the core concepts of search chaining, which is still vital -for fitting complex lens model. Therefore, we recommend you still read through this tutorial and try to get a good -understanding of how search chaining works, but bear in mind that the example is a little dated and we now recommend -you fit the lens and source simultaneously! -""" - -from autolens import jax_wrapper # Sets JAX environment before other imports - -# from autolens import setup_notebook; setup_notebook() - -from pathlib import Path -import autofit as af -import autolens as al -import autolens.plot as aplt - -""" -__Initial Setup__ - -we'll use strong lensing data, where: - - - The lens galaxy's light is an `Sersic`. - - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. - - The source galaxy's light is an `Exponential`. - -This image was fitted throughout chapter 2. -""" -dataset_name = "lens_sersic" -dataset_path = Path("dataset") / "imaging" / dataset_name - -""" -__Dataset Auto-Simulation__ - -If the dataset does not already exist on your system, it will be created by running the corresponding -simulator script. This ensures that all example scripts can be run without manually simulating data first. -""" -if al.util.dataset.should_simulate(str(dataset_path)): - import subprocess - import sys - - subprocess.run( - [sys.executable, "scripts/simulator/lens_sersic.py"], - check=True, - ) - -dataset = al.Imaging.from_fits( - data_path=dataset_path / "data.fits", - noise_map_path=dataset_path / "noise_map.fits", - psf_path=dataset_path / "psf.fits", - pixel_scales=0.1, -) - -""" -__Paths__ - -All three searches will use the same `path_prefix`, so we write it here to avoid repetition. -""" -path_prefix = Path("howtolens") / "chapter_3" / "tutorial_3_lens_and_source" - -""" -__Masking (Search 1)__ - -We need to choose our mask for the analysis. We use an annular mask that does not remove the source's light -from the fit, assuming the lens light model will still be sufficiently accurate to reveal the source in the -second search. -""" -mask = al.Mask2D.circular( - shape_native=dataset.shape_native, pixel_scales=dataset.pixel_scales, radius=3.0 -) - -dataset = dataset.apply_mask(mask=mask) - -aplt.subplot_imaging_dataset(dataset=dataset) - -""" -__Model + Search + Analysis + Model-Fit (Search 1)__ - -Search 1 fits a lens model where: - - - The lens galaxy's light is a linear `Sersic` bulge [6 parameters]. - - - The lens galaxy's mass and source galaxy are omitted. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=6. - -__Notes__ - -We use linear light profiles througout this script, given that the model is quite complex and this helps -simplify it. -""" -model_1 = af.Collection( - galaxies=af.Collection(lens=af.Model(al.Galaxy, redshift=0.5, bulge=al.lp.Sersic)), -) - -""" -The `info` attribute shows the model in a readable format. -""" -print(model_1.info) - -""" -__Search + Analysis + Model-Fit (Search 1)__ -""" -analysis_1 = al.AnalysisImaging(dataset=dataset) - -search_1 = af.Nautilus( - path_prefix=path_prefix, - name="search[1]_light[bulge]", - unique_tag=dataset_name, - n_live=75, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_1 = search_1.fit(model=model_1, analysis=analysis_1) - -""" -__Result (Search 1)__ - -The results which are used for prior passing are summarised in the `info` attribute. -""" -print(result_1.info) - -""" -__Masking (Search 2)__ - -Search 2 we are only fitting the source's light, thus we can apply an annular mask that removes regions of the -image that contained only the lens's light. -""" -dataset = al.Imaging.from_fits( - data_path=dataset_path / "data.fits", - noise_map_path=dataset_path / "noise_map.fits", - psf_path=dataset_path / "psf.fits", - pixel_scales=0.1, -) - -mask = al.Mask2D.circular_annular( - shape_native=dataset.shape_native, - pixel_scales=dataset.pixel_scales, - inner_radius=0.6, - outer_radius=2.4, -) - -dataset = dataset.apply_mask(mask=mask) - -""" -__Model + Search + Analysis + Model-Fit (Search 2)__ - -Search 2 fits a lens model where: - - - The lens galaxy's light is a linear `Sersic` bulge [Parameters fixed to results of search 1]. - - - The lens galaxy's total mass distribution is an `Isothermal` with `ExternalShear` [7 parameters]. - - - The source galaxy's light is a linear `Sersic` [6 parameters]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=13. - -Search 2, we fit the source-`galaxy's light and fix the lens light model to the model inferred in search 1, -ensuring the image we has the foreground lens subtracted. We do this below by passing the lens light as an `instance` -object. - -By passing an `instance`, we are telling **PyAutoLens** that we want it to pass the maximum log likelihood result of -that search and use those parameters as fixed values in the model. The model parameters passed as an `instance` are not -free parameters fitted for by the non-linear search, thus this reduces the dimensionality of the non-linear search -making model-fitting faster and more reliable. - -Thus, search 2 includes the lens light model from search 1, but it is completely fixed during the model-fit! - -We also use the centre of the `bulge` to initialize the priors on the lens's `mass`. -""" -mass = af.Model(al.mp.Isothermal) -mass.centre_0 = result_1.model.galaxies.lens.bulge.centre_0 -mass.centre_1 = result_1.model.galaxies.lens.bulge.centre_1 - -model_2 = af.Collection( - galaxies=af.Collection( - lens=af.Model( - al.Galaxy, - redshift=0.5, - bulge=result_1.instance.galaxies.lens.bulge, - mass=mass, - shear=al.mp.ExternalShear, - ), - source=af.Model(al.Galaxy, redshift=1.0, bulge=al.lp.Sersic), - ), -) - -analysis_2 = al.AnalysisImaging(dataset=dataset) - -search_2 = af.Nautilus( - path_prefix=path_prefix, - name="search[2]_mass[sie]_source[bulge]", - unique_tag=dataset_name, - n_live=100, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_2 = search_2.fit(model=model_2, analysis=analysis_2) - -""" -__Result (Search 2)__ - -The results which are used for prior passing are summarised in the `info` attribute. -""" -print(result_2.info) - -""" -__Masking (Search 3)__ - -Search 3 we fit the lens and source, therefore we will use a large circular mask. -""" -dataset = al.Imaging.from_fits( - data_path=dataset_path / "data.fits", - noise_map_path=dataset_path / "noise_map.fits", - psf_path=dataset_path / "psf.fits", - pixel_scales=0.1, -) - -mask_radius = 3.0 - -mask = al.Mask2D.circular( - shape_native=dataset.shape_native, - pixel_scales=dataset.pixel_scales, - radius=mask_radius, -) - -dataset = dataset.apply_mask(mask=mask) - -""" -__Model + Search + Analysis + Model-Fit (Search 3)__ - -Search 3 fits a lens model where: - - - The lens galaxy's light is a linear `Sersic` bulge [6 Parameters: priors initialized from search 1]. - - - The lens galaxy's total mass distribution is an `Isothermal` with `ExternalShear` [7 parameters: priors - initialized from search 2]. - - - The source galaxy's light is a linear `Sersic` [6 parameters: priors initialized from search 2]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=23. - -There isn't a huge amount to say about this search, we have initialized the priors on all of our models parameters -and the only thing that is left to do is fit for all model components simultaneously, with slower Nautilus settings -that will give us more accurate parameter values and errors. -""" -model_3 = af.Collection( - galaxies=af.Collection( - lens=af.Model( - al.Galaxy, - redshift=0.5, - bulge=result_1.model.galaxies.lens.bulge, - mass=result_2.model.galaxies.lens.mass, - ), - source=af.Model( - al.Galaxy, redshift=1.0, bulge=result_2.model.galaxies.source.bulge - ), - ), -) - -analysis_3 = al.AnalysisImaging(dataset=dataset) - -search_3 = af.Nautilus( - path_prefix=path_prefix, - name="search[3]_light[bulge]_mass[sie]_source[bulge]", - unique_tag=dataset_name, - n_live=150, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_3 = search_3.fit(model=model_3, analysis=analysis_3) - -""" -__Result (Search 3)__ - -The final results are summarised in the `info` attribute. -""" -print(result_3.info) - -""" -__Wrap Up__ - -And there we have it, a sequence of searches that breaks modeling the lens and source galaxy into 3 simple searches. -This approach is much faster than fitting the lens and source simultaneously from the beginning. Instead of asking you -questions at the end of this chapter`s tutorials, I'm going to ask questions which I then answer. This will hopefully -get you thinking about how to approach pipeline writing. - - 1) Can this pipeline really be generalized to any lens? Surely the radii of the masks depends on the lens and source - galaxies? - -Whilst this is true, we chose mask radii above that are `excessive` and masks out a lot more of the image than just -the source (which, in terms of run-time, is desirable). Thus, provided you know the Einstein radius distribution of -your lens sample, you can choose mask radii that will masks out every source in your sample adequately (and even if -some of the source is still there, who cares? The fit to the lens galaxy will be okay). - -However, the template pipelines provided on the `autolens_workspace` simply use circular masks for every search and do -not attempt to use different masks for the lens light fit and source fit. This is to keep things simple (at the expense -of slower run times). It is up to you if you want to adapt these scripts to try and use more specific masking strategies. - -__Dated Tutorial__ - -In fact, we now strongly recommend that you do not change masks between each search when using search chaining. -This is because it is very fiddly, and can waste a lot of your time refining masks to ensure they are suitable for -each lens. We recommend you always just use a large circular mask which is big enough to include the entire lens and -source of all lenses in your sample. This will save you a lot of time and means lens modeling can be automated much -easier. - -Building on the discussion above, a known limitation of using a pipeline which fits the lens light first, then the -source, is that it will do a poor job deblending the lens and source light if the Einstein radius is low. This often -leads the mass model to infer incorrect solutions which fit residuals from the lens light subtraction. - -This is why, given all the improvements to autolens, we now recommend that you do not use this pipeline and instead -always begin by fitting the lens and source simultaneously. This can use linear light profiles of a Multi-Gaussian -Expansion. -""" diff --git a/scripts/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.py b/scripts/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.py deleted file mode 100644 index ff3c9a4..0000000 --- a/scripts/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.py +++ /dev/null @@ -1,329 +0,0 @@ -""" -Tutorial 4: Two Lens galaxies -============================= - -Up to now, all the images we've fitted had one lens galaxy. However, we saw in chapter 1 that our lens plane can -consist of multiple galaxies which each contribute to the strong lensing. Multi-galaxy systems are challenging to -model, because they add an extra 5-10 parameters to the non-linear search and, more problematically, the degeneracies -between the parameters of the mass profiles of the two galaxies can be severe. - -However, we can still break their analysis down using multiple searches and give ourselves a shot at getting a good -lens model. Here, we're going to fit a double lens system, fitting as much about each individual lens galaxy before -fitting them simultaneously. - -Up to now, I've put a focus on an analysis being general. The script we write in this example is going to be the -opposite, specific to the image we're modeling. Fitting multiple lens galaxies is really difficult and writing a -pipeline that we can generalize to many lenses isn't currently possible. - -__Contents__ - -- **Initial Setup:** we'll use new strong lensing data, where. -- **Mask:** Define the 2D mask applied to the dataset for the model-fit. -- **Paths:** All four searches will use the same `path_prefix`, so we write it here to avoid repetition. -- **Search Chaining Approach:** Looking at the image, there are two blobs of light corresponding to the two lens galaxies. -- **Wrap Up:** Summary of the script and next steps. - -""" - -from autolens import jax_wrapper # Sets JAX environment before other imports - -# from autolens import setup_notebook; setup_notebook() - -from pathlib import Path -import autofit as af -import autolens as al -import autolens.plot as aplt - -""" -__Initial Setup__ - -we'll use new strong lensing data, where: - - - There are two lens galaxy's whose `LightProfile`'s are both linear `Sersic`'s. - - There are two lens galaxy's whose `MassProfile`'s are both `Isothermal`'s - - The source galaxy's light is an `Exponential`. -""" -dataset_name = "x2_lens_galaxies" -dataset_path = Path("dataset") / "imaging" / dataset_name - -""" -__Dataset Auto-Simulation__ - -If the dataset does not already exist on your system, it will be created by running the corresponding -simulator script. This ensures that all example scripts can be run without manually simulating data first. -""" -if al.util.dataset.should_simulate(str(dataset_path)): - import subprocess - import sys - - subprocess.run( - [sys.executable, "scripts/simulator/lens_x2.py"], - check=True, - ) - -dataset = al.Imaging.from_fits( - data_path=dataset_path / "data.fits", - noise_map_path=dataset_path / "noise_map.fits", - psf_path=dataset_path / "psf.fits", - pixel_scales=0.05, -) - -""" -__Mask__ - -We need to choose our mask for the analysis. Given the lens light is present in the image we'll need to include all -of its light in the central regions of the image, so lets use a circular mask. - -We'll use this mask in all four searches. -""" -mask_radius = 3.0 - -mask = al.Mask2D.circular( - shape_native=dataset.shape_native, - pixel_scales=dataset.pixel_scales, - radius=mask_radius, -) - -dataset = dataset.apply_mask(mask=mask) - -aplt.subplot_imaging_dataset(dataset=dataset) - - -""" -__Paths__ - -All four searches will use the same `path_prefix`, so we write it here to avoid repetition. -""" -path_prefix = Path("howtolens") / "chapter_3" / "tutorial_4_x2_lens_galaxies" - -""" -__Search Chaining Approach__ - -Looking at the image, there are two blobs of light corresponding to the two lens galaxies. The source's light is also -pretty complex and the arcs don't posses the rotational symmetry we're used to seeing up to now. -Multi-galaxy ray-tracing is just a lot more complicated, which means so is modeling it! - -So, how can we break the lens modeling up? As follows: - - 1) Fit and subtract the light of each lens galaxy individually. - 2) Use these results to initialize each lens galaxy's total mass distribution. - -So, with this in mind, we'll perform an analysis using searches: - - 1) Fit the light of the lens galaxy on the left of the image, at coordinates (0.0", -1.0"). - 2) Fit the light of the lens galaxy on the right of the image, at coordinates (0.0", 1.0"). - 3) Use this lens-subtracted image to fit the source's light. The mass profile centres of the two lens galaxies are - fixed to (0.0", -1.0") and (0.0", 1.0"). - 4) Fit all relevant parameters simultaneously, using priors from searches 1, 2 and 3. - -__Model + Search + Analysis + Model-Fit (Search 1)__ - -Search 1 fits a lens model where: - - - The left lens galaxy's light is a linear `Sersic` bulge with a fixed centre [4 parameters]. - - - The lens galaxy's mass and source galaxy are omitted. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=4. - -We fix the centre of its light to (0.0, -1.0), the pixel we know the left galaxy's light centre peaks. -""" -left_lens = af.Model(al.Galaxy, redshift=0.5, bulge=al.lp_linear.Sersic) -left_lens.bulge.centre_0 = 0.0 -left_lens.bulge.centre_1 = -1.0 - -model_1 = af.Collection(galaxies=af.Collection(left_lens=left_lens)) - -""" -The `info` attribute shows the model in a readable format. -""" -print(model_1.info) - -""" -__Search + Analysis + Model-Fit (Search 1)__ -""" -analysis_1 = al.AnalysisImaging(dataset=dataset) - -search_1 = af.Nautilus( - path_prefix=path_prefix, - name="search[1]__left_lens_light[bulge]", - unique_tag=dataset_name, - n_live=75, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_1 = search_1.fit(model=model_1, analysis=analysis_1) - - -""" -__Model + Search + Analysis + Model-Fit (Search 2)__ - -Search 2 fits a lens model where: - - - The left lens galaxy's light is a linear `Sersic` bulge [0 parameters: fixed from search 1]. - - - The right lens galaxy's light is a linear `Sersic` bulge with a fixec centre [4 parameters]. - - - The lens galaxy's mass and source galaxy are omitted. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=4. - -We fix the centre of the right lens's light to (0.0, 1.0), the pixel we know the right galaxy's light centre peaks. - -We also pass the result of the `left_lens` from search ` as an `instance`, which should improve the fitting of the -right lens. -""" -right_lens = af.Model(al.Galaxy, redshift=0.5, bulge=al.lp_linear.Sersic) -right_lens.bulge.centre_0 = 0.0 -right_lens.bulge.centre_1 = 1.0 - -model_2 = af.Collection( - galaxies=af.Collection( - left_lens=result_1.instance.galaxies.left_lens, right_lens=right_lens - ), -) - -analysis_2 = al.AnalysisImaging(dataset=dataset) - -search_2 = af.Nautilus( - path_prefix=path_prefix, - name="search[2]__right_lens_light[bulge]", - unique_tag=dataset_name, - n_live=75, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_2 = search_2.fit(model=model_2, analysis=analysis_2) - -""" -__Model + Search + Analysis + Model-Fit (Search 3)__ - -Search 3 fits a lens model where: - - - The left lens galaxy's light is a linear `Sersic` bulge [0 parameters: fixed from search 1]. - - - The right lens galaxy's light is a linear `Sersic` bulge [0 parameters: fixed from search 2]. - - - The lens galaxy's mass is modeled using two `Isothermal` profiles whose centres are fixed to (0.0, -1.0) - and (0.0, 1.0) [6 parameters]. - - - The source galaxy's light is a linear `Exponential` [5 parameters]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=11. -""" -left_lens = af.Model( - al.Galaxy, - redshift=0.5, - bulge=result_1.instance.galaxies.left_lens.bulge, - mass=al.mp.Isothermal, -) - -right_lens = af.Model( - al.Galaxy, - redshift=0.5, - bulge=result_2.instance.galaxies.right_lens.bulge, - mass=al.mp.Isothermal, -) - -left_lens.mass.centre_0 = 0.0 -left_lens.mass.centre_1 = -1.0 -right_lens.mass.centre_0 = 0.0 -right_lens.mass.centre_1 = 1.0 - -model_3 = af.Collection( - galaxies=af.Collection( - left_lens=left_lens, - right_lens=right_lens, - source=af.Model(al.Galaxy, redshift=1.0, bulge=al.lp_linear.ExponentialCore), - ), -) - -analysis_3 = al.AnalysisImaging(dataset=dataset) - -search_3 = af.Nautilus( - path_prefix=path_prefix, - name="search[3]__mass_x2[sie]__source[exp]", - unique_tag=dataset_name, - n_live=100, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_3 = search_3.fit(model=model_3, analysis=analysis_3) - -""" -__Model + Search + Analysis + Model-Fit (Search 4)__ - -Search 4 fits a lens model where: - - - The left lens galaxy's light is a linear `Sersic` bulge [6 parameters: priors initialized from search 1]. - - - The right lens galaxy's light is a linear `Sersic` bulge [6 parameters: priors initialized from search 2]. - - - The lens galaxy's mass is modeled using two `Isothermal` profiles whose centres are fixed to (0.0, -1.0) - and (0.0, 1.0) [6 parameters: priors initialized from search 3]. - - - The source galaxy's light is a linear `Sersic` [6 parameters: priors initialized from search 3]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=24. - -We don't explicitly check the run-time, but the same principles discussed above apply here. -""" -left_lens = af.Model( - al.Galaxy, - redshift=0.5, - bulge=result_1.model.galaxies.left_lens.bulge, - mass=result_3.model.galaxies.left_lens.mass, -) - -right_lens = af.Model( - al.Galaxy, - redshift=0.5, - bulge=result_2.model.galaxies.right_lens.bulge, - mass=result_3.model.galaxies.right_lens.mass, -) - -source_bulge = af.Model(al.lp_linear.Sersic) - -source_bulge.take_attributes(result_3.model.galaxies.source.bulge) - -model_4 = af.Collection( - galaxies=af.Collection( - left_lens=left_lens, - right_lens=right_lens, - source=af.Model(al.Galaxy, redshift=1.0, bulge=source_bulge), - ), -) - -analysis_4 = al.AnalysisImaging(dataset=dataset) - -search_4 = af.Nautilus( - path_prefix=path_prefix, - name="search[4]_light_x2[bulge]_mass_x2[sie]_source[exp]", - unique_tag=dataset_name, - n_live=100, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_4 = search_4.fit(model=model_4, analysis=analysis_4) - -""" -__Wrap Up__ - -This pipeline takes a while to run, as is the nature of multi-galaxy modeling. Nevertheless, the techniques we've -learnt above can be applied to systems with even more galaxies, albeit the increases in parameters will slow down the -non-linear search. Here are some more Q&A`s - - 1) This system had two very similar lens galaxy's with comparable amounts of light and mass. How common is this? - Does it make it harder to model them? - -Typically, lenses with 2 galaxies have one massive galaxy (that makes up some 80%-90% of the overall light and mass), -accompanied by a smaller satellite. The satellite cannotbe ignored, it impacts the ray-tracing in a measureable way, -but it is a lot less degenerate with the main lens galaxy. This means we can often model the satellite with much -simpler profiles (e.g. spherical profiles). So yes, multi-galaxy systems can often be easier to model. - - 2) It got pretty confusing passing all those priors towards the end of the pipeline there, didn`t it? - -It does get confusing. This is why we made galaxies named objects, so that we could call them the `left_lens` and -`right_lens`. It still requires caution when writing the pipeline, but goes to show that if you name your galaxies -sensibly you should be able to avoid errors, or spot them quickly when you make them. -""" diff --git a/scripts/chapter_3_search_chaining/tutorial_5_complex_source.py b/scripts/chapter_3_search_chaining/tutorial_5_complex_source.py deleted file mode 100644 index 24e167e..0000000 --- a/scripts/chapter_3_search_chaining/tutorial_5_complex_source.py +++ /dev/null @@ -1,323 +0,0 @@ -""" -Tutorial 5: Complex Source -========================== - -Up to now, we've not paid much attention to the source galaxy's morphology. We've assumed its a single-component -exponential profile, which is a fairly crude assumption. A quick look at any image of a real galaxy reveals a -wealth of different structures that could be present: bulges, disks, bars, star-forming knots and so on. Furthermore, -there could be more than one source-galaxy! - -In this example, we'll explore how far we get fitting a complex source using a pipeline. Fitting complex source's is -an exercise in diminishing returns. Each light profile we add to our source model brings with it an extra 5-7, -parameters. If there are 4 components, or multiple galaxies, we are quickly entering the somewhat nasty regime of -30-40+ parameters in our non-linear search. Even with a pipeline, that is a lot of parameters to fit! - -__Contents__ - -- **Initial Setup:** we'll use new strong lensing data, where. -- **Paths:** All four searches will use the same `path_prefix`, so we write it here to avoid repetition. -- **Search Chaining Approach:** The source is clearly complex, with more than 4 peaks of light. -- **Run Times:** Profiling the expected run time of the model-fit. -- **Wrap Up:** Summary of the script and next steps. - -""" - -from autolens import jax_wrapper # Sets JAX environment before other imports - -# from autolens import setup_notebook; setup_notebook() - -from pathlib import Path -import autofit as af -import autolens as al -import autolens.plot as aplt - -""" -__Initial Setup__ - -we'll use new strong lensing data, where: - - - The lens galaxy's light is omitted. - - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. - - The source galaxy's light is four linear `Sersic`. -""" -dataset_name = "source_complex" -dataset_path = Path("dataset") / "imaging" / dataset_name - -""" -__Dataset Auto-Simulation__ - -If the dataset does not already exist on your system, it will be created by running the corresponding -simulator script. This ensures that all example scripts can be run without manually simulating data first. -""" -if al.util.dataset.should_simulate(str(dataset_path)): - import subprocess - import sys - - subprocess.run( - [sys.executable, "scripts/simulator/source_complex.py"], - check=True, - ) - -dataset = al.Imaging.from_fits( - data_path=dataset_path / "data.fits", - noise_map_path=dataset_path / "noise_map.fits", - psf_path=dataset_path / "psf.fits", - pixel_scales=0.05, -) - -mask_radius = 3.0 - -mask = al.Mask2D.circular( - shape_native=dataset.shape_native, - pixel_scales=dataset.pixel_scales, - radius=mask_radius, -) - -dataset = dataset.apply_mask(mask=mask) - -aplt.subplot_imaging_dataset(dataset=dataset) - -""" -__Paths__ - -All four searches will use the same `path_prefix`, so we write it here to avoid repetition. -""" -path_prefix = Path("howtolens") / "chapter_3" / "tutorial_4_complex_source" - -""" -__Search Chaining Approach__ - -The source is clearly complex, with more than 4 peaks of light. Through visual inspection of this image, we cannot state -with confidence how many sources of light there truly is! The data also omits he lens galaxy's light. This keep the -number of parameters down and therefore makes the searches faster, however we would not get such a luxury for a real -galaxy. - -To fit this lens with a complex source model, our approach is simply to fit the lens galaxy mass and source using -one light profile in the first search, and then add an additional light profile to each search. The mass model and -light profiles inferred in the previous search are then used to pass priors. - -__Run Times__ - -In this example we don't explicitly check run-times, for brevity. However, the same rules of thumb we discussed in the -previous tutorial still apply. - -For example, as we add more light profiles to the source model, the likelihood evaluation time will increase. As the -model becomes more complex, search chaining is key to ensuring run times stay lower. - -__Model + Search + Analysis + Model-Fit (Search 1)__ - - - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters]. - - - The source galaxy's light is a linear `Sersic` [6 parameters]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=11. -""" -model_1 = af.Collection( - galaxies=af.Collection( - lens=af.Model(al.Galaxy, redshift=0.5, mass=al.mp.Isothermal), - source=af.Model(al.Galaxy, redshift=1.0, bulge_0=al.lp_linear.Sersic), - ), -) - -""" -The `info` attribute shows the model in a readable format. -""" -print(model_1.info) - -""" -__Search + Analysis + Model-Fit (Search 1)__ -""" -analysis_1 = al.AnalysisImaging(dataset=dataset) - -search_1 = af.Nautilus( - path_prefix=path_prefix, - name="search[1]__mass[sie]__source_x1[bulge]", - unique_tag=dataset_name, - n_live=120, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_1 = search_1.fit(model=model_1, analysis=analysis_1) - -""" -__Model + Search + Analysis + Model-Fit (Search 2)__ - - - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters: priors initialized from - search 1]. - - - The source galaxy's light is two linear `Sersic` [12 parameters: first Sersic initialized from - search 1]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=17. -""" -model_2 = af.Collection( - galaxies=af.Collection( - lens=af.Model(al.Galaxy, redshift=0.5, mass=result_1.model.galaxies.lens.mass), - source=af.Model( - al.Galaxy, - redshift=1.0, - bulge_0=result_1.model.galaxies.source.bulge_0, - bulge_1=al.lp_linear.Sersic, - ), - ), -) - -analysis_2 = al.AnalysisImaging(dataset=dataset) - -search_2 = af.Nautilus( - path_prefix=path_prefix, - name="search[2]_mass[sie]_source_x2[bulge]", - unique_tag=dataset_name, - n_live=120, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_2 = search_2.fit(model=model_2, analysis=analysis_2) - -""" -__Model + Search + Analysis + Model-Fit (Search 3)__ - - - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters: priors initialized from - search 2]. - - - The source galaxy's light is three linear `Sersic` [18 parameters: first two Sersic's initialized from - search 2]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=21. -""" -model_3 = af.Collection( - galaxies=af.Collection( - lens=af.Model(al.Galaxy, redshift=0.5, mass=result_2.model.galaxies.lens.mass), - source=af.Model( - al.Galaxy, - redshift=1.0, - bulge_0=result_2.model.galaxies.source.bulge_0, - bulge_1=result_2.model.galaxies.source.bulge_1, - bulge_2=al.lp_linear.Sersic, - ), - ), -) - -analysis_3 = al.AnalysisImaging(dataset=dataset) - -search_3 = af.Nautilus( - path_prefix=path_prefix, - name="search[3]_mass[sie]_source_x3[bulge]", - unique_tag=dataset_name, - n_live=140, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_3 = search_3.fit(model=model_3, analysis=analysis_3) - -""" -__Model + Search + Analysis + Model-Fit (Search 4)__ - - - The lens galaxy's total mass distribution is an `Isothermal` [5 parameters: priors initialized from - search 4]. - - - The source galaxy's light is four linear `Sersic` [24 parameters: first three Sersic's initialized from - search 2]. - -The number of free parameters and therefore the dimensionality of non-linear parameter space is N=29. -""" -model_4 = af.Collection( - galaxies=af.Collection( - lens=af.Model(al.Galaxy, redshift=0.5, mass=result_3.model.galaxies.lens.mass), - source=af.Model( - al.Galaxy, - redshift=1.0, - bulge_0=result_3.model.galaxies.source.bulge_0, - bulge_1=result_3.model.galaxies.source.bulge_1, - bulge_2=result_3.model.galaxies.source.bulge_2, - bulge_3=al.lp_linear.Sersic, - ), - ), -) - -analysis_4 = al.AnalysisImaging(dataset=dataset) - -search_4 = af.Nautilus( - path_prefix=path_prefix, - name="search[4]_mass[sie]_source_x4[bulge]", - unique_tag=dataset_name, - n_live=160, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations -) - -result_4 = search_4.fit(model=model_4, analysis=analysis_4) - -""" -__Wrap Up__ - -With four light profiles, we were still unable to produce a fit to the source that did not leave residuals. However, I -actually simulated the lens using a source with four light profiles. A `perfect fit` was therefore somewhere in -parameter space, but our search unfortunately was unable to locate this. - -Lets confirm this, by manually fitting the imaging data with the true input model. - -We cannot apply a mask to a dataset that was already masked, so we first reload the imaging from .fits. -""" -dataset = dataset.apply_mask( - mask=al.Mask2D.circular( - shape_native=dataset.shape_native, pixel_scales=dataset.pixel_scales, radius=3.0 - ) -) - -lens_galaxy = al.Galaxy( - redshift=0.5, - mass=al.mp.Isothermal( - centre=(0.0, 0.0), einstein_radius=1.6, ell_comps=(0.17647, 0.0) - ), -) - -source_galaxy = al.Galaxy( - redshift=1.0, - light_0=al.lp.Sersic( - centre=(0.1, 0.1), - ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0), - intensity=0.1, - effective_radius=1.0, - sersic_index=2.5, - ), - light_1=al.lp.Sersic( - centre=(0.8, 0.6), - ell_comps=al.convert.ell_comps_from(axis_ratio=0.5, angle=30.0), - intensity=0.2, - effective_radius=0.3, - sersic_index=3.0, - ), - light_2=al.lp.Sersic( - centre=(-0.3, 0.6), - ell_comps=al.convert.ell_comps_from(axis_ratio=0.3, angle=120.0), - intensity=0.6, - effective_radius=0.5, - sersic_index=1.5, - ), - light_3=al.lp.Sersic( - centre=(-0.3, -0.3), - ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=85.0), - intensity=0.4, - effective_radius=0.1, - sersic_index=2.0, - ), -) - -tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy]) - -true_fit = al.FitImaging(dataset=dataset, tracer=tracer) - -aplt.subplot_fit_imaging(fit=true_fit) -aplt.subplot_fit_imaging_of_planes(fit=true_fit) - -""" -And indeed, we see an improved residual-map, chi-squared-map, and so forth. - -If the source morphology is complex, there is no way we chain searches to fit it perfectly. The non-linear parameter -space simply becomes too complex. For this tutorial, this was true even though our source model could actually fit -the data perfectly. For real lenses, the source may be *even more complex* giving us even less hope of getting a -good fit. - -But fear not, **PyAutoLens** has you covered. In chapter 4, we'll introduce a completely new way to model the source -galaxy, which addresses the problem faced here. -""" diff --git a/scripts/chapter_4_pixelizations/__init__.py b/scripts/chapter_4_scaling_up_lensing/__init__.py old mode 100755 new mode 100644 similarity index 100% rename from scripts/chapter_4_pixelizations/__init__.py rename to scripts/chapter_4_scaling_up_lensing/__init__.py From 8f01263c7407514716c5173286b3127d2ad99d1c Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:33:43 +0000 Subject: [PATCH 02/22] docs: update chapter maps in README and AGENTS for the restructure Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- AGENTS.md | 12 ++++++++---- README.md | 13 +++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 775695b..745bb23 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,10 +8,14 @@ canonical, agent-agnostic instructions for this repo. ## Repository Structure - `scripts/` — Runnable Python tutorial scripts: - - `chapter_1_introduction/` — Grids, profiles, galaxies, ray-tracing, data, fitting - - `chapter_2_lens_modeling/` — Non-linear searches, Bayesian inference, lens modeling - - `chapter_3_search_chaining/` — Search chaining, prior passing, automated pipelines - - `chapter_4_pixelizations/` — Pixelized source reconstruction, inversions, regularization + - `chapter_1_introduction/` — Grids, profiles, galaxies, ray-tracing, point sources, the lensing + formalism, data, fitting + - `chapter_2_lens_modeling/` — Non-linear searches, Bayesian inference, lens modeling, search + chaining, prior passing, automated pipelines + - `chapter_3_pixelizations/` — Pixelized source reconstruction, inversions, regularization, the + Bayesian formalism + - `chapter_4_scaling_up_lensing/` — Extra galaxies, multi-galaxy lenses, scaling relations, group + and cluster scales, weak lensing - `chapter_optional/` — Alternative searches and advanced topics - `simulator/` — Simulator scripts that generate the tutorial datasets at runtime - `notebooks/` — Jupyter versions, generated from `scripts/` (do not edit directly) diff --git a/README.md b/README.md index 5be9417..57068c1 100644 --- a/README.md +++ b/README.md @@ -21,13 +21,14 @@ they are concise and assume the concepts taught in **HowToLens** as background. ## Chapters - `chapter_1_introduction` — An introduction to strong gravitational lensing and **PyAutoLens**: grids, light - and mass profiles, galaxies, ray-tracing, simulated imaging data, and fitting. + and mass profiles, galaxies, ray-tracing, point sources, the lensing formalism, simulated imaging data, + and fitting. - `chapter_2_lens_modeling` — Bayesian inference, non-linear searches, and how to fit a lens model to CCD - imaging data with **PyAutoLens**. -- `chapter_3_search_chaining` — Chaining multiple non-linear searches together to build automated lens - modeling pipelines for complex systems. -- `chapter_4_pixelizations` — Pixelized source reconstructions (inversions) for sources with irregular - morphologies. + imaging data with **PyAutoLens**, ending with search chaining and automated pipelines. +- `chapter_3_pixelizations` — Pixelized source reconstructions (inversions) for sources with irregular + morphologies, including the Bayesian formalism underpinning them. +- `chapter_4_scaling_up_lensing` — Scaling lens modeling up beyond a single lens galaxy: extra galaxies, + multi-galaxy lenses, scaling relations, group and cluster scales, and weak lensing. - `chapter_optional` — Optional tutorials on alternative non-linear searches and other advanced topics. **HowToLens** currently sits at four chapters. Each chapter will take around a day to work through. From 577dd2b6ee1fcb6e65175eece7e178f61422e5d2 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:33:58 +0000 Subject: [PATCH 03/22] docs: rewrite need-for-speed tutorial for the JAX era Replaces the outdated numba-centric run-time story with the current reality: JIT compilation of the whole likelihood via JAX (on by default through use_jax=True), CPU vs GPU batching, compilation overhead, and run-time estimation. Chaining is reframed as this chapter's closing tutorials 9-11 and stale HowToGalaxy/chapter references are fixed. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_8_need_for_speed.py | 135 ++++++++++++++---- 1 file changed, 107 insertions(+), 28 deletions(-) diff --git a/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py b/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py index 61c4b1b..6a86270 100755 --- a/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py +++ b/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py @@ -14,53 +14,126 @@ fit performed in this chapter. Lets quickly remind ourselves of the main factors that drive the run-time, and how we might reduce it. +The overall run-time of a model-fit is, to a good approximation, a simple product of two numbers: + + - The number of log likelihood evaluations the non-linear search performs before it converges. + + - The time each individual log likelihood evaluation takes. + +Everything we discuss below reduces one (or both) of these numbers. + +__Contents__ + +- **Searching Non-linear Parameter Space:** What drives the number of likelihood evaluations a search performs. +- **Cost Per Evaluation:** What drives the time a single log likelihood evaluation takes. +- **JAX:** How **PyAutoLens** compiles the likelihood function with JAX and runs it on CPUs and GPUs. +- **Run Time Estimation:** How to estimate the overall run-time of a fit before committing to it. +- **Data Quantity:** How the amount of data fitted, and the mask applied to it, drives run-times. +- **Wrap Up:** Summary of the script and next steps. + __Searching Non-linear Parameter Space__ The time it takes for the non-linear search to sample parameter space and find the high likelihood models is driven by: - Dimensionality: A more complex parameter space (e.g. more parameters) takes longer to search. - Priors: The broader the priors on each parameter the longer the search. - - Settings: Non-linear search settings which sample parameter space more thoroughly lead to longer run-times. + - Settings: Non-linear search settings which sample parameter space more thoroughly (e.g. a higher `n_live`) lead to + longer run-times. When we use only one search to fit a lens model, we are somewhat restricted in how we can try to achieve faster run -times by changing these 3 aspects of the search. +times by changing these 3 aspects of the search. We have already seen one powerful exception: the linear light +profiles of tutorial 5 remove every `intensity` parameter from the non-linear parameter space, reducing its +dimensionality and removing some of its most difficult degeneracies at the same time. -In the next chapter, we introduce 'non-linear search chaining', which fits a lens model using multiple searches that -are performed back-to-back. A key motivation for this is that it gives us a lot more flexibility in juggling the -dimensionality, priors and settings so as to perform faster and more efficient lens modeling. +The final three tutorials of this chapter (tutorials 9, 10 and 11) introduce 'non-linear search chaining', which fits +a lens model using multiple searches that are performed back-to-back, passing the results of earlier searches to +later ones. A key motivation for this is that it gives us a lot more flexibility in juggling the dimensionality, +priors and settings so as to perform faster and more efficient lens modeling, culminating in the fully automated +SLaM pipelines of tutorial 11. -In the optional **HowToGalaxy** tutorial `chapter_optional/tutorial_searches.ipynb` we discuss other non-linear -searches supported by **HowToGalaxy** which use a different approach to sample parameter sample than `Nautilus`. For -those familiar with statistical inference, this includes maximum likelihood estimators and MCMC algorithms. +In the optional **PyAutoLens** tutorial `chapter_optional/tutorial_searches.py` we discuss other non-linear searches +supported by **PyAutoLens** which use a different approach to sample parameter space than `Nautilus`. For those +familiar with statistical inference, this includes maximum likelihood estimators and MCMC algorithms. For lens modeling, we have not found another non-linear search that provides as robust and efficient results as -Nautilus. We therefore recommend uses stick to `Nautilus`. +Nautilus. We therefore recommend users stick to `Nautilus`. -__Contents__ +__Cost Per Evaluation__ -- **Algorithmic Optimization:** Every operation **PyAutoLens** performs to fit strong lens data with a model takes time, for. -- **Data Quantity:** The final factor driving run-speed is the quantity of data that is fitted. -- **Wrap Up:** Summary of the script and next steps. +The second number is the time a single log likelihood evaluation takes, which is set by every operation +**PyAutoLens** performs to fit the strong lens data with a model, for example: -__Algorithmic Optimization__ + - Computing the deflection angles of the mass model and ray-tracing the image-plane grid to the source-plane. + - Computing the intensity values of every light profile on those grids. + - Over-sampling: sub-dividing image pixels into finer sub-pixels where light profiles change rapidly (e.g. the + centre of the lens galaxy), which multiplies the number of intensity evaluations performed. + - Convolving the image that comes from the tracer with the telescope's PSF to compare it to the data. The larger + the PSF, the more expensive this convolution becomes. + - For linear light profiles, basis functions like the MGE of tutorial 5 and the pixelizations of chapter 4, solving + the linear algebra of the inversion, which computes the `intensity` values that best fit the data. -Every operation **PyAutoLens** performs to fit strong lens data with a model takes time, for example: +More complex fitting techniques therefore cost more per evaluation: a couple of standard light profiles are cheap, +an MGE costs more (its inversion solves for many Gaussians), and pixelized source reconstructions cost the most. +As we saw in tutorial 5, this trade often still favours the more advanced technique, because the simpler parameter +space it produces reduces the number of evaluations the search needs. - - Computing the intensity values from a light profile. - - Convolving the image that comes from a tracer with the PSF to compare it to the data. +__JAX__ -One can therefore in principle make **PyAutoLens** run faster by using more efficient algorithms. However, I am -confident that for many tasks and operations we have written code that is already very fast! +How are these operations made fast? **PyAutoLens** uses JAX (https://github.com/jax-ml/jax), Google's numerical +computing library, which just-in-time (JIT) compiles the entire log likelihood function into optimized machine code. -I often get asked, given that **PyAutoLens** is written in Python (a synonymously slow programming language), is it not -really slow? **PyAutoLens** uses a library called `numba` to ensure that it runs fast, which recompiles Python -functions into C functions before **PyAutoLens** runs. This gives us C-like speed, but in Python code. If you`ve got -your own code that needs speeding up, I strongly recommend that you look up Numba: +JIT compilation means the first time the likelihood function is called, JAX traces through every operation it +performs (ray-tracing, light profile evaluation, PSF convolution, the linear algebra of an inversion) and compiles +them into a single optimized program. This compilation is a one-off overhead, typically taking seconds to a couple +of minutes depending on model complexity. Every one of the tens of thousands of likelihood evaluations that follow +then reuses the compiled program and runs dramatically faster than ordinary Python. When a search begins you will +see a log message like `JAX: Applying vmap and jit to likelihood function -- may take a few seconds.` -- that is +the compilation happening. -http://numba.pydata.org/ +JAX's second superpower is that the same compiled code runs on either a CPU or a GPU. On a GPU, likelihood +evaluations are not only faster individually but can be batched, with many evaluated simultaneously (the +`n_batch` search input and its VRAM implications were discussed in tutorial 2). GPU speed-ups over CPU +of an order of magnitude or more are common, and they grow with the size of the dataset and model. If you have +access to a GPU (even a modest laptop GPU), it is the single biggest speed-up available to you. -Therefore, **PyAutoLens** is pretty well optimized and there are no 'low hanging fruit' speed ups available by writing -the code in a different language. +You do not need to do anything to switch this on. If JAX is installed (`pip install autolens[jax]`), every +`AnalysisImaging` object we have created in this chapter defaults to `use_jax=True` and the search compiles and +batches the likelihood function automatically. You can force the plain NumPy path with +`al.AnalysisImaging(dataset=dataset, use_jax=False)` (or by setting the environment variable +`PYAUTO_DISABLE_JAX=1`), which is mainly useful for debugging, as NumPy errors and stack traces are much easier +to read than JAX ones. + +The one trade-off to keep in mind is the compilation overhead itself. For a full model-fit performing tens of +thousands of likelihood evaluations it is negligible. For a quick one-off calculation (e.g. fitting a single +tracer to data once, as we did in chapter 1) compilation can take longer than the calculation it speeds up, which +is why short interactive computations sometimes feel slower than you might expect the first time they run. + +Long-time users may remember that **PyAutoLens** previously used `numba`, which recompiles individual Python +functions into fast machine code. JAX supersedes it: rather than accelerating functions one at a time, it compiles +and optimizes the likelihood function end-to-end, and adds GPU support and batching on top. + +Therefore, **PyAutoLens** is pretty well optimized and there are no 'low hanging fruit' speed ups available by +writing the code in a different language. + +__Run Time Estimation__ + +Because run-time is the product of the two numbers above, we can estimate it before committing to a fit: + + - Time the log likelihood evaluation: perform a fit of the model to the data once (e.g. via a `FitImaging`) and + time it, remembering to discard the first call, which includes JIT compilation. + + - Estimate the number of evaluations: for `Nautilus` a reasonable rule of thumb is of order 10000 evaluations per + free parameter, with simpler parameter spaces (e.g. linear light profiles, chained searches with tight priors) + converging in fewer. + +Multiplying the two gives a ballpark overall run-time. In tutorial 2 we used exactly this arithmetic: a log +likelihood evaluation time below 0.01 seconds on CPU (below 0.001 seconds on GPU) and 50000-100000 evaluations gave +expected run-times of roughly 30 minutes on CPU and 10 minutes on GPU. If your own estimate comes out at days or +weeks, that is the moment to simplify the model, tighten the search settings, reach for search chaining or find +a GPU -- before starting the fit, not after. + +On a GPU, tutorial 2 also showed the other pre-flight check: `analysis.print_vram_use` estimates whether the fit +will fit within the GPU's memory for your chosen batch size. __Data Quantity__ @@ -75,9 +148,15 @@ There are ways that we can reduce the number of image-pixels we fit, via masking. If we mask out more of the image, we will fit fewer pixels and **PyAutoLens** will run faster. If you want the best, most perfect lens model possible, -aggressive masking and cutting the data in this way is a bad idea, as discussed in tutorial 5. +aggressive masking and cutting the data in this way is a bad idea, as discussed in tutorial 6. __Wrap Up__ -This tutorial simply wanted to get you thinking about *why* a lens model takes as long to fit as it does. +This tutorial simply wanted to get you thinking about *why* a lens model takes as long to fit as it does: the number +of likelihood evaluations the search performs, times the cost of each evaluation, with JAX's compiled likelihood +function (and a GPU, if you have one) driving the latter down as far as it will go. + +The remaining tutorials of this chapter attack the other half of the product: search chaining (tutorial 9) and prior +passing (tutorial 10) reduce the number of evaluations needed to fit complex models, and the SLaM pipelines +(tutorial 11) package these ideas into automated pipelines for fitting large samples of lenses. """ From df76f7a43fd1283d773e4e19ff7e8825307addf7 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:35:24 +0000 Subject: [PATCH 04/22] docs: write the chapter 1 point sources tutorial Replaces the stub with a full lecture: what point sources are, the lens equation as an inverse problem, the triangle-based PointSolver, multiple images and critical curves, magnifications and why fluxes are unreliable, time delays, and how point-source computations differ from the extended-source forward model. Verified against the installed stack and runs end-to-end in both smoke and full-resolution modes. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_4_point_sources.py | 372 +++++++++++++++++- 1 file changed, 368 insertions(+), 4 deletions(-) diff --git a/scripts/chapter_1_introduction/tutorial_4_point_sources.py b/scripts/chapter_1_introduction/tutorial_4_point_sources.py index 83b0ff2..4aa4c7e 100644 --- a/scripts/chapter_1_introduction/tutorial_4_point_sources.py +++ b/scripts/chapter_1_introduction/tutorial_4_point_sources.py @@ -2,15 +2,65 @@ Tutorial 4: Point Sources ========================= -This tutorial is not wrriten yet, but will explain how point source lensing works. +In the previous tutorials, the background sources we lensed were galaxies: extended objects whose light spreads over +many thousands of light years. When lensed, their light is warped into the arcs and Einstein rings we produced with +the `Tracer`, spread across many pixels of the image. -This tutorial is not necesary for using PyAutoLens or doing strong lens analysis, so don't worry that it is not -written yet! +However, not every source is a galaxy. Some of the most scientifically valuable strong lenses have a background +source that is physically tiny: a **quasar** (the bright accretion disk around a supermassive black hole, light-days +across) or a **supernova** (an exploding star, even smaller). These are called **point sources**. -Tutorial 8 summary is written and you should check that out instead! +When a point source is strongly lensed, we do not see arcs. Instead, we see the same source appear multiple times, +as two or four (or more) distinct, unresolved points of light in the image. Modeling these systems is fundamentally +different from modeling extended sources — different enough that it deserves its own tutorial before we go any +further. + +In this tutorial, we will see why. The short version: for an extended source, we ray-trace light *forwards* from the +image-plane to the source-plane, which is computationally simple. For a point source, we must go *backwards* — we +know where the source is, and we must find every image-plane position its light appears at. That means solving the +lens equation, an inverse problem with no analytic solution, which requires a dedicated numerical tool called the +`PointSolver`. + +Only the lens equation from tutorial 2 is needed to follow this tutorial. The full lensing formalism — convergence, +potentials, and how deflection angles arise from a mass distribution — is covered in the next tutorial. + +Here is an overview of what we'll cover: + +- **Initial Setup**: Create a strong lens with a compact extended source, showing how a small source produces + distinct multiple images rather than arcs. + +- **Point Sources**: What a point source is physically, and why quasars and supernovae appear as multiple + unresolved images. + +- **Point Source Tracer**: Represent a point source in PyAutoLens using the `Point` profile and build a `Tracer`. + +- **The Lens Equation**: Why finding a point source's multiple images means solving the lens equation — an inverse + problem with no analytic solution. + +- **Point Solver**: The `PointSolver`, which solves the lens equation numerically by ray-tracing triangles. + +- **Multiple Images and Critical Curves**: Plot the solved image positions over the lensed image and the tracer's + critical curves. + +- **Magnifications**: Compute the magnification at each multiple image, and why observed fluxes are often + unreliable for modeling. + +- **Time Delays**: The arrival-time differences between multiple images, and why they matter for cosmology. + +- **Extended Versus Point Computations**: A recap of why the two regimes require fundamentally different + calculations and fitting strategies. __Contents__ +- **Initial Setup:** Create a strong lens with a compact extended source, producing distinct multiple images. +- **Point Sources:** What a point source is physically and why it appears as multiple unresolved images. +- **Point Source Tracer:** Represent a point source with the `Point` profile and build a `Tracer`. +- **The Lens Equation:** Finding multiple images means solving the lens equation, an inverse problem. +- **Point Solver:** The `PointSolver` solves the lens equation numerically via triangle ray-tracing. +- **Multiple Images and Critical Curves:** Plot the solved positions over the image and critical curves. +- **Magnifications:** The magnification of each multiple image, and why fluxes are often unreliable. +- **Time Delays:** The relative arrival times of the multiple images and their use in cosmology. +- **Extended Versus Point Computations:** Why the two regimes require fundamentally different calculations. - **Wrap Up:** Summary of the script and next steps. """ @@ -19,9 +69,323 @@ # from autolens import setup_notebook; setup_notebook() +import numpy as np + import autolens as al import autolens.plot as aplt """ +__Initial Setup__ + +Let's begin with a strong lens system like those of the previous tutorials: an elliptical isothermal mass profile +for the lens galaxy, and an extended light profile for the source galaxy. + +There is one deliberate difference: the source's `effective_radius` is just 0.1", making it far more compact than +the sources we lensed before. +""" +grid = al.Grid2D.uniform( + shape_native=(100, 100), + pixel_scales=0.05, +) + +lens_galaxy = al.Galaxy( + redshift=0.5, + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=1.6, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0), + ), +) + +source_galaxy_extended = al.Galaxy( + redshift=1.0, + light=al.lp.ExponentialCore( + centre=(0.07, 0.07), intensity=0.1, effective_radius=0.1 + ), +) + +tracer_extended = al.Tracer(galaxies=[lens_galaxy, source_galaxy_extended]) + +""" +When we plot the image of this system, something new happens: instead of a sweeping arc or Einstein ring, the +source appears as distinct blobs of light — the same source, imaged multiple times at different locations in +the image-plane. + +This is a general rule of strong lensing: the more compact the source, the more its lensed image breaks up into +separate multiple images. An extended galaxy blurs its multiple images together into arcs; a compact source keeps +them distinct. +""" +aplt.plot_array( + array=tracer_extended.image_2d_from(grid=grid), + title="Compact Source Multiple Images", +) + +""" +__Point Sources__ + +Now imagine shrinking the source further — not to 0.01", but to the physical size of a quasar accretion disk or a +supernova photosphere. These objects are light-days to light-weeks across, which at cosmological distances +corresponds to micro-arcseconds on the sky. That is millions of times smaller than the resolution of any telescope. + +Strictly speaking, such a source still has a finite size, but the telescope cannot resolve it. Each multiple image +appears as a single unresolved point of light, with all of its flux effectively contained within one pixel (spread +only by the telescope's blurring, which we will meet in a later tutorial). + +This is what we call a **point source**. Lensed quasars and lensed supernovae are the classic examples, and they +are prized objects: the arrival-time differences between their multiple images can be used to measure the expansion +rate of the Universe (the Hubble constant), and their fluxes are sensitive probes of small-scale dark matter +structure. + +For a point source, the extended-source picture of lensing breaks down: + +- There is no arc or ring of surface brightness to fit, just a handful of image positions. + +- The observable quantities are the (y,x) **positions** of the multiple images, and optionally their **fluxes** + and **time delays**. + +- The concept of evaluating a light profile's surface brightness on a ray-traced grid — the engine of the previous + two tutorials — no longer applies, because the source has no extent to evaluate. + +__Point Source Tracer__ + +PyAutoLens represents a point source with the `Point` profile, found in the `al.ps` module (`ps` for point source). +Unlike a light profile it has no `intensity`, `effective_radius` or elliptical components — it is fully described +by its (y,x) centre in the source-plane. + +We give the point source the same centre, (0.07", 0.07"), as the compact extended source above, so its multiple +images will coincide with the bright blobs in the image we just plotted. +""" +point_source = al.ps.Point(centre=(0.07, 0.07)) + +source_galaxy = al.Galaxy(redshift=1.0, point_0=point_source) + +tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy]) + +""" +Note that we attached the point source to its galaxy with the name `point_0`. This name is a label that PyAutoLens +uses when fitting real data to pair each point source in the model with the dataset containing its observed image +positions. With one source the name is a formality, but group- and cluster-scale lenses can contain many point +sources, and the names keep each one matched to its own data. + +__The Lens Equation__ + +In tutorial 2, we met the **lens equation**, which relates a coordinate in the image-plane to the coordinate in +the source-plane its light ray comes from: + +$\beta = \theta - \alpha(\theta)$ + +where $\theta$ is the image-plane (y,x) coordinate, $\alpha(\theta)$ is the deflection angle at that coordinate, +and $\beta$ is the source-plane (y,x) coordinate. + +For the extended sources of tutorials 2 and 3, we always used this equation in the *forward* direction: take every +image-plane coordinate $\theta$ on our grid, compute its deflection angles, and subtract to get $\beta$. This is +easy — it is just an evaluation, one subtraction per coordinate. + +For a point source, the question is reversed. We *know* the source's position $\beta$ (the centre of the `Point` +profile), and we want to find every image-plane position $\theta$ that satisfies the lens equation for that +$\beta$. Each solution is one of the multiple images. + +This is called **solving the lens equation**, and it is much harder than evaluating it: + +- The equation is non-linear, because the deflection angles $\alpha(\theta)$ vary with position in a way set by the + mass profile. For all but the simplest mass profiles, no analytic solution exists. + +- There are multiple solutions — that is the whole point! A single $\beta$ maps to two, four or more distinct + $\theta$ positions, and we must find all of them. + +We therefore need a numerical root-finding method that searches the image-plane for every position whose ray-traced +source-plane coordinate lands on the source. (Where the deflection angles themselves come from is the subject of +the next tutorial — for now, we just need the equation.) + +__Point Solver__ + +PyAutoLens solves the lens equation with the `PointSolver`, which uses a triangle-based scheme: + +1. Overlay the image-plane with a grid of triangles. + +2. Ray-trace the corners of every triangle to the source-plane using the lens equation, giving a set of + ray-traced source-plane triangles. + +3. Keep every triangle that contains the source's (y,x) centre — somewhere inside that image-plane triangle is a + multiple image. + +4. Subdivide the retained triangles into smaller triangles and repeat, homing in on each multiple image with + progressively finer precision. + +The `pixel_scale_precision` input sets the triangle size at which the solver stops refining, and therefore the +precision of the image positions. Smaller values are more precise but cost more computation; 0.001" is a good +balance for most lens modeling. + +Mass models also predict a faint "central image" near the centre of the lens, which is usually so heavily +demagnified that real observations never detect it. The `magnification_threshold` input discards solved images +whose magnification is below the threshold, removing this central image to match what the data would contain. +""" +solver_grid = al.Grid2D.uniform( + shape_native=(100, 100), + pixel_scales=0.2, +) + +solver = al.PointSolver.for_grid( + grid=solver_grid, pixel_scale_precision=0.001, magnification_threshold=0.1 +) + +""" +We now solve the lens equation, passing the solver our tracer (which provides the mass model's deflection angles) +and the source-plane centre of the point source. + +The result is the set of image-plane (y,x) coordinates of the multiple images. +""" +positions = solver.solve(tracer=tracer, source_plane_coordinate=(0.07, 0.07)) + +print("Multiple Image Positions (y,x) in arc-seconds:") +print(positions) + +""" +__Multiple Images and Critical Curves__ + +For our elliptical mass profile, the solver finds four multiple images (a fifth, central image existed but was +removed by the `magnification_threshold`). The number of images depends on the mass model: + +- Spherical mass profiles produce three images (including the demagnified central image). + +- Elliptical mass profiles produce five images (again including the central image). + +- More complex systems, with multiple lens galaxies, can produce even more. + +To see that the solver got the right answer, we plot the solved positions on top of the compact extended source's +image from the start of the tutorial. The positions land on the centres of the bright multiple images. + +We also overlay the tracer's tangential critical curve (introduced in tutorial 3 — the line of infinite +magnification in the image-plane). The multiple images of a strongly lensed point source straddle the critical +curve, and images close to it are the most highly magnified. +""" +tangential_critical_curve_list = al.LensCalc.from_tracer( + tracer=tracer +).tangential_critical_curve_list_from(grid=grid) + +aplt.plot_array( + array=tracer_extended.image_2d_from(grid=grid), + positions=positions, + lines=tangential_critical_curve_list, + title="Multiple Images and Critical Curve", +) + +""" +__Magnifications__ + +Lensing does not just relocate a point source's light — it magnifies it. Each multiple image has its own +magnification, set by how strongly the mass model focuses light rays at that image-plane position, and it can make +an image tens of times brighter than the unlensed source. + +For an extended source, magnification stretches the source over more pixels. For a point source, the image stays +unresolved — so the magnification instead multiplies its observed **flux**. If the source's intrinsic flux is $F$, +the flux of a multiple image with magnification $mu$ is $|mu| * F$. + +We compute the magnification at each solved image position below (the sign of $mu$ encodes the image's parity — +whether it is mirror-flipped — which is why we take its absolute value for fluxes). +""" +magnifications = al.LensCalc.from_tracer( + tracer=tracer +).magnification_2d_via_hessian_from(grid=positions) + +print("Magnification of each Multiple Image:") +print(magnifications) + +flux = 1.0 +fluxes = [flux * np.abs(magnification) for magnification in magnifications] + +print("Flux of each Multiple Image (for a source of flux 1.0):") +print(fluxes) + +""" +In principle, comparing the observed flux ratios of the images to the model's magnification ratios is a powerful +constraint on the mass model. In practice, point-source fluxes are treated with caution, because effects the smooth +mass model does not include can change them substantially: + +- **Microlensing**: individual stars in the lens galaxy lens the point source again on micro-arcsecond scales, + magnifying or demagnifying each image by unpredictable amounts that change over time. + +- **Dark matter substructure**: small invisible clumps of dark matter near an image perturb its magnification + (this is a systematic for mass modeling, but also exactly why lensed quasars are used to *search* for + substructure). + +- Dust in the lens galaxy and the source's own intrinsic variability further distort the observed flux ratios. + +Image positions are essentially immune to all of these, which is why point-source lens modeling is built on +positions first, with fluxes included only when the science demands it and the systematics are under control. + +__Time Delays__ + +There is a third observable unique to point sources. The light of each multiple image travels a different path +through the Universe, and each path takes a different time — partly because the geometric path lengths differ, and +partly because light is slowed as it climbs through the lens galaxy's gravitational field (the Shapiro delay). + +For an extended, steady source this is unobservable. But quasars flicker and supernovae explode: when the source +varies, the variation appears in each multiple image at a different time. By monitoring the images, these +**time delays** can be measured — typically days to months apart. + +Time delays are a cosmological gold mine: their absolute scale depends on the distances between us, the lens and +the source, so a lens model plus measured delays yields the Hubble constant. This is time-delay cosmography, one +of the headline applications of point-source lensing. + +The tracer computes the arrival time at each image position from its mass model and the galaxies' redshifts. Only +the *differences* between images are observable — a delay of the same length along every path is invisible — so it +is the relative values below that matter. +""" +time_delays = tracer.time_delays_from(grid=positions) + +print("Time Delay of each Multiple Image (days):") +print(time_delays) + +print("Time Delays relative to first image (days):") +print(time_delays - time_delays[0]) + +""" +__Extended Versus Point Computations__ + +We can now state precisely why point-source lensing works so differently from everything in tutorials 2 and 3, on +both the computation and the data. + +**Extended sources are forward-modeled.** To predict the data, we ray-trace every image-plane pixel to the +source-plane via the lens equation (an evaluation, not a solve) and compute the source light profile's surface +brightness at each ray-traced coordinate. This is computationally cheap, requires no equation solving, and a fit +compares the predicted and observed images pixel-by-pixel. + +**Point sources require solving an inverse problem.** The source has no surface brightness to evaluate — the model +must predict the discrete positions of the multiple images, which means numerically solving the lens equation with +the `PointSolver` every time the mass model changes. A fit then compares the predicted image positions to the +observed ones (and optionally the predicted fluxes and time delays to their measurements) — a handful of numbers, +rather than thousands of pixels. + +This trade shapes the whole analysis. The point-source dataset is tiny — a few positions with uncertainties — but +each model evaluation involves root finding over the image plane rather than simple forward ray-tracing. Whole +questions that never arose for extended sources, such as how to pair predicted images with observed ones when the +model predicts too many or too few, become central to the likelihood (the workspace covers these in detail). + __Wrap Up__ + +In this tutorial, we met point sources and the tools PyAutoLens uses to model them. Let's summarise what we've +learnt: + +- **Point Sources**: Quasars and supernovae are so much smaller than a telescope's resolution that each of their + multiple images appears as a single unresolved point of light — no arcs, no rings. + +- **The Lens Equation**: Point-source modeling means solving $\beta = \theta - \alpha(\theta)$ for the image + positions $\theta$ given the source position $\beta$ — a non-linear inverse problem with no analytic solution, + in contrast to the cheap forward evaluation used for extended sources. + +- **Point Solver**: The `PointSolver` solves the lens equation numerically, ray-tracing progressively finer + triangles until every multiple image is located to sub-pixel precision, and filtering out the demagnified + central image. + +- **Observables**: A point-source dataset consists of image positions, and optionally fluxes and time delays. + Positions are the bedrock; fluxes are often compromised by microlensing and substructure; time delays enable + measurement of the Hubble constant. + +When you are ready to model real lensed quasars and supernovae — composing mass models, fitting observed positions +with a non-linear search, and including fluxes and time delays — the `autolens_workspace/scripts/point_source` +package is the place to go, starting with its `start_here` example. + +In the next tutorial, we return to the lensing formalism itself: where deflection angles come from, and the +quantities (convergence, potential, magnification) that describe a mass distribution's lensing power. """ From 54a336fa4e09580934142330d246c3b00f63bee4 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:36:00 +0000 Subject: [PATCH 05/22] docs: teach interferometer and weak lensing data types in the data tutorial tutorial_6_data gains two short sections: one loading and plotting an interferometer dataset (visibilities, uv-plane fitting) that states HowToLens will not cover interferometry further, and one loading and plotting a weak-lensing shear catalogue that defers all detail to chapter 4 as deliberate foreshadowing. Both are backed by new scripts/simulator/ scripts adapted from the workspace simulators, wired in with the standard auto-simulate guard. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../chapter_1_introduction/tutorial_6_data.py | 90 ++++++++ scripts/simulator/interferometer.py | 193 ++++++++++++++++++ scripts/simulator/weak_lensing.py | 170 +++++++++++++++ 3 files changed, 453 insertions(+) create mode 100644 scripts/simulator/interferometer.py create mode 100644 scripts/simulator/weak_lensing.py diff --git a/scripts/chapter_1_introduction/tutorial_6_data.py b/scripts/chapter_1_introduction/tutorial_6_data.py index 68f2f99..4fc2adc 100644 --- a/scripts/chapter_1_introduction/tutorial_6_data.py +++ b/scripts/chapter_1_introduction/tutorial_6_data.py @@ -25,6 +25,7 @@ - **Poisson Noise:** We'll add Poisson noise to the image, simulating the randomness in the photon-to-electron conversion process on the CCD. - **Background Sky:** We'll add a background sky to the image, simulating the light from the sky that adds noise to the image. - **Simulator:** We'll use the `SimulatorImaging` object to simulate imaging data that includes all these effects. +- **Other Data Types:** We'll finish with a brief look at interferometer and weak lensing data, two other types of data used to study strong lenses. __Contents__ @@ -34,6 +35,8 @@ - **Background Sky:** The final effect we will consider when simulating imaging data is the background sky. - **Simulator:** The `SimulatorImaging` object lets us create simulated imaging data while including the effects of. - **Output:** We will now save these simulated data to `.fits` files, the standard format used by astronomers for. +- **Interferometer Data:** Radio / sub-mm interferometers like ALMA observe visibilities in the uv-plane rather than images. +- **Weak Lensing Data:** Weak lensing datasets are catalogues of weakly sheared background galaxy ellipticities. - **Wrap Up:** Summary of the script and next steps. """ @@ -373,6 +376,93 @@ overwrite=True, ) +""" +__Interferometer Data__ + +CCD imaging is not the only type of data used to study strong lenses. Radio and sub-mm interferometers, like the +Atacama Large Millimeter Array (ALMA) and the Jansky Very Large Array (JVLA), observe strong lenses at wavelengths +where a CCD cannot. + +An interferometer does not observe an image of the lens. Each pair of antennas in the array measures a "visibility", +a Fourier component of the sky brightness, at a point in what is called the "uv-plane" set by the separation of the +two antennas. The dataset is therefore a set of complex visibilities in Fourier space, not a 2D image, and its +noise properties are very different from those of CCD data — there is no PSF convolution, Poisson noise or +background sky; instead each visibility has Gaussian noise. + +One could Fourier transform the visibilities into an image (called a "dirty image") and fit that, but the transform +correlates the noise between pixels, making the fit statistically incorrect. **PyAutoLens** therefore fits lens +models directly in visibility space: the tracer's image is evaluated in real space on a grid (defined by a +real-space mask), Fourier transformed to the uv-plane and compared with the observed visibilities there. + +Below, we load a simulated interferometer dataset (creating it first via the `scripts/simulator/interferometer.py` +script if it does not exist on your hard-disk, using the same auto-simulation idiom as later tutorials) and plot +its dirty images — the closest an interferometer dataset comes to the CCD images we simulated above. + +HowToLens will not cover interferometry any further than this. The lecture series teaches lensing using CCD +imaging, and everything you learn transfers to visibility-space fitting. If you need to model interferometer data, +go to the `autolens_workspace/scripts/interferometer` package, which is the dedicated resource for uv-plane lens +modeling. +""" +dataset_path = Path("dataset") / "interferometer" / "simple" + +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/interferometer.py"], + check=True, + ) + +real_space_mask = al.Mask2D.circular( + shape_native=(100, 100), + pixel_scales=0.1, + radius=3.0, +) + +dataset = al.Interferometer.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + uv_wavelengths_path=dataset_path / "uv_wavelengths.fits", + real_space_mask=real_space_mask, + transformer_class=al.TransformerDFT, +) + +aplt.subplot_interferometer_dirty_images(dataset=dataset) + +""" +__Weak Lensing Data__ + +There is one more type of lensing data to glimpse before we move on: weak lensing. + +A weak lensing dataset looks nothing like the images above. Instead of the spectacular arcs and rings of strong +lensing, it is a *catalogue* of many background galaxies, each with a measured ellipticity — a shear — at its +(y, x) position on the sky. Each galaxy is only weakly sheared by the foreground mass, a distortion far too small +to see in any single galaxy, and the plot below shows this: a field of short line segments tracing the subtle, +coherent stretching of the background galaxy population, rather than any arc-like feature. + +We load a simulated weak lensing shear catalogue (again auto-simulating it, via `scripts/simulator/weak_lensing.py`, +if it is not on your hard-disk) and plot it, just so you have seen what this data looks like. + +That is deliberately all we will say for now — this glimpse is foreshadowing. Weak lensing gets a full treatment in +the final tutorial of chapter 4, which describes what these shear measurements are, why they are made far from the +lens centre and how they are fitted; until then, we defer all further description to that tutorial. +""" +dataset_path = Path("dataset") / "weak_lensing" / "simple" + +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/weak_lensing.py"], + check=True, + ) + +dataset = al.from_json(file_path=dataset_path / "dataset.json") + +aplt.subplot_weak_dataset(dataset=dataset) + """ __Wrap Up__ diff --git a/scripts/simulator/interferometer.py b/scripts/simulator/interferometer.py new file mode 100644 index 0000000..9c388e6 --- /dev/null +++ b/scripts/simulator/interferometer.py @@ -0,0 +1,193 @@ +""" +Simulator: Interferometer +========================= + +This script simulates `Interferometer` data of a 'galaxy-scale' strong lens, as would be observed by a radio or +sub-mm interferometer like ALMA or the JVLA. + +Unlike CCD imaging, an interferometer does not observe an image of the lens. It measures "visibilities", which are +the Fourier transform of the sky brightness sampled at a set of points in the "uv-plane", where each point +corresponds to the separation of a pair of antennas in the array. + +It is used to illustrate interferometer data in the HowToLens lecture series. HowToLens does not cover +interferometry beyond this glimpse; the `autolens_workspace/scripts/interferometer` package is the dedicated +resource for uv-plane lens modeling. + +__Contents__ + +- **Dataset Paths:** The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a. +- **Simulate:** Simulate the image using a (y,x) real-space grid and a synthetic set of uv-plane baselines. +- **Ray Tracing:** Setup the lens galaxy's mass and source galaxy light for this simulated lens. +- **Output:** Output the simulated dataset to the dataset path as .fits files. +- **Visualize:** Output a subplot of the simulated dataset's dirty images and the tracer's quantities. +- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass. + +__Model__ + +This script simulates `Interferometer` data of a 'galaxy-scale' strong lens where: + + - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. + - The source galaxy's light is a `SersicCore`. + +__Start Here Notebook__ + +If any code in this script is unclear, refer to the `autolens_workspace/*/interferometer/simulator.ipynb` notebook. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +from pathlib import Path +import numpy as np +import autolens as al +import autolens.plot as aplt + +""" +__Dataset Paths__ + +The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a descriptive name. +""" +dataset_type = "interferometer" +dataset_name = "simple" +dataset_path = Path("dataset", dataset_type, dataset_name) + +""" +__Simulate__ + +For interferometer data, the strong lens's image is evaluated in real space on a (y,x) grid and then Fourier +transformed to the uv-plane, where it is compared to the observed visibilities. + +Interferometers do not observe galaxies in a way where over sampling is necessary, therefore the grid uses no +over sampling. +""" +grid = al.Grid2D.uniform( + shape_native=(100, 100), + pixel_scales=0.1, +) + +""" +To perform the Fourier transform we need the wavelengths of the baselines, which describe where in the uv-plane +each visibility samples the sky's Fourier transform. + +For real data these are determined by the layout of the interferometer's antennas. The `autolens_workspace` +bundles baselines of real instruments (e.g. the Square Mile Array (SMA) and ALMA). For this tutorial dataset we +instead draw a small synthetic set of baselines from a Gaussian distribution in the uv-plane, with a scale +comparable to the SMA's (a few hundred visibilities), keeping the simulation fast and self-contained. +""" +rng = np.random.default_rng(1) + +total_visibilities = 200 + +uv_wavelengths = rng.normal(loc=0.0, scale=1.0e5, size=(total_visibilities, 2)) + +""" +To simulate the interferometer dataset we first create a simulator, which defines the exposure time, noise levels +and Fourier transform method used in the simulation. + +We use the `TransformerDFT`, an exact Discrete Fourier Transform which is fast for datasets with a low number of +visibilities like this one. +""" +simulator = al.SimulatorInterferometer( + uv_wavelengths=uv_wavelengths, + exposure_time=300.0, + noise_sigma=1000.0, + transformer_class=al.TransformerDFT, +) + +""" +__Ray Tracing__ + +Setup the lens galaxy's mass and source galaxy light for this simulated lens. + +The lens galaxy has no light profile, because at the radio and sub-mm wavelengths an interferometer observes the +foreground lens galaxy typically emits negligibly. +""" +lens_galaxy = al.Galaxy( + redshift=0.5, + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=1.6, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0), + ), + shear=al.mp.ExternalShear(gamma_1=0.05, gamma_2=0.05), +) + +source_galaxy = al.Galaxy( + redshift=1.0, + bulge=al.lp.SersicCore( + centre=(0.0, 0.0), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0), + intensity=10.0, + effective_radius=1.0, + sersic_index=2.5, + ), +) + +""" +Use these galaxies to setup a tracer, which will generate the image for the simulated interferometer dataset. +""" +tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy]) + +""" +Lets look at the tracer`s image, this is the image we'll be simulating. +""" +aplt.plot_array(array=tracer.image_2d_from(grid=grid), title="Image") + +""" +Pass the simulator a tracer, which creates the ray-traced image plotted above and simulates it as an +interferometer dataset. +""" +dataset = simulator.via_tracer_from(tracer=tracer, grid=grid) + +""" +Plot the simulated interferometer dataset's dirty images before outputting it to fits. +""" +aplt.subplot_interferometer_dirty_images(dataset=dataset) + +""" +__Output__ + +Output the simulated dataset to the dataset path as .fits files. +""" +aplt.fits_interferometer( + dataset=dataset, + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + uv_wavelengths_path=dataset_path / "uv_wavelengths.fits", + overwrite=True, +) + +""" +__Visualize__ + +Output a subplot of the simulated dataset's dirty images and the tracer's quantities to the dataset path as +.png files. +""" +aplt.subplot_interferometer_dirty_images( + dataset=dataset, output_path=dataset_path, output_format="png" +) + +aplt.subplot_tracer( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) +aplt.subplot_galaxies_images( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) + +""" +__Tracer json__ + +Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and galaxies +are safely stored and available to check how the dataset was simulated in the future. + +This can be loaded via the method `tracer = al.from_json()`. +""" +al.output_to_json( + obj=tracer, + file_path=Path(dataset_path, "tracer.json"), +) + +""" +The dataset can be viewed in the folder `dataset/interferometer/simple`. +""" diff --git a/scripts/simulator/weak_lensing.py b/scripts/simulator/weak_lensing.py new file mode 100644 index 0000000..3210acb --- /dev/null +++ b/scripts/simulator/weak_lensing.py @@ -0,0 +1,170 @@ +""" +Simulator: Weak Lensing +======================= + +This script simulates a weak gravitational lensing shear catalogue. Unlike the imaging simulators (which produce +a 2D image of the lensed source) the weak-lensing simulator produces a *catalogue* of (gamma_2, gamma_1) shear +measurements at the (y, x) positions of a population of background source galaxies. + +The lens is a **cluster-scale** mass (Einstein radius 25", the regime where weak lensing is actually used) and the +background galaxies are placed in an **annulus outside the strong-lensing core** — this is where real weak-lensing +measurements are made, so the simulated shears are genuinely weak (|gamma| ~ 0.05-0.2) rather than the order-unity +shears found among galaxies projected near the Einstein radius. + +The shear computation itself comes from `Tracer.shear_yx_2d_via_hessian_from`, which differentiates the +deflection-angle field. On top of that the simulator adds Gaussian shape noise per galaxy (the dominant noise +source in real weak-lensing data — each galaxy has a random unlensed ellipticity around 0.2-0.4 per component). + +It is used to illustrate weak lensing data in the HowToLens lecture series. + +__Contents__ + +- **Dataset Paths:** The `dataset_type` and `dataset_name` define the on-disk output folder. +- **Ray Tracing:** Build a Tracer from a cluster-scale Isothermal lens galaxy. +- **Source Positions:** Draw background source galaxies in an annulus outside the strong-lensing core. +- **Simulator:** Construct a `SimulatorShearYX` with the desired shape-noise level and random seed. +- **Output:** Save the simulated `WeakDataset` and the `Tracer` to JSON. +- **Visualize:** Plot the shear field and the dataset subplot mosaic via `aplt`. + +__Start Here Notebook__ + +If any code in this script is unclear, refer to the `autolens_workspace/*/weak/simulator.ipynb` notebook. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +from pathlib import Path + +import numpy as np + +import autolens as al +import autolens.plot as aplt + +""" +__Dataset Paths__ + +The `dataset_type` describes the type of data being simulated (in this case, a weak-lensing shear catalogue) and +`dataset_name` gives it a descriptive name. They define the folder the dataset is output to on your hard-disk: + + - The shear catalogue will be output to `/dataset/weak_lensing/simple/dataset.json`. + - The tracer used to simulate the dataset will be output alongside as `tracer.json`. +""" +dataset_type = "weak_lensing" +dataset_name = "simple" + +dataset_path = Path("dataset") / dataset_type / dataset_name + +""" +__Ray Tracing__ + +We define the lens galaxy's mass distribution as a **cluster-scale** `Isothermal` profile with an Einstein radius +of 25" (no external shear, no source light — weak-lensing measurements are sensitive to the shear field induced +by the lens mass alone). A 25" Einstein radius corresponds to a very massive cluster (velocity dispersion of order +1200-1400 km/s) — the mass scale on which weak lensing is the tool of choice, because the shear signal extends to +the many-arc-minute radii where strong lensing has no features. + +Because the source-galaxy positions are an irregular catalogue rather than a 2D pixel grid, this simulator +does not need PSF convolution, over-sampling, or background-sky modelling — those are all imaging-specific +concerns. +""" +lens_galaxy = al.Galaxy( + redshift=0.5, + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=25.0, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0), + ), +) + +source_galaxy = al.Galaxy(redshift=1.0) + +tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy]) + +""" +__Source Positions__ + +Real weak-lensing measurements avoid the strong-lensing core, where the linear-shear approximation breaks down +and cluster-member galaxies contaminate the sample. We therefore draw the background galaxies in an **annulus** +between an inner radius of 50" (~2 Einstein radii, safely into the weak regime) and an outer radius of 200" +(~3.3 arc-minutes), uniformly in area. + +This is the physically genuine weak-lensing geometry: at 50" the shear is |gamma| ~ 0.25 and by 200" it has +fallen to |gamma| ~ 0.03, so every galaxy is a *weak* probe whose individual shear is well below the 0.25 shape +noise. The signal lives in the ensemble of 1500 galaxies (a deep-survey source density of ~45 / arc-minute^2), +exactly as in a real cluster weak-lensing analysis. + +We build the positions as an `al.Grid2DIrregular` of (y, x) coordinates and pass them to the simulator's +`via_tracer_from` method. +""" +rng = np.random.default_rng(1) + +n_galaxies = 1500 +radius_inner = 50.0 # arc-seconds — inside this we are in the strong-lensing core. +radius_outer = 200.0 # arc-seconds — the edge of the simulated weak-lensing field. + +radii = np.sqrt(rng.uniform(radius_inner**2.0, radius_outer**2.0, n_galaxies)) +phi = rng.uniform(0.0, 2.0 * np.pi, n_galaxies) + +positions = al.Grid2DIrregular( + values=np.stack([radii * np.sin(phi), radii * np.cos(phi)], axis=1) +) + +""" +__Simulator__ + +`SimulatorShearYX` takes a shape-noise level and an optional random seed. A `noise_sigma` of 0.25 is a typical +per-component shape-noise value for a weak-lensing survey; reduce it to 0.0 to inspect the noise-free shear field. + +`via_tracer_from` evaluates the tracer's shear at the supplied (y, x) positions and adds the shape noise. +""" +simulator = al.SimulatorShearYX(noise_sigma=0.25, seed=1) + +dataset = simulator.via_tracer_from( + tracer=tracer, + grid=positions, + name=dataset_name, +) + +""" +__Output__ + +Save the simulated `WeakDataset` and the `Tracer` to the dataset folder as JSON, ensuring the inputs to the +simulation are reproducible and inspectable later. +""" +dataset_path.mkdir(parents=True, exist_ok=True) + +al.output_to_json(obj=dataset, file_path=dataset_path / "dataset.json") +al.output_to_json(obj=tracer, file_path=dataset_path / "tracer.json") + +""" +__Visualize__ + +The shear field is visualised with `matplotlib.quiver` rendered as *headless line segments* +(`headwidth=0, headlength=0, headaxislength=0`) — the standard weak-lensing convention, because shear is a +spin-2 quantity and a 180-degree rotation maps it back to itself, so an arrowhead would suggest a +directionality the data does not have. + +`aplt.subplot_weak_dataset` produces a 2x2 mosaic combining the shear field, the per-galaxy noise map, the +shear magnitude `|gamma|`, and the position angle `phi`. `aplt.plot_shear_yx_2d` writes a single-panel +quiver of the shear field alone — useful for high-resolution figures where the mosaic is too dense. +""" +aplt.subplot_weak_dataset( + dataset=dataset, + output_path=dataset_path, + output_format="png", +) + +aplt.plot_shear_yx_2d( + shear_yx=dataset.shear_yx, + output_path=dataset_path, + output_format="png", +) + +print(dataset.info) +print(f"Wrote dataset to {dataset_path}") + +""" +The dataset can be viewed in the folder `dataset/weak_lensing/simple`. +""" From a26a363fb7201bb6bc6c80fe69112e0d619dab49 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:36:39 +0000 Subject: [PATCH 06/22] =?UTF-8?q?docs:=20write=20chapter=204=20tutorial=20?= =?UTF-8?q?6=20=E2=80=94=20weak=20lensing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the scaling-up chapter and the core series: what weak lensing is, shear catalogues and their upstream production, the mass-scale ladder from single galaxies to clusters, in-memory simulation of shear data, whisker plots and Kaiser-Squires mass maps, fitting with FitWeak, modeling with AnalysisWeak, tangential shear profiles with a B-mode null test, and joint strong+weak framing. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_6_weak_lensing.py | 456 ++++++++++++++++++ 1 file changed, 456 insertions(+) create mode 100644 scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py b/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py new file mode 100644 index 0000000..ae19eed --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py @@ -0,0 +1,456 @@ +""" +Tutorial 6: Weak Lensing +======================== + +Every tutorial in this series so far — indeed, every fit performed in all four chapters of **HowToLens** — has been +a *strong* lensing analysis. Strong lensing occurs when a background galaxy lies so close (in projection) to a +foreground mass that its light is bent into multiple images, arcs or a complete Einstein ring. These dramatic +features are what we simulated, fitted and modeled, from the single galaxy-scale lenses of chapters 1 and 2 up to +the group-scale and cluster-scale systems earlier in this chapter. + +Strong lensing is spectacular, but it is also rare and spatially confined. Multiple images only form inside (or very +near) the Einstein radius, so a strong-lensing analysis constrains the mass distribution only within that region — +a few arc-seconds for a galaxy, tens of arc-seconds for a cluster core. Outside it, the arcs and multiple images +simply do not exist, and everything we have built so far has nothing to fit. + +Yet the gravity of the foreground mass does not stop at the Einstein radius. *Every* background galaxy, however far +from the lens centre, has its shape slightly distorted — sheared — by the foreground mass it sits behind. This is +**weak lensing**: a percent-level stretching of each background galaxy's observed ellipticity, tangentially aligned +around the foreground mass. + +The catch is that we cannot see this distortion in any single galaxy. Galaxies are not intrinsically round: a +typical galaxy has a random unlensed ellipticity of ~0.25 per component, whereas the weak-lensing shear it receives +is ~0.01-0.1. The signal is buried an order of magnitude below the intrinsic "shape noise" of any one object. + +The solution is statistical. The intrinsic ellipticities of different galaxies are randomly oriented and average to +zero, whereas the lensing shear is coherent — every galaxy near a given point on the sky is sheared the same way. +Average the measured shapes of many background galaxies and the random part cancels while the lensing part remains. +This is the fundamental contrast with everything the series has done so far: strong lensing extracts an exquisite +signal from a single special system, weak lensing extracts a faint signal from the ensemble of many ordinary ones. + +This changes what the data even *is*. There is no image to fit, no PSF to convolve, no mask, no pixelized source +reconstruction. A weak-lensing dataset is a **shear catalogue**: a table of background-galaxy sky positions, each +with a measured shear estimate (two ellipticity components) and a per-galaxy uncertainty. Fitting one means +comparing a mass model's predicted shear field, evaluated at those positions, against the measured values. + +In this tutorial we simulate a weak-lensing shear catalogue around a cluster-scale lens (entirely in memory — no +files are written), visualize its shear field, fit it with a mass model whose parameters we know, and then infer +those parameters with a non-linear search. You will recognise every step: the `Tracer`, `Fit`, `Analysis` and +search workflow of the whole series, applied to a completely different kind of data. + +This tutorial closes both this chapter and the four core chapters of **HowToLens**. + +__Contents__ + +- **Shear Catalogues:** What a weak-lensing dataset is and where the catalogue comes from in a real analysis. +- **Mass Scales:** Why weak lensing is a cluster-scale tool, tying to the mass scales of the previous tutorials. +- **Ray Tracing:** Build a `Tracer` for a cluster-scale lens, the mass whose shear field we will measure. +- **Source Galaxy Positions:** Draw background galaxies in an annulus outside the strong-lensing core. +- **Simulate:** Create a `WeakDataset` in memory with `SimulatorShearYX`, adding realistic shape noise. +- **Visualize:** Plot the shear field as a whisker map and the dataset's 2x2 summary mosaic. +- **Mass Map:** Invert the shear catalogue into a model-independent convergence map (Kaiser-Squires). +- **Fitting:** Fit the catalogue with the true mass model via `FitWeak` and inspect its goodness-of-fit. +- **Model Fit:** Infer the mass model from the shear catalogue alone with `AnalysisWeak` and a non-linear search. +- **Result:** The inferred model, the fit mosaic and the tangential shear profile. +- **Joint Strong and Weak Lensing:** How PyAutoLens expects weak lensing to be used — combined with strong lensing. +- **Wrap Up:** The end of the chapter, and of the core HowToLens lectures. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +import numpy as np +from pathlib import Path + +import autofit as af +import autolens as al +import autolens.plot as aplt + +""" +__Shear Catalogues__ + +Before we simulate anything, lets be clear about what a real weak-lensing dataset looks like, because it is unlike +any data this series has fitted before. + +A **shear catalogue** is a table with one row per background galaxy, containing: + + - The galaxy's sky position (for us, (y, x) arc-second offsets from a chosen centre). + - A measured shear estimate (gamma_1, gamma_2) — in practice the galaxy's measured ellipticity components, which + estimate the lensing shear because the intrinsic shape averages to zero over many galaxies. + - A per-galaxy uncertainty, combining the intrinsic shape dispersion (~0.25 per component) with the measurement + error, added in quadrature. + +Producing this catalogue from raw telescope images is a substantial data-reduction task in its own right: galaxies +must be detected, stars separated from galaxies, the PSF measured and its blurring of galaxy shapes corrected +(the PSF makes every galaxy look rounder, diluting the shear signal), and calibration biases characterised. +Dedicated shape-measurement pipelines exist for exactly this job, and entire survey collaborations are built +around getting it right. + +**All of that is outside PyAutoLens's scope.** PyAutoLens assumes the shear catalogue has already been produced +upstream by such a pipeline, and starts where the catalogue ends: fitting mass models to the measured shears. This +division of labour is why the weak-lensing API is so lean — no PSF, no mask, no image — the hard observational +systematics were dealt with before the data reached us. + +__Mass Scales__ + +This chapter has climbed a ladder of mass scales, and weak lensing is its top rung. The strength of the statistical +shear signal around a lens scales with its mass, so whether weak lensing is even measurable depends on where on the +ladder we stand: + + - **A single galaxy** (Einstein radius ~1-2", the lenses of chapters 1-3): the shear imprinted on background + galaxies beyond the Einstein radius is far too weak to detect around any one system — there are too few + background galaxies carrying too little shear. (Surveys recover it only by *stacking* thousands of lens + galaxies, a technique called galaxy-galaxy lensing that averages over the lens population.) + + - **A group** (Einstein radius ~5-10", the scale of the group tutorial earlier in this chapter): the signal is + marginal — detectable for well-observed individual groups, but noisy. + + - **A cluster** (Einstein radius ~10-30"+, the previous tutorial's scale): the signal is strong enough to measure + around a *single* system. Hundreds to thousands of background galaxies within a few arc-minutes each carry a + |gamma| ~ 0.01-0.2 shear, and their average traces the cluster's mass out to radii of arc-minutes — ten or more + times further out than the strong-lensing core. + +This reach is the scientific point. The dark matter halo of a cluster extends to Mpc scales, far beyond where arcs +form. Weak lensing is the only lensing probe of that outer halo, which is why it is the tool of choice for cluster +mass measurements, and it is why this tutorial simulates a cluster-scale lens. + +__Ray Tracing__ + +We begin exactly as the series always has: with a `Tracer`. The lens is a cluster-scale `Isothermal` mass profile +with an Einstein radius of 25.0" — the same order as the previous tutorial's cluster, and a mass for which the +weak shear signal is genuinely measurable. The source galaxy carries no light profile: weak lensing measures the +lens's shear field at the background galaxies' positions, so their appearance is irrelevant — they are pure probes, +included only to give the `Tracer` its source-plane redshift. + +Note also what the lens galaxy lacks: no light profile. A shear catalogue contains no image of the lens, so there +is no lens light to model — another simplification compared to every imaging fit in this series. +""" +lens_galaxy = al.Galaxy( + redshift=0.5, + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=25.0, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0), + ), +) + +source_galaxy = al.Galaxy(redshift=1.0) + +tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy]) + +""" +__Source Galaxy Positions__ + +Real weak-lensing measurements avoid the strong-lensing core: inside it the shear is no longer weak (the linear +shear approximation breaks down), and cluster-member galaxies contaminate the background sample. We therefore draw +our background galaxies in an **annulus**, from an inner radius of 50" (twice the Einstein radius, safely into the +weak regime) to an outer radius of 200" (over 3 arc-minutes), distributed uniformly in area. + +At 50" from this lens the shear is |gamma| ~ 0.25, and by 200" it has fallen to |gamma| ~ 0.06 — every galaxy is a +weak probe whose individual distortion is at or below the shape noise. With 1500 galaxies (a deep-survey source +density of ~45 per square arc-minute) the *ensemble* nonetheless carries a decisive signal, exactly as in a real +cluster analysis. + +The positions are stored as an `al.Grid2DIrregular` of (y, x) coordinates — the same irregular-grid structure the +point-source tutorials used, because a catalogue of sky positions is not a uniform pixel grid. +""" +rng = np.random.default_rng(1) + +n_galaxies = 1500 +radius_inner = 50.0 # arc-seconds — inside this we are in the strong-lensing core. +radius_outer = 200.0 # arc-seconds — the edge of our simulated weak-lensing field. + +radii = np.sqrt(rng.uniform(radius_inner**2.0, radius_outer**2.0, n_galaxies)) +phi = rng.uniform(0.0, 2.0 * np.pi, n_galaxies) + +positions = al.Grid2DIrregular( + values=np.stack([radii * np.sin(phi), radii * np.cos(phi)], axis=1) +) + +""" +__Simulate__ + +The `SimulatorShearYX` object simulates a weak-lensing shear catalogue from a tracer: its `via_tracer_from` method +evaluates the tracer's shear field at every galaxy position (by differentiating the deflection-angle field) and +adds Gaussian shape noise to each measurement. + +A `noise_sigma` of 0.25 per shear component is the standard intrinsic shape dispersion of real galaxies — this is +the dominant noise source in weak lensing, and it is what makes the per-galaxy signal invisible: the noise on each +measurement is several times larger than the shear it contains. + +Unlike every previous tutorial, we do not write this dataset to disk and reload it. The whole catalogue is a few +thousand numbers, so we keep it in memory and use it directly — which also mirrors how you might resimulate +catalogues on the fly when testing survey sensitivities. (The workspace's `scripts/weak/simulator.py` shows the +disk-based version, with the same JSON output pattern as the imaging simulators.) +""" +dataset_name = "weak_lensing" + +simulator = al.SimulatorShearYX(noise_sigma=0.25, seed=1) + +dataset = simulator.via_tracer_from( + tracer=tracer, + grid=positions, + name=dataset_name, +) + +print(dataset.info) + +""" +__Visualize__ + +Weak-lensing data has its own visual language. The shear field is drawn as a **whisker map**: at each galaxy +position, a line segment whose length is the shear magnitude |gamma| and whose orientation is the shear's position +angle. The segments are deliberately *headless* (no arrowheads), because shear is a spin-2 quantity — rotating a +shear by 180 degrees maps it back onto itself, so a whisker has an orientation but no direction, and an arrowhead +would suggest information the data does not contain. + +Around a massive lens, the whiskers align *tangentially* — each traces a small piece of a circle around the lens +centre, the statistical echo of the rings and arcs of strong lensing. Squint at the plot below and you can see it, +though the shape noise makes it far from obvious galaxy-by-galaxy: this is what a signal an order of magnitude +below the per-object noise looks like. +""" +aplt.plot_shear_yx_2d(shear_yx=dataset.shear_yx) + +""" +`aplt.subplot_weak_dataset` summarises the full dataset as a 2x2 mosaic: the whisker map, the per-galaxy noise-map, +the shear magnitude |gamma| and the position angle phi at every galaxy. +""" +aplt.subplot_weak_dataset(dataset=dataset) + +""" +__Mass Map__ + +A remarkable property of weak lensing is that the shear catalogue can be inverted directly into a map of the +convergence `kappa` — the dimensionless projected mass density we have used throughout the series — *without +assuming any mass model at all*. In Fourier space, shear and convergence are related algebraically, so two FFTs +turn the catalogue into a "dark matter map". This is the Kaiser-Squires technique, and it produced some of the most +famous images in cosmology, such as the mass map of the Bullet Cluster showing dark matter offset from the +colliding gas. + +`aplt.plot_convergence_map` bins the catalogue onto a regular grid, applies a small Gaussian smoothing (per-cell +shears are shape-noise dominated) and plots the reconstruction. For our simulated cluster it peaks at the lens +centre at (0.0", 0.0"). Two caveats: the map's mean is unconstrained (the mass-sheet degeneracy, which chapter 3 +met in its strong-lensing form) and FFT periodicity produces edge artefacts — for quantitative masses we fit a +mass model, which is what the rest of this tutorial does. +""" +aplt.plot_convergence_map( + shear_yx=dataset.shear_yx, + shape_native=(30, 30), + smoothing_sigma_pixels=1.0, +) + +""" +__Fitting__ + +We now fit the catalogue, following the same pattern as every fit in this series: build a model `Tracer`, pass it +with the dataset to a `Fit` object, and inspect residuals and the log likelihood. For weak lensing the fit object +is `FitWeak`, and because we simulated the data ourselves we can hand it the *true* tracer and see what a perfect +model looks like. + +`FitWeak` evaluates the model tracer's shear field at the dataset's galaxy positions and compares it with the +measured shears, assuming each component is independently Gaussian-distributed around the model with the +per-galaxy noise. Each galaxy contributes **two** independent data points (gamma_1 and gamma_2), so the number of +degrees of freedom is 2 * n_galaxies, and for a good fit whose residuals are pure shape noise the chi-squared +should be close to that number. + +Compare this to the imaging fits of chapter 1: there, the fit convolved a model image with the PSF and compared +tens of thousands of pixels; here there is no convolution, no mask and only a few thousand numbers. A weak-lensing +likelihood is orders of magnitude cheaper — which is precisely why it is so inexpensive to add to a strong-lensing +analysis, as discussed at the end of this tutorial. +""" +fit = al.FitWeak(dataset=dataset, tracer=tracer) + +print() +print("Fit Summary (true model)") +print("------------------------") +print(f"n_galaxies : {dataset.n_galaxies}") +print(f"degrees_of_freedom: {2 * dataset.n_galaxies}") +print(f"chi_squared : {fit.chi_squared:.3f}") +print(f"log_likelihood : {fit.log_likelihood:.3f}") + +""" +As always, an incorrect mass model produces a worse fit. Halving the Einstein radius halves the predicted shear +everywhere, leaving coherent tangential residuals across the field, and the log likelihood drops accordingly. +""" +tracer_wrong = al.Tracer( + galaxies=[ + al.Galaxy( + redshift=0.5, + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=12.5, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0), + ), + ), + source_galaxy, + ] +) + +fit_wrong = al.FitWeak(dataset=dataset, tracer=tracer_wrong) + +print() +print(f"log_likelihood (true model) : {fit.log_likelihood:.3f}") +print(f"log_likelihood (wrong model): {fit_wrong.log_likelihood:.3f}") + +""" +`aplt.subplot_fit_weak` visualises a weak-lensing fit as a 2x2 mosaic: the observed shear field, the model shear +field, the two overlaid on one axes (data in black, model in red), and the per-galaxy chi-squared map. For the true +model the overlay's residuals are short and randomly oriented — the shape-noise floor — and the chi-squared map is +spatially uniform. +""" +aplt.subplot_fit_weak(fit=fit) + +""" +__Model Fit__ + +In a real analysis we do not know the mass model — we infer it. The workflow is the one you have used since +chapter 2: compose a model with `af.Model` and `af.Collection`, choose a non-linear search, create an `Analysis` +object and fit. For weak lensing the analysis object is `AnalysisWeak`, whose `log_likelihood_function` builds a +`Tracer` from each sampled parameter set, evaluates its shear field at the catalogue positions and returns the +Gaussian log likelihood — the same `FitWeak` machinery we just used by hand. + +The model is the lens's `Isothermal` mass [5 parameters]; the source galaxy again carries no components. Note the +tiny parameter space — no lens light, no source light, no shear-as-nuisance-parameter (the shear field *is* the +data here) — compared to the N=20+ models of the imaging tutorials. + +One adjustment is needed, familiar from the group and cluster tutorials: the default priors are tuned for +galaxy-scale lenses (Einstein radii of 0"-8", centres within a fraction of an arc-second). Our cluster's 25" +Einstein radius lies entirely outside that prior, so we widen the priors to cluster scales — always match your +priors to the mass scale of the system you are fitting. +""" +mass = af.Model(al.mp.Isothermal) +mass.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=60.0) +mass.centre.centre_0 = af.GaussianPrior(mean=0.0, sigma=20.0) +mass.centre.centre_1 = af.GaussianPrior(mean=0.0, sigma=20.0) + +lens = af.Model(al.Galaxy, redshift=0.5, mass=mass) + +source = af.Model(al.Galaxy, redshift=1.0) + +model = af.Collection(galaxies=af.Collection(lens=lens, source=source)) + +print(model.info) + +""" +We fit the model with the nested sampling algorithm Nautilus, as throughout the series. A weak-lensing likelihood +evaluation takes milliseconds (one shear-field evaluation at 1500 positions plus a chi-squared sum), so this +5-parameter fit completes in minutes on an ordinary CPU — a refreshing contrast to the imaging fits of the earlier +chapters. +""" +search = af.Nautilus( + path_prefix=Path("howtolens", "chapter_4"), + name="tutorial_6_weak_lensing", + unique_tag=dataset_name, + n_live=100, + iterations_per_quick_update=5000, +) + +analysis = al.AnalysisWeak(dataset=dataset) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_6_weak_lensing" + " folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result = search.fit(model=model, analysis=analysis) + +print("The search has finished run - you may now continue the notebook.") + +""" +__Result__ + +The result's `info` attribute confirms the search recovers the input mass model — Einstein radius, ellipticity and +centre — from nothing but the statistically-averaged shapes of background galaxies. No arc, no ring, no multiple +images: the ensemble alone constrains the cluster's mass. +""" +print(result.info) + +aplt.subplot_fit_weak(fit=result.max_log_likelihood_fit) + +""" +Cluster weak-lensing measurements are conventionally presented as the **tangential shear profile**: the mean +tangential shear gamma_t of background galaxies in radial bins about the lens centre, which traces the projected +mass profile. `aplt.plot_shear_profile` bins our catalogue and, given the fit, overlays the model's profile as a +line. + +The plot also shows the *cross* component gamma_x — the shear rotated by 45 degrees. Gravitational lensing produces +no cross component at leading order, so cross points scattering around zero is the standard "B-mode" null test of a +weak-lensing measurement: a systematic contaminating the shapes would show up there. +""" +aplt.plot_shear_profile( + result.max_log_likelihood_fit, + centre=(0.0, 0.0), + bins=8, +) + +""" +__Joint Strong and Weak Lensing__ + +We fitted this catalogue on its own, and weak-lensing-only fits of real catalogues are a fully supported PyAutoLens +workflow. But the way PyAutoLens really expects weak lensing to be used is **jointly with strong lensing**, because +the two probes are perfectly complementary: + + - **Strong lensing** (everything before this tutorial) pins the mass in the inner region with exquisite precision — + the positions of multiple images and arcs nail the Einstein mass and the inner density profile — but says + nothing beyond the Einstein radius. + + - **Weak lensing** (this tutorial) constrains the mass profile out to arc-minute radii — the outskirts of the dark + matter halo — but its centre and inner profile are only weakly pinned by the field's geometry. + +Fit both datasets simultaneously with a single mass model — one analysis for the imaging or point-source data, one +`AnalysisWeak` for the shear catalogue, combined exactly as the multi-dataset fits earlier in this chapter combined +their analyses — and the model is anchored at the centre by strong lensing while its outer profile is measured by +weak lensing. This hybrid is the state of the art for cluster mass measurements, used across systems like the +Frontier Fields clusters, and PyAutoLens's shared `Tracer` infrastructure makes it natural: the same mass profiles +that ray-traced arcs in the previous tutorial produce the shear field fitted here. + +The workspace's `autolens_workspace/*/weak` package has the complete treatment: + + - `weak/start_here.py`: fits a real shear catalogue of the merging cluster Abell 2744 ("Pandora's Cluster") — + download, quality cuts, mass map, NFW halo fit. + - `weak/simulator.py`, `weak/fit.py`, `weak/modeling.py`: the disk-based versions of this tutorial's workflow. + - `weak/likelihood_function.py`: a step-by-step walkthrough of the weak-lensing likelihood. + - `weak/features/strong_lensing`: the joint strong-plus-weak fits described above. + +__Wrap Up__ + +This tutorial completed the chapter's journey up the mass ladder, and with it the four core chapters of +**HowToLens**. Lets take stock of how far we have come. + +Chapter 1 built lensing from first principles: grids, light and mass profiles, ray tracing, the lens equation, and +fitting imaging data with a `Tracer`. Chapter 2 turned fitting into inference — non-linear searches, priors, +Bayesian model comparison — so we could *infer* lens models rather than guess them. Chapter 3 replaced analytic +sources with pixelized reconstructions, letting the data itself reveal the source's morphology. + +This chapter then scaled those tools up through every regime nature offers, and in this tutorial: + +- **Weak Lensing:** Outside the strong-lensing region every background galaxy is still weakly sheared; the signal + is invisible per galaxy beneath intrinsic shape noise but emerges statistically over an ensemble. + +- **Shear Catalogues:** The weak-lensing dataset is a catalogue of galaxy positions, measured shear estimates and + uncertainties, produced upstream by a dedicated shape-measurement pipeline — PyAutoLens fits mass models to it + and leaves the shape measurement to those pipelines. + +- **Mass Scales:** The statistical signal is hopeless around a single galaxy, marginal around a group and + measurable around a cluster — and it probes the dark matter halo to radii far beyond the reach of arcs. + +- **The Same Workflow:** `SimulatorShearYX`, `FitWeak` and `AnalysisWeak` slot into the identical + simulate-fit-model pattern the series has used since chapter 1, and a non-linear search recovered the cluster's + mass from galaxy shapes alone. + +- **Joint Fits:** Strong lensing pins the inner mass, weak lensing measures the outskirts; fitting both with one + model is the expected PyAutoLens workflow for cluster and group science. + +And that is the series: from a single lens galaxy, to lenses with extra galaxies, to multi-galaxy lenses, to +scaling relations that keep many-galaxy models tractable, to group-scale and cluster-scale systems, and finally +beyond the Einstein radius altogether into the weak-lensing regime. You have every conceptual tool the modern +lensing literature uses, and you have used each one on data. + +Where next? The `autolens_workspace` is the destination for real science. Its `imaging`, `point_source`, `group`, +`cluster` and `weak` packages hold the production-ready versions of everything taught here — including the +`start_here.py` scripts that are each topic's canonical, always-current reference — plus the features this series +could only gesture at: multi-wavelength fits, interferometry, automated SLaM pipelines and more. Take your own +data there, and good luck with your science! +""" From 2a27dc210b12f44ffa5c15986de5502d16b8b7f5 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:36:47 +0000 Subject: [PATCH 07/22] docs: write the chapter 1 lensing formalism tutorial Replaces the stub with the series' equations lecture: cosmological distances, the lens equation, convergence and critical surface density, deflection angles, the lensing potential, shear and magnification via the Jacobian, critical curves and caustics, the Einstein radius as the robust mass measurement, and time delays. All lensing mathematics from the rest of the series is deferred here, with every quantity computed and plotted through the live API. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_5_lensing_formalism.py | 552 +++++++++++++++++- 1 file changed, 547 insertions(+), 5 deletions(-) diff --git a/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py b/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py index a2c4991..16f9646 100644 --- a/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py +++ b/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py @@ -2,16 +2,37 @@ Tutorial 5: Lensing Formalism ============================= -This tutorial is not wrriten yet, but will explain what all the different lens quantities are and give a more -formal description of them. +This tutorial is the equations lecture of **HowToLens**. -This tutorial is not necesary for using PyAutoLens or doing strong lens analysis, so don't worry that it is not -written yet! +Every other tutorial in this series deliberately defers the formal mathematics of gravitational lensing, so that you +could first learn lensing hands-on: in the earlier tutorials we created grids, evaluated light and mass profiles, +ray-traced coordinates from the image-plane to the source-plane and looked at quantities like the convergence, +deflection angles and critical curves visually, without ever writing down their formal definitions. -Tutorial 8 summary is written and you should check that out instead! +This tutorial gathers all of that algebra in one place. Each quantity you have already computed and plotted — +deflection angles, convergence, potential, magnification, critical curves, the Einstein radius — is now given its +formal mathematical definition, explained in plain words, and tied back to the exact **PyAutoLens** method that +computes it. The goal is that after this tutorial, every symbol in a lensing paper maps to a line of code you know. + +None of this mathematics is required to use **PyAutoLens** or to analyse strong lenses — the library computes +everything for you. But understanding where each quantity comes from will make you a better lens modeler, and this +is the single place in **HowToLens** where the formalism lives, so you can return here whenever you need it. + +We will build one simple strong lens system — an elliptical isothermal (SIE) lens galaxy and a Sersic source — and +reuse it throughout, computing every quantity from the same tracer so you can see how they all fit together. __Contents__ +- **Initial Setup:** Build the grid, SIE lens, Sersic source and `Tracer` reused throughout the tutorial. +- **Cosmological Distances:** Angular diameter distances D_l, D_s, D_ls and how arcseconds convert to kiloparsecs. +- **The Lens Equation:** beta = theta - alpha(theta), the mapping from image-plane to source-plane, and multiple images. +- **Convergence:** Surface mass density Sigma, the critical surface density Sigma_cr and kappa = Sigma / Sigma_cr. +- **Deflection Angles:** The integral relating the convergence field to the deflection angles. +- **The Lensing Potential:** The scalar potential psi, with alpha = grad psi and kappa = (1/2) laplacian psi. +- **Shear and Magnification:** The Hessian, the Jacobian matrix A, shear gamma and magnification mu = 1 / det(A). +- **Critical Curves and Caustics:** Where det(A) = 0 in the image-plane, and its map to the source-plane. +- **Einstein Radius:** Its definition, the SIS and point-mass closed forms, and why it is the robust mass measurement. +- **Time Delays:** The Fermat potential and the time-delay surface, in brief. - **Wrap Up:** Summary of the script and next steps. """ @@ -20,9 +41,530 @@ # from autolens import setup_notebook; setup_notebook() +import matplotlib.pyplot as plt +import numpy as np import autolens as al +import autoarray as aa import autolens.plot as aplt +""" +__Initial Setup__ + +We first build the strong lens system used throughout this tutorial, mirroring the objects introduced in tutorials +2 and 3: a 2D grid of (y,x) arcsecond coordinates, a lens galaxy with an elliptical isothermal (`Isothermal`) mass +profile — the singular isothermal ellipsoid, or SIE, the workhorse mass model of galaxy-scale lensing — and a +source galaxy with a Sersic light profile. +""" +grid = al.Grid2D.uniform(shape_native=(100, 100), pixel_scales=0.05) + +mass_profile = al.mp.Isothermal( + centre=(0.0, 0.0), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0), + einstein_radius=1.6, +) + +lens_galaxy = al.Galaxy(redshift=0.5, mass=mass_profile) + +source_galaxy = al.Galaxy( + redshift=1.0, + bulge=al.lp.SersicCore( + centre=(0.0, 0.1), + ell_comps=(0.1, 0.0), + intensity=0.3, + effective_radius=0.3, + sersic_index=1.0, + ), +) + +""" +We combine these into a `Tracer` with a Planck 2015 cosmology. The redshifts of the two galaxies (0.5 and 1.0) and +the cosmology together fix every distance that appears in the equations below. +""" +cosmology = al.cosmo.Planck15() + +tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy], cosmology=cosmology) + +""" +Here is the lensed image of this system, which by now should look familiar. Every equation in this tutorial is +describing some aspect of how this image forms. +""" +image = tracer.image_2d_from(grid=grid) +aplt.plot_array(array=image, title="Lensed Image of the Source Galaxy") + +""" +We also create a `LensCalc` object from the tracer. As we saw in tutorial 3, this is **PyAutoLens**'s calculator for +derived lensing quantities — everything it computes is derived from the tracer's deflection angles, which is a theme +we will see repeatedly below. +""" +lens_calc = al.LensCalc.from_tracer(tracer=tracer) + +""" +__Cosmological Distances__ + +Gravitational lensing is a geometric effect, so distances are everywhere in its equations. The distances used are +**angular diameter distances**, defined so that an object of physical size l at angular diameter distance D subtends +an angle (in radians): + + theta = l / D + +Three distances appear in every lensing formula: + +- D_l — the angular diameter distance from the observer to the lens (deflector) galaxy. +- D_s — the angular diameter distance from the observer to the source galaxy. +- D_ls — the angular diameter distance from the lens to the source. + +In an expanding Universe angular diameter distances do not add linearly, so D_ls != D_s - D_l. Each is computed by +integrating the cosmological expansion history between the two redshifts, which is why the tracer requires both +galaxy redshifts and a cosmology. + +The `Cosmology` object computes each of these directly (values below are in kiloparsecs): +""" +D_l = cosmology.angular_diameter_distance_to_earth_in_kpc_from(redshift=0.5) +D_s = cosmology.angular_diameter_distance_to_earth_in_kpc_from(redshift=1.0) +D_ls = cosmology.angular_diameter_distance_between_redshifts_in_kpc_from( + redshift_0=0.5, redshift_1=1.0 +) + +print(f"D_l (kpc) = {D_l:.3e}") +print(f"D_s (kpc) = {D_s:.3e}") +print(f"D_ls (kpc) = {D_ls:.3e}") + +""" +The angular diameter distance is also what converts **PyAutoLens**'s internal angular units of arcseconds into +physical distances. An angle of 1.0" at redshift z corresponds to a physical size: + + l = D(z) * (1.0" in radians) + +The `Cosmology` object wraps this up as a `kpc_per_arcsec` conversion factor, which differs between the image-plane +(lens redshift) and source-plane (source redshift) because the two planes are at different distances. +""" +kpc_per_arcsec_lens = cosmology.kpc_per_arcsec_from(redshift=0.5) +kpc_per_arcsec_source = cosmology.kpc_per_arcsec_from(redshift=1.0) + +print(f"kpc per arcsec at the lens (z=0.5) = {kpc_per_arcsec_lens:.4f}") +print(f"kpc per arcsec at the source (z=1.0) = {kpc_per_arcsec_source:.4f}") + +""" +So our lens's Einstein radius of 1.6" corresponds to a physical scale of roughly 1.6 * 6.3 ~ 10 kpc at the lens +redshift — a sensible size for the inner regions of a massive elliptical galaxy. + +__The Lens Equation__ + +The fundamental equation of gravitational lensing is the **lens equation**, which we met in tutorial 2: + + beta = theta - alpha(theta) + +where: + +- theta is the observed (image-plane) angular position of a light ray, in arcseconds. +- alpha(theta) is the (scaled) deflection angle — how much the ray is bent by the lens's gravity at position theta. +- beta is the true (source-plane) position — where the source would appear if there were no lens. + +In plain words: to find where a light ray we observe at theta really came from, subtract the deflection the lens +applied to it. This is exactly the ray-tracing calculation we performed in tutorial 2, and it is worth knowing that +the deflection angle here is the "scaled" deflection: the physical bending angle of the ray multiplied by the +distance ratio D_ls / D_s, which is the convention that makes the lens equation take the simple form above. + +The lens equation is trivial to evaluate one way (given theta, compute beta), but it cannot be inverted +analytically: for a strong lens, *multiple* image-plane positions theta can satisfy the equation for the *same* +source position beta. This is why strong lenses produce multiple images of a single source — and why lens modeling +works "forwards", ray-tracing image-plane grids to the source-plane rather than the other way around. + +In code, the lens equation is one line — the same `grid_2d_via_deflection_grid_from` call from tutorial 2: +""" +deflections = tracer.deflections_yx_2d_from(grid=grid) + +source_plane_grid = grid.grid_2d_via_deflection_grid_from(deflection_grid=deflections) + +aplt.plot_grid(grid=grid, title="Image-Plane Grid (theta)") +aplt.plot_grid(grid=source_plane_grid, title="Source-Plane Grid (beta)") + +""" +__Convergence__ + +The lens galaxy's mass enters lensing via its **surface mass density** Sigma(theta): the galaxy's 3D mass density +integrated along the line of sight, giving a projected 2D mass per unit area (e.g. in solar masses per kpc^2). +Lensing only cares about this projection — two very different 3D distributions with the same projected Sigma +deflect light identically. + +Whether a lens is "strong" is set by comparing Sigma to the **critical surface density**: + + Sigma_cr = (c^2 / (4 pi G)) * (D_s / (D_l * D_ls)) + +This is a purely cosmological quantity — it depends only on the constants c and G and the three distances from the +previous section. It has a beautiful interpretation: it is the surface density a lens needs, given this observer / +lens / source geometry, to be capable of producing multiple images. +""" +sigma_cr_kpc = cosmology.critical_surface_density_between_redshifts_solar_mass_per_kpc2_from( + redshift_0=0.5, redshift_1=1.0 +) +sigma_cr_arcsec = cosmology.critical_surface_density_between_redshifts_from( + redshift_0=0.5, redshift_1=1.0 +) + +print(f"Sigma_cr (solar masses per kpc^2) = {sigma_cr_kpc:.3e}") +print(f"Sigma_cr (solar masses per arcsec^2) = {sigma_cr_arcsec:.3e}") + +""" +The **convergence** kappa is the surface mass density in units of the critical density: + + kappa(theta) = Sigma(theta) / Sigma_cr + +This is the dimensionless quantity **PyAutoLens** has been plotting since tutorial 2 whenever we called +`convergence_2d_from`: + +- kappa >= 1 — the lens is super-critical at that point; multiple imaging is possible. +- kappa < 1 — the lens is sub-critical there. + +Because kappa is dimensionless, lens models can be composed and fitted without knowing the galaxy redshifts at all — +the redshifts and Sigma_cr are only needed at the end, to convert the inferred kappa back into physical masses. +""" +convergence = tracer.convergence_2d_from(grid=grid) + +aplt.plot_array(array=convergence, title="Convergence (kappa)", use_log10=True) + +""" +__Deflection Angles__ + +The convergence field determines the deflection angles everywhere, via a 2D integral over the whole image-plane: + + alpha(theta) = (1 / pi) * integral d^2 theta' kappa(theta') * (theta - theta') / |theta - theta'|^2 + +In plain words: every patch of mass in the lens plane pulls on every light ray. The deflection at position theta is +the sum (integral) of the pulls from all mass elements kappa(theta'), each pointing from the mass element towards +the ray and falling off as 1/distance — the 2D (projected) analogue of Newtonian gravity's inverse-square law. + +Two things follow from this integral being over *all* theta': + +- The deflection at a point depends on the mass distribution *everywhere*, not just the mass at that point. Even + mass well outside the region where images form contributes deflections (this is why external shear from + neighbouring galaxies matters, as we saw in tutorial 3). + +- For simple analytic profiles (isothermal, power-law, Sersic-like) this integral has closed-form solutions, which + is exactly what a **PyAutoLens** mass profile is: an analytic kappa(theta) paired with its analytic alpha(theta). + +The `deflections_yx_2d_from` method we have used since tutorial 2 evaluates this integral's closed-form solution. +The deflections form a 2D vector field, so we plot its y and x components separately: +""" +deflections = tracer.deflections_yx_2d_from(grid=grid) + +deflections_y = aa.Array2D(values=deflections.slim[:, 0], mask=grid.mask) +aplt.plot_array(array=deflections_y, title="Deflection Angles (y component)") + +deflections_x = aa.Array2D(values=deflections.slim[:, 1], mask=grid.mask) +aplt.plot_array(array=deflections_x, title="Deflection Angles (x component)") + +""" +__The Lensing Potential__ + +The deflection field is not arbitrary — it is the gradient of a scalar field, the **lensing potential** psi(theta): + + alpha(theta) = grad psi(theta) + +The potential is itself an integral over the convergence: + + psi(theta) = (1 / pi) * integral d^2 theta' kappa(theta') * ln|theta - theta'| + +and taking the divergence of the gradient (the Laplacian) recovers the convergence with a factor of a half: + + kappa(theta) = (1/2) * laplacian psi(theta) + +This is the 2D Poisson equation of lensing — the projected analogue of Newtonian gravity's del^2 Phi = 4 pi G rho. +The potential is the single most economical description of a lens: one scalar field from which the deflections +(first derivatives), and the convergence, shear and magnification (second derivatives) all follow. + +The `potential_2d_from` method returns psi, which we have plotted before without defining it: +""" +potential = tracer.potential_2d_from(grid=grid) + +aplt.plot_array(array=potential, title="Lensing Potential (psi)") + +""" +We can verify alpha = grad psi numerically. Mass profiles have a `deflections_2d_via_potential_2d_from` method which +computes the deflections by numerically differentiating the potential, rather than using the profile's closed-form +deflection formula. Across the grid the two agree closely — we print the median absolute difference, since the +finite-difference derivative is inaccurate right at the isothermal profile's central cusp, where the potential is +not smooth (the closed-form deflections have no such problem): +""" +deflections_analytic = mass_profile.deflections_yx_2d_from(grid=grid) +deflections_via_potential = mass_profile.deflections_2d_via_potential_2d_from(grid=grid) + +difference = np.median( + np.abs(np.asarray(deflections_analytic) - np.asarray(deflections_via_potential)) +) +print(f"Median |alpha_analytic - grad psi| = {difference:.3e} arcsec") + +""" +__Shear and Magnification__ + +How a small image is distorted by lensing is governed by how the deflection angles *change* across it — the second +derivatives of the potential. These form the 2x2 **Hessian** matrix, which `LensCalc` computes by finite +differences of the deflection field (as we saw in the workspace guides, this works for any mass distribution): + + H_yy = d(alpha_y) / d(theta_y) H_xy = d(alpha_x) / d(theta_y) + H_yx = d(alpha_y) / d(theta_x) H_xx = d(alpha_x) / d(theta_x) +""" +hessian_yy, hessian_xy, hessian_yx, hessian_xx = lens_calc.hessian_from(grid=grid) + +print(f"Hessian components at pixel 0: H_yy = {hessian_yy[0]:.4f}, H_xx = {hessian_xx[0]:.4f}") + +""" +Differentiating the lens equation beta = theta - alpha(theta) gives the **Jacobian matrix** A, which maps a small +displacement in the source-plane to the corresponding displacement in the image-plane: + + A = d(beta) / d(theta) = I - H = | 1 - H_yy -H_xy | + | -H_yx 1 - H_xx | + +The Jacobian decomposes into two physically distinct distortions: + +- The **convergence** kappa = (1/2) * (H_yy + H_xx) — the isotropic part, which magnifies an image uniformly + without changing its shape. (Note this is the same kappa as before: the trace of the Hessian recovers the + Poisson equation kappa = (1/2) laplacian psi.) + +- The **shear** gamma — the anisotropic part, which stretches an image along one axis and squeezes it along the + perpendicular axis. It has two components and a magnitude: + + gamma_1 = (1/2) * (H_xx - H_yy) + gamma_2 = H_xy + |gamma| = sqrt(gamma_1^2 + gamma_2^2) + +The shear is why lensed images near the lens are stretched into tangential arcs — the tidal field of the lens +elongates them around it. +""" +shear = lens_calc.shear_yx_2d_via_hessian_from(grid=grid) + +print(f"Shear magnitude at pixel 0: |gamma| = {shear.magnitudes[0]:.4f}") + +""" +The **magnification** mu is the inverse of the Jacobian's determinant: + + mu = 1 / det(A) = 1 / [ (1 - kappa)^2 - |gamma|^2 ] + +Lensing conserves surface brightness, so a lensed image that covers more sky than the unlensed source appears +brighter in total by exactly the factor |mu|: + +- |mu| > 1 — the image is magnified (larger and brighter than the unlensed source). +- |mu| < 1 — the image is demagnified. +- mu < 0 — the image has negative parity: it is a mirror image of the source. + +The determinant factorises into two eigenvalues, giving the **tangential** and **radial** magnifications: + + lambda_t = 1 - kappa - |gamma| (tangential eigenvalue) + lambda_r = 1 - kappa + |gamma| (radial eigenvalue) + + mu = 1 / (lambda_t * lambda_r) + +An image is stretched by 1/lambda_t in the tangential direction (around the lens) and 1/lambda_r in the radial +direction (towards/away from the lens). Giant tangential arcs form where lambda_t is close to zero. +""" +magnification = lens_calc.magnification_2d_from(grid=grid) + +aplt.plot_array(array=magnification, title="Magnification (mu)") + +tangential_eigen_values = lens_calc.tangential_eigen_value_from(grid=grid) +radial_eigen_values = lens_calc.radial_eigen_value_from(grid=grid) + +print(f"Tangential eigenvalue at pixel 0: {tangential_eigen_values[0]:.4f}") +print(f"Radial eigenvalue at pixel 0: {radial_eigen_values[0]:.4f}") + +""" +__Critical Curves and Caustics__ + +Where either eigenvalue passes through zero, det(A) = 0 and the magnification formally diverges to infinity. The +closed curves in the image-plane where this happens are the **critical curves** — the white and yellow lines that +have appeared on plots since tutorial 2, and which we explored visually in tutorial 3: + +- The **tangential critical curve** (lambda_t = 0) — roughly traces the Einstein ring; sources near its source-plane + counterpart form giant tangential arcs. +- The **radial critical curve** (lambda_r = 0) — an inner curve associated with radially stretched central images. + +Ray-tracing each critical curve through the lens equation maps it to the source-plane, where it is called a +**caustic**: + + caustic = critical_curve - alpha(critical_curve) + +Caustics divide the source-plane into regions of different image multiplicity: each time a source crosses a +caustic, the number of images it produces changes by two. For our SIE lens, a source inside the tangential caustic +produces four images (plus a faint central image); outside it, two. + +`LensCalc` computes both by locating the zero-contours of the eigenvalue fields on the grid: +""" +tangential_critical_curve_list = lens_calc.tangential_critical_curve_list_from(grid=grid) +radial_critical_curve_list = lens_calc.radial_critical_curve_list_from(grid=grid) + +tangential_caustic_list = lens_calc.tangential_caustic_list_from(grid=grid) +radial_caustic_list = lens_calc.radial_caustic_list_from(grid=grid) + +print(f"Number of tangential critical curves: {len(tangential_critical_curve_list)}") +print(f"Number of radial critical curves: {len(radial_critical_curve_list)}") + +""" +Lets plot the critical curves (image-plane) and caustics (source-plane) of our SIE side by side. Note how the +elliptical lens produces a tangential caustic with four cusps — the origin of the four-image "quad" configurations +seen in many real lenses. +""" +plt.figure(figsize=(10, 5)) + +plt.subplot(1, 2, 1) +for curve in tangential_critical_curve_list: + curve = np.asarray(curve) + plt.plot(curve[:, 1], curve[:, 0], color="black", label="Tangential") +for curve in radial_critical_curve_list: + curve = np.asarray(curve) + plt.plot(curve[:, 1], curve[:, 0], color="orange", label="Radial") +plt.gca().set_aspect("equal") +plt.title("Critical Curves (Image-Plane)") +plt.xlabel("x (arcsec)") +plt.ylabel("y (arcsec)") +plt.legend() + +plt.subplot(1, 2, 2) +for curve in tangential_caustic_list: + curve = np.asarray(curve) + plt.plot(curve[:, 1], curve[:, 0], color="black", label="Tangential") +for curve in radial_caustic_list: + curve = np.asarray(curve) + plt.plot(curve[:, 1], curve[:, 0], color="orange", label="Radial") +plt.gca().set_aspect("equal") +plt.title("Caustics (Source-Plane)") +plt.xlabel("x (arcsec)") +plt.ylabel("y (arcsec)") +plt.legend() + +plt.show() +plt.close() + +""" +__Einstein Radius__ + +The **Einstein radius** theta_E is the characteristic angular scale of a strong lens. For a circular lens with the +source perfectly aligned behind it, it is the radius of the Einstein ring the source forms. More generally (and +this is the definition **PyAutoLens** uses), it is the radius of the circle enclosing the same area as the +tangential critical curve: + + theta_E = sqrt(A_crit / pi) + +sometimes called the "effective" Einstein radius, since an elliptical lens's critical curve is not a circle. + +Two closed-form results are worth memorising. For a **point mass** M: + + theta_E = sqrt( (4 G M / c^2) * (D_ls / (D_l * D_s)) ) + +and for a **singular isothermal sphere** (SIS) with velocity dispersion sigma_v: + + theta_E = 4 pi * (sigma_v / c)^2 * (D_ls / D_s) + +The Einstein radius is also the radius within which the *mean* convergence equals exactly one — so measuring +theta_E directly measures the projected mass enclosed within it: + + M(< theta_E) = pi * theta_E^2 * Sigma_cr + +This is why the Einstein radius is celebrated as one of the most robust mass measurements in all of astrophysics: +the data pin down theta_E via the image separations almost independently of the assumed mass profile, so the +enclosed Einstein mass is trusted even when the profile's slope is not. (The main caveat, the mass-sheet +degeneracy, is discussed in the lens modeling chapters.) + +`LensCalc` computes the Einstein radius from the area of the tangential critical curve, and the enclosed +"Einstein mass" in angular units (pi * theta_E^2), which Sigma_cr converts to solar masses: +""" +einstein_radius = lens_calc.einstein_radius_from(grid=grid) + +print(f"Einstein radius (arcsec) = {einstein_radius:.4f}") +print(f"Einstein radius (kpc) = {einstein_radius * kpc_per_arcsec_lens:.4f}") + +einstein_mass_angular = lens_calc.einstein_mass_angular_from(grid=grid) +einstein_mass_solar = einstein_mass_angular * sigma_cr_arcsec + +print(f"Einstein mass (angular, arcsec^2) = {einstein_mass_angular:.4f}") +print(f"Einstein mass (solar masses) = {einstein_mass_solar:.4e}") + +""" +Reassuringly, the Einstein radius computed from the critical curve area (~1.6") matches the `einstein_radius=1.6` +parameter we gave the `Isothermal` profile — for isothermal profiles the model parameter *is* the effective +Einstein radius, which is exactly why **PyAutoLens** parameterizes its mass profiles this way: the non-linear +search then varies the quantity the data constrain most directly. + +As a second check, an `IsothermalSph` (the SIS) has a perfectly circular critical curve, so its recovered Einstein +radius equals its input parameter even more precisely: +""" +sis = al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=1.6) + +sis_einstein_radius = al.LensCalc.from_mass_obj(mass_obj=sis).einstein_radius_from( + grid=grid +) + +print(f"SIS input Einstein radius = 1.6, recovered = {sis_einstein_radius:.4f}") + +""" +__Time Delays__ + +The final piece of the formalism is time. Light rays forming different images of the same source travel different +paths and through different depths of the lens's gravitational potential, so they arrive at different times. Both +effects are captured by the **Fermat potential** (or time-delay surface): + + phi(theta) = (1/2) * |theta - beta|^2 - psi(theta) + +The first term is the **geometric delay** — the extra path length of a bent ray. The second is the **gravitational +(Shapiro) delay** — light slowing as it climbs through the lens's potential. Fermat's principle states that images +form at the stationary points (minima, maxima and saddle points) of this surface, which is a wonderfully compact +restatement of the lens equation: grad phi = 0 is exactly beta = theta - alpha(theta). + +The observable **time delay** between two images A and B is the difference in their Fermat potentials, scaled by +the cosmological distances: + + Delta t_AB = (1 + z_l) / c * (D_l * D_s / D_ls) * [ phi(theta_A) - phi(theta_B) ] + +The distance combination (1 + z_l) * D_l * D_s / D_ls is called the **time-delay distance**, and because it is +inversely proportional to the Hubble constant, measuring time delays between the images of a variable source (a +quasar or supernova) turns a strong lens into a cosmological probe. + +We only touch on this here — time delays belong to the modeling of lensed point sources, introduced in tutorial 4 +and covered in depth by the `autolens_workspace` point-source material. For now, we simply plot the Fermat +potential of our lens system: +""" +fermat_potential = lens_calc.fermat_potential_from(grid=grid) + +aplt.plot_array(array=fermat_potential, title="Fermat Potential (phi)") + """ __Wrap Up__ + +This was the mathematics lecture of **HowToLens** — every formal definition deferred by the other tutorials, in one +place. Lets summarise the chain of quantities, because it has a beautiful logical structure where everything flows +from the mass distribution and a handful of distances: + +- **Distances**: the angular diameter distances D_l, D_s and D_ls set the geometry, convert arcseconds to + kiloparsecs and define the critical surface density Sigma_cr. + +- **Convergence**: kappa = Sigma / Sigma_cr is the dimensionless projected mass; kappa >= 1 marks super-critical + regions capable of multiple imaging. + +- **Deflections and potential**: kappa determines the deflection field alpha (a 2D gravity integral) and the + lensing potential psi, tied together by alpha = grad psi and kappa = (1/2) laplacian psi. + +- **The lens equation**: beta = theta - alpha(theta) maps the image-plane to the source-plane; its + non-invertibility is why multiple images form. + +- **Distortion**: the Jacobian A = I - H decomposes into convergence (isotropic) and shear gamma (anisotropic); + magnification is mu = 1 / det(A) = 1 / (lambda_t * lambda_r). + +- **Critical curves and caustics**: where det(A) = 0, magnification diverges; caustics are their source-plane + images and set the image multiplicity. + +- **Einstein radius**: the area-equivalent radius of the tangential critical curve, whose enclosed mass + M(< theta_E) = pi * theta_E^2 * Sigma_cr is the most robust measurement strong lensing delivers. + +- **Time delays**: the Fermat potential phi = (1/2)|theta - beta|^2 - psi locates images at its stationary points + and its differences, scaled by the time-delay distance, give observable delays. + +You do not need to memorise any of this to continue — **PyAutoLens** computes every one of these quantities via the +methods used above — but you now know what each method is computing and can return to this tutorial whenever a +symbol needs unpacking. + +In the next tutorial, we turn from theory to observation: how telescope optics, exposure times and noise turn the +pristine images of a tracer into the CCD imaging data we actually observe, and how to simulate such data ourselves. + +Finally, a signpost for much later: chapter 3's tutorial 5 on the Bayesian formalism is this tutorial's twin — the +equivalent equations lecture for pixelized source reconstruction, deriving the linear inversion and Bayesian +evidence that underpin chapter 3 just as this tutorial derived the lensing quantities underpinning chapter 1. """ From 4d2984fdf1ad3e6214a9665031df483c26f3c360 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:38:04 +0000 Subject: [PATCH 08/22] docs: rehome search chaining, prior passing and SLaM as chapter 2 tutorials 9-11 The moved tutorials are retitled and reframed as the closing arc of the lens-modeling chapter, motivated by tutorial 8's run-time discussion. Output paths and search names move to chapter_2; references to the deleted chaining tutorials reroute to the workspace's current chaining and SLaM guides; stale chapter cross-references in tutorials 3-5 now match the new chapter numbering. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_10_prior_passing.py | 39 +++--- .../tutorial_11_slam.py | 111 +++++++++++------- .../tutorial_3_realism_and_complexity.py | 4 +- .../tutorial_4_dealing_with_failure.py | 8 +- .../tutorial_5_linear_profiles.py | 4 +- .../tutorial_9_search_chaining.py | 40 ++++--- 6 files changed, 117 insertions(+), 89 deletions(-) diff --git a/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py b/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py index 0fa346d..d18ad42 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py +++ b/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py @@ -1,6 +1,6 @@ """ -Tutorial 2: Prior Passing -========================= +Tutorial 10: Prior Passing +========================== In the previous tutorial, we used non-linear search chaining to break the model-fitting procedure down into two non-linear searches. This used an initial search to fit a simple lens model, whose results were used to tune and @@ -12,13 +12,13 @@ __Contents__ -- **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where. +- **Initial Setup:** Load the same strong lensing data as the previous tutorial. - **Model:** Compose the lens model fitted to the data. - **Search:** Configure the non-linear search used to fit the model. -- **Prior Passing:** We are now going to use the prior passing API to pass these results, in a way which does not. +- **Prior Passing:** Use the prior passing API to pass the results of search 1 without writing out values manually. - **Result:** Overview of the results of the model-fit. - **Wrap Up:** Summary of the script and next steps. -- **Detailed Explanation Of Prior Passing:** To end, I provide a detailed overview of how prior passing works and illustrate tools that can be. +- **Detailed Explanation Of Prior Passing:** A detailed overview of how prior passing works and tools to customize it. - **EXAMPLE:** Lets go through an example using a real parameter. """ @@ -119,8 +119,8 @@ run it. """ search_1 = af.Nautilus( - path_prefix=Path("howtolens", "chapter_3"), - name="tutorial_1_search_chaining_1", + path_prefix=Path("howtolens", "chapter_2"), + name="tutorial_9_search_chaining_1", unique_tag=dataset_name, n_live=100, iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations @@ -210,8 +210,8 @@ that were passed. """ search_2 = af.Nautilus( - path_prefix=Path("howtolens", "chapter_3"), - name="tutorial_2_search_chaining_2", + path_prefix=Path("howtolens", "chapter_2"), + name="tutorial_10_prior_passing_2", unique_tag=dataset_name, n_live=100, iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations @@ -220,7 +220,7 @@ analysis_2 = al.AnalysisImaging(dataset=dataset) print( - "The non-linear search has begun running - checkout the workspace/output/5_chaining_searches" + "The non-linear search has begun running - checkout the output/howtolens/chapter_2" " folder for live output of the results, images and lens model." " This Jupyter notebook cell with progress once search has completed - this could take some time!" ) @@ -244,18 +244,19 @@ """ __Wrap Up__ -We will expand on the prior passing API in the following tutorials. The main thing to note is that we can pass -entire profiles or galaxies using prior passing, if their model does not change (which for the bulge, mass and -source_bulge above, was not true). The API to pass a whole profile or galaxy is as follows: - +This tutorial has covered the core of the prior passing API; the chaining examples in the `autolens_workspace` +(e.g. `autolens_workspace/scripts/guides/modeling/chaining.py`) expand on it further. The main thing to note is that +we can pass entire profiles or galaxies using prior passing, if their model does not change (which for the bulge, +mass and source_bulge above, was not true). The API to pass a whole profile or galaxy is as follows: + bulge = result_1.model.galaxies.lens.bulge lens = result_1.model.galaxies.lens source = result_1.model.galaxies.source - + We can also pass priors using an `instance` instead of a `model`. When an `instance` is used, the maximum likelihood -parameter values are passed as fixed values that are therefore not fitted for nby the non-linear search (reducing its -dimensionality). We will use this in the next tutorial to fit the lens light, fix it to the best-fit model in a second -search, and then go on to fit it as a model in the final search. +parameter values are passed as fixed values that are therefore not fitted for by the non-linear search (reducing its +dimensionality). Chained fits often use this to fix the lens light to the best-fit model of an early search, reducing +the dimensionality of the searches that follow — the workspace's chaining examples show this in action. Lets now think about how priors are passed. Checkout the `model.info` file of the second search of this tutorial. The parameters do not use the default priors we saw in search 1 (which are typically broad UniformPriors). Instead, @@ -265,7 +266,7 @@ - The sigma values are specified in the `width_modifier` field of the profile's entry in the `priors.yaml' config file (we will discuss why this is used in a moment). -Like the manual `GaussianPrior`'s that were used in tutorial 1, the prior passing API sets up the prior on each +Like the manual `GaussianPrior`'s that were used in the previous tutorial, the prior passing API sets up the prior on each parameter with a `GaussianPrior` centred on the high likelihood regions of parameter space! __Detailed Explanation Of Prior Passing__ diff --git a/scripts/chapter_2_lens_modeling/tutorial_11_slam.py b/scripts/chapter_2_lens_modeling/tutorial_11_slam.py index 3e627a5..c8c3a1f 100755 --- a/scripts/chapter_2_lens_modeling/tutorial_11_slam.py +++ b/scripts/chapter_2_lens_modeling/tutorial_11_slam.py @@ -1,44 +1,67 @@ -""" -Tutorial 6: SLaM -================ - -You are now familiar with pipelines, in particular how we use them to break-down the lens modeling procedure -to provide more efficient and reliable model-fits. In the previous tutorials, you learnt how to write your own -pipelines, which can fit whatever lens model is of particular interest to your scientific study. - -However, for most lens models there are standardized approaches one can take to fitting them. For example, as we saw in -tutorial 3 of this chapter, an effective approach is to fit a model for the lens's light followed by a model for its -mass and the source. It would be wasteful for all **PyAutoLens** users to have to write their own pipelines to -perform the same tasks. - -For this reason, the `autolens_workspace` comes with a number of standardized pipelines, which fit common lens models -in ways we have tested are efficient and robust. These pipelines can be found the `chaining/pipelines` packages and -can be easily adapted to fit lens models with a range of different parameterizations and assumptions. - -__SLaM (Source, Light and Mass)__ - -A second set of template pipelines, called the **SLaM** (Source, Light and Mass) pipelines can be found in the folder -`autolens_workspace/slam`. These are similar in design to the pipelines, but are composed of a specific sequence of -pipelines: - - - `Source`: A pipeline that focuses on producing a robust model for the source's light, using simpler models for the - lens's light and mass. - - - `Light`: A pipeline that fits a complex lens light model (e.g. one with many components), using the initialized - source model to cleanly deblend the lens and source light. - - - `Mass`: A pipeline that fits a complex lens mass model, benefitting from the good models for the lens's light and - source. - -For fitting very complex lens models, for example ones which decompose its mass into its stellar and dark components, -the **SLaM** pipelines have been carefully crafted to do this in a reliable and automated way that is still efficient. -The **SLaM** pipelines also make fitting many different models to a single dataset efficient, as they reuse the results -of earlier searches (e.g. in the Source pipeline) to fit different models in the `Light` and `Mass` pipelines for the -lens's light and mass. - -__Wrap Up__ - -Whether you should use individual searches, pipelines, The SLaM pipelines or write your own model-fitting script -depends on the scope of your scientific analysis. I would advise you begin by trying to adapting the scripts in the -`autolens_workspace`to fit your data, and also try using the SLaM pipelines once you are a confident **PyAutoLens** user. -""" +""" +Tutorial 11: SLaM +================= + +In the previous two tutorials, we learnt how search chaining breaks a lens model-fit into a sequence of simpler +non-linear searches, and how prior passing carries the results of each search into the next. Together, they give us +the flexibility to juggle the dimensionality, priors and settings of each search — the three drivers of run-time we +met in tutorial 8 — whilst still fitting a complex and realistic lens model at the end. + +You could now write your own chained sequences of searches, tailored to whatever lens model is of particular interest +to your scientific study. However, for most lens models there are standardized approaches one can take to fitting +them. For example, an effective approach is to first fit a model for the lens's light, then a model for its mass and +the source. It would be wasteful for all **PyAutoLens** users to have to write their own chained pipelines to perform +the same tasks. + +For this reason, the `autolens_workspace` comes with standardized chained pipelines, which fit common lens models in +ways we have tested are efficient and robust. This closing tutorial does not run any code; it is a pointer to where +that material lives, so you know where to go once you want to scale your lens modeling up. + +__Contents__ + +- **Search Chaining In The Workspace:** Where the workspace documents the chaining API introduced in tutorials 9 and 10. +- **SLaM (Source, Light and Mass):** The standardized pipelines that chain searches for you. +- **Wrap Up:** Choosing between single searches, your own chained fits and the SLaM pipelines. + +__Search Chaining In The Workspace__ + +The chaining and prior passing API we introduced in tutorials 9 and 10 is documented in full in the workspace guide +`autolens_workspace/scripts/guides/modeling/chaining.py`. It covers the concise model composition API used in chained +fits, prior passing and the tools for customizing it, and how chaining is used in practice for automated lens +modeling. + +__SLaM (Source, Light and Mass)__ + +The workspace's standardized pipelines are called the **SLaM** (Source, Light and Mass) pipelines. They are composed +of a specific sequence of chained searches: + + - `Source`: A pipeline that focuses on producing a robust model for the source's light, using simpler models for the + lens's light and mass. + + - `Light`: A pipeline that fits a complex lens light model (e.g. one with many components), using the initialized + source model to cleanly deblend the lens and source light. + + - `Mass`: A pipeline that fits a complex lens mass model, benefitting from the good models for the lens's light and + source. + +For fitting very complex lens models, for example ones which decompose the mass into its stellar and dark components, +the **SLaM** pipelines have been carefully crafted to do this in a reliable and automated way that is still efficient. +They also make fitting many different models to a single dataset efficient, as they reuse the results of earlier +searches (e.g. in the Source pipeline) to fit different models in the `Light` and `Mass` pipelines for the lens's +light and mass. + +The canonical introduction is `autolens_workspace/scripts/guides/modeling/slam_start_here.py`, which walks through the +pipeline structure end-to-end. Runnable SLaM examples then live as `slam.py` scripts inside the feature folders of +each topic, for example `autolens_workspace/scripts/imaging/features/pixelization/slam.py` and +`autolens_workspace/scripts/imaging/features/multi_gaussian_expansion/slam.py`. + +__Wrap Up__ + +Whether you should use individual searches, your own chained fits, the SLaM pipelines or write your own model-fitting +script depends on the scope of your scientific analysis. I would advise you begin by trying to adapt the scripts in +the `autolens_workspace` to fit your data, and also try using the SLaM pipelines once you are a confident +**PyAutoLens** user. + +This tutorial concludes the lens modeling chapter. In the next chapter, we introduce pixelizations, which reconstruct +the source galaxy on a pixel-grid rather than with light profiles. +""" diff --git a/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py b/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py index acf4ea7..992e59f 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py +++ b/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py @@ -256,8 +256,8 @@ and infers a local maxima, especially if we don't set it up with enough live points! At its core, lens modeling is all about learning how to get a non-linear search to find the global maxima region of -parameter space, even when the lens model is complex. This will be the main theme throughout the rest of this chapter -and is the main subject of chapter 3. +parameter space, even when the lens model is complex. This will be the main theme throughout the rest of this chapter, +culminating in the search chaining technique introduced in tutorials 9 and 10. In the next exercise, we'll learn how to deal with failure and begin thinking about how we can ensure our non-linear search finds the global-maximum log likelihood solution. First, think about the following: diff --git a/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py b/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py index 4c4ba7d..a4a60fe 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py +++ b/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py @@ -467,8 +467,8 @@ weeks, or even months! In conclusion, we can now fit strong lenses effectively. When the process fails, we know how to make it work. -In chapter 3 of **HowToLens**, we will introduce a technique called 'non-linear search chaining', which performs a model -fit by chaining together multiple searches back-to-back . This allows us to combine the 3 different approaches +In tutorials 9 and 10 of this chapter, we will introduce a technique called 'non-linear search chaining', which performs +a model fit by chaining together multiple searches back-to-back. This allows us to combine the 3 different approaches discussed and exploit the advantages of each, whilst not being hindered by their disadvantages. With search chaining, we can: @@ -485,6 +485,6 @@ __Wrap Up__ -To wrap up chapter 2, we have a few more tutorials, where we will discuss masking in more detail, the `Result` object -and how to make **PyAutoLens** run faster. +Before we get to search chaining, we have a few more tutorials, where we will discuss masking in more detail, the +`Result` object and how to make **PyAutoLens** run faster. """ diff --git a/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py b/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py index a62ccef..a98850d 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py +++ b/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py @@ -536,7 +536,7 @@ lens modeling problems. If you have a desire to fit sources with even more complex morphologies we recommend you look at how to reconstruct -sources using pixelizations in the `modeling/features` section or chapter 4 of **HowToLens**. +sources using pixelizations in the `modeling/features` section or chapter 3 of **HowToLens**. __Wrap Up__ @@ -549,7 +549,7 @@ galaxies which may have multiple components with multiple centres (e.g. many star forming knots) which such a basis cannot capture. -In chapter 4 of **HowToLens** we introduce non-parametric pixelizations, which reconstruct the data in way +In chapter 3 of **HowToLens** we introduce non-parametric pixelizations, which reconstruct the data in way that does not make assumptions like a centre and can thus reconstruct even more complex, asymmetric and irregular galaxy morphologies. """ diff --git a/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py b/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py index a85bd93..e7b5d3f 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py +++ b/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py @@ -1,15 +1,19 @@ """ -Tutorial 1: Search Chaining +Tutorial 9: Search Chaining =========================== -In chapter 2, we learnt how to perform lens modeling using a non-linear search. In all of the tutorials, we fitted the -data using just one non-linear search. In this chapter, we introduce a technique called 'non-linear search chaining', -fits a lens model using a sequence of non-linear searches. The initial searches fit simpler lens models whose parameter -spaces can be more accurately and efficiently sampled. The results of this search are then passed to later searches -which fit lens models of gradually increasing complexity. +Throughout this chapter, we have fitted the data using just one non-linear search. The previous tutorial discussed +the run-time cost of doing this: with a single search, the dimensionality of the model, the priors on its parameters +and the search settings must all be juggled at once, leaving us little flexibility to trade them off against one +another. -Lets think back to tutorial 4 of chapter 2. We learnt there were three approaches one could take fitting a lens model -accurately if we found that a model fit failed. These were: +In this closing part of the chapter, we introduce a technique called 'non-linear search chaining', which fits a lens +model using a sequence of non-linear searches. The initial searches fit simpler lens models whose parameter spaces can +be more accurately and efficiently sampled. The results of this search are then passed to later searches which fit +lens models of gradually increasing complexity. + +Lets think back to tutorial 4 of this chapter. We learnt there were three approaches one could take fitting a lens +model accurately if we found that a model fit failed. These were: 1) Tuning our priors to the strong lens we're fitting. 2) Making our lens model less complex. @@ -24,7 +28,7 @@ we'll run 2 searches, and chain the lens model inferred in the first search to the priors of the second search`s lens model. -Our first search will make the same light-traces-mass assumption we made in the previous tutorial. We saw that this +Our first search will make the same light-traces-mass assumption we made in tutorial 4. We saw that this gives a reasonable lens model. However, we'll make a couple of extra simplifying assumptions, to really try and bring our lens model complexity down and get the non-linear search running fast. @@ -40,10 +44,10 @@ __Contents__ -- **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where. +- **Initial Setup:** Load the same strong lensing data fitted throughout this chapter. - **Model:** Compose the lens model fitted to the data. - **Result:** Overview of the results of the model-fit. -- **Prior Passing:** Now all we need to do is look at the results of search 1 and pass the results as priors for search. +- **Prior Passing:** Use the results of search 1 to set up the priors of search 2. - **Run Time:** Profiling the expected run time of the model-fit. - **Model Fit:** Perform the model-fit using the search and analysis. - **Wrap Up:** Summary of the script and next steps. @@ -63,7 +67,7 @@ """ __Initial Setup__ -we'll use the same strong lensing data as the previous tutorial, where: +we'll use the same strong lensing data as tutorials 3, 4 and 5 of this chapter, where: - The lens galaxy's light is an `Sersic`. - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. @@ -167,8 +171,8 @@ Now lets create the search and analysis. """ search_1 = af.Nautilus( - path_prefix=Path("howtolens", "chapter_3"), - name="tutorial_1_search_chaining_1", + path_prefix=Path("howtolens", "chapter_2"), + name="tutorial_9_search_chaining_1", unique_tag=dataset_name, n_live=100, iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations @@ -181,7 +185,7 @@ 11 parameters. """ print( - "The non-linear search has begun running - checkout the workspace/output/5_chaining_searches" + "The non-linear search has begun running - checkout the output/howtolens/chapter_2" " folder for live output of the results, images and lens model." " This Jupyter notebook cell with progress once search has completed - this could take some time!" ) @@ -311,8 +315,8 @@ faster than we are used to! """ search_2 = af.Nautilus( - path_prefix=Path("howtolens", "chapter_3"), - name="tutorial_1_search_chaining_2", + path_prefix=Path("howtolens", "chapter_2"), + name="tutorial_9_search_chaining_2", unique_tag=dataset_name, n_live=150, iterations_per_quick_update=25000, # Outpuers Notebook visualization of max likelihood model every N iterations @@ -334,7 +338,7 @@ Run the search. """ print( - "The non-linear search has begun running - checkout the workspace/output/5_chaining_searches" + "The non-linear search has begun running - checkout the output/howtolens/chapter_2" " folder for live output of the results, images and lens model." " This Jupyter notebook cell with progress once search has completed - this could take some time!" ) From 596ea63ea344c0f0042f9496e3c57239d1565940 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:38:38 +0000 Subject: [PATCH 09/22] =?UTF-8?q?docs:=20write=20chapter=204=20tutorial=20?= =?UTF-8?q?2=20=E2=80=94=20multi-galaxy=20lenses?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The co-dominant deflector regime: mergers vs line-of-sight alignments, modeling the x2 system with MGE light + isothermal masses, runtime- verified parameter accounting, the fixed-mass-centre trick and the inter-galaxy mass degeneracy, foreshadowing of the shared-halo framing at group scale, and a closing three-lens example backed by a new lens_x3 simulator. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_2_multi_galaxy.py | 488 ++++++++++++++++++ scripts/simulator/lens_x3.py | 219 ++++++++ 2 files changed, 707 insertions(+) create mode 100644 scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py create mode 100644 scripts/simulator/lens_x3.py diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py b/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py new file mode 100644 index 0000000..05d187a --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py @@ -0,0 +1,488 @@ +""" +Tutorial 2: Multi-Galaxy Lenses +=============================== + +In the previous tutorial, we learned how to deal with extra galaxies near a strong lens — nuisance objects whose +light contaminates the data but which play no meaningful role in the lensing itself. We removed their emission +from the analysis, or gave them a heavily restricted model, and the single dominant lens galaxy remained the +star of the show. + +In this tutorial, we meet systems where that picture breaks down entirely: **multi-galaxy lenses**, where two +(or more) galaxies of comparable mass both contribute significantly to the lensing of a single background source. +Neither galaxy is a minor perturber we can mask away or simplify — they are **co-dominant deflectors**, and every +one of them needs its own free light and mass model. + +How do such systems arise physically? There are two main channels: + +- **Merging galaxies**: two galaxies at the same redshift caught in the act of merging, or orbiting one another + in close proximity. Their projected separation is small compared to the Einstein radius of their combined mass, + so the source's light rays feel both galaxies' gravity at once. Because both deflectors are at one redshift, + ray tracing is single-plane: their deflection angles simply add. + +- **Chance line-of-sight alignments**: two physically unrelated galaxies at *different* redshifts that happen to + lie along the same line of sight. Light from the source is deflected first by the more distant galaxy, and the + already-deflected rays are deflected again by the nearer one. This is compound, multi-plane ray tracing — the + `Tracer` handles it natively by simply assigning each galaxy its redshift, and we will defer its details to + later in this chapter, where multi-plane lensing becomes the default at cluster scale. + +In this tutorial, both lens galaxies are at the same redshift, so we stay in the simpler single-plane regime and +focus on the modeling challenge that defines multi-galaxy lensing: the growth of the model's parameter space. + +__Contents__ + +- **Initial Setup:** Load the double lens galaxy dataset, simulating it first if it is not on disk. +- **Mask:** Define a mask which encloses the combined Einstein ring of both lens galaxies. +- **Over Sampling:** Centre the adaptive over sampling grid on every deflector, not just one. +- **Model:** Compose a lens model with a free light and mass model per deflector, and count its parameters. +- **Fixing the Mass Centres:** Fix each galaxy's mass centre to its observed light centre, and why this is standard. +- **Model Fit:** Fit the two-deflector model to the data with a non-linear search. +- **Result:** Inspect the combined critical curve and the fit to the data. +- **Mass Degeneracies:** The total mass is well constrained, but its split between the galaxies is not. +- **No Shared Halo:** What we are deliberately not yet assuming, and why that changes at group scale. +- **Three Lens Galaxies:** A triple-deflector system, and how the parameter count keeps growing. +- **Wrap Up:** Summary and the road to scaling relations. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +from pathlib import Path +import autofit as af +import autolens as al +import autolens.plot as aplt + +""" +__Initial Setup__ + +We begin with `Imaging` of a strong lens where **two** lens galaxies, separated by 2.0", both deflect the light +of a single background source: + + - The two lens galaxies' light are `Sersic` profiles, centred at (0.0", -1.0") and (0.0", 1.0"). + - The two lens galaxies' mass distributions are `Isothermal` profiles with comparable Einstein radii (1.0" and + 0.8") — this comparability is what makes them co-dominant. + - The source galaxy's light is an `Sersic`. + +__Dataset Auto-Simulation__ + +If the dataset does not already exist on your system, it will be created by running the corresponding +simulator script. This ensures that all example scripts can be run without manually simulating data first. +""" +dataset_name = "x2_lens_galaxies" +dataset_path = Path("dataset") / "imaging" / dataset_name + +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/lens_x2.py"], + check=True, + ) + +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +""" +When we plot the data, the difference from every lens we have modeled so far is obvious: there are two bright +lens galaxies, and the lensed source's arcs wrap around the *pair as a whole* rather than around either galaxy +individually. The mass distribution the source's light responds to is the sum of both galaxies' mass. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Mask__ + +We define a 3.0" circular mask. For a multi-galaxy lens, sizing the mask needs more care than at galaxy scale: +the Einstein radius that matters is that of the *combined* mass distribution, not either galaxy's individually. +A mask sized by eye from one galaxy's light would clip the arcs, which extend beyond both galaxies' centres. +""" +mask_radius = 3.0 + +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=mask_radius, +) + +dataset = dataset.apply_mask(mask=mask) + +""" +__Over Sampling__ + +We use the adaptive over sampling scheme introduced in earlier chapters, which evaluates the steep central +regions of the lens galaxies' light at high resolution. The one multi-galaxy specific point is that the adaptive +grid is centred on **every** deflector, not just one — each galaxy has its own steep central light profile +needing accurate evaluation, and `centre_list` takes as many centres as we give it. + +The two centres below are the observed centres of the two lens galaxies, which for this simulated dataset we +know exactly. For real data you would measure them from the image itself (the `autolens_workspace` provides a +GUI which writes them from mouse clicks). +""" +lens_centres = [(0.0, -1.0), (0.0, 1.0)] + +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=dataset.grid, + sub_size_list=[4, 2, 2], + radial_list=[0.3, 0.6], + centre_list=lens_centres, +) + +dataset = dataset.apply_over_sampling(over_sample_size_lp=over_sample_size) + +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Model__ + +We now compose the lens model, and here the multi-galaxy regime shows its teeth. Every co-dominant deflector +needs its own free light and mass model, so the model has one `Galaxy` entry per deflector. + +We build each lens galaxy in a loop over the observed centres and store them as `lens_0`, `lens_1`, etc. This +list-based composition scales to any number of deflectors, and it is the same API the `autolens_workspace`'s +`multi_galaxy` package (and the group-scale examples above it) use — so nothing needs re-learning later. + +For each lens galaxy's light we use a Multi Gaussian Expansion (MGE) made of linear light profiles, built by the +utility function `al.model_util.mge_model_from` (this hides the longer `Basis` composition API we stepped through +in the linear profiles tutorial of chapter 2). For each lens galaxy's mass we use an `Isothermal` (SIE) profile, +initially with every parameter free. The source is also an MGE. + +The MGE choice matters more here than anywhere we have used it before. Each lens galaxy's 20 Gaussians add just +**4 non-linear parameters** (a shared centre and shared elliptical components — every `sigma` is fixed and every +`intensity` is solved for by the linear inversion). A single ordinary `Sersic` bulge would add 7 non-linear +parameters per galaxy, and would fit the blended, overlapping light of a close pair far less well. Because the +multi-galaxy regime multiplies whatever light model we choose by the number of deflectors, a light model that is +both cheap and flexible is close to essential — this is exactly where the MGE shines. + +Each Isothermal mass model adds 5 free parameters: its centre (2), elliptical components (2) and Einstein +radius (1). + +(The `autolens_workspace` multi-galaxy examples additionally include a single external shear for the whole +system, held in its own model entry at the system centre rather than attached to any one deflector — the shear +describes the tidal field of structure *outside* the system, so it belongs to no individual galaxy. We omit it +here to keep the parameter accounting simple.) +""" +lens_dict = {} + +for i, centre in enumerate(lens_centres): + + bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=20, + centre_prior_is_uniform=True, + centre=(centre[0], centre[1]), + sigma_min=dataset.pixel_scales[0] / 10.0, + ) + + mass = af.Model(al.mp.Isothermal) + + lens_dict[f"lens_{i}"] = af.Model( + al.Galaxy, + redshift=0.5, + bulge=bulge, + mass=mass, + ) + +bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=20, + gaussian_per_basis=1, + centre_prior_is_uniform=False, +) + +source = af.Model(al.Galaxy, redshift=1.0, bulge=bulge) + +model = af.Collection(galaxies=af.Collection(**lens_dict, source=source)) + +""" +The model's `info` shows `lens_0` and `lens_1` each carrying their own free mass model — the signature of the +multi-galaxy regime — and its `prior_count` gives the total number of free parameters. +""" +print(model.info) + +print(f"Free parameters (free mass centres): {model.prior_count}") + +""" +The count is **22**: each deflector contributes 4 (MGE light) + 5 (SIE mass) = 9 free parameters, and the MGE +source contributes the final 4. Compare this to the equivalent single-galaxy model, which has just 13 — one +co-dominant deflector added 9 parameters, and every further deflector will add 9 more. Model complexity compounds +fast in this regime, and with plain Sersic light profiles instead of MGEs it would compound faster still (12 per +deflector rather than 9). + +__Fixing the Mass Centres__ + +Before fitting, we make one change that is standard practice for multi-galaxy lenses: we **fix each galaxy's +mass centre to its observed light centre**, removing 2 free parameters per deflector. + +Why? With a single lens galaxy, the data usually constrains the mass centre well: the arcs pin down where the +deflection field is centred, and there is only one plausible culprit. With multiple deflectors this breaks down. +The source's light responds to the *summed* deflection field, so a small shift of one galaxy's mass centre can be +compensated by shifts of the other's centre, ellipticity or Einstein radius — the free centres become extremely +degenerate with one another. The search wanders these degeneracies, converging slowly and often settling in +unphysical corners of parameter space where one galaxy's mass has drifted far from any light. + +Fixing each mass centre to the galaxy's light centre resolves this at minimal cost. Light traces stellar mass, +and the stellar body sits at the bottom of the galaxy's potential well, so the light centre is an excellent +estimate of the mass centre. (Measuring a genuine offset between mass and light — which interacting pairs can +show at the kiloparsec level — is real science, but it is a *follow-up* fit performed after a robust model with +fixed centres has been found.) + +Assigning a tuple to the mass model's `centre` fixes it, so it is no longer a free parameter with a prior. +""" +lens_dict = {} + +for i, centre in enumerate(lens_centres): + + bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=20, + centre_prior_is_uniform=True, + centre=(centre[0], centre[1]), + sigma_min=dataset.pixel_scales[0] / 10.0, + ) + + mass = af.Model(al.mp.Isothermal) + mass.centre = (centre[0], centre[1]) + + lens_dict[f"lens_{i}"] = af.Model( + al.Galaxy, + redshift=0.5, + bulge=bulge, + mass=mass, + ) + +bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=20, + gaussian_per_basis=1, + centre_prior_is_uniform=False, +) + +source = af.Model(al.Galaxy, redshift=1.0, bulge=bulge) + +model = af.Collection(galaxies=af.Collection(**lens_dict, source=source)) + +""" +Printing the model's `info` again, each mass `centre` is now listed as a fixed value with no prior, and the +free parameter count has dropped from 22 to **18** — each SIE now contributes 3 free parameters instead of 5. +""" +print(model.info) + +print(f"Free parameters (fixed mass centres): {model.prior_count}") + +""" +__Model Fit__ + +We fit the model with the nested sampling algorithm `Nautilus`, as in previous chapters. Because this model has +more free parameters than the single-galaxy fits of chapter 2 (which used 100 live points), we raise `n_live` +to 200 — a multi-galaxy parameter space is more multi-modal, and too few live points risks converging on a local +maximum where the two galaxies' Einstein radii have been mis-apportioned. +""" +search = af.Nautilus( + path_prefix=Path("howtolens", "chapter_4"), + name="tutorial_2_multi_galaxy", + unique_tag=dataset_name, + n_live=200, + n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations +) + +analysis = al.AnalysisImaging(dataset=dataset) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_2_multi_galaxy" + " folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result = search.fit(model=model, analysis=analysis) + +""" +__Result__ + +The result's `info` shows the inferred model, with each deflector's parameters listed under its own `lens_0` / +`lens_1` entry. +""" +print(result.info) + +""" +The tracer subplot is worth a close look for a multi-galaxy lens: the critical curve is that of the *combined* +mass distribution, so it wraps around the pair as a whole rather than encircling either galaxy individually — +just as the arcs in the data do. +""" +aplt.subplot_tracer(tracer=result.max_log_likelihood_tracer, grid=result.grids.lp) + +aplt.subplot_fit_imaging(fit=result.max_log_likelihood_fit) + +""" +__Mass Degeneracies__ + +The corner plot of the posterior is where the multi-galaxy regime reveals its most important lesson. Below we +plot the probability density function of every parameter; when you run this tutorial for real (rather than +skimming the generated output), focus on the panel showing `lens_0`'s Einstein radius against `lens_1`'s. +""" +aplt.corner_anesthetic(samples=result.samples) + +""" +You will see a strongly elongated, tilted degeneracy: the two Einstein radii are *anti-correlated*. When one +galaxy's Einstein radius goes up, the other's goes down, tracing out a narrow ridge in parameter space. + +The physical reason is the summed deflection field. The arcs constrain the **total** mass enclosed by the +combined Einstein ring extremely well — move along the ridge and the sum of the two galaxies' deflections barely +changes, so the fit to the data barely changes either. What the data constrains much more weakly is the **split** +of that mass between the two galaxies. The closer the pair (relative to the combined Einstein radius), the less +information the arcs carry about which galaxy the mass belongs to, and the longer the ridge grows. + +This has a real scientific cost. For a single-galaxy lens, the Einstein mass is one of the cleanest measurements +in astrophysics. For a multi-galaxy lens, the total is still clean, but per-galaxy quantities — each galaxy's +mass, its mass-to-light ratio, its dark matter fraction — inherit the full width of the degeneracy, and their +error bars can be many times larger than the total's. Any interpretation built on the split (e.g. comparing the +two galaxies' dark matter content) must honestly propagate this, which is why we fit these systems with a +sampler that maps the full posterior rather than an optimizer that returns a single best-fit point: the best-fit +point sits somewhere on the ridge and tells you nothing about the ridge's length. + +__No Shared Halo__ + +It is worth being explicit about an assumption we did *not* make. We modeled two galaxies, each with its own +untruncated `Isothermal` mass profile, and simply added their deflections. We did not assume the pair inhabits a +single, large, shared dark matter halo — and because there is no host halo in the model, we also made no +assumptions about tidal stripping or the truncation of each galaxy's individual halo. + +At this scale, that is the right call: a pair (or triple) of comparable galaxies has no dominant halo for its +members to be stripped by, and the data cannot demand one. But climb the mass ladder and it changes. At the +group scale, a dominant group-sized halo enters the model as an explicit choice, and the member galaxies orbiting +within it are tidally truncated by its potential — assumptions that reshape the entire mass model, as we will +see later in this chapter. + +__Three Lens Galaxies__ + +What happens when a third co-dominant deflector joins the system? Let us load a triple-galaxy lens, simulated +with three `Isothermal` mass profiles of comparable Einstein radii (0.9", 0.8" and 0.7") arranged in a triangle, +all lensing a single source. +""" +dataset_name = "x3_lens_galaxies" +dataset_path = Path("dataset") / "imaging" / dataset_name + +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/lens_x3.py"], + check=True, + ) + +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +We compose the three-deflector model with exactly the same loop as before — this is the payoff of the list-based +API, which needs no changes as the deflector count grows. Each mass centre is again fixed to its galaxy's +observed light centre; with three deflectors the centre degeneracies are even more severe than for the pair, so +the standard trick matters even more. +""" +lens_centres = [(0.9, 0.0), (-0.6, -0.9), (-0.6, 0.9)] + +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=mask_radius, +) + +dataset = dataset.apply_mask(mask=mask) + +lens_dict = {} + +for i, centre in enumerate(lens_centres): + + bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=20, + centre_prior_is_uniform=True, + centre=(centre[0], centre[1]), + sigma_min=dataset.pixel_scales[0] / 10.0, + ) + + mass = af.Model(al.mp.Isothermal) + mass.centre = (centre[0], centre[1]) + + lens_dict[f"lens_{i}"] = af.Model( + al.Galaxy, + redshift=0.5, + bulge=bulge, + mass=mass, + ) + +bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=20, + gaussian_per_basis=1, + centre_prior_is_uniform=False, +) + +source = af.Model(al.Galaxy, redshift=1.0, bulge=bulge) + +model = af.Collection(galaxies=af.Collection(**lens_dict, source=source)) + +print(model.info) + +print(f"Free parameters (three deflectors, fixed mass centres): {model.prior_count}") + +""" +The count is now **25**: even with fixed mass centres and cheap MGE light models, every deflector adds 7 free +parameters (4 light + 3 mass), and with free centres it would be 9. The trend is linear and unforgiving: + + - 1 deflector: 13 free parameters. + - 2 deflectors: 18 (this tutorial's fit). + - 3 deflectors: 25. + - 10 deflectors: ~74. A group-scale lens can easily have this many members. + +And the parameter count is only half the problem. As the deflectors multiply, so do the degeneracies between +their masses — every pair of galaxies gets its own version of the Einstein radius ridge we saw above, and the +posterior becomes progressively harder for any sampler to map. + +You are welcome to fit this three-galaxy model yourself — the search above works unchanged, though expect it to +take noticeably longer than the pair. Clearly, freeing every galaxy's mass cannot scale to the tens or hundreds +of member galaxies in groups and clusters. Something has to give. + +__Wrap Up__ + +In this tutorial, we modeled strong lenses with multiple co-dominant deflectors. Let's summarise what we've +learnt: + +- **Co-dominant deflectors**: When two or more galaxies of comparable mass both contribute significantly to the + lensing, every one of them needs its own free light and mass model — unlike the nuisance neighbours of the + previous tutorial, none can be masked away or simplified. + +- **Physical origins**: Multi-galaxy lenses arise from merging galaxies at one redshift (single-plane, deflections + add) or chance line-of-sight alignments at different redshifts (multi-plane ray tracing, covered later in this + chapter). + +- **Parameter growth**: Each deflector added 9 free parameters (4 for its MGE light, 5 for its SIE mass) — and the + MGE is what kept it that cheap, since its linear light profiles add flexibility without non-linear parameters. + +- **Fixed mass centres**: Fixing each galaxy's mass centre to its observed light centre (removing 2 parameters per + deflector) is the standard trick for taming the severe centre degeneracies of multi-deflector models. + +- **Mass degeneracies**: The data constrains the total mass well but its split between the galaxies poorly, + producing an anti-correlated ridge between the deflectors' Einstein radii — and inflating the uncertainties on + any per-galaxy science. + +- **No shared halo**: At this scale we do not assume the galaxies inhabit one large dark matter halo, so no tidal + truncation assumptions enter the model — that framing arrives at group scale. + +The three-galaxy model made the trajectory clear: freeing every deflector cannot scale. In the next tutorial, we +introduce the tool that stops this growth in its tracks — scaling relations, which tie the masses of many +galaxies to their observed luminosities so that an entire population of deflectors costs almost no extra free +parameters. +""" diff --git a/scripts/simulator/lens_x3.py b/scripts/simulator/lens_x3.py new file mode 100644 index 0000000..11673dd --- /dev/null +++ b/scripts/simulator/lens_x3.py @@ -0,0 +1,219 @@ +""" +Simulator: Lens x3 +================== + +This script simulates `Imaging` of a 'galaxy-scale' lens where there are three lens galaxies, each with their own +light and mass profiles, which all contribute significantly to the lensing of a single background source. + +Strong lenses with this complex mass distribution are more challenging to model than those with one or two lens +galaxies, because every additional deflector adds its own free light and mass parameters to the model. + +A system with three co-dominant lens galaxies and no shared dark-matter halo is exactly what the +`autolens_workspace`'s `multi_galaxy` package is dedicated to — its `start_here` and `modeling` examples are +directly applicable to this lens. (Systems where a dominant group-scale halo joins the galaxies belong one rung +up the regime ladder, in the `group` package.) + +This dataset is modeled in HowToLens chapter 4 and is used to illustrate how the parameter count of a lens model +grows with every co-dominant deflector, motivating the scaling relations introduced later in that chapter. + +__Contents__ + +- **Model:** Compose the lens model fitted to the data. +- **Dataset Paths:** The `dataset_type` describes the type of data being simulated (in this case, `Imaging` data) and. +- **Simulate:** Simulate the image using a (y,x) grid with the adaptive over sampling scheme. +- **Ray Tracing:** Setup the lens galaxies' light, mass and source galaxy light for this simulated lens. +- **Output:** Output the simulated dataset to the dataset path as .fits files. +- **Visualize:** Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset. +- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass. + +__Model__ + +This script simulates `Imaging` of a 'galaxy-scale' strong lens where: + + - The lens galaxies' light are three `Sersic`'s. + - The lens galaxies' mass distributions are three `Isothermal`'s. + - The source galaxy's light is an `Sersic`. + +This dataset is used in chapter 4 of the **HowToLens** lectures. + +__Start Here Notebook__ + +If any code in this script is unclear, refer to the `autolens_workspace/*/imaging/simulator.ipynb` notebook. +""" + +from pathlib import Path +import autolens as al +import autolens.plot as aplt + +""" +__Dataset Paths__ + +The `dataset_type` describes the type of data being simulated (in this case, `Imaging` data) and `dataset_name` +gives it a descriptive name. +""" +dataset_type = "imaging" +dataset_name = "x3_lens_galaxies" +dataset_path = Path("dataset", dataset_type, dataset_name) + +""" +__Simulate__ + +Simulate the image using a (y,x) grid with the adaptive over sampling scheme. + +This simulated lens has three galaxies whose centres are offset from (0.0", 0.0"), forming a triangle around the +origin. The adaptive over sampling grid has all three centres input to account for this. +""" +grid = al.Grid2D.uniform( + shape_native=(100, 100), + pixel_scales=0.1, +) + +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=grid, + sub_size_list=[32, 8, 2], + radial_list=[0.3, 0.6], + centre_list=[(0.9, 0.0), (-0.6, -0.9), (-0.6, 0.9)], +) + +grid = grid.apply_over_sampling(over_sample_size=over_sample_size) + +""" +Simulate a simple Gaussian PSF for the image. +""" +psf = al.Convolver.from_gaussian( + shape_native=(11, 11), sigma=0.1, pixel_scales=grid.pixel_scales +) + +""" +Create the simulator for the imaging data, which defines the exposure time, background sky, noise levels and psf. +""" +simulator = al.SimulatorImaging( + exposure_time=300.0, + psf=psf, + background_sky_level=0.1, + add_poisson_noise_to_data=True, +) + +""" +__Ray Tracing__ + +Setup the lens galaxies' light, mass and source galaxy light for this simulated lens. + +The image plane is made of three separate lens galaxies, whose Einstein radii (0.9", 0.8" and 0.7") are +deliberately comparable — no single galaxy dominates the deflection of the source's light, which is what makes +every one of them a co-dominant deflector that must be modeled individually. + +All three galaxies are at the same redshift, so ray tracing is single-plane and their deflection fields simply add. +""" +lens_galaxy_0 = al.Galaxy( + redshift=0.5, + bulge=al.lp.Sersic( + centre=(0.9, 0.0), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=30.0), + intensity=0.1, + effective_radius=0.7, + sersic_index=3.0, + ), + mass=al.mp.Isothermal( + centre=(0.9, 0.0), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.85, angle=30.0), + einstein_radius=0.9, + ), +) + +lens_galaxy_1 = al.Galaxy( + redshift=0.5, + bulge=al.lp.Sersic( + centre=(-0.6, -0.9), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.7, angle=120.0), + intensity=0.1, + effective_radius=0.6, + sersic_index=2.5, + ), + mass=al.mp.Isothermal( + centre=(-0.6, -0.9), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=120.0), + einstein_radius=0.8, + ), +) + +lens_galaxy_2 = al.Galaxy( + redshift=0.5, + bulge=al.lp.Sersic( + centre=(-0.6, 0.9), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=60.0), + intensity=0.1, + effective_radius=0.5, + sersic_index=3.5, + ), + mass=al.mp.Isothermal( + centre=(-0.6, 0.9), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=60.0), + einstein_radius=0.7, + ), +) + +source_galaxy = al.Galaxy( + redshift=1.0, + bulge=al.lp.ExponentialCoreSph( + centre=(0.05, 0.15), intensity=0.2, effective_radius=0.5, radius_break=0.025 + ), +) + +""" +Use these galaxies to setup a tracer, which will generate the image for the simulated `Imaging` dataset. +""" +tracer = al.Tracer( + galaxies=[lens_galaxy_0, lens_galaxy_1, lens_galaxy_2, source_galaxy] +) + +""" +Pass the simulator a tracer, which creates the image which is simulated as an imaging dataset. +""" +dataset = simulator.via_tracer_from(tracer=tracer, grid=grid) + +""" +__Output__ + +Output the simulated dataset to the dataset path as .fits files. +""" +aplt.fits_imaging( + dataset=dataset, + data_path=dataset_path / "data.fits", + psf_path=dataset_path / "psf.fits", + noise_map_path=dataset_path / "noise_map.fits", + overwrite=True, +) + +""" +__Visualize__ + +Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset path as .png files. +""" + +aplt.subplot_imaging_dataset(dataset=dataset) +aplt.plot_array(array=dataset.data, title="Data") + +aplt.subplot_tracer( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) +aplt.subplot_galaxies_images( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) + +""" +__Tracer json__ + +Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and galaxies +are safely stored and available to check how the dataset was simulated in the future. + +This can be loaded via the method `tracer = al.from_json()`. +""" +al.output_to_json( + obj=tracer, + file_path=Path(dataset_path, "tracer.json"), +) + +""" +The dataset can be viewed in the folder `autolens_workspace/dataset/imaging/x3_lens_galaxies`. +""" From 63169611b4b438bb09466d49d1fbb31d54278d37 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:39:06 +0000 Subject: [PATCH 10/22] =?UTF-8?q?docs:=20write=20chapter=204=20tutorial=20?= =?UTF-8?q?1=20=E2=80=94=20extra=20galaxies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Opens the scaling-up chapter with the full ladder framing, then teaches the two ways to handle a nearby interloper galaxy: noise scaling its light out of the fit, or modeling it explicitly through the extra_galaxies model interface with centres fixed to the observed light. Central framing is whether the neighbour's light and/or mass affects the main lens analysis. Backed by a new lens_extra_galaxy simulator that also outputs the extra-galaxies mask and centres. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_1_extra_galaxies.py | 478 ++++++++++++++++++ scripts/simulator/lens_extra_galaxy.py | 270 ++++++++++ 2 files changed, 748 insertions(+) create mode 100644 scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py create mode 100644 scripts/simulator/lens_extra_galaxy.py diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py b/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py new file mode 100644 index 0000000..6b2e397 --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py @@ -0,0 +1,478 @@ +""" +Tutorial 1: Extra Galaxies +========================== + +Welcome to chapter 4 of **HowToLens**, where we scale up lens modeling beyond a single lens galaxy. + +In chapters 1 to 3, every strong lens we studied had the same simple anatomy: one lens galaxy, whose light and mass +we modeled, and one background source galaxy, whose lensed emission we fitted. This is the cleanest possible lensing +configuration, and it was the right place to learn the fundamentals of ray-tracing, non-linear searches and +pixelized source reconstructions. + +Real strong lenses are rarely this tidy. Galaxies live in crowded fields: a lens galaxy may have a faint companion a +few arc-seconds away, sit in a small group of comparably massive galaxies, or be embedded in a cluster containing +hundreds of members and a vast dark matter halo. The science of strong lensing scales up through this hierarchy, and +so must our modeling: + +- **Extra galaxies (this tutorial)**: a single dominant lens galaxy, with one or more nearby interloper galaxies + whose light and mass may contaminate the analysis. + +- **Multi-galaxy lenses (next tutorial)**: systems where two or more galaxies are co-equal lenses, and no single + galaxy can be called "the" lens. + +- **Scaling relations**: modeling many galaxies at once by tying their properties to their luminosity, so that + adding galaxies does not add free parameters. + +- **Group and cluster scales**: lenses whose deflectors are entire groups or clusters of galaxies, including a + shared dark matter halo. + +- **Weak lensing**: the statistical distortion of many background galaxies by foreground mass, extending lensing + beyond the strong regime entirely. + +Much of the methodology in this chapter is not specific to lensing. Fitting the light of extra galaxies, modeling +blended multi-galaxy fields and composing models via scaling relations are equally important for non-lensing galaxy +studies, and **PyAutoGalaxy** provides the same API for these tasks applied to galaxy morphology (without the +ray-tracing). + +In this first tutorial, we take the first step up in scale: a galaxy-scale lens with one extra galaxy nearby. We +will learn how to decide whether the extra galaxy matters, and the two approaches to dealing with it when it does: +removing its light from the data, or including it in the lens model. + +__Contents__ + +- **Initial Setup:** Load the imaging dataset of a lens with an extra galaxy and inspect the interloper. +- **Light Versus Mass:** The core decision: do the extra galaxy's light and / or mass affect the analysis? +- **Mask:** Define a circular mask large enough to include the extra galaxy's emission. +- **Approach 1 Noise Scaling:** Remove the extra galaxy's light from the fit by scaling its data and noise values. +- **Noise Scaling Fit:** Fit a lens model to the noise-scaled data, without the extra galaxy in the model. +- **Approach 2 Extra Galaxies Model:** Include the extra galaxy's light and mass in the lens model explicitly. +- **Extra Galaxy Centres:** Why the extra galaxy's centre is fixed to its observed light centre. +- **Extra Galaxies Fit:** Fit the lens model which includes the extra galaxy. +- **Which Approach When:** Guidance on choosing between noise scaling and explicit modeling. +- **Wrap Up:** Summary of the script and next steps. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +from pathlib import Path +import autolens as al +import autolens.plot as aplt +import autofit as af + +""" +__Initial Setup__ + +Lets load the `Imaging` dataset we'll fit in this tutorial. It is similar to the `lens_sersic` dataset used +throughout chapter 2, where: + + - The lens galaxy's light is an `Sersic`. + - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. + - The source galaxy's light is an `SersicCore`. + +However, there is one addition: an extra galaxy, with its own light (an `ExponentialSph`) and its own +mass (an `IsothermalSph`), located a few arc-seconds from the lens galaxy. +""" +dataset_name = "lens_extra_galaxy" +dataset_path = Path("dataset") / "imaging" / dataset_name + +""" +__Dataset Auto-Simulation__ + +If the dataset does not already exist on your system, it will be created by running the corresponding +simulator script. This ensures that all example scripts can be run without manually simulating data first. +""" +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/lens_extra_galaxy.py"], + check=True, + ) + +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +""" +When we plot the dataset, the familiar sight of a lens galaxy surrounded by a lensed source's ring of emission is +joined by a blob of light in the upper-right of the image. + +This is the extra galaxy. It is not part of the strong lens system we are studying: it is an interloper, a galaxy +that happens to lie close to the lens on the sky. Interlopers like this are extremely common in real imaging of +strong lenses, and every lens modeler has to decide what to do about them. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Light Versus Mass__ + +The decision of what to do about an extra galaxy hinges on one question, asked twice: + +**Does its light affect the analysis?** The extra galaxy's emission may extend into the region of the image we fit. +If it does, and we fit a model containing only the lens and source, the model has no component that can produce +this emission. The fit will respond by distorting the lens light, source light or mass model to soak it up, +biasing every parameter we infer. + +**Does its mass affect the analysis?** The extra galaxy's mass deflects light rays, just like the lens galaxy's +mass does. If the galaxy is close (in projection) to the lensed source's light, its deflections measurably perturb +the ray-tracing. A model without this mass will compensate by biasing the main lens galaxy's mass parameters, for +example its `einstein_radius` or `ell_comps`. + +These two effects are dealt with separately, which gives us two approaches: + +- **Approach 1 (remove its light)**: If only the light matters, we can remove the extra galaxy's emission from the + fit entirely, without adding anything to the model. The mass is ignored. + +- **Approach 2 (model it explicitly)**: If the mass matters (or the light blends too closely with the lensed source + to cleanly remove), we include the extra galaxy in the lens model, with its own light and / or mass profiles. + +We will now perform both, and at the end of the tutorial discuss when each is appropriate. + +__Mask__ + +We first define the circular mask used to fit the data. In chapter 2 we typically used a 2.6" - 3.0" mask, which +tightly contained the lens and lensed source. + +Here, we use a larger 4.0" mask, so that the region containing the extra galaxy is included in the fit. If we +simply shrank the mask to exclude the extra galaxy, we would also throw away pixels containing lensed source +emission, and the mask's hard edge could still cut through the extra galaxy's light. +""" +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=4.0, +) + +dataset = dataset.apply_mask(mask=mask) + +""" +Plotting the masked dataset confirms the extra galaxy's emission is inside the mask, and will therefore impact the +model-fit unless we do something about it. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Approach 1 Noise Scaling__ + +Our first approach removes the extra galaxy's light from the fit. + +The most obvious way to do this would be to mask the extra galaxy's pixels, removing them from the fit entirely. +However, removing pixels changes the fit in subtle ways: their coordinates are no longer used in the ray-tracing, +and for certain models (e.g. the pixelized source reconstructions of chapter 3) removing interior pixels creates +discontinuities in the pixelization that introduce unexpected systematics. + +Instead, we use **noise scaling**: the pixels stay in the fit, but their data values are set to zero and their +noise-map values are increased to very large values. A pixel with enormous noise contributes negligibly to the +likelihood, so the extra galaxy's light cannot influence the model, while the pixels themselves remain part of the +fit's geometry. + +To do this we need a mask of the extra galaxy's region. For real data, you would create this yourself by +inspecting the image (the workspace's `data_preparation` package includes a GUI for drawing it); for this simulated +dataset the simulator script has already output a `mask_extra_galaxies.fits` circle covering the extra galaxy. + +We reload the dataset first, because noise scaling must be applied before the circular mask. +""" +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +mask_extra_galaxies = al.Mask2D.from_fits( + file_path=dataset_path / "mask_extra_galaxies.fits", + pixel_scales=0.1, + invert=True, # Note that we invert the mask here as `True` means a pixel is scaled. +) + +dataset = dataset.apply_noise_scaling(mask=mask_extra_galaxies) + +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=4.0, +) + +dataset = dataset.apply_mask(mask=mask) + +""" +Plotting the dataset shows the extra galaxy's emission has vanished: its data values are zero and the +signal-to-noise of its pixels is effectively zero, so the fit will simply ignore that region of the image. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Noise Scaling Fit__ + +We now fit this noise-scaled dataset with a lens model that does **not** include the extra galaxy. The model is the +same one we used in chapter 2's linear profiles tutorial: a linear `Sersic` lens bulge, an `Isothermal` plus +`ExternalShear` mass model and a linear `SersicCore` source. +""" +# Lens: + +bulge = af.Model(al.lp_linear.Sersic) +mass = af.Model(al.mp.Isothermal) + +lens = af.Model( + al.Galaxy, redshift=0.5, bulge=bulge, mass=mass, shear=al.mp.ExternalShear +) + +# Source: + +source = af.Model(al.Galaxy, redshift=1.0, bulge=al.lp_linear.SersicCore) + +# Overall Lens Model: + +model = af.Collection(galaxies=af.Collection(lens=lens, source=source)) + +search = af.Nautilus( + path_prefix=Path("howtolens", "chapter_4"), + name="tutorial_1_extra_galaxies_noise_scaling", + unique_tag=dataset_name, + n_live=100, + n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations +) + +analysis = al.AnalysisImaging(dataset=dataset) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_1_extra_galaxies_noise_scaling" + " folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result_noise_scaling = search.fit(model=model, analysis=analysis) + +print("The search has finished run - you may now continue the notebook.") + +""" +Plotting the maximum log likelihood fit shows the lens and source are fitted well, with the noise-scaled region +contributing nothing to the residuals. + +The extra galaxy's light has been dealt with. However, note what this approach did **not** do: the extra galaxy's +mass is completely absent from the model. Its deflection of the source's light rays is unaccounted for, and the +inferred lens mass model will have absorbed that perturbation as best it can. For an extra galaxy that is small +and / or far from the lensed emission this bias is negligible; for one that is massive and close, it is not. +""" +aplt.subplot_fit_imaging(fit=result_noise_scaling.max_log_likelihood_fit) + +""" +__Approach 2 Extra Galaxies Model__ + +Our second approach includes the extra galaxy in the lens model, fitting its light (so we no longer need to remove +it from the data) and its mass (so its deflections are included in the ray-tracing). + +We reload the dataset and apply the 4.0" circular mask, but this time we do **not** apply noise scaling, because +the extra galaxy's emission is now something the model itself will fit. +""" +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=4.0, +) + +dataset = dataset.apply_mask(mask=mask) + +""" +__Extra Galaxy Centres__ + +To include the extra galaxy in the model, we input the centre of its light, as observed in the image. + +In principle, we could add the extra galaxy to the model with a completely free centre, and let the non-linear +search figure out where it is. In practice this is a bad idea: the extra parameters make parameter space more +complex, and fits commonly go wrong in characteristic ways. For example, the extra galaxy's light profile may +wander off and fit one of the lensed source's multiple images instead of the interloper, or its mass profile may +recentre itself onto the main lens galaxy and act as part of its mass distribution. + +Fixing each extra galaxy's light and mass centres to its observed light centre removes these failure modes and +keeps the model as simple as possible. The observed centre is an excellent estimate of the true centre, because +(unlike the lensed source) the extra galaxy's light is not distorted by lensing. + +For real data you would measure these centres from the image (the workspace's `data_preparation` package shows +how, including a GUI for marking them); for this simulated dataset the simulator has output them to a .json file, +which we load below. +""" +extra_galaxies_centres = al.Grid2DIrregular( + al.from_json(file_path=dataset_path / "extra_galaxies_centres.json") +) + +print(extra_galaxies_centres) + +""" +__Extra Galaxies Model Composition__ + +We compose the main lens and source model exactly as before. +""" +# Lens: + +bulge = af.Model(al.lp_linear.Sersic) +mass = af.Model(al.mp.Isothermal) + +lens = af.Model( + al.Galaxy, redshift=0.5, bulge=bulge, mass=mass, shear=al.mp.ExternalShear +) + +# Source: + +source = af.Model(al.Galaxy, redshift=1.0, bulge=al.lp_linear.SersicCore) + +""" +We now compose the model of the extra galaxy, using the dedicated `extra_galaxies` modeling API. + +For each extra galaxy centre (there is only one here, but the loop below scales to any number) we create a `Galaxy` +model with: + + - A linear `ExponentialSph` light profile, with its `centre` fixed to the observed centre [1 free + parameter: `effective_radius`, as the `intensity` is solved for by the linear inversion]. + + - An `IsothermalSph` mass profile, with its `centre` fixed to the observed centre [1 free + parameter: `einstein_radius`]. + +Extra galaxy mass profiles can wander to unphysically high `einstein_radius` values, degrading the fit, so we set +a `UniformPrior` with an upper limit of 0.5" to prevent this. The extra galaxy is much less massive than the main +lens (whose `einstein_radius` is around 1.6"), so this prior comfortably contains all plausible solutions. + +The extra galaxies are grouped into their own `af.Collection`, which is passed to the overall model via its +`extra_galaxies` input, alongside the `galaxies` collection containing the lens and source. This is the same +API used throughout the `autolens_workspace` for extra galaxies, and it is how **PyAutoLens** knows to include +these galaxies in the ray-tracing without treating them as the main lens or source. +""" +# Extra Galaxies: + +extra_galaxies_list = [] + +for extra_galaxy_centre in extra_galaxies_centres: + + # Extra Galaxy Light + + light = af.Model(al.lp_linear.ExponentialSph) + light.centre = extra_galaxy_centre + + # Extra Galaxy Mass + + mass = af.Model(al.mp.IsothermalSph) + mass.centre = extra_galaxy_centre + mass.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=0.5) + + # Extra Galaxy + + extra_galaxy = af.Model(al.Galaxy, redshift=0.5, light=light, mass=mass) + + extra_galaxies_list.append(extra_galaxy) + +extra_galaxies = af.Collection(extra_galaxies_list) + +# Overall Lens Model: + +model = af.Collection( + galaxies=af.Collection(lens=lens, source=source), extra_galaxies=extra_galaxies +) + +""" +The `info` attribute confirms the model includes the extra galaxy, with its fixed centres and its +free `effective_radius` and `einstein_radius` parameters. +""" +print(model.info) + +""" +__Extra Galaxies Fit__ + +We fit this model with the same search set up as before. The model has only two more free parameters than the +noise-scaling fit, thanks to the fixed centres and linear light profile, so the fit remains fast. +""" +search = af.Nautilus( + path_prefix=Path("howtolens", "chapter_4"), + name="tutorial_1_extra_galaxies_model", + unique_tag=dataset_name, + n_live=100, + n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations +) + +analysis = al.AnalysisImaging(dataset=dataset) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_1_extra_galaxies_model" + " folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result_extra_galaxies = search.fit(model=model, analysis=analysis) + +print("The search has finished run - you may now continue the notebook.") + +""" +Plotting the maximum log likelihood fit shows the extra galaxy's emission is now fitted by its own light profile, +and its mass has contributed deflections to the ray-tracing of the source. +""" +aplt.subplot_fit_imaging(fit=result_extra_galaxies.max_log_likelihood_fit) + +""" +The result's `info` shows the inferred `einstein_radius` of the extra galaxy, quantifying how much lensing power +the interloper contributes to the system. +""" +print(result_extra_galaxies.info) + +""" +__Which Approach When__ + +We have seen the two extremes of dealing with an extra galaxy. Choosing between them comes back to the +light-versus-mass question at the start of this tutorial, which in practice is settled by three properties of the +interloper: + +- **Distance from the lensed emission**: An extra galaxy whose light is well separated from the lensed source (as + in this tutorial) can be cleanly noise-scaled away. If its light blends into the source's arcs, noise scaling + would also delete source emission we need, and the light must be modeled instead. + +- **Brightness**: A faint interloper whose emission barely rises above the noise can often be ignored entirely, or + noise-scaled with no consequence. A bright one must be removed or modeled, or it will bias the fit. + +- **Mass and proximity to the lens**: The mass matters when the extra galaxy is massive enough, and close enough + (in projection) to the lensed source's light, for its deflections to measurably perturb the ray-tracing. A rough + rule of thumb is to compare its expected Einstein radius to the astrometric precision of the data: a small galaxy + several arc-seconds from the arcs can have its mass safely ignored, whereas one abutting the Einstein ring + cannot. When in doubt, fit both approaches and compare the inferred lens models: if the main lens's mass + parameters shift appreciably, the extra galaxy's mass matters. + +Intermediate options also exist and are fully supported by the API: you can noise-scale the light but still include +the mass profile in the model, or model the light but omit the mass. The `extra_galaxies` collection simply +contains whatever profiles you give it. + +__Wrap Up__ + +In this tutorial, we took the first step up in scale from the single lens galaxy of chapters 1 to 3, and learnt: + +1. Real lenses live in crowded fields, and interloping extra galaxies are the first complication real data throws + at us. + +2. Whether an extra galaxy matters hinges on two separate questions: does its **light** contaminate the region of + the image we fit, and does its **mass** perturb the ray-tracing of the source? + +3. Noise scaling removes an extra galaxy's light from the fit without adding model complexity, by zeroing its data + and inflating its noise, but leaves its mass unaccounted for. + +4. The `extra_galaxies` modeling API includes extra galaxies in the model with their own light and mass profiles, + with their centres fixed to the observed light centres to keep parameter space simple and well behaved. + +5. Which approach is appropriate depends on the interloper's distance from the lensed emission, its brightness, + and its mass's proximity to the lens. + +Throughout, the extra galaxy was a nuisance: something to remove or account for, so that our analysis of the +main lens remained accurate. In the next tutorial we meet systems where that framing breaks down entirely, because +a second galaxy is not a nuisance but a co-equal lens, with light and mass comparable to the first. There, no +single galaxy is "the" lens, and the model must treat them all on an equal footing +""" diff --git a/scripts/simulator/lens_extra_galaxy.py b/scripts/simulator/lens_extra_galaxy.py new file mode 100644 index 0000000..2d7d20a --- /dev/null +++ b/scripts/simulator/lens_extra_galaxy.py @@ -0,0 +1,270 @@ +""" +Simulator: Lens With Extra Galaxy +================================= + +This script simulates `Imaging` of a 'galaxy-scale' strong lens which is identical to the `lens_sersic` dataset +simulated for chapter 2 (lens light + mass + lensed source), but with one extra galaxy located a few arc-seconds +from the lens galaxy. + +The extra galaxy has its own light profile, which blends into the outskirts of the image, and its own mass profile, +which contributes to the lensing of the source. Chapter 4's first tutorial uses this dataset to illustrate the two +approaches to dealing with such interloper galaxies: removing their light via noise scaling, or including them in +the lens model explicitly. + +It is used to illustrate scaling up lens modeling in the HowToLens lecture series. + +__Contents__ + +- **Model:** Compose the lens model fitted to the data. +- **Dataset Paths:** The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a. +- **Simulate:** Simulate the image using a (y,x) grid with the adaptive over sampling scheme. +- **Ray Tracing:** Setup the lens galaxy's light, mass and source galaxy light for this simulated lens. +- **Extra Galaxy:** Include one extra galaxy, whose light and mass must be masked or modeled in the tutorial. +- **Output:** Output the simulated dataset to the dataset path as .fits files. +- **Mask Extra Galaxy:** Build and save `mask_extra_galaxies.fits` so the tutorial can load it directly. +- **Visualize:** Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset. +- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass. +- **Extra Galaxy Centre:** Output the centre of the extra galaxy to a .json file for use in the lens model. + +__Model__ + +This script simulates `Imaging` of a 'galaxy-scale' strong lens where: + + - The lens galaxy's light profile is an `Sersic`. + - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. + - The source galaxy's light is an `Sersic`. + - There is one extra galaxy whose light is near the lens and whose mass perturbs the lensed source's emission. + +__Start Here Notebook__ + +If any code in this script is unclear, refer to the `autolens_workspace/*/imaging/simulator.ipynb` notebook. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +from pathlib import Path + +import numpy as np + +import autolens as al +import autolens.plot as aplt + +""" +__Dataset Paths__ + +The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a descriptive name. +""" +dataset_type = "imaging" +dataset_name = "lens_extra_galaxy" +dataset_path = Path("dataset", dataset_type, dataset_name) + +""" +__Simulate__ + +Simulate the image using a (y,x) grid with the adaptive over sampling scheme. + +This simulated lens has an extra galaxy offset from the main lens galaxy centre of (0.0", 0.0"). The adaptive over +sampling grid has both centres input to account for this. +""" +extra_galaxy_centre = (1.5, 2.5) + +grid = al.Grid2D.uniform( + shape_native=(100, 100), + pixel_scales=0.1, +) + +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=grid, + sub_size_list=[32, 8, 2], + radial_list=[0.3, 0.6], + centre_list=[(0.0, 0.0), extra_galaxy_centre], +) + +grid = grid.apply_over_sampling(over_sample_size=over_sample_size) + +""" +Simulate a simple Gaussian PSF for the image. +""" +psf = al.Convolver.from_gaussian( + shape_native=(11, 11), sigma=0.1, pixel_scales=grid.pixel_scales +) + +""" +Create the simulator for the imaging data, which defines the exposure time, background sky, noise levels and psf. +""" +simulator = al.SimulatorImaging( + exposure_time=300.0, + psf=psf, + background_sky_level=0.1, + add_poisson_noise_to_data=True, +) + +""" +__Ray Tracing__ + +Setup the lens galaxy's light, mass and source galaxy light for this simulated lens. + +These are identical to the `lens_sersic` dataset simulated for chapter 2, so that the only difference between the +two datasets is the extra galaxy included below. +""" +lens_galaxy = al.Galaxy( + redshift=0.5, + bulge=al.lp.Sersic( + centre=(0.0, 0.0), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0), + intensity=1.0, + effective_radius=0.8, + sersic_index=4.0, + ), + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=1.6, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0), + ), + shear=al.mp.ExternalShear(gamma_1=0.05, gamma_2=0.05), +) + +source_galaxy = al.Galaxy( + redshift=1.0, + bulge=al.lp.SersicCore( + centre=(0.0, 0.0), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0), + intensity=4.0, + effective_radius=0.1, + sersic_index=1.0, + ), +) + +""" +__Extra Galaxy__ + +Include one extra galaxy, which is offset a few arc-seconds from the lens galaxy. + +Its light is an `ExponentialSph` profile, which blends into the image near the lensed source's emission, and its +mass is an `IsothermalSph` profile, which perturbs the ray-tracing of the source's light. + +Note that its redshift is the same as the main lens galaxy, which is not necessarily the case in real observations. +If it were at a different redshift, the tools for masking or modeling the extra galaxy are equipped to handle this, +with mass modeling leading to multi-plane ray-tracing being performed. +""" +extra_galaxy = al.Galaxy( + redshift=0.5, + light=al.lp.ExponentialSph( + centre=extra_galaxy_centre, intensity=2.0, effective_radius=0.5 + ), + mass=al.mp.IsothermalSph(centre=extra_galaxy_centre, einstein_radius=0.15), +) + +""" +Use these galaxies to setup a tracer, which will generate the image for the simulated `Imaging` dataset. +""" +tracer = al.Tracer(galaxies=[lens_galaxy, extra_galaxy, source_galaxy]) + +""" +Lets look at the tracer`s image, this is the image we'll be simulating. +""" +aplt.plot_array(array=tracer.image_2d_from(grid=grid), title="Image") + +""" +Pass the simulator a tracer, which creates the image which is simulated as an imaging dataset. +""" +dataset = simulator.via_tracer_from(tracer=tracer, grid=grid) + +""" +Plot the simulated `Imaging` dataset before outputting it to fits. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Output__ + +Output the simulated dataset to the dataset path as .fits files. +""" +aplt.fits_imaging( + dataset=dataset, + data_path=dataset_path / "data.fits", + psf_path=dataset_path / "psf.fits", + noise_map_path=dataset_path / "noise_map.fits", + overwrite=True, +) + +""" +__Mask Extra Galaxy__ + +Build and output a `mask_extra_galaxies.fits` covering the extra galaxy's region, so that the chapter 4 tutorial +which uses this dataset can load the mask directly without a separate data-preparation step. + +The circle is sized to ~3x the galaxy's `effective_radius`, which comfortably covers the light extent of the +`ExponentialSph` profile used above. The geometry is derived from the same centre + radius defined for the extra +galaxy in this script, so it stays in sync with any future tweak to those values. + +`Mask2D.circular` honours the `PYAUTO_SMALL_DATASETS=1` env var (caps to 16x16 at 0.6"/px), so the mask +automatically shrinks alongside the small-dataset image and never raises an out-of-bounds error. +""" +extra_galaxies_mask = np.zeros(dataset.shape_native, dtype=bool) + +circle = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + centre=extra_galaxy_centre, + radius=3.0 * 0.5, + invert=True, # True inside the circle (i.e. masked region) +) +extra_galaxies_mask = np.logical_or(extra_galaxies_mask, circle.native) + +mask_extra_galaxies = al.Mask2D( + mask=extra_galaxies_mask, + pixel_scales=dataset.pixel_scales, +) + +aplt.fits_array( + array=mask_extra_galaxies, + file_path=dataset_path / "mask_extra_galaxies.fits", + overwrite=True, +) + +""" +__Visualize__ + +Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset path as .png files. +""" + +aplt.subplot_imaging_dataset(dataset=dataset) +aplt.plot_array(array=dataset.data, title="Data") + +aplt.subplot_tracer( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) +aplt.subplot_galaxies_images( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) + +""" +__Tracer json__ + +Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and galaxies +are safely stored and available to check how the dataset was simulated in the future. + +This can be loaded via the method `tracer = al.from_json()`. +""" +al.output_to_json( + obj=tracer, + file_path=Path(dataset_path, "tracer.json"), +) + +""" +__Extra Galaxy Centre__ + +Output the centre of the extra galaxy to a .json file, so that it can be used to set up the lens model in the +chapter 4 tutorial. +""" +al.output_to_json( + obj=al.Grid2DIrregular(values=[extra_galaxy_centre]), + file_path=dataset_path / "extra_galaxies_centres.json", +) + +""" +The dataset can be viewed in the folder `autolens_workspace/dataset/imaging/lens_extra_galaxy`. +""" From c0ea6f7d013dd3b114680b52f2805d60461c03d8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:41:15 +0000 Subject: [PATCH 11/22] =?UTF-8?q?docs:=20write=20chapter=204=20tutorial=20?= =?UTF-8?q?3=20=E2=80=94=20scaling=20relations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces per-galaxy mass freedom with a few global relation parameters: Faber-Jackson motivation, luminosity-tied Einstein radii over the x2 dataset, runtime-verified parameter accounting including a composed 12-member model whose dimensionality does not grow, an honest limitations section (scatter, deviant members, anchor anomalies), and the environment-of-single-lenses use case. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_3_scaling_relation.py | 607 ++++++++++++++++++ 1 file changed, 607 insertions(+) create mode 100644 scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py b/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py new file mode 100644 index 0000000..4b08877 --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py @@ -0,0 +1,607 @@ +""" +Tutorial 3: Scaling Relations +============================= + +The previous tutorial ended on a warning: every deflector we add to a lens model brings its own free parameters. +Two galaxies were manageable, but each one cost us a mass profile's worth of dimensions, and the arithmetic only +gets worse. A group-scale lens may have ten member galaxies, a cluster hundreds. If every member keeps its own +free mass, the parameter space explodes — a 100-galaxy cluster with 5 free mass parameters per galaxy is a +500-dimensional model, which no non-linear search can sample and no dataset can constrain anyway. + +This tutorial introduces the tool that stops the explosion: the **scaling relation**. Instead of giving every +galaxy its own mass freedom, we set each galaxy's mass from something we can *measure* — its luminosity — via a +relation shared by the whole population. The relation itself has only a few global parameters (in this tutorial, +zero new ones!), so the dimensionality of the model stops growing with the number of galaxies. Ten members or a +hundred, the parameter space stays the same size. + +This pairs beautifully with a tool we already have. In chapter 2, we saw that a Multi-Gaussian Expansion (MGE) +fits a galaxy's light using linear algebra, so its intensities add no non-linear parameters. Put the two +together and the recipe for a many-galaxy lens model emerges: + +- **Light:** MGE for every galaxy — flexible light models at (almost) no non-linear cost. +- **Mass:** a scaling relation tying every galaxy's mass to its measured luminosity — a whole population of + mass profiles at no non-linear cost. + +The entire many-galaxy system then costs barely more than a single-lens fit. This tutorial builds that model on +the two-lens dataset from the previous tutorial, verifies the parameter counting explicitly, and is honest about +what a scaling relation assumes and when it can bite you. + +__Overview__ + +In this tutorial, we will: + +- Explain the physics of why luminosity predicts lensing mass (mass-follows-light and the Faber-Jackson relation). + +- Compose a lens model where one galaxy "anchors" the relation and the other galaxy's Einstein radius is tied to + it via the ratio of their measured luminosities. + +- Verify by explicit parameter counting that tied galaxies add zero free parameters, however many there are. + +- Fit the model and inspect how a tied parameter appears in the results. + +- Discuss the limitations: real galaxies scatter around any relation, and a member that deviates can bias the + whole lens model. + +__Contents__ + +- **Mass Follows Light:** The physics linking a galaxy's luminosity to its lensing mass. +- **Initial Setup:** Load the two-lens-galaxy imaging dataset from the previous tutorial. +- **Mask:** Define the 2D mask applied to the dataset for the model-fit. +- **Measured Luminosities:** The luminosities the relation needs, and where they come from. +- **The Anchor:** Identify the brightest galaxy, which anchors the relation. +- **Over Sampling:** Adaptive over-sampling centred on both lens galaxies. +- **Light Via MGE:** MGE light models for every galaxy, at a cost of two parameters each. +- **Scaling Relation:** Tie the fainter galaxy's Einstein radius to the anchor's. +- **Model:** Compose the model with the scaling tier as its own collection. +- **Parameter Counts:** Compare against the previous tutorial's per-galaxy model. +- **Scaling To Many Galaxies:** Show the model does not grow when 12 more members are tied. +- **Model Fit:** Fit the scaling-relation model with Nautilus. +- **Results:** How a tied parameter appears in the results, and how close the truth is to the relation. +- **Limitations:** Scatter, deviant members, and adding per-galaxy freedom selectively. +- **Lens Environments:** The same machinery models the environment of single-lens systems. +- **Wrap Up:** Summary of the script and next steps. + +__Mass Follows Light__ + +Why should a galaxy's luminosity tell us anything about its lensing mass? + +The starting point is that light traces stars and stars trace mass. A more luminous elliptical galaxy contains +more stars, sits in a deeper potential well, and its stars therefore move faster. This is quantified by the +**Faber-Jackson relation**, an empirical scaling law for elliptical galaxies which states that luminosity grows +steeply with the velocity dispersion \sigma of the stars: + + L ~ \sigma^4 + +Lensing connects \sigma to the deflection of light. For the isothermal mass profiles we have used throughout +these tutorials, the Einstein radius is set directly by the velocity dispersion: + + \theta_E = 4 \pi (\sigma / c)^2 (D_ls / D_s) + +where the D's are distances between observer, lens and source. So \theta_E ~ \sigma^2, and combining the two +scalings gives us a relation between the two things we care about — the Einstein radius we want to know and the +luminosity we can measure: + + \theta_E ~ \sigma^2 ~ (L^{1/4})^2 = L^{1/2} + +If one galaxy in a lens system has a measured luminosity L_anchor and Einstein radius \theta_E_anchor, every +other galaxy's Einstein radius follows from its own luminosity: + + \theta_E_i = \theta_E_anchor * (L_i / L_anchor)^{0.5} + +This is the scaling relation we will build into the model below. The exponent 0.5 is the Faber-Jackson value; +more sophisticated versions exist (the "fundamental plane" adds a dependence on galaxy size and surface +brightness, tightening the relation), but the Faber-Jackson form captures the essential physics and is the +standard workhorse for lens modeling. It is the same idea that cluster lensing studies have used for decades: +tie the hundreds of cluster member galaxies to their luminosities via a scaling relation, so the model stays +tractable. + +The crucial property is that only *ratios* of luminosity enter the relation. The absolute calibration, the +units, even the waveband cancel out (so long as all galaxies are measured consistently) — which is what makes +the relation so easy to apply in practice. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +import numpy as np +from pathlib import Path +import autofit as af +import autolens as al +import autolens.plot as aplt + +""" +__Initial Setup__ + +We use the same two-lens-galaxy imaging dataset as the previous tutorial, where: + + - Both lens galaxies' light are `Sersic` profiles. + - Both lens galaxies' mass distributions are `Isothermal` profiles. + - The source galaxy's light is an `ExponentialCoreSph`. +""" +dataset_name = "x2_lens_galaxies" +dataset_path = Path("dataset") / "imaging" / dataset_name + +""" +__Dataset Auto-Simulation__ + +If the dataset does not already exist on your system, it will be created by running the corresponding +simulator script. This ensures that all example scripts can be run without manually simulating data first. +""" +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/lens_x2.py"], + check=True, + ) + +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Mask__ + +We define a 3.0" circular mask, which contains both lens galaxies (centred at (0.0", -1.0") and (0.0", 1.0")) +and the lensed source emission. +""" +mask_radius = 3.0 + +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=mask_radius, +) + +dataset = dataset.apply_mask(mask=mask) + +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Measured Luminosities__ + +The scaling relation needs two inputs for every galaxy it touches: its centre and its luminosity. Neither is a +free parameter of the model — both are **measurements**, made from the imaging data before the mass model is +ever fitted. + +In a real analysis these come from a light-only fit performed first: for example, fitting an MGE to every +galaxy and integrating it to a total flux (the `autolens_workspace`'s scaling-relation SLaM pipeline does exactly +this). Because only luminosity *ratios* enter the relation, a magnitude catalogue from any survey works just as +well, converting via `L_i / L_anchor = 10 ** (0.4 * (m_anchor - m_i))`. + +In this tutorial we take a shortcut available only with simulated data: the simulator saved the true galaxies to +a `tracer.json` file, so we load it and integrate each lens galaxy's true light profile directly. This keeps the +tutorial self-contained, but keep in mind that on real data this step is a fit to the data, with its own +(small) uncertainties. +""" +tracer_true = al.from_json(file_path=dataset_path / "tracer.json") + +lens_galaxies_true = [ + galaxy for galaxy in tracer_true.galaxies if galaxy.redshift == 0.5 +] + +centres = [ + tuple(float(value) for value in galaxy.bulge.centre) + for galaxy in lens_galaxies_true +] + +luminosities = [ + galaxy.bulge.luminosity_within_circle_from(radius=mask_radius) + for galaxy in lens_galaxies_true +] + +print(f"Lens galaxy centres: {centres}") +print(f"Lens galaxy luminosities: {luminosities}") + +""" +__The Anchor__ + +The relation needs an "anchor": one galaxy whose Einstein radius is a free parameter of the model, off which +every other galaxy's Einstein radius hangs. We use the brightest galaxy, identified by `argmax` over the +measured luminosities — a measurement, not an assumption about which galaxy happens to be listed first. + +Anchoring on a galaxy the model is already fitting is the key trick: the anchor's `einstein_radius` is not a new +parameter, so the relation itself will add **zero** free parameters to the model. +""" +anchor_index = int(np.argmax(luminosities)) + +luminosity_anchor = luminosities[anchor_index] +centre_anchor = centres[anchor_index] + +tied_indexes = [i for i in range(len(centres)) if i != anchor_index] + +print(f"Anchor galaxy index: {anchor_index}, L_anchor = {luminosity_anchor:.4f}") + +""" +__Over Sampling__ + +As in the previous tutorial, we apply adaptive over-sampling centred on both lens galaxies, so the steeply +varying central light of each is computed accurately. +""" +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=dataset.grid, + sub_size_list=[4, 2, 2], + radial_list=[0.3, 0.6], + centre_list=centres, +) + +dataset = dataset.apply_over_sampling(over_sample_size_lp=over_sample_size) + +""" +__Light Via MGE__ + +Every galaxy's light is modelled with a Multi-Gaussian Expansion, composed via the `al.model_util.mge_model_from` +convenience function (this wraps the `Basis` of linear `Gaussian` profiles we built by hand in chapter 2 into a +single call — the composition it returns is the same). + +Because the galaxy centres were measured above, we fix each MGE's centre to them (passing the measured centre as +both the `centre` and `centre_fixed` inputs, which fixes it rather than giving it a prior). The Gaussian +`sigma` values are fixed by the basis and the intensities are solved for by linear algebra, so each galaxy's +light costs just **two** non-linear parameters: its elliptical components. This is the "light adds (almost) no +parameters" half of the recipe from the introduction. + +The anchor galaxy also gets its mass: a free `Isothermal` profile with its centre fixed at the measured light +centre. Its `einstein_radius` is an ordinary free parameter — but it is also what the scaling relation below +hangs off. +""" +bulge_anchor = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=10, + centre=centre_anchor, + centre_fixed=centre_anchor, + sigma_min=dataset.pixel_scales[0] / 10.0, +) + +mass_anchor = af.Model(al.mp.Isothermal) +mass_anchor.centre = centre_anchor + +lens_anchor = af.Model( + al.Galaxy, + redshift=0.5, + bulge=bulge_anchor, + mass=mass_anchor, +) + +""" +The source galaxy is also an MGE, with a free centre (we have no pre-measured position for the unlensed source). +""" +source_bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=10, + gaussian_per_basis=1, + centre_prior_is_uniform=False, +) + +source = af.Model(al.Galaxy, redshift=1.0, bulge=source_bulge) + +""" +__Scaling Relation__ + +Now the relation itself. The fainter galaxy's mass is a spherical isothermal profile whose `einstein_radius` is +not given a prior — instead, it is *assigned an expression*: the anchor's `einstein_radius` multiplied by the +luminosity ratio raised to the Faber-Jackson exponent of 0.5. + +This single line is the whole trick. Because `mass_anchor.einstein_radius` is the model's own free parameter, +multiplying it by a fixed number produces a **derived quantity**, not a new parameter. Whenever the non-linear +search proposes an Einstein radius for the anchor, every tied galaxy's Einstein radius follows automatically. + +The tied galaxy keeps its MGE bulge (its light is inside the mask and must be fitted), so it costs two light +parameters and **zero** mass parameters. + +An honest aside before we continue: this dataset's two galaxies are comparably bright, and for a genuine system +of two co-dominant deflectors the previous tutorial's model — full mass freedom for both — is the right choice. +A galaxy contributing half the lensing deserves its own parameters. We tie one here so you can learn the +machinery on a familiar dataset; the regime where the relation genuinely earns its keep is a *population* of +fainter members, which we build towards below and which dominates the next tutorial. +""" +scaling_exponent = 0.5 + +scaling_galaxies_list = [] + +for i in tied_indexes: + bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=10, + centre=centres[i], + centre_fixed=centres[i], + sigma_min=dataset.pixel_scales[0] / 10.0, + ) + + mass = af.Model(al.mp.IsothermalSph) + mass.centre = centres[i] + mass.einstein_radius = ( + mass_anchor.einstein_radius + * (luminosities[i] / luminosity_anchor) ** scaling_exponent + ) + + scaling_galaxies_list.append( + af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass) + ) + +scaling_galaxies = af.Collection(scaling_galaxies_list) + +""" +__Model__ + +The model has two top-level collections: `galaxies` (the anchor and the source) and `scaling_galaxies` (the tied +population). This is not just presentational — `scaling_galaxies` is the collection name **PyAutoLens** expects a +scaling population in: the analysis appends it to the tracer's galaxy list when fitting, and results loaded back +via the aggregator restore it. It also keeps `model.info` readable, with the tied population visibly separate +from the freely modelled galaxies. + +Inspecting `model.info` below, note that the tied galaxies have no `einstein_radius` prior of their own — it is +listed as a function of the anchor's. +""" +model = af.Collection( + galaxies=af.Collection(lens=lens_anchor, source=source), + scaling_galaxies=scaling_galaxies, +) + +print(model.info) + +""" +__Parameter Counts__ + +Let's verify the claims above by counting, rather than believing. First we recompose the previous tutorial's +style of model on this dataset — every galaxy with its own free elliptical `Isothermal` mass (centres fixed at +the measured light centres, as above, so the comparison is like-for-like). +""" +per_galaxy_lens_dict = {} + +for i in range(len(centres)): + bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=10, + centre=centres[i], + centre_fixed=centres[i], + sigma_min=dataset.pixel_scales[0] / 10.0, + ) + + mass = af.Model(al.mp.Isothermal) + mass.centre = centres[i] + + per_galaxy_lens_dict[f"lens_{i}"] = af.Model( + al.Galaxy, redshift=0.5, bulge=bulge, mass=mass + ) + +model_per_galaxy = af.Collection( + galaxies=af.Collection(**per_galaxy_lens_dict, source=source), +) + +print(f"Free parameters, per-galaxy model (previous tutorial): {model_per_galaxy.prior_count}") +print(f"Free parameters, scaling-relation model: {model.prior_count}") + +""" +The scaling-relation model is smaller. To isolate exactly what the relation saves, we compose one more variant: +identical to the scaling-relation model in every way, except each tied galaxy's `einstein_radius` is freed with +a uniform prior instead of tied. The difference in parameter count must equal the number of tied galaxies — +one saved `einstein_radius` each. +""" +freed_galaxies_list = [] + +for i in tied_indexes: + bulge = al.model_util.mge_model_from( + mask_radius=mask_radius, + total_gaussians=10, + centre=centres[i], + centre_fixed=centres[i], + sigma_min=dataset.pixel_scales[0] / 10.0, + ) + + mass = af.Model(al.mp.IsothermalSph) + mass.centre = centres[i] + mass.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=2.0) + + freed_galaxies_list.append( + af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass) + ) + +model_freed = af.Collection( + galaxies=af.Collection(lens=lens_anchor, source=source), + scaling_galaxies=af.Collection(freed_galaxies_list), +) + +print(f"\nGalaxies tied by the relation: {len(scaling_galaxies_list)}") +print(f"Free parameters, tier tied: {model.prior_count}") +print(f"Free parameters, tier freed: {model_freed.prior_count}") + +assert model_freed.prior_count - model.prior_count == len(scaling_galaxies_list) + +""" +__Scaling To Many Galaxies__ + +Saving one parameter looks modest — the point is what happens as the population grows. Below we imagine this +lens had twelve additional member galaxies (we invent centres on a ring and plausible luminosities; this model +is composed for counting only, **not** fitted — our dataset contains no such galaxies!). + +Each imagined member is mass-only (as in the previous tutorials, faint distant perturbers whose light is +negligible or outside the mask need no light model), with its Einstein radius tied to the anchor by the same +relation. We count the parameters of this 14-galaxy lens model, and of its nightmare per-galaxy twin. +""" +total_members = 12 + +member_centres = [ + (2.5 * float(np.sin(angle)), 2.5 * float(np.cos(angle))) + for angle in np.linspace(0.0, 2.0 * np.pi, total_members, endpoint=False) +] + +member_luminosities = [ + float(luminosity) for luminosity in np.linspace(0.05, 0.5, total_members) * luminosity_anchor +] + +members_tied_list = [] +members_freed_list = [] + +for centre, luminosity in zip(member_centres, member_luminosities): + mass_tied = af.Model(al.mp.IsothermalSph) + mass_tied.centre = centre + mass_tied.einstein_radius = ( + mass_anchor.einstein_radius + * (luminosity / luminosity_anchor) ** scaling_exponent + ) + + members_tied_list.append(af.Model(al.Galaxy, redshift=0.5, mass=mass_tied)) + + mass_freed = af.Model(al.mp.IsothermalSph) + mass_freed.centre = centre + mass_freed.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=2.0) + + members_freed_list.append(af.Model(al.Galaxy, redshift=0.5, mass=mass_freed)) + +model_many_tied = af.Collection( + galaxies=af.Collection(lens=lens_anchor, source=source), + scaling_galaxies=af.Collection(scaling_galaxies_list + members_tied_list), +) + +model_many_freed = af.Collection( + galaxies=af.Collection(lens=lens_anchor, source=source), + scaling_galaxies=af.Collection(scaling_galaxies_list + members_freed_list), +) + +print(f"Free parameters, 2-galaxy scaling model: {model.prior_count}") +print(f"Free parameters, 14-galaxy scaling model: {model_many_tied.prior_count}") +print(f"Free parameters, 14-galaxy per-galaxy-mass model: {model_many_freed.prior_count}") + +assert model_many_tied.prior_count == model.prior_count + +""" +Twelve more galaxies, zero more parameters. The tied model's dimensionality is *independent of the number of +galaxies* — this is the property that makes group- and cluster-scale lens modeling possible at all, and it is +why the assertion above is worth having in the script rather than in prose. +""" + +""" +__Model Fit__ + +We now fit the scaling-relation model to the data, using the familiar `Nautilus` search and `AnalysisImaging` +object. The parameter space is barely larger than a single-lens fit, which is the whole point. +""" +search = af.Nautilus( + path_prefix=Path("howtolens") / "chapter_4", + name="tutorial_3_scaling_relation", + unique_tag=dataset_name, + n_live=100, + n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations +) + +analysis = al.AnalysisImaging(dataset=dataset) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_3_scaling_relation" + " folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result = search.fit(model=model, analysis=analysis) + +print("The search has finished run - you may now continue the notebook.") + +""" +__Results__ + +In `result.info`, the tied galaxy has no `einstein_radius` entry of its own — it is reported as a derived +function of the anchor's, which is what a tied parameter looks like in the output. Its posterior uncertainty +comes entirely from the anchor's. +""" +print(result.info) + +aplt.subplot_fit_imaging(fit=result.max_log_likelihood_fit) + +""" +The fit is good — but we should ask *why* it is good, because the answer is the honest heart of this tutorial. + +The tied model can only fit well if the true galaxies actually lie close to the relation we imposed. We can +check, because this is simulated data and we know the truth. Below we compare the fainter galaxy's true Einstein +radius against the value the relation predicts from the anchor's true Einstein radius and the luminosity ratio. +""" +einstein_radii_true = [ + float(galaxy.mass.einstein_radius) for galaxy in lens_galaxies_true +] + +for i in tied_indexes: + einstein_radius_predicted = einstein_radii_true[anchor_index] * ( + (luminosities[i] / luminosity_anchor) ** scaling_exponent + ) + + print(f"Tied galaxy {i}: true einstein_radius = {einstein_radii_true[i]:.3f}") + print(f"Tied galaxy {i}: relation predicts = {einstein_radius_predicted:.3f}") + +""" +The prediction lands within a few percent of the truth: this simulated pair happens to sit almost exactly on the +Faber-Jackson relation. That is why the tied fit succeeds. Real galaxies are not always so obliging. + +__Limitations__ + +A scaling relation is an assumption, and it is worth being clear-eyed about what we assumed: + +**Scatter.** Faber-Jackson is a statistical relation with real intrinsic scatter — at fixed luminosity, +galaxies show a spread in velocity dispersion, and therefore in Einstein radius. A tied model has no freedom to +absorb this scatter: it asserts every member sits exactly on the relation. For a population of faint members +whose individual lensing effects are small, the errors average down and this is fine. For any single galaxy +that matters a lot to the fit, it is a risk. + +**Deviant members.** Worse than scatter is a member that is systematically off the relation — a tidally +stripped satellite that has lost dark matter but kept its stars, a galaxy with an unusual mass-to-light ratio, +or a misclassified foreground/background interloper assigned a luminosity at the wrong distance. Because the +tied model *cannot* adjust that one galaxy, the non-linear search compensates the only way it can: by biasing +the parameters it does control — the anchor's mass, the source — dragging the whole lens model away from the +truth. One bad member can poison an otherwise excellent fit, and nothing in the residuals will neatly point at +the culprit. + +**The anchor itself.** Anchoring on the brightest galaxy assumes the anchor sits on the relation too. If it is +the anomalous one, every tied galaxy inherits its anomaly. + +The defence against all three is **selective freedom**. The tiers can be mixed within one model: keep the long +tail of faint members tied, but promote any galaxy that is bright, close to the lensed images, or visibly +suspicious to its own free mass profile — exactly as the extra galaxies were treated earlier in this chapter. A +middle option bounds a member's free Einstein radius using its luminosity (free, but only within a factor of the +relation's prediction). And the relation itself can be loosened: freeing `scaling_exponent` as a fit parameter +costs a single dimension *for the entire population* and is a useful systematics test. The `autolens_workspace`'s +`imaging/features/scaling_relation` example shows all of these tiers working together. + +__Lens Environments__ + +Everything above was framed around lenses with multiple deflectors, but the same machinery solves a problem we +met at the start of this chapter: the **environment** of an ordinary single-galaxy lens. + +The first tutorial of this chapter modelled a couple of nearby galaxies individually, which was fine for two. +But a deep image of a real lens can reveal dozens of galaxies near the line of sight, each contributing a small +perturbation to the deflection field. Modeling them individually is hopeless; ignoring them entirely can bias +precision measurements. With a scaling relation they cost nothing: measure each galaxy's centre and luminosity +from the image, tie the lot to the main lens galaxy (which is the natural anchor — it is usually the brightest +galaxy in the field), and the model gains dozens of physically motivated perturbers with zero added parameters. + +__Wrap Up__ + +In this tutorial we learned: + +1. Luminosity predicts lensing mass, via mass-follows-light arguments and the Faber-Jackson relation + (`L ~ \sigma^4`, `\theta_E ~ \sigma^2`, hence `\theta_E ~ L^{0.5}`). + +2. A scaling relation replaces per-galaxy mass freedom with a shared relation anchored on a parameter the model + already fits, so tied galaxies add **zero** free parameters — verified by explicit parameter counting. + +3. Combined with MGE light profiles, a many-galaxy lens model stays low-dimensional: dimensionality is + independent of the number of galaxies. + +4. The relation is an assumption: scatter and deviant members can bias the whole model, and the remedy is + selective freedom — tie the faint majority, free the important few. + +5. The same machinery models the environments of single-lens systems, at no parameter cost. + +So far, we tied galaxy to galaxy. But the biggest lenses in the Universe — galaxy groups and clusters — contain +something the galaxies themselves cannot account for: a massive dark matter halo enveloping the whole system, +holding most of its mass. In the next tutorial we step up to group-scale lenses, where the scaling relation +becomes essential (there are simply too many member galaxies to free) and a dark matter halo joins the model as +a new component. There, we will also meet a different way to normalise the relation — a reference Einstein +radius at fixed magnitude, rather than an anchor galaxy — and truncated mass profiles, which describe members +whose outer dark matter has been tidally stripped by the very halo we are adding. +""" From ac8e91d60d0557c3f032c5e35cdd2f5c92f859aa Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:43:46 +0000 Subject: [PATCH 12/22] =?UTF-8?q?docs:=20write=20chapter=204=20tutorial=20?= =?UTF-8?q?4=20=E2=80=94=20group=20scale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Defines the group scale in LCDM terms (10^13-10^14 Msun halo, BGG, the blurry multi-galaxy/group boundary), introduces tidal truncation and the dPIE mass profile parameter-by-parameter, shows a fit.py-style fit and the effect of adding a group-scale halo, then models members individually and through a scaling relation. Frames group scale as the sweet spot where galaxy-scale tools (including pixelized sources) still work at low dimensionality. Backed by a new group simulator whose members exactly obey the scaling relation. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_4_group_scale.py | 626 ++++++++++++++++++ scripts/simulator/group.py | 310 +++++++++ 2 files changed, 936 insertions(+) create mode 100644 scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py create mode 100644 scripts/simulator/group.py diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py b/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py new file mode 100644 index 0000000..f47fa9f --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py @@ -0,0 +1,626 @@ +""" +Tutorial 4: Group Scale +======================= + +In the previous tutorials we took our first steps beyond the single lens galaxy: we included extra galaxies near +the lens in the model, we modeled systems where two or more galaxies of comparable mass share the lensing, and we +introduced scaling relations, which tie the mass of a galaxy to its light so that adding more galaxies to a model +does not mean adding more free parameters. + +In this tutorial we put all of those tools together and take the first big step up the "regime ladder" of strong +lensing: the **group scale**. + +In the standard cosmological model (Lambda Cold Dark Matter, or LCDM), galaxies do not live in isolation. They +form and evolve inside "dark matter halos", and these halos are themselves nested: small halos hosting single +galaxies merge and fall into larger halos hosting many. A **galaxy group** is the next rung above a single +galaxy in this hierarchy: a dark matter halo of roughly 10^13 to 10^14 solar masses hosting anywhere from a +handful to a few dozen galaxies. (Our own Milky Way lives in such a structure, the Local Group.) Above groups +sit **galaxy clusters**, halos of 10^14 solar masses and beyond hosting hundreds or thousands of galaxies, which +are the subject of the next tutorial. + +When a group acts as a strong lens, several of its galaxies contribute significantly to the deflection of the +source's light. The brightest galaxy of the group -- called the brightest group galaxy (BGG), or the brightest +cluster galaxy (BCG) at cluster scale -- typically sits near the centre of the group's dark matter halo and +dominates the lensing. The other group members perturb the lensed image around it. The group's shared dark +matter halo may also enter the mass model as its own component, often centred on the BGG where one exists -- +though as we will see, whether it is needed is an explicit modelling choice, not an automatic ingredient. + +__Groups vs Multi-Galaxy Lenses__ + +You may now be wondering how a "group-scale lens" differs from the multi-galaxy lenses of the previous tutorials, +and the honest answer is that the line between them is **blurry**. Every group is a multi-galaxy lens: it has +multiple galaxies whose mass matters for the lensing. But not every multi-galaxy lens is a group: two galaxies of +comparable mass that happen to sit close on the sky (or are mid-merger) share the lensing without being embedded +in a massive shared halo with a member population. + +The physically meaningful distinction is the **environment**: a group has a shared dark matter halo, a dominant +central galaxy, and members orbiting inside the host's potential. That environment leaves signatures in the mass +model, and the most important one is **tidal truncation**, which we introduce below. + +__Tidal Truncation and the dPIE Profile__ + +A galaxy orbiting inside a group does not keep its full dark matter halo. The tidal field of the host group +strips the outer, loosely bound parts of the member's halo, so the member's mass distribution is cut off -- or +"truncated" -- at a finite radius. The isothermal profiles we have used so far are a poor description of this: +their density falls as 1/r^2 forever, so their total mass diverges with radius. + +The standard truncated profile of group- and cluster-scale lensing is the **dPIE** (dual Pseudo-Isothermal +Elliptical) profile, available in **PyAutoLens** as `al.mp.dPIEMassSph`. It behaves isothermally at intermediate +radii but its density falls off much more steeply beyond a truncation radius, giving it a finite total mass -- +exactly the behaviour we expect for a tidally stripped group member. + +__Contents__ + +- **Initial Setup:** Load the simulated group-scale dataset (auto-simulating it if absent) and plot it. +- **Mask:** Define the 2D mask, which is larger than at galaxy scale because the group spans more sky. +- **Galaxy Centres:** Load the centres of the BGG and member galaxies from .json files. +- **The dPIE Profile:** Introduce the truncated dPIE mass profile and its parameters. +- **Fitting a Group:** Fit the data with a tracer containing the BGG, members and source. +- **A Group Halo?:** Add a group-scale dark matter halo to the tracer and see how it changes the fit. +- **Model Fit:** Compose and fit a group-scale lens model with individually modeled members. +- **Scaling Relation Members:** Tie the members' masses to their light so they cost almost no parameters. +- **The Group Scale Sweet Spot:** Why groups are the sweet spot of the familiar lens modeling toolkit. +- **Wrap Up:** Summary of the script and next steps. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +import matplotlib.pyplot as plt +import numpy as np +from pathlib import Path + +import autofit as af +import autolens as al +import autolens.plot as aplt + +""" +__Initial Setup__ + +We begin by loading the group-scale strong lens dataset `simple`, which was simulated with: + + - A main lens galaxy (the BGG) at (0.0", 0.0"), with a `SersicSph` light profile and an `IsothermalSph` mass + profile with a 4.0" Einstein radius. + - Two member galaxies at (3.5", 2.5") and (-4.4", -5.0"), with `SersicSph` light profiles and tidally + truncated `dPIEMassSph` mass profiles. + - A single source galaxy with a `SersicCore` light profile. +""" +dataset_name = "simple" +dataset_path = Path("dataset") / "group" / dataset_name + +""" +__Dataset Auto-Simulation__ + +If the dataset does not already exist on your system, it will be created by running the corresponding +simulator script. This ensures that all example scripts can be run without manually simulating data first. +""" +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/group.py"], + check=True, + ) + +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +""" +When we plot the dataset, the difference from a galaxy-scale lens is immediately clear: the lensed arcs form a +much larger ring (the BGG's Einstein radius is 4.0", compared to the ~1.0" typical of a single galaxy), and two +smaller galaxies are visible away from the centre. Their light -- and, more importantly for the lensing, their +mass -- must be included in our analysis. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Mask__ + +We define a 7.5" circular mask, much larger than the 2.5"-3.0" masks of previous chapters. It must enclose the +full lensed arc system and the member galaxies, because all of them contribute light and mass to the region we +fit. +""" +mask_radius = 7.5 + +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=mask_radius, +) + +dataset = dataset.apply_mask(mask=mask) + +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Galaxy Centres__ + +Following the convention of the previous tutorials, the centres of the galaxies are loaded from .json files in +the dataset folder. For a group we distinguish two categories: + + - `main_lens_centres`: the main lens galaxies -- here just the BGG at (0.0", 0.0") -- which are modeled with + full freedom. + + - `member_centres`: the group members, which are modeled with restrictive assumptions (fixed centres, and + later a scaling relation) to keep the model dimensionality low. + +For real data these centres come from the observed light of each galaxy (e.g. via a click-based GUI or a +photometry catalogue), exactly as for the extra galaxies of the earlier tutorials. +""" +main_lens_centres = al.from_json(file_path=dataset_path / "main_lens_centres.json") + +member_centres = al.from_json(file_path=dataset_path / "extra_galaxies_centres.json") + +print(f"Main lens centres: {main_lens_centres}") +print(f"Member centres: {member_centres}") + +""" +__The dPIE Profile__ + +Before fitting anything, lets get to know the dPIE profile, since it is the workhorse mass profile of the group +and cluster regimes. + +The `dPIEMassSph` profile is parameterized in the convention of Lenstool (a long-established cluster lensing +code), which differs from the profiles we have met so far: + + - `sigma`: the fiducial velocity dispersion of the galaxy in km/s. This sets the overall lensing strength, + playing the role the `einstein_radius` played for the isothermal profile (for an isothermal sphere the two + are directly related: a bigger velocity dispersion means a bigger Einstein radius). + + - `r_core`: the core radius in arcseconds, within which the density profile flattens. It is common to fix + `r_core = 0.0` (a "vanishing core", where the profile has an exact analytic form), which we do throughout + this tutorial. + + - `r_cut`: the truncation radius in arcseconds -- the key new parameter. Outside `r_cut` the density falls off + steeply (as 1/r^4 rather than the isothermal 1/r^2), encoding the tidal stripping of the member's outer dark + matter halo and giving the profile a finite total mass. + + - `redshift_object`, `redshift_source`, `H0`, `Om0`: because `sigma` is a physical velocity, converting it to + deflection angles requires the lensing geometry and a cosmology. These are fixed inputs describing the lens + system, not parameters we fit. + +Lets make two dPIE profiles with identical `sigma` but different truncation radii -- one truncated at 8.0" and +one truncated so far out (1000.0") that it is effectively untruncated -- and compare their convergence profiles. +""" +dpie_truncated = al.mp.dPIEMassSph( + centre=(0.0, 0.0), + sigma=200.0, + r_core=0.0, + r_cut=8.0, + redshift_object=0.5, + redshift_source=1.0, +) + +dpie_untruncated = al.mp.dPIEMassSph( + centre=(0.0, 0.0), + sigma=200.0, + r_core=0.0, + r_cut=1000.0, + redshift_object=0.5, + redshift_source=1.0, +) + +""" +We evaluate the convergence of both profiles on a 1D line of radial coordinates, using a `Grid2DIrregular` so we +can choose the radii ourselves. +""" +radii = np.linspace(0.01, 20.0, 200) + +radial_grid = al.Grid2DIrregular([(0.0, radius) for radius in radii]) + +convergence_truncated = dpie_truncated.convergence_2d_from(grid=radial_grid) +convergence_untruncated = dpie_untruncated.convergence_2d_from(grid=radial_grid) + +plt.semilogy(radii, np.asarray(convergence_truncated), label="dPIE (r_cut = 8.0)") +plt.semilogy(radii, np.asarray(convergence_untruncated), label="dPIE (untruncated)") +plt.axvline(x=8.0, color="k", linestyle="--", label="r_cut") +plt.xlabel("Radius (arcseconds)") +plt.ylabel("Convergence") +plt.legend() +plt.show() +plt.close() + +""" +Inside `r_cut` the two profiles are nearly identical -- both behave isothermally. Beyond `r_cut`, the truncated +profile's convergence plummets while the untruncated one keeps its shallow isothermal decline. The truncated +member therefore contributes far less mass at large radii, which is exactly what tidal stripping does. + +This is why the dPIE, and not the isothermal profile, is the standard choice for group and cluster members: the +extra galaxies of a galaxy-scale lens have no host environment stripping them, so untruncated isothermal +profiles are fine there, but a member orbiting inside a shared group halo is physically truncated whether or +not the model includes that halo as an explicit component. + +For scale: a member with `sigma = 200.0` km/s at these redshifts has an Einstein radius of ~0.7", roughly a +fifth of the BGG's -- a perturber, not a co-dominant lens. + +__Fitting a Group__ + +Now lets fit the data. Following the fitting tutorials of earlier chapters, we first build a tracer from +galaxies whose light and mass profiles match the true values used to simulate the data, and fit it with the +`FitImaging` object. + +The tracer contains four galaxies: the BGG, the two members and the source. The fit handles all of them +simultaneously, summing the deflection field of every mass profile to ray-trace the source's light. +""" +bgg = al.Galaxy( + redshift=0.5, + bulge=al.lp.SersicSph( + centre=(0.0, 0.0), intensity=0.7, effective_radius=2.0, sersic_index=4.0 + ), + mass=al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=4.0), +) + +member_0 = al.Galaxy( + redshift=0.5, + bulge=al.lp.SersicSph( + centre=(3.5, 2.5), intensity=0.9, effective_radius=0.8, sersic_index=3.0 + ), + mass=al.mp.dPIEMassSph( + centre=(3.5, 2.5), + sigma=200.0, + r_core=0.0, + r_cut=8.0, + redshift_object=0.5, + redshift_source=1.0, + ), +) + +member_1 = al.Galaxy( + redshift=0.5, + bulge=al.lp.SersicSph( + centre=(-4.4, -5.0), intensity=1.866, effective_radius=0.8, sersic_index=3.0 + ), + mass=al.mp.dPIEMassSph( + centre=(-4.4, -5.0), + sigma=240.0, + r_core=0.0, + r_cut=13.3, + redshift_object=0.5, + redshift_source=1.0, + ), +) + +source = al.Galaxy( + redshift=1.0, + bulge=al.lp.SersicCore( + centre=(0.0, 0.1), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0), + intensity=3.0, + effective_radius=0.4, + sersic_index=1.0, + ), +) + +tracer = al.Tracer(galaxies=[bgg, member_0, member_1, source]) + +fit = al.FitImaging(dataset=dataset, tracer=tracer) + +aplt.subplot_fit_imaging(fit=fit) + +""" +Because this is the true model, the residuals are consistent with noise and the log likelihood is as high as it +can be for this dataset. Note that nothing about the `FitImaging` object changed: the same fitting machinery we +learnt at galaxy scale simply receives a tracer with more galaxies in it. +""" +print(f"Log likelihood of the true model: {fit.log_likelihood}") + +""" +__A Group Halo?__ + +You may have noticed that the model above contains no group-scale dark matter halo, despite this tutorial +opening with the statement that a group is defined by one. Two things are going on here. + +First, the BGG's `IsothermalSph` has a 4.0" Einstein radius -- far larger than the ~1.0" of an isolated galaxy +of its luminosity. A mass profile centred on the BGG cannot tell "stars and dark matter belonging to the BGG" +apart from "group dark matter centred on the BGG": a single isothermal profile at the group centre soaks up +both. So the group's halo is partly hidden inside the BGG's mass profile already. + +Second, whether to add a *separate* halo component to the model is an **explicit modelling choice**, and this +dataset was deliberately simulated without one. Lets see what happens if we add one anyway. We add a fifth +galaxy carrying only mass -- an `IsothermalSph` centred on the BGG, the conventional choice for a group halo +where a BGG exists -- and refit. +""" +group_halo = al.Galaxy( + redshift=0.5, + mass=al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=1.5), +) + +tracer_with_halo = al.Tracer(galaxies=[bgg, group_halo, member_0, member_1, source]) + +fit_with_halo = al.FitImaging(dataset=dataset, tracer=tracer_with_halo) + +aplt.subplot_fit_imaging(fit=fit_with_halo) + +""" +The fit is now visibly worse -- the extra 1.5" Einstein radius of mass at the centre over-deflects the source's +light, displacing the model arcs from the observed ones -- and the log likelihood drops accordingly. +""" +print(f"Log likelihood with a group halo added: {fit_with_halo.log_likelihood}") + +""" +On real data the same experiment runs in reverse: fit the group with and without an explicit halo component and +let the data decide (via the residuals and the Bayesian evidence introduced in earlier chapters). Some groups +are well described by their galaxies alone, with the central galaxy's profile absorbing the halo; others -- +typically those with the largest Einstein radii or image configurations no galaxy-mass model can reproduce -- +require a dominant halo component, often centred on the BGG. + +__Model Fit__ + +We now perform a proper model-fit with a non-linear search, as a scientist would for a group whose true +parameters are unknown. We compose the model as follows: + + - The BGG's light is a linear `SersicSph` (its centre free) and its mass an `IsothermalSph` [7 parameters]. + + - Each member's light is a linear `SersicSph` with its centre fixed to the observed centre, and its mass a + `dPIEMassSph` with a free `sigma`, its centre fixed, `r_core = 0.0` and `r_cut` fixed to a fiducial 10.0" + [3 parameters per member, 6 total]. + + - The source's light is a linear `SersicCore` [6 parameters]. + +Fixing the member centres to their observed light and fixing `r_cut` follows the reasoning of the extra +galaxies tutorial: the data rarely constrains a perturber's truncation radius, so we spend our parameter budget +on the quantity that matters most -- each member's overall mass, via `sigma`. The redshifts and cosmology of +the dPIE are pinned to their known values, since they are properties of the lens system, not parameters to +sample. +""" +# BGG: + +bulge = af.Model(al.lp_linear.SersicSph) + +mass = af.Model(al.mp.IsothermalSph) + +bgg_model = af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass) + +# Member Galaxies: + +member_list = [] + +for centre in member_centres: + + bulge = af.Model(al.lp_linear.SersicSph) + bulge.centre = (centre[0], centre[1]) + + mass = af.Model(al.mp.dPIEMassSph) + mass.centre = (centre[0], centre[1]) + mass.sigma = af.UniformPrior(lower_limit=0.0, upper_limit=300.0) + mass.r_core = 0.0 # vanishing core -- fixed; the dPIE is analytic at r_core = 0 + mass.r_cut = 10.0 # truncation fixed at a fiducial radius + mass.redshift_object = 0.5 + mass.redshift_source = 1.0 + mass.H0 = 67.66 # pinned: model constants, not parameters to sample + mass.Om0 = 0.30966 + + member_list.append(af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass)) + +# Source: + +source_model = af.Model(al.Galaxy, redshift=1.0, bulge=af.Model(al.lp_linear.SersicCore)) + +# Overall Lens Model: + +model = af.Collection( + galaxies=af.Collection(lens=bgg_model, source=source_model), + extra_galaxies=af.Collection(member_list), +) + +""" +Printing the model's `info` confirms its composition: the BGG and source under `galaxies`, and the two members +under `extra_galaxies` with only their `sigma`, `effective_radius` and `sersic_index` free. + +The total number of free parameters is N=19 -- take note of this number, as it is central to the discussion at +the end of this tutorial. +""" +print(model.info) + +print(f"Total free parameters: {model.prior_count}") + +""" +Before fitting, we set up the adaptive over-sampling scheme at the centre of every galaxy in the group (not +just the BGG), following the standard workspace approach. As in previous tutorials, the details are not +important yet -- just note that at group scale every galaxy centre needs it. +""" +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=dataset.grid, + sub_size_list=[4, 2, 2], + radial_list=[0.3, 0.6], + centre_list=list(main_lens_centres) + list(member_centres), +) + +dataset = dataset.apply_over_sampling(over_sample_size_lp=over_sample_size) + +""" +We fit the model with the `Nautilus` non-linear search, using the same `AnalysisImaging` object as every +imaging fit so far -- another sign that the group scale does not require new machinery. +""" +search = af.Nautilus( + path_prefix=Path("howtolens") / "chapter_4", + name="tutorial_4_group_scale", + unique_tag=dataset_name, + n_live=100, + n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations +) + +analysis = al.AnalysisImaging(dataset=dataset) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_4_group_scale" + " folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result = search.fit(model=model, analysis=analysis) + +print("The search has finished run - you may now continue the notebook.") + +""" +The result's `info` and maximum likelihood fit show the model recovers the group: the BGG's Einstein radius, +the members' velocity dispersions and the source's properties are all inferred from the data. +""" +print(result.info) + +aplt.subplot_fit_imaging(fit=result.max_log_likelihood_fit) + +""" +__Scaling Relation Members__ + +The model above gave every member its own free `sigma`. With two members that costs two parameters -- harmless. +But groups can host dozens of members, and one free mass parameter per member quickly bloats the model, slows +the search, and asks the data to constrain masses it barely feels individually. + +The previous tutorial's solution applies directly here: tie the members' masses to their light through a +scaling relation. More luminous galaxies are more massive, so we write each member's `sigma` and `r_cut` as +power laws of its luminosity, normalized by a single shared free parameter: + + - `sigma = sigma_ref * (L / L_ref) ** 0.25` + - `r_cut = r_cut_ref * (L / L_ref) ** 0.7` + +These exponents follow the convention of modern cluster lensing analyses, and `L_ref` is a fixed reference +luminosity. Now the *entire member population's mass* costs one free parameter (`sigma_ref`), no matter how +many members the group has, and each member's observed luminosity acts as a physically motivated prior on its +mass. + +For real data the luminosities come from your photometry catalogue (only luminosity ratios enter the model, so +any consistent units work). Here we compute them from the true member light profiles, using an aperture +luminosity within 3.0". +""" +luminosity_list = [ + member_0.bulge.luminosity_within_circle_from(radius=3.0), + member_1.bulge.luminosity_within_circle_from(radius=3.0), +] + +print(f"Member luminosities: {luminosity_list}") + +reference_luminosity = luminosity_list[0] + +sigma_ref = af.UniformPrior(lower_limit=0.0, upper_limit=300.0) +r_cut_ref = 8.0 # fixed, like r_cut in the previous model + +member_list = [] + +for centre, luminosity in zip(member_centres, luminosity_list): + + luminosity_ratio = float(luminosity) / float(reference_luminosity) + + bulge = af.Model(al.lp_linear.SersicSph) + bulge.centre = (centre[0], centre[1]) + + mass = af.Model(al.mp.dPIEMassSph) + mass.centre = (centre[0], centre[1]) + mass.sigma = sigma_ref * luminosity_ratio**0.25 + mass.r_core = 0.0 + mass.r_cut = r_cut_ref * luminosity_ratio**0.7 + mass.redshift_object = 0.5 + mass.redshift_source = 1.0 + mass.H0 = 67.66 + mass.Om0 = 0.30966 + + member_list.append(af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass)) + +model = af.Collection( + galaxies=af.Collection(lens=bgg_model, source=source_model), + extra_galaxies=af.Collection(member_list), +) + +""" +The model's `info` shows that both members' `sigma` values now trace back to the single shared `sigma_ref` +prior, and the parameter count has dropped to N=18. + +A drop of one parameter looks unremarkable -- until you scale it up. A group with 20 members modeled +individually would need 20 free mass parameters; with the scaling relation it still needs exactly one. (In +practice the members' light is handled the same way, using the Multi Gaussian Expansion from earlier in the +lectures, whose fixed-centre members add almost no free parameters either -- so entire member populations can +be added to a group model almost for free.) + +This dataset was in fact simulated with members that obey this exact scaling relation, so the model remains the +true model. +""" +print(model.info) + +print(f"Total free parameters: {model.prior_count}") + +""" +We fit this model with an identical search set up. +""" +search = af.Nautilus( + path_prefix=Path("howtolens") / "chapter_4", + name="tutorial_4_group_scale_scaling_relation", + unique_tag=dataset_name, + n_live=100, + n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations +) + +print( + "The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/" + "tutorial_4_group_scale_scaling_relation folder for live output of the results, images and model." + " This Jupyter notebook cell with progress once search has completed - this could take some time!" +) + +result_scaling = search.fit(model=model, analysis=analysis) + +print("The search has finished run - you may now continue the notebook.") + +print(result_scaling.info) + +aplt.subplot_fit_imaging(fit=result_scaling.max_log_likelihood_fit) + +""" +__The Group Scale Sweet Spot__ + +Step back and consider what this tutorial did *not* require: no new fitting machinery, no new analysis object, +no new data format. The `FitImaging`, `AnalysisImaging`, linear light profiles and `Nautilus` search of the +galaxy-scale chapters handled the group unchanged -- we just put more galaxies in the tracer, reached for the +truncated dPIE profile, and used scaling relations to keep the member population cheap. Even the pixelized +source reconstructions of the previous chapter work at group scale exactly as they do at galaxy scale, and for +real groups with complex arcs they are the recommended source model. + +This is why the group scale is the **sweet spot** of strong lens modeling. The full toolkit of galaxy-scale +modeling still applies, and the model dimensionality stays low: our individually-modeled-member fit had N=19 +free parameters and the scaling-relation fit N=18. Real group models are of this order -- a few tens of free +parameters at most (N < 30 or so) -- comfortably within reach of the non-linear searches we already know, with +run times of minutes to hours. + +Push the system any richer, however, and this toolkit breaks down. A cluster hosts hundreds of members and +lenses many sources at once; its image is too large and complex to fit pixel-by-pixel with a tracer's light +model, and its model would need hundreds of parameters. Cluster-scale modeling therefore switches to a +different tool set -- fitting the *positions* of the multiple images of many point-like sources, with member +catalogues driving the mass model -- which is the subject of the next tutorial. + +__Wrap Up__ + +In this tutorial, we took the tools of the previous tutorials to the group scale. Lets recap what we learnt: + +- **Groups in LCDM**: A galaxy group is a dark matter halo of roughly 10^13 to 10^14 solar masses hosting a + handful to a few dozen galaxies, with the brightest group galaxy (BGG) typically near its centre. The group's + halo may enter the mass model as its own component, often centred on the BGG -- but whether it is needed is + an explicit modelling choice, tested by fitting with and without it. + +- **Groups vs multi-galaxy lenses**: The line is blurry. All groups are multi-galaxy lenses, but not all + multi-galaxy lenses are groups -- the group's defining feature is the shared halo environment its members + orbit within. + +- **Tidal truncation and the dPIE**: Members orbiting in the group's potential have their outer dark matter + tidally stripped, so their profiles are truncated. The `dPIEMassSph` profile encodes this via its `r_cut` + truncation radius, with `sigma` setting the lensing strength and `r_core` the (usually vanishing) core. + +- **Fitting and modeling groups**: The galaxy-scale machinery works unchanged -- a tracer with more galaxies, + members with fixed centres and free `sigma`, and a `Nautilus` search over N=19 parameters. + +- **Scaling relations**: Tying member `sigma` and `r_cut` to luminosity via power laws with one shared free + normalization means the whole member population costs a single parameter, however many members there are. + +- **The sweet spot**: Groups are the largest systems the familiar toolkit -- including pixelized source + reconstruction -- still handles, with model dimensionality staying below a few tens of parameters. + +In the next tutorial we climb the final rung of the ladder to galaxy clusters, where tens to hundreds of member +galaxies lens many sources simultaneously. There the toolkit changes: we will model the positions of multiply +imaged point sources rather than every pixel of the data, and drive the mass model from member catalogues via +a csv interface built on the same scaling relations we used here. +""" diff --git a/scripts/simulator/group.py b/scripts/simulator/group.py new file mode 100644 index 0000000..f65dc76 --- /dev/null +++ b/scripts/simulator/group.py @@ -0,0 +1,310 @@ +""" +Simulator: Group Scale Lens +=========================== + +This script simulates `Imaging` of a 'group-scale' strong lens, which is used in chapter 4 of the **HowToLens** +lectures to illustrate lens modeling at the group scale. + +The group consists of a single main lens galaxy -- the brightest group galaxy (BGG) -- and two smaller member +galaxies nearby, whose mass contributes significantly to the ray-tracing and is therefore included in the strong +lens model. A single source galaxy is lensed by the combined mass of all three galaxies. + +__Model__ + +This script simulates `Imaging` of a 'group-scale' strong lens where: + + - The main lens galaxy's light is a `SersicSph` and its total mass distribution is an `IsothermalSph`. + - The two member galaxies have `SersicSph` light profiles and tidally truncated `dPIEMassSph` mass profiles. + - The source galaxy's light is a `SersicCore`. + +The member galaxies are simulated to follow the light-mass scaling relation used in the group-scale modeling +tutorial: `sigma = sigma_ref * (L / L_ref) ** 0.25` and `r_cut = r_cut_ref * (L / L_ref) ** 0.7`, where `L` is +each member's luminosity. The second member is 2.07 times more luminous than the first, so its velocity +dispersion is 1.2 times higher (240 km/s vs 200 km/s) and its truncation radius 1.67 times larger. + +__Contents__ + +- **Dataset Paths:** The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a. +- **Grid:** Define the 2D grid of (y,x) coordinates the simulated image is evaluated on. +- **Galaxy Centres:** Define the centres of the main lens galaxy and member galaxies. +- **Over Sampling:** Set up the adaptive over-sampling scheme, centred on every galaxy in the group. +- **PSF / Simulator:** The Point Spread Function and simulator defining the observational properties of the data. +- **Main Lens Galaxy:** The brightest group galaxy (BGG) at the origin (0.0", 0.0"). +- **Member Galaxies:** The two smaller group members, with tidally truncated `dPIEMassSph` mass profiles. +- **Source Galaxy:** The source galaxy whose lensed image we simulate. +- **Ray Tracing:** Use all galaxies to set up a tracer, which generates the image that is simulated. +- **Output:** Output the simulated dataset to the dataset path as .fits files. +- **Visualize:** Output a subplot of the simulated dataset and the tracer's quantities to the dataset path. +- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file. +- **Centre JSON Files:** Save the centres of the main lens galaxy and member galaxies as .json files. +- **Positions:** Solve for the multiple-image positions of the lensed source and save them as a .json file. + +__Start Here Notebook__ + +If any code in this script is unclear, refer to the `autolens_workspace/*/group/simulator.ipynb` notebook. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +from pathlib import Path +import autolens as al +import autolens.plot as aplt + +""" +__Dataset Paths__ + +The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a descriptive name. + +The dataset is output to `dataset/group/simple`. +""" +dataset_type = "group" +dataset_name = "simple" +dataset_path = Path("dataset", dataset_type, dataset_name) + +""" +__Grid__ + +Define the 2D grid of (y,x) coordinates the simulated image is evaluated on. + +A group-scale lens spans a wider area of sky than a galaxy-scale lens, because it contains multiple lens +galaxies which are separated by many arc-seconds. The grid is therefore larger (250 x 250 pixels, or 25.0") +than those used in previous chapters. +""" +grid = al.Grid2D.uniform( + shape_native=(250, 250), + pixel_scales=0.1, +) + +""" +__Galaxy Centres__ + +Define the centres of the main lens galaxy and member galaxies. These are used for over-sampling and are also +output to .json files so that the modeling tutorial can load them. +""" +main_lens_centres = [(0.0, 0.0)] +member_centres = [(3.5, 2.5), (-4.4, -5.0)] + +""" +__Over Sampling__ + +Over sampling evaluates the light profiles on a higher resolution grid in their bright central regions, to +ensure the calculation is accurate. + +The adaptive over-sampling scheme below is applied at the centre of every galaxy in the group, not just the +main lens galaxy. +""" +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=grid, + sub_size_list=[32, 8, 2], + radial_list=[0.3, 0.6], + centre_list=main_lens_centres + member_centres, +) + +grid = grid.apply_over_sampling(over_sample_size=over_sample_size) + +""" +__PSF / Simulator__ + +Simulate a simple Gaussian PSF for the image, and create the simulator for the imaging data, which defines the +exposure time, background sky, noise levels and psf. +""" +psf = al.Convolver.from_gaussian( + shape_native=(11, 11), sigma=0.1, pixel_scales=grid.pixel_scales +) + +simulator = al.SimulatorImaging( + exposure_time=300.0, + psf=psf, + background_sky_level=0.1, + add_poisson_noise_to_data=True, +) + +""" +__Main Lens Galaxy__ + +The main lens galaxy is the brightest group galaxy (BGG), located at the origin (0.0", 0.0"). It has a spherical +Sersic light profile and an isothermal mass profile with a large Einstein radius of 4.0", reflecting that it +dominates the mass of the group. +""" +lens_galaxy = al.Galaxy( + redshift=0.5, + bulge=al.lp.SersicSph( + centre=(0.0, 0.0), intensity=0.7, effective_radius=2.0, sersic_index=4.0 + ), + mass=al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=4.0), +) + +""" +__Member Galaxies__ + +The two member galaxies are smaller galaxies orbiting within the group. They have spherical Sersic light +profiles and tidally truncated `dPIEMassSph` mass profiles (vanishing core `r_core = 0.0` and a finite +truncation radius `r_cut`), reflecting that their outer dark matter has been stripped by the tides of the +group's potential. + +The members follow the light-mass scaling relation used in the modeling tutorial: the second member is 2.07 +times more luminous than the first (`intensity` of 1.866 vs 0.9, with identical `effective_radius` and +`sersic_index`), so its `sigma` is a factor 2.07 ** 0.25 = 1.2 higher (240 km/s vs 200 km/s) and its `r_cut` +a factor 2.07 ** 0.7 = 1.67 larger (13.3" vs 8.0"). + +The `dPIEMassSph` profile is parameterized in Lenstool's native convention -- `sigma` (fiducial velocity +dispersion, km/s), `r_core` and `r_cut` (arcsec) -- and converts these to a lensing strength internally using +the object/source redshifts and cosmology (`H0` / `Om0`, which default to Planck-like values). +""" +member_galaxy_0 = al.Galaxy( + redshift=0.5, + bulge=al.lp.SersicSph( + centre=(3.5, 2.5), intensity=0.9, effective_radius=0.8, sersic_index=3.0 + ), + mass=al.mp.dPIEMassSph( + centre=(3.5, 2.5), + sigma=200.0, + r_core=0.0, + r_cut=8.0, + redshift_object=0.5, + redshift_source=1.0, + ), +) + +member_galaxy_1 = al.Galaxy( + redshift=0.5, + bulge=al.lp.SersicSph( + centre=(-4.4, -5.0), intensity=1.866, effective_radius=0.8, sersic_index=3.0 + ), + mass=al.mp.dPIEMassSph( + centre=(-4.4, -5.0), + sigma=240.0, + r_core=0.0, + r_cut=13.3, + redshift_object=0.5, + redshift_source=1.0, + ), +) + +member_galaxies = [member_galaxy_0, member_galaxy_1] + +""" +__Source Galaxy__ + +The source galaxy whose lensed image we simulate. It uses a cored Sersic profile, whose light changes gradually +in its central regions and can therefore be evaluated accurately without adaptive over-sampling. +""" +source_galaxy = al.Galaxy( + redshift=1.0, + bulge=al.lp.SersicCore( + centre=(0.0, 0.1), + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0), + intensity=3.0, + effective_radius=0.4, + sersic_index=1.0, + ), +) + +""" +__Ray Tracing__ + +Use all galaxies to set up a tracer, which will generate the image for the simulated `Imaging` dataset. + +The tracer combines the main lens galaxy, the member galaxies and the source galaxy. +""" +tracer = al.Tracer(galaxies=[lens_galaxy] + member_galaxies + [source_galaxy]) + +""" +Lets look at the tracer`s image, this is the image we'll be simulating. +""" +aplt.plot_array(array=tracer.image_2d_from(grid=grid), title="Image") + +""" +Pass the simulator a tracer, which creates the image which is simulated as an imaging dataset. +""" +dataset = simulator.via_tracer_from(tracer=tracer, grid=grid) + +""" +Plot the simulated `Imaging` dataset before outputting it to fits. +""" +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Output__ + +Output the simulated dataset to the dataset path as .fits files. +""" +aplt.fits_imaging( + dataset=dataset, + data_path=dataset_path / "data.fits", + psf_path=dataset_path / "psf.fits", + noise_map_path=dataset_path / "noise_map.fits", + overwrite=True, +) + +""" +__Visualize__ + +Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset path as .png files. +""" +aplt.subplot_imaging_dataset(dataset=dataset) +aplt.plot_array(array=dataset.data, title="Data") + +aplt.subplot_tracer( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) +aplt.subplot_galaxies_images( + tracer=tracer, grid=grid, output_path=dataset_path, output_format="png" +) + +""" +__Tracer json__ + +Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and +galaxies are safely stored and available to check how the dataset was simulated in the future. + +This can be loaded via the method `tracer = al.from_json()`. +""" +al.output_to_json( + obj=tracer, + file_path=Path(dataset_path, "tracer.json"), +) + +""" +__Centre JSON Files__ + +Save the centres of the main lens galaxy and member galaxies as .json files. These are loaded by the group-scale +modeling tutorial to set up the lens model (e.g. fixing the centres of the member galaxies). +""" +al.output_to_json( + obj=al.Grid2DIrregular(main_lens_centres), + file_path=Path(dataset_path, "main_lens_centres.json"), +) + +al.output_to_json( + obj=al.Grid2DIrregular(member_centres), + file_path=Path(dataset_path, "extra_galaxies_centres.json"), +) + +""" +__Positions__ + +Solve for the multiple-image positions of the lensed source galaxy, which can be used as input to group-scale +modeling to help the non-linear search converge (and are the primary observable of cluster-scale modeling, +introduced in the next chapter 4 tutorial). +""" +solver = al.PointSolver.for_grid( + grid=al.Grid2D.uniform(shape_native=(500, 500), pixel_scales=0.1), + pixel_scale_precision=0.001, + magnification_threshold=0.01, +) + +positions = solver.solve( + tracer=tracer, source_plane_coordinate=source_galaxy.bulge.centre +) + +al.output_to_json( + obj=positions, + file_path=dataset_path / "positions.json", +) + +""" +The dataset can be viewed in the folder `dataset/group/simple`. +""" From 5d8a42cd04e7c359fd544d50244bcd381b64dc7d Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:53:49 +0000 Subject: [PATCH 13/22] =?UTF-8?q?docs:=20chapter=203=20pixelizations=20?= =?UTF-8?q?=E2=80=94=20renumber,=20clean=20up,=20add=20the=20Bayesian=20fo?= =?UTF-8?q?rmalism=20lecture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New tutorial_5_bayesian_formalism collects the pixelized-source linear algebra in one place (mapping and blurred mapping matrices, data vector, curvature and regularization matrices, the regularized solve and all five log-evidence terms, computed live against the chapter's dataset). The other twelve tutorials get their new numbers, chapter references matching the restructure, light algebraic framing that defers derivations to tutorial 5, and prose cleanup. tutorial_6_borders' cap-induced failure is fixed (dead sub-border assignments removed) and its NEEDS_FIX skip is dropped from no_run.yaml. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- config/build/no_run.yaml | 7 - .../tutorial_10_fit_problems.py | 34 +- .../tutorial_11_brightness_adaption.py | 12 +- .../tutorial_12_adaptive_regularization.py | 31 +- .../tutorial_1_pixelizations.py | 26 +- .../tutorial_2_mappers.py | 24 +- .../tutorial_3_inversions.py | 31 +- .../tutorial_4_bayesian_regularization.py | 41 +- .../tutorial_5_bayesian_formalism.py | 644 ++++++++++++++++++ .../tutorial_6_borders.py | 77 +-- .../tutorial_7_lens_modeling.py | 56 +- .../tutorial_8_adaptive_pixelization.py | 30 +- .../tutorial_9_model_fit.py | 2 +- 13 files changed, 823 insertions(+), 192 deletions(-) create mode 100644 scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py diff --git a/config/build/no_run.yaml b/config/build/no_run.yaml index 3eb2e69..88eadff 100644 --- a/config/build/no_run.yaml +++ b/config/build/no_run.yaml @@ -25,10 +25,3 @@ # permanent skips — every mega-run surfaces them with a loud warning # banner. Investigate the failure, fix the underlying bug, and remove # the NEEDS_FIX marker. - -- tutorial_6_borders # NEEDS_FIX 2026-08-04 - cap-induced, not a mask problem: - # fails only under PYAUTO_SMALL_DATASETS (IndexError: index 371 out of bounds - # for axis 0 with size 272) and passes on the same dataset files without the - # cap. Hardcoded pix/border indices outrun the capped mesh. Fix by decoupling - # the indices (or the mesh shape) from dataset resolution, as HowToGalaxy - # chapter_4 tutorial_3 did, then remove this entry. diff --git a/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py b/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py index 0ea9268..dec3762 100644 --- a/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py +++ b/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py @@ -1,18 +1,19 @@ """ -Tutorial 9: Fit Problems -======================== +Tutorial 10: Fit Problems +========================= -To begin, make sure you have read the `introduction` file carefully, as a clear understanding of how the Bayesian -evidence works is key to understanding this chapter! +To begin, make sure you have read tutorials 4 and 5 carefully, as a clear understanding of how the Bayesian +evidence works is key to understanding the adaption tutorials that close this chapter! -In the previous chapter we investigated two pixelization's: `RectangularAdaptDensity` and `RectangularAdaptDensity`. We argued that the -latter was better than the former, because it dedicated more source-pixels to the regions of the source-plane where we -had more data, e.g, the high-magnification regions. Therefore, we could fit the data using fewer source pixels, -which improved computational efficiency and increased the Bayesian evidence. +Earlier in this chapter (tutorial 8) we investigated two pixelizations: the `RectangularAdaptDensity` mesh and the +`Delaunay` mesh with an `Overlay` image-mesh. We argued that the latter was better than the former, because it +dedicated more source-pixels to the regions of the source-plane where we had more data, e.g. the high-magnification +regions. Therefore, we could fit the data using fewer source pixels, which improved computational efficiency and +increased the Bayesian evidence. So far, we've used just one regularization scheme; `Constant`. As the name suggests, this scheme applies just one regularization coefficient when comparing source pixel fluxes to apply smoothing. Here is a recap of our discussion -about regularization from chapter 4: +about regularization from tutorial 4: -------------------------------------------- @@ -256,14 +257,15 @@ def fit_with_Rectangular_from(dataset, mask, coefficient): *Image-Mesh / Mesh*: -The problem is the same one we discussed when we compared the `RectangularAdaptDensity` and `RectangularAdaptDensity` meshes in tutorial 7. +The problem is the same one we discussed when we compared magnification-based and brightness-based adaption +in tutorial 8. -We are simply not dedicating enough source-pixels to the central regions of the source reconstruction, -e.g. where it`s brightest. As the source becomes more compact, the source reconstruction no longer has enough +We are simply not dedicating enough source-pixels to the central regions of the source reconstruction, +e.g. where it's brightest. As the source becomes more compact, the source reconstruction no longer has enough resolution to resolve its fine-detailed central structure, causing the fit to the image to degrade. -As we made our sources more compact we go from reconstructing them using ~100 source pixels, to ~20 source pixels -to ~ 10 source pixels. This is why we advocated not using the `RectangularAdaptDensity` mesh previously! +As we made our sources more compact we went from reconstructing them using ~100 source pixels, to ~20 source pixels +to ~10 source pixels. Adapting to the mass model magnification is not the best approach. As we simulated more compact sources the magnification (which is determined via the mass model) does not change. We therefore reconstructed each source @@ -293,7 +295,7 @@ def fit_with_Rectangular_from(dataset, mask, coefficient): ) """ -As you can see, all pixels are regularized with our input regularization_coefficient value of 3.6. +As you can see, all pixels are regularized with our single input regularization coefficient value. This is not the best approach to regularizing the source. In fact, different regions of the source prefer different levels of regularization: @@ -315,7 +317,7 @@ def fit_with_Rectangular_from(dataset, mask, coefficient): By using a single regularization coefficient, we infer an intermediate regularization coefficient that over-smooths the source's central regions whilst failing to fully correlate exterior pixels. -An adaptive regularization scheme, where the regularization coefficient varies from the outskirts to the centrel +An adaptive regularization scheme, where the regularization coefficient varies from the outskirts to the central regions, will produce solutions that further increase the Bayesian evidence. __Wrap Up__ diff --git a/scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py b/scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py index 1ddf685..e449df1 100644 --- a/scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py +++ b/scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py @@ -1,5 +1,5 @@ """ -Tutorial 10: Brightness Adaption +Tutorial 11: Brightness Adaption ================================ In the previous tutorial we motivated our need to adapt the pixelization to the source's morphology, such that source @@ -116,7 +116,7 @@ fit = al.FitImaging(dataset=dataset, tracer=tracer) """ -Lets have a quick look to make sure it has the same residuals we saw in tutorial 1. +Lets have a quick look to make sure it has the same residuals we saw in the previous tutorial. """ mapper = fit.inversion.cls_list_from(al.Mapper)[0] @@ -358,9 +358,9 @@ """ __Wrap Up__ -To end, lets think about the Bayesian evidence, which we saw now goes to significantly higher values than for a -magnification-based grid. At this point, it might be worth reminding yourself how the Bayesian evidence works by -going back to description in this chapters `introduction` text file. +To end, lets think about the Bayesian evidence, which we saw now goes to significantly higher values than for a +magnification-based grid. At this point, it might be worth reminding yourself how the Bayesian evidence works by +going back to tutorials 4 and 5 of this chapter. So, why do you think why adapting to the source's brightness increases the log evidence? @@ -374,5 +374,5 @@ **PyAutoLens** can now access those solutions, this means that adapt-mode will run much faster than the magnification based grid! Put simply, fewer source-pixels means lower computational overheads. YAY! -Tutorial 2 done, next up, adaptive regularization! +Tutorial 11 done, next up, adaptive regularization! """ diff --git a/scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py b/scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py index 05b67cf..a133646 100644 --- a/scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py +++ b/scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py @@ -1,8 +1,8 @@ """ -Tutorial 11: Adaptive Regularization +Tutorial 12: Adaptive Regularization ==================================== -In tutorial 7, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source +In tutorial 10, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source demand different levels of regularization, motivating a regularization scheme which adapts to the reconstructed source's surface brightness. @@ -174,8 +174,8 @@ def fit_via_source_galaxy_from(dataset, source_galaxy, adapt_images=None): Combining the adaptive mesh and regularization will only further benefit lens modeling! -However, as shown below, we don't fit the source as well as the morphology based mesh did in the last chapter. -This is because although the adaptive regularization scheme improves the fit, the magnification based +However, as shown below, we don't fit the source as well as the morphology based mesh did in the previous tutorial. +This is because although the adaptive regularization scheme improves the fit, the magnification based mesh simply does not have sufficient resolution to resolve the source's cuspy central light. """ aplt.subplot_fit_imaging(fit=fit) @@ -267,20 +267,25 @@ def fit_via_source_galaxy_from(dataset, source_galaxy, adapt_images=None): __Wrap Up__ To end, lets consider what this adaptive regularization scheme means in the context of maximizing the Bayesian -evidence. In the previous tutorial, we noted that by using a brightness-based adaptive pixelization we increased -the Bayesian evidence by allowing for new solutions which fit the data user fewer source pixels; the key criteria +evidence. In the previous tutorial, we noted that by using a brightness-based adaptive pixelization we increased +the Bayesian evidence by allowing for new solutions which fit the data using fewer source pixels; the key criteria in making a source reconstruction 'more simple' and 'less complex'. -As you might of guessed, adaptive regularization increases the Bayesian log evidence by making the source +As you might have guessed, adaptive regularization increases the Bayesian log evidence by making the source reconstruction simpler: - 1) Reducing regularization in the source's brightest regions produces a `simpler` solution in that we are not + 1) Reducing regularization in the source's brightest regions produces a `simpler` solution in that we are not over-smoothing our reconstruction of its brightest regions. - - 2) Increasing regularization in the outskirts produces a simpler solution by correlating more source-pixels, + + 2) Increasing regularization in the outskirts produces a simpler solution by correlating more source-pixels, effectively reducing the number of pixels used by the reconstruction. -Together, brightness based pixelization's and regularization allow us to find the objectively `simplest` source -solution possible and therefore ensure that our Bayesian evidence has a well defined maximum value. This was not the -case for magnification based pixelization's and constant regularization schemes. +Together, brightness based pixelizations and regularization allow us to find the objectively `simplest` source +solution possible and therefore ensure that our Bayesian evidence has a well defined maximum value. This was not the +case for magnification based pixelizations and constant regularization schemes. + +That completes this chapter on pixelized source reconstruction. You can now reconstruct sources of arbitrary +complexity and adapt every part of the analysis to the data itself. In chapter 4, `Scaling Up Lensing`, we take these +tools to bigger systems: lenses with extra galaxies along the line of sight, multi-galaxy lenses, scaling relations, +group and cluster scale lenses and weak lensing. """ diff --git a/scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py b/scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py index 230863a..98146f2 100644 --- a/scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py +++ b/scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py @@ -1,5 +1,5 @@ """ -Tutorial 1: pixelizations +Tutorial 1: Pixelizations ========================= In the previous chapters, we used light profiles to model the light of a strong lens's source galaxy, where the light @@ -72,10 +72,10 @@ """ By itself, a pixelization does not tell us much. It has no grid of $(y,x)$ coordinates, no image, and no information -about the lens we are fitting. +about the lens we are fitting. -This information comes when we use the pixelization to create up a `Mapper`, which we -perform below using the (traced) source-plane grid that we created above. +This information comes when we use the pixelization to create a `Mapper`, which we +do below using the (traced) source-plane grid that we created above. """ interpolator = mesh.interpolator_from( source_plane_data_grid=source_plane_grid, source_plane_mesh_grid=None @@ -84,7 +84,7 @@ mapper = al.Mapper(interpolator=interpolator) """ -This `Mapper` is a `RectangularMapper`, every `Pixelization` generates it owns mapper. +This `Mapper` is a `RectangularMapper` -- every `Pixelization` generates its own mapper. """ print(type(mapper)) @@ -94,8 +94,8 @@ aplt.plot_grid(grid=mapper.source_plane_mesh_grid, title="Source-Plane Mesh Grid") """ -However, the `Mapper` does contain lots of interesting information about our `Pixelization`, for example its -pixelization_grid tells us where the pixel centers are located. +The `Mapper` contains lots of interesting information about our `Pixelization`, for example its +`source_plane_mesh_grid` tells us where the pixel centres are located. """ print("RectangularAdaptDensity Grid2D Pixel Centre 1:") print(mapper.source_plane_mesh_grid[0]) @@ -112,7 +112,7 @@ aplt.plot_grid(grid=mapper.source_plane_mesh_grid, title="Source-Plane Mesh Grid") """ -The `Mapper` also has the (source-plane) grid that we passed when we set it up. Lets check they`re the same. +The `Mapper` also has the (source-plane) grid that we passed when we set it up. Lets check they're the same. """ print("Source Grid2D Pixel 1") print(source_plane_grid[0]) @@ -132,7 +132,7 @@ aplt.plot_grid(grid=mapper.source_plane_mesh_grid, title="Source-Plane Mesh Grid") """ -Finally, the mapper`s `mesh_grid` has lots of information about the pixelization, for example, the arc-second +Finally, the mapper's mesh grid has lots of information about the pixelization, for example, its arc-second size and dimensions. """ print(mapper.source_plane_mesh_grid.geometry.shape_native_scaled) @@ -145,10 +145,10 @@ This was a relatively gentle overview of pixelizations, but one that was hopefully easy to follow. Think about the following questions before moving on to the next tutorial: - 1) Look at how the source-grid coordinates are distributed over the rectangular pixel-grid. Are these points - distributed evenly over the rectangular grid`s pixels? Do some pixels have a lot more grid-points inside of them? + 1) Look at how the source-grid coordinates are distributed over the rectangular pixel-grid. Are these points + distributed evenly over the rectangular grid's pixels? Do some pixels have a lot more grid-points inside of them? Do some pixels have no grid-points in them? - 2) The rectangular pixelization`s edges are aligned with the most exterior coordinates of the source-grid. This is - intentional, why do you think this is? + 2) The rectangular pixelization's edges are aligned with the most exterior coordinates of the source-grid. This is + intentional -- why do you think this is? """ diff --git a/scripts/chapter_3_pixelizations/tutorial_2_mappers.py b/scripts/chapter_3_pixelizations/tutorial_2_mappers.py index 085b7e7..a980779 100644 --- a/scripts/chapter_3_pixelizations/tutorial_2_mappers.py +++ b/scripts/chapter_3_pixelizations/tutorial_2_mappers.py @@ -2,12 +2,12 @@ Tutorial 2: Mappers =================== -In the previous tutorial, we used a pixelization to create made a `Mapper`. However, it was not clear what a `Mapper` +In the previous tutorial, we used a pixelization to create a `Mapper`. However, it was not clear what a `Mapper` does, why it was called a mapper and whether it was mapping anything at all! Therefore, in this tutorial, we'll cover mappers in more detail. -WARNING: THHIS TUTORIAL VISUALS ARE SLIGHTLY BUGGY CURRENTLY AND WILL BE FIXED IN THE FUTURE. +WARNING: THIS TUTORIAL'S VISUALS ARE SLIGHTLY BUGGY CURRENTLY AND WILL BE FIXED IN THE FUTURE. __Contents__ @@ -71,8 +71,8 @@ ) """ -Our `Tracer` will use the same lens galaxy and source galaxy that we used to Simulate the imaging data (although, -becuase we're modeling the source with a pixel-grid, we do not pass it any light profiles. +Our `Tracer` will use the same lens galaxy and source galaxy that we used to simulate the imaging data (although, +because we're modeling the source with a pixel-grid, we do not pass the source any light profiles). """ lens_galaxy = al.Galaxy( redshift=0.5, @@ -116,8 +116,8 @@ aplt.plot_grid(grid=mapper.source_plane_mesh_grid, title="Source-Plane Mesh Grid") """ -Using the `lines=`/`positions=` overlays object we are also going to highlight specific grid coordinates certain colors, such that we -can see how they map from the image-plane to source-plane and visa versa. +Using the `positions=` overlay input we are also going to highlight specific grid coordinates in certain colors, such +that we can see how they map from the image-plane to the source-plane and vice versa. We do this by specifying their integer indexes, corresponding to the index of each data point in the image and source plane grids. These indexes are used to highlight the grid coordinates in the image and source-plane grids that map @@ -149,8 +149,8 @@ aplt.plot_grid(grid=mapper.source_plane_mesh_grid, title="Source-Plane Mesh Grid") """ -We can now make these mappings appear the other way round. That is, we can input a source-pixel index (of our -rectangular grid) and highlight how all of the (sub-)image-pixels that it contains map to the image-plane. +We can now make these mappings appear the other way round. That is, we can input a source-pixel index (of our +rectangular grid) and highlight how all of the image-pixels that it contains map to the image-plane. To make the indexes appear in the image-plane, we have to convert them from their source-plane pixel indexes to image plane image-pixel indexes using the mapper. @@ -224,7 +224,7 @@ aplt.plot_array(array=dataset.data, title="Data") """ -To create the mapper, we need to set up the masked imaging's grid as the source-plane gird via the tracer. +To create the mapper, we need to trace the masked imaging's grid to the source-plane via the tracer. """ tracer = al.Tracer(galaxies=[lens_galaxy, al.Galaxy(redshift=1.0)]) @@ -280,7 +280,7 @@ radius deviates from 1.6" (the input value of the simulated lens), what do you notice about where the points map from the centre of the source-plane (where the source-galaxy is simulated, e.g. (0.0", 0.0"))? - 2) Think about how this could help us actually model lenses. We have said we're going to reconstruct our source - galaxies on the pixel-grid. So, how does knowing how each pixel maps to the image actually help us? If you`ve not got - any bright ideas, then worry not, that exactly what we're going to cover in the next tutorial. + 2) Think about how this could help us actually model lenses. We have said we're going to reconstruct our source + galaxies on the pixel-grid. So, how does knowing how each pixel maps to the image actually help us? If you've not got + any bright ideas, then worry not, that's exactly what we're going to cover in the next tutorial. """ diff --git a/scripts/chapter_3_pixelizations/tutorial_3_inversions.py b/scripts/chapter_3_pixelizations/tutorial_3_inversions.py index e473626..eb09720 100644 --- a/scripts/chapter_3_pixelizations/tutorial_3_inversions.py +++ b/scripts/chapter_3_pixelizations/tutorial_3_inversions.py @@ -7,7 +7,7 @@ - `Pixelization`'s: which place a pixel-grid in the source-plane. - `Mappers`'s: which describe how each source-pixel maps to one or more image pixels. -However, non of this has actually helped us fit strong lens data or reconstruct the source galaxy. This is the subject +However, none of this has actually helped us fit strong lens data or reconstruct the source galaxy. This is the subject of this tutorial, where the process of reconstructing the source's light on the pixelization is called an `Inversion`. __Contents__ @@ -63,7 +63,7 @@ ) """ -Lets create an annular mask which traces the stongly lensed source's ring of light. +Lets create an annular mask which traces the strongly lensed source's ring of light. """ mask = al.Mask2D.circular_annular( shape_native=dataset.shape_native, @@ -222,9 +222,10 @@ ) """ -Pretty great, huh? If you ran the complex source pipeline in chapter 3, you'll remember that getting a model image -that looked this good simply *was not possible*. With an inversion, we can do this with ease and without having to -perform model-fitting with 20+ parameters for the source's light! +Pretty great, huh? If you fitted complex sources using light profiles in the search chaining tutorials at the end of +chapter 2 (tutorials 9-11), you'll remember that getting a model image that looked this good simply *was not possible*. +With an inversion, we can do this with ease and without having to perform model-fitting with 20+ parameters for the +source's light! We will now briefly discuss how an inversion actually works, however the explanation I give in this tutorial will be overly-simplified. To be good at lens modeling you do not need to understand the details of how an inversion works, you @@ -249,11 +250,16 @@ 1) The mappings between every source-pixel and sets of image-pixels. 2) The flux values in every observed image-pixel, which are the values we want to fit successfully. -It turns out that with these two pieces of information we can linearly solve for the set of source-pixel fluxes that -best-fit (e.g. maximize the log likelihood) our observed image. Essentially, we set up the mappings between source and -image pixels as a large matrix and solve for the source-pixel fluxes in an analogous fashion to how you would solve a +It turns out that with these two pieces of information we can linearly solve for the set of source-pixel fluxes that +best-fit (e.g. maximize the log likelihood) our observed image. Essentially, we set up the mappings between source and +image pixels as a large matrix and solve for the source-pixel fluxes in an analogous fashion to how you would solve a set of simultaneous linear equations. This process is called a `linear inversion`. +In the language of linear algebra: the mappings form a `mapping matrix` $f$, which together with the data and +noise-map defines a linear system whose solution is the vector of source-pixel fluxes $s$. Tutorial 5 of this +chapter writes this system out in full and computes it step-by-step in code -- for now, the intuition above is all +you need. + There are three more things about a linear inversion that are worth knowing: 1) When performing fits using light profiles, we discussed how a `model_image` was generated by convolving the light @@ -265,7 +271,7 @@ the mapping between every sub-pixel and source-pixel that is computed and used to perform the inversion. This prevents aliasing effects degrading the image reconstruction. By default **PyAutoLens** uses sub-gridding of degree 4x4. - 3) The inversion`s solution is regularized. But wait, that`s what we'll cover in the next tutorial! + 3) The inversion's solution is regularized. But wait, that's what we'll cover in the next tutorial! Finally, let me show you how easy it is to fit an image with an `Inversion` using a `FitImaging` object. Instead of giving the source galaxy a light profile, we simply pass it a `Pixelization` and regularization, and pass it to a @@ -319,7 +325,8 @@ __Detailed Explanation__ -If you are interested in a more detailed description of how inversions work, then checkout the file -`autolens_workspace/*/imaging/features/pixelization/likelihood_function.ipynb` which gives a visual step-by-step -guide of the process alongside equations and references to literature on the subject. +If you are interested in a more detailed description of how inversions work, tutorial 5 of this chapter collects the +full linear algebra in one place. The file +`autolens_workspace/*/imaging/features/pixelization/likelihood_function.ipynb` gives a complementary visual +step-by-step guide of the process alongside equations and references to literature on the subject. """ diff --git a/scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py b/scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py index 42e6d94..2ec0d6a 100644 --- a/scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py +++ b/scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py @@ -68,11 +68,11 @@ """ __Convenience Function__ -we're going to perform a lot of fits using an `Inversion` this tutorial. This would create a lot of code, so to keep +we're going to perform a lot of fits using an `Inversion` this tutorial. This would create a lot of code, so to keep things tidy, I've setup this function which handles it all for us. -(You may notice we include an option to `use_pixelization_border, ignore this for now, as we'll be covering borders in -the next tutorial) +(Borders, which relocate demagnified image pixels in the source-plane, are used behind the scenes here -- we'll be +covering them in tutorial 6.) """ @@ -142,12 +142,15 @@ def perform_fit_with_source_galaxy(dataset, source_galaxy): So, what is happening here? Why does reducing the `coefficient` do this to our source reconstruction? First, we need to understand what regularization actually does! -When the inversion reconstructs the source, it does not *only* compute the set of source-pixel fluxes that best-fit -the image. It also regularizes this solution, whereby it goes to every pixel on the rectangular source-plane grid -and computes the different between the reconstructed flux values of every source pixel with its 4 neighboring pixels. -If the difference in flux is large the solution is penalized, reducing its log likelihood. You can think of this as +When the inversion reconstructs the source, it does not *only* compute the set of source-pixel fluxes that best-fit +the image. It also regularizes this solution, whereby it goes to every pixel on the rectangular source-plane grid +and computes the difference between the reconstructed flux values of every source pixel with its 4 neighboring pixels. +If the difference in flux is large the solution is penalized, reducing its log likelihood. You can think of this as us applying a 'smoothness prior' on the reconstructed source galaxy's light. +(In the language of linear algebra, this smoothness prior is encoded in a `regularization matrix` $H$ which is +added to the linear system the inversion solves -- tutorial 5 writes this out in full.) + This smoothing adds a 'penalty term' to the log likelihood of an inversion which is the summed difference between the reconstructed fluxes of every source-pixel pair multiplied by the `coefficient`. By setting the regularization coefficient to zero, we set this penalty term to zero, meaning that regularization is completely omitted. @@ -279,14 +282,16 @@ def perform_fit_with_source_galaxy(dataset, source_galaxy): aplt.subplot_fit_imaging(fit=fit) """ - 2) Can you think of any other ways we might increase the Bayesian evidence even further? In future tutorials we will - learn how **PyAutoLens** can adapts the source reconstructions to the properties of the image so as to maximize the + 2) Can you think of any other ways we might increase the Bayesian evidence even further? In future tutorials we will + learn how **PyAutoLens** can adapt the source reconstruction to the properties of the image so as to maximize the Bayesian evidence! - + __Detailed Description__ Below, I provide a more detailed discussion of the Bayesian evidence. It is not paramount that you understand this to -use **PyAutoLens**, but I recommend you give it a read to get an intuition for how the evidence works. +use **PyAutoLens**, but I recommend you give it a read to get an intuition for how the evidence works. The evidence +itself is a sum of chi-squared, regularization and matrix log-determinant terms -- tutorial 5 derives the exact +expression and computes every term in code. The Bayesian log evidence quantifies the following 3 aspects of a fit to strong lens imaging data: @@ -297,10 +302,10 @@ def perform_fit_with_source_galaxy(dataset, source_galaxy): However, this raises the question of what constitutes a ‘good’ solution? The Bayesian evidence defines this by assuming that the image data consists of independent Gaussian noise in every image pixel. A ‘good’ solution is one - whose chi-squared residuals are consistent with Gaussian noise, producing a reduced chi-squared near 1.0 .Solutions - which give a reduced chi squared below 1 are penalized for being overly complex and fitting the image’s noise, whereas - solutions with a reduced chi-squared above are penalized for not invoking a more complex source model when the data it - is necessary to fit the data bettter. In both circumstances, these penalties reduce the inferred Bayesian evidence! + whose chi-squared residuals are consistent with Gaussian noise, producing a reduced chi-squared near 1.0. Solutions + which give a reduced chi-squared below 1 are penalized for being overly complex and fitting the image’s noise, whereas + solutions with a reduced chi-squared above 1 are penalized for not invoking a more complex source model when the data + necessitates it. In both circumstances, these penalties reduce the inferred Bayesian evidence! 2) *The complexity of the source reconstruction:* The log evidence estimates the number of source pixels that are used to reconstruct the image, after accounting for their correlation with one another due to regularization. Solutions that @@ -308,9 +313,9 @@ def perform_fit_with_source_galaxy(dataset, source_galaxy): reconstructions are favoured. 3) *The signal-to-noise (S/N) of the image that is fitted:* The Bayesian evidence favours models which fit higher S/N - realizations of the observed data (where the S/N is determined using the image-pixel variances, e.g. the noise-map). Up - to now, all **PyAutoLens** fits assumed fixed variances, meaning that this aspect of the Bayeisan evidence has no impact - on the inferred evidence values. However, in hyper-mode we will invoke functionality that increases the variances + realizations of the observed data (where the S/N is determined using the image-pixel variances, e.g. the noise-map). Up + to now, all **PyAutoLens** fits assumed fixed variances, meaning that this aspect of the Bayesian evidence has no impact + on the inferred evidence values. However, adaptive features can invoke functionality that increases the variances of image-pixels where the lens model fits the data poorly. The premise is that whilst increasing the variances of image pixels lowers their S/N values and therefore also diff --git a/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py b/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py new file mode 100644 index 0000000..1c6d1b0 --- /dev/null +++ b/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py @@ -0,0 +1,644 @@ +""" +Tutorial 5: Bayesian Formalism +============================== + +In tutorials 1 to 4, we built an intuition for how pixelized source reconstruction works: pixelizations place a +pixel-grid in the source-plane, mappers pair source-pixels with image-pixels, inversions solve for the source-pixel +fluxes that best fit the data, and regularization smooths the solution within a Bayesian framework. + +This tutorial collects the linear algebra behind all of that in one place. It is the counterpart of chapter 1's +tutorial 5 on the lensing formalism: the hands-on tutorials built intuition, and now we write down the equations. +We will construct, step-by-step and in code, every matrix and vector the inversion uses, solve for the source +reconstruction ourselves and compute the Bayesian evidence by hand, comparing our answer at the end to the +`FitImaging` object which performs this calculation internally. + +None of this is required to *use* **PyAutoLens** for lens modeling. However, if you publish results which use a +pixelization, this is the calculation your paper's likelihood function section will describe, and understanding it +removes any sense that the source reconstruction is a "black box". + +The formalism follows Warren & Dye 2003 (https://arxiv.org/abs/astro-ph/0302587), hereafter WD03, with the data +vector notation of Nightingale & Dye 2015 (https://arxiv.org/abs/1412.7436), hereafter N15. The Bayesian evidence +was derived by Suyu et al. 2006 (https://arxiv.org/abs/astro-ph/0601493) and translated to **PyAutoLens** notation +in Dye et al. 2008 (https://arxiv.org/abs/0804.4002). + +__Contents__ + +- **Initial Setup:** Load the dataset, mask it and disable over sampling so the algebra stays simple. +- **Mesh Shape:** Fix the rectangular mesh's shape and note why edge pixels are zeroed. +- **Ray Tracing:** Trace the masked image-pixel coordinates to the source-plane via the lens equation. +- **Border Relocation:** Relocate demagnified coordinates that trace far outside the source-plane border. +- **Source Pixel Centres:** Overlay the rectangular mesh over the traced coordinates. +- **Interpolation:** Pair every traced image-pixel with source pixels via bilinear interpolation. +- **Mapper:** Package the interpolation into a `Mapper` describing all image-to-source mappings. +- **Mapping Matrix:** Express the mappings as the 2D matrix $f$. +- **Blurred Mapping Matrix:** Convolve every column of $f$ with the imaging PSF. +- **Data Vector:** Compute the data vector $D$ from the blurred mapping matrix, data and noise-map. +- **Curvature Matrix:** Compute the curvature matrix $F$. +- **Unregularized Solve:** Solve $s = F^{-1} D$ and see the over-fitted mess this produces. +- **Regularization Matrix:** Compute the regularization matrix $H$ encoding the smoothness prior. +- **Source Reconstruction:** Solve the regularized system $s = [F + H]^{-1} D$. +- **Image Reconstruction:** Map the reconstruction back to the image-plane via the blurred mapping matrix. +- **Likelihood Function:** The five terms which combine into the log evidence. +- **Chi Squared:** The goodness-of-fit of the reconstructed image to the data. +- **Regularization Term:** The penalty $s^{T} H s$ applied by the smoothness prior. +- **Complexity Terms:** The log determinant terms which penalize complex source reconstructions. +- **Noise Normalization Term:** The Gaussian noise normalization. +- **Log Evidence:** Combine all five terms and compare to `FitImaging`. +- **Wrap Up:** Summary and next steps. + +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +import matplotlib.pyplot as plt +import numpy as np +from pathlib import Path + +import autolens as al +import autolens.plot as aplt + +""" +__Initial Setup__ + +we'll use the same strong lensing data as the previous tutorials, where: + + - The lens galaxy's light is omitted. + - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`. + - The source galaxy's light is an `Sersic`. + +Because the lens galaxy's light is omitted, the data is already "lens subtracted". WD03 make the same assumption, +so in the equations below the lens light model $b_{j}$ is zero everywhere. For a lens with light, one simply computes +the lens galaxy's PSF-convolved image first and subtracts it from the data before the steps below (the workspace +guide referenced at the end shows this in full). +""" +dataset_name = "simple__no_lens_light" +dataset_path = Path("dataset") / "imaging" / dataset_name + +""" +__Dataset Auto-Simulation__ + +If the dataset does not already exist on your system, it will be created by running the corresponding +simulator script. This ensures that all example scripts can be run without manually simulating data first. +""" +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/no_lens_light.py"], + check=True, + ) + +dataset = al.Imaging.from_fits( + data_path=dataset_path / "data.fits", + noise_map_path=dataset_path / "noise_map.fits", + psf_path=dataset_path / "psf.fits", + pixel_scales=0.1, +) + +aplt.subplot_imaging_dataset(dataset=dataset) + +""" +__Mask__ + +The likelihood is only evaluated within a mask, which we define as a 3.0" circle containing all of the lensed +source's light. +""" +mask = al.Mask2D.circular( + shape_native=dataset.shape_native, + pixel_scales=dataset.pixel_scales, + radius=3.0, +) + +masked_dataset = dataset.apply_mask(mask=mask) + +aplt.subplot_imaging_dataset(dataset=masked_dataset) + +""" +__Over Sampling__ + +Over sampling splits every image pixel into a sub-grid of sub-pixels, each of which is traced to the source-plane +and paired with source pixels individually. It improves accuracy, but it also multiplies the number of rows in every +matrix below by the number of sub-pixels. + +To keep the algebra as easy to follow as possible, we disable over sampling by setting both sub-grid sizes to 1, so +each image pixel is represented by the single coordinate at its centre. +""" +masked_dataset = masked_dataset.apply_over_sampling( + over_sample_size_lp=1, + over_sample_size_pixelization=1, +) + +""" +__Mesh Shape__ + +The `mesh_shape` defines the number of pixels in the rectangular mesh used to reconstruct the source, set below +to 20 x 20 = 400 source pixels. + +We use the `RectangularUniform` mesh, where all rectangular source pixels have the same size, rather than the +`RectangularAdaptDensity` mesh used in the previous tutorials. The uniform mesh keeps the geometry simple, and every +equation below applies unchanged to the adaptive meshes -- only the source pixel centres move. + +By default, source pixels at the edge of the mesh are forced to solutions of zero flux by the linear algebra solver. +This prevents unphysical solutions where the mesh edge lights up to fit residuals, and does not change any of the +formalism below. +""" +mesh_pixels_yx = 20 +mesh_shape = (mesh_pixels_yx, mesh_pixels_yx) + +""" +__Tracer__ + +We use the same lens galaxy mass model as the previous tutorials (an `Isothermal` plus `ExternalShear`, the true +model of the simulated data) and a source galaxy whose `Pixelization` pairs the `RectangularUniform` mesh with +`Constant` regularization (whose role appears later, when we reach the matrix $H$). +""" +lens_galaxy = al.Galaxy( + redshift=0.5, + mass=al.mp.Isothermal( + centre=(0.0, 0.0), + einstein_radius=1.6, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0), + ), + shear=al.mp.ExternalShear(gamma_1=0.05, gamma_2=0.05), +) + +pixelization = al.Pixelization( + mesh=al.mesh.RectangularUniform(shape=mesh_shape), + regularization=al.reg.Constant(coefficient=1.0), +) + +source_galaxy = al.Galaxy(redshift=1.0, pixelization=pixelization) + +tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy]) + +""" +__Ray Tracing__ + +Every 2D (y,x) image-plane coordinate $\theta$ is ray-traced to its source-plane coordinate $\beta$ by subtracting +the deflection angles $\alpha$ of the mass profiles, via the lens equation we met in chapter 1: + + $\beta = \theta - \alpha(\theta)$ + +The pixelization uses its own grid of coordinates, `masked_dataset.grids.pixelization`, with one coordinate at the +centre of every masked image pixel (because we disabled over sampling above). We trace this grid to the source-plane, +taking the final entry of the traced grid list (the source-plane). +""" +traced_grid_pixelization = tracer.traced_grid_2d_list_from( + grid=masked_dataset.grids.pixelization +)[-1] + +aplt.plot_grid(grid=traced_grid_pixelization, title="Traced Source-Plane Grid") + +""" +__Border Relocation__ + +Coordinates which pass close to the mass profile's centre are heavily demagnified and can trace to the far outskirts +of the source-plane. + +We relocate these coordinates to the edge of the source-plane border (defined via the border of the image-plane +mask), exactly as tutorial 6 explains in detail (see also figure 2 of https://arxiv.org/abs/1708.07377). This stops +a handful of demagnified coordinates stretching the mesh over a huge, empty region of the source-plane. +""" +from autoarray.inversion.mesh.border_relocator import BorderRelocator + +border_relocator = BorderRelocator(mask=masked_dataset.mask, sub_size=1) + +relocated_grid = border_relocator.relocated_grid_from(grid=traced_grid_pixelization) + +aplt.plot_grid(grid=relocated_grid, title="Relocated Source-Plane Grid") + +""" +__Source Pixel Centres__ + +To reconstruct the source on a `RectangularUniform` mesh, we need the centres of its rectangular source pixels. + +We compute these by overlaying a uniform rectangular grid over the relocated traced grid, sized so the mesh fully +contains the region of the source-plane the traced image-pixels cover, without wasted edge pixels beyond it. +""" +from autoarray.inversion.mesh.mesh.rectangular_adapt_density import overlay_grid_from + +mesh_grid = overlay_grid_from( + shape_native=mesh_shape, grid=al.Grid2DIrregular(relocated_grid) +) + +""" +__Interpolation__ + +We now combine the two grids to create an `Interpolator`, which describes how every traced image-pixel coordinate +maps to the rectangular mesh pixels. + +For a rectangular mesh the scheme is bilinear interpolation: every image pixel maps to the rectangular pixel it +lands in *and* its three nearest neighbours, with weights set by how close the coordinate is to each pixel centre. +Interpolation is what lets the mesh reconstruct smooth source morphologies. We can print the mappings and weights of +the first image pixel to confirm it pairs with four source pixels. +""" +interpolator = pixelization.mesh.interpolator_from( + source_plane_data_grid=relocated_grid, + source_plane_mesh_grid=mesh_grid, +) + +print(interpolator.mappings[0]) +print(interpolator.weights[0]) + +""" +__Mapper__ + +The interpolator creates a `Mapper`, the object tutorials 1 and 2 introduced. It packages up the mapping between +every image pixel and every rectangular source pixel. + +The key attribute is `pix_indexes_for_sub_slim_index`, mapping every image-pixel index (`sub_slim_index`) to the +source-pixel indexes (`pix_indexes`) it interpolates onto, alongside the number of mappings per image pixel and +their interpolation weights. +""" +mapper = al.Mapper(interpolator=interpolator) + +pix_indexes_for_sub_slim_index = mapper.pix_indexes_for_sub_slim_index + +print(pix_indexes_for_sub_slim_index[0:9]) +print(mapper.pix_sizes_for_sub_slim_index[0:9]) +print(mapper.pix_weights_for_sub_slim_index[0:9]) + +""" +__Mapping Matrix__ + +The `mapping_matrix` expresses these image-pixel to source-pixel mappings as a single 2D matrix, with +dimensions `(total_image_pixels, total_source_pixels)`. + +Each column is the "image" of one source pixel: entries are the interpolation weights for image pixels which map to +that source pixel and zero everywhere else. +""" +mapping_matrix = al.util.mapper.mapping_matrix_from( + pix_indexes_for_sub_slim_index=pix_indexes_for_sub_slim_index, + pix_size_for_sub_slim_index=mapper.pix_sizes_for_sub_slim_index, + pix_weights_for_sub_slim_index=mapper.pix_weights_for_sub_slim_index, + pixels=mapper.pixels, + total_mask_pixels=mapper.source_plane_data_grid.mask.pixels_in_mask, + slim_index_for_sub_slim_index=mapper.slim_index_for_sub_slim_index, + sub_fraction=mapper.over_sampler.sub_fraction, +) + +plt.imshow(mapping_matrix, aspect=(mapping_matrix.shape[1] / mapping_matrix.shape[0])) +plt.show() +plt.close() + +""" +Because each column is an image of zeros and interpolation weights, we can plot any column as a 2D image showing all +image pixels its source pixel maps to. For a source pixel near the mesh centre these image pixels trace the multiple +images of that patch of the source. +""" +source_pixel_index = 210 + +array_2d = al.Array2D( + values=mapping_matrix[:, source_pixel_index], mask=masked_dataset.mask +) + +aplt.plot_array(array=array_2d, title="Image of Source Pixel 210") + +""" +__Blurred Mapping Matrix__ + +The imaging data is blurred by the telescope's PSF, so the model must be too. Since each column of the mapping +matrix is an image, we simply convolve each column with the PSF via 2D convolution. + +This produces the `blurred_mapping_matrix`, with the same dimensions `(total_image_pixels, total_source_pixels)`. + +In WD03 this matrix is denoted $f_{ij}$, where $i$ runs over all $I$ source pixels and $j$ over all $J$ image +pixels. For example: + + - $f_{0, 2} = 0.3$ indicates that image-pixel $2$ maps to source-pixel $0$ with a weight of $0.3$ after PSF + convolution. + - $f_{4, 8} = 0$ indicates that image-pixel $8$ does not map to source-pixel $4$, even after PSF convolution. + +(The indexing of the code's `mapping_matrix` is transposed relative to WD03's $f$: image pixels are the first index +in the code, but the second index in the equations.) + +PSF blurring has an important consequence: whereas before, no two source pixels shared an image pixel, blurring +correlates neighbouring columns, so the images of nearby source pixels now overlap. +""" +blurred_mapping_matrix = masked_dataset.psf.convolved_mapping_matrix_from( + mapping_matrix=mapping_matrix, mask=masked_dataset.mask +) + +plt.imshow( + blurred_mapping_matrix, + aspect=(blurred_mapping_matrix.shape[1] / blurred_mapping_matrix.shape[0]), +) +plt.colorbar() +plt.show() +plt.close() + +""" +__Data Vector (D)__ + +We now pose the reconstruction as a linear inversion, converting the blurred mapping matrix, data and noise-map +into two objects: the data vector $D$ and the curvature matrix $F$. + +The data vector has dimensions `(total_source_pixels,)` and is given by (WD03 / N15): + + $\vec{D}_{i} = \sum_{j=1}^{J} f_{ij} (d_{j} - b_{j}) / \sigma_{j}^2 \, \, .$ + +Where: + + - $d_{j}$ are the image-pixel data values. + - $b_{j}$ are the lens light model values ($d_{j} - b_{j}$ is the lens-subtracted image; zero for this dataset). + - $\sigma_{j}^2$ are the statistical uncertainties of each image pixel. + +Each entry of $D$ is therefore the noise-weighted overlap between one source pixel's blurred image and the data: +it measures how much evidence the data provides for flux in that source pixel, with the PSF fully accounted for. +""" +data_vector = al.util.inversion_imaging.data_vector_via_blurred_mapping_matrix_from( + blurred_mapping_matrix=blurred_mapping_matrix, + image=np.array(masked_dataset.data), + noise_map=np.array(masked_dataset.noise_map), +) + +plt.imshow( + data_vector.reshape(data_vector.shape[0], 1), aspect=10.0 / data_vector.shape[0] +) +plt.colorbar() +plt.show() +plt.close() + +""" +__Curvature Matrix (F)__ + +The curvature matrix has dimensions `(total_source_pixels, total_source_pixels)` and is given by (WD03): + + ${F}_{ik} = \sum_{j=1}^{J} f_{ij} f_{kj} / \sigma_{j}^2 \, \, .$ + +Every entry of $F$ is the noise-weighted overlap between the blurred images of two source pixels: $F_{ik}$ sums the +product of columns $i$ and $k$ of $f$ over all image pixels. For $F_{ik}$ to be non-zero, source pixels $i$ and $k$ +must share at least one image pixel, which (interpolation aside) only happens because of PSF blurring. + +$F$ describes how degenerate pairs of source pixels are with one another: two source pixels whose blurred images +overlap heavily can trade flux between themselves whilst fitting the data almost equally well. +""" +curvature_matrix = al.util.inversion.curvature_matrix_via_mapping_matrix_from( + mapping_matrix=blurred_mapping_matrix, noise_map=masked_dataset.noise_map +) + +plt.imshow(curvature_matrix) +plt.colorbar() +plt.show() +plt.close() + +""" +__Unregularized Solve__ + +The inversion seeks the source-pixel fluxes $s$ (a vector with one entry per source pixel) that minimize the +chi-squared: + + $\chi^2 = \sum_{j=1}^{J} \bigg[ \frac{(\sum_{i=1}^{I} s_{i} f_{ij}) + b_{j} - d_{j}}{\sigma_{j}} \bigg]^2$ + +Setting the derivative of $\chi^2$ with respect to each $s_{i}$ to zero gives the linear system whose solution is +(equation 5 of WD03): + + $s = F^{-1} D$ + +We can solve this directly with NumPy. (Without regularization the curvature matrix is often singular, so the loop +below adds a tiny value to its diagonal to avoid a `LinAlgError` -- it is a numerical crutch, not part of the +formalism.) +""" +for i in range(curvature_matrix.shape[0]): + curvature_matrix[i, i] += 1e-8 + +reconstruction = np.linalg.solve(curvature_matrix, data_vector) + +print(reconstruction) + +""" +The reconstructed source-pixel fluxes are a noisy, unsmooth mess -- exactly the over-fitting we saw in tutorial 4 +when we set the regularization coefficient to zero. The linear inversion is fitting the noise in the data, because +this system of equations is ill-posed: we need a smoothness prior. + +__Regularization Matrix (H)__ + +Regularization adds a linear regularization term $G_{L}$ to the merit function we minimize (equation 11 of WD03): + + $G = \chi^2 + \lambda \, G_{L}$ + +where $\lambda$ is the `regularization_coefficient` controlling the degree of smoothing. The `Constant` scheme uses +gradient regularization (equation 14 of WD03): + + $G_{L} = \sum_{i}^{I} \sum_{n=1}^{N} [s_{i} - s_{i, v}]^2$ + +In words: for every source pixel, compare its flux with each of its neighbours $v$, and penalize solutions where +the differences are large. This is precisely the "smoothness prior" of tutorial 4, now written as an equation. + +To fold this into the linear algebra we define the regularization matrix $H$, with +dimensions `(total_source_pixels, total_source_pixels)` (equation 13 of WD03): + + $H_{ik} = \frac{1}{2} \frac{\partial G_{L}}{\partial s_{i} \partial s_{k}}$ + +$H$ has the coefficient $\lambda$ folded into it. Its non-zero off-diagonal entries mark pairs of source pixels +which are neighbours and therefore regularized with one another; most entries are zero because most source pixels +are not neighbours. +""" +regularization_matrix = al.util.regularization.constant_regularization_matrix_from( + coefficient=source_galaxy.pixelization.regularization.coefficient, + neighbors=mapper.neighbors, + neighbors_sizes=mapper.neighbors.sizes, +) + +plt.imshow(regularization_matrix) +plt.colorbar() +plt.show() +plt.close() + +""" +__Source Reconstruction (s)__ + +$H$ enters the linear system as follows (equation 12 of WD03): + + $s = [F + H]^{-1} D$ + +We add the two matrices and solve again. The diagonal jitter used above is no longer needed, because $H$ makes the +system well-posed. +""" +curvature_reg_matrix = np.add(curvature_matrix, regularization_matrix) + +reconstruction = np.linalg.solve(curvature_reg_matrix, data_vector) + +print(reconstruction) + +""" +The reconstructed fluxes are now smooth and physical: regularization has suppressed the noisy solution and the +reconstruction actually looks like a galaxy, without over-fitting the noise. + +__Image Reconstruction__ + +Using the reconstructed source-pixel fluxes, we map the source back to the image-plane via the blurred mapping +matrix (so the reconstructed image includes PSF blurring) to produce the model image of the lensed source. +""" +mapped_reconstructed_data = ( + al.util.inversion.mapped_reconstructed_data_via_mapping_matrix_from( + mapping_matrix=blurred_mapping_matrix, reconstruction=reconstruction + ) +) + +mapped_reconstructed_data = al.Array2D( + values=mapped_reconstructed_data, mask=masked_dataset.mask +) + +aplt.plot_array(array=mapped_reconstructed_data, title="Reconstructed Image") + +""" +__Likelihood Function__ + +We now quantify the goodness-of-fit of the source reconstruction, computing the quantity tutorial 4 called the +Bayesian evidence. The log evidence consists of five terms: + + $-2 \, \mathrm{ln} \, \epsilon = \chi^2 + s^{T} H s + \mathrm{ln} \, [ \mathrm{det} (F + H) ] - \mathrm{ln} \, [ \mathrm{det} (H) ] + \sum_{j=1}^{J} \mathrm{ln} \, [2 \pi (\sigma_{j})^2 ] \, .$ + +This expression was first derived by Suyu et al. 2006 (https://arxiv.org/abs/astro-ph/0601493), equation (19), and +is given in **PyAutoLens** notation by Dye et al. 2008 (https://arxiv.org/abs/0804.4002), equation (5). + +We now compute each term in turn. + +__Chi Squared__ + +The first term is the $\chi^2$ statistic from the merit function above, computed as: + + - `model_data` = the reconstructed image of the lensed source (plus the lens light model, zero here). + - `residual_map` = (`data` - `model_data`) + - `normalized_residual_map` = (`data` - `model_data`) / `noise_map` + - `chi_squared_map` = (`normalized_residual_map`) ** 2.0 + - `chi_squared` = sum(`chi_squared_map`) + +High chi-squared values indicate image pixels the reconstruction fits poorly, lowering the likelihood. +""" +model_image = mapped_reconstructed_data + +residual_map = masked_dataset.data - model_image +normalized_residual_map = residual_map / masked_dataset.noise_map +chi_squared_map = normalized_residual_map**2.0 + +chi_squared = np.sum(chi_squared_map) + +print(chi_squared) + +""" +__Regularization Term__ + +The second term, $s^{T} H s$, is the $\lambda \, G_{L}$ regularization penalty evaluated at the solution: the summed +difference in flux between all neighbouring source pixels, weighted by the regularization coefficient (which is +already folded into $H$). + +Less smooth solutions have larger values of this term and therefore lower likelihoods. +""" +regularization_term = np.matmul( + reconstruction.T, np.matmul(regularization_matrix, reconstruction) +) + +print(regularization_term) + +""" +__Complexity Terms__ + +Up to this point, nothing has justified our choice of `regularization_coefficient=1.0`. We cannot choose it using +the two terms above, because increasing the coefficient smooths the solution more, which *both* worsens the +chi-squared *and* (for a fixed solution) raises the regularization penalty. Optimizing those two terms alone would +drive the coefficient to zero and put us right back at the over-fitted mess. + +The two log determinant terms, $\mathrm{ln} \, [ \mathrm{det} (F + H) ]$ and $- \mathrm{ln} \, [ \mathrm{det} (H) ]$, +fix this. Together they measure how *complex* the source reconstruction is -- roughly, how many effective degrees +of freedom the source uses after regularization correlates its pixels -- and penalize more complex solutions. +Lowering the regularization coefficient frees the source to use more of its flexibility, increasing this complexity +penalty. + +These terms therefore counteract the chi-squared and regularization terms, so the highest evidence goes to solutions +which fit the data well with the *simplest* source reconstruction. This is the Occam's razor behaviour that +tutorial 4 demonstrated empirically. +""" +log_curvature_reg_matrix_term = np.linalg.slogdet(curvature_reg_matrix)[1] +log_regularization_matrix_term = np.linalg.slogdet(regularization_matrix)[1] + +print(log_curvature_reg_matrix_term) +print(log_regularization_matrix_term) + +""" +__Noise Normalization Term__ + +The likelihood function assumes the imaging data consists of independent Gaussian noise in every image pixel, and +the final term is the normalization of those Gaussians: the sum of the log of every noise-map value squared. + +Because the noise-map is fixed, this term is constant throughout lens modeling and has no impact on the model +we infer -- it simply normalizes the likelihood. +""" +noise_normalization = float(np.sum(np.log(2 * np.pi * masked_dataset.noise_map**2.0))) + +print(noise_normalization) + +""" +__Log Evidence__ + +We can now combine the five terms into the log evidence of the source reconstruction. +""" +log_evidence = float( + -0.5 + * ( + chi_squared + + regularization_term + + log_curvature_reg_matrix_term + - log_regularization_matrix_term + + noise_normalization + ) +) + +print(log_evidence) + +""" +__Fit__ + +Everything above is what the `FitImaging` object does internally when it fits a tracer whose source galaxy has a +pixelization. We can see this by performing the fit and comparing its `log_evidence` to ours. + +The two values are close but not identical, because the real fit improves on our simplified solve in two ways +mentioned along the way: it uses the positive-only solver (tutorial 3), which forbids the negative source-pixel +fluxes our unconstrained `np.linalg.solve` permits, and it zeroes the pixels at the edge of the mesh. Neither +changes the formalism -- the same $f$, $D$, $F$ and $H$ feed a solver with extra constraints. +""" +fit = al.FitImaging( + dataset=masked_dataset, + tracer=tracer, + settings=al.Settings(use_border_relocator=True), +) + +print(fit.log_evidence) + +aplt.subplot_fit_imaging(fit=fit) + +""" +__Wrap Up__ + +We have walked through the complete linear algebra of a pixelized source reconstruction: + + - The `mapping_matrix` and PSF-blurred mapping matrix $f$, whose columns are the blurred images of each + source pixel. + + - The data vector $D$ and curvature matrix $F$, the noise-weighted overlaps of those images with the data and with + each other. + + - The regularization matrix $H$, which encodes the smoothness prior, and the linear solve $s = [F + H]^{-1} D$ for + the source reconstruction. + + - The five terms of the Suyu et al. 2006 log evidence -- chi-squared, the regularization penalty, the two log + determinant complexity terms and the noise normalization -- and their Bayesian interpretation as an Occam's + razor which favours the simplest source reconstruction the data allows. + +During lens modeling, this whole calculation is one likelihood evaluation: the non-linear search varies the mass +model (and, later in this chapter, the pixelization and regularization parameters), and each sample triggers the +full ray-trace, solve and evidence computation above. + +Two simplifications are worth remembering: real fits use over sampling (each image pixel contributes several +sub-pixel rows to $f$) and **PyAutoLens** uses a positive-only solver for $s$ rather than the unconstrained +`np.linalg.solve` used here (see tutorial 3). The workspace +guide `autolens_workspace/*/imaging/features/pixelization/likelihood_function.ipynb` repeats this walk-through with +lens light included and additional visualization of every step. + +In the next tutorial, we return to hands-on territory and look at borders, which deal with the demagnified traced +coordinates whose relocation we performed in a single line above. +""" diff --git a/scripts/chapter_3_pixelizations/tutorial_6_borders.py b/scripts/chapter_3_pixelizations/tutorial_6_borders.py index fc8904f..1a98fd5 100644 --- a/scripts/chapter_3_pixelizations/tutorial_6_borders.py +++ b/scripts/chapter_3_pixelizations/tutorial_6_borders.py @@ -1,5 +1,5 @@ """ -Tutorial 5: Borders +Tutorial 6: Borders =================== In the previous tutorials, the source-plane pixel grid perfectly mapped over the traced image-pixel $(y,x)$ coordinates @@ -7,7 +7,8 @@ increase its size so as to cover every source-plane coordinate. In this tutorial, we will consider how the size of the pixelization grid is chosen and introduce the concept of a -border. +border. The previous tutorial applied border relocation as a single step of the likelihood algebra -- here we see +why that step is needed. __Contents__ @@ -68,7 +69,7 @@ So, what is a border? In the image-plane, a border is the set of exterior pixels in a mask that are at its border. -Lets plot the image with a circular circular and tell our `aplt.subplot_imaging_dataset` to plot the border. +Lets apply a circular mask to the image and plot the dataset -- the border is the ring of pixels at the mask's edge. """ mask_circular = al.Mask2D.circular( shape_native=dataset.shape_native, @@ -83,8 +84,8 @@ aplt.subplot_imaging_dataset(dataset=dataset) """ -As you can see, for a circular mask the border *is* the edge of the mask (the ring of black dots we're used to -seeing whenever we plot a mask. +As you can see, for a circular mask the border *is* the edge of the mask (the ring of black dots we're used to +seeing whenever we plot a mask). For an annular mask, pixels on its inner edge are not a part of the border, whereas those on its outer edge are. """ @@ -133,10 +134,9 @@ def perform_fit_with_source_galaxy_mask_and_border( """ -Okay, so lets first look at the mapper without using a border and using annular mask. +Okay, so lets first look at the mapper without using a border, using the annular mask. -First, note how we set up the border, using a `al.Settings` object. This behaves analogously to the -`SettingsLens` objects we have used in previous tutorials. +Note how we control the border via the `al.Settings` object's `use_border_relocator` input. """ pixelization = al.Pixelization( mesh=al.mesh.RectangularAdaptDensity(shape=(40, 40)), @@ -191,12 +191,12 @@ def perform_fit_with_source_galaxy_mask_and_border( So, why is this happening? What is the mass profile physically doing to create these source plane coordinates at extremely large radial values? -Towards the centre of th elliptical isothermal mass profile, the density begins to rise very sharply, it becomes -extremely steep or 'cuspy'. This cuspy behaviour towards its centre can cause extremely large deflection angles to be -calculated: +Towards the centre of the elliptical isothermal mass profile, the density begins to rise very sharply, it becomes +extremely steep or 'cuspy'. This cuspy behaviour towards its centre causes extremely large deflection angles to be +calculated. -Central image pixel can therefore be subjected to 'demagnification', whereby they trace to extremely large values in -the source plane! +Central image pixels are therefore subjected to 'demagnification', whereby they trace to extremely large values in +the source plane! Physically, this is not a problem, and it is the reason we do not see a 'central image' in most strong lenses, as the light-rays which take this path through the centre of the lens are demagnified. However, if the lens galaxy had a less @@ -205,14 +205,14 @@ def perform_fit_with_source_galaxy_mask_and_border( Demagnification is a problem for the pixelization and inversion though, which reconstruct the flux of these demagnified pixels just like the other pixels in the image-pixel. There are two negative consequences: - 1) The rectangular pixel-grid that we 'lay over' the source-plane is very larger because it expands to include the - demagnified image-pixels. As a result, larger source-pixels are used to reconstruct the central regions of the - source-plane (where the source galaxy is actually located), meaning we reconstruct the source-galaxy at a lower + 1) The rectangular pixel-grid that we 'lay over' the source-plane becomes very large, because it expands to include + the demagnified image-pixels. As a result, larger source-pixels are used to reconstruct the central regions of the + source-plane (where the source galaxy is actually located), meaning we reconstruct the source-galaxy at a lower effective resolution. - - 2) The inversion reconstructs the flux of the demanigified image pixels using source-pixels which contain *only* - demagnified image pixels (these are the source pixels at the edge of the source plane). These source-pixels *should* - have had other image-pixels traced within them via image-pixels at even larger radii from the centre of the lens + + 2) The inversion reconstructs the flux of the demagnified image pixels using source-pixels which contain *only* + demagnified image pixels (these are the source pixels at the edge of the source plane). These source-pixels *should* + have had other image-pixels traced within them via image-pixels at even larger radii from the centre of the lens galaxy. However, these image-pixels are at radii above 3.0", meaning the circular mask removed them from the inversion. Lets quickly use a large circular mask to confirm that these pixels exist when we don't mask them. @@ -376,10 +376,6 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( mapper = fit.inversion.cls_list_from(al.Mapper)[0] -border = mapper.source_plane_data_grid.over_sampled[ - fit.dataset.grids.border_relocator.sub_border_slim -] - aplt.plot_array(array=fit.model_data, title="Plane 1 Image") @@ -396,22 +392,17 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( mapper = fit.inversion.cls_list_from(al.Mapper)[0] -border = mapper.source_plane_data_grid.over_sampled[ - fit.dataset.grids.border_relocator.sub_border_slim -] - aplt.plot_array(array=fit.model_data, title="Plane 1 Image") """ -Multi-galaxy modeling is rife for border effects and if you have multiple lens galaxies I heartily recommend you pay -a close eye to your source-plane borders! +Multi-galaxy modeling is rife with border effects, and if you have multiple lens galaxies I heartily recommend you +keep a close eye on your source-plane borders! -Care must also be taken when choosing the size of your mask. If you don't choose a big enough mask, the border won't -be able to relocate all of the demanigified image pixels to the border edge. +Care must also be taken when choosing the size of your mask. If you don't choose a big enough mask, the border won't +be able to relocate all of the demagnified image pixels to the border edge. -(The figures below look pretty horrible, because every ray-traced image coordinate is being plotted in the -source plane. Therefore, there are many black dots which overwhelm the figure. The point to focus on are the -edges of the grid, where one can see the relocations of these coordinates. +The fits below repeat the analysis with progressively larger circular masks, so you can see how the mask size +changes the border and the resulting model image. """ dataset = al.Imaging.from_fits( data_path=dataset_path / "data.fits", @@ -433,10 +424,6 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( mapper = fit.inversion.cls_list_from(al.Mapper)[0] -border = mapper.source_plane_data_grid.over_sampled[ - fit.dataset.grids.border_relocator.sub_border_slim -] - aplt.plot_array(array=fit.model_data, title="Plane 1 Image") @@ -454,10 +441,6 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( mapper = fit.inversion.cls_list_from(al.Mapper)[0] -border = mapper.source_plane_data_grid.over_sampled[ - fit.dataset.grids.border_relocator.sub_border_slim -] - aplt.plot_array(array=fit.model_data, title="Plane 1 Image") @@ -482,10 +465,6 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( mapper = fit.inversion.cls_list_from(al.Mapper)[0] -border = mapper.source_plane_data_grid.over_sampled[ - fit.dataset.grids.border_relocator.sub_border_slim -] - aplt.plot_array(array=fit.model_data, title="Plane 1 Image") @@ -511,10 +490,6 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( mapper = fit.inversion.cls_list_from(al.Mapper)[0] -border = mapper.source_plane_data_grid.over_sampled[ - fit.dataset.grids.border_relocator.sub_border_slim -] - aplt.plot_array(array=fit.model_data, title="Plane 1 Image") diff --git a/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py b/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py index fc65e92..2d3adb6 100644 --- a/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py +++ b/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py @@ -1,17 +1,17 @@ """ -Tutorial 6: Lens Modeling +Tutorial 7: Lens Modeling ========================= -When modeling complex source's with parametric profiles, we quickly entered a regime where our non-linear search was +When modeling complex sources with parametric profiles, we quickly entered a regime where our non-linear search was faced with a parameter space of dimensionality N=20+ parameters. This made the model-fitting inefficient and likely to infer a local maxima. -Inversions do not suffer this problem, meaning they are a very a powerful tool for modeling strong lenses. Furthermore, -they have *more* freemdom than parametric light profiles because they do not relying on specific analytic light +Inversions do not suffer this problem, meaning they are a very powerful tool for modeling strong lenses. Furthermore, +they have *more* freedom than parametric light profiles because they do not rely on specific analytic light distributions and a symmetric profile shape. This will allow us to fit more complex mass models and ask ever more interesting scientific questions! -However, inversion do have some short comings that we need to be aware of before we use them for lens modeling. That`s +However, inversions do have some shortcomings that we need to be aware of before we use them for lens modeling. That's what we cover in this tutorial. __Contents__ @@ -100,8 +100,8 @@ def perform_fit_with_lens__source_galaxy(dataset, lens_galaxy, source_galaxy): The code below illustrates a systematic set of solutions called demagnified solutions, which negatively impact lens modeling using source pixelizations. -Since writing the code below, I have wrote a full readthedocs page illustrating the issue, which is linked too below. -I recommend you read this page first, to understand what a demagnified solution is, why its a problem and how we +Since writing the code below, I have written a full readthedocs page illustrating the issue, which is linked to below. +I recommend you read this page first, to understand what a demagnified solution is, why it is a problem and how we fix it. The code below should then build on this. https://pyautolens.readthedocs.io/en/latest/general/demagnified_solutions.html @@ -140,9 +140,9 @@ def perform_fit_with_lens__source_galaxy(dataset, lens_galaxy, source_galaxy): What happened!? This incorrect mass-model provides a really good fit to the image! The residuals and chi-squared-map are as good as the ones we saw in the previous tutorials. -How can an incorrect lens model provide such a fit? Well, as I'm sure you noticed, the source has been reconstructed -as a demagnified version of the image. Clearly, this is not a physical solution or a solution that we want our -non-linear search to find, but for inversion's the reality is these solutions eixst. +How can an incorrect lens model provide such a fit? Well, as I'm sure you noticed, the source has been reconstructed +as a demagnified version of the image. Clearly, this is not a physical solution or a solution that we want our +non-linear search to find, but for inversions the reality is these solutions exist. This is not necessarily problematic for lens modeling. Afterall, the source reconstruction above is extremely complex, it requires a lot of source pixels to fit the image accurately and its lack of smoothness will be heavily penalized @@ -179,19 +179,19 @@ def perform_fit_with_lens__source_galaxy(dataset, lens_galaxy, source_galaxy): print(correct_fit.log_evidence) """ -The `log_evidence` *is* lower. However, the difference in `log_evidence` is not *that large*. This could be a problem -for the non-linear search, as it will see many solutions in parameter space with high `log_evidence` values. Furthermore, -these solutions occupy a *large volumne* of parameter space (e.g. everywhere the lens model that is wrong). This makes -it easy for the non-linear search to get lost searching through these unphysical solutions and, unfortunately, inferring +The `log_evidence` *is* lower. However, the difference in `log_evidence` is not *that large*. This could be a problem +for the non-linear search, as it will see many solutions in parameter space with high `log_evidence` values. Furthermore, +these solutions occupy a *large volume* of parameter space (e.g. everywhere the lens model is wrong). This makes +it easy for the non-linear search to get lost searching through these unphysical solutions and, unfortunately, inferring an incorrect lens model (e.g. a local maxima). -There is no simple fix for this, and it is the price we pay for making the inversion has so much flexibility in how it -reconstructs the source's light. The solution to this problem? Search chaining. In fact, this is the problem that lead -us to initially conceive of search chaining! +There is no simple fix for this, and it is the price we pay for giving the inversion so much flexibility in how it +reconstructs the source's light. The solution to this problem? Search chaining, which we covered at the end of +chapter 2 (tutorials 9-11). In fact, this is the problem that led us to initially conceive of search chaining! The idea is simple, we write a pipeline that begins by modeling the source galaxy's light using a light profile, thereby -initializing the priors for the lens galaxy's light and mass. Then, when we switch to an `Inversion` in the next -search, the mass model starts in the correct regions of parameter space and does not get lost sampling these +initializing the priors for the lens galaxy's light and mass. Then, when we switch to an `Inversion` in the next +search, the mass model starts in the correct regions of parameter space and does not get lost sampling these incorrect solutions. The following paper discusses these solutions in more detail (https://arxiv.org/abs/2012.04665). @@ -202,8 +202,8 @@ def perform_fit_with_lens__source_galaxy(dataset, lens_galaxy, source_galaxy): simultaneously fit and subtract the lens galaxy's light using a light profile whilst reconstructing the source's light using an inversion. -To do this, all we have to do is give the lens galaxy a light profile and use the tracer and fit objects we are used -too:. +To do this, all we have to do is give the lens galaxy a light profile and use the tracer and fit objects we are +used to. """ dataset_name = "lens_sersic" dataset_path = Path("dataset") / "imaging" / dataset_name @@ -306,11 +306,11 @@ def perform_fit_with_lens__source_galaxy(dataset, lens_galaxy, source_galaxy): """ __Wrap Up__ -And with that, we're done. I'll end by pointing out a few things about what we've covered to get you thinking about -the next tutorial on adaption. - - - When the lens galaxy's light is subtracted perfectly it leaves no residuals. However, if it isn't subtracted - perfectly it does leave residuals, which will be fitted by the inversion. If the residual are significant this is - going to impact the source reconstruction negatively and can lead to some pretty nasty systematics. In the next - chapter, we'll learn how our adaptive analysis can prevent this residual fitting. +And with that, we're done. I'll end by pointing out a few things about what we've covered to get you thinking about +the adaption tutorials later in this chapter. + + - When the lens galaxy's light is subtracted perfectly it leaves no residuals. However, if it isn't subtracted + perfectly it does leave residuals, which will be fitted by the inversion. If the residuals are significant this is + going to impact the source reconstruction negatively and can lead to some pretty nasty systematics. In the adaption + tutorials at the end of this chapter, we'll learn how our adaptive analysis can prevent this residual fitting. """ diff --git a/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py b/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py index 165526d..df7e27d 100644 --- a/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py +++ b/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py @@ -1,5 +1,5 @@ """ -Tutorial 7: Adaptive Pixelization +Tutorial 8: Adaptive Pixelization ================================= In this tutorial we will introduce a new `Pixelization` object, which uses an `Overlay` image-mesh and a `Delaunay` @@ -12,7 +12,7 @@ __Contents__ - **Initial Setup:** We'll use the same strong lensing data as the previous tutorial, where. -- **Advantages and Disadvatanges:** Lets think about the rectangular pixelization. +- **Advantages and Disadvantages:** Lets think about the rectangular pixelization. - **Image Mesh:** The Delaunay mesh is an irregular grid of pixels (or triangles) in the source-plane. - **Regularization:** On the rectangular grid, we regularized each source pixel with its 4 neighbors. - **Wrap Up:** Summary of the script and next steps. @@ -114,12 +114,12 @@ aplt.subplot_fit_imaging_of_planes(fit=fit) """ -__Advantages and Disadvatanges__ +__Advantages and Disadvantages__ -Lets think about the rectangular pixelization. Is this the optimal way to reconstruct our source? Are there features -in the source-plane that arn`t ideal? How do you think we could do a better job? +Lets think about the rectangular pixelization. Is this the optimal way to reconstruct our source? Are there features +in the source-plane that aren't ideal? How do you think we could do a better job? -There are a number of reasons the rectangular pixelization is not optimal, and is infact a pretty poor method to +There are a number of reasons the rectangular pixelization is not optimal, and it is in fact a pretty poor method to model strong lenses! So what is wrong with the grid? Well, lets think about the source reconstruction. @@ -149,7 +149,7 @@ __Image Mesh__ The Delaunay mesh is an irregular grid of pixels (or triangles) in the source-plane. We must first therefore determine -a set of (y,x) source-plane coordinates defining this grid, specifically where each triangle vertex is loated. +a set of (y,x) source-plane coordinates defining this grid, specifically where each triangle vertex is located. We do this using an `image_mesh`, which defines a method to determine a set of coordinates in the image-plane which are ray-traced to the source-plane. These traced coordinates are the triangle vertexes of our source-pixel mesh. @@ -164,7 +164,7 @@ image_plane_mesh_grid = image_mesh.image_plane_mesh_grid_from(mask=dataset.mask) """ -We can plot this grid over the image, to see that it is a coarse grid of (y,x) coordinates laid ove the image. +We can plot this grid over the image, to see that it is a coarse grid of (y,x) coordinates laid over the image. """ aplt.plot_array(array=dataset.data, title="Data") @@ -201,7 +201,7 @@ """ A closer inspection of the pixelization shows the improvement. -We are using fewer pixels than the rectangular grid (400, instead of 1600) and reconstructing the source is far +We are using fewer pixels than the rectangular grid (400, instead of 1600) and reconstructing the source in far greater detail! """ aplt.subplot_fit_imaging_of_planes(fit=fit) @@ -217,13 +217,13 @@ __Wrap Up__ -The `Overlay` image-mesh and `Delaunay` mesh is still far from optimal. There are lots of source-pixels effectively f -itting just noise. We can achieve even better solutions if the central regions of the source were reconstructed using -more pixels and fewer source pixels are used in the outskirts of the source plane. +The `Overlay` image-mesh and `Delaunay` mesh is still far from optimal. There are lots of source-pixels effectively +fitting just noise. We could achieve even better solutions if the central regions of the source were reconstructed +using more pixels, and fewer source pixels were used in the outskirts of the source plane. -Tutorials 9, 10 and 11 show even more advanced and adaptive pixelizations which do just this, by adapting to the +Tutorials 10, 11 and 12 show even more advanced and adaptive pixelizations which do just this, by adapting to the source galaxy's morphology rather than the mass model magnification. -In the mean time, you may wish to experiment with using both Delaunay and Delaunay grids to fit -lenses which can be easily achieve by changing the input pixelization given to a pipeline. +In the mean time, you may wish to experiment with using both rectangular and Delaunay meshes to fit +lenses, which is easily achieved by changing the input pixelization given to a pipeline. """ diff --git a/scripts/chapter_3_pixelizations/tutorial_9_model_fit.py b/scripts/chapter_3_pixelizations/tutorial_9_model_fit.py index 6d02e54..32c0ca4 100755 --- a/scripts/chapter_3_pixelizations/tutorial_9_model_fit.py +++ b/scripts/chapter_3_pixelizations/tutorial_9_model_fit.py @@ -1,5 +1,5 @@ """ -Tutorial 8: Model-Fit +Tutorial 9: Model-Fit ===================== You should now perform lens modeling using a pixelization, which is described fully in the example: From d71cf7cbe47a67e54db668f290f6b817ba4f0fe9 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 12:54:49 +0000 Subject: [PATCH 14/22] =?UTF-8?q?docs:=20write=20chapter=204=20tutorial=20?= =?UTF-8?q?5=20=E2=80=94=20cluster=20scale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Defines the cluster regime (30+ member galaxies, >1e14 Msun, many sources at different redshifts), explains multi-plane ray tracing at HowTo level, motivates the move to point-source position fitting, and teaches the CSV interface for composing member catalogues into a factor-graph model. A dedicated results section walks through accessing the multi-plane tracer, per-member profiles, source-plane positions, magnifications and errors. Backed by a new cluster simulator producing the imaging, CSV catalogues and point datasets. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_5_cluster_scale.py | 697 ++++++++++++++++++ scripts/simulator/cluster.py | 519 +++++++++++++ 2 files changed, 1216 insertions(+) create mode 100644 scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py create mode 100644 scripts/simulator/cluster.py diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py b/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py new file mode 100644 index 0000000..354ed2c --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py @@ -0,0 +1,697 @@ +""" +Tutorial 5: Cluster Scale +========================= + +Throughout this chapter we have been climbing a ladder of scale: from a single lens galaxy with a couple of +extra galaxies nearby, to multi-galaxy lenses, to galaxy groups whose members share a common dark matter halo. + +This tutorial climbs the final rung: **galaxy clusters**, the most massive gravitationally-bound structures in +the Universe. A cluster-scale strong lens contains: + +- **30+ to hundreds of lens galaxies**: a brightest cluster galaxy (BCG) and bright satellites, plus a large + population of lower-mass member galaxies, all embedded in... + +- **A cluster-scale dark matter halo of more than 10^14 solar masses** (the most massive exceed 10^15 solar + masses) — hundreds of times more massive than the halo of a single lens galaxy. + +- **Many multiply-imaged background sources** — often tens of them — and, crucially, these sources typically + all sit at **different redshifts**. Light from each source therefore traverses a different path through the + Universe, and modeling them together requires **multi-plane ray tracing**, which we explain below. + +The science a cluster lens delivers is different from the galaxy-scale lensing of earlier chapters: + +- **Extreme magnification**: near a cluster's critical curves, magnifications of tens to hundreds are common + (compared to the factors of a few of galaxy-scale lensing). Clusters act as natural telescopes, letting us + study intrinsically faint galaxies in the early Universe that would otherwise be invisible — many of the + most distant galaxies known were discovered behind lensing clusters. + +- **Mapping the cluster's mass**: every multiply-imaged source constrains the cluster's total mass + distribution along a different line of sight. With many sources, the mass model pins down the shape of the + cluster's dark matter halo and the substructure within it — the granularity of dark matter on sub-cluster + scales — providing some of the sharpest tests of the cold dark matter model. + +The modeling toolkit also changes at this scale. Fitting the extended arcs of every source, with a light +profile or pixelization each, is computationally prohibitive when there are tens of sources and hundreds of +member galaxies. The standard approach instead fits only the **positions** of each source's multiple images — +point-source modeling — and drives the mass model from spreadsheet-editable **CSV catalogues**, because +writing Python model code for hundreds of galaxies by hand is not sensible either. + +__Contents__ + +- **Multi-Plane Ray Tracing:** What it means for sources at different redshifts to be lensed together. +- **Dataset:** Load the simulated cluster's CCD imaging and inspect the true multi-plane tracer. +- **Point Source Modeling:** Why cluster modeling fits multiple-image positions rather than extended arcs. +- **Point Datasets:** The per-source multiple-image positions, loaded from a single hand-editable CSV. +- **The CSV Interface:** The named-galaxy model CSVs and the scaling-member catalogue CSV. +- **Point Solver:** The solver which finds the image-plane multiple images of a point source. +- **Model:** Compose the four-tier cluster model (main lenses, scaling members, host halo, sources). +- **Analysis + Factor Graph:** One analysis per source dataset, combined into a single global fit. +- **Search:** Configure the Nautilus non-linear search. +- **Model Fit:** Run the fit. +- **Results:** A thorough tour of results access for a cluster fit — tracer, per-member profiles, + solved source-plane positions, magnifications and image-plane validation. +- **Customization:** Where to go for the full point-source customization options. +- **Wrap Up:** Summary and the hand-off to weak lensing. + +__Multi-Plane Ray Tracing__ + +Every lens system in the tutorials so far had two planes: an image plane (the lens galaxies, all at one +redshift) and a source plane (the lensed galaxy). The lens equation was applied once, mapping image-plane +coordinates to source-plane coordinates via the deflection angles: + +$\beta = \theta - \alpha(\theta)$ + +A cluster breaks this picture, because its sources sit at different redshifts. Consider our simulated cluster, +which has lens galaxies at $z = 0.5$ and two sources, at $z = 1.0$ and $z = 2.0$: + +- Light from the $z = 1.0$ source is deflected by the $z = 0.5$ cluster and travels to us: the familiar + two-plane system. + +- Light from the $z = 2.0$ source first passes the $z = 1.0$ plane, then the $z = 0.5$ cluster plane. If any + galaxy at $z = 1.0$ had mass, it would deflect this light too — the deflections of successive planes + accumulate, each applied at the position the ray has reached by that plane. + +This is **multi-plane ray tracing**: the lens equation is applied recursively, plane by plane in redshift +order. There is a second, subtler effect: the strength of a deflection depends on the distances between the +observer, the deflector and the source. The same cluster bends light from a $z = 2.0$ source through a larger +effective angle than light from a $z = 1.0$ source, because the geometry of the light paths differs. The +recursive lens equation accounts for this by scaling each plane's deflections by ratios of cosmological +(angular diameter) distances. + +The maths is more bookkeeping than new physics, and the good news is that the `Tracer` handles all of it +automatically: give it galaxies at three or more redshifts and it groups them into planes, orders them, scales +their deflections and applies the recursion. Every source's redshift must simply be *correct* — hardcoding the +wrong redshift silently produces the wrong multi-plane geometry, which is why the dataset CSVs below carry a +redshift for every source. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +import numpy as np +from pathlib import Path + +import autofit as af +import autolens as al +import autolens.plot as aplt + +""" +__Dataset__ + +We use a simulated cluster whose scale is kept deliberately small so it runs quickly, but which contains every +ingredient of the cluster regime: 2 main lens galaxies (a BCG and a satellite), 10 lower-mass member galaxies +on a luminosity-mass scaling relation, a 10^15.3 solar-mass dark matter halo, and 2 multiply-imaged sources at +different redshifts (z = 1.0 and z = 2.0). A real cluster simply has more of everything — and we will see that +scaling this model up to hundreds of members does not add a single free parameter. +""" +dataset_name = "simple" +dataset_path = Path("dataset") / "cluster" / dataset_name + +""" +__Dataset Auto-Simulation__ + +If the dataset does not already exist on your system, it will be created by running the corresponding +simulator script. This ensures that all example scripts can be run without manually simulating data first. +""" +if al.util.dataset.should_simulate(str(dataset_path)): + import subprocess + import sys + + subprocess.run( + [sys.executable, "scripts/simulator/cluster.py"], + check=True, + ) + +""" +We first load and plot the cluster's CCD imaging. Note the pixel scale of 0.2" and the sheer size of the +field: 100" x 100", compared to the ~6" fields of the galaxy-scale tutorials. The Einstein radius of a +10^15 solar-mass cluster is ~20-30", so its multiple images and arcs are spread across a region hundreds of +times larger in area than a galaxy-scale lens. + +The imaging is loaded for visualization only — as we discuss next, the model is not fitted to these pixels. +""" +data = al.Array2D.from_fits(file_path=dataset_path / "data.fits", pixel_scales=0.2) + +aplt.plot_array(array=data, title="Cluster CCD Imaging") + +""" +The simulator saved the true `Tracer` used to make this dataset, which we can load to inspect the multi-plane +structure described above. The tracer has three planes: the lens plane at z = 0.5 (holding all 13 lens-plane +galaxies — 2 main galaxies, 10 scaling members and the dark matter halo) and one source plane per source. +""" +tracer_true = al.from_json(file_path=dataset_path / "tracer.json") + +print(f"Number of planes: {len(tracer_true.planes)}") +print(f"Plane redshifts: {[float(plane.redshift) for plane in tracer_true.planes]}") +print(f"Galaxies in lens plane: {len(tracer_true.planes[0])}") + +""" +__Point Source Modeling__ + +In every previous tutorial we fitted the data pixel-by-pixel: a model image of the lens and source light was +computed, convolved with the PSF and compared to every image pixel. For a cluster this becomes computationally +prohibitive: + +- Every one of the tens of sources needs its own light model (or pixelization), each adding parameters (or an + expensive linear inversion) to the fit. + +- The image is enormous — our modest simulated cluster already spans 500 x 500 pixels — and the deflection + angles of hundreds of member galaxies would need evaluating at every one of them, for every likelihood + evaluation. + +The standard approach in cluster lensing therefore simplifies the data dramatically: each multiply-imaged +source is reduced to the **positions of its multiple images** — the (y,x) coordinates of the brightest pixel +of each image, measured from the imaging. The model then only has to answer a much cheaper question: does this +mass model ray-trace all of a source's observed image positions back to the same source-plane location? + +This is **point-source modeling**. We are deliberately discarding the information in the arcs' extended light +in exchange for a likelihood that is fast enough to evaluate with hundreds of galaxies and tens of sources. +(For lensed quasars and supernovae — genuine point sources — nothing is even discarded.) Extended-source +cluster modeling, where individual arcs are fitted at pixel level with the pixelizations of the previous +chapter, does exist in **PyAutoLens** as a specialised follow-up analysis — see the `autolens_workspace` +cluster examples — but position fitting is the workhorse that published cluster mass models are built on. + +__Point Datasets__ + +The positions of each source's multiple images are stored in a single CSV file, `point_datasets.csv`, with +one row per observed multiple image: + + - `name`: the source identifier (e.g. `point_0`). All rows sharing a `name` belong to the same source. + - `y`, `x`: the image-plane position of the multiple image, in arc-seconds. + - `positions_noise`: the positional uncertainty in arc-seconds — how precisely the image's centroid is + measured (for space-telescope imaging ~0.005", set by PSF-fitting precision, not the pixel scale). + - `redshift`: the source redshift, which every row of a group must share. This column is what makes the + multi-plane geometry reproducible from the file alone. + +This CSV is the recommended input format for cluster datasets because it is hand-editable: measuring your own +cluster's multiple images means filling in a spreadsheet, not writing Python. + +`al.list_from_csv` loads the file into a list of `PointDataset` objects, one per source. +""" +dataset_list = al.list_from_csv(file_path=dataset_path / "point_datasets.csv") + +for dataset in dataset_list: + print("Point Dataset Info:") + print(dataset.info) + print(f"Redshift: {dataset.redshift}") + +""" +Plotting each dataset shows just how sparse point-source data is: a handful of (y,x) coordinates per source. +That a full cluster mass model can be constrained by so few numbers is because each coordinate is measured to +milli-arcsecond precision, and because every source at its own redshift probes the mass distribution +differently. +""" +for dataset in dataset_list: + aplt.plot_grid( + grid=al.Grid2DIrregular(np.atleast_2d(dataset.positions)), + title=dataset.name, + ) + +""" +__The CSV Interface__ + +With hundreds of member galaxies, composing the lens model in Python — one `af.Model(al.Galaxy)` per galaxy, +as in every previous tutorial — stops being sensible. The cluster workflow therefore defines the model in CSV +files as well, which the simulator wrote alongside the data: + + - `mass.csv`: every individually-modelled mass profile — the two main lens galaxies' `dPIEMassSph` profiles + and the host halo's `NFWMCRLudlowSph`. + - `light.csv`: the light profiles (not used in point-source modeling, since light does not lens). + - `point.csv`: the source galaxies' `Point` components. + +Each row of these CSVs carries: + + - `galaxy`: a galaxy name (e.g. `lens_0`, `host_halo`, `source_0`). Rows sharing a name compose into one + galaxy. + - `attr_name`: the attribute the profile is bound to on the galaxy (e.g. `mass`, `dark`, `point_0`). + - `profile_class`: the profile class name (e.g. `dPIEMassSph`), looked up in `al.mp` / `al.lp` / `al.ps`. + - The profile's constructor parameters as columns (tuples like `centre` split into `y` / `x`); parameters a + row's class does not use are left blank. + - `redshift`: the galaxy's redshift. + +The lower-mass member population lives in a fourth, simpler catalogue, `scaling_galaxies.csv`, with one row +per member and columns `y, x, luminosity`. No profile class, no mass parameters — because, as the previous +tutorial showed, the members' masses are not free parameters but derive from their luminosities via a scaling +relation. The catalogue is exactly what an observer measures: where each member is and how bright it is. + +This is the key scaling property of the CSV interface: modeling a richer cluster means appending rows to +`scaling_galaxies.csv` (and, for another individually-modelled galaxy or halo, to `mass.csv`) — the Python +below does not change, and the number of free parameters does not grow with the member count. + +We load the mass and point families (`al.galaxy_models_from_csv`) and the member catalogue +(`al.galaxy_table_from_csv`): +""" +mass_table = al.galaxy_models_from_csv( + file_path=dataset_path / "mass.csv", family="mass" +) +point_table = al.galaxy_models_from_csv( + file_path=dataset_path / "point.csv", family="point" +) + +scaling_galaxies_table = al.galaxy_table_from_csv( + file_path=dataset_path / "scaling_galaxies.csv" +) +scaling_galaxies_centres = scaling_galaxies_table.centres +scaling_galaxies_luminosity_list = scaling_galaxies_table.luminosities + +print(f"Scaling galaxies in catalogue: {len(scaling_galaxies_luminosity_list)}") + +""" +In a real analysis the member centres and luminosities come from light fits to the imaging data (or an +external photometric catalogue), and the main-galaxy centres in `mass.csv` are pinned to the observed light +centres. Fixing the centres to observed values is essential at cluster scale: a handful of multiple-image +positions cannot constrain hundreds of free centre coordinates, but the imaging measures them for free. + +__Point Solver__ + +Point-source modeling needs one new piece of machinery: given a mass model and a source-plane (y,x) +coordinate, where in the image plane do its multiple images appear? Answering this means solving the lens +equation *backwards*, which has no analytic solution. + +The `PointSolver` solves it numerically: it tiles the image plane with triangles, ray-traces each triangle's +corners to the source plane, keeps the triangles that land on the source-plane coordinate, and subdivides +them repeatedly until the image positions are located to a precision of `pixel_scale_precision`. + +The solver's grid must span the full 100" cluster field — the multiple images sit tens of arc-seconds from +the cluster centre. The `magnification_threshold` discards heavily demagnified images (e.g. the faint central +image of a typical lens configuration, which real observations do not detect). +""" +grid = al.Grid2D.uniform( + shape_native=(100, 100), + pixel_scales=1.0, # The pixel-scale converts pixel units to arc-seconds. +) + +solver = al.PointSolver.for_grid( + grid=grid, pixel_scale_precision=0.001, magnification_threshold=0.1 +) + +""" +__Model__ + +We now compose the cluster model, which has four tiers of component — the same four tiers every published +cluster mass model is built from: + + - **Main lens galaxies (2)**: the BCG and satellite, modelled individually with `dPIEMassSph` profiles. As + the previous tutorial on group-scale lenses discussed, the dPIE is the standard truncated profile of this + regime: members orbiting in the cluster's shared potential have their outer dark matter tidally stripped, + so their mass genuinely ends at a finite truncation radius `r_cut`. Each main galaxy has free `sigma` (its + fiducial velocity dispersion, setting the lens strength) and free `r_cut`, with its centre fixed to the + observed light centre [4 free parameters]. + + - **Scaling-tier members (10)**: `dPIEMassSph` profiles with centres fixed from the catalogue and `sigma` / + `r_cut` derived from each member's luminosity via the scaling relation introduced earlier in this chapter: + sigma = sigma_ref * (L / L_ref)^0.25 and r_cut = r_cut_ref * (L / L_ref)^0.7. Only the normalization + `sigma_ref` — the velocity dispersion of a member at the reference luminosity — is free. Whether the + catalogue holds 10 members or 300, the tier costs [1 free parameter]. + + - **Host dark matter halo (1)**: a standalone galaxy carrying the cluster's `NFWMCRLudlowSph` halo, centred + on the BCG, with a free total mass `mass_at_200` [1 free parameter]. + + - **Source galaxies (2)**: parameter-free `PointSolved` components. Rather than sampling each source's + (y,x) source-plane centre as free parameters, the fit solves for the centre analytically — the + precision-weighted mean of the back-traced image positions. With tens of sources this matters: it removes + two parameters per source from the search [0 free parameters]. + +**Total: N = 6 free parameters** — for a model containing 13 galaxies and 2 sources. This is the punchline of +the cluster workflow: catalogues and scaling relations decouple the model's physical richness from the +dimensionality of the non-linear search. + +`al.galaxy_af_models_from_csv_tables` converts the CSV tables into a dictionary of `af.Model(Galaxy)` objects +keyed by galaxy name, with every CSV value fixed as a default. We then selectively promote parameters to free +priors — exactly the `af.Model` customization API used throughout the earlier chapters, just applied to +models built from files instead of Python. +""" +redshift_lens = 0.5 +source_redshifts = [dataset.redshift for dataset in dataset_list] + +galaxy_models = al.galaxy_af_models_from_csv_tables(mass_table, point_table) + +""" +The main lens galaxies get free dPIE `sigma` / `r_cut`; their centres and redshifts stay fixed at the CSV +values, and `r_core` stays fixed at the CSV's 0.0 (the vanishing-core convention discussed in the previous +tutorial). The cosmology constants `H0` / `Om0` are pinned explicitly: they are model *constants*, not +parameters to sample — left unset they would inherit priors from the configuration files and float. +""" +for name in ("lens_0", "lens_1"): + galaxy_models[name].mass.sigma = af.UniformPrior( + lower_limit=50.0, upper_limit=600.0 + ) + galaxy_models[name].mass.r_cut = af.UniformPrior(lower_limit=2.0, upper_limit=40.0) + galaxy_models[name].mass.H0 = 67.66 + galaxy_models[name].mass.Om0 = 0.30966 + +""" +The host halo gets a free `mass_at_200`, spanning the full range of cluster masses with a log-uniform prior +(mass scales spanning orders of magnitude are sampled in log space, as we saw for intensities in earlier +chapters). +""" +galaxy_models["host_halo"].dark.mass_at_200 = af.LogUniformPrior( + lower_limit=10**14.5, upper_limit=10**16.0 +) + +""" +Each source's `point_i` component is swapped for the parameter-free `al.ps.PointSolved`. The name pairing +(`point_0`, `point_1`) is what links each model component to the `PointDataset` with the same name — in a +multi-source cluster this pairing is what guarantees every source's positions are fitted by the correct +component. +""" +for i, dataset in enumerate(dataset_list): + setattr(galaxy_models[f"source_{i}"], f"point_{i}", af.Model(al.ps.PointSolved)) + +""" +The scaling tier is composed in a loop over the catalogue, exactly as in the previous tutorial: the single +shared prior `scaling_sigma_ref` is defined once outside the loop, and each member's `sigma` / `r_cut` derive +from it via that member's luminosity ratio. The truth value used by the simulator is sigma_ref = 85 km/s. +""" +scaling_sigma_ref = af.UniformPrior(lower_limit=0.0, upper_limit=200.0) +scaling_sigma_exponent = 0.25 # alpha (Faber-Jackson) +scaling_gamma = 0.2 # mass-to-light tilt, fixed +scaling_rcut_exponent = 1.0 + scaling_gamma - 2.0 * scaling_sigma_exponent # 0.7 + +reference_luminosity = 1.0 +scaling_r_core_fixed = 0.0 +scaling_r_cut_ref_fixed = 5.0 + +scaling_galaxies_list = [] +for centre, luminosity in zip( + scaling_galaxies_centres, scaling_galaxies_luminosity_list +): + luminosity_ratio = luminosity / reference_luminosity + + mass = af.Model(al.mp.dPIEMassSph) + mass.centre = tuple(centre) + mass.sigma = scaling_sigma_ref * luminosity_ratio**scaling_sigma_exponent + mass.r_core = scaling_r_core_fixed + mass.r_cut = scaling_r_cut_ref_fixed * luminosity_ratio**scaling_rcut_exponent + mass.redshift_object = redshift_lens + mass.redshift_source = max(source_redshifts) + mass.H0 = 67.66 + mass.Om0 = 0.30966 + + scaling_galaxies_list.append(af.Model(al.Galaxy, redshift=redshift_lens, mass=mass)) + +scaling_galaxies = af.Collection(scaling_galaxies_list) + +""" +The named galaxies and the scaling tier combine into the overall model. Printing `model.info` confirms the +parameter count: for all its 15 galaxies, the search explores just 6 dimensions. +""" +model = af.Collection( + galaxies=af.Collection(**galaxy_models), + scaling_galaxies=scaling_galaxies, +) + +print(model.info) + +""" +__Analysis + Factor Graph__ + +Each source's dataset gets its own `AnalysisPoint`, which defines the log likelihood for that source: how +well do the model's predictions match this source's observed image positions? + +`fit_positions_cls=al.FitPositionsSourceSolved` selects the **solved source-plane** likelihood — the default +cluster configuration. Rather than forward-solving the lens equation for the model's image positions on every +likelihood evaluation (accurate but expensive), it ray-traces the *observed* positions back to the source +plane and measures how tightly they converge around the analytically-solved source centre, with a weighting +that maps source-plane scatter back to image-plane precision. No lens-equation solve per evaluation makes +cluster-scale inference fast; the `PointSolver` is reserved for validating the final model below. + +The analyses are then combined through a **factor graph**, the same multi-dataset machinery used for +multi-wavelength imaging: each analysis becomes a factor sharing the one global model, and the total log +likelihood is the sum over the per-source likelihoods. This is what lets every source — each at its own +redshift, each with its own multi-plane geometry — constrain the same cluster mass model simultaneously. +""" +analysis_list = [ + al.AnalysisPoint( + dataset=dataset, + solver=solver, + fit_positions_cls=al.FitPositionsSourceSolved, + use_jax=True, + ) + for dataset in dataset_list +] + +analysis_factor_list = [ + af.AnalysisFactor(prior_model=model, analysis=analysis) + for analysis in analysis_list +] + +factor_graph = af.FactorGraphModel(*analysis_factor_list, use_jax=True) + +""" +__Search__ + +We fit the model with Nautilus. The parameter space is only 6-dimensional, so a modest number of live points +suffices; a richer cluster with several individually-modelled galaxies would warrant more. +""" +search = af.Nautilus( + path_prefix=Path("howtolens", "chapter_4"), + name="tutorial_5_cluster_scale", + unique_tag=dataset_name, + n_live=100, + n_batch=50, + iterations_per_quick_update=10000, +) + +""" +__Model Fit__ + +We pass the factor graph's global model and the factor graph itself (as the analysis) to the search. Because +the likelihood involves no pixel-level computation, a full cluster point-source fit takes minutes — this is +the payoff of point-source modeling, given that a pixel-level fit of the same system would take days. +""" +print( + """ + The non-linear search has begun running. + + This Jupyter notebook cell will progress once the search has completed - this could take a few minutes! + + On-the-fly updates every iterations_per_quick_update are printed to the notebook. + """ +) + +result_list = search.fit(model=factor_graph.global_prior_model, analysis=factor_graph) + +print("The search has finished run - you may now continue the notebook.") + +""" +__Results__ + +A cluster fit produces the most complex results object we have met: many galaxies across multiple planes, +tiers whose parameters are derived rather than sampled, and one result per source dataset. This section tours +how to pull out each quantity you will actually need — it is worth working through slowly, because navigating +results is half the practical skill of cluster modeling. + +A factor-graph fit returns one `Result` per dataset (in the same order as `dataset_list`). All results share +the same global model — and therefore the same samples and maximum likelihood model — but each carries its own +dataset and its own maximum likelihood `FitPointDataset`. +""" +print(f"Number of results (one per source dataset): {len(result_list)}") + +result = result_list[0] + +""" +__Results: The Maximum Likelihood Instance__ + +The `max_log_likelihood_instance` is the model instance with the highest likelihood found. Its structure +mirrors the model composition above: named galaxies under `.galaxies`, the scaling tier under +`.scaling_galaxies`. We can read off the best-fit parameters of every tier. +""" +instance = result.max_log_likelihood_instance + +print("Max Log Likelihood Model:") +print(f"BCG sigma: {instance.galaxies.lens_0.mass.sigma:.1f} km/s") +print(f"BCG r_cut: {instance.galaxies.lens_0.mass.r_cut:.2f} arcsec") +print(f"Satellite sigma: {instance.galaxies.lens_1.mass.sigma:.1f} km/s") +print(f"Halo mass_at_200: {instance.galaxies.host_halo.dark.mass_at_200:.2e} solar masses") + +""" +__Results: Per-Member Profiles__ + +The scaling tier's single free parameter was `sigma_ref`, but the instance contains the fully-realised +`dPIEMassSph` of every member — the scaling relation has been applied, so each member carries the `sigma` and +`r_cut` its luminosity implies. This is how you would tabulate the inferred mass of every member galaxy in a +real cluster analysis. +""" +for i, member in enumerate(instance.scaling_galaxies): + print( + f"Member {i}: centre={member.mass.centre}, " + f"sigma={member.mass.sigma:.1f} km/s, r_cut={member.mass.r_cut:.2f} arcsec" + ) + +""" +__Results: The Tracer__ + +`max_log_likelihood_tracer` assembles every galaxy of the instance — named tiers and scaling members alike — +into the best-fit multi-plane `Tracer`. This is the object to use for any lensing calculation with the +best-fit mass model: convergence maps, deflection fields, critical curves and caustics, all computed exactly +as in the earlier chapters, but now for the full cluster. +""" +tracer = result.max_log_likelihood_tracer + +print(f"Tracer planes: {[float(plane.redshift) for plane in tracer.planes]}") +print(f"Galaxies in lens plane: {len(tracer.planes[0])}") + +aplt.subplot_tracer(tracer=tracer, grid=grid) + +""" +__Results: Solved Source-Plane Positions__ + +Each result's `max_log_likelihood_fit` is the `FitPointDataset` of that source. Because we fitted with the +solved source-plane likelihood, the fit's `positions` object carries the analytically-solved source-plane +centre — the model's inferred true position of the source, before lensing. Its `residual_map` lists how far +each back-traced image lands from that centre (in the source plane): for a good model these residuals are +tiny, since all images of a source originate from the same point. +""" +for result in result_list: + fit = result.max_log_likelihood_fit + + print(f"Source '{result.max_log_likelihood_fit.dataset.name}':") + print(f" Solved source-plane centre: {np.asarray(fit.positions.source_plane_coordinate)}") + print(f" Source-plane residuals: {np.asarray(fit.positions.residual_map)}") + print(f" Log likelihood: {float(fit.positions.log_likelihood):.2f}") + +""" +We can perform the same back-tracing manually with the tracer, which makes explicit what the fit just did: +ray-trace each source's observed image positions through the multi-plane lens equation to that source's own +plane. `plane_index_via_redshift_from` maps a source redshift to its plane, and `traced_grid_2d_list_from` +returns the positions traced to every plane — the multi-plane generalisation of the two-plane ray tracing of +chapter 1. +""" +for dataset in dataset_list: + plane_index = tracer.plane_index_via_redshift_from(redshift=dataset.redshift) + traced_grids = tracer.traced_grid_2d_list_from(grid=dataset.positions) + + print(f"Source '{dataset.name}' (z={dataset.redshift}, plane {plane_index}):") + print(f" Back-traced source-plane positions: {traced_grids[plane_index].in_list}") + +""" +__Results: Magnifications__ + +The magnification of each multiple image tells us how much the cluster brightens the source at that position — +the "natural telescope" number. It is computed from the local distortion of the multi-plane deflection field +(its Hessian) at each observed position, via the `LensCalc` object. `plane_j` selects the source's plane, so +each source's magnifications are evaluated through its own multi-plane chain. + +At cluster scale, images near the critical curves can reach magnifications of tens to hundreds — this is +precisely the quantity you would quote when using the cluster to study an intrinsically faint background +galaxy, since the source's true luminosity is the observed luminosity divided by the magnification. +""" +for dataset in dataset_list: + plane_index = tracer.plane_index_via_redshift_from(redshift=dataset.redshift) + + lens_calc = al.LensCalc.from_tracer( + tracer=tracer, use_multi_plane=True, plane_j=plane_index + ) + magnifications = lens_calc.magnification_2d_via_hessian_from(grid=dataset.positions) + + print(f"Source '{dataset.name}' image magnifications: {np.abs(np.asarray(magnifications))}") + +""" +__Results: Image-Plane Validation__ + +The solved source-plane likelihood never solves the lens equation forwards, so it cannot tell us whether the +best-fit model predicts the *right number* of multiple images — a model that would produce an extra image, or +lose an observed one, looks the same to it. The standard final check is therefore to forward-solve the +best-fit model with the `PointSolver` and compare the predicted image positions to the observed ones, +per source. +""" +for result, dataset in zip(result_list, dataset_list): + fit = result.max_log_likelihood_fit + + source_plane_centre = tuple(np.asarray(fit.positions.source_plane_coordinate)) + + model_positions = solver.solve( + tracer=tracer, + source_plane_coordinate=source_plane_centre, + plane_redshift=dataset.redshift, + ) + + print(f"Source '{dataset.name}':") + print(f" Observed positions ({len(dataset.positions)}): {dataset.positions.in_list}") + print(f" Model positions ({len(model_positions)}): {model_positions.in_list}") + + aplt.plot_grid( + grid=model_positions, + title=f"Model Multiple Images: {dataset.name}", + ) + +""" +__Results: Samples and Errors__ + +Everything above used the maximum likelihood model, but the `Samples` object gives the full posterior — the +same API as chapter 2, unchanged by the cluster's complexity. Of particular scientific interest here are the +inferred halo mass and the scaling-relation normalization `sigma_ref` (whose truth value in the simulator was +85 km/s): the marginalised errors on these are what a cluster paper reports. +""" +samples = result_list[0].samples + +median_pdf = samples.median_pdf() + +print("Median PDF Model:") +print(f"Halo mass_at_200: {median_pdf.galaxies.host_halo.dark.mass_at_200:.2e}") +print(f"BCG sigma: {median_pdf.galaxies.lens_0.mass.sigma:.1f} km/s") + +upper_3_sigma = samples.values_at_upper_sigma(sigma=3.0) +lower_3_sigma = samples.values_at_lower_sigma(sigma=3.0) + +print("BCG sigma 3-sigma interval:") +print(f" {lower_3_sigma.galaxies.lens_0.mass.sigma:.1f}" + f" - {upper_3_sigma.galaxies.lens_0.mass.sigma:.1f} km/s") + +aplt.corner_anesthetic(samples=samples) + +""" +__Customization__ + +This tutorial used the default point-source setup throughout: `Point` / `PointSolved` source components, the +solved source-plane likelihood, and default `PointSolver` settings. Point-source modeling has a rich set of +options beyond these — image-plane likelihoods and their pairing schemes, free source centres, fitting the +fluxes of the multiple images, fitting time delays (the observable behind lensed-quasar cosmology) — and a +dedicated workspace guide covers them extensively: + + - `autolens_workspace/scripts/point_source`: the galaxy-scale point-source examples (lensed quasars and + supernovae), including the `fit.py` guide to every fit variant and the `features` folder (fluxes, time + delays, multiple sources). + - `autolens_workspace/scripts/guides/point_source_pairing.py`: the full matrix of position-fitting schemes + and when to use each. + - `autolens_workspace/scripts/cluster`: the cluster-scale workflow this tutorial is built on, including a + fit to real Hubble Space Telescope data of the cluster Abell 2744 with 188 catalogue members and 7 + sources, the CSV-schema guide (`csv_api.py`) and a step-by-step walkthrough of the point-source + likelihood (`likelihood_function.py`). + +__Wrap Up__ + +This tutorial reached the top of the strong-lensing mass ladder. Lets recap what we learnt: + +- **Clusters**: 30+ to hundreds of lens galaxies inside a dark matter halo of more than 10^14 solar masses, + lensing many background sources at once. Their science is extreme magnification — using the cluster as a + natural telescope onto the faint early Universe — and mapping the cluster's dark matter distribution. + +- **Multi-plane ray tracing**: cluster sources sit at different redshifts, so the lens equation is applied + recursively through the planes, with each plane's deflections scaled by cosmological distance ratios. The + `Tracer` handles this automatically, provided every source's redshift is set correctly. + +- **Point-source modeling**: fitting the extended light of every source is computationally prohibitive at + this scale, so the standard workflow fits the positions of each source's multiple images, reducing the + likelihood to source-plane geometry that evaluates in milliseconds. + +- **The CSV interface**: the data (`point_datasets.csv`), the individually-modelled galaxies (`mass.csv` / + `point.csv`) and the member catalogue (`scaling_galaxies.csv`) are all spreadsheet-editable files. Scaling + the model to a richer cluster is a row-append, not a code change. + +- **Six parameters, fifteen galaxies**: fixed observed centres, a scaling relation for the member population + and solved source centres decouple the model's physical richness from the dimensionality of the search. + +- **Results access**: per-member realised profiles, the multi-plane tracer, solved source-plane centres, + per-image magnifications and forward-solved image positions — the complete toolkit for interpreting a + cluster fit. + +Strong lensing — multiple images, arcs, Einstein rings — has carried us from single galaxies to the most +massive structures in the Universe. But a cluster's gravity does not stop deflecting light at the radius +where multiple images form. Far beyond it, every background galaxy is still subtly sheared — distorted by a +percent or less — and by measuring those distortions statistically across thousands of galaxies, the +cluster's mass can be mapped out to its edges. That is **weak lensing**, a different regime with different +data and different statistics, and it is where the next tutorial takes us +""" diff --git a/scripts/simulator/cluster.py b/scripts/simulator/cluster.py new file mode 100644 index 0000000..45e9921 --- /dev/null +++ b/scripts/simulator/cluster.py @@ -0,0 +1,519 @@ +""" +Simulator: Cluster +================== + +This script simulates a strong lens on the 'cluster' scale: 2 main lens galaxies (a brightest cluster +galaxy and a satellite), 10 lower-mass cluster member galaxies on a luminosity-mass scaling relation, +a cluster-scale dark matter halo not tied to any individual galaxy, and 2 multiply-imaged background +source galaxies at *different* redshifts (z = 1.0 and z = 2.0) — a genuine multi-plane lens. + +It is used to illustrate cluster-scale lens modeling in the HowToLens lecture series. + +Cluster modeling uses the *point source* API: rather than fitting the extended arc light of each +lensed source, only the image-plane positions of its multiple images are fitted. This script therefore +simulates point-source datasets (one per source) alongside CCD imaging, which in real datasets is used +to measure those positions and to visually confirm the lens configuration. + +__Contents__ + +- **Dataset Paths:** The `dataset_path` describes where the simulated cluster dataset is output to. +- **Redshifts:** The lens redshift and the two distinct source redshifts of the multi-plane system. +- **Galaxy Centres:** The centres of the main lens galaxies, scaling members, halo and sources. +- **Grids:** The imaging grid (with adaptive over sampling) and a coarse visualization grid. +- **Main Lens Galaxies:** The 2 individually-modelled cluster members, each a `SersicSph` light and `dPIEMassSph` mass. +- **Scaling Member Galaxies:** 10 lower-mass members whose masses derive from a luminosity-mass scaling relation. +- **Host Dark Matter Halo:** A standalone `NFWMCRLudlowSph` halo with `mass_at_200 = 10^15.3`. +- **Source Galaxies:** The 2 multi-plane background sources, each a `SersicCore` light + a `Point` component. +- **Ray Tracing:** Combine all galaxies into a single multi-plane `Tracer`. +- **Point Solver:** Solve the lens equation for the image-plane multiple-image positions of each source. +- **Point Datasets:** Collect the per-source positions (with noise) into `PointDataset` objects. +- **Combined CSV:** Write all point datasets to a single hand-editable CSV. +- **Scaling Galaxies CSV:** Write the scaling-member centres and luminosities to `scaling_galaxies.csv`. +- **Model CSVs:** Write the truth model to `mass.csv` + `light.csv` + `point.csv` (the named-galaxy CSV API). +- **Tracer json:** Save the true `Tracer` in the dataset folder as a .json file. +- **Imaging:** Simulate CCD imaging of the cluster and output it to .fits files. +- **Visualize:** Output subplots of the point datasets, tracer and imaging to the dataset path. + +__Model__ + +This script simulates a 'cluster-scale' strong lens where: + + - The 2 main lens galaxies have `SersicSph` light profiles and `dPIEMassSph` mass profiles. + - The 10 scaling-tier member galaxies have `dPIEMassSph` masses set by a luminosity-mass scaling relation. + - The cluster's dark matter halo is a standalone `NFWMCRLudlowSph` profile. + - The 2 source galaxies have `SersicCore` light profiles and `Point` components at z = 1.0 and z = 2.0. + +__Start Here Notebook__ + +If any code in this script is unclear, refer to the `autolens_workspace/*/cluster/simulator.ipynb` notebook. +""" + +from autolens import jax_wrapper # Sets JAX environment before other imports + +# from autolens import setup_notebook; setup_notebook() + +import jax +import jax.numpy as jnp +import numpy as np +from pathlib import Path + +import autolens as al +import autolens.plot as aplt + +""" +__Dataset Paths__ + +The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a +descriptive name. The cluster dataset is output to `howtolens/dataset/cluster/simple`, which the +tutorial on cluster-scale lensing loads via the auto-simulation guard. +""" +dataset_type = "cluster" +dataset_name = "simple" +dataset_path = Path("dataset", dataset_type, dataset_name) + +""" +__Redshifts__ + +All lens galaxies and the host dark matter halo sit at the lens redshift z = 0.5. The two sources sit +at *different* redshifts (z = 1.0 and z = 2.0), making this a genuine multi-plane lens: light from the +z = 2.0 source passes through the z = 1.0 plane on its way to us, so the `Tracer` must ray-trace +through every plane in redshift order. +""" +redshift_lens = 0.5 +source_redshifts = [1.0, 2.0] + +""" +__Galaxy Centres__ + +The host halo is anchored at the cluster centre (the origin); the two main galaxies are the central +brightest cluster galaxy (BCG) and a satellite offset to the upper-right. The 10 scaling-member +centres sit at radii of 5-15" from the centre — inside the strongly-lensed region of the host halo but +clear of the cores of the two main galaxies. The source centres are chosen so both sources land in the +strongly-lensed region and are multiply imaged. +""" +main_lens_centres = [ + (0.0, 0.0), # BCG at cluster centre + (10.0, 8.0), # satellite member +] + +scaling_galaxies_centres = [ + (5.5, -6.5), + (-7.5, 3.0), + (12.0, -5.0), + (-4.0, -9.0), + (3.0, 13.0), + (-14.0, 4.0), + (15.0, 9.0), + (-9.0, -12.0), + (8.5, 5.5), + (-6.5, 11.0), +] + +scaling_galaxies_luminosities = [ + 0.40, + 0.32, + 0.25, + 0.20, + 0.16, + 0.13, + 0.10, + 0.08, + 0.06, + 0.05, +] + +host_halo_centre = (0.0, 0.0) + +source_centres = [ + (0.3, 0.5), + (-0.8, 1.2), +] + +""" +__Grids__ + +The typical Einstein radius of a 10^15 solar-mass halo is ~20-30" and the member galaxies span ~30" +across, so the field must be large (100" x 100") to capture the multiple images and arcs — far bigger +than the galaxy-scale fields of earlier simulators. + +Two grids are used: a high-resolution `imaging_grid` for rendering the CCD image, with adaptive over +sampling around the centre of every cluster member, and a coarse `viz_grid` used only for the +visualization plots at the end of the script (which do not need full resolution). +""" +imaging_grid = al.Grid2D.uniform( + shape_native=(500, 500), + pixel_scales=0.2, +) + +over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from( + grid=imaging_grid, + sub_size_list=[32, 8, 2], + radial_list=[0.3, 0.6], + centre_list=main_lens_centres + scaling_galaxies_centres, +) + +imaging_grid = imaging_grid.apply_over_sampling(over_sample_size=over_sample_size) + +viz_grid = al.Grid2D.uniform(shape_native=(200, 200), pixel_scales=0.5) + +""" +__Main Lens Galaxies__ + +The 2 individually-modelled cluster members. Each has a `SersicSph` light profile (used for the CCD +imaging — the light plays no role in point-source modeling) and a `dPIEMassSph` mass profile, the +standard truncated mass profile for cluster members. Its parameters are Lenstool's native ones: + + - `sigma` (km/s): the fiducial velocity dispersion, setting the lens strength. + - `r_core` (arcsec): the core radius, fixed to 0 here (the standard vanishing-core convention). + - `r_cut` (arcsec): the truncation radius, beyond which the density falls off rapidly — the tidal + stripping physics of galaxies orbiting inside a cluster's shared potential. +""" +main_lens_dpie_params = [ + # (r_core, r_cut, sigma) per galaxy — arcsec, arcsec, km/s + (0.0, 20.0, 330.0), # BCG — strongest + (0.0, 12.0, 210.0), # satellite +] + +main_lens_sersic_params = [ + # (intensity, effective_radius, sersic_index) + (1.5, 3.0, 4.0), # BCG — bright and extended + (0.8, 1.5, 3.5), # satellite +] + +main_lens_galaxies = [] +for centre, (r_core, r_cut, sigma), (intensity, effective_radius, sersic_index) in zip( + main_lens_centres, main_lens_dpie_params, main_lens_sersic_params +): + bulge = al.lp.SersicSph( + centre=centre, + intensity=intensity, + effective_radius=effective_radius, + sersic_index=sersic_index, + ) + mass = al.mp.dPIEMassSph( + centre=centre, + sigma=sigma, + r_core=r_core, + r_cut=r_cut, + redshift_object=redshift_lens, + redshift_source=max(source_redshifts), + ) + main_lens_galaxies.append(al.Galaxy(redshift=redshift_lens, bulge=bulge, mass=mass)) + +""" +__Scaling Member Galaxies__ + +The 10 lower-mass cluster members are modelled collectively via a luminosity-mass scaling relation — +the convention used by essentially every published cluster strong-lensing analysis: + + sigma_i = sigma_ref * (L_i / L_ref) ** 0.25 + r_cut_i = r_cut_ref * (L_i / L_ref) ** 0.7 + r_core_i = 0 + +where `L_ref` is a fixed reference luminosity and `sigma_ref` is the fiducial velocity dispersion of a +galaxy at that reference luminosity. The truth value simulated here is `sigma_ref = 85.0` km/s — the +value the tutorial's model-fit seeks to recover with a single free parameter for the whole tier. +""" +scaling_sigma_ref_truth = 85.0 +scaling_sigma_exponent = 0.25 # alpha (Faber-Jackson) +scaling_gamma = 0.2 # mass-to-light tilt, fixed +scaling_rcut_exponent = 1.0 + scaling_gamma - 2.0 * scaling_sigma_exponent # 0.7 +reference_luminosity = 1.0 +scaling_r_core = 0.0 # vanishing core — fixed, never scaled +scaling_r_cut_ref = 5.0 + +scaling_galaxies = [] +for centre, luminosity in zip(scaling_galaxies_centres, scaling_galaxies_luminosities): + bulge = al.lp.SersicSph( + centre=centre, + intensity=luminosity, + effective_radius=0.8, + sersic_index=3.0, + ) + luminosity_ratio = luminosity / reference_luminosity + mass = al.mp.dPIEMassSph( + centre=centre, + sigma=scaling_sigma_ref_truth * luminosity_ratio**scaling_sigma_exponent, + r_core=scaling_r_core, + r_cut=scaling_r_cut_ref * luminosity_ratio**scaling_rcut_exponent, + redshift_object=redshift_lens, + redshift_source=max(source_redshifts), + ) + scaling_galaxies.append(al.Galaxy(redshift=redshift_lens, bulge=bulge, mass=mass)) + +""" +__Host Dark Matter Halo__ + +A standalone galaxy holding the cluster's dark matter halo. It has no light profile — it sits in the +tracer solely to contribute mass. `NFWMCRLudlowSph` is parameterised by the physical halo mass within +r_200 (`mass_at_200 = 10^15.3`, ~2 x 10^15 solar masses) and the redshifts; its concentration follows +from a concentration-mass relation. The `redshift_source` is anchored to the *furthest* source +(z = 2.0), the multi-plane convention used throughout (deflections are normalized to the final plane). +""" +host_halo = al.mp.NFWMCRLudlowSph( + centre=host_halo_centre, + mass_at_200=10**15.3, + redshift_object=redshift_lens, + redshift_source=max(source_redshifts), +) + +host_halo_galaxy = al.Galaxy(redshift=redshift_lens, dark=host_halo) + +""" +__Source Galaxies__ + +The 2 background sources at *different* redshifts. Each carries a `SersicCore` light profile (so the +lensed arcs appear in the CCD imaging) and a `Point` component whose multiple-image positions we solve +for below — those positions are the data the tutorial's model-fit uses. + +The attribute name of each `Point` (`point_0`, `point_1`) is important: it is the name that pairs each +model component to its `PointDataset` during modeling. +""" +source_galaxies = [] +for i, (centre, src_z) in enumerate(zip(source_centres, source_redshifts)): + bulge = al.lp.SersicCore( + centre=centre, + ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0 + 30.0 * i), + intensity=2.0, + effective_radius=0.3, + sersic_index=1.0, + ) + point = al.ps.Point(centre=centre) + source_galaxies.append( + al.Galaxy(redshift=src_z, bulge=bulge, **{f"point_{i}": point}) + ) + +""" +__Ray Tracing__ + +Combine the main lens galaxies, scaling members, host halo and sources into a single tracer. With +sources at distinct redshifts, the tracer automatically performs multi-plane ray tracing. +""" +tracer = al.Tracer( + galaxies=main_lens_galaxies + + scaling_galaxies + + [host_halo_galaxy] + + source_galaxies +) + +""" +__Point Solver__ + +The `PointSolver` solves the lens equation for the image-plane positions of each point source, by +ray-tracing triangles from the image plane to the source plane and iteratively refining those that +contain the source centre. At cluster scale (13 lens galaxies, multi-plane ray tracing) this solve is +expensive, so we accelerate it with JAX: `use_jax=True` plus a `jax.jit` wrapper around the solve call +compiles the triangle-refinement kernel once and reuses it for both sources. + +The solver's grid must span the full cluster field, because the multiple images sit at radii of +~20-30" from the cluster centre — far outside the arc-second scale grids of galaxy-scale lensing. + +`plane_redshift` is per-source and must be passed: it tells the solver which source plane to solve +for. Without it, the solver defaults to the tracer's final plane, which would silently place the +z = 1.0 source's images as if it sat at z = 2.0. +""" +from autolens.jax import register_tracer_classes + +register_tracer_classes(tracer) + +solver = al.PointSolver.for_grid( + grid=al.Grid2D.uniform(shape_native=(400, 400), pixel_scales=0.25), + pixel_scale_precision=0.001, + magnification_threshold=0.1, + use_jax=True, +) + + +def jitted_solve_for(plane_redshift): + @jax.jit + def jitted_solve(tracer, source_plane_coordinate): + return solver.solve( + tracer=tracer, + source_plane_coordinate=source_plane_coordinate, + plane_redshift=plane_redshift, + ).array + + return jitted_solve + + +positions_list = [] +for i, (src_centre, src_z) in enumerate(zip(source_centres, source_redshifts)): + coord = jnp.asarray(src_centre) + jitted_solve = jitted_solve_for(float(src_z)) + raw = np.asarray(jitted_solve(tracer, coord)) + finite = ~(np.isinf(raw).any(axis=1) | np.isnan(raw).any(axis=1)) + positions_list.append(al.Grid2DIrregular(raw[finite])) + + print(f"point_{i} (z={src_z}): {int(finite.sum())} multiple images solved") + +""" +__Point Datasets__ + +One `PointDataset` per source. The `name` (`point_0`, `point_1`) pairs each dataset with the matching +`Point` component in the lens model during modeling, and the `redshift` records each source's +redshift so the multi-plane geometry can be rebuilt when the dataset is loaded. + +The position uncertainty is 0.005" (5 mas), the centroid precision achievable by PSF fitting on +space-telescope imaging — not the imaging pixel scale. +""" +position_noise = 0.005 + +dataset_list = [] +for i, positions in enumerate(positions_list): + dataset = al.PointDataset( + name=f"point_{i}", + positions=positions, + positions_noise_map=position_noise, + redshift=source_redshifts[i], + ) + dataset_list.append(dataset) + +for i, dataset in enumerate(dataset_list): + al.output_to_json( + obj=dataset, + file_path=dataset_path / f"point_dataset_{i}.json", + ) + +""" +__Combined CSV__ + +For cluster workflows with many sources, a single CSV with one row per observed multiple image — +grouped by source `name`, with `y`, `x`, `positions_noise` and `redshift` columns — is far easier to +edit in a spreadsheet than many per-source files. `al.output_to_csv` writes every dataset into one +file, which the tutorial loads back with `al.list_from_csv`. +""" +al.output_to_csv( + datasets=dataset_list, + file_path=dataset_path / "point_datasets.csv", +) + +""" +__Scaling Galaxies CSV__ + +The scaling-tier members are written to `scaling_galaxies.csv` — one row per member carrying its +centre and luminosity (`y, x, luminosity`). This is the catalogue the tutorial's scaling relation +consumes: scaling a real cluster up to hundreds of members is a CSV-level edit, with the model's +free-parameter count unchanged. +""" +al.galaxy_table_to_csv( + centres=scaling_galaxies_centres, + luminosities=scaling_galaxies_luminosities, + file_path=dataset_path / "scaling_galaxies.csv", +) + +""" +__Model CSVs__ + +Write the truth model out as three family-level CSVs — `mass.csv`, `light.csv`, `point.csv` — keyed +by galaxy name. The tutorial loads these with `al.galaxy_models_from_csv` and composes them into +`af.Model` galaxies ready for the non-linear search. See `autolens_workspace/*/cluster/csv_api.py` +for the full schema walkthrough. +""" +mass_profiles = { + **{f"lens_{i}": {"mass": g.mass} for i, g in enumerate(main_lens_galaxies)}, + "host_halo": {"dark": host_halo_galaxy.dark}, +} + +light_profiles = { + **{f"lens_{i}": {"bulge": g.bulge} for i, g in enumerate(main_lens_galaxies)}, + **{f"source_{i}": {"bulge": g.bulge} for i, g in enumerate(source_galaxies)}, +} + +point_profiles = { + f"source_{i}": {f"point_{i}": getattr(g, f"point_{i}")} + for i, g in enumerate(source_galaxies) +} + +redshifts_by_galaxy = { + **{f"lens_{i}": redshift_lens for i in range(len(main_lens_galaxies))}, + "host_halo": redshift_lens, + **{f"source_{i}": z for i, z in enumerate(source_redshifts)}, +} + +al.galaxy_models_to_csv( + profiles_by_galaxy=mass_profiles, + file_path=dataset_path / "mass.csv", + family="mass", + redshifts=redshifts_by_galaxy, +) + +al.galaxy_models_to_csv( + profiles_by_galaxy=light_profiles, + file_path=dataset_path / "light.csv", + family="light", + redshifts=redshifts_by_galaxy, +) + +al.galaxy_models_to_csv( + profiles_by_galaxy=point_profiles, + file_path=dataset_path / "point.csv", + family="point", + redshifts=redshifts_by_galaxy, +) + +""" +__Tracer json__ + +Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass +profiles and galaxies are safely stored and available to check how the dataset was simulated in the +future. + +This can be loaded via the method `tracer = al.from_json()`. +""" +al.output_to_json( + obj=tracer, + file_path=Path(dataset_path, "tracer.json"), +) + +""" +__Imaging__ + +Strong lens clusters come with imaging data, used to *measure* the point positions and to visually +confirm the lens configuration. Although modeling is point-source only, we simulate CCD imaging so +the dataset looks like a realistic cluster observation. +""" +psf = al.Convolver.from_gaussian( + shape_native=(11, 11), sigma=0.2, pixel_scales=imaging_grid.pixel_scales +) + +simulator = al.SimulatorImaging( + exposure_time=300.0, + psf=psf, + background_sky_level=0.1, + add_poisson_noise_to_data=True, +) + +dataset = simulator.via_tracer_from(tracer=tracer, grid=imaging_grid) + +aplt.fits_imaging( + dataset=dataset, + data_path=dataset_path / "data.fits", + psf_path=dataset_path / "psf.fits", + noise_map_path=dataset_path / "noise_map.fits", + overwrite=True, +) + +""" +__Visualize__ + +Output .png plots of the per-source point datasets, the tracer, and the simulated imaging to the +dataset path. +""" +for pd in dataset_list: + aplt.subplot_point_dataset( + dataset=pd, output_path=dataset_path, output_format="png" + ) + +aplt.subplot_imaging_dataset(dataset=dataset) +aplt.plot_array(array=dataset.data, title="Data") + +aplt.subplot_tracer( + tracer=tracer, grid=viz_grid, output_path=dataset_path, output_format="png" +) +aplt.subplot_galaxies_images( + tracer=tracer, grid=viz_grid, output_path=dataset_path, output_format="png" +) + +""" +The dataset can be viewed in the folder `howtolens/dataset/cluster/simple`. +""" From 93c003ba76a24cd35977b3399facd5a22d9c27e2 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 13:00:02 +0000 Subject: [PATCH 15/22] docs: update chapter READMEs, introductions and summaries for the new structure Chapter README indexes gain tutorials 9-11 (chapter 2), the renumbered pixelizations listing with the new Bayesian formalism tutorial (chapter 3) and a new chapter 4 index; the top-level scripts/notebooks READMEs drop the stale five-chapter/hyper-mode overview in favour of the real four-chapter map; chapter 2's legacy summary file moves past the new tutorials and mentions chaining; chapter 4 gains an introduction file. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- notebooks/README.md | 73 +++++++++---------- notebooks/chapter_1_introduction/README.md | 2 +- notebooks/chapter_2_lens_modeling/README.md | 9 ++- notebooks/chapter_3_pixelizations/README.md | 26 ++++--- .../chapter_4_scaling_up_lensing/README.md | 18 +++++ scripts/README.md | 73 +++++++++---------- scripts/chapter_1_introduction/README.md | 2 +- scripts/chapter_2_lens_modeling/README.md | 9 ++- ...tutorial_9_summary => tutorial_12_summary} | 4 +- scripts/chapter_3_pixelizations/README.md | 26 ++++--- scripts/chapter_3_pixelizations/introduction | 2 +- .../chapter_4_scaling_up_lensing/README.md | 18 +++++ .../chapter_4_scaling_up_lensing/introduction | 19 +++++ 13 files changed, 171 insertions(+), 110 deletions(-) create mode 100644 notebooks/chapter_4_scaling_up_lensing/README.md rename scripts/chapter_2_lens_modeling/{tutorial_9_summary => tutorial_12_summary} (78%) create mode 100644 scripts/chapter_4_scaling_up_lensing/README.md create mode 100644 scripts/chapter_4_scaling_up_lensing/introduction diff --git a/notebooks/README.md b/notebooks/README.md index c103a00..9717845 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -4,9 +4,11 @@ a strong lens. # Folders - `chapter_1_introduction`: An introduction to strong gravitational lensing and **PyAutolens**. -- `chapter_2_lens_modeling`: How to model strong lenses, including a primer on Bayesian non-linear analysis. -- `chapter_3_search_chaining`: How to fit complex lens models using non-linear search chaining. -- `chapter_4_pixelizations`: How to perform pixelized reconstructions of the source-galaxy. +- `chapter_2_lens_modeling`: How to model strong lenses, including a primer on Bayesian non-linear analysis + and non-linear search chaining. +- `chapter_3_pixelizations`: How to perform pixelized reconstructions of the source-galaxy. +- `chapter_4_scaling_up_lensing`: How to scale lens modeling up to extra galaxies, multi-galaxy lenses, + scaling relations, groups, clusters and weak lensing. - `chapter_optional`: Optional tutorials. # Full Explanation @@ -62,15 +64,15 @@ and would like to adapt it to your own code, check out the Python auto-code form # HOW TO TACKLE HowToLens -The **HowToLens** lecture series current sits at 5 chapters, and each will take a day or so to go through +The **HowToLens** lecture series currently sits at 4 chapters, and each will take a day or so to go through properly. You probably want to be modeling lenses faster than that! Furthermore, the concepts in the -later chapters are pretty challenging, and familiarity and lens modeling is desirable before you +later chapters are pretty challenging, and familiarity with lens modeling is desirable before you tackle them. Therefore, we recommend that you complete chapters 1 & 2 and then apply what you've learnt to the modeling of simulated and real strong lens data, using the scripts found in the 'autolens_workspace'. Once you're happy with the results and confident with your use of **PyAutoLens**, you can then begin to cover the advanced functionality -covered in chapters 3, 4 & 5. +covered in chapters 3 & 4. # OVERVIEW OF CHAPTER 1 (Beginner) @@ -97,49 +99,40 @@ fit CCD imaging data of a strong gravitational lens with a lens model. At the en 2. How to fit a lens model to strong lens CCD imaging via a non-linear search. 3. The trade-off between realism and complexity when choosing a lens model. 4. Why an incorrect lens model may be inferred and how to prevent this from happening. -5. The challenges that are involved in inferred a robust lens model in a computationally reasonable run-time. +5. The challenges that are involved in inferring a robust lens model in a computationally reasonable run-time. +6. How to chain non-linear searches together to build automated lens modeling pipelines, including the + Source, Light and Mass (SLaM) pipelines. **Once completed, you'll be ready to model your own strong gravitational lenses with PyAutoLens!** # OVERVIEW OF CHAPTER 3 (Intermediate) -**Automated Modeling with non-linear search chaining** +**Using an inversion to perform a pixelized source reconstruction** -In chapter 3, we'll learn how to chain multiple non-linear searches together to build automated lens modeling pipelines -which can: - -1. Break-down the fitting of a model using multiple non-linear searches and prior passing. -2. Fit CCD imaging of a strong lens where the lens light and source light are fitted separately. -3. Use a custom pipeline to fit a strong lens with multiple lens galaxies or source galaxies. -4. Know how to use advanced pipelines called the Source, Light and Mass (SLaM) pipelines. - -# OVERVIEW OF CHAPTER 4 (Intermediate) - -**Using an inverison to perform a pixelized source reconstructions** - -In chapter 4, we'll learn how to reconstruct the lensed source galaxy using a pixel-grid, ensuring that we can fit an +In chapter 3, we'll learn how to reconstruct the lensed source galaxy using a pixel-grid, ensuring that we can fit an accurate lens model to sources with complex and irregular morphologies. You'll learn how to: 1. Pixelize a source-plane into a set of source-plane pixels defined by mappings to image pixels. 2. Perform a linear inversion on this source-plane pixelization to reconstruct the source's light. 3. Apply a smoothness prior on the source reconstruction, called regularization. 4. Apply smoothing within a Bayesian framework to objectively quantify the source reconstruction's complexity. -5. Define a border in the source-plane to prevent pixels tracing outside the source reconstruction. -6. Use alternative pixelizations, for example a Voronoi mesh whose pixels adapt to the lens's mass model. -7. Use these features to fit a lens model via non-linear searches. - -# OVERVIEW OF CHAPTER 5 (Advanced) - -**Hyper-Mode** - -In hyper-mode, we introduced advanced functionality that adapts various parts of the lens modeling procedure to the -data that we are fitting. - -NOTE: Hyper-mode is conceptually quite challenging, and I advise that you make sure you are very familiar with -PyAutoLens before covering chapter 5! - -1. Adapt an inversions's `Pixelization` to the morphology of the reconstructed source galaxy. -2. Adapt the `Regularization` scheme applied to this source to its surface brightness profile. -3. Use hyper-galaxies to scale the image's noise-map during fitting, to prevent over-fitting regions of the image. -4. include aspects of the data reduction in the model fitting, for example the background sky subtraction. -5. Use these features in PyAutoLens's search chaining framework. +5. Write down the linear algebra and Bayesian evidence equations that underpin the whole framework. +6. Define a border in the source-plane to prevent pixels tracing outside the source reconstruction. +7. Use alternative pixelizations, for example a Voronoi mesh whose pixels adapt to the lens's mass model + or to the source's own brightness, alongside adaptive regularization schemes. +8. Use these features to fit a lens model via non-linear searches. + +# OVERVIEW OF CHAPTER 4 (Advanced) + +**Scaling Up Lensing** + +In chapter 4, we'll scale lens modeling up beyond a single lens galaxy, learning how to: + +1. Handle extra galaxies near a lens, by scaling their light out of the fit or modeling them explicitly. +2. Model systems with two or more co-dominant lens galaxies and understand the degeneracies this creates. +3. Use scaling relations to tie galaxy masses to their luminosities, so model complexity stops growing + with every galaxy. +4. Model group-scale lenses, using truncated dPIE mass profiles and an optional group dark matter halo. +5. Model cluster-scale lenses, using point-source positions, a CSV interface for member catalogues and + multi-plane ray tracing. +6. Fit weak-lensing shear catalogues, which probe dark matter far beyond the strong lensing region. diff --git a/notebooks/chapter_1_introduction/README.md b/notebooks/chapter_1_introduction/README.md index f4be8f1..f3514ba 100644 --- a/notebooks/chapter_1_introduction/README.md +++ b/notebooks/chapter_1_introduction/README.md @@ -12,7 +12,7 @@ In chapter 1, we introduce you to strong gravitational lensing and the core **Py - [Tutorial 3: More Ray Tracing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb) — Advanced strong lens ray-tracing. -- [Tutorial 4: Point Sources](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb) — How lensing calculations when the source galaxy is a point-source (e.g. a quasar). +- [Tutorial 4: Point Sources](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb) — How lensing calculations change when the source galaxy is a point source (e.g. a quasar). - [Tutorial 5: Lensing Formalism](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb) — The algebraic lensing formalism used to describe strong lensing. diff --git a/notebooks/chapter_2_lens_modeling/README.md b/notebooks/chapter_2_lens_modeling/README.md index 8d51818..16f952f 100644 --- a/notebooks/chapter_2_lens_modeling/README.md +++ b/notebooks/chapter_2_lens_modeling/README.md @@ -1,4 +1,5 @@ -In chapter 2, we'll take you through how to model strong lenses using a non-linear search. +In chapter 2, we'll take you through how to model strong lenses using a non-linear search, ending with how +searches are chained together into automated lens modeling pipelines. **Colab** links to every tutorial are included. @@ -19,3 +20,9 @@ In chapter 2, we'll take you through how to model strong lenses using a non-line - [Tutorial 7: Results](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_7_results.ipynb) — Overview of the results available after successfully fitting a lens model. - [Tutorial 8: Need for Speed](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb) — How to fit complex models whilst balancing efficiency and run-time. + +- [Tutorial 9: Search Chaining](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb) — Breaking the lens modeling procedure into a chained sequence of model-fits. + +- [Tutorial 10: Prior Passing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb) — How the results of earlier searches are passed to later searches. + +- [Tutorial 11: SLaM](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb) — Template pipelines for fitting lens models in standardized ways. diff --git a/notebooks/chapter_3_pixelizations/README.md b/notebooks/chapter_3_pixelizations/README.md index 8dea793..a5cf8f9 100644 --- a/notebooks/chapter_3_pixelizations/README.md +++ b/notebooks/chapter_3_pixelizations/README.md @@ -1,27 +1,29 @@ -In chapter 4, we use **Pixelizations** to reconstruct complex source galaxies on pixelized grids. +In chapter 3, we use **Pixelizations** to reconstruct complex source galaxies on pixelized grids. **Colab** links to every tutorial are included. # Files -- [Tutorial 1: Pixelizations](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_1_pixelizations.ipynb) — Creating a pixel-grid in the source-plane. +- [Tutorial 1: Pixelizations](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb) — Creating a pixel-grid in the source-plane. -- [Tutorial 2: Mappers](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_2_mappers.ipynb) — How a pixelization maps source-pixels to image-pixels. +- [Tutorial 2: Mappers](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb) — How a pixelization maps source-pixels to image-pixels. -- [Tutorial 3: Inversions](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_3_inversions.ipynb) — Inverting the mappings to reconstruct the source's light. +- [Tutorial 3: Inversions](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb) — Inverting the mappings to reconstruct the source's light. -- [Tutorial 4: Bayesian Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_4_bayesian_regularization.ipynb) — Smoothing the source within a Bayesian framework. +- [Tutorial 4: Bayesian Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb) — Smoothing the source within a Bayesian framework. -- [Tutorial 5: Borders](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_5_borders.ipynb) — Preventing highly demagnified image-pixels ruining the inversion. +- [Tutorial 5: Bayesian Formalism](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb) — The linear algebra and Bayesian evidence equations behind pixelized source reconstruction. -- [Tutorial 6: Lens Modeling](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_6_lens_modeling.ipynb) — How to use inversions to fit a lens model. +- [Tutorial 6: Borders](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb) — Preventing highly demagnified image-pixels ruining the inversion. -- [Tutorial 7: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.ipynb) — A Voronoi mesh which adapts to the mass model's magnification. +- [Tutorial 7: Lens Modeling](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb) — How to use inversions to fit a lens model. -- [Tutorial 8: Model Fit](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_8_model_fit.ipynb) — An example lens modeling pipeline which uses an inversion. +- [Tutorial 8: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb) — A Voronoi mesh which adapts to the mass model's magnification. -- [Tutorial 9: Fit Problems](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_9_fit_problems.ipynb) — The shortcomings of our lens models and inversions. +- [Tutorial 9: Model Fit](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb) — An example lens modeling pipeline which uses an inversion. -- [Tutorial 10: Brightness Adaption](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_10_brightness_adaption.ipynb) — Adapting the pixelization to the source's morphology. +- [Tutorial 10: Fit Problems](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb) — The shortcomings of our lens models and inversions. -- [Tutorial 11: Adaptive Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_11_adaptive_regularization.ipynb) — Adapting the regularization to the source's morphology. +- [Tutorial 11: Brightness Adaption](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb) — Adapting the pixelization to the source's morphology. + +- [Tutorial 12: Adaptive Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb) — Adapting the regularization to the source's morphology. diff --git a/notebooks/chapter_4_scaling_up_lensing/README.md b/notebooks/chapter_4_scaling_up_lensing/README.md new file mode 100644 index 0000000..f059478 --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/README.md @@ -0,0 +1,18 @@ +In chapter 4, we scale lens modeling up beyond a single lens galaxy: extra galaxies, multi-galaxy lenses, +scaling relations, group and cluster scales, and weak lensing. + +**Colab** links to every tutorial are included. + +# Files + +- [Tutorial 1: Extra Galaxies](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb) — Handling nearby galaxies by scaling their light out of the fit or modeling them explicitly. + +- [Tutorial 2: Multi Galaxy](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb) — Modeling lenses with two or more co-dominant lens galaxies and the degeneracies this creates. + +- [Tutorial 3: Scaling Relation](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb) — Tying galaxy masses to their luminosities so model complexity stops growing with each galaxy. + +- [Tutorial 4: Group Scale](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb) — Modeling group-scale lenses with truncated dPIE members and an optional group dark matter halo. + +- [Tutorial 5: Cluster Scale](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb) — Modeling cluster-scale lenses with point-source positions, the CSV interface and multi-plane ray tracing. + +- [Tutorial 6: Weak Lensing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb) — Fitting weak-lensing shear catalogues, which probe mass far beyond the strong lensing region. diff --git a/scripts/README.md b/scripts/README.md index c103a00..9717845 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -4,9 +4,11 @@ a strong lens. # Folders - `chapter_1_introduction`: An introduction to strong gravitational lensing and **PyAutolens**. -- `chapter_2_lens_modeling`: How to model strong lenses, including a primer on Bayesian non-linear analysis. -- `chapter_3_search_chaining`: How to fit complex lens models using non-linear search chaining. -- `chapter_4_pixelizations`: How to perform pixelized reconstructions of the source-galaxy. +- `chapter_2_lens_modeling`: How to model strong lenses, including a primer on Bayesian non-linear analysis + and non-linear search chaining. +- `chapter_3_pixelizations`: How to perform pixelized reconstructions of the source-galaxy. +- `chapter_4_scaling_up_lensing`: How to scale lens modeling up to extra galaxies, multi-galaxy lenses, + scaling relations, groups, clusters and weak lensing. - `chapter_optional`: Optional tutorials. # Full Explanation @@ -62,15 +64,15 @@ and would like to adapt it to your own code, check out the Python auto-code form # HOW TO TACKLE HowToLens -The **HowToLens** lecture series current sits at 5 chapters, and each will take a day or so to go through +The **HowToLens** lecture series currently sits at 4 chapters, and each will take a day or so to go through properly. You probably want to be modeling lenses faster than that! Furthermore, the concepts in the -later chapters are pretty challenging, and familiarity and lens modeling is desirable before you +later chapters are pretty challenging, and familiarity with lens modeling is desirable before you tackle them. Therefore, we recommend that you complete chapters 1 & 2 and then apply what you've learnt to the modeling of simulated and real strong lens data, using the scripts found in the 'autolens_workspace'. Once you're happy with the results and confident with your use of **PyAutoLens**, you can then begin to cover the advanced functionality -covered in chapters 3, 4 & 5. +covered in chapters 3 & 4. # OVERVIEW OF CHAPTER 1 (Beginner) @@ -97,49 +99,40 @@ fit CCD imaging data of a strong gravitational lens with a lens model. At the en 2. How to fit a lens model to strong lens CCD imaging via a non-linear search. 3. The trade-off between realism and complexity when choosing a lens model. 4. Why an incorrect lens model may be inferred and how to prevent this from happening. -5. The challenges that are involved in inferred a robust lens model in a computationally reasonable run-time. +5. The challenges that are involved in inferring a robust lens model in a computationally reasonable run-time. +6. How to chain non-linear searches together to build automated lens modeling pipelines, including the + Source, Light and Mass (SLaM) pipelines. **Once completed, you'll be ready to model your own strong gravitational lenses with PyAutoLens!** # OVERVIEW OF CHAPTER 3 (Intermediate) -**Automated Modeling with non-linear search chaining** +**Using an inversion to perform a pixelized source reconstruction** -In chapter 3, we'll learn how to chain multiple non-linear searches together to build automated lens modeling pipelines -which can: - -1. Break-down the fitting of a model using multiple non-linear searches and prior passing. -2. Fit CCD imaging of a strong lens where the lens light and source light are fitted separately. -3. Use a custom pipeline to fit a strong lens with multiple lens galaxies or source galaxies. -4. Know how to use advanced pipelines called the Source, Light and Mass (SLaM) pipelines. - -# OVERVIEW OF CHAPTER 4 (Intermediate) - -**Using an inverison to perform a pixelized source reconstructions** - -In chapter 4, we'll learn how to reconstruct the lensed source galaxy using a pixel-grid, ensuring that we can fit an +In chapter 3, we'll learn how to reconstruct the lensed source galaxy using a pixel-grid, ensuring that we can fit an accurate lens model to sources with complex and irregular morphologies. You'll learn how to: 1. Pixelize a source-plane into a set of source-plane pixels defined by mappings to image pixels. 2. Perform a linear inversion on this source-plane pixelization to reconstruct the source's light. 3. Apply a smoothness prior on the source reconstruction, called regularization. 4. Apply smoothing within a Bayesian framework to objectively quantify the source reconstruction's complexity. -5. Define a border in the source-plane to prevent pixels tracing outside the source reconstruction. -6. Use alternative pixelizations, for example a Voronoi mesh whose pixels adapt to the lens's mass model. -7. Use these features to fit a lens model via non-linear searches. - -# OVERVIEW OF CHAPTER 5 (Advanced) - -**Hyper-Mode** - -In hyper-mode, we introduced advanced functionality that adapts various parts of the lens modeling procedure to the -data that we are fitting. - -NOTE: Hyper-mode is conceptually quite challenging, and I advise that you make sure you are very familiar with -PyAutoLens before covering chapter 5! - -1. Adapt an inversions's `Pixelization` to the morphology of the reconstructed source galaxy. -2. Adapt the `Regularization` scheme applied to this source to its surface brightness profile. -3. Use hyper-galaxies to scale the image's noise-map during fitting, to prevent over-fitting regions of the image. -4. include aspects of the data reduction in the model fitting, for example the background sky subtraction. -5. Use these features in PyAutoLens's search chaining framework. +5. Write down the linear algebra and Bayesian evidence equations that underpin the whole framework. +6. Define a border in the source-plane to prevent pixels tracing outside the source reconstruction. +7. Use alternative pixelizations, for example a Voronoi mesh whose pixels adapt to the lens's mass model + or to the source's own brightness, alongside adaptive regularization schemes. +8. Use these features to fit a lens model via non-linear searches. + +# OVERVIEW OF CHAPTER 4 (Advanced) + +**Scaling Up Lensing** + +In chapter 4, we'll scale lens modeling up beyond a single lens galaxy, learning how to: + +1. Handle extra galaxies near a lens, by scaling their light out of the fit or modeling them explicitly. +2. Model systems with two or more co-dominant lens galaxies and understand the degeneracies this creates. +3. Use scaling relations to tie galaxy masses to their luminosities, so model complexity stops growing + with every galaxy. +4. Model group-scale lenses, using truncated dPIE mass profiles and an optional group dark matter halo. +5. Model cluster-scale lenses, using point-source positions, a CSV interface for member catalogues and + multi-plane ray tracing. +6. Fit weak-lensing shear catalogues, which probe dark matter far beyond the strong lensing region. diff --git a/scripts/chapter_1_introduction/README.md b/scripts/chapter_1_introduction/README.md index f4be8f1..f3514ba 100644 --- a/scripts/chapter_1_introduction/README.md +++ b/scripts/chapter_1_introduction/README.md @@ -12,7 +12,7 @@ In chapter 1, we introduce you to strong gravitational lensing and the core **Py - [Tutorial 3: More Ray Tracing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb) — Advanced strong lens ray-tracing. -- [Tutorial 4: Point Sources](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb) — How lensing calculations when the source galaxy is a point-source (e.g. a quasar). +- [Tutorial 4: Point Sources](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb) — How lensing calculations change when the source galaxy is a point source (e.g. a quasar). - [Tutorial 5: Lensing Formalism](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb) — The algebraic lensing formalism used to describe strong lensing. diff --git a/scripts/chapter_2_lens_modeling/README.md b/scripts/chapter_2_lens_modeling/README.md index 8d51818..16f952f 100644 --- a/scripts/chapter_2_lens_modeling/README.md +++ b/scripts/chapter_2_lens_modeling/README.md @@ -1,4 +1,5 @@ -In chapter 2, we'll take you through how to model strong lenses using a non-linear search. +In chapter 2, we'll take you through how to model strong lenses using a non-linear search, ending with how +searches are chained together into automated lens modeling pipelines. **Colab** links to every tutorial are included. @@ -19,3 +20,9 @@ In chapter 2, we'll take you through how to model strong lenses using a non-line - [Tutorial 7: Results](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_7_results.ipynb) — Overview of the results available after successfully fitting a lens model. - [Tutorial 8: Need for Speed](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb) — How to fit complex models whilst balancing efficiency and run-time. + +- [Tutorial 9: Search Chaining](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb) — Breaking the lens modeling procedure into a chained sequence of model-fits. + +- [Tutorial 10: Prior Passing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb) — How the results of earlier searches are passed to later searches. + +- [Tutorial 11: SLaM](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb) — Template pipelines for fitting lens models in standardized ways. diff --git a/scripts/chapter_2_lens_modeling/tutorial_9_summary b/scripts/chapter_2_lens_modeling/tutorial_12_summary similarity index 78% rename from scripts/chapter_2_lens_modeling/tutorial_9_summary rename to scripts/chapter_2_lens_modeling/tutorial_12_summary index be22534..7ba51a1 100755 --- a/scripts/chapter_2_lens_modeling/tutorial_9_summary +++ b/scripts/chapter_2_lens_modeling/tutorial_12_summary @@ -8,11 +8,13 @@ In this chapter, you learnt: 4) How one must carefully balance complexity and realism when fitting a model to a data-set. 5) The importance of factoring in run-speed when modeling a lens, and tricks to speed up the analysis. 6) About masking data and using positions in the analysis. +7) How to chain searches together into automated lens modeling pipelines, passing priors from one search + to the next, and how the SLaM pipelines standardize this. At this point, you are ready to begin modeling lenses. The 'modeling' folders in the autolens_workspace contains a number of scripts that can be easily adopted to model lens using a variety of different approaches, lens models and non-linear searches. If you have your own lens data, I'd recommend you adapt these scripts to your data. If you don't have your own data, checkout the 'simulators' folder to simulate your own dataset! -Alternatively, you may wish to continue on to chapter 3 on search chaining. +Alternatively, you may wish to continue on to chapter 3 on pixelized source reconstructions. diff --git a/scripts/chapter_3_pixelizations/README.md b/scripts/chapter_3_pixelizations/README.md index 8dea793..a5cf8f9 100644 --- a/scripts/chapter_3_pixelizations/README.md +++ b/scripts/chapter_3_pixelizations/README.md @@ -1,27 +1,29 @@ -In chapter 4, we use **Pixelizations** to reconstruct complex source galaxies on pixelized grids. +In chapter 3, we use **Pixelizations** to reconstruct complex source galaxies on pixelized grids. **Colab** links to every tutorial are included. # Files -- [Tutorial 1: Pixelizations](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_1_pixelizations.ipynb) — Creating a pixel-grid in the source-plane. +- [Tutorial 1: Pixelizations](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb) — Creating a pixel-grid in the source-plane. -- [Tutorial 2: Mappers](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_2_mappers.ipynb) — How a pixelization maps source-pixels to image-pixels. +- [Tutorial 2: Mappers](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb) — How a pixelization maps source-pixels to image-pixels. -- [Tutorial 3: Inversions](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_3_inversions.ipynb) — Inverting the mappings to reconstruct the source's light. +- [Tutorial 3: Inversions](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb) — Inverting the mappings to reconstruct the source's light. -- [Tutorial 4: Bayesian Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_4_bayesian_regularization.ipynb) — Smoothing the source within a Bayesian framework. +- [Tutorial 4: Bayesian Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb) — Smoothing the source within a Bayesian framework. -- [Tutorial 5: Borders](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_5_borders.ipynb) — Preventing highly demagnified image-pixels ruining the inversion. +- [Tutorial 5: Bayesian Formalism](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb) — The linear algebra and Bayesian evidence equations behind pixelized source reconstruction. -- [Tutorial 6: Lens Modeling](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_6_lens_modeling.ipynb) — How to use inversions to fit a lens model. +- [Tutorial 6: Borders](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb) — Preventing highly demagnified image-pixels ruining the inversion. -- [Tutorial 7: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.ipynb) — A Voronoi mesh which adapts to the mass model's magnification. +- [Tutorial 7: Lens Modeling](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb) — How to use inversions to fit a lens model. -- [Tutorial 8: Model Fit](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_8_model_fit.ipynb) — An example lens modeling pipeline which uses an inversion. +- [Tutorial 8: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb) — A Voronoi mesh which adapts to the mass model's magnification. -- [Tutorial 9: Fit Problems](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_9_fit_problems.ipynb) — The shortcomings of our lens models and inversions. +- [Tutorial 9: Model Fit](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb) — An example lens modeling pipeline which uses an inversion. -- [Tutorial 10: Brightness Adaption](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_10_brightness_adaption.ipynb) — Adapting the pixelization to the source's morphology. +- [Tutorial 10: Fit Problems](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb) — The shortcomings of our lens models and inversions. -- [Tutorial 11: Adaptive Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_pixelizations/tutorial_11_adaptive_regularization.ipynb) — Adapting the regularization to the source's morphology. +- [Tutorial 11: Brightness Adaption](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb) — Adapting the pixelization to the source's morphology. + +- [Tutorial 12: Adaptive Regularization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb) — Adapting the regularization to the source's morphology. diff --git a/scripts/chapter_3_pixelizations/introduction b/scripts/chapter_3_pixelizations/introduction index d52b456..7539b5a 100755 --- a/scripts/chapter_3_pixelizations/introduction +++ b/scripts/chapter_3_pixelizations/introduction @@ -1,4 +1,4 @@ -So, we've learnt how to build pipelines that model strong lenses and customize them to our science case. +So, we've learnt how to model strong lenses and build pipelines that customize the process to our science case. However, we ran into a pretty huge barrier when trying to fit complex sources. It required an unwieldy number of non-linear parameters, and even when we included them, the results were rubbish. The non-linear parameter space diff --git a/scripts/chapter_4_scaling_up_lensing/README.md b/scripts/chapter_4_scaling_up_lensing/README.md new file mode 100644 index 0000000..f059478 --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/README.md @@ -0,0 +1,18 @@ +In chapter 4, we scale lens modeling up beyond a single lens galaxy: extra galaxies, multi-galaxy lenses, +scaling relations, group and cluster scales, and weak lensing. + +**Colab** links to every tutorial are included. + +# Files + +- [Tutorial 1: Extra Galaxies](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb) — Handling nearby galaxies by scaling their light out of the fit or modeling them explicitly. + +- [Tutorial 2: Multi Galaxy](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb) — Modeling lenses with two or more co-dominant lens galaxies and the degeneracies this creates. + +- [Tutorial 3: Scaling Relation](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb) — Tying galaxy masses to their luminosities so model complexity stops growing with each galaxy. + +- [Tutorial 4: Group Scale](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb) — Modeling group-scale lenses with truncated dPIE members and an optional group dark matter halo. + +- [Tutorial 5: Cluster Scale](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb) — Modeling cluster-scale lenses with point-source positions, the CSV interface and multi-plane ray tracing. + +- [Tutorial 6: Weak Lensing](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb) — Fitting weak-lensing shear catalogues, which probe mass far beyond the strong lensing region. diff --git a/scripts/chapter_4_scaling_up_lensing/introduction b/scripts/chapter_4_scaling_up_lensing/introduction new file mode 100644 index 0000000..6bb46fc --- /dev/null +++ b/scripts/chapter_4_scaling_up_lensing/introduction @@ -0,0 +1,19 @@ +Every lens we have modeled so far had one lens galaxy and one source. Real strong lenses live in crowded +fields, and the most scientifically exciting systems are bigger: two or more lens galaxies, galaxy groups, +entire clusters, and mass distributions that only weak lensing can reach. + +In this chapter, we scale lens modeling up, step by step. You'll learn how we: + +1) Handle extra galaxies near a lens, by scaling their light out of the fit or modeling them explicitly. +2) Model systems with two or more co-dominant lens galaxies, and understand the degeneracies this creates. +3) Use scaling relations to tie galaxy masses to their luminosities, so model complexity stops growing + with every galaxy we add. +4) Model group-scale lenses, introducing truncated dPIE mass profiles and an optional group dark matter halo. +5) Model cluster-scale lenses, using point-source positions, a CSV interface for member catalogues and + multi-plane ray tracing. +6) Fit weak-lensing shear catalogues, which probe dark matter far beyond the strong lensing region. + +Much of this chapter's methodology (extra galaxies, multi-galaxy fields, scaling relations) applies equally +to non-lensing galaxy studies with **PyAutoGalaxy**. + +Sound good? I agree, so lets get on with it. From 3f7231fb22d6b65ce36b97ea6e363f9b8bd442ad Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 13:04:42 +0000 Subject: [PATCH 16/22] =?UTF-8?q?docs:=20chapter=203=20review=20fixes=20?= =?UTF-8?q?=E2=80=94=20borders=20dataset=20alignment,=20formalism=20correc?= =?UTF-8?q?tions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adversarial review of the pixelizations chapter: the borders tutorial now loads x2_lens_galaxies at the simulator's real 0.1" pixel scale, actually uses its large-mask demo and matches the simulator's true mass profiles; a stray stale-fit plot is removed from lens modeling; the Bayesian formalism lecture gets the correct second-derivative in the WD03 regularization definition, consistent indices and a Contents entry for its Fit section; adaptive-pixelization pixel counts match the real 28x28 mesh; fit-problems prose stops claiming an Overlay image-mesh; Voronoi->Delaunay in the chapter README and introduction. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- notebooks/chapter_3_pixelizations/README.md | 2 +- scripts/chapter_3_pixelizations/README.md | 2 +- scripts/chapter_3_pixelizations/introduction | 2 +- .../tutorial_10_fit_problems.py | 8 ++++---- .../tutorial_5_bayesian_formalism.py | 9 +++++---- .../chapter_3_pixelizations/tutorial_6_borders.py | 14 +++++++------- .../tutorial_7_lens_modeling.py | 2 -- .../tutorial_8_adaptive_pixelization.py | 10 +++++----- 8 files changed, 24 insertions(+), 25 deletions(-) diff --git a/notebooks/chapter_3_pixelizations/README.md b/notebooks/chapter_3_pixelizations/README.md index a5cf8f9..c5d9288 100644 --- a/notebooks/chapter_3_pixelizations/README.md +++ b/notebooks/chapter_3_pixelizations/README.md @@ -18,7 +18,7 @@ In chapter 3, we use **Pixelizations** to reconstruct complex source galaxies on - [Tutorial 7: Lens Modeling](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb) — How to use inversions to fit a lens model. -- [Tutorial 8: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb) — A Voronoi mesh which adapts to the mass model's magnification. +- [Tutorial 8: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb) — A Delaunay mesh which adapts to the mass model's magnification. - [Tutorial 9: Model Fit](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb) — An example lens modeling pipeline which uses an inversion. diff --git a/scripts/chapter_3_pixelizations/README.md b/scripts/chapter_3_pixelizations/README.md index a5cf8f9..c5d9288 100644 --- a/scripts/chapter_3_pixelizations/README.md +++ b/scripts/chapter_3_pixelizations/README.md @@ -18,7 +18,7 @@ In chapter 3, we use **Pixelizations** to reconstruct complex source galaxies on - [Tutorial 7: Lens Modeling](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb) — How to use inversions to fit a lens model. -- [Tutorial 8: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb) — A Voronoi mesh which adapts to the mass model's magnification. +- [Tutorial 8: Adaptive Pixelization](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb) — A Delaunay mesh which adapts to the mass model's magnification. - [Tutorial 9: Model Fit](https://colab.research.google.com/github/PyAutoLabs/HowToLens/blob/2026.8.4.1/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb) — An example lens modeling pipeline which uses an inversion. diff --git a/scripts/chapter_3_pixelizations/introduction b/scripts/chapter_3_pixelizations/introduction index 7539b5a..fbfe5a3 100755 --- a/scripts/chapter_3_pixelizations/introduction +++ b/scripts/chapter_3_pixelizations/introduction @@ -18,7 +18,7 @@ In particular, you'll learn how we: 3) Apply a smoothness prior on our source reconstruction, called 'regularization', to ensure our solution is physical. 4) Apply this prior in a Bayesian framework to objectively quantify our source reconstruction's log likelihood. 5) Define a border in the source-plane to prevent pixels tracing outside the source reconstruction. -6) Can use alternative pixelizations that use Voronoi pixels adapted to the lens's mass model. +6) Can use alternative pixelizations that use Delaunay pixels adapted to the lens's mass model. 7) Use these features in PyAutoLens pipelines. Sound good? I agree, so lets get on with it. \ No newline at end of file diff --git a/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py b/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py index dec3762..2ccff98 100644 --- a/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py +++ b/scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py @@ -158,8 +158,8 @@ def simulate_for_source_galaxy(source_galaxy): """ __Fitting__ -we'll make one more convenience function which fits the simulated imaging data with an `Overlay` image-mesh, -`RectangularAdaptDensity` mesh and `Constant` regularization scheme pixelization. +we'll make one more convenience function which fits the simulated imaging data with a +`RectangularAdaptDensity` mesh and `Constant` regularization scheme pixelization. We'll input the `coefficient` of each fit, so that for each simulated source we regularize it at an appropriate level. There is nothing new in this function you haven't seen before. @@ -257,8 +257,8 @@ def fit_with_Rectangular_from(dataset, mask, coefficient): *Image-Mesh / Mesh*: -The problem is the same one we discussed when we compared magnification-based and brightness-based adaption -in tutorial 8. +The problem is the same one we discussed in tutorial 8, when we motivated pixelizations which adapt to where the +data constrains the source. We are simply not dedicating enough source-pixels to the central regions of the source reconstruction, e.g. where it's brightest. As the source becomes more compact, the source reconstruction no longer has enough diff --git a/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py b/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py index 1c6d1b0..2a3b757 100644 --- a/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py +++ b/scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py @@ -43,7 +43,8 @@ - **Regularization Term:** The penalty $s^{T} H s$ applied by the smoothness prior. - **Complexity Terms:** The log determinant terms which penalize complex source reconstructions. - **Noise Normalization Term:** The Gaussian noise normalization. -- **Log Evidence:** Combine all five terms and compare to `FitImaging`. +- **Log Evidence:** Combine all five terms into the log evidence. +- **Fit:** Compare our by-hand log evidence to the `FitImaging` object's internal calculation. - **Wrap Up:** Summary and next steps. """ @@ -423,15 +424,15 @@ where $\lambda$ is the `regularization_coefficient` controlling the degree of smoothing. The `Constant` scheme uses gradient regularization (equation 14 of WD03): - $G_{L} = \sum_{i}^{I} \sum_{n=1}^{N} [s_{i} - s_{i, v}]^2$ + $G_{L} = \sum_{i}^{I} \sum_{n=1}^{N} [s_{i} - s_{i, n}]^2$ -In words: for every source pixel, compare its flux with each of its neighbours $v$, and penalize solutions where +In words: for every source pixel, compare its flux with each of its $N$ neighbours $n$, and penalize solutions where the differences are large. This is precisely the "smoothness prior" of tutorial 4, now written as an equation. To fold this into the linear algebra we define the regularization matrix $H$, with dimensions `(total_source_pixels, total_source_pixels)` (equation 13 of WD03): - $H_{ik} = \frac{1}{2} \frac{\partial G_{L}}{\partial s_{i} \partial s_{k}}$ + $H_{ik} = \frac{1}{2} \frac{\partial^{2} G_{L}}{\partial s_{i} \partial s_{k}}$ $H$ has the coefficient $\lambda$ folded into it. Its non-zero off-diagonal entries mark pairs of source pixels which are neighbours and therefore regularized with one another; most entries are zero because most source pixels diff --git a/scripts/chapter_3_pixelizations/tutorial_6_borders.py b/scripts/chapter_3_pixelizations/tutorial_6_borders.py index 1a98fd5..bd72bd5 100644 --- a/scripts/chapter_3_pixelizations/tutorial_6_borders.py +++ b/scripts/chapter_3_pixelizations/tutorial_6_borders.py @@ -213,7 +213,7 @@ def perform_fit_with_source_galaxy_mask_and_border( 2) The inversion reconstructs the flux of the demagnified image pixels using source-pixels which contain *only* demagnified image pixels (these are the source pixels at the edge of the source plane). These source-pixels *should* have had other image-pixels traced within them via image-pixels at even larger radii from the centre of the lens - galaxy. However, these image-pixels are at radii above 3.0", meaning the circular mask removed them from the inversion. + galaxy. However, these image-pixels are at radii above 2.5", meaning the circular mask removed them from the inversion. Lets quickly use a large circular mask to confirm that these pixels exist when we don't mask them. """ @@ -226,7 +226,7 @@ def perform_fit_with_source_galaxy_mask_and_border( fit = perform_fit_with_source_galaxy_mask_and_border( dataset=dataset_unmasked, source_galaxy=source_galaxy, - mask=mask_circular, + mask=mask_circular_large, settings=al.Settings(use_border_relocator=False), ) @@ -270,7 +270,7 @@ def perform_fit_with_source_galaxy_mask_and_border( and lensing configurations produce nasty edge effects where image pixels not just in the centre of mask, but anywhere in the mask, trace beyond the source-plane border. -we'll use new strong lensing data as the previous tutorial, where: +we'll use new strong lensing data, where: - The lens galaxy's light is omitted. - There are two lens galaxies whose `MassProfile`'s are `Isothermal`. @@ -298,11 +298,11 @@ def perform_fit_with_source_galaxy_mask_and_border( data_path=dataset_path / "data.fits", noise_map_path=dataset_path / "noise_map.fits", psf_path=dataset_path / "psf.fits", - pixel_scales=0.05, + pixel_scales=0.1, ) """ -We again must define a mask around this image, lets start with a 2.8" mask. we'll use larger masks to illustrate the +We again must define a mask around this image, lets start with a 2.8" mask. we'll vary the mask size to illustrate the effects of the border in a moment. """ dataset_unmasked_x2 = dataset @@ -340,7 +340,7 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( sersic_index=2.5, ), mass=al.mp.Isothermal( - centre=(1.1, 0.51), ell_comps=(0.0, 0.15), einstein_radius=1.07 + centre=(0.0, -1.0), ell_comps=(0.17647, 0.0), einstein_radius=1.0 ), ) @@ -354,7 +354,7 @@ def perform_fit_x2_lenses_with_source_galaxy_mask_and_border( sersic_index=3.0, ), mass=al.mp.Isothermal( - centre=(-0.20, -0.35), ell_comps=(0.06, 0.1053), einstein_radius=0.71 + centre=(0.0, 1.0), ell_comps=(0.0, -0.111111), einstein_radius=0.8 ), ) diff --git a/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py b/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py index 2d3adb6..78e9b50 100644 --- a/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py +++ b/scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py @@ -232,8 +232,6 @@ def perform_fit_with_lens__source_galaxy(dataset, lens_galaxy, source_galaxy): aplt.subplot_imaging_dataset(dataset=dataset) -aplt.subplot_fit_imaging_of_planes(fit=fit) - """ When fitting such an image we now want to include the lens's light in the analysis. Lets update our mask to be circular so that it includes the central regions of the image and lens galaxy. diff --git a/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py b/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py index df7e27d..493fb5b 100644 --- a/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py +++ b/scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py @@ -130,10 +130,10 @@ aplt.subplot_fit_imaging_of_planes(fit=fit) """ -There is one clear problem, we are using only a small number of the total source pixels to reconstruct the source. The -majority of source pixels are located away from the source. By my estimate, we are using just 16 pixels (the central -4x4 grid) out of the 1600 pixels to actually fit the data! The remaining ~1500 pixels are doing nothing but fitting -noise. +There is one clear problem, we are using only a small number of the total source pixels to reconstruct the source. The +majority of source pixels are located away from the source. By my estimate, we are using just 16 pixels (the central +4x4 grid) out of the 784 pixels to actually fit the data! The remaining ~750 pixels are doing nothing but fitting +noise. This means that regularization is sub-optimal. In tutorial 4, we discussed how the Bayesian evidence of the regularization favours the simplest source solution. That is, the solution which fits the data using the fewest source @@ -201,7 +201,7 @@ """ A closer inspection of the pixelization shows the improvement. -We are using fewer pixels than the rectangular grid (400, instead of 1600) and reconstructing the source in far +We are using fewer pixels than the rectangular grid (400, instead of 784) and reconstructing the source in far greater detail! """ aplt.subplot_fit_imaging_of_planes(fit=fit) From 4b080b3ddd9abf9dca394753a3956ddb8a6f4933 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 13:06:16 +0000 Subject: [PATCH 17/22] =?UTF-8?q?docs:=20chapter=204=20review=20fixes=20?= =?UTF-8?q?=E2=80=94=20coherence,=20conventions=20and=20shear=20numbers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adversarial review of the parallel-written scaling-up chapter: the tied-member population now consistently uses the scaling_galaxies collection at group scale (matching tutorials 3 and 5, verified against the library's tracer composition); scaling exponents tie back to the Faber-Jackson derivation; source-profile claims match the simulators (ExponentialCoreSph, fixed in lens_x2/lens_x3 headers too); the weak lensing simulator's shear amplitudes now agree with its tutorial's SIS arithmetic; hand-off and teaser sentences across tutorials 1-6 align with what each tutorial actually covers. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_1_extra_galaxies.py | 2 +- .../tutorial_2_multi_galaxy.py | 4 ++-- .../tutorial_3_scaling_relation.py | 14 +++++++------- .../tutorial_4_group_scale.py | 11 ++++++++++- .../tutorial_5_cluster_scale.py | 6 +++--- .../tutorial_6_weak_lensing.py | 5 +++-- scripts/simulator/lens_x2.py | 4 ++-- scripts/simulator/lens_x3.py | 2 +- scripts/simulator/weak_lensing.py | 4 ++-- 9 files changed, 31 insertions(+), 21 deletions(-) diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py b/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py index 6b2e397..fc4ce81 100644 --- a/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py @@ -474,5 +474,5 @@ Throughout, the extra galaxy was a nuisance: something to remove or account for, so that our analysis of the main lens remained accurate. In the next tutorial we meet systems where that framing breaks down entirely, because a second galaxy is not a nuisance but a co-equal lens, with light and mass comparable to the first. There, no -single galaxy is "the" lens, and the model must treat them all on an equal footing +single galaxy is "the" lens, and the model must treat them all on an equal footing. """ diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py b/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py index 05d187a..84c05e3 100644 --- a/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py @@ -61,7 +61,7 @@ - The two lens galaxies' light are `Sersic` profiles, centred at (0.0", -1.0") and (0.0", 1.0"). - The two lens galaxies' mass distributions are `Isothermal` profiles with comparable Einstein radii (1.0" and 0.8") — this comparability is what makes them co-dominant. - - The source galaxy's light is an `Sersic`. + - The source galaxy's light is an `ExponentialCoreSph`. __Dataset Auto-Simulation__ @@ -469,7 +469,7 @@ chapter). - **Parameter growth**: Each deflector added 9 free parameters (4 for its MGE light, 5 for its SIE mass) — and the - MGE is what kept it that cheap, since its linear light profiles add flexibility without non-linear parameters. + MGE is what kept it that cheap, since its Gaussian intensities are solved for by linear algebra rather than sampled. - **Fixed mass centres**: Fixing each galaxy's mass centre to its observed light centre (removing 2 parameters per deflector) is the standard trick for taming the severe centre degeneracies of multi-deflector models. diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py b/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py index 4b08877..b78aef9 100644 --- a/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py @@ -421,9 +421,9 @@ lens had twelve additional member galaxies (we invent centres on a ring and plausible luminosities; this model is composed for counting only, **not** fitted — our dataset contains no such galaxies!). -Each imagined member is mass-only (as in the previous tutorials, faint distant perturbers whose light is -negligible or outside the mask need no light model), with its Einstein radius tied to the anchor by the same -relation. We count the parameters of this 14-galaxy lens model, and of its nightmare per-galaxy twin. +Each imagined member is mass-only (faint distant perturbers whose light is negligible or outside the mask need +no light model — the mass-only counterpart of the intermediate options tutorial 1 discussed), with its Einstein +radius tied to the anchor by the same relation. We count the parameters of this 14-galaxy lens model, and of its nightmare per-galaxy twin. """ total_members = 12 @@ -572,7 +572,7 @@ Everything above was framed around lenses with multiple deflectors, but the same machinery solves a problem we met at the start of this chapter: the **environment** of an ordinary single-galaxy lens. -The first tutorial of this chapter modelled a couple of nearby galaxies individually, which was fine for two. +The first tutorial of this chapter modelled a nearby extra galaxy individually, which was fine for one. But a deep image of a real lens can reveal dozens of galaxies near the line of sight, each contributing a small perturbation to the deflection field. Modeling them individually is hopeless; ignoring them entirely can bias precision measurements. With a scaling relation they cost nothing: measure each galaxy's centre and luminosity @@ -601,7 +601,7 @@ something the galaxies themselves cannot account for: a massive dark matter halo enveloping the whole system, holding most of its mass. In the next tutorial we step up to group-scale lenses, where the scaling relation becomes essential (there are simply too many member galaxies to free) and a dark matter halo joins the model as -a new component. There, we will also meet a different way to normalise the relation — a reference Einstein -radius at fixed magnitude, rather than an anchor galaxy — and truncated mass profiles, which describe members -whose outer dark matter has been tidally stripped by the very halo we are adding. +a new component. There, we will also meet a different way to normalise the relation — a shared free +normalization at a fixed reference luminosity, rather than an anchor galaxy — and truncated mass profiles, which +describe members whose outer dark matter has been tidally stripped by the very halo we are adding. """ diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py b/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py index f47fa9f..792c13e 100644 --- a/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py @@ -482,6 +482,10 @@ - `r_cut = r_cut_ref * (L / L_ref) ** 0.7` These exponents follow the convention of modern cluster lensing analyses, and `L_ref` is a fixed reference +luminosity. The 0.25 is the previous tutorial's Faber-Jackson relation recast for velocity dispersion: +`L ~ sigma^4` inverts to `sigma ~ L^0.25`, and since `theta_E ~ sigma^2` this reproduces the `theta_E ~ L^0.5` +scaling we anchored there. Note also the change of normalization: rather than hanging the relation off an +anchor galaxy the model already fits, we normalise it with a shared free parameter at a fixed reference luminosity. Now the *entire member population's mass* costs one free parameter (`sigma_ref`), no matter how many members the group has, and each member's observed luminosity acts as a physically motivated prior on its mass. @@ -525,10 +529,15 @@ model = af.Collection( galaxies=af.Collection(lens=bgg_model, source=source_model), - extra_galaxies=af.Collection(member_list), + scaling_galaxies=af.Collection(member_list), ) """ +Note that the tied members now live in the `scaling_galaxies` collection — the home the previous tutorial +introduced for a scaling-relation population — whereas the individually-modelled members above sat in +`extra_galaxies`, like tutorial 1's interlopers. Both collections are included in the ray-tracing; the split +keeps `model.info` readable and tells the results machinery which galaxies are a tied population. + The model's `info` shows that both members' `sigma` values now trace back to the single shared `sigma_ref` prior, and the parameter count has dropped to N=18. diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py b/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py index 354ed2c..00ad19a 100644 --- a/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py @@ -2,8 +2,8 @@ Tutorial 5: Cluster Scale ========================= -Throughout this chapter we have been climbing a ladder of scale: from a single lens galaxy with a couple of -extra galaxies nearby, to multi-galaxy lenses, to galaxy groups whose members share a common dark matter halo. +Throughout this chapter we have been climbing a ladder of scale: from a single lens galaxy with an extra +galaxy nearby, to multi-galaxy lenses, to galaxy groups whose members share a common dark matter halo. This tutorial climbs the final rung: **galaxy clusters**, the most massive gravitationally-bound structures in the Universe. A cluster-scale strong lens contains: @@ -693,5 +693,5 @@ where multiple images form. Far beyond it, every background galaxy is still subtly sheared — distorted by a percent or less — and by measuring those distortions statistically across thousands of galaxies, the cluster's mass can be mapped out to its edges. That is **weak lensing**, a different regime with different -data and different statistics, and it is where the next tutorial takes us +data and different statistics, and it is where the next tutorial takes us. """ diff --git a/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py b/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py index ae19eed..755cfd6 100644 --- a/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py +++ b/scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py @@ -103,7 +103,7 @@ background galaxies carrying too little shear. (Surveys recover it only by *stacking* thousands of lens galaxies, a technique called galaxy-galaxy lensing that averages over the lens population.) - - **A group** (Einstein radius ~5-10", the scale of the group tutorial earlier in this chapter): the signal is + - **A group** (Einstein radius ~4-10", the scale of the group tutorial earlier in this chapter): the signal is marginal — detectable for well-observed individual groups, but noisy. - **A cluster** (Einstein radius ~10-30"+, the previous tutorial's scale): the signal is strong enough to measure @@ -181,7 +181,8 @@ Unlike every previous tutorial, we do not write this dataset to disk and reload it. The whole catalogue is a few thousand numbers, so we keep it in memory and use it directly — which also mirrors how you might resimulate -catalogues on the fly when testing survey sensitivities. (The workspace's `scripts/weak/simulator.py` shows the +catalogues on the fly when testing survey sensitivities. (This repo's `scripts/simulator/weak_lensing.py` — the +script chapter 1's data tutorial auto-ran to give you your first glimpse of a shear catalogue — shows the disk-based version, with the same JSON output pattern as the imaging simulators.) """ dataset_name = "weak_lensing" diff --git a/scripts/simulator/lens_x2.py b/scripts/simulator/lens_x2.py index 661b1a0..00d83ad 100644 --- a/scripts/simulator/lens_x2.py +++ b/scripts/simulator/lens_x2.py @@ -31,9 +31,9 @@ - The lens galaxy's light is two `Sersic`'s. - The lens galaxy's mass distribution is two `Isothermal`'s. - - The source galaxy's light is an `Sersic`. + - The source galaxy's light is an `ExponentialCoreSph`. -This dataset is used in chapter 3 of the **HowToLens** lectures. +This dataset is used in chapter 4 of the **HowToLens** lectures. __Start Here Notebook__ diff --git a/scripts/simulator/lens_x3.py b/scripts/simulator/lens_x3.py index 11673dd..a778fef 100644 --- a/scripts/simulator/lens_x3.py +++ b/scripts/simulator/lens_x3.py @@ -32,7 +32,7 @@ - The lens galaxies' light are three `Sersic`'s. - The lens galaxies' mass distributions are three `Isothermal`'s. - - The source galaxy's light is an `Sersic`. + - The source galaxy's light is an `ExponentialCoreSph`. This dataset is used in chapter 4 of the **HowToLens** lectures. diff --git a/scripts/simulator/weak_lensing.py b/scripts/simulator/weak_lensing.py index 3210acb..c5739bf 100644 --- a/scripts/simulator/weak_lensing.py +++ b/scripts/simulator/weak_lensing.py @@ -8,7 +8,7 @@ The lens is a **cluster-scale** mass (Einstein radius 25", the regime where weak lensing is actually used) and the background galaxies are placed in an **annulus outside the strong-lensing core** — this is where real weak-lensing -measurements are made, so the simulated shears are genuinely weak (|gamma| ~ 0.05-0.2) rather than the order-unity +measurements are made, so the simulated shears are genuinely weak (|gamma| ~ 0.06-0.25) rather than the order-unity shears found among galaxies projected near the Einstein radius. The shear computation itself comes from `Tracer.shear_yx_2d_via_hessian_from`, which differentiates the @@ -91,7 +91,7 @@ (~3.3 arc-minutes), uniformly in area. This is the physically genuine weak-lensing geometry: at 50" the shear is |gamma| ~ 0.25 and by 200" it has -fallen to |gamma| ~ 0.03, so every galaxy is a *weak* probe whose individual shear is well below the 0.25 shape +fallen to |gamma| ~ 0.06, so every galaxy is a *weak* probe whose individual shear is well below the 0.25 shape noise. The signal lives in the ensemble of 1500 galaxies (a deep-survey source density of ~45 / arc-minute^2), exactly as in a real cluster weak-lensing analysis. From 58aa1457bcf8724795d1a3dbaf065e972ae8a631 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 13:16:09 +0000 Subject: [PATCH 18/22] =?UTF-8?q?docs:=20chapters=201-2=20review=20fixes?= =?UTF-8?q?=20=E2=80=94=20stale=20numbering,=20equations,=20stack=20claims?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adversarial review: pre-restructure titles and cross-references fixed (more_ray_tracing was still 'Tutorial 5', the summary 'Tutorial 9'); caustic image-multiplicity statements corrected to the changes-by-two rule with the three-region statement; the fitting tutorial's noise normalization prose now matches its sum-of-logs formula; parameter counts, n_live values and prior/profile names align with the code and simulators (verified by introspection); need-for-speed quotes the real JAX jit log message; HowToGalaxy copy-paste and workspace-path confusion fixed; Contents lists now match every file's actual sections; scores of typos cleaned across both chapters and the optional searches tutorial. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- .../tutorial_0_visualization.py | 24 ++++++---- .../tutorial_1_grids_and_galaxies.py | 8 +++- .../tutorial_2_ray_tracing.py | 1 + .../tutorial_3_more_ray_tracing.py | 30 ++++++------ .../tutorial_4_point_sources.py | 4 +- .../tutorial_5_lensing_formalism.py | 3 +- .../chapter_1_introduction/tutorial_6_data.py | 23 +++++---- .../tutorial_7_fitting.py | 28 ++++++----- .../tutorial_8_summary.py | 2 +- .../tutorial_10_prior_passing.py | 10 ++-- .../tutorial_1_non_linear_search.py | 47 ++++++++++--------- .../tutorial_2_practicalities.py | 29 +++++++----- .../tutorial_3_realism_and_complexity.py | 12 +++-- .../tutorial_4_dealing_with_failure.py | 15 +++--- .../tutorial_5_linear_profiles.py | 5 +- .../tutorial_6_masking_and_positions.py | 8 ++-- .../tutorial_7_results.py | 3 +- .../tutorial_8_need_for_speed.py | 6 +-- .../tutorial_9_search_chaining.py | 6 ++- scripts/chapter_optional/tutorial_searches.py | 8 ++-- 20 files changed, 155 insertions(+), 117 deletions(-) diff --git a/scripts/chapter_1_introduction/tutorial_0_visualization.py b/scripts/chapter_1_introduction/tutorial_0_visualization.py index c37fee3..e9b8ed1 100644 --- a/scripts/chapter_1_introduction/tutorial_0_visualization.py +++ b/scripts/chapter_1_introduction/tutorial_0_visualization.py @@ -7,8 +7,9 @@ __Contents__ -- **Directories:** **PyAutoLens assumes** the working directory is `autolens_workspace` on your hard-disk. +- **Directories:** **HowToLens** assumes the working directory is the `HowToLens` repository root on your hard-disk. - **Dataset:** Load and plot the strong lens dataset. +- **Dataset Auto-Simulation:** Create the dataset via its simulator script if it is not on your hard-disk. - **Subplots:** In addition to plotting individual figures, **PyAutoLens** can plot `subplots` which show multiple. - **Plot Customization:** Does the figure display correctly on your computer screen? - **Overlays:** Overlays such as critical curves and image positions are added using the `lines=` and `positions=`. @@ -21,11 +22,16 @@ # from autolens import setup_notebook; setup_notebook() """ -If the printed working directory does not match the workspace path on your computer, you can manually set it -as follows (the example below shows the path I would use on my laptop. The code is commented out so you do not -use this path in this tutorial! +__Directories__ + +**HowToLens** assumes the working directory is the `HowToLens` repository root on your hard-disk, so that relative +paths to `dataset/` and `output/` resolve correctly. + +If your working directory does not match this path on your computer, you can manually set it as follows (the +example below shows the path I would use on my laptop. The code is commented out so you do not use this path in +this tutorial! """ -# workspace_path = "/Users/Jammy/Code/PyAuto/autolens_workspace" +# workspace_path = "/Users/Jammy/Code/PyAuto/HowToLens" # #%cd $workspace_path # print(f"Working Directory has been set to `{workspace_path}`") @@ -33,10 +39,10 @@ __Dataset__ The `dataset_path` specifies where the dataset is located, which is the -directory `autolens_workspace/dataset/imaging/simple__no_lens_light`. +directory `dataset/imaging/simple__no_lens_light` of the HowToLens repository. -There are many example simulated images of strong lenses in this directory that will be used throughout the -**HowToLens** lectures. +The simulated images of strong lenses used throughout the **HowToLens** lectures are written to the `dataset` +directory at runtime by the simulator scripts in `scripts/simulator/`. """ from pathlib import Path @@ -92,7 +98,7 @@ If not, the default matplotlib settings can be customized via the config files in: - autolens_workspace/config/visualize/ + config/visualize/ Key config entries: diff --git a/scripts/chapter_1_introduction/tutorial_1_grids_and_galaxies.py b/scripts/chapter_1_introduction/tutorial_1_grids_and_galaxies.py index 56cada6..c35ea02 100644 --- a/scripts/chapter_1_introduction/tutorial_1_grids_and_galaxies.py +++ b/scripts/chapter_1_introduction/tutorial_1_grids_and_galaxies.py @@ -57,6 +57,10 @@ - **One Dimension Projection:** We often want to calculative 1D quantities of a light profile, for example to plot how its light. - **Galaxies:** Galaxies are collections of light profiles that represent a galaxy's luminous emission. - **Units:** By assuming a redshift for a galaxy we can convert its quantities from arcseconds to kiloparsecs. +- **Wrap Up:** Summary of the script and next steps. +- **Advanced Topics:** Optional reference material for expert users, not needed on a first read. +- **Other Unit Conversion:** Other unit conversions a galaxy's redshift enables (e.g. AB magnitudes). +- **Over Sampling:** The adaptive over-sampling scheme used to evaluate light profiles accurately. """ @@ -93,7 +97,7 @@ shape_native=( 101, 101, - ), # The dimensions of the grid, which here is 100 x 100 pixels. + ), # The dimensions of the grid, which here is 101 x 101 pixels. pixel_scales=0.1, # The conversion factor between pixel units and arc-seconds. ) @@ -150,7 +154,7 @@ We can shift the grid to a new center, (y_c, x_c), by subtracting this center from each coordinate. """ -centre = (0.3, 0.5) # Shifting the grid to be centered at y=1.0", x=2.0". +centre = (0.3, 0.5) # Shifting the grid to be centered at y=0.3", x=0.5". grid_shifted = grid grid_shifted[:, 0] = grid_shifted[:, 0] - centre[0] # Shift in y-direction. diff --git a/scripts/chapter_1_introduction/tutorial_2_ray_tracing.py b/scripts/chapter_1_introduction/tutorial_2_ray_tracing.py index 5fed74a..c914104 100644 --- a/scripts/chapter_1_introduction/tutorial_2_ray_tracing.py +++ b/scripts/chapter_1_introduction/tutorial_2_ray_tracing.py @@ -65,6 +65,7 @@ - **Galaxies:** A `Galaxy` can contain both light and mass profiles, forming realistic lens and source galaxies. - **Tracer:** The `Tracer` object automates ray-tracing for a system of galaxies at different redshifts. - **Mappings:** Every image-plane coordinate maps to a source-plane coordinate via the lens equation. +- **Wrap Up:** Summary of the script and next steps. """ diff --git a/scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py b/scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py index 7b28149..79e01a5 100644 --- a/scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py +++ b/scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py @@ -1,5 +1,5 @@ """ -Tutorial 5: More Ray Tracing +Tutorial 3: More Ray Tracing ============================ We'll now reinforce the ideas that we learnt about ray-tracing in the previous tutorial and introduce the following @@ -27,7 +27,7 @@ - **Initial Setup:** To begin, lets setup the grid we'll ray-trace using. - **Concise Code:** Lets set up the tracer used in the previous tutorial. -- **Critical Curves:** To end, we can finally explain what the black lines that have appeared on many of the plots. +- **Critical Curves:** We can finally explain what the black lines that have appeared on many of the plots. - **Caustics:** In the previous tutorial, we plotted the critical curves of the mass profile on the image-plane. - **Units:** Lets plot the lensing quantities again. - **More Complexity:** We now make a lens with some attributes we didn`t in the last tutorial. @@ -89,8 +89,8 @@ """ __Critical Curves__ -To end, we can finally explain what the black lines that have appeared on many of the plots throughout this chapter -actually are. +We can finally explain what the black lines that have appeared on many of the plots throughout this chapter +actually are. These lines are called the 'critical curves', and they define line of infinite magnification due to a mass profile. They therefore mark where in the image-plane a mass profile perfectly `focuses` light rays such that if a source is @@ -104,7 +104,7 @@ when its inner mass slope is less steep than a steep power-law). To make it appear below, we therefore change the mass profile of our lens galaxy to a `PowerLawSph` with a slope of 1.8. -In the next tutorial, we'll introduce 'caustics', which are where the critical curves map too in the source-plane. +In the next section, we'll introduce 'caustics', which are where the critical curves map to in the source-plane. """ mass_profile = al.mp.PowerLawSph(centre=(0.0, 0.0), einstein_radius=1.6, slope=1.8) @@ -121,12 +121,12 @@ """ __Caustics__ -In the previous tutorial, we plotted the critical curves of the mass profile on the image-plane. We will now plot the +In the previous section, we plotted the critical curves of the mass profile on the image-plane. We will now plot the 'caustics', which correspond to each critical curve ray-traced to the source-plane. This is computed by using the lens galaxy mass profile's to calculate the deflection angles at the critical curves and ray-trace them to the source-plane. -As discussed in the previous tutorial, critical curves mark regions of infinite magnification. Thus, if a source +As discussed in the previous section, critical curves mark regions of infinite magnification. Thus, if a source appears near a caustic in the source plane it will appear significantly brighter than its true luminosity. We again have to use a mass profile with a slope below 2.0 to ensure a radial critical curve and therefore radial @@ -172,9 +172,9 @@ aplt.plot_array(array=tracer.image_2d_list_from(grid=grid)[1], title="Plane 1 Image") """ -Caustics also mark the regions in the source-plane where the multiplicity of the strong lens changes. That is, -if a source crosses a caustic, it goes from 2 images to 1 image. Try and show this yourself by changing the (y,x) -centre of the source-plane galaxy's light profile! +Caustics also mark the regions in the source-plane where the multiplicity of the strong lens changes. Each time +a source crosses a caustic, the number of images it produces changes by two. Try and show this yourself by changing +the (y,x) centre of the source-plane galaxy's light profile! """ source = al.Galaxy( redshift=1.0, @@ -203,7 +203,7 @@ aplt.subplot_galaxies_images(tracer=tracer, grid=grid) """ -If you're too familiar with Cosmology, it will be unclear how exactly we converted the distance units from +If you're not too familiar with Cosmology, it will be unclear how exactly we converted the distance units from arcseconds to kiloparsecs. You'll need to read up on your Cosmology lecture to understand this properly. You can create a `Cosmology` object, which provides many methods for calculation different cosmological quantities, @@ -325,9 +325,9 @@ Now lets pass our 4 galaxies to a `Tracer`, which means the following will occur: - - Using the galaxy redshift`s, and image-plane and source-plane will be created each with two galaxies galaxies. + - Using the galaxy redshifts, an image-plane and source-plane will be created, each with two galaxies. -We've also pass the tracer below a Planck15 cosmology, where the cosomology of the Universe describes exactly how +We also pass the tracer below a Planck15 cosmology, where the cosmology of the Universe describes exactly how ray-tracing is performed. """ tracer = al.Tracer( @@ -350,7 +350,7 @@ 5) The image of the source galaxies is computed by summing both of their images and ray-tracing their light back to the image-plane. -This process is pretty much the same as we have single in previous tutorials when there is one galaxy per plane. We +This process is pretty much the same as we have seen in previous tutorials when there is one galaxy per plane. We are simply summing the images and deflection angles of the galaxies before using them to perform ray-tracing. """ aplt.plot_array(array=tracer.image_2d_from(grid=grid), title="Image") @@ -369,7 +369,7 @@ """ __Wrap Up__ -Tutorial 6 completed! Try the following: +Tutorial 3 completed! Try the following: 1) If you change the lens and source galaxy redshifts, does the tracer's image change? diff --git a/scripts/chapter_1_introduction/tutorial_4_point_sources.py b/scripts/chapter_1_introduction/tutorial_4_point_sources.py index 4aa4c7e..30467bb 100644 --- a/scripts/chapter_1_introduction/tutorial_4_point_sources.py +++ b/scripts/chapter_1_introduction/tutorial_4_point_sources.py @@ -279,9 +279,9 @@ For an extended source, magnification stretches the source over more pixels. For a point source, the image stays unresolved — so the magnification instead multiplies its observed **flux**. If the source's intrinsic flux is $F$, -the flux of a multiple image with magnification $mu$ is $|mu| * F$. +the flux of a multiple image with magnification $\mu$ is $|\mu| * F$. -We compute the magnification at each solved image position below (the sign of $mu$ encodes the image's parity — +We compute the magnification at each solved image position below (the sign of $\mu$ encodes the image's parity — whether it is mirror-flipped — which is why we take its absolute value for fluxes). """ magnifications = al.LensCalc.from_tracer( diff --git a/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py b/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py index 16f9646..7ff511f 100644 --- a/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py +++ b/scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py @@ -385,7 +385,8 @@ Caustics divide the source-plane into regions of different image multiplicity: each time a source crosses a caustic, the number of images it produces changes by two. For our SIE lens, a source inside the tangential caustic -produces four images (plus a faint central image); outside it, two. +produces four images (plus a faint central image); between the tangential and radial caustics, two; and outside +both caustics, just one — the source is no longer multiply imaged at all. `LensCalc` computes both by locating the zero-contours of the eigenvalue fields on the grid: """ diff --git a/scripts/chapter_1_introduction/tutorial_6_data.py b/scripts/chapter_1_introduction/tutorial_6_data.py index 4fc2adc..ec6ea19 100644 --- a/scripts/chapter_1_introduction/tutorial_6_data.py +++ b/scripts/chapter_1_introduction/tutorial_6_data.py @@ -13,8 +13,8 @@ **Exposure Time:** The time the detector collects light, affecting the clarity of the image. Longer exposure times gather more light, improving the signal-to-noise ratio and creating a clearer image. -**Background Sky:** Light from the sky itself, such as distant stars or zodiacal light, adds noise to the image. -adds additional noise to the image. +**Background Sky:** Light from the sky itself, such as distant stars or zodiacal light, adds additional noise to +the image. In this tutorial, we'll simulate a strong lens image by applying these real-world effects to the light and mass profiles and images we created earlier. @@ -61,7 +61,7 @@ shape_native=( 101, 101, - ), # The dimensions of the grid, which here is 100 x 100 pixels. + ), # The dimensions of the grid, which here is 101 x 101 pixels. pixel_scales=0.1, # The conversion factor between pixel units and arc-seconds. ) @@ -131,7 +131,7 @@ in its tail, which are much smaller than the central peak yet critical for many scientific analyses. The tail values may significantly affect the spread and detail captured in the data. """ -aplt.plot_array(array=psf.kernel, title="PSF 2D Kernel") +aplt.plot_array(array=psf.kernel, title="PSF 2D Kernel (Log10)", use_log10=True) """ Next, we'll manually perform a 2D convolution of the PSF with the image of the galaxy. This convolution simulates the @@ -165,7 +165,7 @@ """ aplt.plot_array(array=image, title="Tracer Image Before PSF") -aplt.plot_array(array=blurred_image, title="") +aplt.plot_array(array=blurred_image, title="Tracer Image After PSF") """ @@ -192,8 +192,8 @@ We also need to consider the units of our image data. Let’s assume that the tracer image is measured in units of electrons per second ($e^- s^{-1}$), which is standard for CCD imaging data. To simulate the number of electrons -actually detected in each pixel, we multiply the image by the observation’s exposure time. This conversion changes t -he units to the total number of electrons collected per pixel over the entire exposure time. +actually detected in each pixel, we multiply the image by the observation’s exposure time. This conversion changes +the units to the total number of electrons collected per pixel over the entire exposure time. Once the image is converted, we add Poisson noise, simulating the randomness in the photon-to-electron conversion process. After adding the noise, we convert the image back to units of electrons per second for analysis, as @@ -238,7 +238,7 @@ In addition to light from the strong lens, the telescope also picks up light from the sky. This background sky light is primarily due to two sources: zodiacal light, which is light scattered by interplanetary dust in the solar system, -and the unresolved emission from distant stars and tracer. +and the unresolved emission from distant stars and galaxies. For our simulation, we'll assume that the background sky has a uniform brightness across the image, measured at 0.1 electrons per second per pixel. The background sky is added to the image before applying the PSF convolution @@ -359,9 +359,8 @@ We will now save these simulated data to `.fits` files, the standard format used by astronomers for storing images. Most imaging data from telescopes like the Hubble Space Telescope (HST) are stored in this format. -The `dataset_path` specifies where the data will be saved, in this case, in the directory -`autolens_workspace/dataset/imaging/howtolens/`, which contains many example images distributed with -the `autolens_workspace`. +The `dataset_path` specifies where the data will be saved, in this case the `dataset/imaging/howtolens/` +directory of the HowToLens repository (paths are relative to the repository root, from which scripts are run). The files are named `data.fits`, `noise_map.fits`, and `psf.fits`, and will be used in the next tutorial. """ @@ -471,7 +470,7 @@ Let's summarise what we've covered: -- **Optics Blurring**: The optics of a telescope blur the light from tracer, reducing the clarity and sharpness of +- **Optics Blurring**: The optics of a telescope blur the light of the tracer, reducing the clarity and sharpness of the images. - **Poisson Noise**: The process of converting photons to electrons on a CCD introduces Poisson noise, which is random diff --git a/scripts/chapter_1_introduction/tutorial_7_fitting.py b/scripts/chapter_1_introduction/tutorial_7_fitting.py index 406c272..58e0239 100644 --- a/scripts/chapter_1_introduction/tutorial_7_fitting.py +++ b/scripts/chapter_1_introduction/tutorial_7_fitting.py @@ -2,7 +2,7 @@ Tutorial 7: Fitting =================== -In previous tutorials, we used light profiles to create simulated images of tracer and visualized how these images +In previous tutorials, we used light profiles to create simulated images of a tracer and visualized how these images would appear when captured by a CCD detector on a telescope like the Hubble Space Telescope. However, this simulation process is the reverse of what astronomers typically do when analyzing real data. Usually, @@ -33,7 +33,9 @@ __Contents__ -- **Dataset & Mask:** Standard set up of the dataset and mask that is fitted. +- **Dataset:** Load the imaging dataset that we previously simulated, consisting of the image, noise map, and PSF. +- **Dataset Auto-Simulation:** Create the dataset by running the tutorial 6 script if it is not on your hard-disk. +- **Mask:** Apply a mask to the data, excluding regions with low signal-to-noise ratios from the analysis. - **Masked Grid:** In tutorials 1 and 2, we emphasized that the `Grid2D` object is crucial for evaluating a lens's. - **Fitting:** Fit the lens model to the dataset and inspect the results. - **Incorrect Fit:** In the previous section, we successfully created and fitted a lens model to the image data. @@ -42,6 +44,8 @@ """ +from autolens import jax_wrapper # Sets JAX environment before other imports + # from autolens import setup_notebook; setup_notebook() import numpy as np @@ -55,11 +59,11 @@ We begin by loading the imaging dataset that we will use for fitting in this tutorial. This dataset is identical to the one we simulated in the previous tutorial, representing how a lens would appear if captured by a CCD camera. -In the previous tutorial, we saved this dataset as .fits files in the `autolens_workspace/dataset/imaging/howtolens` -folder. The `.fits` format is commonly used in astronomy for storing image data along with metadata, making it a -standard for CCD imaging. +In the previous tutorial, we saved this dataset as .fits files in the `dataset/imaging/howtolens` folder of the +HowToLens repository. The `.fits` format is commonly used in astronomy for storing image data along with metadata, +making it a standard for CCD imaging. -The `dataset_path` below specifies where these files are located: `autolens_workspace/dataset/imaging/howtolens/`. +The `dataset_path` below specifies where these files are located: `dataset/imaging/howtolens/`. """ dataset_path = Path("dataset") / "imaging" / "howtolens" @@ -112,7 +116,7 @@ """ __Mask__ -The signal-to-noise map of the image highlights areas where the signal (light from the lens and source tracer) +The signal-to-noise map of the image highlights areas where the signal (light from the lens and source galaxies) is detected above the background noise. Values above 3.0 indicate regions where the light is detected with a signal-to-noise ratio of at least 3, while values below 3.0 are dominated by noise, where the light is not clearly distinguishable. @@ -427,7 +431,7 @@ """ Another quantity that contributes to our final assessment of the goodness-of-fit is the `noise_normalization`. -The `noise_normalization` is computed as the logarithm of the sum of squared noise values in our data: +The `noise_normalization` is computed by summing, over every pixel, the logarithm of 2 pi times the squared noise value: \[ \text{{noise\_normalization}} = \sum \log(2 \pi \text{{noise\_map}}^2) @@ -501,7 +505,7 @@ These metrics are standard ways to quantify the quality of a model fit. They are applicable not only to 1D data but also to more complex data structures like 2D images, 3D data cubes, or any other multidimensional datasets. -__Incorrect Fit___ +__Incorrect Fit__ In the previous section, we successfully created and fitted a lens model to the image data, resulting in an excellent fit. The residual map and chi-squared map showed no significant discrepancies, indicating that the @@ -586,7 +590,7 @@ aplt.subplot_fit_imaging(fit=fit_very_bad) """ -It is now evident that this model provides a terrible fit to the data. The tracer do not resemble a plausible +It is now evident that this model provides a terrible fit to the data. The tracer does not resemble a plausible representation of our simulated strong lens dataset, which we already anticipated given that we generated the data ourselves! As expected, the log likelihood has dropped dramatically with this poorly fitting model. @@ -606,8 +610,8 @@ In practice, however, we don't know the "true" model. For example, we might have an image of a strong lens observed with the Hubble Space Telescope, but the values for parameters like its `einstein_radius` and others are -unknown. The process of determining the best-fit model is called model fitting, and it is the main topic of -Chapter 2 of *HowToGalaxy*. +unknown. The process of determining the best-fit model is called model fitting, and it is the main topic of +Chapter 2 of **HowToLens**. To conclude this section, let's perform a basic, hands-on model fit to develop some intuition about how we can find the best-fit model. We'll start by loading a simple dataset that was simulated without any lens light, using diff --git a/scripts/chapter_1_introduction/tutorial_8_summary.py b/scripts/chapter_1_introduction/tutorial_8_summary.py index 4d50143..ec1cd23 100644 --- a/scripts/chapter_1_introduction/tutorial_8_summary.py +++ b/scripts/chapter_1_introduction/tutorial_8_summary.py @@ -1,5 +1,5 @@ """ -Tutorial 9: Summary +Tutorial 8: Summary =================== In this chapter, we have learnt that: diff --git a/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py b/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py index d18ad42..1090356 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py +++ b/scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py @@ -13,8 +13,10 @@ __Contents__ - **Initial Setup:** Load the same strong lensing data as the previous tutorial. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Model:** Compose the lens model fitted to the data. - **Search:** Configure the non-linear search used to fit the model. +- **Result (Search 1):** The results of search 1, which are used for prior passing. - **Prior Passing:** Use the prior passing API to pass the results of search 1 without writing out values manually. - **Result:** Overview of the results of the model-fit. - **Wrap Up:** Summary of the script and next steps. @@ -123,7 +125,7 @@ name="tutorial_9_search_chaining_1", unique_tag=dataset_name, n_live=100, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis_1 = al.AnalysisImaging(dataset=dataset) @@ -178,8 +180,8 @@ We can use a special prior passing method to do this, called `take_attributes`. This scans the `Exponential` passed to the `take_attributes` method for all parameters which have the same name as the `Sersic` model, -and if their names are the same it passes their prior as a `model` (like we did above). Thus, it will locate all 6 -parameters in common between the two profiles (centre_, ell_comps, intensity, effective_radius) and pass those, +and if their names are the same it passes their prior as a `model` (like we did above). Thus, it will locate the +parameters in common between the two profiles (`centre`, `ell_comps`, `effective_radius`) and pass those, leaving the `sersic_index`'s priors as the default values. The `take_attributes` method is used in many examples of prior passing, when we pass a simpler parameterization of a @@ -214,7 +216,7 @@ name="tutorial_10_prior_passing_2", unique_tag=dataset_name, n_live=100, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis_2 = al.AnalysisImaging(dataset=dataset) diff --git a/scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py b/scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py index 9f28674..a94c841 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py +++ b/scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py @@ -4,7 +4,7 @@ The starting point for most scientific analysis conducted by an Astronomer is that they have observations of a strong lens using a telescope like the Hubble Space Telescope, and seek to learn about the lens galaxy, source galaxy and the -Universe from these observations. With **PyAutoLen**, we seek to learn about the lenses may and ray-tracing, asking questions like +Universe from these observations. With **PyAutoLens**, we seek to learn about the lens's mass and ray-tracing, asking questions like how big is the lens galaxy and what does the unlensed source galaxy look like? To answer these questions, we must therefore fit the dataset with a lens model, where the lens model defines the @@ -27,7 +27,7 @@ and begin learning about real galaxies in the Universe. This first tutorial introduces a number of key statistical concepts that are fundamental to understanding how -model-fitting works, both for **PyAutoLen** and in general. +model-fitting works, both for **PyAutoLens** and in general. __Overview__ @@ -40,22 +40,27 @@ model instance to the data. - Fit datasets with different non-linear searches, including a maximum likelihood estimator (MLE), - Markok Chain Monte Carlo (MCMC) and nested sampling. + Markov Chain Monte Carlo (MCMC) and nested sampling. __Contents__ - **Overview:** In this tutorial, we will use a non-linear search to fit a lens model to simulated imaging of. - **Parameter Space:** In mathematics, a function is defined by its parameters, which map inputs to outputs. +- **Non-Linear Search:** The method used to fit the model to the data, by sampling the non-linear parameter space. - **Search Types:** There are different types of non-linear searches, each of which explores parameter space in a. -- **Deeper Background:** **The descriptions of how searches work in this example are simplfied and phoenomenological and do. +- **Deeper Background:** **The descriptions of how searches work in this example are simplified and phenomenological and do. - **PyAutoFit:** Modeling uses the probabilistic programming language. - **Initial Setup:** Let's first load the `Imaging` dataset, which we will use to fit a model with a non-linear search. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Mask:** Define the 2D mask applied to the dataset for the model-fit. - **Model:** Compose the lens model fitted to the data. - **Priors:** When we examine the `.info` of our model, we notice that each parameter (like `centre`. - **Analysis:** Create the Analysis object that defines how the model is fitted to the data. - **Searches:** To perform a non-linear search, we create an instance of a `NonLinearSearch` object. +- **Maximum Likelihood Estimation (MLE):** The simplest search type, which moves "up" the likelihood gradient. +- **Markov Chain Monte Carlo (MCMC):** Walkers explore parameter space, mapping out the likelihood surface. - **Nested Sampling:** **Nested Sampling** is an advanced method for model-fitting that excels in handling complex models. +- **What is The Best Search To Use?:** Choosing between MLE, MCMC and nested sampling for lens modeling. - **Wrap Up:** Summary of the script and next steps. __Parameter Space__ @@ -78,8 +83,8 @@ This defines a parameter space in three dimensions, representing the relationships between \(x\), \(y\), \(z\), and the output \(f(x, y, z)\). -This concept of parameter space is closely related to how we approach model-fitting. For instance, in chapter 1, w -e created instances of `Galaxy` objects with +This concept of parameter space is closely related to how we approach model-fitting. For instance, in chapter 1, +we created instances of `Galaxy` objects with parameters like \( (\text{`centre_0`}, \text{`centre_1`}, \text{`ell_comps_0`}, \text{`ell_comps_1`}, \text{`intensity`}, \text{`effective_radius`}, \text{`sersic_index`}) \). These parameters were used to fit data and compute a log likelihood. @@ -144,7 +149,7 @@ __Deeper Background__ -**The descriptions of how searches work in this example are simplfied and phoenomenological and do not give a full +**The descriptions of how searches work in this example are simplified and phenomenological and do not give a full description of how they work at a deep statistical level. The goal is to provide you with an intuition for how to use them and when different searches are appropriate for different problems. Later tutorials will provide a more formal description of how these searches work.** @@ -172,11 +177,11 @@ [PyAutoFit](https://github.com/PyAutoLabs/PyAutoFit), an open-source project that allows complex model fitting techniques to be straightforwardly integrated into scientific modeling software. -**PyAutoFit** is actually a spin-off project of **PyAutoLen**. whereby we found that the statistic techniques and +**PyAutoFit** is actually a spin-off project of **PyAutoLens**, whereby we found that the statistical techniques and methods we applied to model galaxies could be used in a more general setting to many different scientific problems. Check it out if you are interested in developing your own software to perform advanced model-fitting! -We import this library separately from **PyAutoLen**. +We import this library separately from **PyAutoLens**. """ import autofit as af @@ -185,12 +190,12 @@ Let's first load the `Imaging` dataset, which we will use to fit a model with a non-linear search. -The strong lens in this image was generated using an `Isothermal` lens mass profile and `SersicCore` source light profile, +The strong lens in this image was generated using an `IsothermalSph` lens mass profile and `ExponentialCoreSph` source light profile, which we'll also use in our model fitting in this tutorial. This means the model we are going to fit is identical to the one used to simulate the data, allowing us to assess the fitting process under controlled conditions. -The dataset, as well as all subsequent datasets used in future tutorials, is stored in -the `autolens_workspace/dataset/imaging` folder. +The dataset, as well as all subsequent datasets used in future tutorials, is stored in the HowToLens +repository's `dataset/imaging` folder (simulated at runtime by the simulator scripts, as shown below). """ dataset_name = "simple__no_lens_light__mass_sis" dataset_path = Path("dataset") / "imaging" / dataset_name @@ -300,10 +305,10 @@ been chosen to be broad, and contain the breadth of plausible solutions one should expect when fitting light and mass profiles of a real galaxy. -For instance, consider the `centre` parameter of our `IsothermalSph` light profile. In theory, it could take on any value from -negative to positive infinity. However, imaging datasets are typically reduced such that the galaxy centre is close -to (0.0", 0.0"). Therefore, a `TruncatedGaussianPrior` with `mean=0.0` and `sigma=0.1` is a good description of where the -galaxy `centre` is. +For instance, consider the `centre` parameter of our `IsothermalSph` mass profile. In theory, it could take on any value from +negative to positive infinity. However, imaging datasets are typically reduced such that the galaxy centre is close +to (0.0", 0.0"). Therefore, a `GaussianPrior` with `mean=0.0` and `sigma=0.1` is a good description of where the +galaxy `centre` is. If the galaxy had a different centre in the dataset, we would change the mean of the prior to reflect this. However, in general, we advise all galaxy images are reduced such that the galaxy is at (0.0", 0.0"). @@ -524,7 +529,7 @@ one, other walkers will explore other regions of parameter space and encourage the walker in local maxima to move away from it and head towards higher likelihood regions. -In the example below, we use the `Emcee` MCMC search to fit the strong lens The search starts with walkers +In the example below, we use the `Emcee` MCMC search to fit the strong lens. The search starts with walkers initialized in a "ball" around the center of the model’s priors, similar to the MLE search that failed earlier. """ search = af.Emcee( @@ -556,7 +561,7 @@ A major advantage of MCMC is that it provides estimates of parameter uncertainties by "mapping out" the likelihood surface, unlike MLE, which only finds the maximum likelihood solution. These error estimates are accessible in -the `result.info` string and through the `result.samples` object, which is explained fully in tutorial 5. +the `result.info` string and through the `result.samples` object, which is explained fully in tutorial 7. While a good starting point wasn't necessary for this simple model, it becomes essential for efficiently mapping the likelihood surface in more complex models with many parameters. The code below shows an MCMC fit using a good starting @@ -635,7 +640,7 @@ search = af.Nautilus( n_live=100, n_batch=50, # Explained in next tutorial - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) """ @@ -695,12 +700,12 @@ When approaching a model-fitting problem, it's usually advisable to try various search methods to find the most effective one. -However, after extensive testing within **PyAutoLen**, a clear recommendation has emerged for fitting strong lens models. +However, after extensive testing within **PyAutoLens**, a clear recommendation has emerged for fitting strong lens models. The nested sampling method `Nautilus` consistently proves to be the most effective. It requires fewer iterations than MCMC or MLE methods (when no starting point is used), provides robust sampling even for complex models, includes a built-in stopping criterion, and delivers reliable error estimates. -All examples in the `autolens_workspace` use the `Nautilus` search, and future tutorials in the **HowToGalaxy** +All examples in the `autolens_workspace` use the `Nautilus` search, and future tutorials in the **HowToLens** series will also use it. We strongly recommend using `Nautilus` from now on. That said, MLE and MCMC searches can still be effective, and you're encouraged to experiment with them. If you have diff --git a/scripts/chapter_2_lens_modeling/tutorial_2_practicalities.py b/scripts/chapter_2_lens_modeling/tutorial_2_practicalities.py index c0cbdf3..84d53e4 100755 --- a/scripts/chapter_2_lens_modeling/tutorial_2_practicalities.py +++ b/scripts/chapter_2_lens_modeling/tutorial_2_practicalities.py @@ -19,6 +19,7 @@ - **PyAutoFit:** Modeling uses the probabilistic programming language. - **Initial Setup:** Lets first load the `Imaging` dataset we'll fit a model with using a non-linear search. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Mask:** Define the 2D mask applied to the dataset for the model-fit. - **Model:** Compose the lens model fitted to the data. - **Search:** Configure the non-linear search used to fit the model. @@ -27,6 +28,7 @@ - **Analysis:** Create the Analysis object that defines how the model is fitted to the data. - **VRAM Use:** When running AutoLens with JAX on a GPU, the analysis must fit within the GPU’s available VRAM. - **Run Times:** Profiling the expected run time of the model-fit. +- **Model-Fit:** Begin the model-fit by passing the model and analysis to the search. - **Result Info:** A concise readable summary of the results is given by printing its `info` attribute. - **Output Folder:** Now checkout the `autolens_workspace/output` folder. - **Unique Identifier:** In the output folder, you will note that results are in a folder which is a collection of random. @@ -47,7 +49,7 @@ The ideal number of live points depends on model complexity. More parameters generally require more live points, but the default of 200 is sufficient for most lens models. Lower values can still yield reliable results, particularly -for simpler models. For this example (7 parameters), we reduce the live points to 100 to speed up runtime without +for simpler models. For this example (6 parameters), we reduce the live points to 100 to speed up runtime without compromising accuracy. Tuning non-linear search settings (e.g., the number of live points) to match model complexity is essential. We aim @@ -55,8 +57,8 @@ is excessive. In practice, the optimal number of live points is often found through trial and error, guided by summary statistics -on how well the search is performing, which we’ll cover below. For this single Sersic model with a linear light -profile, 80 live points is sufficient to achieve reliable results. +on how well the search is performing, which we’ll cover below. For the simple model fitted here, with a linear light +profile, 100 live points is sufficient to achieve reliable results. __Iterations Per Update__ @@ -66,8 +68,8 @@ Depending on how long it takes for the model to be fitted to the data (see discussion about run times below), this can take up a large fraction of the run-time of the non-linear search. -For this fit, the fit is very fast, thus we set a high value of `iterations_per_quick_update=10000` to ensure these updates -so not slow down the overall speed of the model-fit. +For this fit, the fit is very fast, thus we set a high value of `iterations_per_quick_update=2500` to ensure these updates +do not slow down the overall speed of the model-fit. **If the iteration per update is too low, the model-fit may be significantly slowed down by the time it takes to output results and visualization frequently to hard-disk. If your fit is consistent displaying a log saying that it @@ -172,13 +174,18 @@ print(model.info) +""" +__Search__ + +We again use the `Nautilus` non-linear search, with settings chosen following the Search Settings discussion above. +""" search = af.Nautilus( path_prefix=Path("howtolens") / "chapter_2", name="tutorial_2_practicalities", unique_tag=dataset_name, n_live=100, n_batch=50, # GPU batching and VRAM use explained in VRAM section below. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) """ @@ -211,7 +218,7 @@ The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. -For a MGE model with the low resolution dataset fitted in this example VRAM use is relatively low (~0.027GB) For other +For the simple model and low resolution dataset fitted in this example VRAM use is relatively low (~0.027GB). For other models (e.g. pixelized sources) and higher resolution datasets it can be much higher (> 1GB going beyond 10GB). """ analysis.print_vram_use(model=model, batch_size=search.batch_size) @@ -315,9 +322,9 @@ __Output Folder Contents__ -Now this is running you should checkout the `autolens_workspace/output` folder. This is where the results of the -search are written to hard-disk (in the `start_here` folder), where all outputs are human readable (e.g. as .json, -.csv or text files). +Now this is running you should checkout the `output` folder. This is where the results of the +search are written to hard-disk (in the `tutorial_2_practicalities` folder), where all outputs are human readable +(e.g. as .json, .csv or text files). As the fit progresses, results are written to the `output` folder on the fly using the highest likelihood model found by the non-linear search so far. This means you can inspect the results of the model-fit as it runs, without having to @@ -378,7 +385,7 @@ The following are examples of other practicalities which I will document fully in this example script in the future, but so far have no found the time: -- `config`: The files in `autogalaxy_workspace/config` which control many aspects of how PyAutoGalaxy runs, +- `config`: The files in the `config` folder which control many aspects of how **PyAutoLens** runs, including visualization, the non-linear search settings. - `config/priors`: Folder containing the default priors on all model components. diff --git a/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py b/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py index 992e59f..7cb3258 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py +++ b/scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py @@ -25,8 +25,10 @@ __Contents__ - **Initial Setup:** we'll use new strong lensing data, where. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Mask:** Define the 2D mask applied to the dataset for the model-fit. - **Model:** Compose the lens model fitted to the data. +- **Search + Analysis:** Create the non-linear search and analysis used to fit the model. - **Run Time:** Profiling the expected run time of the model-fit. - **Result:** Overview of the results of the model-fit. - **Global and Local Maxima:** Up to now, all our non-linear searches have successfully found lens models that provide visibly. @@ -125,7 +127,7 @@ __Search + Analysis__ We set up `Nautilus` as we did in the previous tutorial, however given the increase in model complexity we'll use -a higher `n_live` value of 150 to ensure we sample the complex parameter space efficiently. +a higher `n_live` value of 200 to ensure we sample the complex parameter space efficiently. """ search = af.Nautilus( path_prefix=Path("howtolens") / "chapter_2", @@ -133,7 +135,7 @@ unique_tag=dataset_name, n_live=200, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis = al.AnalysisImaging(dataset=dataset) @@ -198,7 +200,7 @@ unique_tag=dataset_name, n_live=75, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) print( @@ -251,7 +253,7 @@ inferring a local maxima is still very real, especially as we make our lens model more complex. Lets think about *complexity*. As we make our lens model more realistic, we also made it more complex. For this -tutorial, our non-linear parameter space went from 7 dimensions to 18. This means there was a much larger *volume* of +tutorial, our non-linear parameter space went from 6 dimensions to 20. This means there was a much larger *volume* of parameter space to search. As this volume grows, there becomes a higher chance that our non-linear search gets lost and infers a local maxima, especially if we don't set it up with enough live points! @@ -268,7 +270,7 @@ 2) The non-linear search failed because parameter space was too complex. Could we make it less complex, whilst still keeping our lens model fairly realistic? - 3) The source galaxy in this example had only 7 non-linear parameters. Real source galaxies may have multiple + 3) The source galaxy in this example had only 6 non-linear parameters. Real source galaxies may have multiple components (e.g. a disk, bulge, bar, star-forming knot) and there may even be more than 1 source galaxy! Do you think there is any hope of us navigating a parameter space if the source contributes 20+ parameters by itself? """ diff --git a/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py b/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py index a4a60fe..8ad6d0f 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py +++ b/scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py @@ -21,11 +21,15 @@ __Contents__ - **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Mask:** Define the 2D mask applied to the dataset for the model-fit. - **Prior Tuning:** First, we will try to assist our non-linear search by tuning our priors. - **Run Time:** Profiling the expected run time of the model-fit. - **Result:** Overview of the results of the model-fit. - **Discussion:** By tuning our priors to the specific lens model we are fitting, we increase the chances of finding. +- **Approach 2: Reducing Complexity:** Simplify the lens model, for example by assuming light-traces-mass. +- **Approach 3: Look Harder:** Brute force the global maxima with more thorough non-linear search settings. +- **Wrap Up:** Summary of the script and next steps. """ @@ -229,7 +233,7 @@ unique_tag=dataset_name, n_live=150, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis = al.AnalysisImaging(dataset=dataset) @@ -336,7 +340,7 @@ unique_tag=dataset_name, n_live=200, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) """ @@ -401,11 +405,8 @@ number of live points used by `Nautilus`. The more thoroughly the search examines the space, the more likely it is to find the global maximum lens model. However, this also means the search will take longer! -Below, we configure a more thorough Nautilus search with `n_live=200`. These settings and what they change are +Below, we configure a more thorough Nautilus search with `n_live=300`. These settings and what they change are discussed in the optional tutorial `chapter_optional/tutorial_searches.ipynb`. - -Due to the long run times of this search, the output is commented out below. Feel free to uncomment it to run the -script faster. """ lens = af.Model( al.Galaxy, @@ -424,7 +425,7 @@ name="tutorial_4_look_harder", unique_tag=dataset_name, n_live=300, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) """ __Run Time__ diff --git a/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py b/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py index a98850d..bd9bd56 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py +++ b/scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py @@ -26,6 +26,7 @@ __Contents__ - **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Mask:** Define the 2D mask applied to the dataset for the model-fit. - **Linear Light Profiles:** We use a variant of a light profile discussed called a "linear light profile", which is accessed. - **Run Time:** Profiling the expected run time of the model-fit. @@ -163,7 +164,7 @@ unique_tag=dataset_name, n_live=100, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis = al.AnalysisImaging(dataset=dataset) @@ -437,7 +438,7 @@ unique_tag=dataset_name, n_live=100, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) print( diff --git a/scripts/chapter_2_lens_modeling/tutorial_6_masking_and_positions.py b/scripts/chapter_2_lens_modeling/tutorial_6_masking_and_positions.py index f1e0929..b4dbaeb 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_6_masking_and_positions.py +++ b/scripts/chapter_2_lens_modeling/tutorial_6_masking_and_positions.py @@ -9,7 +9,9 @@ __Contents__ - **Initial Setup:** we'll use the same strong lensing data as tutorials 1 & 2, where. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Mask:** Define the 2D mask applied to the dataset for the model-fit. +- **Model + Analysis:** Compose the lens model and create the analysis that fits it using the chosen mask. - **Run Time:** Profiling the expected run time of the model-fit. - **Search:** Configure the non-linear search used to fit the model. - **Discussion:** So, we can choose the mask we use in a model-fit. @@ -33,7 +35,7 @@ we'll use the same strong lensing data as tutorials 1 & 2, where: - The lens galaxy's total mass distribution is a `IsothermalSph`. - - The source galaxy's light is a `ExponentialSph`. + - The source galaxy's light is a `ExponentialCoreSph`. """ dataset_name = "simple__no_lens_light__mass_sis" dataset_path = Path("dataset") / "imaging" / dataset_name @@ -126,7 +128,7 @@ unique_tag=dataset_name, n_live=80, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis = al.AnalysisImaging(dataset=dataset) @@ -255,7 +257,7 @@ unique_tag=dataset_name, n_live=80, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) print( diff --git a/scripts/chapter_2_lens_modeling/tutorial_7_results.py b/scripts/chapter_2_lens_modeling/tutorial_7_results.py index f784a99..450eeca 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_7_results.py +++ b/scripts/chapter_2_lens_modeling/tutorial_7_results.py @@ -8,6 +8,7 @@ __Contents__ - **Initial Setup:** Lets use the model-fit performed in tutorial 1 to get a `Result` object. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Tracer & Fit:** In the previous tutorials, we saw that this result contains the maximum log likelihood fit, which. - **Samples:** The result contains a lot more information about the model-fit. - **Workspace:** We are not going into any more detail on the result variable in this tutorial, or in the. @@ -78,7 +79,7 @@ unique_tag=dataset_name, n_live=80, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis = al.AnalysisImaging(dataset=dataset) diff --git a/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py b/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py index 6a86270..72faed8 100755 --- a/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py +++ b/scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py @@ -69,7 +69,7 @@ centre of the lens galaxy), which multiplies the number of intensity evaluations performed. - Convolving the image that comes from the tracer with the telescope's PSF to compare it to the data. The larger the PSF, the more expensive this convolution becomes. - - For linear light profiles, basis functions like the MGE of tutorial 5 and the pixelizations of chapter 4, solving + - For linear light profiles, basis functions like the MGE of tutorial 5 and the pixelizations of chapter 3, solving the linear algebra of the inversion, which computes the `intensity` values that best fit the data. More complex fitting techniques therefore cost more per evaluation: a couple of standard light profiles are cheap, @@ -87,8 +87,8 @@ them into a single optimized program. This compilation is a one-off overhead, typically taking seconds to a couple of minutes depending on model complexity. Every one of the tens of thousands of likelihood evaluations that follow then reuses the compiled program and runs dramatically faster than ordinary Python. When a search begins you will -see a log message like `JAX: Applying vmap and jit to likelihood function -- may take a few seconds.` -- that is -the compilation happening. +see a log message like `JAX jit compiling vectorized (vmap) likelihood function, could take seconds or minutes...` +-- that is the compilation happening. JAX's second superpower is that the same compiled code runs on either a CPU or a GPU. On a GPU, likelihood evaluations are not only faster individually but can be batched, with many evaluated simultaneously (the diff --git a/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py b/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py index e7b5d3f..afe17cf 100644 --- a/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py +++ b/scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py @@ -45,7 +45,9 @@ __Contents__ - **Initial Setup:** Load the same strong lensing data fitted throughout this chapter. +- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk. - **Model:** Compose the lens model fitted to the data. +- **Search + Analysis:** Create the non-linear search and analysis used to fit the first model. - **Result:** Overview of the results of the model-fit. - **Prior Passing:** Use the results of search 1 to set up the priors of search 2. - **Run Time:** Profiling the expected run time of the model-fit. @@ -175,7 +177,7 @@ name="tutorial_9_search_chaining_1", unique_tag=dataset_name, n_live=100, - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis_1 = al.AnalysisImaging(dataset=dataset) @@ -319,7 +321,7 @@ name="tutorial_9_search_chaining_2", unique_tag=dataset_name, n_live=150, - iterations_per_quick_update=25000, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=25000, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis_2 = al.AnalysisImaging(dataset=dataset) diff --git a/scripts/chapter_optional/tutorial_searches.py b/scripts/chapter_optional/tutorial_searches.py index 35d2289..4bb465d 100644 --- a/scripts/chapter_optional/tutorial_searches.py +++ b/scripts/chapter_optional/tutorial_searches.py @@ -137,7 +137,7 @@ unique_tag=dataset_name, n_live=400, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) analysis = al.AnalysisImaging(dataset=dataset) @@ -170,7 +170,7 @@ unique_tag=dataset_name, n_live=75, n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2. - iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations + iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations ) print( @@ -205,7 +205,7 @@ error estimates (perhaps this is our final lens model fit before we publish the results in a paper), these extra iterations are acceptable. -However, we often don't care about the errors. For example, in the previous tutorial when chaining searches, the only +However, we often don't care about the errors. For example, in chapter 2's search chaining tutorial, the only result we used from the fit performed in the first search was the maximum log likelihood model, omitting the errors entirely! Its seems wasteful to use a nested sampling algorithm like Nautilus to map out the entirity of parameter space when we don't use this information! @@ -308,7 +308,7 @@ __Wrap Up__ This tutorial showed how the same lens model can be fitted using different non-linear searches (e.g. `Nautilus`, -`Emcee`, `PySwarms`). Each search explores parameter space in a different way, and the best choice depends on the +`Emcee`, `Zeus`). Each search explores parameter space in a different way, and the best choice depends on the dimensionality and complexity of the model you are fitting. For the vast majority of lens models in **PyAutoLens**, the default nested sampling search `Nautilus` is recommended, From 8ff65f59117da9f10730cba3fcd7942724c7ce9f Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 13:17:18 +0000 Subject: [PATCH 19/22] build: regenerate notebooks and navigator catalogue for the restructure Notebooks rebuilt from the restructured scripts via PyAutoHands generate.py (new chapter 3/4 trees, updated chapters 1-2, simulator notebooks); llms-full.txt and workspace_index.json regenerated; the curated llms.txt learning path updated to the new chapter map. check_navigator passes (paths + banner lint). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- llms-full.txt | 119 +- llms.txt | 9 +- .../tutorial_0_visualization.ipynb | 24 +- .../tutorial_1_grids_and_galaxies.ipynb | 10 +- .../tutorial_2_ray_tracing.ipynb | 3 +- .../tutorial_3_more_ray_tracing.ipynb | 30 +- .../tutorial_4_point_sources.ipynb | 462 ++++++- .../tutorial_5_lensing_formalism.ipynb | 775 +++++++++++- .../tutorial_6_data.ipynb | 135 ++- .../tutorial_7_fitting.ipynb | 28 +- .../tutorial_8_summary.ipynb | 2 +- .../tutorial_10_prior_passing.ipynb | 49 +- .../tutorial_11_slam.ipynb | 67 +- .../tutorial_1_non_linear_search.ipynb | 47 +- .../tutorial_2_practicalities.ipynb | 42 +- .../tutorial_3_realism_and_complexity.ipynb | 16 +- .../tutorial_4_dealing_with_failure.ipynb | 27 +- .../tutorial_5_linear_profiles.ipynb | 9 +- .../tutorial_6_masking_and_positions.ipynb | 8 +- .../tutorial_7_results.ipynb | 3 +- .../tutorial_8_need_for_speed.ipynb | 135 ++- .../tutorial_9_search_chaining.ipynb | 46 +- .../tutorial_10_fit_problems.ipynb | 38 +- .../tutorial_11_brightness_adaption.ipynb | 12 +- .../tutorial_12_adaptive_regularization.ipynb | 31 +- .../tutorial_1_pixelizations.ipynb | 26 +- .../tutorial_2_mappers.ipynb | 24 +- .../tutorial_3_inversions.ipynb | 31 +- .../tutorial_4_bayesian_regularization.ipynb | 41 +- .../tutorial_5_bayesian_formalism.ipynb | 1009 ++++++++++++++++ .../tutorial_6_borders.ipynb | 91 +- .../tutorial_7_lens_modeling.ipynb | 60 +- .../tutorial_8_adaptive_pixelization.ipynb | 38 +- .../tutorial_9_model_fit.ipynb | 2 +- .../tutorial_1_extra_galaxies.ipynb | 744 ++++++++++++ .../tutorial_2_multi_galaxy.ipynb | 721 +++++++++++ .../tutorial_3_scaling_relation.ipynb | 865 ++++++++++++++ .../tutorial_4_group_scale.ipynb | 923 ++++++++++++++ .../tutorial_5_cluster_scale.ipynb | 1062 +++++++++++++++++ .../tutorial_6_weak_lensing.ipynb | 679 +++++++++++ .../chapter_optional/tutorial_searches.ipynb | 8 +- notebooks/simulator/cluster.ipynb | 785 ++++++++++++ notebooks/simulator/group.ipynb | 576 +++++++++ notebooks/simulator/interferometer.ipynb | 404 +++++++ notebooks/simulator/lens_extra_galaxy.ipynb | 514 ++++++++ notebooks/simulator/lens_x2.ipynb | 4 +- notebooks/simulator/lens_x3.ipynb | 408 +++++++ notebooks/simulator/weak_lensing.ipynb | 315 +++++ workspace_index.json | 557 +++++++-- 49 files changed, 11420 insertions(+), 594 deletions(-) create mode 100644 notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb create mode 100644 notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb create mode 100644 notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb create mode 100644 notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb create mode 100644 notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb create mode 100644 notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb create mode 100644 notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb create mode 100644 notebooks/simulator/cluster.ipynb create mode 100644 notebooks/simulator/group.ipynb create mode 100644 notebooks/simulator/interferometer.ipynb create mode 100644 notebooks/simulator/lens_extra_galaxy.ipynb create mode 100644 notebooks/simulator/lens_x3.ipynb create mode 100644 notebooks/simulator/weak_lensing.ipynb diff --git a/llms-full.txt b/llms-full.txt index 20b2f42..73ee54f 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -10,80 +10,89 @@ AUTO-GENERATED by PyAutoHands — do not edit by hand; regenerate with generate. ## chapter_1_introduction - [Tutorial 0: Visualization](scripts/chapter_1_introduction/tutorial_0_visualization.py): In this tutorial, we quickly cover visualization in **PyAutoLens** and make sure images display clearly in your Jupyter notebook and on your computer screen. - - Contents: Directories, Dataset, Subplots, Plot Customization, Overlays, Wrap Up + - Contents: Directories, Dataset, Dataset Auto-Simulation, Subplots, Plot Customization, Overlays, Wrap Up - [HowToLens: Introduction](scripts/chapter_1_introduction/tutorial_1_grids_and_galaxies.py): A strong gravitational lens is a system where two (or more) galaxies align perfectly down our line of sight from Earth such that the foreground galaxy's mass curves space-time in on itself, such that the light of a background source galaxy is deflected and magnified. This means we can see the background source galaxy multiple times, as multiple arcs or rings, because multiple paths through the foreground galaxy's mass are taken by the source's light. - - Contents: Grids, Geometry, Light Profiles, One Dimension Projection, Galaxies, Units + - Contents: Grids, Geometry, Light Profiles, One Dimension Projection, Galaxies, Units, Wrap Up, Advanced Topics, Other Unit Conversion, Over Sampling - [Tutorial 2: Ray Tracing](scripts/chapter_1_introduction/tutorial_2_ray_tracing.py): Strong gravitational lensing occurs when the mass of a foreground galaxy (or galaxies) curves space-time around it, causing light rays from a background source to appear deflected. - - Contents: Grid, Mass Profiles, Ray Tracing Grids, Ray Tracing Images, Galaxies, Tracer, Mappings -- [Tutorial 5: More Ray Tracing](scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py): We'll now reinforce the ideas that we learnt about ray-tracing in the previous tutorial and introduce the following new concepts: + - Contents: Grid, Mass Profiles, Ray Tracing Grids, Ray Tracing Images, Galaxies, Tracer, Mappings, Wrap Up +- [Tutorial 3: More Ray Tracing](scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py): We'll now reinforce the ideas that we learnt about ray-tracing in the previous tutorial and introduce the following new concepts: - Contents: Initial Setup, Concise Code, Critical Curves, Caustics, Units, More Complexity, Multi Galaxy Ray Tracing, Wrap Up -- [Tutorial 4: Point Sources](scripts/chapter_1_introduction/tutorial_4_point_sources.py): This tutorial is not wrriten yet, but will explain how point source lensing works. - - Contents: Wrap Up -- [Tutorial 5: Lensing Formalism](scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py): This tutorial is not wrriten yet, but will explain what all the different lens quantities are and give a more formal description of them. - - Contents: Wrap Up +- [Tutorial 4: Point Sources](scripts/chapter_1_introduction/tutorial_4_point_sources.py): In the previous tutorials, the background sources we lensed were galaxies: extended objects whose light spreads over many thousands of light years. When lensed, their light is warped into the arcs and Einstein rings we produced with the `Tracer`, spread across many pixels of the image. + - Contents: Initial Setup, Point Sources, Point Source Tracer, The Lens Equation, Point Solver, Multiple Images and Critical Curves, Magnifications, Time Delays, Extended Versus Point Computations, Wrap Up +- [Tutorial 5: Lensing Formalism](scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py): This tutorial is the equations lecture of **HowToLens**. + - Contents: Initial Setup, Cosmological Distances, The Lens Equation, Convergence, Deflection Angles, The Lensing Potential, Shear and Magnification, Critical Curves and Caustics, Einstein Radius, Time Delays, Wrap Up - [Tutorial 6: Data](scripts/chapter_1_introduction/tutorial_6_data.py): In the last tutorials, we use tracers to create images of strong lenses. However, those images don't accurately represent what we would observe through a telescope. - - Contents: Initial Setup, Optics Blurring, Poisson Noise, Background Sky, Simulator, Output, Wrap Up -- [Tutorial 7: Fitting](scripts/chapter_1_introduction/tutorial_7_fitting.py): In previous tutorials, we used light profiles to create simulated images of tracer and visualized how these images would appear when captured by a CCD detector on a telescope like the Hubble Space Telescope. - - Contents: Dataset & Mask, Masked Grid, Fitting, Incorrect Fit, Model Fitting, Wrap Up -- [Tutorial 9: Summary](scripts/chapter_1_introduction/tutorial_8_summary.py): In this chapter, we have learnt that: + - Contents: Initial Setup, Optics Blurring, Poisson Noise, Background Sky, Simulator, Output, Interferometer Data, Weak Lensing Data, Wrap Up +- [Tutorial 7: Fitting](scripts/chapter_1_introduction/tutorial_7_fitting.py): In previous tutorials, we used light profiles to create simulated images of a tracer and visualized how these images would appear when captured by a CCD detector on a telescope like the Hubble Space Telescope. + - Contents: Dataset, Dataset Auto-Simulation, Mask, Masked Grid, Fitting, Incorrect Fit, Model Fitting, Wrap Up +- [Tutorial 8: Summary](scripts/chapter_1_introduction/tutorial_8_summary.py): In this chapter, we have learnt that: - Contents: Start, Object Composition, Visualization, Code Design, Source Code, Wrap Up ## chapter_2_lens_modeling -- [Tutorial 1: Non-linear Search](scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py): The starting point for most scientific analysis conducted by an Astronomer is that they have observations of a strong lens using a telescope like the Hubble Space Telescope, and seek to learn about the lens galaxy, source galaxy and the Universe from these observations. With **PyAutoLen**, we seek to learn about the lenses may and ray-tracing, asking questions like how big is the lens galaxy and what does the unlensed source galaxy look like? - - Contents: Overview, Parameter Space, Search Types, Deeper Background, PyAutoFit, Initial Setup, Mask, Model, Priors, Analysis, Searches, Nested Sampling, Wrap Up +- [Tutorial 10: Prior Passing](scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py): In the previous tutorial, we used non-linear search chaining to break the model-fitting procedure down into two non-linear searches. This used an initial search to fit a simple lens model, whose results were used to tune and initialize the priors of a more complex lens model that was fitted by the second search. + - Contents: Initial Setup, Dataset Auto-Simulation, Model, Search, Result (Search 1), Prior Passing, Result, Wrap Up, Detailed Explanation Of Prior Passing, EXAMPLE +- [Tutorial 11: SLaM](scripts/chapter_2_lens_modeling/tutorial_11_slam.py): In the previous two tutorials, we learnt how search chaining breaks a lens model-fit into a sequence of simpler non-linear searches, and how prior passing carries the results of each search into the next. Together, they give us the flexibility to juggle the dimensionality, priors and settings of each search — the three drivers of run-time we met in tutorial 8 — whilst still fitting a complex and realistic lens model at the end. + - Contents: Search Chaining In The Workspace, SLaM (Source, Light and Mass), Wrap Up +- [Tutorial 1: Non-linear Search](scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py): The starting point for most scientific analysis conducted by an Astronomer is that they have observations of a strong lens using a telescope like the Hubble Space Telescope, and seek to learn about the lens galaxy, source galaxy and the Universe from these observations. With **PyAutoLens**, we seek to learn about the lens's mass and ray-tracing, asking questions like how big is the lens galaxy and what does the unlensed source galaxy look like? + - Contents: Overview, Parameter Space, Non-Linear Search, Search Types, Deeper Background, PyAutoFit, Initial Setup, Dataset Auto-Simulation, Mask, Model, Priors, Analysis, Searches, Maximum Likelihood Estimation (MLE), Markov Chain Monte Carlo (MCMC), Nested Sampling, What is The Best Search To Use?, Wrap Up - [Tutorial 2: Practicalities](scripts/chapter_2_lens_modeling/tutorial_2_practicalities.py): In the last tutorial, we introduced foundational statistical concepts essential for model-fitting, such as parameter spaces, likelihoods, priors, and non-linear searches. Understanding these statistical concepts is crucial for performing model fits effectively. - - Contents: PyAutoFit, Initial Setup, Mask, Model, Search, Search Settings, Iterations Per Update, Analysis, VRAM Use, Run Times, Result Info, Output Folder, Unique Identifier, Output Folder Contents, Result, Other Practicalities, Wrap Up + - Contents: PyAutoFit, Initial Setup, Dataset Auto-Simulation, Mask, Model, Search, Search Settings, Iterations Per Update, Analysis, VRAM Use, Run Times, Model-Fit, Result Info, Output Folder, Unique Identifier, Output Folder Contents, Result, Other Practicalities, Wrap Up - [Tutorial 3: Realism and Complexity](scripts/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.py): In the previous two tutorials, we fitted a fairly crude and unrealistic model: the lens's mass was spherical, as was the source's light. Given most lens galaxies are literally called 'elliptical galaxies' we should probably model their mass as elliptical! Furthermore, we have completely omitted the lens galaxy's light, which in real observations outshines the source's light and therefore must be included in the lens model. - - Contents: Initial Setup, Mask, Model, Run Time, Result, Global and Local Maxima, Wrap Up + - Contents: Initial Setup, Dataset Auto-Simulation, Mask, Model, Search + Analysis, Run Time, Result, Global and Local Maxima, Wrap Up - [Tutorial 4: Dealing With Failure](scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py): In the previous tutorial we intentionally made our non-linear search infer a local maxima solution and therefore return a physically incorrect lens model. In this tutorial, we will pretend that we have modeled our lens and inferred a local maxima. We introduce three approaches one can take that changes how we fit the model, all of which have the aim of ensuring we infer the global maxima: - - Contents: Initial Setup, Mask, Prior Tuning, Run Time, Result, Discussion + - Contents: Initial Setup, Dataset Auto-Simulation, Mask, Prior Tuning, Run Time, Result, Discussion, Approach 2: Reducing Complexity, Approach 3: Look Harder, Wrap Up - [Tutorial 5: Linear Profiles](scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py): In the previous tutorial we learned how to balance model complexity with our non-linear search in order to infer accurate lens model solutions and avoid failure. We saw how in order to fit a model accurately one may have to parameterize and fit a simpler model with fewer non-linear parameters, at the expense of fitting the data less accurately. - - Contents: Initial Setup, Mask, Linear Light Profiles, Run Time, Result, Intensities, Visualization, Basis, Model Fit, Source MGE, Multi Gaussian Expansion Benefits, Disadvantage of Basis Functions, Positive Only Solver, Other Basis Functions, Wrap Up + - Contents: Initial Setup, Dataset Auto-Simulation, Mask, Linear Light Profiles, Run Time, Result, Intensities, Visualization, Basis, Model Fit, Source MGE, Multi Gaussian Expansion Benefits, Disadvantage of Basis Functions, Positive Only Solver, Other Basis Functions, Wrap Up - [Tutorial 6: Masking and Positions](scripts/chapter_2_lens_modeling/tutorial_6_masking_and_positions.py): We have learnt everything we need to know about non-linear searches to model a strong lens and infer a good lens model solution. Now, lets consider masking in more detail, something we have not given much consideration previously. We'll also learn a neat trick to improve the speed and accuracy of a non-linear search. - - Contents: Initial Setup, Mask, Run Time, Search, Discussion, Positions Thresholding, Wrap Up + - Contents: Initial Setup, Dataset Auto-Simulation, Mask, Model + Analysis, Run Time, Search, Discussion, Positions Thresholding, Wrap Up - [Tutorial 7: Results](scripts/chapter_2_lens_modeling/tutorial_7_results.py): In the previous tutorials, each search returned a `Result` object, which we used to plot the maximum log likelihood fit each model-fit. In this tutorial, we'll take a look at the result object in a little more detail. - - Contents: Initial Setup, Tracer & Fit, Samples, Workspace, Database, Wrap Up + - Contents: Initial Setup, Dataset Auto-Simulation, Tracer & Fit, Samples, Workspace, Database, Wrap Up - [Tutorial 8: Need For Speed](scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py): In this chapter, we have learnt how to model strong lenses and how to balance complexity and realism to ensure that we infer a good lens model. - - Contents: Algorithmic Optimization, Data Quantity, Wrap Up + - Contents: Searching Non-linear Parameter Space, Cost Per Evaluation, JAX, Run Time Estimation, Data Quantity, Wrap Up +- [Tutorial 9: Search Chaining](scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py): Throughout this chapter, we have fitted the data using just one non-linear search. The previous tutorial discussed the run-time cost of doing this: with a single search, the dimensionality of the model, the priors on its parameters and the search settings must all be juggled at once, leaving us little flexibility to trade them off against one another. + - Contents: Initial Setup, Dataset Auto-Simulation, Model, Search + Analysis, Result, Prior Passing, Run Time, Model Fit, Wrap Up -## chapter_3_search_chaining +## chapter_3_pixelizations -- [Tutorial 1: Search Chaining](scripts/chapter_3_search_chaining/tutorial_1_search_chaining.py): In chapter 2, we learnt how to perform lens modeling using a non-linear search. In all of the tutorials, we fitted the data using just one non-linear search. In this chapter, we introduce a technique called 'non-linear search chaining', fits a lens model using a sequence of non-linear searches. The initial searches fit simpler lens models whose parameter spaces can be more accurately and efficiently sampled. The results of this search are then passed to later searches which fit lens models of gradually increasing complexity. - - Contents: Initial Setup, Model, Result, Prior Passing, Run Time, Model Fit, Wrap Up -- [Tutorial 2: Prior Passing](scripts/chapter_3_search_chaining/tutorial_2_prior_passing.py): In the previous tutorial, we used non-linear search chaining to break the model-fitting procedure down into two non-linear searches. This used an initial search to fit a simple lens model, whose results were used to tune and initialize the priors of a more complex lens model that was fitted by the second search. - - Contents: Initial Setup, Model, Search, Prior Passing, Result, Wrap Up, Detailed Explanation Of Prior Passing, EXAMPLE -- [Tutorial 3: Lens and Source](scripts/chapter_3_search_chaining/tutorial_3_lens_and_source.py): In this tutorial, we demonstrate search chaining using three searches to fit strong lens `Imaging` which includes the lens galaxy's light. - - Contents: Dated Tutorial, Initial Setup, Paths, Notes, Wrap Up -- [Tutorial 4: Two Lens galaxies](scripts/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.py): Up to now, all the images we've fitted had one lens galaxy. However, we saw in chapter 1 that our lens plane can consist of multiple galaxies which each contribute to the strong lensing. Multi-galaxy systems are challenging to model, because they add an extra 5-10 parameters to the non-linear search and, more problematically, the degeneracies between the parameters of the mass profiles of the two galaxies can be severe. - - Contents: Initial Setup, Mask, Paths, Search Chaining Approach, Wrap Up -- [Tutorial 5: Complex Source](scripts/chapter_3_search_chaining/tutorial_5_complex_source.py): Up to now, we've not paid much attention to the source galaxy's morphology. We've assumed its a single-component exponential profile, which is a fairly crude assumption. A quick look at any image of a real galaxy reveals a wealth of different structures that could be present: bulges, disks, bars, star-forming knots and so on. Furthermore, there could be more than one source-galaxy! - - Contents: Initial Setup, Paths, Search Chaining Approach, Run Times, Wrap Up -- [Tutorial 6: SLaM](scripts/chapter_3_search_chaining/tutorial_6_slam.py): You are now familiar with pipelines, in particular how we use them to break-down the lens modeling procedure to provide more efficient and reliable model-fits. In the previous tutorials, you learnt how to write your own pipelines, which can fit whatever lens model is of particular interest to your scientific study. - -## chapter_4_pixelizations - -- [Tutorial 10: Brightness Adaption](scripts/chapter_4_pixelizations/tutorial_10_brightness_adaption.py): In the previous tutorial we motivated our need to adapt the pixelization to the source's morphology, such that source pixels congregates in the source's brightest regions regardless of where the source is located in the source-plane. +- [Tutorial 10: Fit Problems](scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py): To begin, make sure you have read tutorials 4 and 5 carefully, as a clear understanding of how the Bayesian evidence works is key to understanding the adaption tutorials that close this chapter! + - Contents: Initial Setup, Mask, Simulator, Fitting, Fit Problems, Discussion, Wrap Up +- [Tutorial 11: Brightness Adaption](scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py): In the previous tutorial we motivated our need to adapt the pixelization to the source's morphology, such that source pixels congregates in the source's brightest regions regardless of where the source is located in the source-plane. - Contents: Initial Setup, Adapt Image, Adaption, Hilbert, Weight Map, Wrap Up -- [Tutorial 11: Adaptive Regularization](scripts/chapter_4_pixelizations/tutorial_11_adaptive_regularization.py): In tutorial 7, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source demand different levels of regularization, motivating a regularization scheme which adapts to the reconstructed source's surface brightness. +- [Tutorial 12: Adaptive Regularization](scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py): In tutorial 10, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source demand different levels of regularization, motivating a regularization scheme which adapts to the reconstructed source's surface brightness. - Contents: Initial Setup, Convenience Function, Adaptive Regularization, Wrap Up -- [Tutorial 1: pixelizations](scripts/chapter_4_pixelizations/tutorial_1_pixelizations.py): In the previous chapters, we used light profiles to model the light of a strong lens's source galaxy, where the light profile was an analytic description of how the luminosity varies as a function of radius. In this chapter, we are instead going to reconstruct the source's light on a pixel-grid, and in this tutorial we will learn how to create a source-plane pixelization. +- [Tutorial 1: Pixelizations](scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py): In the previous chapters, we used light profiles to model the light of a strong lens's source galaxy, where the light profile was an analytic description of how the luminosity varies as a function of radius. In this chapter, we are instead going to reconstruct the source's light on a pixel-grid, and in this tutorial we will learn how to create a source-plane pixelization. - Contents: Initial Setup, Mesh, Wrap Up -- [Tutorial 2: Mappers](scripts/chapter_4_pixelizations/tutorial_2_mappers.py): In the previous tutorial, we used a pixelization to create made a `Mapper`. However, it was not clear what a `Mapper` does, why it was called a mapper and whether it was mapping anything at all! +- [Tutorial 2: Mappers](scripts/chapter_3_pixelizations/tutorial_2_mappers.py): In the previous tutorial, we used a pixelization to create a `Mapper`. However, it was not clear what a `Mapper` does, why it was called a mapper and whether it was mapping anything at all! - Contents: Initial Setup, Mappers, Mask, Wrap Up -- [Tutorial 3: Inversions](scripts/chapter_4_pixelizations/tutorial_3_inversions.py): In the previous two tutorials, we introduced: +- [Tutorial 3: Inversions](scripts/chapter_3_pixelizations/tutorial_3_inversions.py): In the previous two tutorials, we introduced: - Contents: Initial Setup, Pixelization, Positive Only Solver, Wrap Up, Detailed Explanation -- [Tutorial 4: Bayesian Regularization](scripts/chapter_4_pixelizations/tutorial_4_bayesian_regularization.py): So far, we have: +- [Tutorial 4: Bayesian Regularization](scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py): So far, we have: - Contents: Initial Setup, Convenience Function, Pixelization, Regularization, Bayesian Evidence, Detailed Description -- [Tutorial 5: Borders](scripts/chapter_4_pixelizations/tutorial_5_borders.py): In the previous tutorials, the source-plane pixel grid perfectly mapped over the traced image-pixel $(y,x)$ coordinates in the source plane. If these pixels mapped to a larger area in the source plane, its pixel-grid would automatically increase its size so as to cover every source-plane coordinate. +- [Tutorial 5: Bayesian Formalism](scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py): In tutorials 1 to 4, we built an intuition for how pixelized source reconstruction works: pixelizations place a pixel-grid in the source-plane, mappers pair source-pixels with image-pixels, inversions solve for the source-pixel fluxes that best fit the data, and regularization smooths the solution within a Bayesian framework. + - Contents: Initial Setup, Mesh Shape, Ray Tracing, Border Relocation, Source Pixel Centres, Interpolation, Mapper, Mapping Matrix, Blurred Mapping Matrix, Data Vector, Curvature Matrix, Unregularized Solve, Regularization Matrix, Source Reconstruction, Image Reconstruction, Likelihood Function, Chi Squared, Regularization Term, Complexity Terms, Noise Normalization Term, Log Evidence, Fit, Wrap Up +- [Tutorial 6: Borders](scripts/chapter_3_pixelizations/tutorial_6_borders.py): In the previous tutorials, the source-plane pixel grid perfectly mapped over the traced image-pixel $(y,x)$ coordinates in the source plane. If these pixels mapped to a larger area in the source plane, its pixel-grid would automatically increase its size so as to cover every source-plane coordinate. - Contents: Initial Setup, Borders, Wrap Up -- [Tutorial 6: Lens Modeling](scripts/chapter_4_pixelizations/tutorial_6_lens_modeling.py): When modeling complex source's with parametric profiles, we quickly entered a regime where our non-linear search was faced with a parameter space of dimensionality N=20+ parameters. This made the model-fitting inefficient and likely to infer a local maxima. +- [Tutorial 7: Lens Modeling](scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py): When modeling complex sources with parametric profiles, we quickly entered a regime where our non-linear search was faced with a parameter space of dimensionality N=20+ parameters. This made the model-fitting inefficient and likely to infer a local maxima. - Contents: Initial Setup, Unphysical Solutions, Brief Description, Light Profiles, Wrap Up -- [Tutorial 7: Adaptive Pixelization](scripts/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.py): In this tutorial we will introduce a new `Pixelization` object, which uses an `Overlay` image-mesh and a `Delaunay` mesh. - - Contents: Initial Setup, Advantages and Disadvatanges, Image Mesh, Regularization, Wrap Up -- [Tutorial 8: Model-Fit](scripts/chapter_4_pixelizations/tutorial_8_model_fit.py): You should now perform lens modeling using a pixelization, which is described fully in the example: -- [Tutorial 9: Fit Problems](scripts/chapter_4_pixelizations/tutorial_9_fit_problems.py): To begin, make sure you have read the `introduction` file carefully, as a clear understanding of how the Bayesian evidence works is key to understanding this chapter! - - Contents: Initial Setup, Mask, Simulator, Fitting, Fit Problems, Discussion, Wrap Up +- [Tutorial 8: Adaptive Pixelization](scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py): In this tutorial we will introduce a new `Pixelization` object, which uses an `Overlay` image-mesh and a `Delaunay` mesh. + - Contents: Initial Setup, Advantages and Disadvantages, Image Mesh, Regularization, Wrap Up +- [Tutorial 9: Model-Fit](scripts/chapter_3_pixelizations/tutorial_9_model_fit.py): You should now perform lens modeling using a pixelization, which is described fully in the example: + +## chapter_4_scaling_up_lensing + +- [Tutorial 1: Extra Galaxies](scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py): Welcome to chapter 4 of **HowToLens**, where we scale up lens modeling beyond a single lens galaxy. + - Contents: Initial Setup, Light Versus Mass, Mask, Approach 1 Noise Scaling, Noise Scaling Fit, Approach 2 Extra Galaxies Model, Extra Galaxy Centres, Extra Galaxies Fit, Which Approach When, Wrap Up +- [Tutorial 2: Multi-Galaxy Lenses](scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py): In the previous tutorial, we learned how to deal with extra galaxies near a strong lens — nuisance objects whose light contaminates the data but which play no meaningful role in the lensing itself. We removed their emission from the analysis, or gave them a heavily restricted model, and the single dominant lens galaxy remained the star of the show. + - Contents: Initial Setup, Mask, Over Sampling, Model, Fixing the Mass Centres, Model Fit, Result, Mass Degeneracies, No Shared Halo, Three Lens Galaxies, Wrap Up +- [Tutorial 3: Scaling Relations](scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py): The previous tutorial ended on a warning: every deflector we add to a lens model brings its own free parameters. Two galaxies were manageable, but each one cost us a mass profile's worth of dimensions, and the arithmetic only gets worse. A group-scale lens may have ten member galaxies, a cluster hundreds. If every member keeps its own free mass, the parameter space explodes — a 100-galaxy cluster with 5 free mass parameters per galaxy is a 500-dimensional model, which no non-linear search can sample and no dataset can constrain anyway. + - Contents: Mass Follows Light, Initial Setup, Mask, Measured Luminosities, The Anchor, Over Sampling, Light Via MGE, Scaling Relation, Model, Parameter Counts, Scaling To Many Galaxies, Model Fit, Results, Limitations, Lens Environments, Wrap Up +- [Tutorial 4: Group Scale](scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py): In the previous tutorials we took our first steps beyond the single lens galaxy: we included extra galaxies near the lens in the model, we modeled systems where two or more galaxies of comparable mass share the lensing, and we introduced scaling relations, which tie the mass of a galaxy to its light so that adding more galaxies to a model does not mean adding more free parameters. + - Contents: Initial Setup, Mask, Galaxy Centres, The dPIE Profile, Fitting a Group, A Group Halo?, Model Fit, Scaling Relation Members, The Group Scale Sweet Spot, Wrap Up +- [Tutorial 5: Cluster Scale](scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py): Throughout this chapter we have been climbing a ladder of scale: from a single lens galaxy with an extra galaxy nearby, to multi-galaxy lenses, to galaxy groups whose members share a common dark matter halo. + - Contents: Multi-Plane Ray Tracing, Dataset, Point Source Modeling, Point Datasets, The CSV Interface, Point Solver, Model, Analysis + Factor Graph, Search, Model Fit, Results, Customization, Wrap Up +- [Tutorial 6: Weak Lensing](scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py): Every tutorial in this series so far — indeed, every fit performed in all four chapters of **HowToLens** — has been a *strong* lensing analysis. Strong lensing occurs when a background galaxy lies so close (in projection) to a foreground mass that its light is bent into multiple images, arcs or a complete Einstein ring. These dramatic features are what we simulated, fitted and modeled, from the single galaxy-scale lenses of chapters 1 and 2 up to the group-scale and cluster-scale systems earlier in this chapter. + - Contents: Shear Catalogues, Mass Scales, Ray Tracing, Source Galaxy Positions, Simulate, Visualize, Mass Map, Fitting, Model Fit, Result, Joint Strong and Weak Lensing, Wrap Up ## chapter_optional @@ -92,13 +101,25 @@ AUTO-GENERATED by PyAutoHands — do not edit by hand; regenerate with generate. ## simulator +- [Simulator: Cluster](scripts/simulator/cluster.py): This script simulates a strong lens on the 'cluster' scale: 2 main lens galaxies (a brightest cluster galaxy and a satellite), 10 lower-mass cluster member galaxies on a luminosity-mass scaling relation, a cluster-scale dark matter halo not tied to any individual galaxy, and 2 multiply-imaged background source galaxies at *different* redshifts (z = 1.0 and z = 2.0) — a genuine multi-plane lens. + - Contents: Dataset Paths, Redshifts, Galaxy Centres, Grids, Main Lens Galaxies, Scaling Member Galaxies, Host Dark Matter Halo, Source Galaxies, Ray Tracing, Point Solver, Point Datasets, Combined CSV, Scaling Galaxies CSV, Model CSVs, Tracer json, Imaging, Visualize +- [Simulator: Group Scale Lens](scripts/simulator/group.py): This script simulates `Imaging` of a 'group-scale' strong lens, which is used in chapter 4 of the **HowToLens** lectures to illustrate lens modeling at the group scale. + - Contents: Dataset Paths, Grid, Galaxy Centres, Over Sampling, PSF / Simulator, Main Lens Galaxy, Member Galaxies, Source Galaxy, Ray Tracing, Output, Visualize, Tracer json, Centre JSON Files, Positions +- [Simulator: Interferometer](scripts/simulator/interferometer.py): This script simulates `Interferometer` data of a 'galaxy-scale' strong lens, as would be observed by a radio or sub-mm interferometer like ALMA or the JVLA. + - Contents: Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Tracer json +- [Simulator: Lens With Extra Galaxy](scripts/simulator/lens_extra_galaxy.py): This script simulates `Imaging` of a 'galaxy-scale' strong lens which is identical to the `lens_sersic` dataset simulated for chapter 2 (lens light + mass + lensed source), but with one extra galaxy located a few arc-seconds from the lens galaxy. + - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Extra Galaxy, Output, Mask Extra Galaxy, Visualize, Tracer json, Extra Galaxy Centre - [Simulator: Simple Sersic Lens](scripts/simulator/lens_sersic.py): This script simulates `Imaging` of a 'galaxy-scale' which is identical to the `simple` simulated in the `start_here.py` script, but where the lens galaxy's light is an `Sersic` profile. - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Tracer json - [Simulator: Lens x2](scripts/simulator/lens_x2.py): This script simulates `Imaging` of a 'galaxy-scale' lens where there are two lens galaxies, each with their own light and mass profiles. - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Tracer json +- [Simulator: Lens x3](scripts/simulator/lens_x3.py): This script simulates `Imaging` of a 'galaxy-scale' lens where there are three lens galaxies, each with their own light and mass profiles, which all contribute significantly to the lensing of a single background source. + - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Tracer json - [Simulator: No Lens Light](scripts/simulator/no_lens_light.py): This script simulates `Imaging` of a 'galaxy-scale' which is identical to the `simple` simulated in the `start_here.py` script, but where the lens galaxy's light is omitted. - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Mask Extra Galaxies, Tracer json - [Simulator: SIS](scripts/simulator/no_lens_light__mass_sis.py): This script simulates `Imaging` of a 'galaxy-scale' which is identical to the `simple` simulated in the `start_here.py` script, but where the lens galaxy's light is omitted and the lens's mass distribution is a Singular Isothermal Sphere. - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Tracer json - [Simulator: Source Complex](scripts/simulator/source_complex.py): This script simulates `Imaging` of a 'galaxy-scale' strong lens where the source galaxy's light is more complex than other examples, being composed of 4 Sersics. - Contents: Model, Dataset Paths, Simulate, Ray Tracing, Output, Visualize, Tracer json +- [Simulator: Weak Lensing](scripts/simulator/weak_lensing.py): This script simulates a weak gravitational lensing shear catalogue. Unlike the imaging simulators (which produce a 2D image of the lensed source) the weak-lensing simulator produces a *catalogue* of (gamma_2, gamma_1) shear measurements at the (y, x) positions of a population of background source galaxies. + - Contents: Dataset Paths, Ray Tracing, Source Positions, Simulator, Output, Visualize diff --git a/llms.txt b/llms.txt index 465321d..5b97710 100644 --- a/llms.txt +++ b/llms.txt @@ -26,8 +26,8 @@ analysis?" below). - **Chapter 1 — Introduction** → [scripts/chapter_1_introduction/](scripts/chapter_1_introduction/): Lensing from first principles: grids & galaxies, ray tracing, simulating data, and fitting data. The conceptual foundation everything else builds on. - **Chapter 2 — Lens Modeling** → [scripts/chapter_2_lens_modeling/](scripts/chapter_2_lens_modeling/): How to fit a lens model to data with a non-linear search — parameter spaces, priors, dealing with failure, linear light profiles, masking, and reading results. -- **Chapter 3 — Search Chaining** → [scripts/chapter_3_search_chaining/](scripts/chapter_3_search_chaining/): Breaking a hard fit into a sequence of searches (prior passing), multi-galaxy lenses, complex sources, and an introduction to the SLaM pipelines. -- **Chapter 4 — Pixelizations** → [scripts/chapter_4_pixelizations/](scripts/chapter_4_pixelizations/): Reconstructing the source on a pixel-grid instead of with light profiles — mappers, inversions, Bayesian regularization, borders, and adaptive meshes. +- **Chapter 3 — Pixelizations** → [scripts/chapter_3_pixelizations/](scripts/chapter_3_pixelizations/): Reconstructing the source on a pixel-grid instead of with light profiles — mappers, inversions, Bayesian regularization, the Bayesian formalism, borders, and adaptive meshes. +- **Chapter 4 — Scaling Up Lensing** → [scripts/chapter_4_scaling_up_lensing/](scripts/chapter_4_scaling_up_lensing/): Beyond a single lens galaxy — extra galaxies, multi-galaxy lenses, scaling relations, group and cluster scales, and weak lensing. ## I want to understand… @@ -37,8 +37,9 @@ analysis?" below). - **How does a non-linear search find a model?** → [scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py](scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py): Parameter space, priors, nested sampling with Nautilus. - **My fit found a wrong (local-maxima) solution — what do I do?** → [scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py](scripts/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.py): Prior tuning, simplifying the model, and other escapes from local maxima. - **What are linear light profiles / MGE?** → [scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py](scripts/chapter_2_lens_modeling/tutorial_5_linear_profiles.py): Solving intensities linearly; the Multi-Gaussian Expansion basis. -- **How do I chain searches / what is SLaM?** → [scripts/chapter_3_search_chaining/tutorial_1_search_chaining.py](scripts/chapter_3_search_chaining/tutorial_1_search_chaining.py) then [scripts/chapter_3_search_chaining/tutorial_6_slam.py](scripts/chapter_3_search_chaining/tutorial_6_slam.py). -- **How do I reconstruct a complex source on a pixel grid?** → [scripts/chapter_4_pixelizations/tutorial_1_pixelizations.py](scripts/chapter_4_pixelizations/tutorial_1_pixelizations.py) through [tutorial_4_bayesian_regularization.py](scripts/chapter_4_pixelizations/tutorial_4_bayesian_regularization.py). +- **How do I chain searches / what is SLaM?** → [scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py](scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py) then [scripts/chapter_2_lens_modeling/tutorial_11_slam.py](scripts/chapter_2_lens_modeling/tutorial_11_slam.py). +- **How do I reconstruct a complex source on a pixel grid?** → [scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py](scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py) through [tutorial_4_bayesian_regularization.py](scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py). +- **How do I model lenses with many galaxies, groups, clusters or weak lensing?** → [scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py](scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py) through [tutorial_6_weak_lensing.py](scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py). ## Ready for real analysis? diff --git a/notebooks/chapter_1_introduction/tutorial_0_visualization.ipynb b/notebooks/chapter_1_introduction/tutorial_0_visualization.ipynb index a8a9203..99c001e 100644 --- a/notebooks/chapter_1_introduction/tutorial_0_visualization.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_0_visualization.ipynb @@ -12,8 +12,9 @@ "\n", "__Contents__\n", "\n", - "- **Directories:** **PyAutoLens assumes** the working directory is `autolens_workspace` on your hard-disk.\n", + "- **Directories:** **HowToLens** assumes the working directory is the `HowToLens` repository root on your hard-disk.\n", "- **Dataset:** Load and plot the strong lens dataset.\n", + "- **Dataset Auto-Simulation:** Create the dataset via its simulator script if it is not on your hard-disk.\n", "- **Subplots:** In addition to plotting individual figures, **PyAutoLens** can plot `subplots` which show multiple.\n", "- **Plot Customization:** Does the figure display correctly on your computer screen?\n", "- **Overlays:** Overlays such as critical curves and image positions are added using the `lines=` and `positions=`.\n", @@ -74,16 +75,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If the printed working directory does not match the workspace path on your computer, you can manually set it\n", - "as follows (the example below shows the path I would use on my laptop. The code is commented out so you do not\n", - "use this path in this tutorial!" + "__Directories__\n", + "\n", + "**HowToLens** assumes the working directory is the `HowToLens` repository root on your hard-disk, so that relative\n", + "paths to `dataset/` and `output/` resolve correctly.\n", + "\n", + "If your working directory does not match this path on your computer, you can manually set it as follows (the\n", + "example below shows the path I would use on my laptop. The code is commented out so you do not use this path in\n", + "this tutorial!" ] }, { "cell_type": "code", "metadata": {}, "source": [ - "# workspace_path = \"/Users/Jammy/Code/PyAuto/autolens_workspace\"\n", + "# workspace_path = \"/Users/Jammy/Code/PyAuto/HowToLens\"\n", "# #%cd $workspace_path\n", "# print(f\"Working Directory has been set to `{workspace_path}`\")" ], @@ -97,10 +103,10 @@ "__Dataset__\n", "\n", "The `dataset_path` specifies where the dataset is located, which is the\n", - "directory `autolens_workspace/dataset/imaging/simple__no_lens_light`.\n", + "directory `dataset/imaging/simple__no_lens_light` of the HowToLens repository.\n", "\n", - "There are many example simulated images of strong lenses in this directory that will be used throughout the\n", - "**HowToLens** lectures." + "The simulated images of strong lenses used throughout the **HowToLens** lectures are written to the `dataset`\n", + "directory at runtime by the simulator scripts in `scripts/simulator/`." ] }, { @@ -211,7 +217,7 @@ "\n", "If not, the default matplotlib settings can be customized via the config files in:\n", "\n", - " autolens_workspace/config/visualize/\n", + " config/visualize/\n", "\n", "Key config entries:\n", "\n", diff --git a/notebooks/chapter_1_introduction/tutorial_1_grids_and_galaxies.ipynb b/notebooks/chapter_1_introduction/tutorial_1_grids_and_galaxies.ipynb index ba30f7d..4e78a25 100644 --- a/notebooks/chapter_1_introduction/tutorial_1_grids_and_galaxies.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_1_grids_and_galaxies.ipynb @@ -61,7 +61,11 @@ "- **Light Profiles:** Galaxies are collections of stars, gas, dust, and other astronomical objects that emit light.\n", "- **One Dimension Projection:** We often want to calculative 1D quantities of a light profile, for example to plot how its light.\n", "- **Galaxies:** Galaxies are collections of light profiles that represent a galaxy's luminous emission.\n", - "- **Units:** By assuming a redshift for a galaxy we can convert its quantities from arcseconds to kiloparsecs." + "- **Units:** By assuming a redshift for a galaxy we can convert its quantities from arcseconds to kiloparsecs.\n", + "- **Wrap Up:** Summary of the script and next steps.\n", + "- **Advanced Topics:** Optional reference material for expert users, not needed on a first read.\n", + "- **Other Unit Conversion:** Other unit conversions a galaxy's redshift enables (e.g. AB magnitudes).\n", + "- **Over Sampling:** The adaptive over-sampling scheme used to evaluate light profiles accurately." ] }, { @@ -151,7 +155,7 @@ " shape_native=(\n", " 101,\n", " 101,\n", - " ), # The dimensions of the grid, which here is 100 x 100 pixels.\n", + " ), # The dimensions of the grid, which here is 101 x 101 pixels.\n", " pixel_scales=0.1, # The conversion factor between pixel units and arc-seconds.\n", ")" ], @@ -263,7 +267,7 @@ "cell_type": "code", "metadata": {}, "source": [ - "centre = (0.3, 0.5) # Shifting the grid to be centered at y=1.0\", x=2.0\".\n", + "centre = (0.3, 0.5) # Shifting the grid to be centered at y=0.3\", x=0.5\".\n", "\n", "grid_shifted = grid\n", "grid_shifted[:, 0] = grid_shifted[:, 0] - centre[0] # Shift in y-direction.\n", diff --git a/notebooks/chapter_1_introduction/tutorial_2_ray_tracing.ipynb b/notebooks/chapter_1_introduction/tutorial_2_ray_tracing.ipynb index 101f594..8a1bacf 100644 --- a/notebooks/chapter_1_introduction/tutorial_2_ray_tracing.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_2_ray_tracing.ipynb @@ -69,7 +69,8 @@ "- **Ray Tracing Images:** Evaluating a source's light on the ray-traced grid produces its lensed image.\n", "- **Galaxies:** A `Galaxy` can contain both light and mass profiles, forming realistic lens and source galaxies.\n", "- **Tracer:** The `Tracer` object automates ray-tracing for a system of galaxies at different redshifts.\n", - "- **Mappings:** Every image-plane coordinate maps to a source-plane coordinate via the lens equation." + "- **Mappings:** Every image-plane coordinate maps to a source-plane coordinate via the lens equation.\n", + "- **Wrap Up:** Summary of the script and next steps." ] }, { diff --git a/notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb b/notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb index 5477a41..c8384ab 100644 --- a/notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 5: More Ray Tracing\n", + "Tutorial 3: More Ray Tracing\n", "============================\n", "\n", "We'll now reinforce the ideas that we learnt about ray-tracing in the previous tutorial and introduce the following\n", @@ -32,7 +32,7 @@ "\n", "- **Initial Setup:** To begin, lets setup the grid we'll ray-trace using.\n", "- **Concise Code:** Lets set up the tracer used in the previous tutorial.\n", - "- **Critical Curves:** To end, we can finally explain what the black lines that have appeared on many of the plots.\n", + "- **Critical Curves:** We can finally explain what the black lines that have appeared on many of the plots.\n", "- **Caustics:** In the previous tutorial, we plotted the critical curves of the mass profile on the image-plane.\n", "- **Units:** Lets plot the lensing quantities again.\n", "- **More Complexity:** We now make a lens with some attributes we didn`t in the last tutorial.\n", @@ -175,8 +175,8 @@ "source": [ "__Critical Curves__\n", "\n", - "To end, we can finally explain what the black lines that have appeared on many of the plots throughout this chapter \n", - "actually are. \n", + "We can finally explain what the black lines that have appeared on many of the plots throughout this chapter\n", + "actually are.\n", "\n", "These lines are called the 'critical curves', and they define line of infinite magnification due to a mass profile. \n", "They therefore mark where in the image-plane a mass profile perfectly `focuses` light rays such that if a source is \n", @@ -190,7 +190,7 @@ "when its inner mass slope is less steep than a steep power-law). To make it appear below, we therefore change\n", "the mass profile of our lens galaxy to a `PowerLawSph` with a slope of 1.8.\n", "\n", - "In the next tutorial, we'll introduce 'caustics', which are where the critical curves map too in the source-plane." + "In the next section, we'll introduce 'caustics', which are where the critical curves map to in the source-plane." ] }, { @@ -217,12 +217,12 @@ "source": [ "__Caustics__\n", "\n", - "In the previous tutorial, we plotted the critical curves of the mass profile on the image-plane. We will now plot the\n", + "In the previous section, we plotted the critical curves of the mass profile on the image-plane. We will now plot the\n", "'caustics', which correspond to each critical curve ray-traced to the source-plane. This is computed by using the \n", "lens galaxy mass profile's to calculate the deflection angles at the critical curves and ray-trace them to the \n", "source-plane.\n", "\n", - "As discussed in the previous tutorial, critical curves mark regions of infinite magnification. Thus, if a source\n", + "As discussed in the previous section, critical curves mark regions of infinite magnification. Thus, if a source\n", "appears near a caustic in the source plane it will appear significantly brighter than its true luminosity. \n", "\n", "We again have to use a mass profile with a slope below 2.0 to ensure a radial critical curve and therefore radial\n", @@ -289,9 +289,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Caustics also mark the regions in the source-plane where the multiplicity of the strong lens changes. That is,\n", - "if a source crosses a caustic, it goes from 2 images to 1 image. Try and show this yourself by changing the (y,x) \n", - "centre of the source-plane galaxy's light profile!" + "Caustics also mark the regions in the source-plane where the multiplicity of the strong lens changes. Each time\n", + "a source crosses a caustic, the number of images it produces changes by two. Try and show this yourself by changing\n", + "the (y,x) centre of the source-plane galaxy's light profile!" ] }, { @@ -342,7 +342,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If you're too familiar with Cosmology, it will be unclear how exactly we converted the distance units from \n", + "If you're not too familiar with Cosmology, it will be unclear how exactly we converted the distance units from\n", "arcseconds to kiloparsecs. You'll need to read up on your Cosmology lecture to understand this properly.\n", "\n", "You can create a `Cosmology` object, which provides many methods for calculation different cosmological quantities, \n", @@ -518,9 +518,9 @@ "\n", "Now lets pass our 4 galaxies to a `Tracer`, which means the following will occur:\n", "\n", - " - Using the galaxy redshift`s, and image-plane and source-plane will be created each with two galaxies galaxies.\n", + " - Using the galaxy redshifts, an image-plane and source-plane will be created, each with two galaxies.\n", "\n", - "We've also pass the tracer below a Planck15 cosmology, where the cosomology of the Universe describes exactly how \n", + "We also pass the tracer below a Planck15 cosmology, where the cosmology of the Universe describes exactly how\n", "ray-tracing is performed." ] }, @@ -554,7 +554,7 @@ " 5) The image of the source galaxies is computed by summing both of their images and ray-tracing their light back to \n", " the image-plane.\n", " \n", - "This process is pretty much the same as we have single in previous tutorials when there is one galaxy per plane. We\n", + "This process is pretty much the same as we have seen in previous tutorials when there is one galaxy per plane. We\n", "are simply summing the images and deflection angles of the galaxies before using them to perform ray-tracing." ] }, @@ -606,7 +606,7 @@ "source": [ "__Wrap Up__\n", "\n", - "Tutorial 6 completed! Try the following:\n", + "Tutorial 3 completed! Try the following:\n", "\n", " 1) If you change the lens and source galaxy redshifts, does the tracer's image change?\n", "\n", diff --git a/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb b/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb index 754a4b0..55ccea0 100644 --- a/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb @@ -7,15 +7,65 @@ "Tutorial 4: Point Sources\n", "=========================\n", "\n", - "This tutorial is not wrriten yet, but will explain how point source lensing works.\n", + "In the previous tutorials, the background sources we lensed were galaxies: extended objects whose light spreads over\n", + "many thousands of light years. When lensed, their light is warped into the arcs and Einstein rings we produced with\n", + "the `Tracer`, spread across many pixels of the image.\n", "\n", - "This tutorial is not necesary for using PyAutoLens or doing strong lens analysis, so don't worry that it is not\n", - "written yet!\n", + "However, not every source is a galaxy. Some of the most scientifically valuable strong lenses have a background\n", + "source that is physically tiny: a **quasar** (the bright accretion disk around a supermassive black hole, light-days\n", + "across) or a **supernova** (an exploding star, even smaller). These are called **point sources**.\n", "\n", - "Tutorial 8 summary is written and you should check that out instead!\n", + "When a point source is strongly lensed, we do not see arcs. Instead, we see the same source appear multiple times,\n", + "as two or four (or more) distinct, unresolved points of light in the image. Modeling these systems is fundamentally\n", + "different from modeling extended sources \u2014 different enough that it deserves its own tutorial before we go any\n", + "further.\n", + "\n", + "In this tutorial, we will see why. The short version: for an extended source, we ray-trace light *forwards* from the\n", + "image-plane to the source-plane, which is computationally simple. For a point source, we must go *backwards* \u2014 we\n", + "know where the source is, and we must find every image-plane position its light appears at. That means solving the\n", + "lens equation, an inverse problem with no analytic solution, which requires a dedicated numerical tool called the\n", + "`PointSolver`.\n", + "\n", + "Only the lens equation from tutorial 2 is needed to follow this tutorial. The full lensing formalism \u2014 convergence,\n", + "potentials, and how deflection angles arise from a mass distribution \u2014 is covered in the next tutorial.\n", + "\n", + "Here is an overview of what we'll cover:\n", + "\n", + "- **Initial Setup**: Create a strong lens with a compact extended source, showing how a small source produces\n", + " distinct multiple images rather than arcs.\n", + "\n", + "- **Point Sources**: What a point source is physically, and why quasars and supernovae appear as multiple\n", + " unresolved images.\n", + "\n", + "- **Point Source Tracer**: Represent a point source in PyAutoLens using the `Point` profile and build a `Tracer`.\n", + "\n", + "- **The Lens Equation**: Why finding a point source's multiple images means solving the lens equation \u2014 an inverse\n", + " problem with no analytic solution.\n", + "\n", + "- **Point Solver**: The `PointSolver`, which solves the lens equation numerically by ray-tracing triangles.\n", + "\n", + "- **Multiple Images and Critical Curves**: Plot the solved image positions over the lensed image and the tracer's\n", + " critical curves.\n", + "\n", + "- **Magnifications**: Compute the magnification at each multiple image, and why observed fluxes are often\n", + " unreliable for modeling.\n", + "\n", + "- **Time Delays**: The arrival-time differences between multiple images, and why they matter for cosmology.\n", + "\n", + "- **Extended Versus Point Computations**: A recap of why the two regimes require fundamentally different\n", + " calculations and fitting strategies.\n", "\n", "__Contents__\n", "\n", + "- **Initial Setup:** Create a strong lens with a compact extended source, producing distinct multiple images.\n", + "- **Point Sources:** What a point source is physically and why it appears as multiple unresolved images.\n", + "- **Point Source Tracer:** Represent a point source with the `Point` profile and build a `Tracer`.\n", + "- **The Lens Equation:** Finding multiple images means solving the lens equation, an inverse problem.\n", + "- **Point Solver:** The `PointSolver` solves the lens equation numerically via triangle ray-tracing.\n", + "- **Multiple Images and Critical Curves:** Plot the solved positions over the image and critical curves.\n", + "- **Magnifications:** The magnification of each multiple image, and why fluxes are often unreliable.\n", + "- **Time Delays:** The relative arrival times of the multiple images and their use in cosmology.\n", + "- **Extended Versus Point Computations:** Why the two regimes require fundamentally different calculations.\n", "- **Wrap Up:** Summary of the script and next steps." ] }, @@ -66,6 +116,8 @@ "\n", "# from autolens import setup_notebook; setup_notebook()\n", "\n", + "import numpy as np\n", + "\n", "import autolens as al\n", "import autolens.plot as aplt" ], @@ -76,7 +128,407 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "__Wrap Up__" + "__Initial Setup__\n", + "\n", + "Let's begin with a strong lens system like those of the previous tutorials: an elliptical isothermal mass profile\n", + "for the lens galaxy, and an extended light profile for the source galaxy.\n", + "\n", + "There is one deliberate difference: the source's `effective_radius` is just 0.1\", making it far more compact than\n", + "the sources we lensed before." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "grid = al.Grid2D.uniform(\n", + " shape_native=(100, 100),\n", + " pixel_scales=0.05,\n", + ")\n", + "\n", + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=1.6,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0),\n", + " ),\n", + ")\n", + "\n", + "source_galaxy_extended = al.Galaxy(\n", + " redshift=1.0,\n", + " light=al.lp.ExponentialCore(\n", + " centre=(0.07, 0.07), intensity=0.1, effective_radius=0.1\n", + " ),\n", + ")\n", + "\n", + "tracer_extended = al.Tracer(galaxies=[lens_galaxy, source_galaxy_extended])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we plot the image of this system, something new happens: instead of a sweeping arc or Einstein ring, the\n", + "source appears as distinct blobs of light \u2014 the same source, imaged multiple times at different locations in\n", + "the image-plane.\n", + "\n", + "This is a general rule of strong lensing: the more compact the source, the more its lensed image breaks up into\n", + "separate multiple images. An extended galaxy blurs its multiple images together into arcs; a compact source keeps\n", + "them distinct." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_array(\n", + " array=tracer_extended.image_2d_from(grid=grid),\n", + " title=\"Compact Source Multiple Images\",\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Point Sources__\n", + "\n", + "Now imagine shrinking the source further \u2014 not to 0.01\", but to the physical size of a quasar accretion disk or a\n", + "supernova photosphere. These objects are light-days to light-weeks across, which at cosmological distances\n", + "corresponds to micro-arcseconds on the sky. That is millions of times smaller than the resolution of any telescope.\n", + "\n", + "Strictly speaking, such a source still has a finite size, but the telescope cannot resolve it. Each multiple image\n", + "appears as a single unresolved point of light, with all of its flux effectively contained within one pixel (spread\n", + "only by the telescope's blurring, which we will meet in a later tutorial).\n", + "\n", + "This is what we call a **point source**. Lensed quasars and lensed supernovae are the classic examples, and they\n", + "are prized objects: the arrival-time differences between their multiple images can be used to measure the expansion\n", + "rate of the Universe (the Hubble constant), and their fluxes are sensitive probes of small-scale dark matter\n", + "structure.\n", + "\n", + "For a point source, the extended-source picture of lensing breaks down:\n", + "\n", + "- There is no arc or ring of surface brightness to fit, just a handful of image positions.\n", + "\n", + "- The observable quantities are the (y,x) **positions** of the multiple images, and optionally their **fluxes**\n", + " and **time delays**.\n", + "\n", + "- The concept of evaluating a light profile's surface brightness on a ray-traced grid \u2014 the engine of the previous\n", + " two tutorials \u2014 no longer applies, because the source has no extent to evaluate.\n", + "\n", + "__Point Source Tracer__\n", + "\n", + "PyAutoLens represents a point source with the `Point` profile, found in the `al.ps` module (`ps` for point source).\n", + "Unlike a light profile it has no `intensity`, `effective_radius` or elliptical components \u2014 it is fully described\n", + "by its (y,x) centre in the source-plane.\n", + "\n", + "We give the point source the same centre, (0.07\", 0.07\"), as the compact extended source above, so its multiple\n", + "images will coincide with the bright blobs in the image we just plotted." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "point_source = al.ps.Point(centre=(0.07, 0.07))\n", + "\n", + "source_galaxy = al.Galaxy(redshift=1.0, point_0=point_source)\n", + "\n", + "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we attached the point source to its galaxy with the name `point_0`. This name is a label that PyAutoLens\n", + "uses when fitting real data to pair each point source in the model with the dataset containing its observed image\n", + "positions. With one source the name is a formality, but group- and cluster-scale lenses can contain many point\n", + "sources, and the names keep each one matched to its own data.\n", + "\n", + "__The Lens Equation__\n", + "\n", + "In tutorial 2, we met the **lens equation**, which relates a coordinate in the image-plane to the coordinate in\n", + "the source-plane its light ray comes from:\n", + "\n", + "$\\beta = \\theta - \\alpha(\\theta)$\n", + "\n", + "where $\\theta$ is the image-plane (y,x) coordinate, $\\alpha(\\theta)$ is the deflection angle at that coordinate,\n", + "and $\\beta$ is the source-plane (y,x) coordinate.\n", + "\n", + "For the extended sources of tutorials 2 and 3, we always used this equation in the *forward* direction: take every\n", + "image-plane coordinate $\\theta$ on our grid, compute its deflection angles, and subtract to get $\\beta$. This is\n", + "easy \u2014 it is just an evaluation, one subtraction per coordinate.\n", + "\n", + "For a point source, the question is reversed. We *know* the source's position $\\beta$ (the centre of the `Point`\n", + "profile), and we want to find every image-plane position $\\theta$ that satisfies the lens equation for that\n", + "$\\beta$. Each solution is one of the multiple images.\n", + "\n", + "This is called **solving the lens equation**, and it is much harder than evaluating it:\n", + "\n", + "- The equation is non-linear, because the deflection angles $\\alpha(\\theta)$ vary with position in a way set by the\n", + " mass profile. For all but the simplest mass profiles, no analytic solution exists.\n", + "\n", + "- There are multiple solutions \u2014 that is the whole point! A single $\\beta$ maps to two, four or more distinct\n", + " $\\theta$ positions, and we must find all of them.\n", + "\n", + "We therefore need a numerical root-finding method that searches the image-plane for every position whose ray-traced\n", + "source-plane coordinate lands on the source. (Where the deflection angles themselves come from is the subject of\n", + "the next tutorial \u2014 for now, we just need the equation.)\n", + "\n", + "__Point Solver__\n", + "\n", + "PyAutoLens solves the lens equation with the `PointSolver`, which uses a triangle-based scheme:\n", + "\n", + "1. Overlay the image-plane with a grid of triangles.\n", + "\n", + "2. Ray-trace the corners of every triangle to the source-plane using the lens equation, giving a set of\n", + " ray-traced source-plane triangles.\n", + "\n", + "3. Keep every triangle that contains the source's (y,x) centre \u2014 somewhere inside that image-plane triangle is a\n", + " multiple image.\n", + "\n", + "4. Subdivide the retained triangles into smaller triangles and repeat, homing in on each multiple image with\n", + " progressively finer precision.\n", + "\n", + "The `pixel_scale_precision` input sets the triangle size at which the solver stops refining, and therefore the\n", + "precision of the image positions. Smaller values are more precise but cost more computation; 0.001\" is a good\n", + "balance for most lens modeling.\n", + "\n", + "Mass models also predict a faint \"central image\" near the centre of the lens, which is usually so heavily\n", + "demagnified that real observations never detect it. The `magnification_threshold` input discards solved images\n", + "whose magnification is below the threshold, removing this central image to match what the data would contain." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "solver_grid = al.Grid2D.uniform(\n", + " shape_native=(100, 100),\n", + " pixel_scales=0.2,\n", + ")\n", + "\n", + "solver = al.PointSolver.for_grid(\n", + " grid=solver_grid, pixel_scale_precision=0.001, magnification_threshold=0.1\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now solve the lens equation, passing the solver our tracer (which provides the mass model's deflection angles)\n", + "and the source-plane centre of the point source.\n", + "\n", + "The result is the set of image-plane (y,x) coordinates of the multiple images." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "positions = solver.solve(tracer=tracer, source_plane_coordinate=(0.07, 0.07))\n", + "\n", + "print(\"Multiple Image Positions (y,x) in arc-seconds:\")\n", + "print(positions)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Multiple Images and Critical Curves__\n", + "\n", + "For our elliptical mass profile, the solver finds four multiple images (a fifth, central image existed but was\n", + "removed by the `magnification_threshold`). The number of images depends on the mass model:\n", + "\n", + "- Spherical mass profiles produce three images (including the demagnified central image).\n", + "\n", + "- Elliptical mass profiles produce five images (again including the central image).\n", + "\n", + "- More complex systems, with multiple lens galaxies, can produce even more.\n", + "\n", + "To see that the solver got the right answer, we plot the solved positions on top of the compact extended source's\n", + "image from the start of the tutorial. The positions land on the centres of the bright multiple images.\n", + "\n", + "We also overlay the tracer's tangential critical curve (introduced in tutorial 3 \u2014 the line of infinite\n", + "magnification in the image-plane). The multiple images of a strongly lensed point source straddle the critical\n", + "curve, and images close to it are the most highly magnified." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tangential_critical_curve_list = al.LensCalc.from_tracer(\n", + " tracer=tracer\n", + ").tangential_critical_curve_list_from(grid=grid)\n", + "\n", + "aplt.plot_array(\n", + " array=tracer_extended.image_2d_from(grid=grid),\n", + " positions=positions,\n", + " lines=tangential_critical_curve_list,\n", + " title=\"Multiple Images and Critical Curve\",\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Magnifications__\n", + "\n", + "Lensing does not just relocate a point source's light \u2014 it magnifies it. Each multiple image has its own\n", + "magnification, set by how strongly the mass model focuses light rays at that image-plane position, and it can make\n", + "an image tens of times brighter than the unlensed source.\n", + "\n", + "For an extended source, magnification stretches the source over more pixels. For a point source, the image stays\n", + "unresolved \u2014 so the magnification instead multiplies its observed **flux**. If the source's intrinsic flux is $F$,\n", + "the flux of a multiple image with magnification $\\mu$ is $|\\mu| * F$.\n", + "\n", + "We compute the magnification at each solved image position below (the sign of $\\mu$ encodes the image's parity \u2014\n", + "whether it is mirror-flipped \u2014 which is why we take its absolute value for fluxes)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "magnifications = al.LensCalc.from_tracer(\n", + " tracer=tracer\n", + ").magnification_2d_via_hessian_from(grid=positions)\n", + "\n", + "print(\"Magnification of each Multiple Image:\")\n", + "print(magnifications)\n", + "\n", + "flux = 1.0\n", + "fluxes = [flux * np.abs(magnification) for magnification in magnifications]\n", + "\n", + "print(\"Flux of each Multiple Image (for a source of flux 1.0):\")\n", + "print(fluxes)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In principle, comparing the observed flux ratios of the images to the model's magnification ratios is a powerful\n", + "constraint on the mass model. In practice, point-source fluxes are treated with caution, because effects the smooth\n", + "mass model does not include can change them substantially:\n", + "\n", + "- **Microlensing**: individual stars in the lens galaxy lens the point source again on micro-arcsecond scales,\n", + " magnifying or demagnifying each image by unpredictable amounts that change over time.\n", + "\n", + "- **Dark matter substructure**: small invisible clumps of dark matter near an image perturb its magnification\n", + " (this is a systematic for mass modeling, but also exactly why lensed quasars are used to *search* for\n", + " substructure).\n", + "\n", + "- Dust in the lens galaxy and the source's own intrinsic variability further distort the observed flux ratios.\n", + "\n", + "Image positions are essentially immune to all of these, which is why point-source lens modeling is built on\n", + "positions first, with fluxes included only when the science demands it and the systematics are under control.\n", + "\n", + "__Time Delays__\n", + "\n", + "There is a third observable unique to point sources. The light of each multiple image travels a different path\n", + "through the Universe, and each path takes a different time \u2014 partly because the geometric path lengths differ, and\n", + "partly because light is slowed as it climbs through the lens galaxy's gravitational field (the Shapiro delay).\n", + "\n", + "For an extended, steady source this is unobservable. But quasars flicker and supernovae explode: when the source\n", + "varies, the variation appears in each multiple image at a different time. By monitoring the images, these\n", + "**time delays** can be measured \u2014 typically days to months apart.\n", + "\n", + "Time delays are a cosmological gold mine: their absolute scale depends on the distances between us, the lens and\n", + "the source, so a lens model plus measured delays yields the Hubble constant. This is time-delay cosmography, one\n", + "of the headline applications of point-source lensing.\n", + "\n", + "The tracer computes the arrival time at each image position from its mass model and the galaxies' redshifts. Only\n", + "the *differences* between images are observable \u2014 a delay of the same length along every path is invisible \u2014 so it\n", + "is the relative values below that matter." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "time_delays = tracer.time_delays_from(grid=positions)\n", + "\n", + "print(\"Time Delay of each Multiple Image (days):\")\n", + "print(time_delays)\n", + "\n", + "print(\"Time Delays relative to first image (days):\")\n", + "print(time_delays - time_delays[0])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Extended Versus Point Computations__\n", + "\n", + "We can now state precisely why point-source lensing works so differently from everything in tutorials 2 and 3, on\n", + "both the computation and the data.\n", + "\n", + "**Extended sources are forward-modeled.** To predict the data, we ray-trace every image-plane pixel to the\n", + "source-plane via the lens equation (an evaluation, not a solve) and compute the source light profile's surface\n", + "brightness at each ray-traced coordinate. This is computationally cheap, requires no equation solving, and a fit\n", + "compares the predicted and observed images pixel-by-pixel.\n", + "\n", + "**Point sources require solving an inverse problem.** The source has no surface brightness to evaluate \u2014 the model\n", + "must predict the discrete positions of the multiple images, which means numerically solving the lens equation with\n", + "the `PointSolver` every time the mass model changes. A fit then compares the predicted image positions to the\n", + "observed ones (and optionally the predicted fluxes and time delays to their measurements) \u2014 a handful of numbers,\n", + "rather than thousands of pixels.\n", + "\n", + "This trade shapes the whole analysis. The point-source dataset is tiny \u2014 a few positions with uncertainties \u2014 but\n", + "each model evaluation involves root finding over the image plane rather than simple forward ray-tracing. Whole\n", + "questions that never arose for extended sources, such as how to pair predicted images with observed ones when the\n", + "model predicts too many or too few, become central to the likelihood (the workspace covers these in detail).\n", + "\n", + "__Wrap Up__\n", + "\n", + "In this tutorial, we met point sources and the tools PyAutoLens uses to model them. Let's summarise what we've\n", + "learnt:\n", + "\n", + "- **Point Sources**: Quasars and supernovae are so much smaller than a telescope's resolution that each of their\n", + " multiple images appears as a single unresolved point of light \u2014 no arcs, no rings.\n", + "\n", + "- **The Lens Equation**: Point-source modeling means solving $\\beta = \\theta - \\alpha(\\theta)$ for the image\n", + " positions $\\theta$ given the source position $\\beta$ \u2014 a non-linear inverse problem with no analytic solution,\n", + " in contrast to the cheap forward evaluation used for extended sources.\n", + "\n", + "- **Point Solver**: The `PointSolver` solves the lens equation numerically, ray-tracing progressively finer\n", + " triangles until every multiple image is located to sub-pixel precision, and filtering out the demagnified\n", + " central image.\n", + "\n", + "- **Observables**: A point-source dataset consists of image positions, and optionally fluxes and time delays.\n", + " Positions are the bedrock; fluxes are often compromised by microlensing and substructure; time delays enable\n", + " measurement of the Hubble constant.\n", + "\n", + "When you are ready to model real lensed quasars and supernovae \u2014 composing mass models, fitting observed positions\n", + "with a non-linear search, and including fluxes and time delays \u2014 the `autolens_workspace/scripts/point_source`\n", + "package is the place to go, starting with its `start_here` example.\n", + "\n", + "In the next tutorial, we return to the lensing formalism itself: where deflection angles come from, and the\n", + "quantities (convergence, potential, magnification) that describe a mass distribution's lensing power." ] } ], diff --git a/notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb b/notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb index bf6d4cd..27b8b5f 100644 --- a/notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb @@ -7,16 +7,37 @@ "Tutorial 5: Lensing Formalism\n", "=============================\n", "\n", - "This tutorial is not wrriten yet, but will explain what all the different lens quantities are and give a more\n", - "formal description of them.\n", + "This tutorial is the equations lecture of **HowToLens**.\n", "\n", - "This tutorial is not necesary for using PyAutoLens or doing strong lens analysis, so don't worry that it is not\n", - "written yet!\n", + "Every other tutorial in this series deliberately defers the formal mathematics of gravitational lensing, so that you\n", + "could first learn lensing hands-on: in the earlier tutorials we created grids, evaluated light and mass profiles,\n", + "ray-traced coordinates from the image-plane to the source-plane and looked at quantities like the convergence,\n", + "deflection angles and critical curves visually, without ever writing down their formal definitions.\n", "\n", - "Tutorial 8 summary is written and you should check that out instead!\n", + "This tutorial gathers all of that algebra in one place. Each quantity you have already computed and plotted \u2014\n", + "deflection angles, convergence, potential, magnification, critical curves, the Einstein radius \u2014 is now given its\n", + "formal mathematical definition, explained in plain words, and tied back to the exact **PyAutoLens** method that\n", + "computes it. The goal is that after this tutorial, every symbol in a lensing paper maps to a line of code you know.\n", + "\n", + "None of this mathematics is required to use **PyAutoLens** or to analyse strong lenses \u2014 the library computes\n", + "everything for you. But understanding where each quantity comes from will make you a better lens modeler, and this\n", + "is the single place in **HowToLens** where the formalism lives, so you can return here whenever you need it.\n", + "\n", + "We will build one simple strong lens system \u2014 an elliptical isothermal (SIE) lens galaxy and a Sersic source \u2014 and\n", + "reuse it throughout, computing every quantity from the same tracer so you can see how they all fit together.\n", "\n", "__Contents__\n", "\n", + "- **Initial Setup:** Build the grid, SIE lens, Sersic source and `Tracer` reused throughout the tutorial.\n", + "- **Cosmological Distances:** Angular diameter distances D_l, D_s, D_ls and how arcseconds convert to kiloparsecs.\n", + "- **The Lens Equation:** beta = theta - alpha(theta), the mapping from image-plane to source-plane, and multiple images.\n", + "- **Convergence:** Surface mass density Sigma, the critical surface density Sigma_cr and kappa = Sigma / Sigma_cr.\n", + "- **Deflection Angles:** The integral relating the convergence field to the deflection angles.\n", + "- **The Lensing Potential:** The scalar potential psi, with alpha = grad psi and kappa = (1/2) laplacian psi.\n", + "- **Shear and Magnification:** The Hessian, the Jacobian matrix A, shear gamma and magnification mu = 1 / det(A).\n", + "- **Critical Curves and Caustics:** Where det(A) = 0 in the image-plane, and its map to the source-plane.\n", + "- **Einstein Radius:** Its definition, the SIS and point-mass closed forms, and why it is the robust mass measurement.\n", + "- **Time Delays:** The Fermat potential and the time-delay surface, in brief.\n", "- **Wrap Up:** Summary of the script and next steps." ] }, @@ -67,7 +88,10 @@ "\n", "# from autolens import setup_notebook; setup_notebook()\n", "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "import autolens as al\n", + "import autoarray as aa\n", "import autolens.plot as aplt" ], "outputs": [], @@ -77,7 +101,746 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "__Wrap Up__" + "__Initial Setup__\n", + "\n", + "We first build the strong lens system used throughout this tutorial, mirroring the objects introduced in tutorials\n", + "2 and 3: a 2D grid of (y,x) arcsecond coordinates, a lens galaxy with an elliptical isothermal (`Isothermal`) mass\n", + "profile \u2014 the singular isothermal ellipsoid, or SIE, the workhorse mass model of galaxy-scale lensing \u2014 and a\n", + "source galaxy with a Sersic light profile." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "grid = al.Grid2D.uniform(shape_native=(100, 100), pixel_scales=0.05)\n", + "\n", + "mass_profile = al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0),\n", + " einstein_radius=1.6,\n", + ")\n", + "\n", + "lens_galaxy = al.Galaxy(redshift=0.5, mass=mass_profile)\n", + "\n", + "source_galaxy = al.Galaxy(\n", + " redshift=1.0,\n", + " bulge=al.lp.SersicCore(\n", + " centre=(0.0, 0.1),\n", + " ell_comps=(0.1, 0.0),\n", + " intensity=0.3,\n", + " effective_radius=0.3,\n", + " sersic_index=1.0,\n", + " ),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We combine these into a `Tracer` with a Planck 2015 cosmology. The redshifts of the two galaxies (0.5 and 1.0) and\n", + "the cosmology together fix every distance that appears in the equations below." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "cosmology = al.cosmo.Planck15()\n", + "\n", + "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy], cosmology=cosmology)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the lensed image of this system, which by now should look familiar. Every equation in this tutorial is\n", + "describing some aspect of how this image forms." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "image = tracer.image_2d_from(grid=grid)\n", + "aplt.plot_array(array=image, title=\"Lensed Image of the Source Galaxy\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We also create a `LensCalc` object from the tracer. As we saw in tutorial 3, this is **PyAutoLens**'s calculator for\n", + "derived lensing quantities \u2014 everything it computes is derived from the tracer's deflection angles, which is a theme\n", + "we will see repeatedly below." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_calc = al.LensCalc.from_tracer(tracer=tracer)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Cosmological Distances__\n", + "\n", + "Gravitational lensing is a geometric effect, so distances are everywhere in its equations. The distances used are\n", + "**angular diameter distances**, defined so that an object of physical size l at angular diameter distance D subtends\n", + "an angle (in radians):\n", + "\n", + " theta = l / D\n", + "\n", + "Three distances appear in every lensing formula:\n", + "\n", + "- D_l \u2014 the angular diameter distance from the observer to the lens (deflector) galaxy.\n", + "- D_s \u2014 the angular diameter distance from the observer to the source galaxy.\n", + "- D_ls \u2014 the angular diameter distance from the lens to the source.\n", + "\n", + "In an expanding Universe angular diameter distances do not add linearly, so D_ls != D_s - D_l. Each is computed by\n", + "integrating the cosmological expansion history between the two redshifts, which is why the tracer requires both\n", + "galaxy redshifts and a cosmology.\n", + "\n", + "The `Cosmology` object computes each of these directly (values below are in kiloparsecs):" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "D_l = cosmology.angular_diameter_distance_to_earth_in_kpc_from(redshift=0.5)\n", + "D_s = cosmology.angular_diameter_distance_to_earth_in_kpc_from(redshift=1.0)\n", + "D_ls = cosmology.angular_diameter_distance_between_redshifts_in_kpc_from(\n", + " redshift_0=0.5, redshift_1=1.0\n", + ")\n", + "\n", + "print(f\"D_l (kpc) = {D_l:.3e}\")\n", + "print(f\"D_s (kpc) = {D_s:.3e}\")\n", + "print(f\"D_ls (kpc) = {D_ls:.3e}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The angular diameter distance is also what converts **PyAutoLens**'s internal angular units of arcseconds into\n", + "physical distances. An angle of 1.0\" at redshift z corresponds to a physical size:\n", + "\n", + " l = D(z) * (1.0\" in radians)\n", + "\n", + "The `Cosmology` object wraps this up as a `kpc_per_arcsec` conversion factor, which differs between the image-plane\n", + "(lens redshift) and source-plane (source redshift) because the two planes are at different distances." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "kpc_per_arcsec_lens = cosmology.kpc_per_arcsec_from(redshift=0.5)\n", + "kpc_per_arcsec_source = cosmology.kpc_per_arcsec_from(redshift=1.0)\n", + "\n", + "print(f\"kpc per arcsec at the lens (z=0.5) = {kpc_per_arcsec_lens:.4f}\")\n", + "print(f\"kpc per arcsec at the source (z=1.0) = {kpc_per_arcsec_source:.4f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So our lens's Einstein radius of 1.6\" corresponds to a physical scale of roughly 1.6 * 6.3 ~ 10 kpc at the lens\n", + "redshift \u2014 a sensible size for the inner regions of a massive elliptical galaxy.\n", + "\n", + "__The Lens Equation__\n", + "\n", + "The fundamental equation of gravitational lensing is the **lens equation**, which we met in tutorial 2:\n", + "\n", + " beta = theta - alpha(theta)\n", + "\n", + "where:\n", + "\n", + "- theta is the observed (image-plane) angular position of a light ray, in arcseconds.\n", + "- alpha(theta) is the (scaled) deflection angle \u2014 how much the ray is bent by the lens's gravity at position theta.\n", + "- beta is the true (source-plane) position \u2014 where the source would appear if there were no lens.\n", + "\n", + "In plain words: to find where a light ray we observe at theta really came from, subtract the deflection the lens\n", + "applied to it. This is exactly the ray-tracing calculation we performed in tutorial 2, and it is worth knowing that\n", + "the deflection angle here is the \"scaled\" deflection: the physical bending angle of the ray multiplied by the\n", + "distance ratio D_ls / D_s, which is the convention that makes the lens equation take the simple form above.\n", + "\n", + "The lens equation is trivial to evaluate one way (given theta, compute beta), but it cannot be inverted\n", + "analytically: for a strong lens, *multiple* image-plane positions theta can satisfy the equation for the *same*\n", + "source position beta. This is why strong lenses produce multiple images of a single source \u2014 and why lens modeling\n", + "works \"forwards\", ray-tracing image-plane grids to the source-plane rather than the other way around.\n", + "\n", + "In code, the lens equation is one line \u2014 the same `grid_2d_via_deflection_grid_from` call from tutorial 2:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "deflections = tracer.deflections_yx_2d_from(grid=grid)\n", + "\n", + "source_plane_grid = grid.grid_2d_via_deflection_grid_from(deflection_grid=deflections)\n", + "\n", + "aplt.plot_grid(grid=grid, title=\"Image-Plane Grid (theta)\")\n", + "aplt.plot_grid(grid=source_plane_grid, title=\"Source-Plane Grid (beta)\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Convergence__\n", + "\n", + "The lens galaxy's mass enters lensing via its **surface mass density** Sigma(theta): the galaxy's 3D mass density\n", + "integrated along the line of sight, giving a projected 2D mass per unit area (e.g. in solar masses per kpc^2).\n", + "Lensing only cares about this projection \u2014 two very different 3D distributions with the same projected Sigma\n", + "deflect light identically.\n", + "\n", + "Whether a lens is \"strong\" is set by comparing Sigma to the **critical surface density**:\n", + "\n", + " Sigma_cr = (c^2 / (4 pi G)) * (D_s / (D_l * D_ls))\n", + "\n", + "This is a purely cosmological quantity \u2014 it depends only on the constants c and G and the three distances from the\n", + "previous section. It has a beautiful interpretation: it is the surface density a lens needs, given this observer /\n", + "lens / source geometry, to be capable of producing multiple images." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "sigma_cr_kpc = cosmology.critical_surface_density_between_redshifts_solar_mass_per_kpc2_from(\n", + " redshift_0=0.5, redshift_1=1.0\n", + ")\n", + "sigma_cr_arcsec = cosmology.critical_surface_density_between_redshifts_from(\n", + " redshift_0=0.5, redshift_1=1.0\n", + ")\n", + "\n", + "print(f\"Sigma_cr (solar masses per kpc^2) = {sigma_cr_kpc:.3e}\")\n", + "print(f\"Sigma_cr (solar masses per arcsec^2) = {sigma_cr_arcsec:.3e}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The **convergence** kappa is the surface mass density in units of the critical density:\n", + "\n", + " kappa(theta) = Sigma(theta) / Sigma_cr\n", + "\n", + "This is the dimensionless quantity **PyAutoLens** has been plotting since tutorial 2 whenever we called\n", + "`convergence_2d_from`:\n", + "\n", + "- kappa >= 1 \u2014 the lens is super-critical at that point; multiple imaging is possible.\n", + "- kappa < 1 \u2014 the lens is sub-critical there.\n", + "\n", + "Because kappa is dimensionless, lens models can be composed and fitted without knowing the galaxy redshifts at all \u2014\n", + "the redshifts and Sigma_cr are only needed at the end, to convert the inferred kappa back into physical masses." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "convergence = tracer.convergence_2d_from(grid=grid)\n", + "\n", + "aplt.plot_array(array=convergence, title=\"Convergence (kappa)\", use_log10=True)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Deflection Angles__\n", + "\n", + "The convergence field determines the deflection angles everywhere, via a 2D integral over the whole image-plane:\n", + "\n", + " alpha(theta) = (1 / pi) * integral d^2 theta' kappa(theta') * (theta - theta') / |theta - theta'|^2\n", + "\n", + "In plain words: every patch of mass in the lens plane pulls on every light ray. The deflection at position theta is\n", + "the sum (integral) of the pulls from all mass elements kappa(theta'), each pointing from the mass element towards\n", + "the ray and falling off as 1/distance \u2014 the 2D (projected) analogue of Newtonian gravity's inverse-square law.\n", + "\n", + "Two things follow from this integral being over *all* theta':\n", + "\n", + "- The deflection at a point depends on the mass distribution *everywhere*, not just the mass at that point. Even\n", + " mass well outside the region where images form contributes deflections (this is why external shear from\n", + " neighbouring galaxies matters, as we saw in tutorial 3).\n", + "\n", + "- For simple analytic profiles (isothermal, power-law, Sersic-like) this integral has closed-form solutions, which\n", + " is exactly what a **PyAutoLens** mass profile is: an analytic kappa(theta) paired with its analytic alpha(theta).\n", + "\n", + "The `deflections_yx_2d_from` method we have used since tutorial 2 evaluates this integral's closed-form solution.\n", + "The deflections form a 2D vector field, so we plot its y and x components separately:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "deflections = tracer.deflections_yx_2d_from(grid=grid)\n", + "\n", + "deflections_y = aa.Array2D(values=deflections.slim[:, 0], mask=grid.mask)\n", + "aplt.plot_array(array=deflections_y, title=\"Deflection Angles (y component)\")\n", + "\n", + "deflections_x = aa.Array2D(values=deflections.slim[:, 1], mask=grid.mask)\n", + "aplt.plot_array(array=deflections_x, title=\"Deflection Angles (x component)\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__The Lensing Potential__\n", + "\n", + "The deflection field is not arbitrary \u2014 it is the gradient of a scalar field, the **lensing potential** psi(theta):\n", + "\n", + " alpha(theta) = grad psi(theta)\n", + "\n", + "The potential is itself an integral over the convergence:\n", + "\n", + " psi(theta) = (1 / pi) * integral d^2 theta' kappa(theta') * ln|theta - theta'|\n", + "\n", + "and taking the divergence of the gradient (the Laplacian) recovers the convergence with a factor of a half:\n", + "\n", + " kappa(theta) = (1/2) * laplacian psi(theta)\n", + "\n", + "This is the 2D Poisson equation of lensing \u2014 the projected analogue of Newtonian gravity's del^2 Phi = 4 pi G rho.\n", + "The potential is the single most economical description of a lens: one scalar field from which the deflections\n", + "(first derivatives), and the convergence, shear and magnification (second derivatives) all follow.\n", + "\n", + "The `potential_2d_from` method returns psi, which we have plotted before without defining it:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "potential = tracer.potential_2d_from(grid=grid)\n", + "\n", + "aplt.plot_array(array=potential, title=\"Lensing Potential (psi)\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can verify alpha = grad psi numerically. Mass profiles have a `deflections_2d_via_potential_2d_from` method which\n", + "computes the deflections by numerically differentiating the potential, rather than using the profile's closed-form\n", + "deflection formula. Across the grid the two agree closely \u2014 we print the median absolute difference, since the\n", + "finite-difference derivative is inaccurate right at the isothermal profile's central cusp, where the potential is\n", + "not smooth (the closed-form deflections have no such problem):" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "deflections_analytic = mass_profile.deflections_yx_2d_from(grid=grid)\n", + "deflections_via_potential = mass_profile.deflections_2d_via_potential_2d_from(grid=grid)\n", + "\n", + "difference = np.median(\n", + " np.abs(np.asarray(deflections_analytic) - np.asarray(deflections_via_potential))\n", + ")\n", + "print(f\"Median |alpha_analytic - grad psi| = {difference:.3e} arcsec\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Shear and Magnification__\n", + "\n", + "How a small image is distorted by lensing is governed by how the deflection angles *change* across it \u2014 the second\n", + "derivatives of the potential. These form the 2x2 **Hessian** matrix, which `LensCalc` computes by finite\n", + "differences of the deflection field (as we saw in the workspace guides, this works for any mass distribution):\n", + "\n", + " H_yy = d(alpha_y) / d(theta_y) H_xy = d(alpha_x) / d(theta_y)\n", + " H_yx = d(alpha_y) / d(theta_x) H_xx = d(alpha_x) / d(theta_x)" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "hessian_yy, hessian_xy, hessian_yx, hessian_xx = lens_calc.hessian_from(grid=grid)\n", + "\n", + "print(f\"Hessian components at pixel 0: H_yy = {hessian_yy[0]:.4f}, H_xx = {hessian_xx[0]:.4f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Differentiating the lens equation beta = theta - alpha(theta) gives the **Jacobian matrix** A, which maps a small\n", + "displacement in the source-plane to the corresponding displacement in the image-plane:\n", + "\n", + " A = d(beta) / d(theta) = I - H = | 1 - H_yy -H_xy |\n", + " | -H_yx 1 - H_xx |\n", + "\n", + "The Jacobian decomposes into two physically distinct distortions:\n", + "\n", + "- The **convergence** kappa = (1/2) * (H_yy + H_xx) \u2014 the isotropic part, which magnifies an image uniformly\n", + " without changing its shape. (Note this is the same kappa as before: the trace of the Hessian recovers the\n", + " Poisson equation kappa = (1/2) laplacian psi.)\n", + "\n", + "- The **shear** gamma \u2014 the anisotropic part, which stretches an image along one axis and squeezes it along the\n", + " perpendicular axis. It has two components and a magnitude:\n", + "\n", + " gamma_1 = (1/2) * (H_xx - H_yy)\n", + " gamma_2 = H_xy\n", + " |gamma| = sqrt(gamma_1^2 + gamma_2^2)\n", + "\n", + "The shear is why lensed images near the lens are stretched into tangential arcs \u2014 the tidal field of the lens\n", + "elongates them around it." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "shear = lens_calc.shear_yx_2d_via_hessian_from(grid=grid)\n", + "\n", + "print(f\"Shear magnitude at pixel 0: |gamma| = {shear.magnitudes[0]:.4f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The **magnification** mu is the inverse of the Jacobian's determinant:\n", + "\n", + " mu = 1 / det(A) = 1 / [ (1 - kappa)^2 - |gamma|^2 ]\n", + "\n", + "Lensing conserves surface brightness, so a lensed image that covers more sky than the unlensed source appears\n", + "brighter in total by exactly the factor |mu|:\n", + "\n", + "- |mu| > 1 \u2014 the image is magnified (larger and brighter than the unlensed source).\n", + "- |mu| < 1 \u2014 the image is demagnified.\n", + "- mu < 0 \u2014 the image has negative parity: it is a mirror image of the source.\n", + "\n", + "The determinant factorises into two eigenvalues, giving the **tangential** and **radial** magnifications:\n", + "\n", + " lambda_t = 1 - kappa - |gamma| (tangential eigenvalue)\n", + " lambda_r = 1 - kappa + |gamma| (radial eigenvalue)\n", + "\n", + " mu = 1 / (lambda_t * lambda_r)\n", + "\n", + "An image is stretched by 1/lambda_t in the tangential direction (around the lens) and 1/lambda_r in the radial\n", + "direction (towards/away from the lens). Giant tangential arcs form where lambda_t is close to zero." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "magnification = lens_calc.magnification_2d_from(grid=grid)\n", + "\n", + "aplt.plot_array(array=magnification, title=\"Magnification (mu)\")\n", + "\n", + "tangential_eigen_values = lens_calc.tangential_eigen_value_from(grid=grid)\n", + "radial_eigen_values = lens_calc.radial_eigen_value_from(grid=grid)\n", + "\n", + "print(f\"Tangential eigenvalue at pixel 0: {tangential_eigen_values[0]:.4f}\")\n", + "print(f\"Radial eigenvalue at pixel 0: {radial_eigen_values[0]:.4f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Critical Curves and Caustics__\n", + "\n", + "Where either eigenvalue passes through zero, det(A) = 0 and the magnification formally diverges to infinity. The\n", + "closed curves in the image-plane where this happens are the **critical curves** \u2014 the white and yellow lines that\n", + "have appeared on plots since tutorial 2, and which we explored visually in tutorial 3:\n", + "\n", + "- The **tangential critical curve** (lambda_t = 0) \u2014 roughly traces the Einstein ring; sources near its source-plane\n", + " counterpart form giant tangential arcs.\n", + "- The **radial critical curve** (lambda_r = 0) \u2014 an inner curve associated with radially stretched central images.\n", + "\n", + "Ray-tracing each critical curve through the lens equation maps it to the source-plane, where it is called a\n", + "**caustic**:\n", + "\n", + " caustic = critical_curve - alpha(critical_curve)\n", + "\n", + "Caustics divide the source-plane into regions of different image multiplicity: each time a source crosses a\n", + "caustic, the number of images it produces changes by two. For our SIE lens, a source inside the tangential caustic\n", + "produces four images (plus a faint central image); between the tangential and radial caustics, two; and outside\n", + "both caustics, just one \u2014 the source is no longer multiply imaged at all.\n", + "\n", + "`LensCalc` computes both by locating the zero-contours of the eigenvalue fields on the grid:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tangential_critical_curve_list = lens_calc.tangential_critical_curve_list_from(grid=grid)\n", + "radial_critical_curve_list = lens_calc.radial_critical_curve_list_from(grid=grid)\n", + "\n", + "tangential_caustic_list = lens_calc.tangential_caustic_list_from(grid=grid)\n", + "radial_caustic_list = lens_calc.radial_caustic_list_from(grid=grid)\n", + "\n", + "print(f\"Number of tangential critical curves: {len(tangential_critical_curve_list)}\")\n", + "print(f\"Number of radial critical curves: {len(radial_critical_curve_list)}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets plot the critical curves (image-plane) and caustics (source-plane) of our SIE side by side. Note how the\n", + "elliptical lens produces a tangential caustic with four cusps \u2014 the origin of the four-image \"quad\" configurations\n", + "seen in many real lenses." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "plt.figure(figsize=(10, 5))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "for curve in tangential_critical_curve_list:\n", + " curve = np.asarray(curve)\n", + " plt.plot(curve[:, 1], curve[:, 0], color=\"black\", label=\"Tangential\")\n", + "for curve in radial_critical_curve_list:\n", + " curve = np.asarray(curve)\n", + " plt.plot(curve[:, 1], curve[:, 0], color=\"orange\", label=\"Radial\")\n", + "plt.gca().set_aspect(\"equal\")\n", + "plt.title(\"Critical Curves (Image-Plane)\")\n", + "plt.xlabel(\"x (arcsec)\")\n", + "plt.ylabel(\"y (arcsec)\")\n", + "plt.legend()\n", + "\n", + "plt.subplot(1, 2, 2)\n", + "for curve in tangential_caustic_list:\n", + " curve = np.asarray(curve)\n", + " plt.plot(curve[:, 1], curve[:, 0], color=\"black\", label=\"Tangential\")\n", + "for curve in radial_caustic_list:\n", + " curve = np.asarray(curve)\n", + " plt.plot(curve[:, 1], curve[:, 0], color=\"orange\", label=\"Radial\")\n", + "plt.gca().set_aspect(\"equal\")\n", + "plt.title(\"Caustics (Source-Plane)\")\n", + "plt.xlabel(\"x (arcsec)\")\n", + "plt.ylabel(\"y (arcsec)\")\n", + "plt.legend()\n", + "\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Einstein Radius__\n", + "\n", + "The **Einstein radius** theta_E is the characteristic angular scale of a strong lens. For a circular lens with the\n", + "source perfectly aligned behind it, it is the radius of the Einstein ring the source forms. More generally (and\n", + "this is the definition **PyAutoLens** uses), it is the radius of the circle enclosing the same area as the\n", + "tangential critical curve:\n", + "\n", + " theta_E = sqrt(A_crit / pi)\n", + "\n", + "sometimes called the \"effective\" Einstein radius, since an elliptical lens's critical curve is not a circle.\n", + "\n", + "Two closed-form results are worth memorising. For a **point mass** M:\n", + "\n", + " theta_E = sqrt( (4 G M / c^2) * (D_ls / (D_l * D_s)) )\n", + "\n", + "and for a **singular isothermal sphere** (SIS) with velocity dispersion sigma_v:\n", + "\n", + " theta_E = 4 pi * (sigma_v / c)^2 * (D_ls / D_s)\n", + "\n", + "The Einstein radius is also the radius within which the *mean* convergence equals exactly one \u2014 so measuring\n", + "theta_E directly measures the projected mass enclosed within it:\n", + "\n", + " M(< theta_E) = pi * theta_E^2 * Sigma_cr\n", + "\n", + "This is why the Einstein radius is celebrated as one of the most robust mass measurements in all of astrophysics:\n", + "the data pin down theta_E via the image separations almost independently of the assumed mass profile, so the\n", + "enclosed Einstein mass is trusted even when the profile's slope is not. (The main caveat, the mass-sheet\n", + "degeneracy, is discussed in the lens modeling chapters.)\n", + "\n", + "`LensCalc` computes the Einstein radius from the area of the tangential critical curve, and the enclosed\n", + "\"Einstein mass\" in angular units (pi * theta_E^2), which Sigma_cr converts to solar masses:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "einstein_radius = lens_calc.einstein_radius_from(grid=grid)\n", + "\n", + "print(f\"Einstein radius (arcsec) = {einstein_radius:.4f}\")\n", + "print(f\"Einstein radius (kpc) = {einstein_radius * kpc_per_arcsec_lens:.4f}\")\n", + "\n", + "einstein_mass_angular = lens_calc.einstein_mass_angular_from(grid=grid)\n", + "einstein_mass_solar = einstein_mass_angular * sigma_cr_arcsec\n", + "\n", + "print(f\"Einstein mass (angular, arcsec^2) = {einstein_mass_angular:.4f}\")\n", + "print(f\"Einstein mass (solar masses) = {einstein_mass_solar:.4e}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Reassuringly, the Einstein radius computed from the critical curve area (~1.6\") matches the `einstein_radius=1.6`\n", + "parameter we gave the `Isothermal` profile \u2014 for isothermal profiles the model parameter *is* the effective\n", + "Einstein radius, which is exactly why **PyAutoLens** parameterizes its mass profiles this way: the non-linear\n", + "search then varies the quantity the data constrain most directly.\n", + "\n", + "As a second check, an `IsothermalSph` (the SIS) has a perfectly circular critical curve, so its recovered Einstein\n", + "radius equals its input parameter even more precisely:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "sis = al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=1.6)\n", + "\n", + "sis_einstein_radius = al.LensCalc.from_mass_obj(mass_obj=sis).einstein_radius_from(\n", + " grid=grid\n", + ")\n", + "\n", + "print(f\"SIS input Einstein radius = 1.6, recovered = {sis_einstein_radius:.4f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Time Delays__\n", + "\n", + "The final piece of the formalism is time. Light rays forming different images of the same source travel different\n", + "paths and through different depths of the lens's gravitational potential, so they arrive at different times. Both\n", + "effects are captured by the **Fermat potential** (or time-delay surface):\n", + "\n", + " phi(theta) = (1/2) * |theta - beta|^2 - psi(theta)\n", + "\n", + "The first term is the **geometric delay** \u2014 the extra path length of a bent ray. The second is the **gravitational\n", + "(Shapiro) delay** \u2014 light slowing as it climbs through the lens's potential. Fermat's principle states that images\n", + "form at the stationary points (minima, maxima and saddle points) of this surface, which is a wonderfully compact\n", + "restatement of the lens equation: grad phi = 0 is exactly beta = theta - alpha(theta).\n", + "\n", + "The observable **time delay** between two images A and B is the difference in their Fermat potentials, scaled by\n", + "the cosmological distances:\n", + "\n", + " Delta t_AB = (1 + z_l) / c * (D_l * D_s / D_ls) * [ phi(theta_A) - phi(theta_B) ]\n", + "\n", + "The distance combination (1 + z_l) * D_l * D_s / D_ls is called the **time-delay distance**, and because it is\n", + "inversely proportional to the Hubble constant, measuring time delays between the images of a variable source (a\n", + "quasar or supernova) turns a strong lens into a cosmological probe.\n", + "\n", + "We only touch on this here \u2014 time delays belong to the modeling of lensed point sources, introduced in tutorial 4\n", + "and covered in depth by the `autolens_workspace` point-source material. For now, we simply plot the Fermat\n", + "potential of our lens system:" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "fermat_potential = lens_calc.fermat_potential_from(grid=grid)\n", + "\n", + "aplt.plot_array(array=fermat_potential, title=\"Fermat Potential (phi)\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Wrap Up__\n", + "\n", + "This was the mathematics lecture of **HowToLens** \u2014 every formal definition deferred by the other tutorials, in one\n", + "place. Lets summarise the chain of quantities, because it has a beautiful logical structure where everything flows\n", + "from the mass distribution and a handful of distances:\n", + "\n", + "- **Distances**: the angular diameter distances D_l, D_s and D_ls set the geometry, convert arcseconds to\n", + " kiloparsecs and define the critical surface density Sigma_cr.\n", + "\n", + "- **Convergence**: kappa = Sigma / Sigma_cr is the dimensionless projected mass; kappa >= 1 marks super-critical\n", + " regions capable of multiple imaging.\n", + "\n", + "- **Deflections and potential**: kappa determines the deflection field alpha (a 2D gravity integral) and the\n", + " lensing potential psi, tied together by alpha = grad psi and kappa = (1/2) laplacian psi.\n", + "\n", + "- **The lens equation**: beta = theta - alpha(theta) maps the image-plane to the source-plane; its\n", + " non-invertibility is why multiple images form.\n", + "\n", + "- **Distortion**: the Jacobian A = I - H decomposes into convergence (isotropic) and shear gamma (anisotropic);\n", + " magnification is mu = 1 / det(A) = 1 / (lambda_t * lambda_r).\n", + "\n", + "- **Critical curves and caustics**: where det(A) = 0, magnification diverges; caustics are their source-plane\n", + " images and set the image multiplicity.\n", + "\n", + "- **Einstein radius**: the area-equivalent radius of the tangential critical curve, whose enclosed mass\n", + " M(< theta_E) = pi * theta_E^2 * Sigma_cr is the most robust measurement strong lensing delivers.\n", + "\n", + "- **Time delays**: the Fermat potential phi = (1/2)|theta - beta|^2 - psi locates images at its stationary points\n", + " and its differences, scaled by the time-delay distance, give observable delays.\n", + "\n", + "You do not need to memorise any of this to continue \u2014 **PyAutoLens** computes every one of these quantities via the\n", + "methods used above \u2014 but you now know what each method is computing and can return to this tutorial whenever a\n", + "symbol needs unpacking.\n", + "\n", + "In the next tutorial, we turn from theory to observation: how telescope optics, exposure times and noise turn the\n", + "pristine images of a tracer into the CCD imaging data we actually observe, and how to simulate such data ourselves.\n", + "\n", + "Finally, a signpost for much later: chapter 3's tutorial 5 on the Bayesian formalism is this tutorial's twin \u2014 the\n", + "equivalent equations lecture for pixelized source reconstruction, deriving the linear inversion and Bayesian\n", + "evidence that underpin chapter 3 just as this tutorial derived the lensing quantities underpinning chapter 1." ] } ], diff --git a/notebooks/chapter_1_introduction/tutorial_6_data.ipynb b/notebooks/chapter_1_introduction/tutorial_6_data.ipynb index 4710193..c1e44f0 100644 --- a/notebooks/chapter_1_introduction/tutorial_6_data.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_6_data.ipynb @@ -18,8 +18,8 @@ "**Exposure Time:** The time the detector collects light, affecting the clarity of the image. Longer exposure times\n", "gather more light, improving the signal-to-noise ratio and creating a clearer image.\n", "\n", - "**Background Sky:** Light from the sky itself, such as distant stars or zodiacal light, adds noise to the image.\n", - "adds additional noise to the image.\n", + "**Background Sky:** Light from the sky itself, such as distant stars or zodiacal light, adds additional noise to\n", + "the image.\n", "\n", "In this tutorial, we'll simulate a strong lens image by applying these real-world effects to the light and mass\n", "profiles and images we created earlier.\n", @@ -30,6 +30,7 @@ "- **Poisson Noise:** We'll add Poisson noise to the image, simulating the randomness in the photon-to-electron conversion process on the CCD.\n", "- **Background Sky:** We'll add a background sky to the image, simulating the light from the sky that adds noise to the image.\n", "- **Simulator:** We'll use the `SimulatorImaging` object to simulate imaging data that includes all these effects.\n", + "- **Other Data Types:** We'll finish with a brief look at interferometer and weak lensing data, two other types of data used to study strong lenses.\n", "\n", "__Contents__\n", "\n", @@ -39,6 +40,8 @@ "- **Background Sky:** The final effect we will consider when simulating imaging data is the background sky.\n", "- **Simulator:** The `SimulatorImaging` object lets us create simulated imaging data while including the effects of.\n", "- **Output:** We will now save these simulated data to `.fits` files, the standard format used by astronomers for.\n", + "- **Interferometer Data:** Radio / sub-mm interferometers like ALMA observe visibilities in the uv-plane rather than images.\n", + "- **Weak Lensing Data:** Weak lensing datasets are catalogues of weakly sheared background galaxy ellipticities.\n", "- **Wrap Up:** Summary of the script and next steps." ] }, @@ -116,7 +119,7 @@ " shape_native=(\n", " 101,\n", " 101,\n", - " ), # The dimensions of the grid, which here is 100 x 100 pixels.\n", + " ), # The dimensions of the grid, which here is 101 x 101 pixels.\n", " pixel_scales=0.1, # The conversion factor between pixel units and arc-seconds.\n", ")" ], @@ -240,7 +243,7 @@ "cell_type": "code", "metadata": {}, "source": [ - "aplt.plot_array(array=psf.kernel, title=\"PSF 2D Kernel\")" + "aplt.plot_array(array=psf.kernel, title=\"PSF 2D Kernel (Log10)\", use_log10=True)" ], "outputs": [], "execution_count": null @@ -296,7 +299,7 @@ "source": [ "aplt.plot_array(array=image, title=\"Tracer Image Before PSF\")\n", "\n", - "aplt.plot_array(array=blurred_image, title=\"\")\n" + "aplt.plot_array(array=blurred_image, title=\"Tracer Image After PSF\")\n" ], "outputs": [], "execution_count": null @@ -328,8 +331,8 @@ "\n", "We also need to consider the units of our image data. Let\u2019s assume that the tracer image is measured in units of \n", "electrons per second ($e^- s^{-1}$), which is standard for CCD imaging data. To simulate the number of electrons \n", - "actually detected in each pixel, we multiply the image by the observation\u2019s exposure time. This conversion changes t\n", - "he units to the total number of electrons collected per pixel over the entire exposure time.\n", + "actually detected in each pixel, we multiply the image by the observation\u2019s exposure time. This conversion changes\n", + "the units to the total number of electrons collected per pixel over the entire exposure time.\n", "\n", "Once the image is converted, we add Poisson noise, simulating the randomness in the photon-to-electron conversion \n", "process. After adding the noise, we convert the image back to units of electrons per second for analysis, as \n", @@ -407,7 +410,7 @@ "\n", "In addition to light from the strong lens, the telescope also picks up light from the sky. This background sky light is \n", "primarily due to two sources: zodiacal light, which is light scattered by interplanetary dust in the solar system, \n", - "and the unresolved emission from distant stars and tracer.\n", + "and the unresolved emission from distant stars and galaxies.\n", "\n", "For our simulation, we'll assume that the background sky has a uniform brightness across the image, measured at \n", "0.1 electrons per second per pixel. The background sky is added to the image before applying the PSF convolution \n", @@ -605,9 +608,8 @@ "We will now save these simulated data to `.fits` files, the standard format used by astronomers for storing images.\n", "Most imaging data from telescopes like the Hubble Space Telescope (HST) are stored in this format.\n", "\n", - "The `dataset_path` specifies where the data will be saved, in this case, in the directory \n", - "`autolens_workspace/dataset/imaging/howtolens/`, which contains many example images distributed with \n", - "the `autolens_workspace`.\n", + "The `dataset_path` specifies where the data will be saved, in this case the `dataset/imaging/howtolens/`\n", + "directory of the HowToLens repository (paths are relative to the repository root, from which scripts are run).\n", "\n", "The files are named `data.fits`, `noise_map.fits`, and `psf.fits`, and will be used in the next tutorial." ] @@ -630,6 +632,115 @@ "outputs": [], "execution_count": null }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Interferometer Data__\n", + "\n", + "CCD imaging is not the only type of data used to study strong lenses. Radio and sub-mm interferometers, like the\n", + "Atacama Large Millimeter Array (ALMA) and the Jansky Very Large Array (JVLA), observe strong lenses at wavelengths\n", + "where a CCD cannot.\n", + "\n", + "An interferometer does not observe an image of the lens. Each pair of antennas in the array measures a \"visibility\",\n", + "a Fourier component of the sky brightness, at a point in what is called the \"uv-plane\" set by the separation of the\n", + "two antennas. The dataset is therefore a set of complex visibilities in Fourier space, not a 2D image, and its\n", + "noise properties are very different from those of CCD data \u2014 there is no PSF convolution, Poisson noise or\n", + "background sky; instead each visibility has Gaussian noise.\n", + "\n", + "One could Fourier transform the visibilities into an image (called a \"dirty image\") and fit that, but the transform\n", + "correlates the noise between pixels, making the fit statistically incorrect. **PyAutoLens** therefore fits lens\n", + "models directly in visibility space: the tracer's image is evaluated in real space on a grid (defined by a\n", + "real-space mask), Fourier transformed to the uv-plane and compared with the observed visibilities there.\n", + "\n", + "Below, we load a simulated interferometer dataset (creating it first via the `scripts/simulator/interferometer.py`\n", + "script if it does not exist on your hard-disk, using the same auto-simulation idiom as later tutorials) and plot\n", + "its dirty images \u2014 the closest an interferometer dataset comes to the CCD images we simulated above.\n", + "\n", + "HowToLens will not cover interferometry any further than this. The lecture series teaches lensing using CCD\n", + "imaging, and everything you learn transfers to visibility-space fitting. If you need to model interferometer data,\n", + "go to the `autolens_workspace/scripts/interferometer` package, which is the dedicated resource for uv-plane lens\n", + "modeling." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_path = Path(\"dataset\") / \"interferometer\" / \"simple\"\n", + "\n", + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/interferometer.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "real_space_mask = al.Mask2D.circular(\n", + " shape_native=(100, 100),\n", + " pixel_scales=0.1,\n", + " radius=3.0,\n", + ")\n", + "\n", + "dataset = al.Interferometer.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " uv_wavelengths_path=dataset_path / \"uv_wavelengths.fits\",\n", + " real_space_mask=real_space_mask,\n", + " transformer_class=al.TransformerDFT,\n", + ")\n", + "\n", + "aplt.subplot_interferometer_dirty_images(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Weak Lensing Data__\n", + "\n", + "There is one more type of lensing data to glimpse before we move on: weak lensing.\n", + "\n", + "A weak lensing dataset looks nothing like the images above. Instead of the spectacular arcs and rings of strong\n", + "lensing, it is a *catalogue* of many background galaxies, each with a measured ellipticity \u2014 a shear \u2014 at its\n", + "(y, x) position on the sky. Each galaxy is only weakly sheared by the foreground mass, a distortion far too small\n", + "to see in any single galaxy, and the plot below shows this: a field of short line segments tracing the subtle,\n", + "coherent stretching of the background galaxy population, rather than any arc-like feature.\n", + "\n", + "We load a simulated weak lensing shear catalogue (again auto-simulating it, via `scripts/simulator/weak_lensing.py`,\n", + "if it is not on your hard-disk) and plot it, just so you have seen what this data looks like.\n", + "\n", + "That is deliberately all we will say for now \u2014 this glimpse is foreshadowing. Weak lensing gets a full treatment in\n", + "the final tutorial of chapter 4, which describes what these shear measurements are, why they are made far from the\n", + "lens centre and how they are fitted; until then, we defer all further description to that tutorial." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_path = Path(\"dataset\") / \"weak_lensing\" / \"simple\"\n", + "\n", + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/weak_lensing.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.from_json(file_path=dataset_path / \"dataset.json\")\n", + "\n", + "aplt.subplot_weak_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, { "cell_type": "markdown", "metadata": {}, @@ -641,7 +752,7 @@ "\n", "Let's summarise what we've covered:\n", "\n", - "- **Optics Blurring**: The optics of a telescope blur the light from tracer, reducing the clarity and sharpness of \n", + "- **Optics Blurring**: The optics of a telescope blur the light of the tracer, reducing the clarity and sharpness of\n", "the images.\n", "\n", "- **Poisson Noise**: The process of converting photons to electrons on a CCD introduces Poisson noise, which is random \n", diff --git a/notebooks/chapter_1_introduction/tutorial_7_fitting.ipynb b/notebooks/chapter_1_introduction/tutorial_7_fitting.ipynb index d0e98d4..0e869e0 100644 --- a/notebooks/chapter_1_introduction/tutorial_7_fitting.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_7_fitting.ipynb @@ -7,7 +7,7 @@ "Tutorial 7: Fitting\n", "===================\n", "\n", - "In previous tutorials, we used light profiles to create simulated images of tracer and visualized how these images\n", + "In previous tutorials, we used light profiles to create simulated images of a tracer and visualized how these images\n", "would appear when captured by a CCD detector on a telescope like the Hubble Space Telescope.\n", "\n", "However, this simulation process is the reverse of what astronomers typically do when analyzing real data. Usually,\n", @@ -38,7 +38,9 @@ "\n", "__Contents__\n", "\n", - "- **Dataset & Mask:** Standard set up of the dataset and mask that is fitted.\n", + "- **Dataset:** Load the imaging dataset that we previously simulated, consisting of the image, noise map, and PSF.\n", + "- **Dataset Auto-Simulation:** Create the dataset by running the tutorial 6 script if it is not on your hard-disk.\n", + "- **Mask:** Apply a mask to the data, excluding regions with low signal-to-noise ratios from the analysis.\n", "- **Masked Grid:** In tutorials 1 and 2, we emphasized that the `Grid2D` object is crucial for evaluating a lens's.\n", "- **Fitting:** Fit the lens model to the dataset and inspect the results.\n", "- **Incorrect Fit:** In the previous section, we successfully created and fitted a lens model to the image data.\n", @@ -88,6 +90,8 @@ "cell_type": "code", "metadata": {}, "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", "\n", "# from autolens import setup_notebook; setup_notebook()\n", "\n", @@ -108,11 +112,11 @@ "We begin by loading the imaging dataset that we will use for fitting in this tutorial. This dataset is identical to the \n", "one we simulated in the previous tutorial, representing how a lens would appear if captured by a CCD camera.\n", "\n", - "In the previous tutorial, we saved this dataset as .fits files in the `autolens_workspace/dataset/imaging/howtolens` \n", - "folder. The `.fits` format is commonly used in astronomy for storing image data along with metadata, making it a\n", - "standard for CCD imaging.\n", + "In the previous tutorial, we saved this dataset as .fits files in the `dataset/imaging/howtolens` folder of the\n", + "HowToLens repository. The `.fits` format is commonly used in astronomy for storing image data along with metadata,\n", + "making it a standard for CCD imaging.\n", "\n", - "The `dataset_path` below specifies where these files are located: `autolens_workspace/dataset/imaging/howtolens/`." + "The `dataset_path` below specifies where these files are located: `dataset/imaging/howtolens/`." ] }, { @@ -198,7 +202,7 @@ "source": [ "__Mask__\n", "\n", - "The signal-to-noise map of the image highlights areas where the signal (light from the lens and source tracer) \n", + "The signal-to-noise map of the image highlights areas where the signal (light from the lens and source galaxies)\n", "is detected above the background noise. Values above 3.0 indicate regions where the light is detected with a \n", "signal-to-noise ratio of at least 3, while values below 3.0 are dominated by noise, where the light is not \n", "clearly distinguishable.\n", @@ -744,7 +748,7 @@ "source": [ "Another quantity that contributes to our final assessment of the goodness-of-fit is the `noise_normalization`.\n", "\n", - "The `noise_normalization` is computed as the logarithm of the sum of squared noise values in our data: \n", + "The `noise_normalization` is computed by summing, over every pixel, the logarithm of 2 pi times the squared noise value:\n", "\n", "\\[\n", "\\text{{noise\\_normalization}} = \\sum \\log(2 \\pi \\text{{noise\\_map}}^2)\n", @@ -851,7 +855,7 @@ "These metrics are standard ways to quantify the quality of a model fit. They are applicable not only to 1D data but \n", "also to more complex data structures like 2D images, 3D data cubes, or any other multidimensional datasets.\n", "\n", - "__Incorrect Fit___\n", + "__Incorrect Fit__\n", "\n", "In the previous section, we successfully created and fitted a lens model to the image data, resulting in an \n", "excellent fit. The residual map and chi-squared map showed no significant discrepancies, indicating that the \n", @@ -980,7 +984,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It is now evident that this model provides a terrible fit to the data. The tracer do not resemble a plausible \n", + "It is now evident that this model provides a terrible fit to the data. The tracer does not resemble a plausible\n", "representation of our simulated strong lens dataset, which we already anticipated given that we generated the data ourselves!\n", "\n", "As expected, the log likelihood has dropped dramatically with this poorly fitting model." @@ -1011,8 +1015,8 @@ "\n", "In practice, however, we don't know the \"true\" model. For example, we might have an image of a strong lens observed with \n", "the Hubble Space Telescope, but the values for parameters like its `einstein_radius` and others are \n", - "unknown. The process of determining the best-fit model is called model fitting, and it is the main topic of \n", - "Chapter 2 of *HowToGalaxy*.\n", + "unknown. The process of determining the best-fit model is called model fitting, and it is the main topic of\n", + "Chapter 2 of **HowToLens**.\n", "\n", "To conclude this section, let's perform a basic, hands-on model fit to develop some intuition about how we can find \n", "the best-fit model. We'll start by loading a simple dataset that was simulated without any lens light, using \n", diff --git a/notebooks/chapter_1_introduction/tutorial_8_summary.ipynb b/notebooks/chapter_1_introduction/tutorial_8_summary.ipynb index f777e5e..89a9ba1 100644 --- a/notebooks/chapter_1_introduction/tutorial_8_summary.ipynb +++ b/notebooks/chapter_1_introduction/tutorial_8_summary.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 9: Summary\n", + "Tutorial 8: Summary\n", "===================\n", "\n", "In this chapter, we have learnt that:\n", diff --git a/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb index cafc329..afa7d16 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb @@ -4,8 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 2: Prior Passing\n", - "=========================\n", + "Tutorial 10: Prior Passing\n", + "==========================\n", "\n", "In the previous tutorial, we used non-linear search chaining to break the model-fitting procedure down into two\n", "non-linear searches. This used an initial search to fit a simple lens model, whose results were used to tune and\n", @@ -17,13 +17,15 @@ "\n", "__Contents__\n", "\n", - "- **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where.\n", + "- **Initial Setup:** Load the same strong lensing data as the previous tutorial.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Model:** Compose the lens model fitted to the data.\n", "- **Search:** Configure the non-linear search used to fit the model.\n", - "- **Prior Passing:** We are now going to use the prior passing API to pass these results, in a way which does not.\n", + "- **Result (Search 1):** The results of search 1, which are used for prior passing.\n", + "- **Prior Passing:** Use the prior passing API to pass the results of search 1 without writing out values manually.\n", "- **Result:** Overview of the results of the model-fit.\n", "- **Wrap Up:** Summary of the script and next steps.\n", - "- **Detailed Explanation Of Prior Passing:** To end, I provide a detailed overview of how prior passing works and illustrate tools that can be.\n", + "- **Detailed Explanation Of Prior Passing:** A detailed overview of how prior passing works and tools to customize it.\n", "- **EXAMPLE:** Lets go through an example using a real parameter." ] }, @@ -221,11 +223,11 @@ "metadata": {}, "source": [ "search_1 = af.Nautilus(\n", - " path_prefix=Path(\"howtolens\", \"chapter_3\"),\n", - " name=\"tutorial_1_search_chaining_1\",\n", + " path_prefix=Path(\"howtolens\", \"chapter_2\"),\n", + " name=\"tutorial_9_search_chaining_1\",\n", " unique_tag=dataset_name,\n", " n_live=100,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis_1 = al.AnalysisImaging(dataset=dataset)\n", @@ -319,8 +321,8 @@ "\n", "We can use a special prior passing method to do this, called `take_attributes`. This scans the `Exponential`\n", "passed to the `take_attributes` method for all parameters which have the same name as the `Sersic` model,\n", - "and if their names are the same it passes their prior as a `model` (like we did above). Thus, it will locate all 6\n", - "parameters in common between the two profiles (centre_, ell_comps, intensity, effective_radius) and pass those,\n", + "and if their names are the same it passes their prior as a `model` (like we did above). Thus, it will locate the\n", + "parameters in common between the two profiles (`centre`, `ell_comps`, `effective_radius`) and pass those,\n", "leaving the `sersic_index`'s priors as the default values.\n", "\n", "The `take_attributes` method is used in many examples of prior passing, when we pass a simpler parameterization of a\n", @@ -389,17 +391,17 @@ "metadata": {}, "source": [ "search_2 = af.Nautilus(\n", - " path_prefix=Path(\"howtolens\", \"chapter_3\"),\n", - " name=\"tutorial_2_search_chaining_2\",\n", + " path_prefix=Path(\"howtolens\", \"chapter_2\"),\n", + " name=\"tutorial_10_prior_passing_2\",\n", " unique_tag=dataset_name,\n", " n_live=100,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis_2 = al.AnalysisImaging(dataset=dataset)\n", "\n", "print(\n", - " \"The non-linear search has begun running - checkout the workspace/output/5_chaining_searches\"\n", + " \"The non-linear search has begun running - checkout the output/howtolens/chapter_2\"\n", " \" folder for live output of the results, images and lens model.\"\n", " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", ")\n", @@ -451,18 +453,19 @@ "source": [ "__Wrap Up__\n", "\n", - "We will expand on the prior passing API in the following tutorials. The main thing to note is that we can pass \n", - "entire profiles or galaxies using prior passing, if their model does not change (which for the bulge, mass and \n", - "source_bulge above, was not true). The API to pass a whole profile or galaxy is as follows:\n", - " \n", + "This tutorial has covered the core of the prior passing API; the chaining examples in the `autolens_workspace`\n", + "(e.g. `autolens_workspace/scripts/guides/modeling/chaining.py`) expand on it further. The main thing to note is that\n", + "we can pass entire profiles or galaxies using prior passing, if their model does not change (which for the bulge,\n", + "mass and source_bulge above, was not true). The API to pass a whole profile or galaxy is as follows:\n", + "\n", " bulge = result_1.model.galaxies.lens.bulge\n", " lens = result_1.model.galaxies.lens\n", " source = result_1.model.galaxies.source\n", - " \n", + "\n", "We can also pass priors using an `instance` instead of a `model`. When an `instance` is used, the maximum likelihood\n", - "parameter values are passed as fixed values that are therefore not fitted for nby the non-linear search (reducing its\n", - "dimensionality). We will use this in the next tutorial to fit the lens light, fix it to the best-fit model in a second\n", - "search, and then go on to fit it as a model in the final search.\n", + "parameter values are passed as fixed values that are therefore not fitted for by the non-linear search (reducing its\n", + "dimensionality). Chained fits often use this to fix the lens light to the best-fit model of an early search, reducing\n", + "the dimensionality of the searches that follow \u2014 the workspace's chaining examples show this in action.\n", " \n", "Lets now think about how priors are passed. Checkout the `model.info` file of the second search of this tutorial. The \n", "parameters do not use the default priors we saw in search 1 (which are typically broad UniformPriors). Instead, \n", @@ -472,7 +475,7 @@ " - The sigma values are specified in the `width_modifier` field of the profile's entry in the `priors.yaml' config \n", " file (we will discuss why this is used in a moment).\n", "\n", - "Like the manual `GaussianPrior`'s that were used in tutorial 1, the prior passing API sets up the prior on each \n", + "Like the manual `GaussianPrior`'s that were used in the previous tutorial, the prior passing API sets up the prior on each\n", "parameter with a `GaussianPrior` centred on the high likelihood regions of parameter space!\n", "\n", "__Detailed Explanation Of Prior Passing__\n", diff --git a/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb index 496fe86..2d92fdd 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb @@ -4,27 +4,41 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 6: SLaM\n", - "================\n", + "Tutorial 11: SLaM\n", + "=================\n", "\n", - "You are now familiar with pipelines, in particular how we use them to break-down the lens modeling procedure\n", - "to provide more efficient and reliable model-fits. In the previous tutorials, you learnt how to write your own\n", - "pipelines, which can fit whatever lens model is of particular interest to your scientific study.\n", + "In the previous two tutorials, we learnt how search chaining breaks a lens model-fit into a sequence of simpler\n", + "non-linear searches, and how prior passing carries the results of each search into the next. Together, they give us\n", + "the flexibility to juggle the dimensionality, priors and settings of each search \u2014 the three drivers of run-time we\n", + "met in tutorial 8 \u2014 whilst still fitting a complex and realistic lens model at the end.\n", "\n", - "However, for most lens models there are standardized approaches one can take to fitting them. For example, as we saw in\n", - "tutorial 3 of this chapter, an effective approach is to fit a model for the lens's light followed by a model for its\n", - "mass and the source. It would be wasteful for all **PyAutoLens** users to have to write their own pipelines to\n", - "perform the same tasks.\n", + "You could now write your own chained sequences of searches, tailored to whatever lens model is of particular interest\n", + "to your scientific study. However, for most lens models there are standardized approaches one can take to fitting\n", + "them. For example, an effective approach is to first fit a model for the lens's light, then a model for its mass and\n", + "the source. It would be wasteful for all **PyAutoLens** users to have to write their own chained pipelines to perform\n", + "the same tasks.\n", "\n", - "For this reason, the `autolens_workspace` comes with a number of standardized pipelines, which fit common lens models\n", - "in ways we have tested are efficient and robust. These pipelines can be found the `chaining/pipelines` packages and\n", - "can be easily adapted to fit lens models with a range of different parameterizations and assumptions.\n", + "For this reason, the `autolens_workspace` comes with standardized chained pipelines, which fit common lens models in\n", + "ways we have tested are efficient and robust. This closing tutorial does not run any code; it is a pointer to where\n", + "that material lives, so you know where to go once you want to scale your lens modeling up.\n", + "\n", + "__Contents__\n", + "\n", + "- **Search Chaining In The Workspace:** Where the workspace documents the chaining API introduced in tutorials 9 and 10.\n", + "- **SLaM (Source, Light and Mass):** The standardized pipelines that chain searches for you.\n", + "- **Wrap Up:** Choosing between single searches, your own chained fits and the SLaM pipelines.\n", + "\n", + "__Search Chaining In The Workspace__\n", + "\n", + "The chaining and prior passing API we introduced in tutorials 9 and 10 is documented in full in the workspace guide\n", + "`autolens_workspace/scripts/guides/modeling/chaining.py`. It covers the concise model composition API used in chained\n", + "fits, prior passing and the tools for customizing it, and how chaining is used in practice for automated lens\n", + "modeling.\n", "\n", "__SLaM (Source, Light and Mass)__\n", "\n", - "A second set of template pipelines, called the **SLaM** (Source, Light and Mass) pipelines can be found in the folder\n", - "`autolens_workspace/slam`. These are similar in design to the pipelines, but are composed of a specific sequence of\n", - "pipelines:\n", + "The workspace's standardized pipelines are called the **SLaM** (Source, Light and Mass) pipelines. They are composed\n", + "of a specific sequence of chained searches:\n", "\n", " - `Source`: A pipeline that focuses on producing a robust model for the source's light, using simpler models for the\n", " lens's light and mass.\n", @@ -35,17 +49,26 @@ " - `Mass`: A pipeline that fits a complex lens mass model, benefitting from the good models for the lens's light and\n", " source.\n", "\n", - "For fitting very complex lens models, for example ones which decompose its mass into its stellar and dark components,\n", + "For fitting very complex lens models, for example ones which decompose the mass into its stellar and dark components,\n", "the **SLaM** pipelines have been carefully crafted to do this in a reliable and automated way that is still efficient.\n", - "The **SLaM** pipelines also make fitting many different models to a single dataset efficient, as they reuse the results\n", - "of earlier searches (e.g. in the Source pipeline) to fit different models in the `Light` and `Mass` pipelines for the\n", - "lens's light and mass.\n", + "They also make fitting many different models to a single dataset efficient, as they reuse the results of earlier\n", + "searches (e.g. in the Source pipeline) to fit different models in the `Light` and `Mass` pipelines for the lens's\n", + "light and mass.\n", + "\n", + "The canonical introduction is `autolens_workspace/scripts/guides/modeling/slam_start_here.py`, which walks through the\n", + "pipeline structure end-to-end. Runnable SLaM examples then live as `slam.py` scripts inside the feature folders of\n", + "each topic, for example `autolens_workspace/scripts/imaging/features/pixelization/slam.py` and\n", + "`autolens_workspace/scripts/imaging/features/multi_gaussian_expansion/slam.py`.\n", "\n", "__Wrap Up__\n", "\n", - "Whether you should use individual searches, pipelines, The SLaM pipelines or write your own model-fitting script\n", - "depends on the scope of your scientific analysis. I would advise you begin by trying to adapting the scripts in the\n", - "`autolens_workspace`to fit your data, and also try using the SLaM pipelines once you are a confident **PyAutoLens** user." + "Whether you should use individual searches, your own chained fits, the SLaM pipelines or write your own model-fitting\n", + "script depends on the scope of your scientific analysis. I would advise you begin by trying to adapt the scripts in\n", + "the `autolens_workspace` to fit your data, and also try using the SLaM pipelines once you are a confident\n", + "**PyAutoLens** user.\n", + "\n", + "This tutorial concludes the lens modeling chapter. In the next chapter, we introduce pixelizations, which reconstruct\n", + "the source galaxy on a pixel-grid rather than with light profiles." ] }, { diff --git a/notebooks/chapter_2_lens_modeling/tutorial_1_non_linear_search.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_1_non_linear_search.ipynb index c4c2fb4..1765a4c 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_1_non_linear_search.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_1_non_linear_search.ipynb @@ -9,7 +9,7 @@ "\n", "The starting point for most scientific analysis conducted by an Astronomer is that they have observations of a strong lens\n", "using a telescope like the Hubble Space Telescope, and seek to learn about the lens galaxy, source galaxy and the\n", - "Universe from these observations. With **PyAutoLen**, we seek to learn about the lenses may and ray-tracing, asking questions like\n", + "Universe from these observations. With **PyAutoLens**, we seek to learn about the lens's mass and ray-tracing, asking questions like\n", "how big is the lens galaxy and what does the unlensed source galaxy look like?\n", "\n", "To answer these questions, we must therefore fit the dataset with a lens model, where the lens model defines the\n", @@ -32,7 +32,7 @@ "and begin learning about real galaxies in the Universe.\n", "\n", "This first tutorial introduces a number of key statistical concepts that are fundamental to understanding how\n", - "model-fitting works, both for **PyAutoLen** and in general.\n", + "model-fitting works, both for **PyAutoLens** and in general.\n", "\n", "__Overview__\n", "\n", @@ -45,22 +45,27 @@ " model instance to the data.\n", "\n", "- Fit datasets with different non-linear searches, including a maximum likelihood estimator (MLE),\n", - " Markok Chain Monte Carlo (MCMC) and nested sampling.\n", + " Markov Chain Monte Carlo (MCMC) and nested sampling.\n", "\n", "__Contents__\n", "\n", "- **Overview:** In this tutorial, we will use a non-linear search to fit a lens model to simulated imaging of.\n", "- **Parameter Space:** In mathematics, a function is defined by its parameters, which map inputs to outputs.\n", + "- **Non-Linear Search:** The method used to fit the model to the data, by sampling the non-linear parameter space.\n", "- **Search Types:** There are different types of non-linear searches, each of which explores parameter space in a.\n", - "- **Deeper Background:** **The descriptions of how searches work in this example are simplfied and phoenomenological and do.\n", + "- **Deeper Background:** **The descriptions of how searches work in this example are simplified and phenomenological and do.\n", "- **PyAutoFit:** Modeling uses the probabilistic programming language.\n", "- **Initial Setup:** Let's first load the `Imaging` dataset, which we will use to fit a model with a non-linear search.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", "- **Model:** Compose the lens model fitted to the data.\n", "- **Priors:** When we examine the `.info` of our model, we notice that each parameter (like `centre`.\n", "- **Analysis:** Create the Analysis object that defines how the model is fitted to the data.\n", "- **Searches:** To perform a non-linear search, we create an instance of a `NonLinearSearch` object.\n", + "- **Maximum Likelihood Estimation (MLE):** The simplest search type, which moves \"up\" the likelihood gradient.\n", + "- **Markov Chain Monte Carlo (MCMC):** Walkers explore parameter space, mapping out the likelihood surface.\n", "- **Nested Sampling:** **Nested Sampling** is an advanced method for model-fitting that excels in handling complex models.\n", + "- **What is The Best Search To Use?:** Choosing between MLE, MCMC and nested sampling for lens modeling.\n", "- **Wrap Up:** Summary of the script and next steps.\n", "\n", "__Parameter Space__\n", @@ -83,8 +88,8 @@ "This defines a parameter space in three dimensions, representing the relationships between \\(x\\), \\(y\\), \\(z\\),\n", "and the output \\(f(x, y, z)\\).\n", "\n", - "This concept of parameter space is closely related to how we approach model-fitting. For instance, in chapter 1, w\n", - "e created instances of `Galaxy` objects with\n", + "This concept of parameter space is closely related to how we approach model-fitting. For instance, in chapter 1,\n", + "we created instances of `Galaxy` objects with\n", "parameters like \\( (\\text{`centre_0`}, \\text{`centre_1`}, \\text{`ell_comps_0`}, \\text{`ell_comps_1`}, \\text{`intensity`}, \\text{`effective_radius`}, \\text{`sersic_index`}) \\).\n", "These parameters were used to fit data and compute a log likelihood.\n", "\n", @@ -149,7 +154,7 @@ "\n", "__Deeper Background__\n", "\n", - "**The descriptions of how searches work in this example are simplfied and phoenomenological and do not give a full\n", + "**The descriptions of how searches work in this example are simplified and phenomenological and do not give a full\n", "description of how they work at a deep statistical level. The goal is to provide you with an intuition for how to use\n", "them and when different searches are appropriate for different problems. Later tutorials will provide a more formal\n", "description of how these searches work.**\n", @@ -226,11 +231,11 @@ "[PyAutoFit](https://github.com/PyAutoLabs/PyAutoFit), an open-source project that allows complex model\n", "fitting techniques to be straightforwardly integrated into scientific modeling software. \n", "\n", - "**PyAutoFit** is actually a spin-off project of **PyAutoLen**. whereby we found that the statistic techniques and\n", + "**PyAutoFit** is actually a spin-off project of **PyAutoLens**, whereby we found that the statistical techniques and\n", "methods we applied to model galaxies could be used in a more general setting to many different scientific \n", "problems. Check it out if you are interested in developing your own software to perform advanced model-fitting!\n", "\n", - "We import this library separately from **PyAutoLen**." + "We import this library separately from **PyAutoLens**." ] }, { @@ -250,12 +255,12 @@ "\n", "Let's first load the `Imaging` dataset, which we will use to fit a model with a non-linear search.\n", "\n", - "The strong lens in this image was generated using an `Isothermal` lens mass profile and `SersicCore` source light profile, \n", + "The strong lens in this image was generated using an `IsothermalSph` lens mass profile and `ExponentialCoreSph` source light profile,\n", "which we'll also use in our model fitting in this tutorial. This means the model we are going to fit is identical to \n", "the one used to simulate the data, allowing us to assess the fitting process under controlled conditions.\n", "\n", - "The dataset, as well as all subsequent datasets used in future tutorials, is stored in \n", - "the `autolens_workspace/dataset/imaging` folder. " + "The dataset, as well as all subsequent datasets used in future tutorials, is stored in the HowToLens\n", + "repository's `dataset/imaging` folder (simulated at runtime by the simulator scripts, as shown below)." ] }, { @@ -442,10 +447,10 @@ "been chosen to be broad, and contain the breadth of plausible solutions one should expect when fitting light and mass\n", "profiles of a real galaxy.\n", "\n", - "For instance, consider the `centre` parameter of our `IsothermalSph` light profile. In theory, it could take on any value from \n", - "negative to positive infinity. However, imaging datasets are typically reduced such that the galaxy centre is close \n", - "to (0.0\", 0.0\"). Therefore, a `TruncatedGaussianPrior` with `mean=0.0` and `sigma=0.1` is a good description of where the\n", - "galaxy `centre` is. \n", + "For instance, consider the `centre` parameter of our `IsothermalSph` mass profile. In theory, it could take on any value from\n", + "negative to positive infinity. However, imaging datasets are typically reduced such that the galaxy centre is close\n", + "to (0.0\", 0.0\"). Therefore, a `GaussianPrior` with `mean=0.0` and `sigma=0.1` is a good description of where the\n", + "galaxy `centre` is.\n", "\n", "If the galaxy had a different centre in the dataset, we would change the mean of the prior to reflect this.\n", "However, in general, we advise all galaxy images are reduced such that the galaxy is at (0.0\", 0.0\").\n", @@ -764,7 +769,7 @@ "one, other walkers will explore other regions of parameter space and encourage the walker in local maxima to move \n", "away from it and head towards higher likelihood regions.\n", "\n", - "In the example below, we use the `Emcee` MCMC search to fit the strong lens The search starts with walkers \n", + "In the example below, we use the `Emcee` MCMC search to fit the strong lens. The search starts with walkers\n", "initialized in a \"ball\" around the center of the model\u2019s priors, similar to the MLE search that failed earlier." ] }, @@ -807,7 +812,7 @@ "\n", "A major advantage of MCMC is that it provides estimates of parameter uncertainties by \"mapping out\" the likelihood \n", "surface, unlike MLE, which only finds the maximum likelihood solution. These error estimates are accessible in \n", - "the `result.info` string and through the `result.samples` object, which is explained fully in tutorial 5.\n", + "the `result.info` string and through the `result.samples` object, which is explained fully in tutorial 7.\n", "\n", "While a good starting point wasn't necessary for this simple model, it becomes essential for efficiently mapping the \n", "likelihood surface in more complex models with many parameters. The code below shows an MCMC fit using a good starting \n", @@ -902,7 +907,7 @@ "search = af.Nautilus(\n", " n_live=100,\n", " n_batch=50, # Explained in next tutorial\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")" ], "outputs": [], @@ -979,12 +984,12 @@ "When approaching a model-fitting problem, it's usually advisable to try various search methods to find the most \n", "effective one. \n", "\n", - "However, after extensive testing within **PyAutoLen**, a clear recommendation has emerged for fitting strong lens models. \n", + "However, after extensive testing within **PyAutoLens**, a clear recommendation has emerged for fitting strong lens models.\n", "The nested sampling method `Nautilus` consistently proves to be the most effective. It requires fewer iterations than \n", "MCMC or MLE methods (when no starting point is used), provides robust sampling even for complex models, includes a \n", "built-in stopping criterion, and delivers reliable error estimates.\n", "\n", - "All examples in the `autolens_workspace` use the `Nautilus` search, and future tutorials in the **HowToGalaxy** \n", + "All examples in the `autolens_workspace` use the `Nautilus` search, and future tutorials in the **HowToLens**\n", "series will also use it. We strongly recommend using `Nautilus` from now on.\n", "\n", "That said, MLE and MCMC searches can still be effective, and you're encouraged to experiment with them. If you have \n", diff --git a/notebooks/chapter_2_lens_modeling/tutorial_2_practicalities.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_2_practicalities.ipynb index 8952443..16f6abf 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_2_practicalities.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_2_practicalities.ipynb @@ -24,6 +24,7 @@ "\n", "- **PyAutoFit:** Modeling uses the probabilistic programming language.\n", "- **Initial Setup:** Lets first load the `Imaging` dataset we'll fit a model with using a non-linear search.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", "- **Model:** Compose the lens model fitted to the data.\n", "- **Search:** Configure the non-linear search used to fit the model.\n", @@ -32,6 +33,7 @@ "- **Analysis:** Create the Analysis object that defines how the model is fitted to the data.\n", "- **VRAM Use:** When running AutoLens with JAX on a GPU, the analysis must fit within the GPU\u2019s available VRAM.\n", "- **Run Times:** Profiling the expected run time of the model-fit.\n", + "- **Model-Fit:** Begin the model-fit by passing the model and analysis to the search.\n", "- **Result Info:** A concise readable summary of the results is given by printing its `info` attribute.\n", "- **Output Folder:** Now checkout the `autolens_workspace/output` folder.\n", "- **Unique Identifier:** In the output folder, you will note that results are in a folder which is a collection of random.\n", @@ -52,7 +54,7 @@ "\n", "The ideal number of live points depends on model complexity. More parameters generally require more live points, but\n", "the default of 200 is sufficient for most lens models. Lower values can still yield reliable results, particularly\n", - "for simpler models. For this example (7 parameters), we reduce the live points to 100 to speed up runtime without\n", + "for simpler models. For this example (6 parameters), we reduce the live points to 100 to speed up runtime without\n", "compromising accuracy.\n", "\n", "Tuning non-linear search settings (e.g., the number of live points) to match model complexity is essential. We aim\n", @@ -60,8 +62,8 @@ "is excessive.\n", "\n", "In practice, the optimal number of live points is often found through trial and error, guided by summary statistics\n", - "on how well the search is performing, which we\u2019ll cover below. For this single Sersic model with a linear light\n", - "profile, 80 live points is sufficient to achieve reliable results.\n", + "on how well the search is performing, which we\u2019ll cover below. For the simple model fitted here, with a linear light\n", + "profile, 100 live points is sufficient to achieve reliable results.\n", "\n", "__Iterations Per Update__\n", "\n", @@ -71,8 +73,8 @@ "Depending on how long it takes for the model to be fitted to the data (see discussion about run times below),\n", "this can take up a large fraction of the run-time of the non-linear search.\n", "\n", - "For this fit, the fit is very fast, thus we set a high value of `iterations_per_quick_update=10000` to ensure these updates\n", - "so not slow down the overall speed of the model-fit.\n", + "For this fit, the fit is very fast, thus we set a high value of `iterations_per_quick_update=2500` to ensure these updates\n", + "do not slow down the overall speed of the model-fit.\n", "\n", "**If the iteration per update is too low, the model-fit may be significantly slowed down by the time it takes to\n", "output results and visualization frequently to hard-disk. If your fit is consistent displaying a log saying that it\n", @@ -273,15 +275,31 @@ "\n", "model = af.Collection(galaxies=af.Collection(lens=lens, source=source))\n", "\n", - "print(model.info)\n", + "print(model.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Search__\n", "\n", + "We again use the `Nautilus` non-linear search, with settings chosen following the Search Settings discussion above." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ "search = af.Nautilus(\n", " path_prefix=Path(\"howtolens\") / \"chapter_2\",\n", " name=\"tutorial_2_practicalities\",\n", " unique_tag=dataset_name,\n", " n_live=100,\n", " n_batch=50, # GPU batching and VRAM use explained in VRAM section below.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")" ], "outputs": [], @@ -331,7 +349,7 @@ "The method below prints the VRAM usage estimate for the analysis and model with the specified batch size,\n", "it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits.\n", "\n", - "For a MGE model with the low resolution dataset fitted in this example VRAM use is relatively low (~0.027GB) For other \n", + "For the simple model and low resolution dataset fitted in this example VRAM use is relatively low (~0.027GB). For other\n", "models (e.g. pixelized sources) and higher resolution datasets it can be much higher (> 1GB going beyond 10GB)." ] }, @@ -468,9 +486,9 @@ "\n", "__Output Folder Contents__\n", "\n", - "Now this is running you should checkout the `autolens_workspace/output` folder. This is where the results of the \n", - "search are written to hard-disk (in the `start_here` folder), where all outputs are human readable (e.g. as .json,\n", - ".csv or text files).\n", + "Now this is running you should checkout the `output` folder. This is where the results of the\n", + "search are written to hard-disk (in the `tutorial_2_practicalities` folder), where all outputs are human readable\n", + "(e.g. as .json, .csv or text files).\n", "\n", "As the fit progresses, results are written to the `output` folder on the fly using the highest likelihood model found\n", "by the non-linear search so far. This means you can inspect the results of the model-fit as it runs, without having to\n", @@ -553,7 +571,7 @@ "The following are examples of other practicalities which I will document fully in this example script in the future,\n", "but so far have no found the time:\n", "\n", - "- `config`: The files in `autogalaxy_workspace/config` which control many aspects of how PyAutoGalaxy runs,\n", + "- `config`: The files in the `config` folder which control many aspects of how **PyAutoLens** runs,\n", " including visualization, the non-linear search settings.\n", "\n", "- `config/priors`: Folder containing the default priors on all model components.\n", diff --git a/notebooks/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.ipynb index fd5c482..db3b5f5 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_3_realism_and_complexity.ipynb @@ -30,8 +30,10 @@ "__Contents__\n", "\n", "- **Initial Setup:** we'll use new strong lensing data, where.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", "- **Model:** Compose the lens model fitted to the data.\n", + "- **Search + Analysis:** Create the non-linear search and analysis used to fit the model.\n", "- **Run Time:** Profiling the expected run time of the model-fit.\n", "- **Result:** Overview of the results of the model-fit.\n", "- **Global and Local Maxima:** Up to now, all our non-linear searches have successfully found lens models that provide visibly.\n", @@ -233,7 +235,7 @@ "__Search + Analysis__\n", "\n", "We set up `Nautilus` as we did in the previous tutorial, however given the increase in model complexity we'll use\n", - "a higher `n_live` value of 150 to ensure we sample the complex parameter space efficiently." + "a higher `n_live` value of 200 to ensure we sample the complex parameter space efficiently." ] }, { @@ -246,7 +248,7 @@ " unique_tag=dataset_name,\n", " n_live=200,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis = al.AnalysisImaging(dataset=dataset)" @@ -355,7 +357,7 @@ " unique_tag=dataset_name,\n", " n_live=75,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "print(\n", @@ -458,13 +460,13 @@ "inferring a local maxima is still very real, especially as we make our lens model more complex.\n", "\n", "Lets think about *complexity*. As we make our lens model more realistic, we also made it more complex. For this \n", - "tutorial, our non-linear parameter space went from 7 dimensions to 18. This means there was a much larger *volume* of \n", + "tutorial, our non-linear parameter space went from 6 dimensions to 20. This means there was a much larger *volume* of\n", "parameter space to search. As this volume grows, there becomes a higher chance that our non-linear search gets lost \n", "and infers a local maxima, especially if we don't set it up with enough live points!\n", "\n", "At its core, lens modeling is all about learning how to get a non-linear search to find the global maxima region of \n", - "parameter space, even when the lens model is complex. This will be the main theme throughout the rest of this chapter\n", - "and is the main subject of chapter 3.\n", + "parameter space, even when the lens model is complex. This will be the main theme throughout the rest of this chapter,\n", + "culminating in the search chaining technique introduced in tutorials 9 and 10.\n", "\n", "In the next exercise, we'll learn how to deal with failure and begin thinking about how we can ensure our non-linear \n", "search finds the global-maximum log likelihood solution. First, think about the following:\n", @@ -475,7 +477,7 @@ " 2) The non-linear search failed because parameter space was too complex. Could we make it less complex, whilst \n", " still keeping our lens model fairly realistic?\n", " \n", - " 3) The source galaxy in this example had only 7 non-linear parameters. Real source galaxies may have multiple \n", + " 3) The source galaxy in this example had only 6 non-linear parameters. Real source galaxies may have multiple\n", " components (e.g. a disk, bulge, bar, star-forming knot) and there may even be more than 1 source galaxy! Do you \n", " think there is any hope of us navigating a parameter space if the source contributes 20+ parameters by itself?" ] diff --git a/notebooks/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.ipynb index 69c6694..c851539 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_4_dealing_with_failure.ipynb @@ -26,11 +26,15 @@ "__Contents__\n", "\n", "- **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", "- **Prior Tuning:** First, we will try to assist our non-linear search by tuning our priors.\n", "- **Run Time:** Profiling the expected run time of the model-fit.\n", "- **Result:** Overview of the results of the model-fit.\n", - "- **Discussion:** By tuning our priors to the specific lens model we are fitting, we increase the chances of finding." + "- **Discussion:** By tuning our priors to the specific lens model we are fitting, we increase the chances of finding.\n", + "- **Approach 2: Reducing Complexity:** Simplify the lens model, for example by assuming light-traces-mass.\n", + "- **Approach 3: Look Harder:** Brute force the global maxima with more thorough non-linear search settings.\n", + "- **Wrap Up:** Summary of the script and next steps." ] }, { @@ -441,7 +445,7 @@ " unique_tag=dataset_name,\n", " n_live=150,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis = al.AnalysisImaging(dataset=dataset)" @@ -625,7 +629,7 @@ " unique_tag=dataset_name,\n", " n_live=200,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")" ], "outputs": [], @@ -707,11 +711,8 @@ "number of live points used by `Nautilus`. The more thoroughly the search examines the space, the more likely it is to \n", "find the global maximum lens model. However, this also means the search will take longer!\n", "\n", - "Below, we configure a more thorough Nautilus search with `n_live=200`. These settings and what they change are \n", - "discussed in the optional tutorial `chapter_optional/tutorial_searches.ipynb`.\n", - "\n", - "Due to the long run times of this search, the output is commented out below. Feel free to uncomment it to run the \n", - "script faster." + "Below, we configure a more thorough Nautilus search with `n_live=300`. These settings and what they change are\n", + "discussed in the optional tutorial `chapter_optional/tutorial_searches.ipynb`." ] }, { @@ -735,7 +736,7 @@ " name=\"tutorial_4_look_harder\",\n", " unique_tag=dataset_name,\n", " n_live=300,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")" ], "outputs": [], @@ -796,8 +797,8 @@ "weeks, or even months!\n", "\n", "In conclusion, we can now fit strong lenses effectively. When the process fails, we know how to make it work.\n", - "In chapter 3 of **HowToLens**, we will introduce a technique called 'non-linear search chaining', which performs a model \n", - "fit by chaining together multiple searches back-to-back . This allows us to combine the 3 different approaches \n", + "In tutorials 9 and 10 of this chapter, we will introduce a technique called 'non-linear search chaining', which performs\n", + "a model fit by chaining together multiple searches back-to-back. This allows us to combine the 3 different approaches\n", "discussed and exploit the advantages of each, whilst not being hindered by their disadvantages.\n", "\n", "With search chaining, we can:\n", @@ -814,8 +815,8 @@ " \n", "__Wrap Up__\n", "\n", - "To wrap up chapter 2, we have a few more tutorials, where we will discuss masking in more detail, the `Result` object\n", - "and how to make **PyAutoLens** run faster." + "Before we get to search chaining, we have a few more tutorials, where we will discuss masking in more detail, the\n", + "`Result` object and how to make **PyAutoLens** run faster." ] } ], diff --git a/notebooks/chapter_2_lens_modeling/tutorial_5_linear_profiles.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_5_linear_profiles.ipynb index 272ff41..135731d 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_5_linear_profiles.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_5_linear_profiles.ipynb @@ -31,6 +31,7 @@ "__Contents__\n", "\n", "- **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", "- **Linear Light Profiles:** We use a variant of a light profile discussed called a \"linear light profile\", which is accessed.\n", "- **Run Time:** Profiling the expected run time of the model-fit.\n", @@ -287,7 +288,7 @@ " unique_tag=dataset_name,\n", " n_live=100,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis = al.AnalysisImaging(dataset=dataset)" @@ -714,7 +715,7 @@ " unique_tag=dataset_name,\n", " n_live=100,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "print(\n", @@ -841,7 +842,7 @@ "lens modeling problems. \n", "\n", "If you have a desire to fit sources with even more complex morphologies we recommend you look at how to reconstruct \n", - "sources using pixelizations in the `modeling/features` section or chapter 4 of **HowToLens**.\n", + "sources using pixelizations in the `modeling/features` section or chapter 3 of **HowToLens**.\n", " \n", "__Wrap Up__\n", "\n", @@ -854,7 +855,7 @@ "galaxies which may have multiple components with multiple centres (e.g. many star forming knots) which such a \n", "basis cannot capture.\n", "\n", - "In chapter 4 of **HowToLens** we introduce non-parametric pixelizations, which reconstruct the data in way\n", + "In chapter 3 of **HowToLens** we introduce non-parametric pixelizations, which reconstruct the data in way\n", "that does not make assumptions like a centre and can thus reconstruct even more complex, asymmetric and irregular\n", "galaxy morphologies." ] diff --git a/notebooks/chapter_2_lens_modeling/tutorial_6_masking_and_positions.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_6_masking_and_positions.ipynb index 5e188ec..26bff32 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_6_masking_and_positions.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_6_masking_and_positions.ipynb @@ -14,7 +14,9 @@ "__Contents__\n", "\n", "- **Initial Setup:** we'll use the same strong lensing data as tutorials 1 & 2, where.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", + "- **Model + Analysis:** Compose the lens model and create the analysis that fits it using the chosen mask.\n", "- **Run Time:** Profiling the expected run time of the model-fit.\n", "- **Search:** Configure the non-linear search used to fit the model.\n", "- **Discussion:** So, we can choose the mask we use in a model-fit.\n", @@ -86,7 +88,7 @@ "we'll use the same strong lensing data as tutorials 1 & 2, where:\n", "\n", " - The lens galaxy's total mass distribution is a `IsothermalSph`.\n", - " - The source galaxy's light is a `ExponentialSph`." + " - The source galaxy's light is a `ExponentialCoreSph`." ] }, { @@ -228,7 +230,7 @@ " unique_tag=dataset_name,\n", " n_live=80,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis = al.AnalysisImaging(dataset=dataset)" @@ -412,7 +414,7 @@ " unique_tag=dataset_name,\n", " n_live=80,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "print(\n", diff --git a/notebooks/chapter_2_lens_modeling/tutorial_7_results.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_7_results.ipynb index fd3c7dd..fc4d7e9 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_7_results.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_7_results.ipynb @@ -13,6 +13,7 @@ "__Contents__\n", "\n", "- **Initial Setup:** Lets use the model-fit performed in tutorial 1 to get a `Result` object.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Tracer & Fit:** In the previous tutorials, we saw that this result contains the maximum log likelihood fit, which.\n", "- **Samples:** The result contains a lot more information about the model-fit.\n", "- **Workspace:** We are not going into any more detail on the result variable in this tutorial, or in the.\n", @@ -147,7 +148,7 @@ " unique_tag=dataset_name,\n", " n_live=80,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis = al.AnalysisImaging(dataset=dataset)\n", diff --git a/notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb index dec2e8c..08a77f8 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb @@ -19,53 +19,126 @@ "fit performed in this chapter. Lets quickly remind ourselves of the main factors that drive the run-time, and\n", "how we might reduce it.\n", "\n", + "The overall run-time of a model-fit is, to a good approximation, a simple product of two numbers:\n", + "\n", + " - The number of log likelihood evaluations the non-linear search performs before it converges.\n", + "\n", + " - The time each individual log likelihood evaluation takes.\n", + "\n", + "Everything we discuss below reduces one (or both) of these numbers.\n", + "\n", + "__Contents__\n", + "\n", + "- **Searching Non-linear Parameter Space:** What drives the number of likelihood evaluations a search performs.\n", + "- **Cost Per Evaluation:** What drives the time a single log likelihood evaluation takes.\n", + "- **JAX:** How **PyAutoLens** compiles the likelihood function with JAX and runs it on CPUs and GPUs.\n", + "- **Run Time Estimation:** How to estimate the overall run-time of a fit before committing to it.\n", + "- **Data Quantity:** How the amount of data fitted, and the mask applied to it, drives run-times.\n", + "- **Wrap Up:** Summary of the script and next steps.\n", + "\n", "__Searching Non-linear Parameter Space__\n", "\n", "The time it takes for the non-linear search to sample parameter space and find the high likelihood models is driven by:\n", "\n", " - Dimensionality: A more complex parameter space (e.g. more parameters) takes longer to search.\n", " - Priors: The broader the priors on each parameter the longer the search.\n", - " - Settings: Non-linear search settings which sample parameter space more thoroughly lead to longer run-times.\n", + " - Settings: Non-linear search settings which sample parameter space more thoroughly (e.g. a higher `n_live`) lead to\n", + " longer run-times.\n", "\n", "When we use only one search to fit a lens model, we are somewhat restricted in how we can try to achieve faster run\n", - "times by changing these 3 aspects of the search.\n", + "times by changing these 3 aspects of the search. We have already seen one powerful exception: the linear light\n", + "profiles of tutorial 5 remove every `intensity` parameter from the non-linear parameter space, reducing its\n", + "dimensionality and removing some of its most difficult degeneracies at the same time.\n", "\n", - "In the next chapter, we introduce 'non-linear search chaining', which fits a lens model using multiple searches that\n", - "are performed back-to-back. A key motivation for this is that it gives us a lot more flexibility in juggling the\n", - "dimensionality, priors and settings so as to perform faster and more efficient lens modeling.\n", + "The final three tutorials of this chapter (tutorials 9, 10 and 11) introduce 'non-linear search chaining', which fits\n", + "a lens model using multiple searches that are performed back-to-back, passing the results of earlier searches to\n", + "later ones. A key motivation for this is that it gives us a lot more flexibility in juggling the dimensionality,\n", + "priors and settings so as to perform faster and more efficient lens modeling, culminating in the fully automated\n", + "SLaM pipelines of tutorial 11.\n", "\n", - "In the optional **HowToGalaxy** tutorial `chapter_optional/tutorial_searches.ipynb` we discuss other non-linear\n", - "searches supported by **HowToGalaxy** which use a different approach to sample parameter sample than `Nautilus`. For\n", - "those familiar with statistical inference, this includes maximum likelihood estimators and MCMC algorithms.\n", + "In the optional **PyAutoLens** tutorial `chapter_optional/tutorial_searches.py` we discuss other non-linear searches\n", + "supported by **PyAutoLens** which use a different approach to sample parameter space than `Nautilus`. For those\n", + "familiar with statistical inference, this includes maximum likelihood estimators and MCMC algorithms.\n", "\n", "For lens modeling, we have not found another non-linear search that provides as robust and efficient results as\n", - "Nautilus. We therefore recommend uses stick to `Nautilus`.\n", + "Nautilus. We therefore recommend users stick to `Nautilus`.\n", "\n", - "__Contents__\n", + "__Cost Per Evaluation__\n", "\n", - "- **Algorithmic Optimization:** Every operation **PyAutoLens** performs to fit strong lens data with a model takes time, for.\n", - "- **Data Quantity:** The final factor driving run-speed is the quantity of data that is fitted.\n", - "- **Wrap Up:** Summary of the script and next steps.\n", + "The second number is the time a single log likelihood evaluation takes, which is set by every operation\n", + "**PyAutoLens** performs to fit the strong lens data with a model, for example:\n", "\n", - "__Algorithmic Optimization__\n", + " - Computing the deflection angles of the mass model and ray-tracing the image-plane grid to the source-plane.\n", + " - Computing the intensity values of every light profile on those grids.\n", + " - Over-sampling: sub-dividing image pixels into finer sub-pixels where light profiles change rapidly (e.g. the\n", + " centre of the lens galaxy), which multiplies the number of intensity evaluations performed.\n", + " - Convolving the image that comes from the tracer with the telescope's PSF to compare it to the data. The larger\n", + " the PSF, the more expensive this convolution becomes.\n", + " - For linear light profiles, basis functions like the MGE of tutorial 5 and the pixelizations of chapter 3, solving\n", + " the linear algebra of the inversion, which computes the `intensity` values that best fit the data.\n", "\n", - "Every operation **PyAutoLens** performs to fit strong lens data with a model takes time, for example:\n", + "More complex fitting techniques therefore cost more per evaluation: a couple of standard light profiles are cheap,\n", + "an MGE costs more (its inversion solves for many Gaussians), and pixelized source reconstructions cost the most.\n", + "As we saw in tutorial 5, this trade often still favours the more advanced technique, because the simpler parameter\n", + "space it produces reduces the number of evaluations the search needs.\n", "\n", - " - Computing the intensity values from a light profile.\n", - " - Convolving the image that comes from a tracer with the PSF to compare it to the data.\n", + "__JAX__\n", "\n", - "One can therefore in principle make **PyAutoLens** run faster by using more efficient algorithms. However, I am\n", - "confident that for many tasks and operations we have written code that is already very fast!\n", + "How are these operations made fast? **PyAutoLens** uses JAX (https://github.com/jax-ml/jax), Google's numerical\n", + "computing library, which just-in-time (JIT) compiles the entire log likelihood function into optimized machine code.\n", "\n", - "I often get asked, given that **PyAutoLens** is written in Python (a synonymously slow programming language), is it not\n", - "really slow? **PyAutoLens** uses a library called `numba` to ensure that it runs fast, which recompiles Python\n", - "functions into C functions before **PyAutoLens** runs. This gives us C-like speed, but in Python code. If you`ve got\n", - "your own code that needs speeding up, I strongly recommend that you look up Numba:\n", + "JIT compilation means the first time the likelihood function is called, JAX traces through every operation it\n", + "performs (ray-tracing, light profile evaluation, PSF convolution, the linear algebra of an inversion) and compiles\n", + "them into a single optimized program. This compilation is a one-off overhead, typically taking seconds to a couple\n", + "of minutes depending on model complexity. Every one of the tens of thousands of likelihood evaluations that follow\n", + "then reuses the compiled program and runs dramatically faster than ordinary Python. When a search begins you will\n", + "see a log message like `JAX jit compiling vectorized (vmap) likelihood function, could take seconds or minutes...`\n", + "-- that is the compilation happening.\n", "\n", - "http://numba.pydata.org/\n", + "JAX's second superpower is that the same compiled code runs on either a CPU or a GPU. On a GPU, likelihood\n", + "evaluations are not only faster individually but can be batched, with many evaluated simultaneously (the\n", + "`n_batch` search input and its VRAM implications were discussed in tutorial 2). GPU speed-ups over CPU\n", + "of an order of magnitude or more are common, and they grow with the size of the dataset and model. If you have\n", + "access to a GPU (even a modest laptop GPU), it is the single biggest speed-up available to you.\n", "\n", - "Therefore, **PyAutoLens** is pretty well optimized and there are no 'low hanging fruit' speed ups available by writing\n", - "the code in a different language.\n", + "You do not need to do anything to switch this on. If JAX is installed (`pip install autolens[jax]`), every\n", + "`AnalysisImaging` object we have created in this chapter defaults to `use_jax=True` and the search compiles and\n", + "batches the likelihood function automatically. You can force the plain NumPy path with\n", + "`al.AnalysisImaging(dataset=dataset, use_jax=False)` (or by setting the environment variable\n", + "`PYAUTO_DISABLE_JAX=1`), which is mainly useful for debugging, as NumPy errors and stack traces are much easier\n", + "to read than JAX ones.\n", + "\n", + "The one trade-off to keep in mind is the compilation overhead itself. For a full model-fit performing tens of\n", + "thousands of likelihood evaluations it is negligible. For a quick one-off calculation (e.g. fitting a single\n", + "tracer to data once, as we did in chapter 1) compilation can take longer than the calculation it speeds up, which\n", + "is why short interactive computations sometimes feel slower than you might expect the first time they run.\n", + "\n", + "Long-time users may remember that **PyAutoLens** previously used `numba`, which recompiles individual Python\n", + "functions into fast machine code. JAX supersedes it: rather than accelerating functions one at a time, it compiles\n", + "and optimizes the likelihood function end-to-end, and adds GPU support and batching on top.\n", + "\n", + "Therefore, **PyAutoLens** is pretty well optimized and there are no 'low hanging fruit' speed ups available by\n", + "writing the code in a different language.\n", + "\n", + "__Run Time Estimation__\n", + "\n", + "Because run-time is the product of the two numbers above, we can estimate it before committing to a fit:\n", + "\n", + " - Time the log likelihood evaluation: perform a fit of the model to the data once (e.g. via a `FitImaging`) and\n", + " time it, remembering to discard the first call, which includes JIT compilation.\n", + "\n", + " - Estimate the number of evaluations: for `Nautilus` a reasonable rule of thumb is of order 10000 evaluations per\n", + " free parameter, with simpler parameter spaces (e.g. linear light profiles, chained searches with tight priors)\n", + " converging in fewer.\n", + "\n", + "Multiplying the two gives a ballpark overall run-time. In tutorial 2 we used exactly this arithmetic: a log\n", + "likelihood evaluation time below 0.01 seconds on CPU (below 0.001 seconds on GPU) and 50000-100000 evaluations gave\n", + "expected run-times of roughly 30 minutes on CPU and 10 minutes on GPU. If your own estimate comes out at days or\n", + "weeks, that is the moment to simplify the model, tighten the search settings, reach for search chaining or find\n", + "a GPU -- before starting the fit, not after.\n", + "\n", + "On a GPU, tutorial 2 also showed the other pre-flight check: `analysis.print_vram_use` estimates whether the fit\n", + "will fit within the GPU's memory for your chosen batch size.\n", "\n", "__Data Quantity__\n", "\n", @@ -80,11 +153,17 @@ "\n", "There are ways that we can reduce the number of image-pixels we fit, via masking. If we mask out more of the image,\n", "we will fit fewer pixels and **PyAutoLens** will run faster. If you want the best, most perfect lens model possible,\n", - "aggressive masking and cutting the data in this way is a bad idea, as discussed in tutorial 5.\n", + "aggressive masking and cutting the data in this way is a bad idea, as discussed in tutorial 6.\n", "\n", "__Wrap Up__\n", "\n", - "This tutorial simply wanted to get you thinking about *why* a lens model takes as long to fit as it does." + "This tutorial simply wanted to get you thinking about *why* a lens model takes as long to fit as it does: the number\n", + "of likelihood evaluations the search performs, times the cost of each evaluation, with JAX's compiled likelihood\n", + "function (and a GPU, if you have one) driving the latter down as far as it will go.\n", + "\n", + "The remaining tutorials of this chapter attack the other half of the product: search chaining (tutorial 9) and prior\n", + "passing (tutorial 10) reduce the number of evaluations needed to fit complex models, and the SLaM pipelines\n", + "(tutorial 11) package these ideas into automated pipelines for fitting large samples of lenses." ] }, { diff --git a/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb b/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb index 1612c78..0013a09 100644 --- a/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb +++ b/notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb @@ -4,17 +4,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 1: Search Chaining\n", + "Tutorial 9: Search Chaining\n", "===========================\n", "\n", - "In chapter 2, we learnt how to perform lens modeling using a non-linear search. In all of the tutorials, we fitted the\n", - "data using just one non-linear search. In this chapter, we introduce a technique called 'non-linear search chaining',\n", - "fits a lens model using a sequence of non-linear searches. The initial searches fit simpler lens models whose parameter\n", - "spaces can be more accurately and efficiently sampled. The results of this search are then passed to later searches\n", - "which fit lens models of gradually increasing complexity.\n", + "Throughout this chapter, we have fitted the data using just one non-linear search. The previous tutorial discussed\n", + "the run-time cost of doing this: with a single search, the dimensionality of the model, the priors on its parameters\n", + "and the search settings must all be juggled at once, leaving us little flexibility to trade them off against one\n", + "another.\n", "\n", - "Lets think back to tutorial 4 of chapter 2. We learnt there were three approaches one could take fitting a lens model\n", - "accurately if we found that a model fit failed. These were:\n", + "In this closing part of the chapter, we introduce a technique called 'non-linear search chaining', which fits a lens\n", + "model using a sequence of non-linear searches. The initial searches fit simpler lens models whose parameter spaces can\n", + "be more accurately and efficiently sampled. The results of this search are then passed to later searches which fit\n", + "lens models of gradually increasing complexity.\n", + "\n", + "Lets think back to tutorial 4 of this chapter. We learnt there were three approaches one could take fitting a lens\n", + "model accurately if we found that a model fit failed. These were:\n", "\n", " 1) Tuning our priors to the strong lens we're fitting.\n", " 2) Making our lens model less complex.\n", @@ -29,7 +33,7 @@ "we'll run 2 searches, and chain the lens model inferred in the first search to the priors of the second search`s lens\n", "model.\n", "\n", - "Our first search will make the same light-traces-mass assumption we made in the previous tutorial. We saw that this\n", + "Our first search will make the same light-traces-mass assumption we made in tutorial 4. We saw that this\n", "gives a reasonable lens model. However, we'll make a couple of extra simplifying assumptions, to really try and bring\n", "our lens model complexity down and get the non-linear search running fast.\n", "\n", @@ -45,10 +49,12 @@ "\n", "__Contents__\n", "\n", - "- **Initial Setup:** we'll use the same strong lensing data as the previous tutorial, where.\n", + "- **Initial Setup:** Load the same strong lensing data fitted throughout this chapter.\n", + "- **Dataset Auto-Simulation:** Simulate the dataset via its simulator script if it is not on your hard-disk.\n", "- **Model:** Compose the lens model fitted to the data.\n", + "- **Search + Analysis:** Create the non-linear search and analysis used to fit the first model.\n", "- **Result:** Overview of the results of the model-fit.\n", - "- **Prior Passing:** Now all we need to do is look at the results of search 1 and pass the results as priors for search.\n", + "- **Prior Passing:** Use the results of search 1 to set up the priors of search 2.\n", "- **Run Time:** Profiling the expected run time of the model-fit.\n", "- **Model Fit:** Perform the model-fit using the search and analysis.\n", "- **Wrap Up:** Summary of the script and next steps." @@ -116,7 +122,7 @@ "source": [ "__Initial Setup__\n", "\n", - "we'll use the same strong lensing data as the previous tutorial, where:\n", + "we'll use the same strong lensing data as tutorials 3, 4 and 5 of this chapter, where:\n", "\n", " - The lens galaxy's light is an `Sersic`.\n", " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", @@ -313,11 +319,11 @@ "metadata": {}, "source": [ "search_1 = af.Nautilus(\n", - " path_prefix=Path(\"howtolens\", \"chapter_3\"),\n", - " name=\"tutorial_1_search_chaining_1\",\n", + " path_prefix=Path(\"howtolens\", \"chapter_2\"),\n", + " name=\"tutorial_9_search_chaining_1\",\n", " unique_tag=dataset_name,\n", " n_live=100,\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis_1 = al.AnalysisImaging(dataset=dataset)" @@ -338,7 +344,7 @@ "metadata": {}, "source": [ "print(\n", - " \"The non-linear search has begun running - checkout the workspace/output/5_chaining_searches\"\n", + " \"The non-linear search has begun running - checkout the output/howtolens/chapter_2\"\n", " \" folder for live output of the results, images and lens model.\"\n", " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", ")\n", @@ -567,11 +573,11 @@ "metadata": {}, "source": [ "search_2 = af.Nautilus(\n", - " path_prefix=Path(\"howtolens\", \"chapter_3\"),\n", - " name=\"tutorial_1_search_chaining_2\",\n", + " path_prefix=Path(\"howtolens\", \"chapter_2\"),\n", + " name=\"tutorial_9_search_chaining_2\",\n", " unique_tag=dataset_name,\n", " n_live=150,\n", - " iterations_per_quick_update=25000, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=25000, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis_2 = al.AnalysisImaging(dataset=dataset)" @@ -601,7 +607,7 @@ "metadata": {}, "source": [ "print(\n", - " \"The non-linear search has begun running - checkout the workspace/output/5_chaining_searches\"\n", + " \"The non-linear search has begun running - checkout the output/howtolens/chapter_2\"\n", " \" folder for live output of the results, images and lens model.\"\n", " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", ")\n", diff --git a/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb b/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb index bdf8717..90dc0a4 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb @@ -4,20 +4,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 9: Fit Problems\n", - "========================\n", + "Tutorial 10: Fit Problems\n", + "=========================\n", "\n", - "To begin, make sure you have read the `introduction` file carefully, as a clear understanding of how the Bayesian\n", - "evidence works is key to understanding this chapter!\n", + "To begin, make sure you have read tutorials 4 and 5 carefully, as a clear understanding of how the Bayesian\n", + "evidence works is key to understanding the adaption tutorials that close this chapter!\n", "\n", - "In the previous chapter we investigated two pixelization's: `RectangularAdaptDensity` and `RectangularAdaptDensity`. We argued that the\n", - "latter was better than the former, because it dedicated more source-pixels to the regions of the source-plane where we\n", - "had more data, e.g, the high-magnification regions. Therefore, we could fit the data using fewer source pixels,\n", - "which improved computational efficiency and increased the Bayesian evidence.\n", + "Earlier in this chapter (tutorial 8) we investigated two pixelizations: the `RectangularAdaptDensity` mesh and the\n", + "`Delaunay` mesh with an `Overlay` image-mesh. We argued that the latter was better than the former, because it\n", + "dedicated more source-pixels to the regions of the source-plane where we had more data, e.g. the high-magnification\n", + "regions. Therefore, we could fit the data using fewer source pixels, which improved computational efficiency and\n", + "increased the Bayesian evidence.\n", "\n", "So far, we've used just one regularization scheme; `Constant`. As the name suggests, this scheme applies just one\n", "regularization coefficient when comparing source pixel fluxes to apply smoothing. Here is a recap of our discussion\n", - "about regularization from chapter 4:\n", + "about regularization from tutorial 4:\n", "\n", "--------------------------------------------\n", "\n", @@ -253,8 +254,8 @@ "source": [ "__Fitting__\n", "\n", - "we'll make one more convenience function which fits the simulated imaging data with an `Overlay` image-mesh, \n", - "`RectangularAdaptDensity` mesh and `Constant` regularization scheme pixelization.\n", + "we'll make one more convenience function which fits the simulated imaging data with a\n", + "`RectangularAdaptDensity` mesh and `Constant` regularization scheme pixelization.\n", "\n", "We'll input the `coefficient` of each fit, so that for each simulated source we regularize it at an appropriate level. \n", "There is nothing new in this function you haven't seen before." @@ -395,14 +396,15 @@ "\n", "*Image-Mesh / Mesh*:\n", "\n", - "The problem is the same one we discussed when we compared the `RectangularAdaptDensity` and `RectangularAdaptDensity` meshes in tutorial 7. \n", + "The problem is the same one we discussed in tutorial 8, when we motivated pixelizations which adapt to where the\n", + "data constrains the source.\n", "\n", - "We are simply not dedicating enough source-pixels to the central regions of the source reconstruction, \n", - "e.g. where it`s brightest. As the source becomes more compact, the source reconstruction no longer has enough \n", + "We are simply not dedicating enough source-pixels to the central regions of the source reconstruction,\n", + "e.g. where it's brightest. As the source becomes more compact, the source reconstruction no longer has enough\n", "resolution to resolve its fine-detailed central structure, causing the fit to the image to degrade.\n", "\n", - "As we made our sources more compact we go from reconstructing them using ~100 source pixels, to ~20 source pixels \n", - "to ~ 10 source pixels. This is why we advocated not using the `RectangularAdaptDensity` mesh previously!\n", + "As we made our sources more compact we went from reconstructing them using ~100 source pixels, to ~20 source pixels\n", + "to ~10 source pixels.\n", "\n", "Adapting to the mass model magnification is not the best approach. As we simulated more compact sources the \n", "magnification (which is determined via the mass model) does not change. We therefore reconstructed each source\n", @@ -443,7 +445,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As you can see, all pixels are regularized with our input regularization_coefficient value of 3.6.\n", + "As you can see, all pixels are regularized with our single input regularization coefficient value.\n", "\n", "This is not the best approach to regularizing the source. In fact, different regions of the source prefer different \n", "levels of regularization:\n", @@ -465,7 +467,7 @@ "By using a single regularization coefficient, we infer an intermediate regularization coefficient that over-smooths \n", "the source's central regions whilst failing to fully correlate exterior pixels. \n", "\n", - "An adaptive regularization scheme, where the regularization coefficient varies from the outskirts to the centrel \n", + "An adaptive regularization scheme, where the regularization coefficient varies from the outskirts to the central\n", "regions, will produce solutions that further increase the Bayesian evidence.\n", "\n", "__Wrap Up__\n", diff --git a/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb b/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb index ee250e1..b0ee9e4 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 10: Brightness Adaption\n", + "Tutorial 11: Brightness Adaption\n", "================================\n", "\n", "In the previous tutorial we motivated our need to adapt the pixelization to the source's morphology, such that source\n", @@ -202,7 +202,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lets have a quick look to make sure it has the same residuals we saw in tutorial 1." + "Lets have a quick look to make sure it has the same residuals we saw in the previous tutorial." ] }, { @@ -542,9 +542,9 @@ "source": [ "__Wrap Up__\n", "\n", - "To end, lets think about the Bayesian evidence, which we saw now goes to significantly higher values than for a \n", - "magnification-based grid. At this point, it might be worth reminding yourself how the Bayesian evidence works by \n", - "going back to description in this chapters `introduction` text file.\n", + "To end, lets think about the Bayesian evidence, which we saw now goes to significantly higher values than for a\n", + "magnification-based grid. At this point, it might be worth reminding yourself how the Bayesian evidence works by\n", + "going back to tutorials 4 and 5 of this chapter.\n", "\n", "So, why do you think why adapting to the source's brightness increases the log evidence?\n", "\n", @@ -558,7 +558,7 @@ "**PyAutoLens** can now access those solutions, this means that adapt-mode will run much faster than the magnification \n", "based grid! Put simply, fewer source-pixels means lower computational overheads. YAY!\n", "\n", - "Tutorial 2 done, next up, adaptive regularization!" + "Tutorial 11 done, next up, adaptive regularization!" ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb b/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb index e59c4ce..f647bf9 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb @@ -4,10 +4,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 11: Adaptive Regularization\n", + "Tutorial 12: Adaptive Regularization\n", "====================================\n", "\n", - "In tutorial 7, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source\n", + "In tutorial 10, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source\n", "demand different levels of regularization, motivating a regularization scheme which adapts to the reconstructed\n", "source's surface brightness.\n", "\n", @@ -303,8 +303,8 @@ "\n", "Combining the adaptive mesh and regularization will only further benefit lens modeling!\n", "\n", - "However, as shown below, we don't fit the source as well as the morphology based mesh did in the last chapter. \n", - "This is because although the adaptive regularization scheme improves the fit, the magnification based \n", + "However, as shown below, we don't fit the source as well as the morphology based mesh did in the previous tutorial.\n", + "This is because although the adaptive regularization scheme improves the fit, the magnification based\n", "mesh simply does not have sufficient resolution to resolve the source's cuspy central light." ] }, @@ -418,22 +418,27 @@ "__Wrap Up__\n", "\n", "To end, lets consider what this adaptive regularization scheme means in the context of maximizing the Bayesian\n", - "evidence. In the previous tutorial, we noted that by using a brightness-based adaptive pixelization we increased \n", - "the Bayesian evidence by allowing for new solutions which fit the data user fewer source pixels; the key criteria \n", + "evidence. In the previous tutorial, we noted that by using a brightness-based adaptive pixelization we increased\n", + "the Bayesian evidence by allowing for new solutions which fit the data using fewer source pixels; the key criteria\n", "in making a source reconstruction 'more simple' and 'less complex'.\n", "\n", - "As you might of guessed, adaptive regularization increases the Bayesian log evidence by making the source \n", + "As you might have guessed, adaptive regularization increases the Bayesian log evidence by making the source\n", "reconstruction simpler:\n", "\n", - " 1) Reducing regularization in the source's brightest regions produces a `simpler` solution in that we are not \n", + " 1) Reducing regularization in the source's brightest regions produces a `simpler` solution in that we are not\n", " over-smoothing our reconstruction of its brightest regions.\n", - " \n", - " 2) Increasing regularization in the outskirts produces a simpler solution by correlating more source-pixels, \n", + "\n", + " 2) Increasing regularization in the outskirts produces a simpler solution by correlating more source-pixels,\n", " effectively reducing the number of pixels used by the reconstruction.\n", "\n", - "Together, brightness based pixelization's and regularization allow us to find the objectively `simplest` source \n", - "solution possible and therefore ensure that our Bayesian evidence has a well defined maximum value. This was not the \n", - "case for magnification based pixelization's and constant regularization schemes." + "Together, brightness based pixelizations and regularization allow us to find the objectively `simplest` source\n", + "solution possible and therefore ensure that our Bayesian evidence has a well defined maximum value. This was not the\n", + "case for magnification based pixelizations and constant regularization schemes.\n", + "\n", + "That completes this chapter on pixelized source reconstruction. You can now reconstruct sources of arbitrary\n", + "complexity and adapt every part of the analysis to the data itself. In chapter 4, `Scaling Up Lensing`, we take these\n", + "tools to bigger systems: lenses with extra galaxies along the line of sight, multi-galaxy lenses, scaling relations,\n", + "group and cluster scale lenses and weak lensing." ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb b/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb index d6bbb36..4c0bc96 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 1: pixelizations\n", + "Tutorial 1: Pixelizations\n", "=========================\n", "\n", "In the previous chapters, we used light profiles to model the light of a strong lens's source galaxy, where the light\n", @@ -158,10 +158,10 @@ "metadata": {}, "source": [ "By itself, a pixelization does not tell us much. It has no grid of $(y,x)$ coordinates, no image, and no information\n", - "about the lens we are fitting. \n", + "about the lens we are fitting.\n", "\n", - "This information comes when we use the pixelization to create up a `Mapper`, which we\n", - "perform below using the (traced) source-plane grid that we created above." + "This information comes when we use the pixelization to create a `Mapper`, which we\n", + "do below using the (traced) source-plane grid that we created above." ] }, { @@ -181,7 +181,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This `Mapper` is a `RectangularMapper`, every `Pixelization` generates it owns mapper." + "This `Mapper` is a `RectangularMapper` -- every `Pixelization` generates its own mapper." ] }, { @@ -213,8 +213,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "However, the `Mapper` does contain lots of interesting information about our `Pixelization`, for example its \n", - "pixelization_grid tells us where the pixel centers are located." + "The `Mapper` contains lots of interesting information about our `Pixelization`, for example its\n", + "`source_plane_mesh_grid` tells us where the pixel centres are located." ] }, { @@ -253,7 +253,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `Mapper` also has the (source-plane) grid that we passed when we set it up. Lets check they`re the same." + "The `Mapper` also has the (source-plane) grid that we passed when we set it up. Lets check they're the same." ] }, { @@ -295,7 +295,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, the mapper`s `mesh_grid` has lots of information about the pixelization, for example, the arc-second \n", + "Finally, the mapper's mesh grid has lots of information about the pixelization, for example, its arc-second\n", "size and dimensions." ] }, @@ -319,12 +319,12 @@ "This was a relatively gentle overview of pixelizations, but one that was hopefully easy to follow. Think about the \n", "following questions before moving on to the next tutorial:\n", "\n", - " 1) Look at how the source-grid coordinates are distributed over the rectangular pixel-grid. Are these points \n", - " distributed evenly over the rectangular grid`s pixels? Do some pixels have a lot more grid-points inside of them? \n", + " 1) Look at how the source-grid coordinates are distributed over the rectangular pixel-grid. Are these points\n", + " distributed evenly over the rectangular grid's pixels? Do some pixels have a lot more grid-points inside of them?\n", " Do some pixels have no grid-points in them?\n", "\n", - " 2) The rectangular pixelization`s edges are aligned with the most exterior coordinates of the source-grid. This is \n", - " intentional, why do you think this is?" + " 2) The rectangular pixelization's edges are aligned with the most exterior coordinates of the source-grid. This is\n", + " intentional -- why do you think this is?" ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb b/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb index 1e9e7cd..c743f43 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb @@ -7,12 +7,12 @@ "Tutorial 2: Mappers\n", "===================\n", "\n", - "In the previous tutorial, we used a pixelization to create made a `Mapper`. However, it was not clear what a `Mapper`\n", + "In the previous tutorial, we used a pixelization to create a `Mapper`. However, it was not clear what a `Mapper`\n", "does, why it was called a mapper and whether it was mapping anything at all!\n", "\n", "Therefore, in this tutorial, we'll cover mappers in more detail.\n", "\n", - "WARNING: THHIS TUTORIAL VISUALS ARE SLIGHTLY BUGGY CURRENTLY AND WILL BE FIXED IN THE FUTURE.\n", + "WARNING: THIS TUTORIAL'S VISUALS ARE SLIGHTLY BUGGY CURRENTLY AND WILL BE FIXED IN THE FUTURE.\n", "\n", "__Contents__\n", "\n", @@ -157,8 +157,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Our `Tracer` will use the same lens galaxy and source galaxy that we used to Simulate the imaging data (although, \n", - "becuase we're modeling the source with a pixel-grid, we do not pass it any light profiles." + "Our `Tracer` will use the same lens galaxy and source galaxy that we used to simulate the imaging data (although,\n", + "because we're modeling the source with a pixel-grid, we do not pass the source any light profiles)." ] }, { @@ -234,8 +234,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Using the `lines=`/`positions=` overlays object we are also going to highlight specific grid coordinates certain colors, such that we\n", - "can see how they map from the image-plane to source-plane and visa versa.\n", + "Using the `positions=` overlay input we are also going to highlight specific grid coordinates in certain colors, such\n", + "that we can see how they map from the image-plane to the source-plane and vice versa.\n", "\n", "We do this by specifying their integer indexes, corresponding to the index of each data point in the image and source\n", "plane grids. These indexes are used to highlight the grid coordinates in the image and source-plane grids that map\n", @@ -289,8 +289,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now make these mappings appear the other way round. That is, we can input a source-pixel index (of our \n", - "rectangular grid) and highlight how all of the (sub-)image-pixels that it contains map to the image-plane. \n", + "We can now make these mappings appear the other way round. That is, we can input a source-pixel index (of our\n", + "rectangular grid) and highlight how all of the image-pixels that it contains map to the image-plane.\n", "\n", "To make the indexes appear in the image-plane, we have to convert them from their source-plane pixel indexes\n", "to image plane image-pixel indexes using the mapper.\n", @@ -408,7 +408,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To create the mapper, we need to set up the masked imaging's grid as the source-plane gird via the tracer." + "To create the mapper, we need to trace the masked imaging's grid to the source-plane via the tracer." ] }, { @@ -508,9 +508,9 @@ " radius deviates from 1.6\" (the input value of the simulated lens), what do you notice about where the points map \n", " from the centre of the source-plane (where the source-galaxy is simulated, e.g. (0.0\", 0.0\"))?\n", " \n", - " 2) Think about how this could help us actually model lenses. We have said we're going to reconstruct our source \n", - " galaxies on the pixel-grid. So, how does knowing how each pixel maps to the image actually help us? If you`ve not got \n", - " any bright ideas, then worry not, that exactly what we're going to cover in the next tutorial." + " 2) Think about how this could help us actually model lenses. We have said we're going to reconstruct our source\n", + " galaxies on the pixel-grid. So, how does knowing how each pixel maps to the image actually help us? If you've not got\n", + " any bright ideas, then worry not, that's exactly what we're going to cover in the next tutorial." ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb b/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb index 78a6080..cadb646 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb @@ -12,7 +12,7 @@ " - `Pixelization`'s: which place a pixel-grid in the source-plane.\n", " - `Mappers`'s: which describe how each source-pixel maps to one or more image pixels.\n", "\n", - "However, non of this has actually helped us fit strong lens data or reconstruct the source galaxy. This is the subject\n", + "However, none of this has actually helped us fit strong lens data or reconstruct the source galaxy. This is the subject\n", "of this tutorial, where the process of reconstructing the source's light on the pixelization is called an `Inversion`.\n", "\n", "__Contents__\n", @@ -138,7 +138,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lets create an annular mask which traces the stongly lensed source's ring of light." + "Lets create an annular mask which traces the strongly lensed source's ring of light." ] }, { @@ -407,9 +407,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Pretty great, huh? If you ran the complex source pipeline in chapter 3, you'll remember that getting a model image \n", - "that looked this good simply *was not possible*. With an inversion, we can do this with ease and without having to \n", - "perform model-fitting with 20+ parameters for the source's light!\n", + "Pretty great, huh? If you fitted complex sources using light profiles in the search chaining tutorials at the end of\n", + "chapter 2 (tutorials 9-11), you'll remember that getting a model image that looked this good simply *was not possible*.\n", + "With an inversion, we can do this with ease and without having to perform model-fitting with 20+ parameters for the\n", + "source's light!\n", "\n", "We will now briefly discuss how an inversion actually works, however the explanation I give in this tutorial will be \n", "overly-simplified. To be good at lens modeling you do not need to understand the details of how an inversion works, you \n", @@ -445,11 +446,16 @@ " 1) The mappings between every source-pixel and sets of image-pixels.\n", " 2) The flux values in every observed image-pixel, which are the values we want to fit successfully.\n", "\n", - "It turns out that with these two pieces of information we can linearly solve for the set of source-pixel fluxes that \n", - "best-fit (e.g. maximize the log likelihood) our observed image. Essentially, we set up the mappings between source and \n", - "image pixels as a large matrix and solve for the source-pixel fluxes in an analogous fashion to how you would solve a \n", + "It turns out that with these two pieces of information we can linearly solve for the set of source-pixel fluxes that\n", + "best-fit (e.g. maximize the log likelihood) our observed image. Essentially, we set up the mappings between source and\n", + "image pixels as a large matrix and solve for the source-pixel fluxes in an analogous fashion to how you would solve a\n", "set of simultaneous linear equations. This process is called a `linear inversion`.\n", "\n", + "In the language of linear algebra: the mappings form a `mapping matrix` $f$, which together with the data and\n", + "noise-map defines a linear system whose solution is the vector of source-pixel fluxes $s$. Tutorial 5 of this\n", + "chapter writes this system out in full and computes it step-by-step in code -- for now, the intuition above is all\n", + "you need.\n", + "\n", "There are three more things about a linear inversion that are worth knowing:\n", "\n", " 1) When performing fits using light profiles, we discussed how a `model_image` was generated by convolving the light\n", @@ -461,7 +467,7 @@ " the mapping between every sub-pixel and source-pixel that is computed and used to perform the inversion. This prevents \n", " aliasing effects degrading the image reconstruction. By default **PyAutoLens** uses sub-gridding of degree 4x4.\n", "\n", - " 3) The inversion`s solution is regularized. But wait, that`s what we'll cover in the next tutorial!\n", + " 3) The inversion's solution is regularized. But wait, that's what we'll cover in the next tutorial!\n", "\n", "Finally, let me show you how easy it is to fit an image with an `Inversion` using a `FitImaging` object. Instead of \n", "giving the source galaxy a light profile, we simply pass it a `Pixelization` and regularization, and pass it to a \n", @@ -537,9 +543,10 @@ " \n", "__Detailed Explanation__\n", "\n", - "If you are interested in a more detailed description of how inversions work, then checkout the file\n", - "`autolens_workspace/*/imaging/features/pixelization/likelihood_function.ipynb` which gives a visual step-by-step\n", - "guide of the process alongside equations and references to literature on the subject." + "If you are interested in a more detailed description of how inversions work, tutorial 5 of this chapter collects the\n", + "full linear algebra in one place. The file\n", + "`autolens_workspace/*/imaging/features/pixelization/likelihood_function.ipynb` gives a complementary visual\n", + "step-by-step guide of the process alongside equations and references to literature on the subject." ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb b/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb index ae8d885..56165e2 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb @@ -143,11 +143,11 @@ "source": [ "__Convenience Function__\n", "\n", - "we're going to perform a lot of fits using an `Inversion` this tutorial. This would create a lot of code, so to keep \n", + "we're going to perform a lot of fits using an `Inversion` this tutorial. This would create a lot of code, so to keep\n", "things tidy, I've setup this function which handles it all for us.\n", "\n", - "(You may notice we include an option to `use_pixelization_border, ignore this for now, as we'll be covering borders in \n", - "the next tutorial)" + "(Borders, which relocate demagnified image pixels in the source-plane, are used behind the scenes here -- we'll be\n", + "covering them in tutorial 6.)" ] }, { @@ -249,12 +249,15 @@ "So, what is happening here? Why does reducing the `coefficient` do this to our source reconstruction? First, we need\n", "to understand what regularization actually does!\n", "\n", - "When the inversion reconstructs the source, it does not *only* compute the set of source-pixel fluxes that best-fit \n", - "the image. It also regularizes this solution, whereby it goes to every pixel on the rectangular source-plane grid \n", - "and computes the different between the reconstructed flux values of every source pixel with its 4 neighboring pixels. \n", - "If the difference in flux is large the solution is penalized, reducing its log likelihood. You can think of this as \n", + "When the inversion reconstructs the source, it does not *only* compute the set of source-pixel fluxes that best-fit\n", + "the image. It also regularizes this solution, whereby it goes to every pixel on the rectangular source-plane grid\n", + "and computes the difference between the reconstructed flux values of every source pixel with its 4 neighboring pixels.\n", + "If the difference in flux is large the solution is penalized, reducing its log likelihood. You can think of this as\n", "us applying a 'smoothness prior' on the reconstructed source galaxy's light.\n", "\n", + "(In the language of linear algebra, this smoothness prior is encoded in a `regularization matrix` $H$ which is\n", + "added to the linear system the inversion solves -- tutorial 5 writes this out in full.)\n", + "\n", "This smoothing adds a 'penalty term' to the log likelihood of an inversion which is the summed difference between the \n", "reconstructed fluxes of every source-pixel pair multiplied by the `coefficient`. By setting the regularization \n", "coefficient to zero, we set this penalty term to zero, meaning that regularization is completely omitted.\n", @@ -441,14 +444,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - " 2) Can you think of any other ways we might increase the Bayesian evidence even further? In future tutorials we will \n", - " learn how **PyAutoLens** can adapts the source reconstructions to the properties of the image so as to maximize the \n", + " 2) Can you think of any other ways we might increase the Bayesian evidence even further? In future tutorials we will\n", + " learn how **PyAutoLens** can adapt the source reconstruction to the properties of the image so as to maximize the\n", " Bayesian evidence!\n", - " \n", + "\n", "__Detailed Description__\n", "\n", "Below, I provide a more detailed discussion of the Bayesian evidence. It is not paramount that you understand this to\n", - "use **PyAutoLens**, but I recommend you give it a read to get an intuition for how the evidence works.\n", + "use **PyAutoLens**, but I recommend you give it a read to get an intuition for how the evidence works. The evidence\n", + "itself is a sum of chi-squared, regularization and matrix log-determinant terms -- tutorial 5 derives the exact\n", + "expression and computes every term in code.\n", "\n", "The Bayesian log evidence quantifies the following 3 aspects of a fit to strong lens imaging data:\n", "\n", @@ -459,10 +464,10 @@ "\n", " However, this raises the question of what constitutes a \u2018good\u2019 solution? The Bayesian evidence defines this by\n", " assuming that the image data consists of independent Gaussian noise in every image pixel. A \u2018good\u2019 solution is one\n", - " whose chi-squared residuals are consistent with Gaussian noise, producing a reduced chi-squared near 1.0 .Solutions\n", - " which give a reduced chi squared below 1 are penalized for being overly complex and fitting the image\u2019s noise, whereas\n", - " solutions with a reduced chi-squared above are penalized for not invoking a more complex source model when the data it\n", - " is necessary to fit the data bettter. In both circumstances, these penalties reduce the inferred Bayesian evidence!\n", + " whose chi-squared residuals are consistent with Gaussian noise, producing a reduced chi-squared near 1.0. Solutions\n", + " which give a reduced chi-squared below 1 are penalized for being overly complex and fitting the image\u2019s noise, whereas\n", + " solutions with a reduced chi-squared above 1 are penalized for not invoking a more complex source model when the data\n", + " necessitates it. In both circumstances, these penalties reduce the inferred Bayesian evidence!\n", "\n", "2) *The complexity of the source reconstruction:* The log evidence estimates the number of source pixels that are used \n", " to reconstruct the image, after accounting for their correlation with one another due to regularization. Solutions that\n", @@ -470,9 +475,9 @@ " reconstructions are favoured.\n", "\n", "3) *The signal-to-noise (S/N) of the image that is fitted:* The Bayesian evidence favours models which fit higher S/N\n", - " realizations of the observed data (where the S/N is determined using the image-pixel variances, e.g. the noise-map). Up \n", - " to now, all **PyAutoLens** fits assumed fixed variances, meaning that this aspect of the Bayeisan evidence has no impact \n", - " on the inferred evidence values. However, in hyper-mode we will invoke functionality that increases the variances \n", + " realizations of the observed data (where the S/N is determined using the image-pixel variances, e.g. the noise-map). Up\n", + " to now, all **PyAutoLens** fits assumed fixed variances, meaning that this aspect of the Bayesian evidence has no impact\n", + " on the inferred evidence values. However, adaptive features can invoke functionality that increases the variances\n", " of image-pixels where the lens model fits the data poorly.\n", " \n", " The premise is that whilst increasing the variances of image pixels lowers their S/N values and therefore also\n", diff --git a/notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb b/notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb new file mode 100644 index 0000000..7e63b16 --- /dev/null +++ b/notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb @@ -0,0 +1,1009 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 5: Bayesian Formalism\n", + "==============================\n", + "\n", + "In tutorials 1 to 4, we built an intuition for how pixelized source reconstruction works: pixelizations place a\n", + "pixel-grid in the source-plane, mappers pair source-pixels with image-pixels, inversions solve for the source-pixel\n", + "fluxes that best fit the data, and regularization smooths the solution within a Bayesian framework.\n", + "\n", + "This tutorial collects the linear algebra behind all of that in one place. It is the counterpart of chapter 1's\n", + "tutorial 5 on the lensing formalism: the hands-on tutorials built intuition, and now we write down the equations.\n", + "We will construct, step-by-step and in code, every matrix and vector the inversion uses, solve for the source\n", + "reconstruction ourselves and compute the Bayesian evidence by hand, comparing our answer at the end to the\n", + "`FitImaging` object which performs this calculation internally.\n", + "\n", + "None of this is required to *use* **PyAutoLens** for lens modeling. However, if you publish results which use a\n", + "pixelization, this is the calculation your paper's likelihood function section will describe, and understanding it\n", + "removes any sense that the source reconstruction is a \"black box\".\n", + "\n", + "The formalism follows Warren & Dye 2003 (https://arxiv.org/abs/astro-ph/0302587), hereafter WD03, with the data\n", + "vector notation of Nightingale & Dye 2015 (https://arxiv.org/abs/1412.7436), hereafter N15. The Bayesian evidence\n", + "was derived by Suyu et al. 2006 (https://arxiv.org/abs/astro-ph/0601493) and translated to **PyAutoLens** notation\n", + "in Dye et al. 2008 (https://arxiv.org/abs/0804.4002).\n", + "\n", + "__Contents__\n", + "\n", + "- **Initial Setup:** Load the dataset, mask it and disable over sampling so the algebra stays simple.\n", + "- **Mesh Shape:** Fix the rectangular mesh's shape and note why edge pixels are zeroed.\n", + "- **Ray Tracing:** Trace the masked image-pixel coordinates to the source-plane via the lens equation.\n", + "- **Border Relocation:** Relocate demagnified coordinates that trace far outside the source-plane border.\n", + "- **Source Pixel Centres:** Overlay the rectangular mesh over the traced coordinates.\n", + "- **Interpolation:** Pair every traced image-pixel with source pixels via bilinear interpolation.\n", + "- **Mapper:** Package the interpolation into a `Mapper` describing all image-to-source mappings.\n", + "- **Mapping Matrix:** Express the mappings as the 2D matrix $f$.\n", + "- **Blurred Mapping Matrix:** Convolve every column of $f$ with the imaging PSF.\n", + "- **Data Vector:** Compute the data vector $D$ from the blurred mapping matrix, data and noise-map.\n", + "- **Curvature Matrix:** Compute the curvature matrix $F$.\n", + "- **Unregularized Solve:** Solve $s = F^{-1} D$ and see the over-fitted mess this produces.\n", + "- **Regularization Matrix:** Compute the regularization matrix $H$ encoding the smoothness prior.\n", + "- **Source Reconstruction:** Solve the regularized system $s = [F + H]^{-1} D$.\n", + "- **Image Reconstruction:** Map the reconstruction back to the image-plane via the blurred mapping matrix.\n", + "- **Likelihood Function:** The five terms which combine into the log evidence.\n", + "- **Chi Squared:** The goodness-of-fit of the reconstructed image to the data.\n", + "- **Regularization Term:** The penalty $s^{T} H s$ applied by the smoothness prior.\n", + "- **Complexity Terms:** The log determinant terms which penalize complex source reconstructions.\n", + "- **Noise Normalization Term:** The Gaussian noise normalization.\n", + "- **Log Evidence:** Combine all five terms into the log evidence.\n", + "- **Fit:** Compare our by-hand log evidence to the `FitImaging` object's internal calculation.\n", + "- **Wrap Up:** Summary and next steps." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from pathlib import Path\n", + "\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Initial Setup__\n", + "\n", + "we'll use the same strong lensing data as the previous tutorials, where:\n", + "\n", + " - The lens galaxy's light is omitted.\n", + " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", + " - The source galaxy's light is an `Sersic`.\n", + "\n", + "Because the lens galaxy's light is omitted, the data is already \"lens subtracted\". WD03 make the same assumption,\n", + "so in the equations below the lens light model $b_{j}$ is zero everywhere. For a lens with light, one simply computes\n", + "the lens galaxy's PSF-convolved image first and subtracts it from the data before the steps below (the workspace\n", + "guide referenced at the end shows this in full)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"simple__no_lens_light\"\n", + "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Auto-Simulation__\n", + "\n", + "If the dataset does not already exist on your system, it will be created by running the corresponding\n", + "simulator script. This ensures that all example scripts can be run without manually simulating data first." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/no_lens_light.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mask__\n", + "\n", + "The likelihood is only evaluated within a mask, which we define as a 3.0\" circle containing all of the lensed\n", + "source's light." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=3.0,\n", + ")\n", + "\n", + "masked_dataset = dataset.apply_mask(mask=mask)\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=masked_dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Over Sampling__\n", + "\n", + "Over sampling splits every image pixel into a sub-grid of sub-pixels, each of which is traced to the source-plane\n", + "and paired with source pixels individually. It improves accuracy, but it also multiplies the number of rows in every\n", + "matrix below by the number of sub-pixels.\n", + "\n", + "To keep the algebra as easy to follow as possible, we disable over sampling by setting both sub-grid sizes to 1, so\n", + "each image pixel is represented by the single coordinate at its centre." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "masked_dataset = masked_dataset.apply_over_sampling(\n", + " over_sample_size_lp=1,\n", + " over_sample_size_pixelization=1,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mesh Shape__\n", + "\n", + "The `mesh_shape` defines the number of pixels in the rectangular mesh used to reconstruct the source, set below\n", + "to 20 x 20 = 400 source pixels.\n", + "\n", + "We use the `RectangularUniform` mesh, where all rectangular source pixels have the same size, rather than the\n", + "`RectangularAdaptDensity` mesh used in the previous tutorials. The uniform mesh keeps the geometry simple, and every\n", + "equation below applies unchanged to the adaptive meshes -- only the source pixel centres move.\n", + "\n", + "By default, source pixels at the edge of the mesh are forced to solutions of zero flux by the linear algebra solver.\n", + "This prevents unphysical solutions where the mesh edge lights up to fit residuals, and does not change any of the\n", + "formalism below." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mesh_pixels_yx = 20\n", + "mesh_shape = (mesh_pixels_yx, mesh_pixels_yx)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Tracer__\n", + "\n", + "We use the same lens galaxy mass model as the previous tutorials (an `Isothermal` plus `ExternalShear`, the true\n", + "model of the simulated data) and a source galaxy whose `Pixelization` pairs the `RectangularUniform` mesh with\n", + "`Constant` regularization (whose role appears later, when we reach the matrix $H$)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=1.6,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0),\n", + " ),\n", + " shear=al.mp.ExternalShear(gamma_1=0.05, gamma_2=0.05),\n", + ")\n", + "\n", + "pixelization = al.Pixelization(\n", + " mesh=al.mesh.RectangularUniform(shape=mesh_shape),\n", + " regularization=al.reg.Constant(coefficient=1.0),\n", + ")\n", + "\n", + "source_galaxy = al.Galaxy(redshift=1.0, pixelization=pixelization)\n", + "\n", + "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "Every 2D (y,x) image-plane coordinate $\\theta$ is ray-traced to its source-plane coordinate $\\beta$ by subtracting\n", + "the deflection angles $\\alpha$ of the mass profiles, via the lens equation we met in chapter 1:\n", + "\n", + " $\\beta = \\theta - \\alpha(\\theta)$\n", + "\n", + "The pixelization uses its own grid of coordinates, `masked_dataset.grids.pixelization`, with one coordinate at the\n", + "centre of every masked image pixel (because we disabled over sampling above). We trace this grid to the source-plane,\n", + "taking the final entry of the traced grid list (the source-plane)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "traced_grid_pixelization = tracer.traced_grid_2d_list_from(\n", + " grid=masked_dataset.grids.pixelization\n", + ")[-1]\n", + "\n", + "aplt.plot_grid(grid=traced_grid_pixelization, title=\"Traced Source-Plane Grid\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Border Relocation__\n", + "\n", + "Coordinates which pass close to the mass profile's centre are heavily demagnified and can trace to the far outskirts\n", + "of the source-plane.\n", + "\n", + "We relocate these coordinates to the edge of the source-plane border (defined via the border of the image-plane\n", + "mask), exactly as tutorial 6 explains in detail (see also figure 2 of https://arxiv.org/abs/1708.07377). This stops\n", + "a handful of demagnified coordinates stretching the mesh over a huge, empty region of the source-plane." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "from autoarray.inversion.mesh.border_relocator import BorderRelocator\n", + "\n", + "border_relocator = BorderRelocator(mask=masked_dataset.mask, sub_size=1)\n", + "\n", + "relocated_grid = border_relocator.relocated_grid_from(grid=traced_grid_pixelization)\n", + "\n", + "aplt.plot_grid(grid=relocated_grid, title=\"Relocated Source-Plane Grid\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Source Pixel Centres__\n", + "\n", + "To reconstruct the source on a `RectangularUniform` mesh, we need the centres of its rectangular source pixels.\n", + "\n", + "We compute these by overlaying a uniform rectangular grid over the relocated traced grid, sized so the mesh fully\n", + "contains the region of the source-plane the traced image-pixels cover, without wasted edge pixels beyond it." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "from autoarray.inversion.mesh.mesh.rectangular_adapt_density import overlay_grid_from\n", + "\n", + "mesh_grid = overlay_grid_from(\n", + " shape_native=mesh_shape, grid=al.Grid2DIrregular(relocated_grid)\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Interpolation__\n", + "\n", + "We now combine the two grids to create an `Interpolator`, which describes how every traced image-pixel coordinate\n", + "maps to the rectangular mesh pixels.\n", + "\n", + "For a rectangular mesh the scheme is bilinear interpolation: every image pixel maps to the rectangular pixel it\n", + "lands in *and* its three nearest neighbours, with weights set by how close the coordinate is to each pixel centre.\n", + "Interpolation is what lets the mesh reconstruct smooth source morphologies. We can print the mappings and weights of\n", + "the first image pixel to confirm it pairs with four source pixels." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "interpolator = pixelization.mesh.interpolator_from(\n", + " source_plane_data_grid=relocated_grid,\n", + " source_plane_mesh_grid=mesh_grid,\n", + ")\n", + "\n", + "print(interpolator.mappings[0])\n", + "print(interpolator.weights[0])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mapper__\n", + "\n", + "The interpolator creates a `Mapper`, the object tutorials 1 and 2 introduced. It packages up the mapping between\n", + "every image pixel and every rectangular source pixel.\n", + "\n", + "The key attribute is `pix_indexes_for_sub_slim_index`, mapping every image-pixel index (`sub_slim_index`) to the\n", + "source-pixel indexes (`pix_indexes`) it interpolates onto, alongside the number of mappings per image pixel and\n", + "their interpolation weights." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mapper = al.Mapper(interpolator=interpolator)\n", + "\n", + "pix_indexes_for_sub_slim_index = mapper.pix_indexes_for_sub_slim_index\n", + "\n", + "print(pix_indexes_for_sub_slim_index[0:9])\n", + "print(mapper.pix_sizes_for_sub_slim_index[0:9])\n", + "print(mapper.pix_weights_for_sub_slim_index[0:9])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mapping Matrix__\n", + "\n", + "The `mapping_matrix` expresses these image-pixel to source-pixel mappings as a single 2D matrix, with\n", + "dimensions `(total_image_pixels, total_source_pixels)`.\n", + "\n", + "Each column is the \"image\" of one source pixel: entries are the interpolation weights for image pixels which map to\n", + "that source pixel and zero everywhere else." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mapping_matrix = al.util.mapper.mapping_matrix_from(\n", + " pix_indexes_for_sub_slim_index=pix_indexes_for_sub_slim_index,\n", + " pix_size_for_sub_slim_index=mapper.pix_sizes_for_sub_slim_index,\n", + " pix_weights_for_sub_slim_index=mapper.pix_weights_for_sub_slim_index,\n", + " pixels=mapper.pixels,\n", + " total_mask_pixels=mapper.source_plane_data_grid.mask.pixels_in_mask,\n", + " slim_index_for_sub_slim_index=mapper.slim_index_for_sub_slim_index,\n", + " sub_fraction=mapper.over_sampler.sub_fraction,\n", + ")\n", + "\n", + "plt.imshow(mapping_matrix, aspect=(mapping_matrix.shape[1] / mapping_matrix.shape[0]))\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because each column is an image of zeros and interpolation weights, we can plot any column as a 2D image showing all\n", + "image pixels its source pixel maps to. For a source pixel near the mesh centre these image pixels trace the multiple\n", + "images of that patch of the source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "source_pixel_index = 210\n", + "\n", + "array_2d = al.Array2D(\n", + " values=mapping_matrix[:, source_pixel_index], mask=masked_dataset.mask\n", + ")\n", + "\n", + "aplt.plot_array(array=array_2d, title=\"Image of Source Pixel 210\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Blurred Mapping Matrix__\n", + "\n", + "The imaging data is blurred by the telescope's PSF, so the model must be too. Since each column of the mapping\n", + "matrix is an image, we simply convolve each column with the PSF via 2D convolution.\n", + "\n", + "This produces the `blurred_mapping_matrix`, with the same dimensions `(total_image_pixels, total_source_pixels)`.\n", + "\n", + "In WD03 this matrix is denoted $f_{ij}$, where $i$ runs over all $I$ source pixels and $j$ over all $J$ image\n", + "pixels. For example:\n", + "\n", + " - $f_{0, 2} = 0.3$ indicates that image-pixel $2$ maps to source-pixel $0$ with a weight of $0.3$ after PSF\n", + " convolution.\n", + " - $f_{4, 8} = 0$ indicates that image-pixel $8$ does not map to source-pixel $4$, even after PSF convolution.\n", + "\n", + "(The indexing of the code's `mapping_matrix` is transposed relative to WD03's $f$: image pixels are the first index\n", + "in the code, but the second index in the equations.)\n", + "\n", + "PSF blurring has an important consequence: whereas before, no two source pixels shared an image pixel, blurring\n", + "correlates neighbouring columns, so the images of nearby source pixels now overlap." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "blurred_mapping_matrix = masked_dataset.psf.convolved_mapping_matrix_from(\n", + " mapping_matrix=mapping_matrix, mask=masked_dataset.mask\n", + ")\n", + "\n", + "plt.imshow(\n", + " blurred_mapping_matrix,\n", + " aspect=(blurred_mapping_matrix.shape[1] / blurred_mapping_matrix.shape[0]),\n", + ")\n", + "plt.colorbar()\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Data Vector (D)__\n", + "\n", + "We now pose the reconstruction as a linear inversion, converting the blurred mapping matrix, data and noise-map\n", + "into two objects: the data vector $D$ and the curvature matrix $F$.\n", + "\n", + "The data vector has dimensions `(total_source_pixels,)` and is given by (WD03 / N15):\n", + "\n", + " $\\vec{D}_{i} = \\sum_{j=1}^{J} f_{ij} (d_{j} - b_{j}) / \\sigma_{j}^2 \\, \\, .$\n", + "\n", + "Where:\n", + "\n", + " - $d_{j}$ are the image-pixel data values.\n", + " - $b_{j}$ are the lens light model values ($d_{j} - b_{j}$ is the lens-subtracted image; zero for this dataset).\n", + " - $\\sigma_{j}^2$ are the statistical uncertainties of each image pixel.\n", + "\n", + "Each entry of $D$ is therefore the noise-weighted overlap between one source pixel's blurred image and the data:\n", + "it measures how much evidence the data provides for flux in that source pixel, with the PSF fully accounted for." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "data_vector = al.util.inversion_imaging.data_vector_via_blurred_mapping_matrix_from(\n", + " blurred_mapping_matrix=blurred_mapping_matrix,\n", + " image=np.array(masked_dataset.data),\n", + " noise_map=np.array(masked_dataset.noise_map),\n", + ")\n", + "\n", + "plt.imshow(\n", + " data_vector.reshape(data_vector.shape[0], 1), aspect=10.0 / data_vector.shape[0]\n", + ")\n", + "plt.colorbar()\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Curvature Matrix (F)__\n", + "\n", + "The curvature matrix has dimensions `(total_source_pixels, total_source_pixels)` and is given by (WD03):\n", + "\n", + " ${F}_{ik} = \\sum_{j=1}^{J} f_{ij} f_{kj} / \\sigma_{j}^2 \\, \\, .$\n", + "\n", + "Every entry of $F$ is the noise-weighted overlap between the blurred images of two source pixels: $F_{ik}$ sums the\n", + "product of columns $i$ and $k$ of $f$ over all image pixels. For $F_{ik}$ to be non-zero, source pixels $i$ and $k$\n", + "must share at least one image pixel, which (interpolation aside) only happens because of PSF blurring.\n", + "\n", + "$F$ describes how degenerate pairs of source pixels are with one another: two source pixels whose blurred images\n", + "overlap heavily can trade flux between themselves whilst fitting the data almost equally well." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "curvature_matrix = al.util.inversion.curvature_matrix_via_mapping_matrix_from(\n", + " mapping_matrix=blurred_mapping_matrix, noise_map=masked_dataset.noise_map\n", + ")\n", + "\n", + "plt.imshow(curvature_matrix)\n", + "plt.colorbar()\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Unregularized Solve__\n", + "\n", + "The inversion seeks the source-pixel fluxes $s$ (a vector with one entry per source pixel) that minimize the\n", + "chi-squared:\n", + "\n", + " $\\chi^2 = \\sum_{j=1}^{J} \\bigg[ \\frac{(\\sum_{i=1}^{I} s_{i} f_{ij}) + b_{j} - d_{j}}{\\sigma_{j}} \\bigg]^2$\n", + "\n", + "Setting the derivative of $\\chi^2$ with respect to each $s_{i}$ to zero gives the linear system whose solution is\n", + "(equation 5 of WD03):\n", + "\n", + " $s = F^{-1} D$\n", + "\n", + "We can solve this directly with NumPy. (Without regularization the curvature matrix is often singular, so the loop\n", + "below adds a tiny value to its diagonal to avoid a `LinAlgError` -- it is a numerical crutch, not part of the\n", + "formalism.)" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for i in range(curvature_matrix.shape[0]):\n", + " curvature_matrix[i, i] += 1e-8\n", + "\n", + "reconstruction = np.linalg.solve(curvature_matrix, data_vector)\n", + "\n", + "print(reconstruction)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The reconstructed source-pixel fluxes are a noisy, unsmooth mess -- exactly the over-fitting we saw in tutorial 4\n", + "when we set the regularization coefficient to zero. The linear inversion is fitting the noise in the data, because\n", + "this system of equations is ill-posed: we need a smoothness prior.\n", + "\n", + "__Regularization Matrix (H)__\n", + "\n", + "Regularization adds a linear regularization term $G_{L}$ to the merit function we minimize (equation 11 of WD03):\n", + "\n", + " $G = \\chi^2 + \\lambda \\, G_{L}$\n", + "\n", + "where $\\lambda$ is the `regularization_coefficient` controlling the degree of smoothing. The `Constant` scheme uses\n", + "gradient regularization (equation 14 of WD03):\n", + "\n", + " $G_{L} = \\sum_{i}^{I} \\sum_{n=1}^{N} [s_{i} - s_{i, n}]^2$\n", + "\n", + "In words: for every source pixel, compare its flux with each of its $N$ neighbours $n$, and penalize solutions where\n", + "the differences are large. This is precisely the \"smoothness prior\" of tutorial 4, now written as an equation.\n", + "\n", + "To fold this into the linear algebra we define the regularization matrix $H$, with\n", + "dimensions `(total_source_pixels, total_source_pixels)` (equation 13 of WD03):\n", + "\n", + " $H_{ik} = \\frac{1}{2} \\frac{\\partial^{2} G_{L}}{\\partial s_{i} \\partial s_{k}}$\n", + "\n", + "$H$ has the coefficient $\\lambda$ folded into it. Its non-zero off-diagonal entries mark pairs of source pixels\n", + "which are neighbours and therefore regularized with one another; most entries are zero because most source pixels\n", + "are not neighbours." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "regularization_matrix = al.util.regularization.constant_regularization_matrix_from(\n", + " coefficient=source_galaxy.pixelization.regularization.coefficient,\n", + " neighbors=mapper.neighbors,\n", + " neighbors_sizes=mapper.neighbors.sizes,\n", + ")\n", + "\n", + "plt.imshow(regularization_matrix)\n", + "plt.colorbar()\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Source Reconstruction (s)__\n", + "\n", + "$H$ enters the linear system as follows (equation 12 of WD03):\n", + "\n", + " $s = [F + H]^{-1} D$\n", + "\n", + "We add the two matrices and solve again. The diagonal jitter used above is no longer needed, because $H$ makes the\n", + "system well-posed." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "curvature_reg_matrix = np.add(curvature_matrix, regularization_matrix)\n", + "\n", + "reconstruction = np.linalg.solve(curvature_reg_matrix, data_vector)\n", + "\n", + "print(reconstruction)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The reconstructed fluxes are now smooth and physical: regularization has suppressed the noisy solution and the\n", + "reconstruction actually looks like a galaxy, without over-fitting the noise.\n", + "\n", + "__Image Reconstruction__\n", + "\n", + "Using the reconstructed source-pixel fluxes, we map the source back to the image-plane via the blurred mapping\n", + "matrix (so the reconstructed image includes PSF blurring) to produce the model image of the lensed source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mapped_reconstructed_data = (\n", + " al.util.inversion.mapped_reconstructed_data_via_mapping_matrix_from(\n", + " mapping_matrix=blurred_mapping_matrix, reconstruction=reconstruction\n", + " )\n", + ")\n", + "\n", + "mapped_reconstructed_data = al.Array2D(\n", + " values=mapped_reconstructed_data, mask=masked_dataset.mask\n", + ")\n", + "\n", + "aplt.plot_array(array=mapped_reconstructed_data, title=\"Reconstructed Image\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Likelihood Function__\n", + "\n", + "We now quantify the goodness-of-fit of the source reconstruction, computing the quantity tutorial 4 called the\n", + "Bayesian evidence. The log evidence consists of five terms:\n", + "\n", + " $-2 \\, \\mathrm{ln} \\, \\epsilon = \\chi^2 + s^{T} H s + \\mathrm{ln} \\, [ \\mathrm{det} (F + H) ] - \\mathrm{ln} \\, [ \\mathrm{det} (H) ] + \\sum_{j=1}^{J} \\mathrm{ln} \\, [2 \\pi (\\sigma_{j})^2 ] \\, .$\n", + "\n", + "This expression was first derived by Suyu et al. 2006 (https://arxiv.org/abs/astro-ph/0601493), equation (19), and\n", + "is given in **PyAutoLens** notation by Dye et al. 2008 (https://arxiv.org/abs/0804.4002), equation (5).\n", + "\n", + "We now compute each term in turn.\n", + "\n", + "__Chi Squared__\n", + "\n", + "The first term is the $\\chi^2$ statistic from the merit function above, computed as:\n", + "\n", + " - `model_data` = the reconstructed image of the lensed source (plus the lens light model, zero here).\n", + " - `residual_map` = (`data` - `model_data`)\n", + " - `normalized_residual_map` = (`data` - `model_data`) / `noise_map`\n", + " - `chi_squared_map` = (`normalized_residual_map`) ** 2.0\n", + " - `chi_squared` = sum(`chi_squared_map`)\n", + "\n", + "High chi-squared values indicate image pixels the reconstruction fits poorly, lowering the likelihood." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "model_image = mapped_reconstructed_data\n", + "\n", + "residual_map = masked_dataset.data - model_image\n", + "normalized_residual_map = residual_map / masked_dataset.noise_map\n", + "chi_squared_map = normalized_residual_map**2.0\n", + "\n", + "chi_squared = np.sum(chi_squared_map)\n", + "\n", + "print(chi_squared)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Regularization Term__\n", + "\n", + "The second term, $s^{T} H s$, is the $\\lambda \\, G_{L}$ regularization penalty evaluated at the solution: the summed\n", + "difference in flux between all neighbouring source pixels, weighted by the regularization coefficient (which is\n", + "already folded into $H$).\n", + "\n", + "Less smooth solutions have larger values of this term and therefore lower likelihoods." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "regularization_term = np.matmul(\n", + " reconstruction.T, np.matmul(regularization_matrix, reconstruction)\n", + ")\n", + "\n", + "print(regularization_term)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Complexity Terms__\n", + "\n", + "Up to this point, nothing has justified our choice of `regularization_coefficient=1.0`. We cannot choose it using\n", + "the two terms above, because increasing the coefficient smooths the solution more, which *both* worsens the\n", + "chi-squared *and* (for a fixed solution) raises the regularization penalty. Optimizing those two terms alone would\n", + "drive the coefficient to zero and put us right back at the over-fitted mess.\n", + "\n", + "The two log determinant terms, $\\mathrm{ln} \\, [ \\mathrm{det} (F + H) ]$ and $- \\mathrm{ln} \\, [ \\mathrm{det} (H) ]$,\n", + "fix this. Together they measure how *complex* the source reconstruction is -- roughly, how many effective degrees\n", + "of freedom the source uses after regularization correlates its pixels -- and penalize more complex solutions.\n", + "Lowering the regularization coefficient frees the source to use more of its flexibility, increasing this complexity\n", + "penalty.\n", + "\n", + "These terms therefore counteract the chi-squared and regularization terms, so the highest evidence goes to solutions\n", + "which fit the data well with the *simplest* source reconstruction. This is the Occam's razor behaviour that\n", + "tutorial 4 demonstrated empirically." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "log_curvature_reg_matrix_term = np.linalg.slogdet(curvature_reg_matrix)[1]\n", + "log_regularization_matrix_term = np.linalg.slogdet(regularization_matrix)[1]\n", + "\n", + "print(log_curvature_reg_matrix_term)\n", + "print(log_regularization_matrix_term)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Noise Normalization Term__\n", + "\n", + "The likelihood function assumes the imaging data consists of independent Gaussian noise in every image pixel, and\n", + "the final term is the normalization of those Gaussians: the sum of the log of every noise-map value squared.\n", + "\n", + "Because the noise-map is fixed, this term is constant throughout lens modeling and has no impact on the model\n", + "we infer -- it simply normalizes the likelihood." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "noise_normalization = float(np.sum(np.log(2 * np.pi * masked_dataset.noise_map**2.0)))\n", + "\n", + "print(noise_normalization)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Log Evidence__\n", + "\n", + "We can now combine the five terms into the log evidence of the source reconstruction." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "log_evidence = float(\n", + " -0.5\n", + " * (\n", + " chi_squared\n", + " + regularization_term\n", + " + log_curvature_reg_matrix_term\n", + " - log_regularization_matrix_term\n", + " + noise_normalization\n", + " )\n", + ")\n", + "\n", + "print(log_evidence)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Fit__\n", + "\n", + "Everything above is what the `FitImaging` object does internally when it fits a tracer whose source galaxy has a\n", + "pixelization. We can see this by performing the fit and comparing its `log_evidence` to ours.\n", + "\n", + "The two values are close but not identical, because the real fit improves on our simplified solve in two ways\n", + "mentioned along the way: it uses the positive-only solver (tutorial 3), which forbids the negative source-pixel\n", + "fluxes our unconstrained `np.linalg.solve` permits, and it zeroes the pixels at the edge of the mesh. Neither\n", + "changes the formalism -- the same $f$, $D$, $F$ and $H$ feed a solver with extra constraints." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "fit = al.FitImaging(\n", + " dataset=masked_dataset,\n", + " tracer=tracer,\n", + " settings=al.Settings(use_border_relocator=True),\n", + ")\n", + "\n", + "print(fit.log_evidence)\n", + "\n", + "aplt.subplot_fit_imaging(fit=fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Wrap Up__\n", + "\n", + "We have walked through the complete linear algebra of a pixelized source reconstruction:\n", + "\n", + " - The `mapping_matrix` and PSF-blurred mapping matrix $f$, whose columns are the blurred images of each\n", + " source pixel.\n", + "\n", + " - The data vector $D$ and curvature matrix $F$, the noise-weighted overlaps of those images with the data and with\n", + " each other.\n", + "\n", + " - The regularization matrix $H$, which encodes the smoothness prior, and the linear solve $s = [F + H]^{-1} D$ for\n", + " the source reconstruction.\n", + "\n", + " - The five terms of the Suyu et al. 2006 log evidence -- chi-squared, the regularization penalty, the two log\n", + " determinant complexity terms and the noise normalization -- and their Bayesian interpretation as an Occam's\n", + " razor which favours the simplest source reconstruction the data allows.\n", + "\n", + "During lens modeling, this whole calculation is one likelihood evaluation: the non-linear search varies the mass\n", + "model (and, later in this chapter, the pixelization and regularization parameters), and each sample triggers the\n", + "full ray-trace, solve and evidence computation above.\n", + "\n", + "Two simplifications are worth remembering: real fits use over sampling (each image pixel contributes several\n", + "sub-pixel rows to $f$) and **PyAutoLens** uses a positive-only solver for $s$ rather than the unconstrained\n", + "`np.linalg.solve` used here (see tutorial 3). The workspace\n", + "guide `autolens_workspace/*/imaging/features/pixelization/likelihood_function.ipynb` repeats this walk-through with\n", + "lens light included and additional visualization of every step.\n", + "\n", + "In the next tutorial, we return to hands-on territory and look at borders, which deal with the demagnified traced\n", + "coordinates whose relocation we performed in a single line above." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb b/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb index 440b2bb..615dee7 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 5: Borders\n", + "Tutorial 6: Borders\n", "===================\n", "\n", "In the previous tutorials, the source-plane pixel grid perfectly mapped over the traced image-pixel $(y,x)$ coordinates\n", @@ -12,7 +12,8 @@ "increase its size so as to cover every source-plane coordinate.\n", "\n", "In this tutorial, we will consider how the size of the pixelization grid is chosen and introduce the concept of a\n", - "border.\n", + "border. The previous tutorial applied border relocation as a single step of the likelihood algebra -- here we see\n", + "why that step is needed.\n", "\n", "__Contents__\n", "\n", @@ -143,7 +144,7 @@ "\n", "So, what is a border? In the image-plane, a border is the set of exterior pixels in a mask that are at its border.\n", "\n", - "Lets plot the image with a circular circular and tell our `aplt.subplot_imaging_dataset` to plot the border." + "Lets apply a circular mask to the image and plot the dataset -- the border is the ring of pixels at the mask's edge." ] }, { @@ -169,8 +170,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As you can see, for a circular mask the border *is* the edge of the mask (the ring of black dots we're used to \n", - "seeing whenever we plot a mask. \n", + "As you can see, for a circular mask the border *is* the edge of the mask (the ring of black dots we're used to\n", + "seeing whenever we plot a mask).\n", "\n", "For an annular mask, pixels on its inner edge are not a part of the border, whereas those on its outer edge are." ] @@ -240,10 +241,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Okay, so lets first look at the mapper without using a border and using annular mask.\n", + "Okay, so lets first look at the mapper without using a border, using the annular mask.\n", "\n", - "First, note how we set up the border, using a `al.Settings` object. This behaves analogously to the \n", - "`SettingsLens` objects we have used in previous tutorials." + "Note how we control the border via the `al.Settings` object's `use_border_relocator` input." ] }, { @@ -331,12 +331,12 @@ "So, why is this happening? What is the mass profile physically doing to create these source plane coordinates at \n", "extremely large radial values? \n", "\n", - "Towards the centre of th elliptical isothermal mass profile, the density begins to rise very sharply, it becomes \n", - "extremely steep or 'cuspy'. This cuspy behaviour towards its centre can cause extremely large deflection angles to be \n", - "calculated:\n", + "Towards the centre of the elliptical isothermal mass profile, the density begins to rise very sharply, it becomes\n", + "extremely steep or 'cuspy'. This cuspy behaviour towards its centre causes extremely large deflection angles to be\n", + "calculated.\n", "\n", - "Central image pixel can therefore be subjected to 'demagnification', whereby they trace to extremely large values in \n", - "the source plane! \n", + "Central image pixels are therefore subjected to 'demagnification', whereby they trace to extremely large values in\n", + "the source plane!\n", "\n", "Physically, this is not a problem, and it is the reason we do not see a 'central image' in most strong lenses, as the \n", "light-rays which take this path through the centre of the lens are demagnified. However, if the lens galaxy had a less\n", @@ -345,15 +345,15 @@ "Demagnification is a problem for the pixelization and inversion though, which reconstruct the flux of these \n", "demagnified pixels just like the other pixels in the image-pixel. There are two negative consequences:\n", "\n", - " 1) The rectangular pixel-grid that we 'lay over' the source-plane is very larger because it expands to include the \n", - " demagnified image-pixels. As a result, larger source-pixels are used to reconstruct the central regions of the \n", - " source-plane (where the source galaxy is actually located), meaning we reconstruct the source-galaxy at a lower \n", + " 1) The rectangular pixel-grid that we 'lay over' the source-plane becomes very large, because it expands to include\n", + " the demagnified image-pixels. As a result, larger source-pixels are used to reconstruct the central regions of the\n", + " source-plane (where the source galaxy is actually located), meaning we reconstruct the source-galaxy at a lower\n", " effective resolution.\n", - " \n", - " 2) The inversion reconstructs the flux of the demanigified image pixels using source-pixels which contain *only* \n", - " demagnified image pixels (these are the source pixels at the edge of the source plane). These source-pixels *should* \n", - " have had other image-pixels traced within them via image-pixels at even larger radii from the centre of the lens \n", - " galaxy. However, these image-pixels are at radii above 3.0\", meaning the circular mask removed them from the inversion.\n", + "\n", + " 2) The inversion reconstructs the flux of the demagnified image pixels using source-pixels which contain *only*\n", + " demagnified image pixels (these are the source pixels at the edge of the source plane). These source-pixels *should*\n", + " have had other image-pixels traced within them via image-pixels at even larger radii from the centre of the lens\n", + " galaxy. However, these image-pixels are at radii above 2.5\", meaning the circular mask removed them from the inversion.\n", "\n", "Lets quickly use a large circular mask to confirm that these pixels exist when we don't mask them." ] @@ -371,7 +371,7 @@ "fit = perform_fit_with_source_galaxy_mask_and_border(\n", " dataset=dataset_unmasked,\n", " source_galaxy=source_galaxy,\n", - " mask=mask_circular,\n", + " mask=mask_circular_large,\n", " settings=al.Settings(use_border_relocator=False),\n", ")\n", "\n", @@ -432,7 +432,7 @@ "and lensing configurations produce nasty edge effects where image pixels not just in the centre of mask, but anywhere \n", "in the mask, trace beyond the source-plane border.\n", "\n", - "we'll use new strong lensing data as the previous tutorial, where:\n", + "we'll use new strong lensing data, where:\n", "\n", " - The lens galaxy's light is omitted.\n", " - There are two lens galaxies whose `MassProfile`'s are `Isothermal`.\n", @@ -476,7 +476,7 @@ " data_path=dataset_path / \"data.fits\",\n", " noise_map_path=dataset_path / \"noise_map.fits\",\n", " psf_path=dataset_path / \"psf.fits\",\n", - " pixel_scales=0.05,\n", + " pixel_scales=0.1,\n", ")" ], "outputs": [], @@ -486,7 +486,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We again must define a mask around this image, lets start with a 2.8\" mask. we'll use larger masks to illustrate the\n", + "We again must define a mask around this image, lets start with a 2.8\" mask. we'll vary the mask size to illustrate the\n", "effects of the border in a moment." ] }, @@ -540,7 +540,7 @@ " sersic_index=2.5,\n", " ),\n", " mass=al.mp.Isothermal(\n", - " centre=(1.1, 0.51), ell_comps=(0.0, 0.15), einstein_radius=1.07\n", + " centre=(0.0, -1.0), ell_comps=(0.17647, 0.0), einstein_radius=1.0\n", " ),\n", " )\n", "\n", @@ -554,7 +554,7 @@ " sersic_index=3.0,\n", " ),\n", " mass=al.mp.Isothermal(\n", - " centre=(-0.20, -0.35), ell_comps=(0.06, 0.1053), einstein_radius=0.71\n", + " centre=(0.0, 1.0), ell_comps=(0.0, -0.111111), einstein_radius=0.8\n", " ),\n", " )\n", "\n", @@ -586,10 +586,6 @@ "\n", "mapper = fit.inversion.cls_list_from(al.Mapper)[0]\n", "\n", - "border = mapper.source_plane_data_grid.over_sampled[\n", - " fit.dataset.grids.border_relocator.sub_border_slim\n", - "]\n", - "\n", "\n", "aplt.plot_array(array=fit.model_data, title=\"Plane 1 Image\")" ], @@ -617,10 +613,6 @@ "\n", "mapper = fit.inversion.cls_list_from(al.Mapper)[0]\n", "\n", - "border = mapper.source_plane_data_grid.over_sampled[\n", - " fit.dataset.grids.border_relocator.sub_border_slim\n", - "]\n", - "\n", "aplt.plot_array(array=fit.model_data, title=\"Plane 1 Image\")" ], "outputs": [], @@ -630,15 +622,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Multi-galaxy modeling is rife for border effects and if you have multiple lens galaxies I heartily recommend you pay \n", - "a close eye to your source-plane borders!\n", + "Multi-galaxy modeling is rife with border effects, and if you have multiple lens galaxies I heartily recommend you\n", + "keep a close eye on your source-plane borders!\n", "\n", - "Care must also be taken when choosing the size of your mask. If you don't choose a big enough mask, the border won't \n", - "be able to relocate all of the demanigified image pixels to the border edge.\n", + "Care must also be taken when choosing the size of your mask. If you don't choose a big enough mask, the border won't\n", + "be able to relocate all of the demagnified image pixels to the border edge.\n", "\n", - "(The figures below look pretty horrible, because every ray-traced image coordinate is being plotted in the \n", - "source plane. Therefore, there are many black dots which overwhelm the figure. The point to focus on are the\n", - "edges of the grid, where one can see the relocations of these coordinates." + "The fits below repeat the analysis with progressively larger circular masks, so you can see how the mask size\n", + "changes the border and the resulting model image." ] }, { @@ -665,10 +656,6 @@ "\n", "mapper = fit.inversion.cls_list_from(al.Mapper)[0]\n", "\n", - "border = mapper.source_plane_data_grid.over_sampled[\n", - " fit.dataset.grids.border_relocator.sub_border_slim\n", - "]\n", - "\n", "\n", "aplt.plot_array(array=fit.model_data, title=\"Plane 1 Image\")\n", "\n", @@ -686,10 +673,6 @@ "\n", "mapper = fit.inversion.cls_list_from(al.Mapper)[0]\n", "\n", - "border = mapper.source_plane_data_grid.over_sampled[\n", - " fit.dataset.grids.border_relocator.sub_border_slim\n", - "]\n", - "\n", "\n", "aplt.plot_array(array=fit.model_data, title=\"Plane 1 Image\")\n", "\n", @@ -714,10 +697,6 @@ "\n", "mapper = fit.inversion.cls_list_from(al.Mapper)[0]\n", "\n", - "border = mapper.source_plane_data_grid.over_sampled[\n", - " fit.dataset.grids.border_relocator.sub_border_slim\n", - "]\n", - "\n", "\n", "aplt.plot_array(array=fit.model_data, title=\"Plane 1 Image\")\n", "\n", @@ -743,10 +722,6 @@ "\n", "mapper = fit.inversion.cls_list_from(al.Mapper)[0]\n", "\n", - "border = mapper.source_plane_data_grid.over_sampled[\n", - " fit.dataset.grids.border_relocator.sub_border_slim\n", - "]\n", - "\n", "\n", "aplt.plot_array(array=fit.model_data, title=\"Plane 1 Image\")" ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb b/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb index 2489d0e..d91ee3d 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb @@ -4,19 +4,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 6: Lens Modeling\n", + "Tutorial 7: Lens Modeling\n", "=========================\n", "\n", - "When modeling complex source's with parametric profiles, we quickly entered a regime where our non-linear search was\n", + "When modeling complex sources with parametric profiles, we quickly entered a regime where our non-linear search was\n", "faced with a parameter space of dimensionality N=20+ parameters. This made the model-fitting inefficient and likely to\n", "infer a local maxima.\n", "\n", - "Inversions do not suffer this problem, meaning they are a very a powerful tool for modeling strong lenses. Furthermore,\n", - "they have *more* freemdom than parametric light profiles because they do not relying on specific analytic light\n", + "Inversions do not suffer this problem, meaning they are a very powerful tool for modeling strong lenses. Furthermore,\n", + "they have *more* freedom than parametric light profiles because they do not rely on specific analytic light\n", "distributions and a symmetric profile shape. This will allow us to fit more complex mass models and ask ever more\n", "interesting scientific questions!\n", "\n", - "However, inversion do have some short comings that we need to be aware of before we use them for lens modeling. That`s\n", + "However, inversions do have some shortcomings that we need to be aware of before we use them for lens modeling. That's\n", "what we cover in this tutorial.\n", "\n", "__Contents__\n", @@ -185,8 +185,8 @@ "The code below illustrates a systematic set of solutions called demagnified solutions, which negatively impact\n", "lens modeling using source pixelizations.\n", "\n", - "Since writing the code below, I have wrote a full readthedocs page illustrating the issue, which is linked too below.\n", - "I recommend you read this page first, to understand what a demagnified solution is, why its a problem and how we\n", + "Since writing the code below, I have written a full readthedocs page illustrating the issue, which is linked to below.\n", + "I recommend you read this page first, to understand what a demagnified solution is, why it is a problem and how we\n", "fix it. The code below should then build on this.\n", "\n", " https://pyautolens.readthedocs.io/en/latest/general/demagnified_solutions.html\n", @@ -236,9 +236,9 @@ "What happened!? This incorrect mass-model provides a really good fit to the image! The residuals and chi-squared-map \n", "are as good as the ones we saw in the previous tutorials.\n", "\n", - "How can an incorrect lens model provide such a fit? Well, as I'm sure you noticed, the source has been reconstructed \n", - "as a demagnified version of the image. Clearly, this is not a physical solution or a solution that we want our \n", - "non-linear search to find, but for inversion's the reality is these solutions eixst.\n", + "How can an incorrect lens model provide such a fit? Well, as I'm sure you noticed, the source has been reconstructed\n", + "as a demagnified version of the image. Clearly, this is not a physical solution or a solution that we want our\n", + "non-linear search to find, but for inversions the reality is these solutions exist.\n", "\n", "This is not necessarily problematic for lens modeling. Afterall, the source reconstruction above is extremely complex, \n", "it requires a lot of source pixels to fit the image accurately and its lack of smoothness will be heavily penalized\n", @@ -286,19 +286,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `log_evidence` *is* lower. However, the difference in `log_evidence` is not *that large*. This could be a problem \n", - "for the non-linear search, as it will see many solutions in parameter space with high `log_evidence` values. Furthermore, \n", - "these solutions occupy a *large volumne* of parameter space (e.g. everywhere the lens model that is wrong). This makes \n", - "it easy for the non-linear search to get lost searching through these unphysical solutions and, unfortunately, inferring \n", + "The `log_evidence` *is* lower. However, the difference in `log_evidence` is not *that large*. This could be a problem\n", + "for the non-linear search, as it will see many solutions in parameter space with high `log_evidence` values. Furthermore,\n", + "these solutions occupy a *large volume* of parameter space (e.g. everywhere the lens model is wrong). This makes\n", + "it easy for the non-linear search to get lost searching through these unphysical solutions and, unfortunately, inferring\n", "an incorrect lens model (e.g. a local maxima).\n", "\n", - "There is no simple fix for this, and it is the price we pay for making the inversion has so much flexibility in how it\n", - "reconstructs the source's light. The solution to this problem? Search chaining. In fact, this is the problem that lead\n", - "us to initially conceive of search chaining! \n", + "There is no simple fix for this, and it is the price we pay for giving the inversion so much flexibility in how it\n", + "reconstructs the source's light. The solution to this problem? Search chaining, which we covered at the end of\n", + "chapter 2 (tutorials 9-11). In fact, this is the problem that led us to initially conceive of search chaining!\n", "\n", "The idea is simple, we write a pipeline that begins by modeling the source galaxy's light using a light profile, thereby\n", - "initializing the priors for the lens galaxy's light and mass. Then, when we switch to an `Inversion` in the next \n", - "search, the mass model starts in the correct regions of parameter space and does not get lost sampling these \n", + "initializing the priors for the lens galaxy's light and mass. Then, when we switch to an `Inversion` in the next\n", + "search, the mass model starts in the correct regions of parameter space and does not get lost sampling these\n", "incorrect solutions.\n", "\n", "The following paper discusses these solutions in more detail (https://arxiv.org/abs/2012.04665).\n", @@ -309,8 +309,8 @@ "simultaneously fit and subtract the lens galaxy's light using a light profile whilst reconstructing the source's\n", "light using an inversion. \n", "\n", - "To do this, all we have to do is give the lens galaxy a light profile and use the tracer and fit objects we are used \n", - "too:." + "To do this, all we have to do is give the lens galaxy a light profile and use the tracer and fit objects we are\n", + "used to." ] }, { @@ -342,9 +342,7 @@ " radius=2.5,\n", ")\n", "\n", - "aplt.subplot_imaging_dataset(dataset=dataset)\n", - "\n", - "aplt.subplot_fit_imaging_of_planes(fit=fit)" + "aplt.subplot_imaging_dataset(dataset=dataset)" ], "outputs": [], "execution_count": null @@ -468,13 +466,13 @@ "source": [ "__Wrap Up__\n", "\n", - "And with that, we're done. I'll end by pointing out a few things about what we've covered to get you thinking about \n", - "the next tutorial on adaption.\n", - " \n", - " - When the lens galaxy's light is subtracted perfectly it leaves no residuals. However, if it isn't subtracted \n", - " perfectly it does leave residuals, which will be fitted by the inversion. If the residual are significant this is \n", - " going to impact the source reconstruction negatively and can lead to some pretty nasty systematics. In the next \n", - " chapter, we'll learn how our adaptive analysis can prevent this residual fitting." + "And with that, we're done. I'll end by pointing out a few things about what we've covered to get you thinking about\n", + "the adaption tutorials later in this chapter.\n", + "\n", + " - When the lens galaxy's light is subtracted perfectly it leaves no residuals. However, if it isn't subtracted\n", + " perfectly it does leave residuals, which will be fitted by the inversion. If the residuals are significant this is\n", + " going to impact the source reconstruction negatively and can lead to some pretty nasty systematics. In the adaption\n", + " tutorials at the end of this chapter, we'll learn how our adaptive analysis can prevent this residual fitting." ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb b/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb index 88a136f..6fb82da 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 7: Adaptive Pixelization\n", + "Tutorial 8: Adaptive Pixelization\n", "=================================\n", "\n", "In this tutorial we will introduce a new `Pixelization` object, which uses an `Overlay` image-mesh and a `Delaunay`\n", @@ -17,7 +17,7 @@ "__Contents__\n", "\n", "- **Initial Setup:** We'll use the same strong lensing data as the previous tutorial, where.\n", - "- **Advantages and Disadvatanges:** Lets think about the rectangular pixelization.\n", + "- **Advantages and Disadvantages:** Lets think about the rectangular pixelization.\n", "- **Image Mesh:** The Delaunay mesh is an irregular grid of pixels (or triangles) in the source-plane.\n", "- **Regularization:** On the rectangular grid, we regularized each source pixel with its 4 neighbors.\n", "- **Wrap Up:** Summary of the script and next steps." @@ -200,12 +200,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "__Advantages and Disadvatanges__\n", + "__Advantages and Disadvantages__\n", "\n", - "Lets think about the rectangular pixelization. Is this the optimal way to reconstruct our source? Are there features \n", - "in the source-plane that arn`t ideal? How do you think we could do a better job?\n", + "Lets think about the rectangular pixelization. Is this the optimal way to reconstruct our source? Are there features\n", + "in the source-plane that aren't ideal? How do you think we could do a better job?\n", "\n", - "There are a number of reasons the rectangular pixelization is not optimal, and is infact a pretty poor method to \n", + "There are a number of reasons the rectangular pixelization is not optimal, and it is in fact a pretty poor method to\n", "model strong lenses!\n", "\n", "So what is wrong with the grid? Well, lets think about the source reconstruction." @@ -227,10 +227,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There is one clear problem, we are using only a small number of the total source pixels to reconstruct the source. The \n", - "majority of source pixels are located away from the source. By my estimate, we are using just 16 pixels (the central \n", - "4x4 grid) out of the 1600 pixels to actually fit the data! The remaining ~1500 pixels are doing nothing but fitting \n", - "noise. \n", + "There is one clear problem, we are using only a small number of the total source pixels to reconstruct the source. The\n", + "majority of source pixels are located away from the source. By my estimate, we are using just 16 pixels (the central\n", + "4x4 grid) out of the 784 pixels to actually fit the data! The remaining ~750 pixels are doing nothing but fitting\n", + "noise.\n", "\n", "This means that regularization is sub-optimal. In tutorial 4, we discussed how the Bayesian evidence of the \n", "regularization favours the simplest source solution. That is, the solution which fits the data using the fewest source \n", @@ -246,7 +246,7 @@ "__Image Mesh__\n", "\n", "The Delaunay mesh is an irregular grid of pixels (or triangles) in the source-plane. We must first therefore determine\n", - "a set of (y,x) source-plane coordinates defining this grid, specifically where each triangle vertex is loated.\n", + "a set of (y,x) source-plane coordinates defining this grid, specifically where each triangle vertex is located.\n", "\n", "We do this using an `image_mesh`, which defines a method to determine a set of coordinates in the image-plane \n", "which are ray-traced to the source-plane. These traced coordinates are the triangle vertexes of our source-pixel mesh. \n", @@ -272,7 +272,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can plot this grid over the image, to see that it is a coarse grid of (y,x) coordinates laid ove the image." + "We can plot this grid over the image, to see that it is a coarse grid of (y,x) coordinates laid over the image." ] }, { @@ -342,7 +342,7 @@ "source": [ "A closer inspection of the pixelization shows the improvement. \n", "\n", - "We are using fewer pixels than the rectangular grid (400, instead of 1600) and reconstructing the source is far \n", + "We are using fewer pixels than the rectangular grid (400, instead of 784) and reconstructing the source in far\n", "greater detail!" ] }, @@ -369,15 +369,15 @@ "\n", "__Wrap Up__\n", "\n", - "The `Overlay` image-mesh and `Delaunay` mesh is still far from optimal. There are lots of source-pixels effectively f\n", - "itting just noise. We can achieve even better solutions if the central regions of the source were reconstructed using \n", - "more pixels and fewer source pixels are used in the outskirts of the source plane. \n", + "The `Overlay` image-mesh and `Delaunay` mesh is still far from optimal. There are lots of source-pixels effectively\n", + "fitting just noise. We could achieve even better solutions if the central regions of the source were reconstructed\n", + "using more pixels, and fewer source pixels were used in the outskirts of the source plane.\n", "\n", - "Tutorials 9, 10 and 11 show even more advanced and adaptive pixelizations which do just this, by adapting to the\n", + "Tutorials 10, 11 and 12 show even more advanced and adaptive pixelizations which do just this, by adapting to the\n", "source galaxy's morphology rather than the mass model magnification.\n", "\n", - "In the mean time, you may wish to experiment with using both Delaunay and Delaunay grids to fit \n", - "lenses which can be easily achieve by changing the input pixelization given to a pipeline." + "In the mean time, you may wish to experiment with using both rectangular and Delaunay meshes to fit\n", + "lenses, which is easily achieved by changing the input pixelization given to a pipeline." ] } ], diff --git a/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb b/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb index dc54f84..0e4f6ed 100644 --- a/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb +++ b/notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tutorial 8: Model-Fit\n", + "Tutorial 9: Model-Fit\n", "=====================\n", "\n", "You should now perform lens modeling using a pixelization, which is described fully in the example:\n", diff --git a/notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb b/notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb new file mode 100644 index 0000000..853dee0 --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb @@ -0,0 +1,744 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 1: Extra Galaxies\n", + "==========================\n", + "\n", + "Welcome to chapter 4 of **HowToLens**, where we scale up lens modeling beyond a single lens galaxy.\n", + "\n", + "In chapters 1 to 3, every strong lens we studied had the same simple anatomy: one lens galaxy, whose light and mass\n", + "we modeled, and one background source galaxy, whose lensed emission we fitted. This is the cleanest possible lensing\n", + "configuration, and it was the right place to learn the fundamentals of ray-tracing, non-linear searches and\n", + "pixelized source reconstructions.\n", + "\n", + "Real strong lenses are rarely this tidy. Galaxies live in crowded fields: a lens galaxy may have a faint companion a\n", + "few arc-seconds away, sit in a small group of comparably massive galaxies, or be embedded in a cluster containing\n", + "hundreds of members and a vast dark matter halo. The science of strong lensing scales up through this hierarchy, and\n", + "so must our modeling:\n", + "\n", + "- **Extra galaxies (this tutorial)**: a single dominant lens galaxy, with one or more nearby interloper galaxies\n", + " whose light and mass may contaminate the analysis.\n", + "\n", + "- **Multi-galaxy lenses (next tutorial)**: systems where two or more galaxies are co-equal lenses, and no single\n", + " galaxy can be called \"the\" lens.\n", + "\n", + "- **Scaling relations**: modeling many galaxies at once by tying their properties to their luminosity, so that\n", + " adding galaxies does not add free parameters.\n", + "\n", + "- **Group and cluster scales**: lenses whose deflectors are entire groups or clusters of galaxies, including a\n", + " shared dark matter halo.\n", + "\n", + "- **Weak lensing**: the statistical distortion of many background galaxies by foreground mass, extending lensing\n", + " beyond the strong regime entirely.\n", + "\n", + "Much of the methodology in this chapter is not specific to lensing. Fitting the light of extra galaxies, modeling\n", + "blended multi-galaxy fields and composing models via scaling relations are equally important for non-lensing galaxy\n", + "studies, and **PyAutoGalaxy** provides the same API for these tasks applied to galaxy morphology (without the\n", + "ray-tracing).\n", + "\n", + "In this first tutorial, we take the first step up in scale: a galaxy-scale lens with one extra galaxy nearby. We\n", + "will learn how to decide whether the extra galaxy matters, and the two approaches to dealing with it when it does:\n", + "removing its light from the data, or including it in the lens model.\n", + "\n", + "__Contents__\n", + "\n", + "- **Initial Setup:** Load the imaging dataset of a lens with an extra galaxy and inspect the interloper.\n", + "- **Light Versus Mass:** The core decision: do the extra galaxy's light and / or mass affect the analysis?\n", + "- **Mask:** Define a circular mask large enough to include the extra galaxy's emission.\n", + "- **Approach 1 Noise Scaling:** Remove the extra galaxy's light from the fit by scaling its data and noise values.\n", + "- **Noise Scaling Fit:** Fit a lens model to the noise-scaled data, without the extra galaxy in the model.\n", + "- **Approach 2 Extra Galaxies Model:** Include the extra galaxy's light and mass in the lens model explicitly.\n", + "- **Extra Galaxy Centres:** Why the extra galaxy's centre is fixed to its observed light centre.\n", + "- **Extra Galaxies Fit:** Fit the lens model which includes the extra galaxy.\n", + "- **Which Approach When:** Guidance on choosing between noise scaling and explicit modeling.\n", + "- **Wrap Up:** Summary of the script and next steps." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "from pathlib import Path\n", + "import autolens as al\n", + "import autolens.plot as aplt\n", + "import autofit as af" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Initial Setup__\n", + "\n", + "Lets load the `Imaging` dataset we'll fit in this tutorial. It is similar to the `lens_sersic` dataset used\n", + "throughout chapter 2, where:\n", + "\n", + " - The lens galaxy's light is an `Sersic`.\n", + " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", + " - The source galaxy's light is an `SersicCore`.\n", + "\n", + "However, there is one addition: an extra galaxy, with its own light (an `ExponentialSph`) and its own\n", + "mass (an `IsothermalSph`), located a few arc-seconds from the lens galaxy." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"lens_extra_galaxy\"\n", + "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Auto-Simulation__\n", + "\n", + "If the dataset does not already exist on your system, it will be created by running the corresponding\n", + "simulator script. This ensures that all example scripts can be run without manually simulating data first." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/lens_extra_galaxy.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we plot the dataset, the familiar sight of a lens galaxy surrounded by a lensed source's ring of emission is\n", + "joined by a blob of light in the upper-right of the image.\n", + "\n", + "This is the extra galaxy. It is not part of the strong lens system we are studying: it is an interloper, a galaxy\n", + "that happens to lie close to the lens on the sky. Interlopers like this are extremely common in real imaging of\n", + "strong lenses, and every lens modeler has to decide what to do about them." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Light Versus Mass__\n", + "\n", + "The decision of what to do about an extra galaxy hinges on one question, asked twice:\n", + "\n", + "**Does its light affect the analysis?** The extra galaxy's emission may extend into the region of the image we fit.\n", + "If it does, and we fit a model containing only the lens and source, the model has no component that can produce\n", + "this emission. The fit will respond by distorting the lens light, source light or mass model to soak it up,\n", + "biasing every parameter we infer.\n", + "\n", + "**Does its mass affect the analysis?** The extra galaxy's mass deflects light rays, just like the lens galaxy's\n", + "mass does. If the galaxy is close (in projection) to the lensed source's light, its deflections measurably perturb\n", + "the ray-tracing. A model without this mass will compensate by biasing the main lens galaxy's mass parameters, for\n", + "example its `einstein_radius` or `ell_comps`.\n", + "\n", + "These two effects are dealt with separately, which gives us two approaches:\n", + "\n", + "- **Approach 1 (remove its light)**: If only the light matters, we can remove the extra galaxy's emission from the\n", + " fit entirely, without adding anything to the model. The mass is ignored.\n", + "\n", + "- **Approach 2 (model it explicitly)**: If the mass matters (or the light blends too closely with the lensed source\n", + " to cleanly remove), we include the extra galaxy in the lens model, with its own light and / or mass profiles.\n", + "\n", + "We will now perform both, and at the end of the tutorial discuss when each is appropriate.\n", + "\n", + "__Mask__\n", + "\n", + "We first define the circular mask used to fit the data. In chapter 2 we typically used a 2.6\" - 3.0\" mask, which\n", + "tightly contained the lens and lensed source.\n", + "\n", + "Here, we use a larger 4.0\" mask, so that the region containing the extra galaxy is included in the fit. If we\n", + "simply shrank the mask to exclude the extra galaxy, we would also throw away pixels containing lensed source\n", + "emission, and the mask's hard edge could still cut through the extra galaxy's light." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=4.0,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the masked dataset confirms the extra galaxy's emission is inside the mask, and will therefore impact the\n", + "model-fit unless we do something about it." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Approach 1 Noise Scaling__\n", + "\n", + "Our first approach removes the extra galaxy's light from the fit.\n", + "\n", + "The most obvious way to do this would be to mask the extra galaxy's pixels, removing them from the fit entirely.\n", + "However, removing pixels changes the fit in subtle ways: their coordinates are no longer used in the ray-tracing,\n", + "and for certain models (e.g. the pixelized source reconstructions of chapter 3) removing interior pixels creates\n", + "discontinuities in the pixelization that introduce unexpected systematics.\n", + "\n", + "Instead, we use **noise scaling**: the pixels stay in the fit, but their data values are set to zero and their\n", + "noise-map values are increased to very large values. A pixel with enormous noise contributes negligibly to the\n", + "likelihood, so the extra galaxy's light cannot influence the model, while the pixels themselves remain part of the\n", + "fit's geometry.\n", + "\n", + "To do this we need a mask of the extra galaxy's region. For real data, you would create this yourself by\n", + "inspecting the image (the workspace's `data_preparation` package includes a GUI for drawing it); for this simulated\n", + "dataset the simulator script has already output a `mask_extra_galaxies.fits` circle covering the extra galaxy.\n", + "\n", + "We reload the dataset first, because noise scaling must be applied before the circular mask." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "mask_extra_galaxies = al.Mask2D.from_fits(\n", + " file_path=dataset_path / \"mask_extra_galaxies.fits\",\n", + " pixel_scales=0.1,\n", + " invert=True, # Note that we invert the mask here as `True` means a pixel is scaled.\n", + ")\n", + "\n", + "dataset = dataset.apply_noise_scaling(mask=mask_extra_galaxies)\n", + "\n", + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=4.0,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the dataset shows the extra galaxy's emission has vanished: its data values are zero and the\n", + "signal-to-noise of its pixels is effectively zero, so the fit will simply ignore that region of the image." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Noise Scaling Fit__\n", + "\n", + "We now fit this noise-scaled dataset with a lens model that does **not** include the extra galaxy. The model is the\n", + "same one we used in chapter 2's linear profiles tutorial: a linear `Sersic` lens bulge, an `Isothermal` plus\n", + "`ExternalShear` mass model and a linear `SersicCore` source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Lens:\n", + "\n", + "bulge = af.Model(al.lp_linear.Sersic)\n", + "mass = af.Model(al.mp.Isothermal)\n", + "\n", + "lens = af.Model(\n", + " al.Galaxy, redshift=0.5, bulge=bulge, mass=mass, shear=al.mp.ExternalShear\n", + ")\n", + "\n", + "# Source:\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0, bulge=al.lp_linear.SersicCore)\n", + "\n", + "# Overall Lens Model:\n", + "\n", + "model = af.Collection(galaxies=af.Collection(lens=lens, source=source))\n", + "\n", + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\", \"chapter_4\"),\n", + " name=\"tutorial_1_extra_galaxies_noise_scaling\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", + ")\n", + "\n", + "analysis = al.AnalysisImaging(dataset=dataset)\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_1_extra_galaxies_noise_scaling\"\n", + " \" folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result_noise_scaling = search.fit(model=model, analysis=analysis)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the maximum log likelihood fit shows the lens and source are fitted well, with the noise-scaled region\n", + "contributing nothing to the residuals.\n", + "\n", + "The extra galaxy's light has been dealt with. However, note what this approach did **not** do: the extra galaxy's\n", + "mass is completely absent from the model. Its deflection of the source's light rays is unaccounted for, and the\n", + "inferred lens mass model will have absorbed that perturbation as best it can. For an extra galaxy that is small\n", + "and / or far from the lensed emission this bias is negligible; for one that is massive and close, it is not." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_fit_imaging(fit=result_noise_scaling.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Approach 2 Extra Galaxies Model__\n", + "\n", + "Our second approach includes the extra galaxy in the lens model, fitting its light (so we no longer need to remove\n", + "it from the data) and its mass (so its deflections are included in the ray-tracing).\n", + "\n", + "We reload the dataset and apply the 4.0\" circular mask, but this time we do **not** apply noise scaling, because\n", + "the extra galaxy's emission is now something the model itself will fit." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=4.0,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Extra Galaxy Centres__\n", + "\n", + "To include the extra galaxy in the model, we input the centre of its light, as observed in the image.\n", + "\n", + "In principle, we could add the extra galaxy to the model with a completely free centre, and let the non-linear\n", + "search figure out where it is. In practice this is a bad idea: the extra parameters make parameter space more\n", + "complex, and fits commonly go wrong in characteristic ways. For example, the extra galaxy's light profile may\n", + "wander off and fit one of the lensed source's multiple images instead of the interloper, or its mass profile may\n", + "recentre itself onto the main lens galaxy and act as part of its mass distribution.\n", + "\n", + "Fixing each extra galaxy's light and mass centres to its observed light centre removes these failure modes and\n", + "keeps the model as simple as possible. The observed centre is an excellent estimate of the true centre, because\n", + "(unlike the lensed source) the extra galaxy's light is not distorted by lensing.\n", + "\n", + "For real data you would measure these centres from the image (the workspace's `data_preparation` package shows\n", + "how, including a GUI for marking them); for this simulated dataset the simulator has output them to a .json file,\n", + "which we load below." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "extra_galaxies_centres = al.Grid2DIrregular(\n", + " al.from_json(file_path=dataset_path / \"extra_galaxies_centres.json\")\n", + ")\n", + "\n", + "print(extra_galaxies_centres)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Extra Galaxies Model Composition__\n", + "\n", + "We compose the main lens and source model exactly as before." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Lens:\n", + "\n", + "bulge = af.Model(al.lp_linear.Sersic)\n", + "mass = af.Model(al.mp.Isothermal)\n", + "\n", + "lens = af.Model(\n", + " al.Galaxy, redshift=0.5, bulge=bulge, mass=mass, shear=al.mp.ExternalShear\n", + ")\n", + "\n", + "# Source:\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0, bulge=al.lp_linear.SersicCore)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now compose the model of the extra galaxy, using the dedicated `extra_galaxies` modeling API.\n", + "\n", + "For each extra galaxy centre (there is only one here, but the loop below scales to any number) we create a `Galaxy`\n", + "model with:\n", + "\n", + " - A linear `ExponentialSph` light profile, with its `centre` fixed to the observed centre [1 free\n", + " parameter: `effective_radius`, as the `intensity` is solved for by the linear inversion].\n", + "\n", + " - An `IsothermalSph` mass profile, with its `centre` fixed to the observed centre [1 free\n", + " parameter: `einstein_radius`].\n", + "\n", + "Extra galaxy mass profiles can wander to unphysically high `einstein_radius` values, degrading the fit, so we set\n", + "a `UniformPrior` with an upper limit of 0.5\" to prevent this. The extra galaxy is much less massive than the main\n", + "lens (whose `einstein_radius` is around 1.6\"), so this prior comfortably contains all plausible solutions.\n", + "\n", + "The extra galaxies are grouped into their own `af.Collection`, which is passed to the overall model via its\n", + "`extra_galaxies` input, alongside the `galaxies` collection containing the lens and source. This is the same\n", + "API used throughout the `autolens_workspace` for extra galaxies, and it is how **PyAutoLens** knows to include\n", + "these galaxies in the ray-tracing without treating them as the main lens or source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Extra Galaxies:\n", + "\n", + "extra_galaxies_list = []\n", + "\n", + "for extra_galaxy_centre in extra_galaxies_centres:\n", + "\n", + " # Extra Galaxy Light\n", + "\n", + " light = af.Model(al.lp_linear.ExponentialSph)\n", + " light.centre = extra_galaxy_centre\n", + "\n", + " # Extra Galaxy Mass\n", + "\n", + " mass = af.Model(al.mp.IsothermalSph)\n", + " mass.centre = extra_galaxy_centre\n", + " mass.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=0.5)\n", + "\n", + " # Extra Galaxy\n", + "\n", + " extra_galaxy = af.Model(al.Galaxy, redshift=0.5, light=light, mass=mass)\n", + "\n", + " extra_galaxies_list.append(extra_galaxy)\n", + "\n", + "extra_galaxies = af.Collection(extra_galaxies_list)\n", + "\n", + "# Overall Lens Model:\n", + "\n", + "model = af.Collection(\n", + " galaxies=af.Collection(lens=lens, source=source), extra_galaxies=extra_galaxies\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `info` attribute confirms the model includes the extra galaxy, with its fixed centres and its\n", + "free `effective_radius` and `einstein_radius` parameters." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(model.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Extra Galaxies Fit__\n", + "\n", + "We fit this model with the same search set up as before. The model has only two more free parameters than the\n", + "noise-scaling fit, thanks to the fixed centres and linear light profile, so the fit remains fast." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\", \"chapter_4\"),\n", + " name=\"tutorial_1_extra_galaxies_model\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", + ")\n", + "\n", + "analysis = al.AnalysisImaging(dataset=dataset)\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_1_extra_galaxies_model\"\n", + " \" folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result_extra_galaxies = search.fit(model=model, analysis=analysis)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the maximum log likelihood fit shows the extra galaxy's emission is now fitted by its own light profile,\n", + "and its mass has contributed deflections to the ray-tracing of the source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_fit_imaging(fit=result_extra_galaxies.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result's `info` shows the inferred `einstein_radius` of the extra galaxy, quantifying how much lensing power\n", + "the interloper contributes to the system." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(result_extra_galaxies.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Which Approach When__\n", + "\n", + "We have seen the two extremes of dealing with an extra galaxy. Choosing between them comes back to the\n", + "light-versus-mass question at the start of this tutorial, which in practice is settled by three properties of the\n", + "interloper:\n", + "\n", + "- **Distance from the lensed emission**: An extra galaxy whose light is well separated from the lensed source (as\n", + " in this tutorial) can be cleanly noise-scaled away. If its light blends into the source's arcs, noise scaling\n", + " would also delete source emission we need, and the light must be modeled instead.\n", + "\n", + "- **Brightness**: A faint interloper whose emission barely rises above the noise can often be ignored entirely, or\n", + " noise-scaled with no consequence. A bright one must be removed or modeled, or it will bias the fit.\n", + "\n", + "- **Mass and proximity to the lens**: The mass matters when the extra galaxy is massive enough, and close enough\n", + " (in projection) to the lensed source's light, for its deflections to measurably perturb the ray-tracing. A rough\n", + " rule of thumb is to compare its expected Einstein radius to the astrometric precision of the data: a small galaxy\n", + " several arc-seconds from the arcs can have its mass safely ignored, whereas one abutting the Einstein ring\n", + " cannot. When in doubt, fit both approaches and compare the inferred lens models: if the main lens's mass\n", + " parameters shift appreciably, the extra galaxy's mass matters.\n", + "\n", + "Intermediate options also exist and are fully supported by the API: you can noise-scale the light but still include\n", + "the mass profile in the model, or model the light but omit the mass. The `extra_galaxies` collection simply\n", + "contains whatever profiles you give it.\n", + "\n", + "__Wrap Up__\n", + "\n", + "In this tutorial, we took the first step up in scale from the single lens galaxy of chapters 1 to 3, and learnt:\n", + "\n", + "1. Real lenses live in crowded fields, and interloping extra galaxies are the first complication real data throws\n", + " at us.\n", + "\n", + "2. Whether an extra galaxy matters hinges on two separate questions: does its **light** contaminate the region of\n", + " the image we fit, and does its **mass** perturb the ray-tracing of the source?\n", + "\n", + "3. Noise scaling removes an extra galaxy's light from the fit without adding model complexity, by zeroing its data\n", + " and inflating its noise, but leaves its mass unaccounted for.\n", + "\n", + "4. The `extra_galaxies` modeling API includes extra galaxies in the model with their own light and mass profiles,\n", + " with their centres fixed to the observed light centres to keep parameter space simple and well behaved.\n", + "\n", + "5. Which approach is appropriate depends on the interloper's distance from the lensed emission, its brightness,\n", + " and its mass's proximity to the lens.\n", + "\n", + "Throughout, the extra galaxy was a nuisance: something to remove or account for, so that our analysis of the\n", + "main lens remained accurate. In the next tutorial we meet systems where that framing breaks down entirely, because\n", + "a second galaxy is not a nuisance but a co-equal lens, with light and mass comparable to the first. There, no\n", + "single galaxy is \"the\" lens, and the model must treat them all on an equal footing." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb b/notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb new file mode 100644 index 0000000..764d717 --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb @@ -0,0 +1,721 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 2: Multi-Galaxy Lenses\n", + "===============================\n", + "\n", + "In the previous tutorial, we learned how to deal with extra galaxies near a strong lens \u2014 nuisance objects whose\n", + "light contaminates the data but which play no meaningful role in the lensing itself. We removed their emission\n", + "from the analysis, or gave them a heavily restricted model, and the single dominant lens galaxy remained the\n", + "star of the show.\n", + "\n", + "In this tutorial, we meet systems where that picture breaks down entirely: **multi-galaxy lenses**, where two\n", + "(or more) galaxies of comparable mass both contribute significantly to the lensing of a single background source.\n", + "Neither galaxy is a minor perturber we can mask away or simplify \u2014 they are **co-dominant deflectors**, and every\n", + "one of them needs its own free light and mass model.\n", + "\n", + "How do such systems arise physically? There are two main channels:\n", + "\n", + "- **Merging galaxies**: two galaxies at the same redshift caught in the act of merging, or orbiting one another\n", + " in close proximity. Their projected separation is small compared to the Einstein radius of their combined mass,\n", + " so the source's light rays feel both galaxies' gravity at once. Because both deflectors are at one redshift,\n", + " ray tracing is single-plane: their deflection angles simply add.\n", + "\n", + "- **Chance line-of-sight alignments**: two physically unrelated galaxies at *different* redshifts that happen to\n", + " lie along the same line of sight. Light from the source is deflected first by the more distant galaxy, and the\n", + " already-deflected rays are deflected again by the nearer one. This is compound, multi-plane ray tracing \u2014 the\n", + " `Tracer` handles it natively by simply assigning each galaxy its redshift, and we will defer its details to\n", + " later in this chapter, where multi-plane lensing becomes the default at cluster scale.\n", + "\n", + "In this tutorial, both lens galaxies are at the same redshift, so we stay in the simpler single-plane regime and\n", + "focus on the modeling challenge that defines multi-galaxy lensing: the growth of the model's parameter space.\n", + "\n", + "__Contents__\n", + "\n", + "- **Initial Setup:** Load the double lens galaxy dataset, simulating it first if it is not on disk.\n", + "- **Mask:** Define a mask which encloses the combined Einstein ring of both lens galaxies.\n", + "- **Over Sampling:** Centre the adaptive over sampling grid on every deflector, not just one.\n", + "- **Model:** Compose a lens model with a free light and mass model per deflector, and count its parameters.\n", + "- **Fixing the Mass Centres:** Fix each galaxy's mass centre to its observed light centre, and why this is standard.\n", + "- **Model Fit:** Fit the two-deflector model to the data with a non-linear search.\n", + "- **Result:** Inspect the combined critical curve and the fit to the data.\n", + "- **Mass Degeneracies:** The total mass is well constrained, but its split between the galaxies is not.\n", + "- **No Shared Halo:** What we are deliberately not yet assuming, and why that changes at group scale.\n", + "- **Three Lens Galaxies:** A triple-deflector system, and how the parameter count keeps growing.\n", + "- **Wrap Up:** Summary and the road to scaling relations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "from pathlib import Path\n", + "import autofit as af\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Initial Setup__\n", + "\n", + "We begin with `Imaging` of a strong lens where **two** lens galaxies, separated by 2.0\", both deflect the light\n", + "of a single background source:\n", + "\n", + " - The two lens galaxies' light are `Sersic` profiles, centred at (0.0\", -1.0\") and (0.0\", 1.0\").\n", + " - The two lens galaxies' mass distributions are `Isothermal` profiles with comparable Einstein radii (1.0\" and\n", + " 0.8\") \u2014 this comparability is what makes them co-dominant.\n", + " - The source galaxy's light is an `ExponentialCoreSph`.\n", + "\n", + "__Dataset Auto-Simulation__\n", + "\n", + "If the dataset does not already exist on your system, it will be created by running the corresponding\n", + "simulator script. This ensures that all example scripts can be run without manually simulating data first." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"x2_lens_galaxies\"\n", + "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name\n", + "\n", + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/lens_x2.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we plot the data, the difference from every lens we have modeled so far is obvious: there are two bright\n", + "lens galaxies, and the lensed source's arcs wrap around the *pair as a whole* rather than around either galaxy\n", + "individually. The mass distribution the source's light responds to is the sum of both galaxies' mass." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mask__\n", + "\n", + "We define a 3.0\" circular mask. For a multi-galaxy lens, sizing the mask needs more care than at galaxy scale:\n", + "the Einstein radius that matters is that of the *combined* mass distribution, not either galaxy's individually.\n", + "A mask sized by eye from one galaxy's light would clip the arcs, which extend beyond both galaxies' centres." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mask_radius = 3.0\n", + "\n", + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=mask_radius,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Over Sampling__\n", + "\n", + "We use the adaptive over sampling scheme introduced in earlier chapters, which evaluates the steep central\n", + "regions of the lens galaxies' light at high resolution. The one multi-galaxy specific point is that the adaptive\n", + "grid is centred on **every** deflector, not just one \u2014 each galaxy has its own steep central light profile\n", + "needing accurate evaluation, and `centre_list` takes as many centres as we give it.\n", + "\n", + "The two centres below are the observed centres of the two lens galaxies, which for this simulated dataset we\n", + "know exactly. For real data you would measure them from the image itself (the `autolens_workspace` provides a\n", + "GUI which writes them from mouse clicks)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_centres = [(0.0, -1.0), (0.0, 1.0)]\n", + "\n", + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=dataset.grid,\n", + " sub_size_list=[4, 2, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=lens_centres,\n", + ")\n", + "\n", + "dataset = dataset.apply_over_sampling(over_sample_size_lp=over_sample_size)\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model__\n", + "\n", + "We now compose the lens model, and here the multi-galaxy regime shows its teeth. Every co-dominant deflector\n", + "needs its own free light and mass model, so the model has one `Galaxy` entry per deflector.\n", + "\n", + "We build each lens galaxy in a loop over the observed centres and store them as `lens_0`, `lens_1`, etc. This\n", + "list-based composition scales to any number of deflectors, and it is the same API the `autolens_workspace`'s\n", + "`multi_galaxy` package (and the group-scale examples above it) use \u2014 so nothing needs re-learning later.\n", + "\n", + "For each lens galaxy's light we use a Multi Gaussian Expansion (MGE) made of linear light profiles, built by the\n", + "utility function `al.model_util.mge_model_from` (this hides the longer `Basis` composition API we stepped through\n", + "in the linear profiles tutorial of chapter 2). For each lens galaxy's mass we use an `Isothermal` (SIE) profile,\n", + "initially with every parameter free. The source is also an MGE.\n", + "\n", + "The MGE choice matters more here than anywhere we have used it before. Each lens galaxy's 20 Gaussians add just\n", + "**4 non-linear parameters** (a shared centre and shared elliptical components \u2014 every `sigma` is fixed and every\n", + "`intensity` is solved for by the linear inversion). A single ordinary `Sersic` bulge would add 7 non-linear\n", + "parameters per galaxy, and would fit the blended, overlapping light of a close pair far less well. Because the\n", + "multi-galaxy regime multiplies whatever light model we choose by the number of deflectors, a light model that is\n", + "both cheap and flexible is close to essential \u2014 this is exactly where the MGE shines.\n", + "\n", + "Each Isothermal mass model adds 5 free parameters: its centre (2), elliptical components (2) and Einstein\n", + "radius (1).\n", + "\n", + "(The `autolens_workspace` multi-galaxy examples additionally include a single external shear for the whole\n", + "system, held in its own model entry at the system centre rather than attached to any one deflector \u2014 the shear\n", + "describes the tidal field of structure *outside* the system, so it belongs to no individual galaxy. We omit it\n", + "here to keep the parameter accounting simple.)" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_dict = {}\n", + "\n", + "for i, centre in enumerate(lens_centres):\n", + "\n", + " bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=20,\n", + " centre_prior_is_uniform=True,\n", + " centre=(centre[0], centre[1]),\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + " )\n", + "\n", + " mass = af.Model(al.mp.Isothermal)\n", + "\n", + " lens_dict[f\"lens_{i}\"] = af.Model(\n", + " al.Galaxy,\n", + " redshift=0.5,\n", + " bulge=bulge,\n", + " mass=mass,\n", + " )\n", + "\n", + "bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=20,\n", + " gaussian_per_basis=1,\n", + " centre_prior_is_uniform=False,\n", + ")\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0, bulge=bulge)\n", + "\n", + "model = af.Collection(galaxies=af.Collection(**lens_dict, source=source))" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model's `info` shows `lens_0` and `lens_1` each carrying their own free mass model \u2014 the signature of the\n", + "multi-galaxy regime \u2014 and its `prior_count` gives the total number of free parameters." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(model.info)\n", + "\n", + "print(f\"Free parameters (free mass centres): {model.prior_count}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The count is **22**: each deflector contributes 4 (MGE light) + 5 (SIE mass) = 9 free parameters, and the MGE\n", + "source contributes the final 4. Compare this to the equivalent single-galaxy model, which has just 13 \u2014 one\n", + "co-dominant deflector added 9 parameters, and every further deflector will add 9 more. Model complexity compounds\n", + "fast in this regime, and with plain Sersic light profiles instead of MGEs it would compound faster still (12 per\n", + "deflector rather than 9).\n", + "\n", + "__Fixing the Mass Centres__\n", + "\n", + "Before fitting, we make one change that is standard practice for multi-galaxy lenses: we **fix each galaxy's\n", + "mass centre to its observed light centre**, removing 2 free parameters per deflector.\n", + "\n", + "Why? With a single lens galaxy, the data usually constrains the mass centre well: the arcs pin down where the\n", + "deflection field is centred, and there is only one plausible culprit. With multiple deflectors this breaks down.\n", + "The source's light responds to the *summed* deflection field, so a small shift of one galaxy's mass centre can be\n", + "compensated by shifts of the other's centre, ellipticity or Einstein radius \u2014 the free centres become extremely\n", + "degenerate with one another. The search wanders these degeneracies, converging slowly and often settling in\n", + "unphysical corners of parameter space where one galaxy's mass has drifted far from any light.\n", + "\n", + "Fixing each mass centre to the galaxy's light centre resolves this at minimal cost. Light traces stellar mass,\n", + "and the stellar body sits at the bottom of the galaxy's potential well, so the light centre is an excellent\n", + "estimate of the mass centre. (Measuring a genuine offset between mass and light \u2014 which interacting pairs can\n", + "show at the kiloparsec level \u2014 is real science, but it is a *follow-up* fit performed after a robust model with\n", + "fixed centres has been found.)\n", + "\n", + "Assigning a tuple to the mass model's `centre` fixes it, so it is no longer a free parameter with a prior." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_dict = {}\n", + "\n", + "for i, centre in enumerate(lens_centres):\n", + "\n", + " bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=20,\n", + " centre_prior_is_uniform=True,\n", + " centre=(centre[0], centre[1]),\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + " )\n", + "\n", + " mass = af.Model(al.mp.Isothermal)\n", + " mass.centre = (centre[0], centre[1])\n", + "\n", + " lens_dict[f\"lens_{i}\"] = af.Model(\n", + " al.Galaxy,\n", + " redshift=0.5,\n", + " bulge=bulge,\n", + " mass=mass,\n", + " )\n", + "\n", + "bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=20,\n", + " gaussian_per_basis=1,\n", + " centre_prior_is_uniform=False,\n", + ")\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0, bulge=bulge)\n", + "\n", + "model = af.Collection(galaxies=af.Collection(**lens_dict, source=source))" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Printing the model's `info` again, each mass `centre` is now listed as a fixed value with no prior, and the\n", + "free parameter count has dropped from 22 to **18** \u2014 each SIE now contributes 3 free parameters instead of 5." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(model.info)\n", + "\n", + "print(f\"Free parameters (fixed mass centres): {model.prior_count}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model Fit__\n", + "\n", + "We fit the model with the nested sampling algorithm `Nautilus`, as in previous chapters. Because this model has\n", + "more free parameters than the single-galaxy fits of chapter 2 (which used 100 live points), we raise `n_live`\n", + "to 200 \u2014 a multi-galaxy parameter space is more multi-modal, and too few live points risks converging on a local\n", + "maximum where the two galaxies' Einstein radii have been mis-apportioned." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\", \"chapter_4\"),\n", + " name=\"tutorial_2_multi_galaxy\",\n", + " unique_tag=dataset_name,\n", + " n_live=200,\n", + " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", + ")\n", + "\n", + "analysis = al.AnalysisImaging(dataset=dataset)\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_2_multi_galaxy\"\n", + " \" folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result = search.fit(model=model, analysis=analysis)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Result__\n", + "\n", + "The result's `info` shows the inferred model, with each deflector's parameters listed under its own `lens_0` /\n", + "`lens_1` entry." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(result.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The tracer subplot is worth a close look for a multi-galaxy lens: the critical curve is that of the *combined*\n", + "mass distribution, so it wraps around the pair as a whole rather than encircling either galaxy individually \u2014\n", + "just as the arcs in the data do." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_tracer(tracer=result.max_log_likelihood_tracer, grid=result.grids.lp)\n", + "\n", + "aplt.subplot_fit_imaging(fit=result.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mass Degeneracies__\n", + "\n", + "The corner plot of the posterior is where the multi-galaxy regime reveals its most important lesson. Below we\n", + "plot the probability density function of every parameter; when you run this tutorial for real (rather than\n", + "skimming the generated output), focus on the panel showing `lens_0`'s Einstein radius against `lens_1`'s." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.corner_anesthetic(samples=result.samples)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You will see a strongly elongated, tilted degeneracy: the two Einstein radii are *anti-correlated*. When one\n", + "galaxy's Einstein radius goes up, the other's goes down, tracing out a narrow ridge in parameter space.\n", + "\n", + "The physical reason is the summed deflection field. The arcs constrain the **total** mass enclosed by the\n", + "combined Einstein ring extremely well \u2014 move along the ridge and the sum of the two galaxies' deflections barely\n", + "changes, so the fit to the data barely changes either. What the data constrains much more weakly is the **split**\n", + "of that mass between the two galaxies. The closer the pair (relative to the combined Einstein radius), the less\n", + "information the arcs carry about which galaxy the mass belongs to, and the longer the ridge grows.\n", + "\n", + "This has a real scientific cost. For a single-galaxy lens, the Einstein mass is one of the cleanest measurements\n", + "in astrophysics. For a multi-galaxy lens, the total is still clean, but per-galaxy quantities \u2014 each galaxy's\n", + "mass, its mass-to-light ratio, its dark matter fraction \u2014 inherit the full width of the degeneracy, and their\n", + "error bars can be many times larger than the total's. Any interpretation built on the split (e.g. comparing the\n", + "two galaxies' dark matter content) must honestly propagate this, which is why we fit these systems with a\n", + "sampler that maps the full posterior rather than an optimizer that returns a single best-fit point: the best-fit\n", + "point sits somewhere on the ridge and tells you nothing about the ridge's length.\n", + "\n", + "__No Shared Halo__\n", + "\n", + "It is worth being explicit about an assumption we did *not* make. We modeled two galaxies, each with its own\n", + "untruncated `Isothermal` mass profile, and simply added their deflections. We did not assume the pair inhabits a\n", + "single, large, shared dark matter halo \u2014 and because there is no host halo in the model, we also made no\n", + "assumptions about tidal stripping or the truncation of each galaxy's individual halo.\n", + "\n", + "At this scale, that is the right call: a pair (or triple) of comparable galaxies has no dominant halo for its\n", + "members to be stripped by, and the data cannot demand one. But climb the mass ladder and it changes. At the\n", + "group scale, a dominant group-sized halo enters the model as an explicit choice, and the member galaxies orbiting\n", + "within it are tidally truncated by its potential \u2014 assumptions that reshape the entire mass model, as we will\n", + "see later in this chapter.\n", + "\n", + "__Three Lens Galaxies__\n", + "\n", + "What happens when a third co-dominant deflector joins the system? Let us load a triple-galaxy lens, simulated\n", + "with three `Isothermal` mass profiles of comparable Einstein radii (0.9\", 0.8\" and 0.7\") arranged in a triangle,\n", + "all lensing a single source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"x3_lens_galaxies\"\n", + "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name\n", + "\n", + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/lens_x3.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We compose the three-deflector model with exactly the same loop as before \u2014 this is the payoff of the list-based\n", + "API, which needs no changes as the deflector count grows. Each mass centre is again fixed to its galaxy's\n", + "observed light centre; with three deflectors the centre degeneracies are even more severe than for the pair, so\n", + "the standard trick matters even more." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_centres = [(0.9, 0.0), (-0.6, -0.9), (-0.6, 0.9)]\n", + "\n", + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=mask_radius,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)\n", + "\n", + "lens_dict = {}\n", + "\n", + "for i, centre in enumerate(lens_centres):\n", + "\n", + " bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=20,\n", + " centre_prior_is_uniform=True,\n", + " centre=(centre[0], centre[1]),\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + " )\n", + "\n", + " mass = af.Model(al.mp.Isothermal)\n", + " mass.centre = (centre[0], centre[1])\n", + "\n", + " lens_dict[f\"lens_{i}\"] = af.Model(\n", + " al.Galaxy,\n", + " redshift=0.5,\n", + " bulge=bulge,\n", + " mass=mass,\n", + " )\n", + "\n", + "bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=20,\n", + " gaussian_per_basis=1,\n", + " centre_prior_is_uniform=False,\n", + ")\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0, bulge=bulge)\n", + "\n", + "model = af.Collection(galaxies=af.Collection(**lens_dict, source=source))\n", + "\n", + "print(model.info)\n", + "\n", + "print(f\"Free parameters (three deflectors, fixed mass centres): {model.prior_count}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The count is now **25**: even with fixed mass centres and cheap MGE light models, every deflector adds 7 free\n", + "parameters (4 light + 3 mass), and with free centres it would be 9. The trend is linear and unforgiving:\n", + "\n", + " - 1 deflector: 13 free parameters.\n", + " - 2 deflectors: 18 (this tutorial's fit).\n", + " - 3 deflectors: 25.\n", + " - 10 deflectors: ~74. A group-scale lens can easily have this many members.\n", + "\n", + "And the parameter count is only half the problem. As the deflectors multiply, so do the degeneracies between\n", + "their masses \u2014 every pair of galaxies gets its own version of the Einstein radius ridge we saw above, and the\n", + "posterior becomes progressively harder for any sampler to map.\n", + "\n", + "You are welcome to fit this three-galaxy model yourself \u2014 the search above works unchanged, though expect it to\n", + "take noticeably longer than the pair. Clearly, freeing every galaxy's mass cannot scale to the tens or hundreds\n", + "of member galaxies in groups and clusters. Something has to give.\n", + "\n", + "__Wrap Up__\n", + "\n", + "In this tutorial, we modeled strong lenses with multiple co-dominant deflectors. Let's summarise what we've\n", + "learnt:\n", + "\n", + "- **Co-dominant deflectors**: When two or more galaxies of comparable mass both contribute significantly to the\n", + " lensing, every one of them needs its own free light and mass model \u2014 unlike the nuisance neighbours of the\n", + " previous tutorial, none can be masked away or simplified.\n", + "\n", + "- **Physical origins**: Multi-galaxy lenses arise from merging galaxies at one redshift (single-plane, deflections\n", + " add) or chance line-of-sight alignments at different redshifts (multi-plane ray tracing, covered later in this\n", + " chapter).\n", + "\n", + "- **Parameter growth**: Each deflector added 9 free parameters (4 for its MGE light, 5 for its SIE mass) \u2014 and the\n", + " MGE is what kept it that cheap, since its Gaussian intensities are solved for by linear algebra rather than sampled.\n", + "\n", + "- **Fixed mass centres**: Fixing each galaxy's mass centre to its observed light centre (removing 2 parameters per\n", + " deflector) is the standard trick for taming the severe centre degeneracies of multi-deflector models.\n", + "\n", + "- **Mass degeneracies**: The data constrains the total mass well but its split between the galaxies poorly,\n", + " producing an anti-correlated ridge between the deflectors' Einstein radii \u2014 and inflating the uncertainties on\n", + " any per-galaxy science.\n", + "\n", + "- **No shared halo**: At this scale we do not assume the galaxies inhabit one large dark matter halo, so no tidal\n", + " truncation assumptions enter the model \u2014 that framing arrives at group scale.\n", + "\n", + "The three-galaxy model made the trajectory clear: freeing every deflector cannot scale. In the next tutorial, we\n", + "introduce the tool that stops this growth in its tracks \u2014 scaling relations, which tie the masses of many\n", + "galaxies to their observed luminosities so that an entire population of deflectors costs almost no extra free\n", + "parameters." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb b/notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb new file mode 100644 index 0000000..b81af48 --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb @@ -0,0 +1,865 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 3: Scaling Relations\n", + "=============================\n", + "\n", + "The previous tutorial ended on a warning: every deflector we add to a lens model brings its own free parameters.\n", + "Two galaxies were manageable, but each one cost us a mass profile's worth of dimensions, and the arithmetic only\n", + "gets worse. A group-scale lens may have ten member galaxies, a cluster hundreds. If every member keeps its own\n", + "free mass, the parameter space explodes \u2014 a 100-galaxy cluster with 5 free mass parameters per galaxy is a\n", + "500-dimensional model, which no non-linear search can sample and no dataset can constrain anyway.\n", + "\n", + "This tutorial introduces the tool that stops the explosion: the **scaling relation**. Instead of giving every\n", + "galaxy its own mass freedom, we set each galaxy's mass from something we can *measure* \u2014 its luminosity \u2014 via a\n", + "relation shared by the whole population. The relation itself has only a few global parameters (in this tutorial,\n", + "zero new ones!), so the dimensionality of the model stops growing with the number of galaxies. Ten members or a\n", + "hundred, the parameter space stays the same size.\n", + "\n", + "This pairs beautifully with a tool we already have. In chapter 2, we saw that a Multi-Gaussian Expansion (MGE)\n", + "fits a galaxy's light using linear algebra, so its intensities add no non-linear parameters. Put the two\n", + "together and the recipe for a many-galaxy lens model emerges:\n", + "\n", + "- **Light:** MGE for every galaxy \u2014 flexible light models at (almost) no non-linear cost.\n", + "- **Mass:** a scaling relation tying every galaxy's mass to its measured luminosity \u2014 a whole population of\n", + " mass profiles at no non-linear cost.\n", + "\n", + "The entire many-galaxy system then costs barely more than a single-lens fit. This tutorial builds that model on\n", + "the two-lens dataset from the previous tutorial, verifies the parameter counting explicitly, and is honest about\n", + "what a scaling relation assumes and when it can bite you.\n", + "\n", + "__Overview__\n", + "\n", + "In this tutorial, we will:\n", + "\n", + "- Explain the physics of why luminosity predicts lensing mass (mass-follows-light and the Faber-Jackson relation).\n", + "\n", + "- Compose a lens model where one galaxy \"anchors\" the relation and the other galaxy's Einstein radius is tied to\n", + " it via the ratio of their measured luminosities.\n", + "\n", + "- Verify by explicit parameter counting that tied galaxies add zero free parameters, however many there are.\n", + "\n", + "- Fit the model and inspect how a tied parameter appears in the results.\n", + "\n", + "- Discuss the limitations: real galaxies scatter around any relation, and a member that deviates can bias the\n", + " whole lens model.\n", + "\n", + "__Contents__\n", + "\n", + "- **Mass Follows Light:** The physics linking a galaxy's luminosity to its lensing mass.\n", + "- **Initial Setup:** Load the two-lens-galaxy imaging dataset from the previous tutorial.\n", + "- **Mask:** Define the 2D mask applied to the dataset for the model-fit.\n", + "- **Measured Luminosities:** The luminosities the relation needs, and where they come from.\n", + "- **The Anchor:** Identify the brightest galaxy, which anchors the relation.\n", + "- **Over Sampling:** Adaptive over-sampling centred on both lens galaxies.\n", + "- **Light Via MGE:** MGE light models for every galaxy, at a cost of two parameters each.\n", + "- **Scaling Relation:** Tie the fainter galaxy's Einstein radius to the anchor's.\n", + "- **Model:** Compose the model with the scaling tier as its own collection.\n", + "- **Parameter Counts:** Compare against the previous tutorial's per-galaxy model.\n", + "- **Scaling To Many Galaxies:** Show the model does not grow when 12 more members are tied.\n", + "- **Model Fit:** Fit the scaling-relation model with Nautilus.\n", + "- **Results:** How a tied parameter appears in the results, and how close the truth is to the relation.\n", + "- **Limitations:** Scatter, deviant members, and adding per-galaxy freedom selectively.\n", + "- **Lens Environments:** The same machinery models the environment of single-lens systems.\n", + "- **Wrap Up:** Summary of the script and next steps.\n", + "\n", + "__Mass Follows Light__\n", + "\n", + "Why should a galaxy's luminosity tell us anything about its lensing mass?\n", + "\n", + "The starting point is that light traces stars and stars trace mass. A more luminous elliptical galaxy contains\n", + "more stars, sits in a deeper potential well, and its stars therefore move faster. This is quantified by the\n", + "**Faber-Jackson relation**, an empirical scaling law for elliptical galaxies which states that luminosity grows\n", + "steeply with the velocity dispersion \\sigma of the stars:\n", + "\n", + " L ~ \\sigma^4\n", + "\n", + "Lensing connects \\sigma to the deflection of light. For the isothermal mass profiles we have used throughout\n", + "these tutorials, the Einstein radius is set directly by the velocity dispersion:\n", + "\n", + " \\theta_E = 4 \\pi (\\sigma / c)^2 (D_ls / D_s)\n", + "\n", + "where the D's are distances between observer, lens and source. So \\theta_E ~ \\sigma^2, and combining the two\n", + "scalings gives us a relation between the two things we care about \u2014 the Einstein radius we want to know and the\n", + "luminosity we can measure:\n", + "\n", + " \\theta_E ~ \\sigma^2 ~ (L^{1/4})^2 = L^{1/2}\n", + "\n", + "If one galaxy in a lens system has a measured luminosity L_anchor and Einstein radius \\theta_E_anchor, every\n", + "other galaxy's Einstein radius follows from its own luminosity:\n", + "\n", + " \\theta_E_i = \\theta_E_anchor * (L_i / L_anchor)^{0.5}\n", + "\n", + "This is the scaling relation we will build into the model below. The exponent 0.5 is the Faber-Jackson value;\n", + "more sophisticated versions exist (the \"fundamental plane\" adds a dependence on galaxy size and surface\n", + "brightness, tightening the relation), but the Faber-Jackson form captures the essential physics and is the\n", + "standard workhorse for lens modeling. It is the same idea that cluster lensing studies have used for decades:\n", + "tie the hundreds of cluster member galaxies to their luminosities via a scaling relation, so the model stays\n", + "tractable.\n", + "\n", + "The crucial property is that only *ratios* of luminosity enter the relation. The absolute calibration, the\n", + "units, even the waveband cancel out (so long as all galaxies are measured consistently) \u2014 which is what makes\n", + "the relation so easy to apply in practice." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "import numpy as np\n", + "from pathlib import Path\n", + "import autofit as af\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Initial Setup__\n", + "\n", + "We use the same two-lens-galaxy imaging dataset as the previous tutorial, where:\n", + "\n", + " - Both lens galaxies' light are `Sersic` profiles.\n", + " - Both lens galaxies' mass distributions are `Isothermal` profiles.\n", + " - The source galaxy's light is an `ExponentialCoreSph`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"x2_lens_galaxies\"\n", + "dataset_path = Path(\"dataset\") / \"imaging\" / dataset_name" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Auto-Simulation__\n", + "\n", + "If the dataset does not already exist on your system, it will be created by running the corresponding\n", + "simulator script. This ensures that all example scripts can be run without manually simulating data first." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/lens_x2.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mask__\n", + "\n", + "We define a 3.0\" circular mask, which contains both lens galaxies (centred at (0.0\", -1.0\") and (0.0\", 1.0\"))\n", + "and the lensed source emission." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mask_radius = 3.0\n", + "\n", + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=mask_radius,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Measured Luminosities__\n", + "\n", + "The scaling relation needs two inputs for every galaxy it touches: its centre and its luminosity. Neither is a\n", + "free parameter of the model \u2014 both are **measurements**, made from the imaging data before the mass model is\n", + "ever fitted.\n", + "\n", + "In a real analysis these come from a light-only fit performed first: for example, fitting an MGE to every\n", + "galaxy and integrating it to a total flux (the `autolens_workspace`'s scaling-relation SLaM pipeline does exactly\n", + "this). Because only luminosity *ratios* enter the relation, a magnitude catalogue from any survey works just as\n", + "well, converting via `L_i / L_anchor = 10 ** (0.4 * (m_anchor - m_i))`.\n", + "\n", + "In this tutorial we take a shortcut available only with simulated data: the simulator saved the true galaxies to\n", + "a `tracer.json` file, so we load it and integrate each lens galaxy's true light profile directly. This keeps the\n", + "tutorial self-contained, but keep in mind that on real data this step is a fit to the data, with its own\n", + "(small) uncertainties." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer_true = al.from_json(file_path=dataset_path / \"tracer.json\")\n", + "\n", + "lens_galaxies_true = [\n", + " galaxy for galaxy in tracer_true.galaxies if galaxy.redshift == 0.5\n", + "]\n", + "\n", + "centres = [\n", + " tuple(float(value) for value in galaxy.bulge.centre)\n", + " for galaxy in lens_galaxies_true\n", + "]\n", + "\n", + "luminosities = [\n", + " galaxy.bulge.luminosity_within_circle_from(radius=mask_radius)\n", + " for galaxy in lens_galaxies_true\n", + "]\n", + "\n", + "print(f\"Lens galaxy centres: {centres}\")\n", + "print(f\"Lens galaxy luminosities: {luminosities}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__The Anchor__\n", + "\n", + "The relation needs an \"anchor\": one galaxy whose Einstein radius is a free parameter of the model, off which\n", + "every other galaxy's Einstein radius hangs. We use the brightest galaxy, identified by `argmax` over the\n", + "measured luminosities \u2014 a measurement, not an assumption about which galaxy happens to be listed first.\n", + "\n", + "Anchoring on a galaxy the model is already fitting is the key trick: the anchor's `einstein_radius` is not a new\n", + "parameter, so the relation itself will add **zero** free parameters to the model." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "anchor_index = int(np.argmax(luminosities))\n", + "\n", + "luminosity_anchor = luminosities[anchor_index]\n", + "centre_anchor = centres[anchor_index]\n", + "\n", + "tied_indexes = [i for i in range(len(centres)) if i != anchor_index]\n", + "\n", + "print(f\"Anchor galaxy index: {anchor_index}, L_anchor = {luminosity_anchor:.4f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Over Sampling__\n", + "\n", + "As in the previous tutorial, we apply adaptive over-sampling centred on both lens galaxies, so the steeply\n", + "varying central light of each is computed accurately." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=dataset.grid,\n", + " sub_size_list=[4, 2, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=centres,\n", + ")\n", + "\n", + "dataset = dataset.apply_over_sampling(over_sample_size_lp=over_sample_size)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Light Via MGE__\n", + "\n", + "Every galaxy's light is modelled with a Multi-Gaussian Expansion, composed via the `al.model_util.mge_model_from`\n", + "convenience function (this wraps the `Basis` of linear `Gaussian` profiles we built by hand in chapter 2 into a\n", + "single call \u2014 the composition it returns is the same).\n", + "\n", + "Because the galaxy centres were measured above, we fix each MGE's centre to them (passing the measured centre as\n", + "both the `centre` and `centre_fixed` inputs, which fixes it rather than giving it a prior). The Gaussian\n", + "`sigma` values are fixed by the basis and the intensities are solved for by linear algebra, so each galaxy's\n", + "light costs just **two** non-linear parameters: its elliptical components. This is the \"light adds (almost) no\n", + "parameters\" half of the recipe from the introduction.\n", + "\n", + "The anchor galaxy also gets its mass: a free `Isothermal` profile with its centre fixed at the measured light\n", + "centre. Its `einstein_radius` is an ordinary free parameter \u2014 but it is also what the scaling relation below\n", + "hangs off." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "bulge_anchor = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=10,\n", + " centre=centre_anchor,\n", + " centre_fixed=centre_anchor,\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + ")\n", + "\n", + "mass_anchor = af.Model(al.mp.Isothermal)\n", + "mass_anchor.centre = centre_anchor\n", + "\n", + "lens_anchor = af.Model(\n", + " al.Galaxy,\n", + " redshift=0.5,\n", + " bulge=bulge_anchor,\n", + " mass=mass_anchor,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The source galaxy is also an MGE, with a free centre (we have no pre-measured position for the unlensed source)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "source_bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=10,\n", + " gaussian_per_basis=1,\n", + " centre_prior_is_uniform=False,\n", + ")\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0, bulge=source_bulge)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Scaling Relation__\n", + "\n", + "Now the relation itself. The fainter galaxy's mass is a spherical isothermal profile whose `einstein_radius` is\n", + "not given a prior \u2014 instead, it is *assigned an expression*: the anchor's `einstein_radius` multiplied by the\n", + "luminosity ratio raised to the Faber-Jackson exponent of 0.5.\n", + "\n", + "This single line is the whole trick. Because `mass_anchor.einstein_radius` is the model's own free parameter,\n", + "multiplying it by a fixed number produces a **derived quantity**, not a new parameter. Whenever the non-linear\n", + "search proposes an Einstein radius for the anchor, every tied galaxy's Einstein radius follows automatically.\n", + "\n", + "The tied galaxy keeps its MGE bulge (its light is inside the mask and must be fitted), so it costs two light\n", + "parameters and **zero** mass parameters.\n", + "\n", + "An honest aside before we continue: this dataset's two galaxies are comparably bright, and for a genuine system\n", + "of two co-dominant deflectors the previous tutorial's model \u2014 full mass freedom for both \u2014 is the right choice.\n", + "A galaxy contributing half the lensing deserves its own parameters. We tie one here so you can learn the\n", + "machinery on a familiar dataset; the regime where the relation genuinely earns its keep is a *population* of\n", + "fainter members, which we build towards below and which dominates the next tutorial." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "scaling_exponent = 0.5\n", + "\n", + "scaling_galaxies_list = []\n", + "\n", + "for i in tied_indexes:\n", + " bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=10,\n", + " centre=centres[i],\n", + " centre_fixed=centres[i],\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + " )\n", + "\n", + " mass = af.Model(al.mp.IsothermalSph)\n", + " mass.centre = centres[i]\n", + " mass.einstein_radius = (\n", + " mass_anchor.einstein_radius\n", + " * (luminosities[i] / luminosity_anchor) ** scaling_exponent\n", + " )\n", + "\n", + " scaling_galaxies_list.append(\n", + " af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass)\n", + " )\n", + "\n", + "scaling_galaxies = af.Collection(scaling_galaxies_list)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model__\n", + "\n", + "The model has two top-level collections: `galaxies` (the anchor and the source) and `scaling_galaxies` (the tied\n", + "population). This is not just presentational \u2014 `scaling_galaxies` is the collection name **PyAutoLens** expects a\n", + "scaling population in: the analysis appends it to the tracer's galaxy list when fitting, and results loaded back\n", + "via the aggregator restore it. It also keeps `model.info` readable, with the tied population visibly separate\n", + "from the freely modelled galaxies.\n", + "\n", + "Inspecting `model.info` below, note that the tied galaxies have no `einstein_radius` prior of their own \u2014 it is\n", + "listed as a function of the anchor's." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "model = af.Collection(\n", + " galaxies=af.Collection(lens=lens_anchor, source=source),\n", + " scaling_galaxies=scaling_galaxies,\n", + ")\n", + "\n", + "print(model.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Parameter Counts__\n", + "\n", + "Let's verify the claims above by counting, rather than believing. First we recompose the previous tutorial's\n", + "style of model on this dataset \u2014 every galaxy with its own free elliptical `Isothermal` mass (centres fixed at\n", + "the measured light centres, as above, so the comparison is like-for-like)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "per_galaxy_lens_dict = {}\n", + "\n", + "for i in range(len(centres)):\n", + " bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=10,\n", + " centre=centres[i],\n", + " centre_fixed=centres[i],\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + " )\n", + "\n", + " mass = af.Model(al.mp.Isothermal)\n", + " mass.centre = centres[i]\n", + "\n", + " per_galaxy_lens_dict[f\"lens_{i}\"] = af.Model(\n", + " al.Galaxy, redshift=0.5, bulge=bulge, mass=mass\n", + " )\n", + "\n", + "model_per_galaxy = af.Collection(\n", + " galaxies=af.Collection(**per_galaxy_lens_dict, source=source),\n", + ")\n", + "\n", + "print(f\"Free parameters, per-galaxy model (previous tutorial): {model_per_galaxy.prior_count}\")\n", + "print(f\"Free parameters, scaling-relation model: {model.prior_count}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The scaling-relation model is smaller. To isolate exactly what the relation saves, we compose one more variant:\n", + "identical to the scaling-relation model in every way, except each tied galaxy's `einstein_radius` is freed with\n", + "a uniform prior instead of tied. The difference in parameter count must equal the number of tied galaxies \u2014\n", + "one saved `einstein_radius` each." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "freed_galaxies_list = []\n", + "\n", + "for i in tied_indexes:\n", + " bulge = al.model_util.mge_model_from(\n", + " mask_radius=mask_radius,\n", + " total_gaussians=10,\n", + " centre=centres[i],\n", + " centre_fixed=centres[i],\n", + " sigma_min=dataset.pixel_scales[0] / 10.0,\n", + " )\n", + "\n", + " mass = af.Model(al.mp.IsothermalSph)\n", + " mass.centre = centres[i]\n", + " mass.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=2.0)\n", + "\n", + " freed_galaxies_list.append(\n", + " af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass)\n", + " )\n", + "\n", + "model_freed = af.Collection(\n", + " galaxies=af.Collection(lens=lens_anchor, source=source),\n", + " scaling_galaxies=af.Collection(freed_galaxies_list),\n", + ")\n", + "\n", + "print(f\"\\nGalaxies tied by the relation: {len(scaling_galaxies_list)}\")\n", + "print(f\"Free parameters, tier tied: {model.prior_count}\")\n", + "print(f\"Free parameters, tier freed: {model_freed.prior_count}\")\n", + "\n", + "assert model_freed.prior_count - model.prior_count == len(scaling_galaxies_list)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Scaling To Many Galaxies__\n", + "\n", + "Saving one parameter looks modest \u2014 the point is what happens as the population grows. Below we imagine this\n", + "lens had twelve additional member galaxies (we invent centres on a ring and plausible luminosities; this model\n", + "is composed for counting only, **not** fitted \u2014 our dataset contains no such galaxies!).\n", + "\n", + "Each imagined member is mass-only (faint distant perturbers whose light is negligible or outside the mask need\n", + "no light model \u2014 the mass-only counterpart of the intermediate options tutorial 1 discussed), with its Einstein\n", + "radius tied to the anchor by the same relation. We count the parameters of this 14-galaxy lens model, and of its nightmare per-galaxy twin." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "total_members = 12\n", + "\n", + "member_centres = [\n", + " (2.5 * float(np.sin(angle)), 2.5 * float(np.cos(angle)))\n", + " for angle in np.linspace(0.0, 2.0 * np.pi, total_members, endpoint=False)\n", + "]\n", + "\n", + "member_luminosities = [\n", + " float(luminosity) for luminosity in np.linspace(0.05, 0.5, total_members) * luminosity_anchor\n", + "]\n", + "\n", + "members_tied_list = []\n", + "members_freed_list = []\n", + "\n", + "for centre, luminosity in zip(member_centres, member_luminosities):\n", + " mass_tied = af.Model(al.mp.IsothermalSph)\n", + " mass_tied.centre = centre\n", + " mass_tied.einstein_radius = (\n", + " mass_anchor.einstein_radius\n", + " * (luminosity / luminosity_anchor) ** scaling_exponent\n", + " )\n", + "\n", + " members_tied_list.append(af.Model(al.Galaxy, redshift=0.5, mass=mass_tied))\n", + "\n", + " mass_freed = af.Model(al.mp.IsothermalSph)\n", + " mass_freed.centre = centre\n", + " mass_freed.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=2.0)\n", + "\n", + " members_freed_list.append(af.Model(al.Galaxy, redshift=0.5, mass=mass_freed))\n", + "\n", + "model_many_tied = af.Collection(\n", + " galaxies=af.Collection(lens=lens_anchor, source=source),\n", + " scaling_galaxies=af.Collection(scaling_galaxies_list + members_tied_list),\n", + ")\n", + "\n", + "model_many_freed = af.Collection(\n", + " galaxies=af.Collection(lens=lens_anchor, source=source),\n", + " scaling_galaxies=af.Collection(scaling_galaxies_list + members_freed_list),\n", + ")\n", + "\n", + "print(f\"Free parameters, 2-galaxy scaling model: {model.prior_count}\")\n", + "print(f\"Free parameters, 14-galaxy scaling model: {model_many_tied.prior_count}\")\n", + "print(f\"Free parameters, 14-galaxy per-galaxy-mass model: {model_many_freed.prior_count}\")\n", + "\n", + "assert model_many_tied.prior_count == model.prior_count" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Twelve more galaxies, zero more parameters. The tied model's dimensionality is *independent of the number of\n", + "galaxies* \u2014 this is the property that makes group- and cluster-scale lens modeling possible at all, and it is\n", + "why the assertion above is worth having in the script rather than in prose." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model Fit__\n", + "\n", + "We now fit the scaling-relation model to the data, using the familiar `Nautilus` search and `AnalysisImaging`\n", + "object. The parameter space is barely larger than a single-lens fit, which is the whole point." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\") / \"chapter_4\",\n", + " name=\"tutorial_3_scaling_relation\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", + ")\n", + "\n", + "analysis = al.AnalysisImaging(dataset=dataset)\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_3_scaling_relation\"\n", + " \" folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result = search.fit(model=model, analysis=analysis)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results__\n", + "\n", + "In `result.info`, the tied galaxy has no `einstein_radius` entry of its own \u2014 it is reported as a derived\n", + "function of the anchor's, which is what a tied parameter looks like in the output. Its posterior uncertainty\n", + "comes entirely from the anchor's." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(result.info)\n", + "\n", + "aplt.subplot_fit_imaging(fit=result.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fit is good \u2014 but we should ask *why* it is good, because the answer is the honest heart of this tutorial.\n", + "\n", + "The tied model can only fit well if the true galaxies actually lie close to the relation we imposed. We can\n", + "check, because this is simulated data and we know the truth. Below we compare the fainter galaxy's true Einstein\n", + "radius against the value the relation predicts from the anchor's true Einstein radius and the luminosity ratio." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "einstein_radii_true = [\n", + " float(galaxy.mass.einstein_radius) for galaxy in lens_galaxies_true\n", + "]\n", + "\n", + "for i in tied_indexes:\n", + " einstein_radius_predicted = einstein_radii_true[anchor_index] * (\n", + " (luminosities[i] / luminosity_anchor) ** scaling_exponent\n", + " )\n", + "\n", + " print(f\"Tied galaxy {i}: true einstein_radius = {einstein_radii_true[i]:.3f}\")\n", + " print(f\"Tied galaxy {i}: relation predicts = {einstein_radius_predicted:.3f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The prediction lands within a few percent of the truth: this simulated pair happens to sit almost exactly on the\n", + "Faber-Jackson relation. That is why the tied fit succeeds. Real galaxies are not always so obliging.\n", + "\n", + "__Limitations__\n", + "\n", + "A scaling relation is an assumption, and it is worth being clear-eyed about what we assumed:\n", + "\n", + "**Scatter.** Faber-Jackson is a statistical relation with real intrinsic scatter \u2014 at fixed luminosity,\n", + "galaxies show a spread in velocity dispersion, and therefore in Einstein radius. A tied model has no freedom to\n", + "absorb this scatter: it asserts every member sits exactly on the relation. For a population of faint members\n", + "whose individual lensing effects are small, the errors average down and this is fine. For any single galaxy\n", + "that matters a lot to the fit, it is a risk.\n", + "\n", + "**Deviant members.** Worse than scatter is a member that is systematically off the relation \u2014 a tidally\n", + "stripped satellite that has lost dark matter but kept its stars, a galaxy with an unusual mass-to-light ratio,\n", + "or a misclassified foreground/background interloper assigned a luminosity at the wrong distance. Because the\n", + "tied model *cannot* adjust that one galaxy, the non-linear search compensates the only way it can: by biasing\n", + "the parameters it does control \u2014 the anchor's mass, the source \u2014 dragging the whole lens model away from the\n", + "truth. One bad member can poison an otherwise excellent fit, and nothing in the residuals will neatly point at\n", + "the culprit.\n", + "\n", + "**The anchor itself.** Anchoring on the brightest galaxy assumes the anchor sits on the relation too. If it is\n", + "the anomalous one, every tied galaxy inherits its anomaly.\n", + "\n", + "The defence against all three is **selective freedom**. The tiers can be mixed within one model: keep the long\n", + "tail of faint members tied, but promote any galaxy that is bright, close to the lensed images, or visibly\n", + "suspicious to its own free mass profile \u2014 exactly as the extra galaxies were treated earlier in this chapter. A\n", + "middle option bounds a member's free Einstein radius using its luminosity (free, but only within a factor of the\n", + "relation's prediction). And the relation itself can be loosened: freeing `scaling_exponent` as a fit parameter\n", + "costs a single dimension *for the entire population* and is a useful systematics test. The `autolens_workspace`'s\n", + "`imaging/features/scaling_relation` example shows all of these tiers working together.\n", + "\n", + "__Lens Environments__\n", + "\n", + "Everything above was framed around lenses with multiple deflectors, but the same machinery solves a problem we\n", + "met at the start of this chapter: the **environment** of an ordinary single-galaxy lens.\n", + "\n", + "The first tutorial of this chapter modelled a nearby extra galaxy individually, which was fine for one.\n", + "But a deep image of a real lens can reveal dozens of galaxies near the line of sight, each contributing a small\n", + "perturbation to the deflection field. Modeling them individually is hopeless; ignoring them entirely can bias\n", + "precision measurements. With a scaling relation they cost nothing: measure each galaxy's centre and luminosity\n", + "from the image, tie the lot to the main lens galaxy (which is the natural anchor \u2014 it is usually the brightest\n", + "galaxy in the field), and the model gains dozens of physically motivated perturbers with zero added parameters.\n", + "\n", + "__Wrap Up__\n", + "\n", + "In this tutorial we learned:\n", + "\n", + "1. Luminosity predicts lensing mass, via mass-follows-light arguments and the Faber-Jackson relation\n", + " (`L ~ \\sigma^4`, `\\theta_E ~ \\sigma^2`, hence `\\theta_E ~ L^{0.5}`).\n", + "\n", + "2. A scaling relation replaces per-galaxy mass freedom with a shared relation anchored on a parameter the model\n", + " already fits, so tied galaxies add **zero** free parameters \u2014 verified by explicit parameter counting.\n", + "\n", + "3. Combined with MGE light profiles, a many-galaxy lens model stays low-dimensional: dimensionality is\n", + " independent of the number of galaxies.\n", + "\n", + "4. The relation is an assumption: scatter and deviant members can bias the whole model, and the remedy is\n", + " selective freedom \u2014 tie the faint majority, free the important few.\n", + "\n", + "5. The same machinery models the environments of single-lens systems, at no parameter cost.\n", + "\n", + "So far, we tied galaxy to galaxy. But the biggest lenses in the Universe \u2014 galaxy groups and clusters \u2014 contain\n", + "something the galaxies themselves cannot account for: a massive dark matter halo enveloping the whole system,\n", + "holding most of its mass. In the next tutorial we step up to group-scale lenses, where the scaling relation\n", + "becomes essential (there are simply too many member galaxies to free) and a dark matter halo joins the model as\n", + "a new component. There, we will also meet a different way to normalise the relation \u2014 a shared free\n", + "normalization at a fixed reference luminosity, rather than an anchor galaxy \u2014 and truncated mass profiles, which\n", + "describe members whose outer dark matter has been tidally stripped by the very halo we are adding." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb b/notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb new file mode 100644 index 0000000..e11894d --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb @@ -0,0 +1,923 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 4: Group Scale\n", + "=======================\n", + "\n", + "In the previous tutorials we took our first steps beyond the single lens galaxy: we included extra galaxies near\n", + "the lens in the model, we modeled systems where two or more galaxies of comparable mass share the lensing, and we\n", + "introduced scaling relations, which tie the mass of a galaxy to its light so that adding more galaxies to a model\n", + "does not mean adding more free parameters.\n", + "\n", + "In this tutorial we put all of those tools together and take the first big step up the \"regime ladder\" of strong\n", + "lensing: the **group scale**.\n", + "\n", + "In the standard cosmological model (Lambda Cold Dark Matter, or LCDM), galaxies do not live in isolation. They\n", + "form and evolve inside \"dark matter halos\", and these halos are themselves nested: small halos hosting single\n", + "galaxies merge and fall into larger halos hosting many. A **galaxy group** is the next rung above a single\n", + "galaxy in this hierarchy: a dark matter halo of roughly 10^13 to 10^14 solar masses hosting anywhere from a\n", + "handful to a few dozen galaxies. (Our own Milky Way lives in such a structure, the Local Group.) Above groups\n", + "sit **galaxy clusters**, halos of 10^14 solar masses and beyond hosting hundreds or thousands of galaxies, which\n", + "are the subject of the next tutorial.\n", + "\n", + "When a group acts as a strong lens, several of its galaxies contribute significantly to the deflection of the\n", + "source's light. The brightest galaxy of the group -- called the brightest group galaxy (BGG), or the brightest\n", + "cluster galaxy (BCG) at cluster scale -- typically sits near the centre of the group's dark matter halo and\n", + "dominates the lensing. The other group members perturb the lensed image around it. The group's shared dark\n", + "matter halo may also enter the mass model as its own component, often centred on the BGG where one exists --\n", + "though as we will see, whether it is needed is an explicit modelling choice, not an automatic ingredient.\n", + "\n", + "__Groups vs Multi-Galaxy Lenses__\n", + "\n", + "You may now be wondering how a \"group-scale lens\" differs from the multi-galaxy lenses of the previous tutorials,\n", + "and the honest answer is that the line between them is **blurry**. Every group is a multi-galaxy lens: it has\n", + "multiple galaxies whose mass matters for the lensing. But not every multi-galaxy lens is a group: two galaxies of\n", + "comparable mass that happen to sit close on the sky (or are mid-merger) share the lensing without being embedded\n", + "in a massive shared halo with a member population.\n", + "\n", + "The physically meaningful distinction is the **environment**: a group has a shared dark matter halo, a dominant\n", + "central galaxy, and members orbiting inside the host's potential. That environment leaves signatures in the mass\n", + "model, and the most important one is **tidal truncation**, which we introduce below.\n", + "\n", + "__Tidal Truncation and the dPIE Profile__\n", + "\n", + "A galaxy orbiting inside a group does not keep its full dark matter halo. The tidal field of the host group\n", + "strips the outer, loosely bound parts of the member's halo, so the member's mass distribution is cut off -- or\n", + "\"truncated\" -- at a finite radius. The isothermal profiles we have used so far are a poor description of this:\n", + "their density falls as 1/r^2 forever, so their total mass diverges with radius.\n", + "\n", + "The standard truncated profile of group- and cluster-scale lensing is the **dPIE** (dual Pseudo-Isothermal\n", + "Elliptical) profile, available in **PyAutoLens** as `al.mp.dPIEMassSph`. It behaves isothermally at intermediate\n", + "radii but its density falls off much more steeply beyond a truncation radius, giving it a finite total mass --\n", + "exactly the behaviour we expect for a tidally stripped group member.\n", + "\n", + "__Contents__\n", + "\n", + "- **Initial Setup:** Load the simulated group-scale dataset (auto-simulating it if absent) and plot it.\n", + "- **Mask:** Define the 2D mask, which is larger than at galaxy scale because the group spans more sky.\n", + "- **Galaxy Centres:** Load the centres of the BGG and member galaxies from .json files.\n", + "- **The dPIE Profile:** Introduce the truncated dPIE mass profile and its parameters.\n", + "- **Fitting a Group:** Fit the data with a tracer containing the BGG, members and source.\n", + "- **A Group Halo?:** Add a group-scale dark matter halo to the tracer and see how it changes the fit.\n", + "- **Model Fit:** Compose and fit a group-scale lens model with individually modeled members.\n", + "- **Scaling Relation Members:** Tie the members' masses to their light so they cost almost no parameters.\n", + "- **The Group Scale Sweet Spot:** Why groups are the sweet spot of the familiar lens modeling toolkit.\n", + "- **Wrap Up:** Summary of the script and next steps." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from pathlib import Path\n", + "\n", + "import autofit as af\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Initial Setup__\n", + "\n", + "We begin by loading the group-scale strong lens dataset `simple`, which was simulated with:\n", + "\n", + " - A main lens galaxy (the BGG) at (0.0\", 0.0\"), with a `SersicSph` light profile and an `IsothermalSph` mass\n", + " profile with a 4.0\" Einstein radius.\n", + " - Two member galaxies at (3.5\", 2.5\") and (-4.4\", -5.0\"), with `SersicSph` light profiles and tidally\n", + " truncated `dPIEMassSph` mass profiles.\n", + " - A single source galaxy with a `SersicCore` light profile." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"simple\"\n", + "dataset_path = Path(\"dataset\") / \"group\" / dataset_name" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Auto-Simulation__\n", + "\n", + "If the dataset does not already exist on your system, it will be created by running the corresponding\n", + "simulator script. This ensures that all example scripts can be run without manually simulating data first." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/group.py\"],\n", + " check=True,\n", + " )\n", + "\n", + "dataset = al.Imaging.from_fits(\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " pixel_scales=0.1,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we plot the dataset, the difference from a galaxy-scale lens is immediately clear: the lensed arcs form a\n", + "much larger ring (the BGG's Einstein radius is 4.0\", compared to the ~1.0\" typical of a single galaxy), and two\n", + "smaller galaxies are visible away from the centre. Their light -- and, more importantly for the lensing, their\n", + "mass -- must be included in our analysis." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mask__\n", + "\n", + "We define a 7.5\" circular mask, much larger than the 2.5\"-3.0\" masks of previous chapters. It must enclose the\n", + "full lensed arc system and the member galaxies, because all of them contribute light and mass to the region we\n", + "fit." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mask_radius = 7.5\n", + "\n", + "mask = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " radius=mask_radius,\n", + ")\n", + "\n", + "dataset = dataset.apply_mask(mask=mask)\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Galaxy Centres__\n", + "\n", + "Following the convention of the previous tutorials, the centres of the galaxies are loaded from .json files in\n", + "the dataset folder. For a group we distinguish two categories:\n", + "\n", + " - `main_lens_centres`: the main lens galaxies -- here just the BGG at (0.0\", 0.0\") -- which are modeled with\n", + " full freedom.\n", + "\n", + " - `member_centres`: the group members, which are modeled with restrictive assumptions (fixed centres, and\n", + " later a scaling relation) to keep the model dimensionality low.\n", + "\n", + "For real data these centres come from the observed light of each galaxy (e.g. via a click-based GUI or a\n", + "photometry catalogue), exactly as for the extra galaxies of the earlier tutorials." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "main_lens_centres = al.from_json(file_path=dataset_path / \"main_lens_centres.json\")\n", + "\n", + "member_centres = al.from_json(file_path=dataset_path / \"extra_galaxies_centres.json\")\n", + "\n", + "print(f\"Main lens centres: {main_lens_centres}\")\n", + "print(f\"Member centres: {member_centres}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__The dPIE Profile__\n", + "\n", + "Before fitting anything, lets get to know the dPIE profile, since it is the workhorse mass profile of the group\n", + "and cluster regimes.\n", + "\n", + "The `dPIEMassSph` profile is parameterized in the convention of Lenstool (a long-established cluster lensing\n", + "code), which differs from the profiles we have met so far:\n", + "\n", + " - `sigma`: the fiducial velocity dispersion of the galaxy in km/s. This sets the overall lensing strength,\n", + " playing the role the `einstein_radius` played for the isothermal profile (for an isothermal sphere the two\n", + " are directly related: a bigger velocity dispersion means a bigger Einstein radius).\n", + "\n", + " - `r_core`: the core radius in arcseconds, within which the density profile flattens. It is common to fix\n", + " `r_core = 0.0` (a \"vanishing core\", where the profile has an exact analytic form), which we do throughout\n", + " this tutorial.\n", + "\n", + " - `r_cut`: the truncation radius in arcseconds -- the key new parameter. Outside `r_cut` the density falls off\n", + " steeply (as 1/r^4 rather than the isothermal 1/r^2), encoding the tidal stripping of the member's outer dark\n", + " matter halo and giving the profile a finite total mass.\n", + "\n", + " - `redshift_object`, `redshift_source`, `H0`, `Om0`: because `sigma` is a physical velocity, converting it to\n", + " deflection angles requires the lensing geometry and a cosmology. These are fixed inputs describing the lens\n", + " system, not parameters we fit.\n", + "\n", + "Lets make two dPIE profiles with identical `sigma` but different truncation radii -- one truncated at 8.0\" and\n", + "one truncated so far out (1000.0\") that it is effectively untruncated -- and compare their convergence profiles." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dpie_truncated = al.mp.dPIEMassSph(\n", + " centre=(0.0, 0.0),\n", + " sigma=200.0,\n", + " r_core=0.0,\n", + " r_cut=8.0,\n", + " redshift_object=0.5,\n", + " redshift_source=1.0,\n", + ")\n", + "\n", + "dpie_untruncated = al.mp.dPIEMassSph(\n", + " centre=(0.0, 0.0),\n", + " sigma=200.0,\n", + " r_core=0.0,\n", + " r_cut=1000.0,\n", + " redshift_object=0.5,\n", + " redshift_source=1.0,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We evaluate the convergence of both profiles on a 1D line of radial coordinates, using a `Grid2DIrregular` so we\n", + "can choose the radii ourselves." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "radii = np.linspace(0.01, 20.0, 200)\n", + "\n", + "radial_grid = al.Grid2DIrregular([(0.0, radius) for radius in radii])\n", + "\n", + "convergence_truncated = dpie_truncated.convergence_2d_from(grid=radial_grid)\n", + "convergence_untruncated = dpie_untruncated.convergence_2d_from(grid=radial_grid)\n", + "\n", + "plt.semilogy(radii, np.asarray(convergence_truncated), label=\"dPIE (r_cut = 8.0)\")\n", + "plt.semilogy(radii, np.asarray(convergence_untruncated), label=\"dPIE (untruncated)\")\n", + "plt.axvline(x=8.0, color=\"k\", linestyle=\"--\", label=\"r_cut\")\n", + "plt.xlabel(\"Radius (arcseconds)\")\n", + "plt.ylabel(\"Convergence\")\n", + "plt.legend()\n", + "plt.show()\n", + "plt.close()" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inside `r_cut` the two profiles are nearly identical -- both behave isothermally. Beyond `r_cut`, the truncated\n", + "profile's convergence plummets while the untruncated one keeps its shallow isothermal decline. The truncated\n", + "member therefore contributes far less mass at large radii, which is exactly what tidal stripping does.\n", + "\n", + "This is why the dPIE, and not the isothermal profile, is the standard choice for group and cluster members: the\n", + "extra galaxies of a galaxy-scale lens have no host environment stripping them, so untruncated isothermal\n", + "profiles are fine there, but a member orbiting inside a shared group halo is physically truncated whether or\n", + "not the model includes that halo as an explicit component.\n", + "\n", + "For scale: a member with `sigma = 200.0` km/s at these redshifts has an Einstein radius of ~0.7\", roughly a\n", + "fifth of the BGG's -- a perturber, not a co-dominant lens.\n", + "\n", + "__Fitting a Group__\n", + "\n", + "Now lets fit the data. Following the fitting tutorials of earlier chapters, we first build a tracer from\n", + "galaxies whose light and mass profiles match the true values used to simulate the data, and fit it with the\n", + "`FitImaging` object.\n", + "\n", + "The tracer contains four galaxies: the BGG, the two members and the source. The fit handles all of them\n", + "simultaneously, summing the deflection field of every mass profile to ray-trace the source's light." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "bgg = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.SersicSph(\n", + " centre=(0.0, 0.0), intensity=0.7, effective_radius=2.0, sersic_index=4.0\n", + " ),\n", + " mass=al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=4.0),\n", + ")\n", + "\n", + "member_0 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.SersicSph(\n", + " centre=(3.5, 2.5), intensity=0.9, effective_radius=0.8, sersic_index=3.0\n", + " ),\n", + " mass=al.mp.dPIEMassSph(\n", + " centre=(3.5, 2.5),\n", + " sigma=200.0,\n", + " r_core=0.0,\n", + " r_cut=8.0,\n", + " redshift_object=0.5,\n", + " redshift_source=1.0,\n", + " ),\n", + ")\n", + "\n", + "member_1 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.SersicSph(\n", + " centre=(-4.4, -5.0), intensity=1.866, effective_radius=0.8, sersic_index=3.0\n", + " ),\n", + " mass=al.mp.dPIEMassSph(\n", + " centre=(-4.4, -5.0),\n", + " sigma=240.0,\n", + " r_core=0.0,\n", + " r_cut=13.3,\n", + " redshift_object=0.5,\n", + " redshift_source=1.0,\n", + " ),\n", + ")\n", + "\n", + "source = al.Galaxy(\n", + " redshift=1.0,\n", + " bulge=al.lp.SersicCore(\n", + " centre=(0.0, 0.1),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0),\n", + " intensity=3.0,\n", + " effective_radius=0.4,\n", + " sersic_index=1.0,\n", + " ),\n", + ")\n", + "\n", + "tracer = al.Tracer(galaxies=[bgg, member_0, member_1, source])\n", + "\n", + "fit = al.FitImaging(dataset=dataset, tracer=tracer)\n", + "\n", + "aplt.subplot_fit_imaging(fit=fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because this is the true model, the residuals are consistent with noise and the log likelihood is as high as it\n", + "can be for this dataset. Note that nothing about the `FitImaging` object changed: the same fitting machinery we\n", + "learnt at galaxy scale simply receives a tracer with more galaxies in it." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(f\"Log likelihood of the true model: {fit.log_likelihood}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__A Group Halo?__\n", + "\n", + "You may have noticed that the model above contains no group-scale dark matter halo, despite this tutorial\n", + "opening with the statement that a group is defined by one. Two things are going on here.\n", + "\n", + "First, the BGG's `IsothermalSph` has a 4.0\" Einstein radius -- far larger than the ~1.0\" of an isolated galaxy\n", + "of its luminosity. A mass profile centred on the BGG cannot tell \"stars and dark matter belonging to the BGG\"\n", + "apart from \"group dark matter centred on the BGG\": a single isothermal profile at the group centre soaks up\n", + "both. So the group's halo is partly hidden inside the BGG's mass profile already.\n", + "\n", + "Second, whether to add a *separate* halo component to the model is an **explicit modelling choice**, and this\n", + "dataset was deliberately simulated without one. Lets see what happens if we add one anyway. We add a fifth\n", + "galaxy carrying only mass -- an `IsothermalSph` centred on the BGG, the conventional choice for a group halo\n", + "where a BGG exists -- and refit." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "group_halo = al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=1.5),\n", + ")\n", + "\n", + "tracer_with_halo = al.Tracer(galaxies=[bgg, group_halo, member_0, member_1, source])\n", + "\n", + "fit_with_halo = al.FitImaging(dataset=dataset, tracer=tracer_with_halo)\n", + "\n", + "aplt.subplot_fit_imaging(fit=fit_with_halo)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fit is now visibly worse -- the extra 1.5\" Einstein radius of mass at the centre over-deflects the source's\n", + "light, displacing the model arcs from the observed ones -- and the log likelihood drops accordingly." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(f\"Log likelihood with a group halo added: {fit_with_halo.log_likelihood}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On real data the same experiment runs in reverse: fit the group with and without an explicit halo component and\n", + "let the data decide (via the residuals and the Bayesian evidence introduced in earlier chapters). Some groups\n", + "are well described by their galaxies alone, with the central galaxy's profile absorbing the halo; others --\n", + "typically those with the largest Einstein radii or image configurations no galaxy-mass model can reproduce --\n", + "require a dominant halo component, often centred on the BGG.\n", + "\n", + "__Model Fit__\n", + "\n", + "We now perform a proper model-fit with a non-linear search, as a scientist would for a group whose true\n", + "parameters are unknown. We compose the model as follows:\n", + "\n", + " - The BGG's light is a linear `SersicSph` (its centre free) and its mass an `IsothermalSph` [7 parameters].\n", + "\n", + " - Each member's light is a linear `SersicSph` with its centre fixed to the observed centre, and its mass a\n", + " `dPIEMassSph` with a free `sigma`, its centre fixed, `r_core = 0.0` and `r_cut` fixed to a fiducial 10.0\"\n", + " [3 parameters per member, 6 total].\n", + "\n", + " - The source's light is a linear `SersicCore` [6 parameters].\n", + "\n", + "Fixing the member centres to their observed light and fixing `r_cut` follows the reasoning of the extra\n", + "galaxies tutorial: the data rarely constrains a perturber's truncation radius, so we spend our parameter budget\n", + "on the quantity that matters most -- each member's overall mass, via `sigma`. The redshifts and cosmology of\n", + "the dPIE are pinned to their known values, since they are properties of the lens system, not parameters to\n", + "sample." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# BGG:\n", + "\n", + "bulge = af.Model(al.lp_linear.SersicSph)\n", + "\n", + "mass = af.Model(al.mp.IsothermalSph)\n", + "\n", + "bgg_model = af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass)\n", + "\n", + "# Member Galaxies:\n", + "\n", + "member_list = []\n", + "\n", + "for centre in member_centres:\n", + "\n", + " bulge = af.Model(al.lp_linear.SersicSph)\n", + " bulge.centre = (centre[0], centre[1])\n", + "\n", + " mass = af.Model(al.mp.dPIEMassSph)\n", + " mass.centre = (centre[0], centre[1])\n", + " mass.sigma = af.UniformPrior(lower_limit=0.0, upper_limit=300.0)\n", + " mass.r_core = 0.0 # vanishing core -- fixed; the dPIE is analytic at r_core = 0\n", + " mass.r_cut = 10.0 # truncation fixed at a fiducial radius\n", + " mass.redshift_object = 0.5\n", + " mass.redshift_source = 1.0\n", + " mass.H0 = 67.66 # pinned: model constants, not parameters to sample\n", + " mass.Om0 = 0.30966\n", + "\n", + " member_list.append(af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass))\n", + "\n", + "# Source:\n", + "\n", + "source_model = af.Model(al.Galaxy, redshift=1.0, bulge=af.Model(al.lp_linear.SersicCore))\n", + "\n", + "# Overall Lens Model:\n", + "\n", + "model = af.Collection(\n", + " galaxies=af.Collection(lens=bgg_model, source=source_model),\n", + " extra_galaxies=af.Collection(member_list),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Printing the model's `info` confirms its composition: the BGG and source under `galaxies`, and the two members\n", + "under `extra_galaxies` with only their `sigma`, `effective_radius` and `sersic_index` free.\n", + "\n", + "The total number of free parameters is N=19 -- take note of this number, as it is central to the discussion at\n", + "the end of this tutorial." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(model.info)\n", + "\n", + "print(f\"Total free parameters: {model.prior_count}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before fitting, we set up the adaptive over-sampling scheme at the centre of every galaxy in the group (not\n", + "just the BGG), following the standard workspace approach. As in previous tutorials, the details are not\n", + "important yet -- just note that at group scale every galaxy centre needs it." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=dataset.grid,\n", + " sub_size_list=[4, 2, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=list(main_lens_centres) + list(member_centres),\n", + ")\n", + "\n", + "dataset = dataset.apply_over_sampling(over_sample_size_lp=over_sample_size)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We fit the model with the `Nautilus` non-linear search, using the same `AnalysisImaging` object as every\n", + "imaging fit so far -- another sign that the group scale does not require new machinery." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\") / \"chapter_4\",\n", + " name=\"tutorial_4_group_scale\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", + ")\n", + "\n", + "analysis = al.AnalysisImaging(dataset=dataset)\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_4_group_scale\"\n", + " \" folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result = search.fit(model=model, analysis=analysis)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result's `info` and maximum likelihood fit show the model recovers the group: the BGG's Einstein radius,\n", + "the members' velocity dispersions and the source's properties are all inferred from the data." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(result.info)\n", + "\n", + "aplt.subplot_fit_imaging(fit=result.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Scaling Relation Members__\n", + "\n", + "The model above gave every member its own free `sigma`. With two members that costs two parameters -- harmless.\n", + "But groups can host dozens of members, and one free mass parameter per member quickly bloats the model, slows\n", + "the search, and asks the data to constrain masses it barely feels individually.\n", + "\n", + "The previous tutorial's solution applies directly here: tie the members' masses to their light through a\n", + "scaling relation. More luminous galaxies are more massive, so we write each member's `sigma` and `r_cut` as\n", + "power laws of its luminosity, normalized by a single shared free parameter:\n", + "\n", + " - `sigma = sigma_ref * (L / L_ref) ** 0.25`\n", + " - `r_cut = r_cut_ref * (L / L_ref) ** 0.7`\n", + "\n", + "These exponents follow the convention of modern cluster lensing analyses, and `L_ref` is a fixed reference\n", + "luminosity. The 0.25 is the previous tutorial's Faber-Jackson relation recast for velocity dispersion:\n", + "`L ~ sigma^4` inverts to `sigma ~ L^0.25`, and since `theta_E ~ sigma^2` this reproduces the `theta_E ~ L^0.5`\n", + "scaling we anchored there. Note also the change of normalization: rather than hanging the relation off an\n", + "anchor galaxy the model already fits, we normalise it with a shared free parameter at a fixed reference\n", + "luminosity. Now the *entire member population's mass* costs one free parameter (`sigma_ref`), no matter how\n", + "many members the group has, and each member's observed luminosity acts as a physically motivated prior on its\n", + "mass.\n", + "\n", + "For real data the luminosities come from your photometry catalogue (only luminosity ratios enter the model, so\n", + "any consistent units work). Here we compute them from the true member light profiles, using an aperture\n", + "luminosity within 3.0\"." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "luminosity_list = [\n", + " member_0.bulge.luminosity_within_circle_from(radius=3.0),\n", + " member_1.bulge.luminosity_within_circle_from(radius=3.0),\n", + "]\n", + "\n", + "print(f\"Member luminosities: {luminosity_list}\")\n", + "\n", + "reference_luminosity = luminosity_list[0]\n", + "\n", + "sigma_ref = af.UniformPrior(lower_limit=0.0, upper_limit=300.0)\n", + "r_cut_ref = 8.0 # fixed, like r_cut in the previous model\n", + "\n", + "member_list = []\n", + "\n", + "for centre, luminosity in zip(member_centres, luminosity_list):\n", + "\n", + " luminosity_ratio = float(luminosity) / float(reference_luminosity)\n", + "\n", + " bulge = af.Model(al.lp_linear.SersicSph)\n", + " bulge.centre = (centre[0], centre[1])\n", + "\n", + " mass = af.Model(al.mp.dPIEMassSph)\n", + " mass.centre = (centre[0], centre[1])\n", + " mass.sigma = sigma_ref * luminosity_ratio**0.25\n", + " mass.r_core = 0.0\n", + " mass.r_cut = r_cut_ref * luminosity_ratio**0.7\n", + " mass.redshift_object = 0.5\n", + " mass.redshift_source = 1.0\n", + " mass.H0 = 67.66\n", + " mass.Om0 = 0.30966\n", + "\n", + " member_list.append(af.Model(al.Galaxy, redshift=0.5, bulge=bulge, mass=mass))\n", + "\n", + "model = af.Collection(\n", + " galaxies=af.Collection(lens=bgg_model, source=source_model),\n", + " scaling_galaxies=af.Collection(member_list),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the tied members now live in the `scaling_galaxies` collection \u2014 the home the previous tutorial\n", + "introduced for a scaling-relation population \u2014 whereas the individually-modelled members above sat in\n", + "`extra_galaxies`, like tutorial 1's interlopers. Both collections are included in the ray-tracing; the split\n", + "keeps `model.info` readable and tells the results machinery which galaxies are a tied population.\n", + "\n", + "The model's `info` shows that both members' `sigma` values now trace back to the single shared `sigma_ref`\n", + "prior, and the parameter count has dropped to N=18.\n", + "\n", + "A drop of one parameter looks unremarkable -- until you scale it up. A group with 20 members modeled\n", + "individually would need 20 free mass parameters; with the scaling relation it still needs exactly one. (In\n", + "practice the members' light is handled the same way, using the Multi Gaussian Expansion from earlier in the\n", + "lectures, whose fixed-centre members add almost no free parameters either -- so entire member populations can\n", + "be added to a group model almost for free.)\n", + "\n", + "This dataset was in fact simulated with members that obey this exact scaling relation, so the model remains the\n", + "true model." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(model.info)\n", + "\n", + "print(f\"Total free parameters: {model.prior_count}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We fit this model with an identical search set up." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\") / \"chapter_4\",\n", + " name=\"tutorial_4_group_scale_scaling_relation\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", + ")\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/\"\n", + " \"tutorial_4_group_scale_scaling_relation folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result_scaling = search.fit(model=model, analysis=analysis)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")\n", + "\n", + "print(result_scaling.info)\n", + "\n", + "aplt.subplot_fit_imaging(fit=result_scaling.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__The Group Scale Sweet Spot__\n", + "\n", + "Step back and consider what this tutorial did *not* require: no new fitting machinery, no new analysis object,\n", + "no new data format. The `FitImaging`, `AnalysisImaging`, linear light profiles and `Nautilus` search of the\n", + "galaxy-scale chapters handled the group unchanged -- we just put more galaxies in the tracer, reached for the\n", + "truncated dPIE profile, and used scaling relations to keep the member population cheap. Even the pixelized\n", + "source reconstructions of the previous chapter work at group scale exactly as they do at galaxy scale, and for\n", + "real groups with complex arcs they are the recommended source model.\n", + "\n", + "This is why the group scale is the **sweet spot** of strong lens modeling. The full toolkit of galaxy-scale\n", + "modeling still applies, and the model dimensionality stays low: our individually-modeled-member fit had N=19\n", + "free parameters and the scaling-relation fit N=18. Real group models are of this order -- a few tens of free\n", + "parameters at most (N < 30 or so) -- comfortably within reach of the non-linear searches we already know, with\n", + "run times of minutes to hours.\n", + "\n", + "Push the system any richer, however, and this toolkit breaks down. A cluster hosts hundreds of members and\n", + "lenses many sources at once; its image is too large and complex to fit pixel-by-pixel with a tracer's light\n", + "model, and its model would need hundreds of parameters. Cluster-scale modeling therefore switches to a\n", + "different tool set -- fitting the *positions* of the multiple images of many point-like sources, with member\n", + "catalogues driving the mass model -- which is the subject of the next tutorial.\n", + "\n", + "__Wrap Up__\n", + "\n", + "In this tutorial, we took the tools of the previous tutorials to the group scale. Lets recap what we learnt:\n", + "\n", + "- **Groups in LCDM**: A galaxy group is a dark matter halo of roughly 10^13 to 10^14 solar masses hosting a\n", + " handful to a few dozen galaxies, with the brightest group galaxy (BGG) typically near its centre. The group's\n", + " halo may enter the mass model as its own component, often centred on the BGG -- but whether it is needed is\n", + " an explicit modelling choice, tested by fitting with and without it.\n", + "\n", + "- **Groups vs multi-galaxy lenses**: The line is blurry. All groups are multi-galaxy lenses, but not all\n", + " multi-galaxy lenses are groups -- the group's defining feature is the shared halo environment its members\n", + " orbit within.\n", + "\n", + "- **Tidal truncation and the dPIE**: Members orbiting in the group's potential have their outer dark matter\n", + " tidally stripped, so their profiles are truncated. The `dPIEMassSph` profile encodes this via its `r_cut`\n", + " truncation radius, with `sigma` setting the lensing strength and `r_core` the (usually vanishing) core.\n", + "\n", + "- **Fitting and modeling groups**: The galaxy-scale machinery works unchanged -- a tracer with more galaxies,\n", + " members with fixed centres and free `sigma`, and a `Nautilus` search over N=19 parameters.\n", + "\n", + "- **Scaling relations**: Tying member `sigma` and `r_cut` to luminosity via power laws with one shared free\n", + " normalization means the whole member population costs a single parameter, however many members there are.\n", + "\n", + "- **The sweet spot**: Groups are the largest systems the familiar toolkit -- including pixelized source\n", + " reconstruction -- still handles, with model dimensionality staying below a few tens of parameters.\n", + "\n", + "In the next tutorial we climb the final rung of the ladder to galaxy clusters, where tens to hundreds of member\n", + "galaxies lens many sources simultaneously. There the toolkit changes: we will model the positions of multiply\n", + "imaged point sources rather than every pixel of the data, and drive the mass model from member catalogues via\n", + "a csv interface built on the same scaling relations we used here." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb b/notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb new file mode 100644 index 0000000..f885276 --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb @@ -0,0 +1,1062 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 5: Cluster Scale\n", + "=========================\n", + "\n", + "Throughout this chapter we have been climbing a ladder of scale: from a single lens galaxy with an extra\n", + "galaxy nearby, to multi-galaxy lenses, to galaxy groups whose members share a common dark matter halo.\n", + "\n", + "This tutorial climbs the final rung: **galaxy clusters**, the most massive gravitationally-bound structures in\n", + "the Universe. A cluster-scale strong lens contains:\n", + "\n", + "- **30+ to hundreds of lens galaxies**: a brightest cluster galaxy (BCG) and bright satellites, plus a large\n", + " population of lower-mass member galaxies, all embedded in...\n", + "\n", + "- **A cluster-scale dark matter halo of more than 10^14 solar masses** (the most massive exceed 10^15 solar\n", + " masses) \u2014 hundreds of times more massive than the halo of a single lens galaxy.\n", + "\n", + "- **Many multiply-imaged background sources** \u2014 often tens of them \u2014 and, crucially, these sources typically\n", + " all sit at **different redshifts**. Light from each source therefore traverses a different path through the\n", + " Universe, and modeling them together requires **multi-plane ray tracing**, which we explain below.\n", + "\n", + "The science a cluster lens delivers is different from the galaxy-scale lensing of earlier chapters:\n", + "\n", + "- **Extreme magnification**: near a cluster's critical curves, magnifications of tens to hundreds are common\n", + " (compared to the factors of a few of galaxy-scale lensing). Clusters act as natural telescopes, letting us\n", + " study intrinsically faint galaxies in the early Universe that would otherwise be invisible \u2014 many of the\n", + " most distant galaxies known were discovered behind lensing clusters.\n", + "\n", + "- **Mapping the cluster's mass**: every multiply-imaged source constrains the cluster's total mass\n", + " distribution along a different line of sight. With many sources, the mass model pins down the shape of the\n", + " cluster's dark matter halo and the substructure within it \u2014 the granularity of dark matter on sub-cluster\n", + " scales \u2014 providing some of the sharpest tests of the cold dark matter model.\n", + "\n", + "The modeling toolkit also changes at this scale. Fitting the extended arcs of every source, with a light\n", + "profile or pixelization each, is computationally prohibitive when there are tens of sources and hundreds of\n", + "member galaxies. The standard approach instead fits only the **positions** of each source's multiple images \u2014\n", + "point-source modeling \u2014 and drives the mass model from spreadsheet-editable **CSV catalogues**, because\n", + "writing Python model code for hundreds of galaxies by hand is not sensible either.\n", + "\n", + "__Contents__\n", + "\n", + "- **Multi-Plane Ray Tracing:** What it means for sources at different redshifts to be lensed together.\n", + "- **Dataset:** Load the simulated cluster's CCD imaging and inspect the true multi-plane tracer.\n", + "- **Point Source Modeling:** Why cluster modeling fits multiple-image positions rather than extended arcs.\n", + "- **Point Datasets:** The per-source multiple-image positions, loaded from a single hand-editable CSV.\n", + "- **The CSV Interface:** The named-galaxy model CSVs and the scaling-member catalogue CSV.\n", + "- **Point Solver:** The solver which finds the image-plane multiple images of a point source.\n", + "- **Model:** Compose the four-tier cluster model (main lenses, scaling members, host halo, sources).\n", + "- **Analysis + Factor Graph:** One analysis per source dataset, combined into a single global fit.\n", + "- **Search:** Configure the Nautilus non-linear search.\n", + "- **Model Fit:** Run the fit.\n", + "- **Results:** A thorough tour of results access for a cluster fit \u2014 tracer, per-member profiles,\n", + " solved source-plane positions, magnifications and image-plane validation.\n", + "- **Customization:** Where to go for the full point-source customization options.\n", + "- **Wrap Up:** Summary and the hand-off to weak lensing.\n", + "\n", + "__Multi-Plane Ray Tracing__\n", + "\n", + "Every lens system in the tutorials so far had two planes: an image plane (the lens galaxies, all at one\n", + "redshift) and a source plane (the lensed galaxy). The lens equation was applied once, mapping image-plane\n", + "coordinates to source-plane coordinates via the deflection angles:\n", + "\n", + "$\\beta = \\theta - \\alpha(\\theta)$\n", + "\n", + "A cluster breaks this picture, because its sources sit at different redshifts. Consider our simulated cluster,\n", + "which has lens galaxies at $z = 0.5$ and two sources, at $z = 1.0$ and $z = 2.0$:\n", + "\n", + "- Light from the $z = 1.0$ source is deflected by the $z = 0.5$ cluster and travels to us: the familiar\n", + " two-plane system.\n", + "\n", + "- Light from the $z = 2.0$ source first passes the $z = 1.0$ plane, then the $z = 0.5$ cluster plane. If any\n", + " galaxy at $z = 1.0$ had mass, it would deflect this light too \u2014 the deflections of successive planes\n", + " accumulate, each applied at the position the ray has reached by that plane.\n", + "\n", + "This is **multi-plane ray tracing**: the lens equation is applied recursively, plane by plane in redshift\n", + "order. There is a second, subtler effect: the strength of a deflection depends on the distances between the\n", + "observer, the deflector and the source. The same cluster bends light from a $z = 2.0$ source through a larger\n", + "effective angle than light from a $z = 1.0$ source, because the geometry of the light paths differs. The\n", + "recursive lens equation accounts for this by scaling each plane's deflections by ratios of cosmological\n", + "(angular diameter) distances.\n", + "\n", + "The maths is more bookkeeping than new physics, and the good news is that the `Tracer` handles all of it\n", + "automatically: give it galaxies at three or more redshifts and it groups them into planes, orders them, scales\n", + "their deflections and applies the recursion. Every source's redshift must simply be *correct* \u2014 hardcoding the\n", + "wrong redshift silently produces the wrong multi-plane geometry, which is why the dataset CSVs below carry a\n", + "redshift for every source." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "import numpy as np\n", + "from pathlib import Path\n", + "\n", + "import autofit as af\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset__\n", + "\n", + "We use a simulated cluster whose scale is kept deliberately small so it runs quickly, but which contains every\n", + "ingredient of the cluster regime: 2 main lens galaxies (a BCG and a satellite), 10 lower-mass member galaxies\n", + "on a luminosity-mass scaling relation, a 10^15.3 solar-mass dark matter halo, and 2 multiply-imaged sources at\n", + "different redshifts (z = 1.0 and z = 2.0). A real cluster simply has more of everything \u2014 and we will see that\n", + "scaling this model up to hundreds of members does not add a single free parameter." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"simple\"\n", + "dataset_path = Path(\"dataset\") / \"cluster\" / dataset_name" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Auto-Simulation__\n", + "\n", + "If the dataset does not already exist on your system, it will be created by running the corresponding\n", + "simulator script. This ensures that all example scripts can be run without manually simulating data first." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "if al.util.dataset.should_simulate(str(dataset_path)):\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.run(\n", + " [sys.executable, \"scripts/simulator/cluster.py\"],\n", + " check=True,\n", + " )" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first load and plot the cluster's CCD imaging. Note the pixel scale of 0.2\" and the sheer size of the\n", + "field: 100\" x 100\", compared to the ~6\" fields of the galaxy-scale tutorials. The Einstein radius of a\n", + "10^15 solar-mass cluster is ~20-30\", so its multiple images and arcs are spread across a region hundreds of\n", + "times larger in area than a galaxy-scale lens.\n", + "\n", + "The imaging is loaded for visualization only \u2014 as we discuss next, the model is not fitted to these pixels." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "data = al.Array2D.from_fits(file_path=dataset_path / \"data.fits\", pixel_scales=0.2)\n", + "\n", + "aplt.plot_array(array=data, title=\"Cluster CCD Imaging\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The simulator saved the true `Tracer` used to make this dataset, which we can load to inspect the multi-plane\n", + "structure described above. The tracer has three planes: the lens plane at z = 0.5 (holding all 13 lens-plane\n", + "galaxies \u2014 2 main galaxies, 10 scaling members and the dark matter halo) and one source plane per source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer_true = al.from_json(file_path=dataset_path / \"tracer.json\")\n", + "\n", + "print(f\"Number of planes: {len(tracer_true.planes)}\")\n", + "print(f\"Plane redshifts: {[float(plane.redshift) for plane in tracer_true.planes]}\")\n", + "print(f\"Galaxies in lens plane: {len(tracer_true.planes[0])}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Point Source Modeling__\n", + "\n", + "In every previous tutorial we fitted the data pixel-by-pixel: a model image of the lens and source light was\n", + "computed, convolved with the PSF and compared to every image pixel. For a cluster this becomes computationally\n", + "prohibitive:\n", + "\n", + "- Every one of the tens of sources needs its own light model (or pixelization), each adding parameters (or an\n", + " expensive linear inversion) to the fit.\n", + "\n", + "- The image is enormous \u2014 our modest simulated cluster already spans 500 x 500 pixels \u2014 and the deflection\n", + " angles of hundreds of member galaxies would need evaluating at every one of them, for every likelihood\n", + " evaluation.\n", + "\n", + "The standard approach in cluster lensing therefore simplifies the data dramatically: each multiply-imaged\n", + "source is reduced to the **positions of its multiple images** \u2014 the (y,x) coordinates of the brightest pixel\n", + "of each image, measured from the imaging. The model then only has to answer a much cheaper question: does this\n", + "mass model ray-trace all of a source's observed image positions back to the same source-plane location?\n", + "\n", + "This is **point-source modeling**. We are deliberately discarding the information in the arcs' extended light\n", + "in exchange for a likelihood that is fast enough to evaluate with hundreds of galaxies and tens of sources.\n", + "(For lensed quasars and supernovae \u2014 genuine point sources \u2014 nothing is even discarded.) Extended-source\n", + "cluster modeling, where individual arcs are fitted at pixel level with the pixelizations of the previous\n", + "chapter, does exist in **PyAutoLens** as a specialised follow-up analysis \u2014 see the `autolens_workspace`\n", + "cluster examples \u2014 but position fitting is the workhorse that published cluster mass models are built on.\n", + "\n", + "__Point Datasets__\n", + "\n", + "The positions of each source's multiple images are stored in a single CSV file, `point_datasets.csv`, with\n", + "one row per observed multiple image:\n", + "\n", + " - `name`: the source identifier (e.g. `point_0`). All rows sharing a `name` belong to the same source.\n", + " - `y`, `x`: the image-plane position of the multiple image, in arc-seconds.\n", + " - `positions_noise`: the positional uncertainty in arc-seconds \u2014 how precisely the image's centroid is\n", + " measured (for space-telescope imaging ~0.005\", set by PSF-fitting precision, not the pixel scale).\n", + " - `redshift`: the source redshift, which every row of a group must share. This column is what makes the\n", + " multi-plane geometry reproducible from the file alone.\n", + "\n", + "This CSV is the recommended input format for cluster datasets because it is hand-editable: measuring your own\n", + "cluster's multiple images means filling in a spreadsheet, not writing Python.\n", + "\n", + "`al.list_from_csv` loads the file into a list of `PointDataset` objects, one per source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_list = al.list_from_csv(file_path=dataset_path / \"point_datasets.csv\")\n", + "\n", + "for dataset in dataset_list:\n", + " print(\"Point Dataset Info:\")\n", + " print(dataset.info)\n", + " print(f\"Redshift: {dataset.redshift}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting each dataset shows just how sparse point-source data is: a handful of (y,x) coordinates per source.\n", + "That a full cluster mass model can be constrained by so few numbers is because each coordinate is measured to\n", + "milli-arcsecond precision, and because every source at its own redshift probes the mass distribution\n", + "differently." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for dataset in dataset_list:\n", + " aplt.plot_grid(\n", + " grid=al.Grid2DIrregular(np.atleast_2d(dataset.positions)),\n", + " title=dataset.name,\n", + " )" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__The CSV Interface__\n", + "\n", + "With hundreds of member galaxies, composing the lens model in Python \u2014 one `af.Model(al.Galaxy)` per galaxy,\n", + "as in every previous tutorial \u2014 stops being sensible. The cluster workflow therefore defines the model in CSV\n", + "files as well, which the simulator wrote alongside the data:\n", + "\n", + " - `mass.csv`: every individually-modelled mass profile \u2014 the two main lens galaxies' `dPIEMassSph` profiles\n", + " and the host halo's `NFWMCRLudlowSph`.\n", + " - `light.csv`: the light profiles (not used in point-source modeling, since light does not lens).\n", + " - `point.csv`: the source galaxies' `Point` components.\n", + "\n", + "Each row of these CSVs carries:\n", + "\n", + " - `galaxy`: a galaxy name (e.g. `lens_0`, `host_halo`, `source_0`). Rows sharing a name compose into one\n", + " galaxy.\n", + " - `attr_name`: the attribute the profile is bound to on the galaxy (e.g. `mass`, `dark`, `point_0`).\n", + " - `profile_class`: the profile class name (e.g. `dPIEMassSph`), looked up in `al.mp` / `al.lp` / `al.ps`.\n", + " - The profile's constructor parameters as columns (tuples like `centre` split into `y` / `x`); parameters a\n", + " row's class does not use are left blank.\n", + " - `redshift`: the galaxy's redshift.\n", + "\n", + "The lower-mass member population lives in a fourth, simpler catalogue, `scaling_galaxies.csv`, with one row\n", + "per member and columns `y, x, luminosity`. No profile class, no mass parameters \u2014 because, as the previous\n", + "tutorial showed, the members' masses are not free parameters but derive from their luminosities via a scaling\n", + "relation. The catalogue is exactly what an observer measures: where each member is and how bright it is.\n", + "\n", + "This is the key scaling property of the CSV interface: modeling a richer cluster means appending rows to\n", + "`scaling_galaxies.csv` (and, for another individually-modelled galaxy or halo, to `mass.csv`) \u2014 the Python\n", + "below does not change, and the number of free parameters does not grow with the member count.\n", + "\n", + "We load the mass and point families (`al.galaxy_models_from_csv`) and the member catalogue\n", + "(`al.galaxy_table_from_csv`):" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mass_table = al.galaxy_models_from_csv(\n", + " file_path=dataset_path / \"mass.csv\", family=\"mass\"\n", + ")\n", + "point_table = al.galaxy_models_from_csv(\n", + " file_path=dataset_path / \"point.csv\", family=\"point\"\n", + ")\n", + "\n", + "scaling_galaxies_table = al.galaxy_table_from_csv(\n", + " file_path=dataset_path / \"scaling_galaxies.csv\"\n", + ")\n", + "scaling_galaxies_centres = scaling_galaxies_table.centres\n", + "scaling_galaxies_luminosity_list = scaling_galaxies_table.luminosities\n", + "\n", + "print(f\"Scaling galaxies in catalogue: {len(scaling_galaxies_luminosity_list)}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In a real analysis the member centres and luminosities come from light fits to the imaging data (or an\n", + "external photometric catalogue), and the main-galaxy centres in `mass.csv` are pinned to the observed light\n", + "centres. Fixing the centres to observed values is essential at cluster scale: a handful of multiple-image\n", + "positions cannot constrain hundreds of free centre coordinates, but the imaging measures them for free.\n", + "\n", + "__Point Solver__\n", + "\n", + "Point-source modeling needs one new piece of machinery: given a mass model and a source-plane (y,x)\n", + "coordinate, where in the image plane do its multiple images appear? Answering this means solving the lens\n", + "equation *backwards*, which has no analytic solution.\n", + "\n", + "The `PointSolver` solves it numerically: it tiles the image plane with triangles, ray-traces each triangle's\n", + "corners to the source plane, keeps the triangles that land on the source-plane coordinate, and subdivides\n", + "them repeatedly until the image positions are located to a precision of `pixel_scale_precision`.\n", + "\n", + "The solver's grid must span the full 100\" cluster field \u2014 the multiple images sit tens of arc-seconds from\n", + "the cluster centre. The `magnification_threshold` discards heavily demagnified images (e.g. the faint central\n", + "image of a typical lens configuration, which real observations do not detect)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "grid = al.Grid2D.uniform(\n", + " shape_native=(100, 100),\n", + " pixel_scales=1.0, # The pixel-scale converts pixel units to arc-seconds.\n", + ")\n", + "\n", + "solver = al.PointSolver.for_grid(\n", + " grid=grid, pixel_scale_precision=0.001, magnification_threshold=0.1\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model__\n", + "\n", + "We now compose the cluster model, which has four tiers of component \u2014 the same four tiers every published\n", + "cluster mass model is built from:\n", + "\n", + " - **Main lens galaxies (2)**: the BCG and satellite, modelled individually with `dPIEMassSph` profiles. As\n", + " the previous tutorial on group-scale lenses discussed, the dPIE is the standard truncated profile of this\n", + " regime: members orbiting in the cluster's shared potential have their outer dark matter tidally stripped,\n", + " so their mass genuinely ends at a finite truncation radius `r_cut`. Each main galaxy has free `sigma` (its\n", + " fiducial velocity dispersion, setting the lens strength) and free `r_cut`, with its centre fixed to the\n", + " observed light centre [4 free parameters].\n", + "\n", + " - **Scaling-tier members (10)**: `dPIEMassSph` profiles with centres fixed from the catalogue and `sigma` /\n", + " `r_cut` derived from each member's luminosity via the scaling relation introduced earlier in this chapter:\n", + " sigma = sigma_ref * (L / L_ref)^0.25 and r_cut = r_cut_ref * (L / L_ref)^0.7. Only the normalization\n", + " `sigma_ref` \u2014 the velocity dispersion of a member at the reference luminosity \u2014 is free. Whether the\n", + " catalogue holds 10 members or 300, the tier costs [1 free parameter].\n", + "\n", + " - **Host dark matter halo (1)**: a standalone galaxy carrying the cluster's `NFWMCRLudlowSph` halo, centred\n", + " on the BCG, with a free total mass `mass_at_200` [1 free parameter].\n", + "\n", + " - **Source galaxies (2)**: parameter-free `PointSolved` components. Rather than sampling each source's\n", + " (y,x) source-plane centre as free parameters, the fit solves for the centre analytically \u2014 the\n", + " precision-weighted mean of the back-traced image positions. With tens of sources this matters: it removes\n", + " two parameters per source from the search [0 free parameters].\n", + "\n", + "**Total: N = 6 free parameters** \u2014 for a model containing 13 galaxies and 2 sources. This is the punchline of\n", + "the cluster workflow: catalogues and scaling relations decouple the model's physical richness from the\n", + "dimensionality of the non-linear search.\n", + "\n", + "`al.galaxy_af_models_from_csv_tables` converts the CSV tables into a dictionary of `af.Model(Galaxy)` objects\n", + "keyed by galaxy name, with every CSV value fixed as a default. We then selectively promote parameters to free\n", + "priors \u2014 exactly the `af.Model` customization API used throughout the earlier chapters, just applied to\n", + "models built from files instead of Python." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "redshift_lens = 0.5\n", + "source_redshifts = [dataset.redshift for dataset in dataset_list]\n", + "\n", + "galaxy_models = al.galaxy_af_models_from_csv_tables(mass_table, point_table)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The main lens galaxies get free dPIE `sigma` / `r_cut`; their centres and redshifts stay fixed at the CSV\n", + "values, and `r_core` stays fixed at the CSV's 0.0 (the vanishing-core convention discussed in the previous\n", + "tutorial). The cosmology constants `H0` / `Om0` are pinned explicitly: they are model *constants*, not\n", + "parameters to sample \u2014 left unset they would inherit priors from the configuration files and float." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for name in (\"lens_0\", \"lens_1\"):\n", + " galaxy_models[name].mass.sigma = af.UniformPrior(\n", + " lower_limit=50.0, upper_limit=600.0\n", + " )\n", + " galaxy_models[name].mass.r_cut = af.UniformPrior(lower_limit=2.0, upper_limit=40.0)\n", + " galaxy_models[name].mass.H0 = 67.66\n", + " galaxy_models[name].mass.Om0 = 0.30966" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The host halo gets a free `mass_at_200`, spanning the full range of cluster masses with a log-uniform prior\n", + "(mass scales spanning orders of magnitude are sampled in log space, as we saw for intensities in earlier\n", + "chapters)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "galaxy_models[\"host_halo\"].dark.mass_at_200 = af.LogUniformPrior(\n", + " lower_limit=10**14.5, upper_limit=10**16.0\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each source's `point_i` component is swapped for the parameter-free `al.ps.PointSolved`. The name pairing\n", + "(`point_0`, `point_1`) is what links each model component to the `PointDataset` with the same name \u2014 in a\n", + "multi-source cluster this pairing is what guarantees every source's positions are fitted by the correct\n", + "component." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for i, dataset in enumerate(dataset_list):\n", + " setattr(galaxy_models[f\"source_{i}\"], f\"point_{i}\", af.Model(al.ps.PointSolved))" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The scaling tier is composed in a loop over the catalogue, exactly as in the previous tutorial: the single\n", + "shared prior `scaling_sigma_ref` is defined once outside the loop, and each member's `sigma` / `r_cut` derive\n", + "from it via that member's luminosity ratio. The truth value used by the simulator is sigma_ref = 85 km/s." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "scaling_sigma_ref = af.UniformPrior(lower_limit=0.0, upper_limit=200.0)\n", + "scaling_sigma_exponent = 0.25 # alpha (Faber-Jackson)\n", + "scaling_gamma = 0.2 # mass-to-light tilt, fixed\n", + "scaling_rcut_exponent = 1.0 + scaling_gamma - 2.0 * scaling_sigma_exponent # 0.7\n", + "\n", + "reference_luminosity = 1.0\n", + "scaling_r_core_fixed = 0.0\n", + "scaling_r_cut_ref_fixed = 5.0\n", + "\n", + "scaling_galaxies_list = []\n", + "for centre, luminosity in zip(\n", + " scaling_galaxies_centres, scaling_galaxies_luminosity_list\n", + "):\n", + " luminosity_ratio = luminosity / reference_luminosity\n", + "\n", + " mass = af.Model(al.mp.dPIEMassSph)\n", + " mass.centre = tuple(centre)\n", + " mass.sigma = scaling_sigma_ref * luminosity_ratio**scaling_sigma_exponent\n", + " mass.r_core = scaling_r_core_fixed\n", + " mass.r_cut = scaling_r_cut_ref_fixed * luminosity_ratio**scaling_rcut_exponent\n", + " mass.redshift_object = redshift_lens\n", + " mass.redshift_source = max(source_redshifts)\n", + " mass.H0 = 67.66\n", + " mass.Om0 = 0.30966\n", + "\n", + " scaling_galaxies_list.append(af.Model(al.Galaxy, redshift=redshift_lens, mass=mass))\n", + "\n", + "scaling_galaxies = af.Collection(scaling_galaxies_list)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The named galaxies and the scaling tier combine into the overall model. Printing `model.info` confirms the\n", + "parameter count: for all its 15 galaxies, the search explores just 6 dimensions." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "model = af.Collection(\n", + " galaxies=af.Collection(**galaxy_models),\n", + " scaling_galaxies=scaling_galaxies,\n", + ")\n", + "\n", + "print(model.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Analysis + Factor Graph__\n", + "\n", + "Each source's dataset gets its own `AnalysisPoint`, which defines the log likelihood for that source: how\n", + "well do the model's predictions match this source's observed image positions?\n", + "\n", + "`fit_positions_cls=al.FitPositionsSourceSolved` selects the **solved source-plane** likelihood \u2014 the default\n", + "cluster configuration. Rather than forward-solving the lens equation for the model's image positions on every\n", + "likelihood evaluation (accurate but expensive), it ray-traces the *observed* positions back to the source\n", + "plane and measures how tightly they converge around the analytically-solved source centre, with a weighting\n", + "that maps source-plane scatter back to image-plane precision. No lens-equation solve per evaluation makes\n", + "cluster-scale inference fast; the `PointSolver` is reserved for validating the final model below.\n", + "\n", + "The analyses are then combined through a **factor graph**, the same multi-dataset machinery used for\n", + "multi-wavelength imaging: each analysis becomes a factor sharing the one global model, and the total log\n", + "likelihood is the sum over the per-source likelihoods. This is what lets every source \u2014 each at its own\n", + "redshift, each with its own multi-plane geometry \u2014 constrain the same cluster mass model simultaneously." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "analysis_list = [\n", + " al.AnalysisPoint(\n", + " dataset=dataset,\n", + " solver=solver,\n", + " fit_positions_cls=al.FitPositionsSourceSolved,\n", + " use_jax=True,\n", + " )\n", + " for dataset in dataset_list\n", + "]\n", + "\n", + "analysis_factor_list = [\n", + " af.AnalysisFactor(prior_model=model, analysis=analysis)\n", + " for analysis in analysis_list\n", + "]\n", + "\n", + "factor_graph = af.FactorGraphModel(*analysis_factor_list, use_jax=True)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Search__\n", + "\n", + "We fit the model with Nautilus. The parameter space is only 6-dimensional, so a modest number of live points\n", + "suffices; a richer cluster with several individually-modelled galaxies would warrant more." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\", \"chapter_4\"),\n", + " name=\"tutorial_5_cluster_scale\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " n_batch=50,\n", + " iterations_per_quick_update=10000,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model Fit__\n", + "\n", + "We pass the factor graph's global model and the factor graph itself (as the analysis) to the search. Because\n", + "the likelihood involves no pixel-level computation, a full cluster point-source fit takes minutes \u2014 this is\n", + "the payoff of point-source modeling, given that a pixel-level fit of the same system would take days." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(\n", + " \"\"\"\n", + " The non-linear search has begun running.\n", + "\n", + " This Jupyter notebook cell will progress once the search has completed - this could take a few minutes!\n", + "\n", + " On-the-fly updates every iterations_per_quick_update are printed to the notebook.\n", + " \"\"\"\n", + ")\n", + "\n", + "result_list = search.fit(model=factor_graph.global_prior_model, analysis=factor_graph)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results__\n", + "\n", + "A cluster fit produces the most complex results object we have met: many galaxies across multiple planes,\n", + "tiers whose parameters are derived rather than sampled, and one result per source dataset. This section tours\n", + "how to pull out each quantity you will actually need \u2014 it is worth working through slowly, because navigating\n", + "results is half the practical skill of cluster modeling.\n", + "\n", + "A factor-graph fit returns one `Result` per dataset (in the same order as `dataset_list`). All results share\n", + "the same global model \u2014 and therefore the same samples and maximum likelihood model \u2014 but each carries its own\n", + "dataset and its own maximum likelihood `FitPointDataset`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(f\"Number of results (one per source dataset): {len(result_list)}\")\n", + "\n", + "result = result_list[0]" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: The Maximum Likelihood Instance__\n", + "\n", + "The `max_log_likelihood_instance` is the model instance with the highest likelihood found. Its structure\n", + "mirrors the model composition above: named galaxies under `.galaxies`, the scaling tier under\n", + "`.scaling_galaxies`. We can read off the best-fit parameters of every tier." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "instance = result.max_log_likelihood_instance\n", + "\n", + "print(\"Max Log Likelihood Model:\")\n", + "print(f\"BCG sigma: {instance.galaxies.lens_0.mass.sigma:.1f} km/s\")\n", + "print(f\"BCG r_cut: {instance.galaxies.lens_0.mass.r_cut:.2f} arcsec\")\n", + "print(f\"Satellite sigma: {instance.galaxies.lens_1.mass.sigma:.1f} km/s\")\n", + "print(f\"Halo mass_at_200: {instance.galaxies.host_halo.dark.mass_at_200:.2e} solar masses\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: Per-Member Profiles__\n", + "\n", + "The scaling tier's single free parameter was `sigma_ref`, but the instance contains the fully-realised\n", + "`dPIEMassSph` of every member \u2014 the scaling relation has been applied, so each member carries the `sigma` and\n", + "`r_cut` its luminosity implies. This is how you would tabulate the inferred mass of every member galaxy in a\n", + "real cluster analysis." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for i, member in enumerate(instance.scaling_galaxies):\n", + " print(\n", + " f\"Member {i}: centre={member.mass.centre}, \"\n", + " f\"sigma={member.mass.sigma:.1f} km/s, r_cut={member.mass.r_cut:.2f} arcsec\"\n", + " )" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: The Tracer__\n", + "\n", + "`max_log_likelihood_tracer` assembles every galaxy of the instance \u2014 named tiers and scaling members alike \u2014\n", + "into the best-fit multi-plane `Tracer`. This is the object to use for any lensing calculation with the\n", + "best-fit mass model: convergence maps, deflection fields, critical curves and caustics, all computed exactly\n", + "as in the earlier chapters, but now for the full cluster." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer = result.max_log_likelihood_tracer\n", + "\n", + "print(f\"Tracer planes: {[float(plane.redshift) for plane in tracer.planes]}\")\n", + "print(f\"Galaxies in lens plane: {len(tracer.planes[0])}\")\n", + "\n", + "aplt.subplot_tracer(tracer=tracer, grid=grid)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: Solved Source-Plane Positions__\n", + "\n", + "Each result's `max_log_likelihood_fit` is the `FitPointDataset` of that source. Because we fitted with the\n", + "solved source-plane likelihood, the fit's `positions` object carries the analytically-solved source-plane\n", + "centre \u2014 the model's inferred true position of the source, before lensing. Its `residual_map` lists how far\n", + "each back-traced image lands from that centre (in the source plane): for a good model these residuals are\n", + "tiny, since all images of a source originate from the same point." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for result in result_list:\n", + " fit = result.max_log_likelihood_fit\n", + "\n", + " print(f\"Source '{result.max_log_likelihood_fit.dataset.name}':\")\n", + " print(f\" Solved source-plane centre: {np.asarray(fit.positions.source_plane_coordinate)}\")\n", + " print(f\" Source-plane residuals: {np.asarray(fit.positions.residual_map)}\")\n", + " print(f\" Log likelihood: {float(fit.positions.log_likelihood):.2f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can perform the same back-tracing manually with the tracer, which makes explicit what the fit just did:\n", + "ray-trace each source's observed image positions through the multi-plane lens equation to that source's own\n", + "plane. `plane_index_via_redshift_from` maps a source redshift to its plane, and `traced_grid_2d_list_from`\n", + "returns the positions traced to every plane \u2014 the multi-plane generalisation of the two-plane ray tracing of\n", + "chapter 1." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for dataset in dataset_list:\n", + " plane_index = tracer.plane_index_via_redshift_from(redshift=dataset.redshift)\n", + " traced_grids = tracer.traced_grid_2d_list_from(grid=dataset.positions)\n", + "\n", + " print(f\"Source '{dataset.name}' (z={dataset.redshift}, plane {plane_index}):\")\n", + " print(f\" Back-traced source-plane positions: {traced_grids[plane_index].in_list}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: Magnifications__\n", + "\n", + "The magnification of each multiple image tells us how much the cluster brightens the source at that position \u2014\n", + "the \"natural telescope\" number. It is computed from the local distortion of the multi-plane deflection field\n", + "(its Hessian) at each observed position, via the `LensCalc` object. `plane_j` selects the source's plane, so\n", + "each source's magnifications are evaluated through its own multi-plane chain.\n", + "\n", + "At cluster scale, images near the critical curves can reach magnifications of tens to hundreds \u2014 this is\n", + "precisely the quantity you would quote when using the cluster to study an intrinsically faint background\n", + "galaxy, since the source's true luminosity is the observed luminosity divided by the magnification." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for dataset in dataset_list:\n", + " plane_index = tracer.plane_index_via_redshift_from(redshift=dataset.redshift)\n", + "\n", + " lens_calc = al.LensCalc.from_tracer(\n", + " tracer=tracer, use_multi_plane=True, plane_j=plane_index\n", + " )\n", + " magnifications = lens_calc.magnification_2d_via_hessian_from(grid=dataset.positions)\n", + "\n", + " print(f\"Source '{dataset.name}' image magnifications: {np.abs(np.asarray(magnifications))}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: Image-Plane Validation__\n", + "\n", + "The solved source-plane likelihood never solves the lens equation forwards, so it cannot tell us whether the\n", + "best-fit model predicts the *right number* of multiple images \u2014 a model that would produce an extra image, or\n", + "lose an observed one, looks the same to it. The standard final check is therefore to forward-solve the\n", + "best-fit model with the `PointSolver` and compare the predicted image positions to the observed ones,\n", + "per source." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for result, dataset in zip(result_list, dataset_list):\n", + " fit = result.max_log_likelihood_fit\n", + "\n", + " source_plane_centre = tuple(np.asarray(fit.positions.source_plane_coordinate))\n", + "\n", + " model_positions = solver.solve(\n", + " tracer=tracer,\n", + " source_plane_coordinate=source_plane_centre,\n", + " plane_redshift=dataset.redshift,\n", + " )\n", + "\n", + " print(f\"Source '{dataset.name}':\")\n", + " print(f\" Observed positions ({len(dataset.positions)}): {dataset.positions.in_list}\")\n", + " print(f\" Model positions ({len(model_positions)}): {model_positions.in_list}\")\n", + "\n", + " aplt.plot_grid(\n", + " grid=model_positions,\n", + " title=f\"Model Multiple Images: {dataset.name}\",\n", + " )" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Results: Samples and Errors__\n", + "\n", + "Everything above used the maximum likelihood model, but the `Samples` object gives the full posterior \u2014 the\n", + "same API as chapter 2, unchanged by the cluster's complexity. Of particular scientific interest here are the\n", + "inferred halo mass and the scaling-relation normalization `sigma_ref` (whose truth value in the simulator was\n", + "85 km/s): the marginalised errors on these are what a cluster paper reports." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "samples = result_list[0].samples\n", + "\n", + "median_pdf = samples.median_pdf()\n", + "\n", + "print(\"Median PDF Model:\")\n", + "print(f\"Halo mass_at_200: {median_pdf.galaxies.host_halo.dark.mass_at_200:.2e}\")\n", + "print(f\"BCG sigma: {median_pdf.galaxies.lens_0.mass.sigma:.1f} km/s\")\n", + "\n", + "upper_3_sigma = samples.values_at_upper_sigma(sigma=3.0)\n", + "lower_3_sigma = samples.values_at_lower_sigma(sigma=3.0)\n", + "\n", + "print(\"BCG sigma 3-sigma interval:\")\n", + "print(f\" {lower_3_sigma.galaxies.lens_0.mass.sigma:.1f}\"\n", + " f\" - {upper_3_sigma.galaxies.lens_0.mass.sigma:.1f} km/s\")\n", + "\n", + "aplt.corner_anesthetic(samples=samples)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Customization__\n", + "\n", + "This tutorial used the default point-source setup throughout: `Point` / `PointSolved` source components, the\n", + "solved source-plane likelihood, and default `PointSolver` settings. Point-source modeling has a rich set of\n", + "options beyond these \u2014 image-plane likelihoods and their pairing schemes, free source centres, fitting the\n", + "fluxes of the multiple images, fitting time delays (the observable behind lensed-quasar cosmology) \u2014 and a\n", + "dedicated workspace guide covers them extensively:\n", + "\n", + " - `autolens_workspace/scripts/point_source`: the galaxy-scale point-source examples (lensed quasars and\n", + " supernovae), including the `fit.py` guide to every fit variant and the `features` folder (fluxes, time\n", + " delays, multiple sources).\n", + " - `autolens_workspace/scripts/guides/point_source_pairing.py`: the full matrix of position-fitting schemes\n", + " and when to use each.\n", + " - `autolens_workspace/scripts/cluster`: the cluster-scale workflow this tutorial is built on, including a\n", + " fit to real Hubble Space Telescope data of the cluster Abell 2744 with 188 catalogue members and 7\n", + " sources, the CSV-schema guide (`csv_api.py`) and a step-by-step walkthrough of the point-source\n", + " likelihood (`likelihood_function.py`).\n", + "\n", + "__Wrap Up__\n", + "\n", + "This tutorial reached the top of the strong-lensing mass ladder. Lets recap what we learnt:\n", + "\n", + "- **Clusters**: 30+ to hundreds of lens galaxies inside a dark matter halo of more than 10^14 solar masses,\n", + " lensing many background sources at once. Their science is extreme magnification \u2014 using the cluster as a\n", + " natural telescope onto the faint early Universe \u2014 and mapping the cluster's dark matter distribution.\n", + "\n", + "- **Multi-plane ray tracing**: cluster sources sit at different redshifts, so the lens equation is applied\n", + " recursively through the planes, with each plane's deflections scaled by cosmological distance ratios. The\n", + " `Tracer` handles this automatically, provided every source's redshift is set correctly.\n", + "\n", + "- **Point-source modeling**: fitting the extended light of every source is computationally prohibitive at\n", + " this scale, so the standard workflow fits the positions of each source's multiple images, reducing the\n", + " likelihood to source-plane geometry that evaluates in milliseconds.\n", + "\n", + "- **The CSV interface**: the data (`point_datasets.csv`), the individually-modelled galaxies (`mass.csv` /\n", + " `point.csv`) and the member catalogue (`scaling_galaxies.csv`) are all spreadsheet-editable files. Scaling\n", + " the model to a richer cluster is a row-append, not a code change.\n", + "\n", + "- **Six parameters, fifteen galaxies**: fixed observed centres, a scaling relation for the member population\n", + " and solved source centres decouple the model's physical richness from the dimensionality of the search.\n", + "\n", + "- **Results access**: per-member realised profiles, the multi-plane tracer, solved source-plane centres,\n", + " per-image magnifications and forward-solved image positions \u2014 the complete toolkit for interpreting a\n", + " cluster fit.\n", + "\n", + "Strong lensing \u2014 multiple images, arcs, Einstein rings \u2014 has carried us from single galaxies to the most\n", + "massive structures in the Universe. But a cluster's gravity does not stop deflecting light at the radius\n", + "where multiple images form. Far beyond it, every background galaxy is still subtly sheared \u2014 distorted by a\n", + "percent or less \u2014 and by measuring those distortions statistically across thousands of galaxies, the\n", + "cluster's mass can be mapped out to its edges. That is **weak lensing**, a different regime with different\n", + "data and different statistics, and it is where the next tutorial takes us." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb b/notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb new file mode 100644 index 0000000..83f7a04 --- /dev/null +++ b/notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb @@ -0,0 +1,679 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tutorial 6: Weak Lensing\n", + "========================\n", + "\n", + "Every tutorial in this series so far \u2014 indeed, every fit performed in all four chapters of **HowToLens** \u2014 has been\n", + "a *strong* lensing analysis. Strong lensing occurs when a background galaxy lies so close (in projection) to a\n", + "foreground mass that its light is bent into multiple images, arcs or a complete Einstein ring. These dramatic\n", + "features are what we simulated, fitted and modeled, from the single galaxy-scale lenses of chapters 1 and 2 up to\n", + "the group-scale and cluster-scale systems earlier in this chapter.\n", + "\n", + "Strong lensing is spectacular, but it is also rare and spatially confined. Multiple images only form inside (or very\n", + "near) the Einstein radius, so a strong-lensing analysis constrains the mass distribution only within that region \u2014\n", + "a few arc-seconds for a galaxy, tens of arc-seconds for a cluster core. Outside it, the arcs and multiple images\n", + "simply do not exist, and everything we have built so far has nothing to fit.\n", + "\n", + "Yet the gravity of the foreground mass does not stop at the Einstein radius. *Every* background galaxy, however far\n", + "from the lens centre, has its shape slightly distorted \u2014 sheared \u2014 by the foreground mass it sits behind. This is\n", + "**weak lensing**: a percent-level stretching of each background galaxy's observed ellipticity, tangentially aligned\n", + "around the foreground mass.\n", + "\n", + "The catch is that we cannot see this distortion in any single galaxy. Galaxies are not intrinsically round: a\n", + "typical galaxy has a random unlensed ellipticity of ~0.25 per component, whereas the weak-lensing shear it receives\n", + "is ~0.01-0.1. The signal is buried an order of magnitude below the intrinsic \"shape noise\" of any one object.\n", + "\n", + "The solution is statistical. The intrinsic ellipticities of different galaxies are randomly oriented and average to\n", + "zero, whereas the lensing shear is coherent \u2014 every galaxy near a given point on the sky is sheared the same way.\n", + "Average the measured shapes of many background galaxies and the random part cancels while the lensing part remains.\n", + "This is the fundamental contrast with everything the series has done so far: strong lensing extracts an exquisite\n", + "signal from a single special system, weak lensing extracts a faint signal from the ensemble of many ordinary ones.\n", + "\n", + "This changes what the data even *is*. There is no image to fit, no PSF to convolve, no mask, no pixelized source\n", + "reconstruction. A weak-lensing dataset is a **shear catalogue**: a table of background-galaxy sky positions, each\n", + "with a measured shear estimate (two ellipticity components) and a per-galaxy uncertainty. Fitting one means\n", + "comparing a mass model's predicted shear field, evaluated at those positions, against the measured values.\n", + "\n", + "In this tutorial we simulate a weak-lensing shear catalogue around a cluster-scale lens (entirely in memory \u2014 no\n", + "files are written), visualize its shear field, fit it with a mass model whose parameters we know, and then infer\n", + "those parameters with a non-linear search. You will recognise every step: the `Tracer`, `Fit`, `Analysis` and\n", + "search workflow of the whole series, applied to a completely different kind of data.\n", + "\n", + "This tutorial closes both this chapter and the four core chapters of **HowToLens**.\n", + "\n", + "__Contents__\n", + "\n", + "- **Shear Catalogues:** What a weak-lensing dataset is and where the catalogue comes from in a real analysis.\n", + "- **Mass Scales:** Why weak lensing is a cluster-scale tool, tying to the mass scales of the previous tutorials.\n", + "- **Ray Tracing:** Build a `Tracer` for a cluster-scale lens, the mass whose shear field we will measure.\n", + "- **Source Galaxy Positions:** Draw background galaxies in an annulus outside the strong-lensing core.\n", + "- **Simulate:** Create a `WeakDataset` in memory with `SimulatorShearYX`, adding realistic shape noise.\n", + "- **Visualize:** Plot the shear field as a whisker map and the dataset's 2x2 summary mosaic.\n", + "- **Mass Map:** Invert the shear catalogue into a model-independent convergence map (Kaiser-Squires).\n", + "- **Fitting:** Fit the catalogue with the true mass model via `FitWeak` and inspect its goodness-of-fit.\n", + "- **Model Fit:** Infer the mass model from the shear catalogue alone with `AnalysisWeak` and a non-linear search.\n", + "- **Result:** The inferred model, the fit mosaic and the tangential shear profile.\n", + "- **Joint Strong and Weak Lensing:** How PyAutoLens expects weak lensing to be used \u2014 combined with strong lensing.\n", + "- **Wrap Up:** The end of the chapter, and of the core HowToLens lectures." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "import numpy as np\n", + "from pathlib import Path\n", + "\n", + "import autofit as af\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Shear Catalogues__\n", + "\n", + "Before we simulate anything, lets be clear about what a real weak-lensing dataset looks like, because it is unlike\n", + "any data this series has fitted before.\n", + "\n", + "A **shear catalogue** is a table with one row per background galaxy, containing:\n", + "\n", + " - The galaxy's sky position (for us, (y, x) arc-second offsets from a chosen centre).\n", + " - A measured shear estimate (gamma_1, gamma_2) \u2014 in practice the galaxy's measured ellipticity components, which\n", + " estimate the lensing shear because the intrinsic shape averages to zero over many galaxies.\n", + " - A per-galaxy uncertainty, combining the intrinsic shape dispersion (~0.25 per component) with the measurement\n", + " error, added in quadrature.\n", + "\n", + "Producing this catalogue from raw telescope images is a substantial data-reduction task in its own right: galaxies\n", + "must be detected, stars separated from galaxies, the PSF measured and its blurring of galaxy shapes corrected\n", + "(the PSF makes every galaxy look rounder, diluting the shear signal), and calibration biases characterised.\n", + "Dedicated shape-measurement pipelines exist for exactly this job, and entire survey collaborations are built\n", + "around getting it right.\n", + "\n", + "**All of that is outside PyAutoLens's scope.** PyAutoLens assumes the shear catalogue has already been produced\n", + "upstream by such a pipeline, and starts where the catalogue ends: fitting mass models to the measured shears. This\n", + "division of labour is why the weak-lensing API is so lean \u2014 no PSF, no mask, no image \u2014 the hard observational\n", + "systematics were dealt with before the data reached us.\n", + "\n", + "__Mass Scales__\n", + "\n", + "This chapter has climbed a ladder of mass scales, and weak lensing is its top rung. The strength of the statistical\n", + "shear signal around a lens scales with its mass, so whether weak lensing is even measurable depends on where on the\n", + "ladder we stand:\n", + "\n", + " - **A single galaxy** (Einstein radius ~1-2\", the lenses of chapters 1-3): the shear imprinted on background\n", + " galaxies beyond the Einstein radius is far too weak to detect around any one system \u2014 there are too few\n", + " background galaxies carrying too little shear. (Surveys recover it only by *stacking* thousands of lens\n", + " galaxies, a technique called galaxy-galaxy lensing that averages over the lens population.)\n", + "\n", + " - **A group** (Einstein radius ~4-10\", the scale of the group tutorial earlier in this chapter): the signal is\n", + " marginal \u2014 detectable for well-observed individual groups, but noisy.\n", + "\n", + " - **A cluster** (Einstein radius ~10-30\"+, the previous tutorial's scale): the signal is strong enough to measure\n", + " around a *single* system. Hundreds to thousands of background galaxies within a few arc-minutes each carry a\n", + " |gamma| ~ 0.01-0.2 shear, and their average traces the cluster's mass out to radii of arc-minutes \u2014 ten or more\n", + " times further out than the strong-lensing core.\n", + "\n", + "This reach is the scientific point. The dark matter halo of a cluster extends to Mpc scales, far beyond where arcs\n", + "form. Weak lensing is the only lensing probe of that outer halo, which is why it is the tool of choice for cluster\n", + "mass measurements, and it is why this tutorial simulates a cluster-scale lens.\n", + "\n", + "__Ray Tracing__\n", + "\n", + "We begin exactly as the series always has: with a `Tracer`. The lens is a cluster-scale `Isothermal` mass profile\n", + "with an Einstein radius of 25.0\" \u2014 the same order as the previous tutorial's cluster, and a mass for which the\n", + "weak shear signal is genuinely measurable. The source galaxy carries no light profile: weak lensing measures the\n", + "lens's shear field at the background galaxies' positions, so their appearance is irrelevant \u2014 they are pure probes,\n", + "included only to give the `Tracer` its source-plane redshift.\n", + "\n", + "Note also what the lens galaxy lacks: no light profile. A shear catalogue contains no image of the lens, so there\n", + "is no lens light to model \u2014 another simplification compared to every imaging fit in this series." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=25.0,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0),\n", + " ),\n", + ")\n", + "\n", + "source_galaxy = al.Galaxy(redshift=1.0)\n", + "\n", + "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Source Galaxy Positions__\n", + "\n", + "Real weak-lensing measurements avoid the strong-lensing core: inside it the shear is no longer weak (the linear\n", + "shear approximation breaks down), and cluster-member galaxies contaminate the background sample. We therefore draw\n", + "our background galaxies in an **annulus**, from an inner radius of 50\" (twice the Einstein radius, safely into the\n", + "weak regime) to an outer radius of 200\" (over 3 arc-minutes), distributed uniformly in area.\n", + "\n", + "At 50\" from this lens the shear is |gamma| ~ 0.25, and by 200\" it has fallen to |gamma| ~ 0.06 \u2014 every galaxy is a\n", + "weak probe whose individual distortion is at or below the shape noise. With 1500 galaxies (a deep-survey source\n", + "density of ~45 per square arc-minute) the *ensemble* nonetheless carries a decisive signal, exactly as in a real\n", + "cluster analysis.\n", + "\n", + "The positions are stored as an `al.Grid2DIrregular` of (y, x) coordinates \u2014 the same irregular-grid structure the\n", + "point-source tutorials used, because a catalogue of sky positions is not a uniform pixel grid." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "rng = np.random.default_rng(1)\n", + "\n", + "n_galaxies = 1500\n", + "radius_inner = 50.0 # arc-seconds \u2014 inside this we are in the strong-lensing core.\n", + "radius_outer = 200.0 # arc-seconds \u2014 the edge of our simulated weak-lensing field.\n", + "\n", + "radii = np.sqrt(rng.uniform(radius_inner**2.0, radius_outer**2.0, n_galaxies))\n", + "phi = rng.uniform(0.0, 2.0 * np.pi, n_galaxies)\n", + "\n", + "positions = al.Grid2DIrregular(\n", + " values=np.stack([radii * np.sin(phi), radii * np.cos(phi)], axis=1)\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Simulate__\n", + "\n", + "The `SimulatorShearYX` object simulates a weak-lensing shear catalogue from a tracer: its `via_tracer_from` method\n", + "evaluates the tracer's shear field at every galaxy position (by differentiating the deflection-angle field) and\n", + "adds Gaussian shape noise to each measurement.\n", + "\n", + "A `noise_sigma` of 0.25 per shear component is the standard intrinsic shape dispersion of real galaxies \u2014 this is\n", + "the dominant noise source in weak lensing, and it is what makes the per-galaxy signal invisible: the noise on each\n", + "measurement is several times larger than the shear it contains.\n", + "\n", + "Unlike every previous tutorial, we do not write this dataset to disk and reload it. The whole catalogue is a few\n", + "thousand numbers, so we keep it in memory and use it directly \u2014 which also mirrors how you might resimulate\n", + "catalogues on the fly when testing survey sensitivities. (This repo's `scripts/simulator/weak_lensing.py` \u2014 the\n", + "script chapter 1's data tutorial auto-ran to give you your first glimpse of a shear catalogue \u2014 shows the\n", + "disk-based version, with the same JSON output pattern as the imaging simulators.)" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_name = \"weak_lensing\"\n", + "\n", + "simulator = al.SimulatorShearYX(noise_sigma=0.25, seed=1)\n", + "\n", + "dataset = simulator.via_tracer_from(\n", + " tracer=tracer,\n", + " grid=positions,\n", + " name=dataset_name,\n", + ")\n", + "\n", + "print(dataset.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "Weak-lensing data has its own visual language. The shear field is drawn as a **whisker map**: at each galaxy\n", + "position, a line segment whose length is the shear magnitude |gamma| and whose orientation is the shear's position\n", + "angle. The segments are deliberately *headless* (no arrowheads), because shear is a spin-2 quantity \u2014 rotating a\n", + "shear by 180 degrees maps it back onto itself, so a whisker has an orientation but no direction, and an arrowhead\n", + "would suggest information the data does not contain.\n", + "\n", + "Around a massive lens, the whiskers align *tangentially* \u2014 each traces a small piece of a circle around the lens\n", + "centre, the statistical echo of the rings and arcs of strong lensing. Squint at the plot below and you can see it,\n", + "though the shape noise makes it far from obvious galaxy-by-galaxy: this is what a signal an order of magnitude\n", + "below the per-object noise looks like." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_shear_yx_2d(shear_yx=dataset.shear_yx)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`aplt.subplot_weak_dataset` summarises the full dataset as a 2x2 mosaic: the whisker map, the per-galaxy noise-map,\n", + "the shear magnitude |gamma| and the position angle phi at every galaxy." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_weak_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mass Map__\n", + "\n", + "A remarkable property of weak lensing is that the shear catalogue can be inverted directly into a map of the\n", + "convergence `kappa` \u2014 the dimensionless projected mass density we have used throughout the series \u2014 *without\n", + "assuming any mass model at all*. In Fourier space, shear and convergence are related algebraically, so two FFTs\n", + "turn the catalogue into a \"dark matter map\". This is the Kaiser-Squires technique, and it produced some of the most\n", + "famous images in cosmology, such as the mass map of the Bullet Cluster showing dark matter offset from the\n", + "colliding gas.\n", + "\n", + "`aplt.plot_convergence_map` bins the catalogue onto a regular grid, applies a small Gaussian smoothing (per-cell\n", + "shears are shape-noise dominated) and plots the reconstruction. For our simulated cluster it peaks at the lens\n", + "centre at (0.0\", 0.0\"). Two caveats: the map's mean is unconstrained (the mass-sheet degeneracy, which chapter 3\n", + "met in its strong-lensing form) and FFT periodicity produces edge artefacts \u2014 for quantitative masses we fit a\n", + "mass model, which is what the rest of this tutorial does." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_convergence_map(\n", + " shear_yx=dataset.shear_yx,\n", + " shape_native=(30, 30),\n", + " smoothing_sigma_pixels=1.0,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Fitting__\n", + "\n", + "We now fit the catalogue, following the same pattern as every fit in this series: build a model `Tracer`, pass it\n", + "with the dataset to a `Fit` object, and inspect residuals and the log likelihood. For weak lensing the fit object\n", + "is `FitWeak`, and because we simulated the data ourselves we can hand it the *true* tracer and see what a perfect\n", + "model looks like.\n", + "\n", + "`FitWeak` evaluates the model tracer's shear field at the dataset's galaxy positions and compares it with the\n", + "measured shears, assuming each component is independently Gaussian-distributed around the model with the\n", + "per-galaxy noise. Each galaxy contributes **two** independent data points (gamma_1 and gamma_2), so the number of\n", + "degrees of freedom is 2 * n_galaxies, and for a good fit whose residuals are pure shape noise the chi-squared\n", + "should be close to that number.\n", + "\n", + "Compare this to the imaging fits of chapter 1: there, the fit convolved a model image with the PSF and compared\n", + "tens of thousands of pixels; here there is no convolution, no mask and only a few thousand numbers. A weak-lensing\n", + "likelihood is orders of magnitude cheaper \u2014 which is precisely why it is so inexpensive to add to a strong-lensing\n", + "analysis, as discussed at the end of this tutorial." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "fit = al.FitWeak(dataset=dataset, tracer=tracer)\n", + "\n", + "print()\n", + "print(\"Fit Summary (true model)\")\n", + "print(\"------------------------\")\n", + "print(f\"n_galaxies : {dataset.n_galaxies}\")\n", + "print(f\"degrees_of_freedom: {2 * dataset.n_galaxies}\")\n", + "print(f\"chi_squared : {fit.chi_squared:.3f}\")\n", + "print(f\"log_likelihood : {fit.log_likelihood:.3f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, an incorrect mass model produces a worse fit. Halving the Einstein radius halves the predicted shear\n", + "everywhere, leaving coherent tangential residuals across the field, and the log likelihood drops accordingly." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer_wrong = al.Tracer(\n", + " galaxies=[\n", + " al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=12.5,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0),\n", + " ),\n", + " ),\n", + " source_galaxy,\n", + " ]\n", + ")\n", + "\n", + "fit_wrong = al.FitWeak(dataset=dataset, tracer=tracer_wrong)\n", + "\n", + "print()\n", + "print(f\"log_likelihood (true model) : {fit.log_likelihood:.3f}\")\n", + "print(f\"log_likelihood (wrong model): {fit_wrong.log_likelihood:.3f}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`aplt.subplot_fit_weak` visualises a weak-lensing fit as a 2x2 mosaic: the observed shear field, the model shear\n", + "field, the two overlaid on one axes (data in black, model in red), and the per-galaxy chi-squared map. For the true\n", + "model the overlay's residuals are short and randomly oriented \u2014 the shape-noise floor \u2014 and the chi-squared map is\n", + "spatially uniform." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_fit_weak(fit=fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model Fit__\n", + "\n", + "In a real analysis we do not know the mass model \u2014 we infer it. The workflow is the one you have used since\n", + "chapter 2: compose a model with `af.Model` and `af.Collection`, choose a non-linear search, create an `Analysis`\n", + "object and fit. For weak lensing the analysis object is `AnalysisWeak`, whose `log_likelihood_function` builds a\n", + "`Tracer` from each sampled parameter set, evaluates its shear field at the catalogue positions and returns the\n", + "Gaussian log likelihood \u2014 the same `FitWeak` machinery we just used by hand.\n", + "\n", + "The model is the lens's `Isothermal` mass [5 parameters]; the source galaxy again carries no components. Note the\n", + "tiny parameter space \u2014 no lens light, no source light, no shear-as-nuisance-parameter (the shear field *is* the\n", + "data here) \u2014 compared to the N=20+ models of the imaging tutorials.\n", + "\n", + "One adjustment is needed, familiar from the group and cluster tutorials: the default priors are tuned for\n", + "galaxy-scale lenses (Einstein radii of 0\"-8\", centres within a fraction of an arc-second). Our cluster's 25\"\n", + "Einstein radius lies entirely outside that prior, so we widen the priors to cluster scales \u2014 always match your\n", + "priors to the mass scale of the system you are fitting." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mass = af.Model(al.mp.Isothermal)\n", + "mass.einstein_radius = af.UniformPrior(lower_limit=0.0, upper_limit=60.0)\n", + "mass.centre.centre_0 = af.GaussianPrior(mean=0.0, sigma=20.0)\n", + "mass.centre.centre_1 = af.GaussianPrior(mean=0.0, sigma=20.0)\n", + "\n", + "lens = af.Model(al.Galaxy, redshift=0.5, mass=mass)\n", + "\n", + "source = af.Model(al.Galaxy, redshift=1.0)\n", + "\n", + "model = af.Collection(galaxies=af.Collection(lens=lens, source=source))\n", + "\n", + "print(model.info)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We fit the model with the nested sampling algorithm Nautilus, as throughout the series. A weak-lensing likelihood\n", + "evaluation takes milliseconds (one shear-field evaluation at 1500 positions plus a chi-squared sum), so this\n", + "5-parameter fit completes in minutes on an ordinary CPU \u2014 a refreshing contrast to the imaging fits of the earlier\n", + "chapters." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "search = af.Nautilus(\n", + " path_prefix=Path(\"howtolens\", \"chapter_4\"),\n", + " name=\"tutorial_6_weak_lensing\",\n", + " unique_tag=dataset_name,\n", + " n_live=100,\n", + " iterations_per_quick_update=5000,\n", + ")\n", + "\n", + "analysis = al.AnalysisWeak(dataset=dataset)\n", + "\n", + "print(\n", + " \"The non-linear search has begun running - checkout the workspace/output/howtolens/chapter_4/tutorial_6_weak_lensing\"\n", + " \" folder for live output of the results, images and model.\"\n", + " \" This Jupyter notebook cell with progress once search has completed - this could take some time!\"\n", + ")\n", + "\n", + "result = search.fit(model=model, analysis=analysis)\n", + "\n", + "print(\"The search has finished run - you may now continue the notebook.\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Result__\n", + "\n", + "The result's `info` attribute confirms the search recovers the input mass model \u2014 Einstein radius, ellipticity and\n", + "centre \u2014 from nothing but the statistically-averaged shapes of background galaxies. No arc, no ring, no multiple\n", + "images: the ensemble alone constrains the cluster's mass." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "print(result.info)\n", + "\n", + "aplt.subplot_fit_weak(fit=result.max_log_likelihood_fit)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cluster weak-lensing measurements are conventionally presented as the **tangential shear profile**: the mean\n", + "tangential shear gamma_t of background galaxies in radial bins about the lens centre, which traces the projected\n", + "mass profile. `aplt.plot_shear_profile` bins our catalogue and, given the fit, overlays the model's profile as a\n", + "line.\n", + "\n", + "The plot also shows the *cross* component gamma_x \u2014 the shear rotated by 45 degrees. Gravitational lensing produces\n", + "no cross component at leading order, so cross points scattering around zero is the standard \"B-mode\" null test of a\n", + "weak-lensing measurement: a systematic contaminating the shapes would show up there." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_shear_profile(\n", + " result.max_log_likelihood_fit,\n", + " centre=(0.0, 0.0),\n", + " bins=8,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Joint Strong and Weak Lensing__\n", + "\n", + "We fitted this catalogue on its own, and weak-lensing-only fits of real catalogues are a fully supported PyAutoLens\n", + "workflow. But the way PyAutoLens really expects weak lensing to be used is **jointly with strong lensing**, because\n", + "the two probes are perfectly complementary:\n", + "\n", + " - **Strong lensing** (everything before this tutorial) pins the mass in the inner region with exquisite precision \u2014\n", + " the positions of multiple images and arcs nail the Einstein mass and the inner density profile \u2014 but says\n", + " nothing beyond the Einstein radius.\n", + "\n", + " - **Weak lensing** (this tutorial) constrains the mass profile out to arc-minute radii \u2014 the outskirts of the dark\n", + " matter halo \u2014 but its centre and inner profile are only weakly pinned by the field's geometry.\n", + "\n", + "Fit both datasets simultaneously with a single mass model \u2014 one analysis for the imaging or point-source data, one\n", + "`AnalysisWeak` for the shear catalogue, combined exactly as the multi-dataset fits earlier in this chapter combined\n", + "their analyses \u2014 and the model is anchored at the centre by strong lensing while its outer profile is measured by\n", + "weak lensing. This hybrid is the state of the art for cluster mass measurements, used across systems like the\n", + "Frontier Fields clusters, and PyAutoLens's shared `Tracer` infrastructure makes it natural: the same mass profiles\n", + "that ray-traced arcs in the previous tutorial produce the shear field fitted here.\n", + "\n", + "The workspace's `autolens_workspace/*/weak` package has the complete treatment:\n", + "\n", + " - `weak/start_here.py`: fits a real shear catalogue of the merging cluster Abell 2744 (\"Pandora's Cluster\") \u2014\n", + " download, quality cuts, mass map, NFW halo fit.\n", + " - `weak/simulator.py`, `weak/fit.py`, `weak/modeling.py`: the disk-based versions of this tutorial's workflow.\n", + " - `weak/likelihood_function.py`: a step-by-step walkthrough of the weak-lensing likelihood.\n", + " - `weak/features/strong_lensing`: the joint strong-plus-weak fits described above.\n", + "\n", + "__Wrap Up__\n", + "\n", + "This tutorial completed the chapter's journey up the mass ladder, and with it the four core chapters of\n", + "**HowToLens**. Lets take stock of how far we have come.\n", + "\n", + "Chapter 1 built lensing from first principles: grids, light and mass profiles, ray tracing, the lens equation, and\n", + "fitting imaging data with a `Tracer`. Chapter 2 turned fitting into inference \u2014 non-linear searches, priors,\n", + "Bayesian model comparison \u2014 so we could *infer* lens models rather than guess them. Chapter 3 replaced analytic\n", + "sources with pixelized reconstructions, letting the data itself reveal the source's morphology.\n", + "\n", + "This chapter then scaled those tools up through every regime nature offers, and in this tutorial:\n", + "\n", + "- **Weak Lensing:** Outside the strong-lensing region every background galaxy is still weakly sheared; the signal\n", + " is invisible per galaxy beneath intrinsic shape noise but emerges statistically over an ensemble.\n", + "\n", + "- **Shear Catalogues:** The weak-lensing dataset is a catalogue of galaxy positions, measured shear estimates and\n", + " uncertainties, produced upstream by a dedicated shape-measurement pipeline \u2014 PyAutoLens fits mass models to it\n", + " and leaves the shape measurement to those pipelines.\n", + "\n", + "- **Mass Scales:** The statistical signal is hopeless around a single galaxy, marginal around a group and\n", + " measurable around a cluster \u2014 and it probes the dark matter halo to radii far beyond the reach of arcs.\n", + "\n", + "- **The Same Workflow:** `SimulatorShearYX`, `FitWeak` and `AnalysisWeak` slot into the identical\n", + " simulate-fit-model pattern the series has used since chapter 1, and a non-linear search recovered the cluster's\n", + " mass from galaxy shapes alone.\n", + "\n", + "- **Joint Fits:** Strong lensing pins the inner mass, weak lensing measures the outskirts; fitting both with one\n", + " model is the expected PyAutoLens workflow for cluster and group science.\n", + "\n", + "And that is the series: from a single lens galaxy, to lenses with extra galaxies, to multi-galaxy lenses, to\n", + "scaling relations that keep many-galaxy models tractable, to group-scale and cluster-scale systems, and finally\n", + "beyond the Einstein radius altogether into the weak-lensing regime. You have every conceptual tool the modern\n", + "lensing literature uses, and you have used each one on data.\n", + "\n", + "Where next? The `autolens_workspace` is the destination for real science. Its `imaging`, `point_source`, `group`,\n", + "`cluster` and `weak` packages hold the production-ready versions of everything taught here \u2014 including the\n", + "`start_here.py` scripts that are each topic's canonical, always-current reference \u2014 plus the features this series\n", + "could only gesture at: multi-wavelength fits, interferometry, automated SLaM pipelines and more. Take your own\n", + "data there, and good luck with your science!" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/chapter_optional/tutorial_searches.ipynb b/notebooks/chapter_optional/tutorial_searches.ipynb index 42cda46..7f6445c 100644 --- a/notebooks/chapter_optional/tutorial_searches.ipynb +++ b/notebooks/chapter_optional/tutorial_searches.ipynb @@ -228,7 +228,7 @@ " unique_tag=dataset_name,\n", " n_live=400,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "analysis = al.AnalysisImaging(dataset=dataset)\n", @@ -294,7 +294,7 @@ " unique_tag=dataset_name,\n", " n_live=75,\n", " n_batch=50, # GPU batching and VRAM use explained in chapter 2 tutorial 2.\n", - " iterations_per_quick_update=2500, # Outpuers Notebook visualization of max likelihood model every N iterations\n", + " iterations_per_quick_update=2500, # Outputs Notebook visualization of max likelihood model every N iterations\n", ")\n", "\n", "print(\n", @@ -357,7 +357,7 @@ "error estimates (perhaps this is our final lens model fit before we publish the results in a paper), these extra\n", "iterations are acceptable. \n", "\n", - "However, we often don't care about the errors. For example, in the previous tutorial when chaining searches, the only\n", + "However, we often don't care about the errors. For example, in chapter 2's search chaining tutorial, the only\n", "result we used from the fit performed in the first search was the maximum log likelihood model, omitting the errors\n", "entirely! Its seems wasteful to use a nested sampling algorithm like Nautilus to map out the entirity of parameter\n", "space when we don't use this information!\n", @@ -471,7 +471,7 @@ "__Wrap Up__\n", "\n", "This tutorial showed how the same lens model can be fitted using different non-linear searches (e.g. `Nautilus`,\n", - "`Emcee`, `PySwarms`). Each search explores parameter space in a different way, and the best choice depends on the\n", + "`Emcee`, `Zeus`). Each search explores parameter space in a different way, and the best choice depends on the\n", "dimensionality and complexity of the model you are fitting.\n", "\n", "For the vast majority of lens models in **PyAutoLens**, the default nested sampling search `Nautilus` is recommended,\n", diff --git a/notebooks/simulator/cluster.ipynb b/notebooks/simulator/cluster.ipynb new file mode 100644 index 0000000..3cc5dd0 --- /dev/null +++ b/notebooks/simulator/cluster.ipynb @@ -0,0 +1,785 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulator: Cluster\n", + "==================\n", + "\n", + "This script simulates a strong lens on the 'cluster' scale: 2 main lens galaxies (a brightest cluster\n", + "galaxy and a satellite), 10 lower-mass cluster member galaxies on a luminosity-mass scaling relation,\n", + "a cluster-scale dark matter halo not tied to any individual galaxy, and 2 multiply-imaged background\n", + "source galaxies at *different* redshifts (z = 1.0 and z = 2.0) \u2014 a genuine multi-plane lens.\n", + "\n", + "It is used to illustrate cluster-scale lens modeling in the HowToLens lecture series.\n", + "\n", + "Cluster modeling uses the *point source* API: rather than fitting the extended arc light of each\n", + "lensed source, only the image-plane positions of its multiple images are fitted. This script therefore\n", + "simulates point-source datasets (one per source) alongside CCD imaging, which in real datasets is used\n", + "to measure those positions and to visually confirm the lens configuration.\n", + "\n", + "__Contents__\n", + "\n", + "- **Dataset Paths:** The `dataset_path` describes where the simulated cluster dataset is output to.\n", + "- **Redshifts:** The lens redshift and the two distinct source redshifts of the multi-plane system.\n", + "- **Galaxy Centres:** The centres of the main lens galaxies, scaling members, halo and sources.\n", + "- **Grids:** The imaging grid (with adaptive over sampling) and a coarse visualization grid.\n", + "- **Main Lens Galaxies:** The 2 individually-modelled cluster members, each a `SersicSph` light and `dPIEMassSph` mass.\n", + "- **Scaling Member Galaxies:** 10 lower-mass members whose masses derive from a luminosity-mass scaling relation.\n", + "- **Host Dark Matter Halo:** A standalone `NFWMCRLudlowSph` halo with `mass_at_200 = 10^15.3`.\n", + "- **Source Galaxies:** The 2 multi-plane background sources, each a `SersicCore` light + a `Point` component.\n", + "- **Ray Tracing:** Combine all galaxies into a single multi-plane `Tracer`.\n", + "- **Point Solver:** Solve the lens equation for the image-plane multiple-image positions of each source.\n", + "- **Point Datasets:** Collect the per-source positions (with noise) into `PointDataset` objects.\n", + "- **Combined CSV:** Write all point datasets to a single hand-editable CSV.\n", + "- **Scaling Galaxies CSV:** Write the scaling-member centres and luminosities to `scaling_galaxies.csv`.\n", + "- **Model CSVs:** Write the truth model to `mass.csv` + `light.csv` + `point.csv` (the named-galaxy CSV API).\n", + "- **Tracer json:** Save the true `Tracer` in the dataset folder as a .json file.\n", + "- **Imaging:** Simulate CCD imaging of the cluster and output it to .fits files.\n", + "- **Visualize:** Output subplots of the point datasets, tracer and imaging to the dataset path.\n", + "\n", + "__Model__\n", + "\n", + "This script simulates a 'cluster-scale' strong lens where:\n", + "\n", + " - The 2 main lens galaxies have `SersicSph` light profiles and `dPIEMassSph` mass profiles.\n", + " - The 10 scaling-tier member galaxies have `dPIEMassSph` masses set by a luminosity-mass scaling relation.\n", + " - The cluster's dark matter halo is a standalone `NFWMCRLudlowSph` profile.\n", + " - The 2 source galaxies have `SersicCore` light profiles and `Point` components at z = 1.0 and z = 2.0.\n", + "\n", + "__Start Here Notebook__\n", + "\n", + "If any code in this script is unclear, refer to the `autolens_workspace/*/cluster/simulator.ipynb` notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "import jax\n", + "import jax.numpy as jnp\n", + "import numpy as np\n", + "from pathlib import Path\n", + "\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Paths__\n", + "\n", + "The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a\n", + "descriptive name. The cluster dataset is output to `howtolens/dataset/cluster/simple`, which the\n", + "tutorial on cluster-scale lensing loads via the auto-simulation guard." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_type = \"cluster\"\n", + "dataset_name = \"simple\"\n", + "dataset_path = Path(\"dataset\", dataset_type, dataset_name)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Redshifts__\n", + "\n", + "All lens galaxies and the host dark matter halo sit at the lens redshift z = 0.5. The two sources sit\n", + "at *different* redshifts (z = 1.0 and z = 2.0), making this a genuine multi-plane lens: light from the\n", + "z = 2.0 source passes through the z = 1.0 plane on its way to us, so the `Tracer` must ray-trace\n", + "through every plane in redshift order." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "redshift_lens = 0.5\n", + "source_redshifts = [1.0, 2.0]" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Galaxy Centres__\n", + "\n", + "The host halo is anchored at the cluster centre (the origin); the two main galaxies are the central\n", + "brightest cluster galaxy (BCG) and a satellite offset to the upper-right. The 10 scaling-member\n", + "centres sit at radii of 5-15\" from the centre \u2014 inside the strongly-lensed region of the host halo but\n", + "clear of the cores of the two main galaxies. The source centres are chosen so both sources land in the\n", + "strongly-lensed region and are multiply imaged." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "main_lens_centres = [\n", + " (0.0, 0.0), # BCG at cluster centre\n", + " (10.0, 8.0), # satellite member\n", + "]\n", + "\n", + "scaling_galaxies_centres = [\n", + " (5.5, -6.5),\n", + " (-7.5, 3.0),\n", + " (12.0, -5.0),\n", + " (-4.0, -9.0),\n", + " (3.0, 13.0),\n", + " (-14.0, 4.0),\n", + " (15.0, 9.0),\n", + " (-9.0, -12.0),\n", + " (8.5, 5.5),\n", + " (-6.5, 11.0),\n", + "]\n", + "\n", + "scaling_galaxies_luminosities = [\n", + " 0.40,\n", + " 0.32,\n", + " 0.25,\n", + " 0.20,\n", + " 0.16,\n", + " 0.13,\n", + " 0.10,\n", + " 0.08,\n", + " 0.06,\n", + " 0.05,\n", + "]\n", + "\n", + "host_halo_centre = (0.0, 0.0)\n", + "\n", + "source_centres = [\n", + " (0.3, 0.5),\n", + " (-0.8, 1.2),\n", + "]" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Grids__\n", + "\n", + "The typical Einstein radius of a 10^15 solar-mass halo is ~20-30\" and the member galaxies span ~30\"\n", + "across, so the field must be large (100\" x 100\") to capture the multiple images and arcs \u2014 far bigger\n", + "than the galaxy-scale fields of earlier simulators.\n", + "\n", + "Two grids are used: a high-resolution `imaging_grid` for rendering the CCD image, with adaptive over\n", + "sampling around the centre of every cluster member, and a coarse `viz_grid` used only for the\n", + "visualization plots at the end of the script (which do not need full resolution)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "imaging_grid = al.Grid2D.uniform(\n", + " shape_native=(500, 500),\n", + " pixel_scales=0.2,\n", + ")\n", + "\n", + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=imaging_grid,\n", + " sub_size_list=[32, 8, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=main_lens_centres + scaling_galaxies_centres,\n", + ")\n", + "\n", + "imaging_grid = imaging_grid.apply_over_sampling(over_sample_size=over_sample_size)\n", + "\n", + "viz_grid = al.Grid2D.uniform(shape_native=(200, 200), pixel_scales=0.5)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Main Lens Galaxies__\n", + "\n", + "The 2 individually-modelled cluster members. Each has a `SersicSph` light profile (used for the CCD\n", + "imaging \u2014 the light plays no role in point-source modeling) and a `dPIEMassSph` mass profile, the\n", + "standard truncated mass profile for cluster members. Its parameters are Lenstool's native ones:\n", + "\n", + " - `sigma` (km/s): the fiducial velocity dispersion, setting the lens strength.\n", + " - `r_core` (arcsec): the core radius, fixed to 0 here (the standard vanishing-core convention).\n", + " - `r_cut` (arcsec): the truncation radius, beyond which the density falls off rapidly \u2014 the tidal\n", + " stripping physics of galaxies orbiting inside a cluster's shared potential." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "main_lens_dpie_params = [\n", + " # (r_core, r_cut, sigma) per galaxy \u2014 arcsec, arcsec, km/s\n", + " (0.0, 20.0, 330.0), # BCG \u2014 strongest\n", + " (0.0, 12.0, 210.0), # satellite\n", + "]\n", + "\n", + "main_lens_sersic_params = [\n", + " # (intensity, effective_radius, sersic_index)\n", + " (1.5, 3.0, 4.0), # BCG \u2014 bright and extended\n", + " (0.8, 1.5, 3.5), # satellite\n", + "]\n", + "\n", + "main_lens_galaxies = []\n", + "for centre, (r_core, r_cut, sigma), (intensity, effective_radius, sersic_index) in zip(\n", + " main_lens_centres, main_lens_dpie_params, main_lens_sersic_params\n", + "):\n", + " bulge = al.lp.SersicSph(\n", + " centre=centre,\n", + " intensity=intensity,\n", + " effective_radius=effective_radius,\n", + " sersic_index=sersic_index,\n", + " )\n", + " mass = al.mp.dPIEMassSph(\n", + " centre=centre,\n", + " sigma=sigma,\n", + " r_core=r_core,\n", + " r_cut=r_cut,\n", + " redshift_object=redshift_lens,\n", + " redshift_source=max(source_redshifts),\n", + " )\n", + " main_lens_galaxies.append(al.Galaxy(redshift=redshift_lens, bulge=bulge, mass=mass))" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Scaling Member Galaxies__\n", + "\n", + "The 10 lower-mass cluster members are modelled collectively via a luminosity-mass scaling relation \u2014\n", + "the convention used by essentially every published cluster strong-lensing analysis:\n", + "\n", + " sigma_i = sigma_ref * (L_i / L_ref) ** 0.25\n", + " r_cut_i = r_cut_ref * (L_i / L_ref) ** 0.7\n", + " r_core_i = 0\n", + "\n", + "where `L_ref` is a fixed reference luminosity and `sigma_ref` is the fiducial velocity dispersion of a\n", + "galaxy at that reference luminosity. The truth value simulated here is `sigma_ref = 85.0` km/s \u2014 the\n", + "value the tutorial's model-fit seeks to recover with a single free parameter for the whole tier." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "scaling_sigma_ref_truth = 85.0\n", + "scaling_sigma_exponent = 0.25 # alpha (Faber-Jackson)\n", + "scaling_gamma = 0.2 # mass-to-light tilt, fixed\n", + "scaling_rcut_exponent = 1.0 + scaling_gamma - 2.0 * scaling_sigma_exponent # 0.7\n", + "reference_luminosity = 1.0\n", + "scaling_r_core = 0.0 # vanishing core \u2014 fixed, never scaled\n", + "scaling_r_cut_ref = 5.0\n", + "\n", + "scaling_galaxies = []\n", + "for centre, luminosity in zip(scaling_galaxies_centres, scaling_galaxies_luminosities):\n", + " bulge = al.lp.SersicSph(\n", + " centre=centre,\n", + " intensity=luminosity,\n", + " effective_radius=0.8,\n", + " sersic_index=3.0,\n", + " )\n", + " luminosity_ratio = luminosity / reference_luminosity\n", + " mass = al.mp.dPIEMassSph(\n", + " centre=centre,\n", + " sigma=scaling_sigma_ref_truth * luminosity_ratio**scaling_sigma_exponent,\n", + " r_core=scaling_r_core,\n", + " r_cut=scaling_r_cut_ref * luminosity_ratio**scaling_rcut_exponent,\n", + " redshift_object=redshift_lens,\n", + " redshift_source=max(source_redshifts),\n", + " )\n", + " scaling_galaxies.append(al.Galaxy(redshift=redshift_lens, bulge=bulge, mass=mass))" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Host Dark Matter Halo__\n", + "\n", + "A standalone galaxy holding the cluster's dark matter halo. It has no light profile \u2014 it sits in the\n", + "tracer solely to contribute mass. `NFWMCRLudlowSph` is parameterised by the physical halo mass within\n", + "r_200 (`mass_at_200 = 10^15.3`, ~2 x 10^15 solar masses) and the redshifts; its concentration follows\n", + "from a concentration-mass relation. The `redshift_source` is anchored to the *furthest* source\n", + "(z = 2.0), the multi-plane convention used throughout (deflections are normalized to the final plane)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "host_halo = al.mp.NFWMCRLudlowSph(\n", + " centre=host_halo_centre,\n", + " mass_at_200=10**15.3,\n", + " redshift_object=redshift_lens,\n", + " redshift_source=max(source_redshifts),\n", + ")\n", + "\n", + "host_halo_galaxy = al.Galaxy(redshift=redshift_lens, dark=host_halo)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Source Galaxies__\n", + "\n", + "The 2 background sources at *different* redshifts. Each carries a `SersicCore` light profile (so the\n", + "lensed arcs appear in the CCD imaging) and a `Point` component whose multiple-image positions we solve\n", + "for below \u2014 those positions are the data the tutorial's model-fit uses.\n", + "\n", + "The attribute name of each `Point` (`point_0`, `point_1`) is important: it is the name that pairs each\n", + "model component to its `PointDataset` during modeling." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "source_galaxies = []\n", + "for i, (centre, src_z) in enumerate(zip(source_centres, source_redshifts)):\n", + " bulge = al.lp.SersicCore(\n", + " centre=centre,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0 + 30.0 * i),\n", + " intensity=2.0,\n", + " effective_radius=0.3,\n", + " sersic_index=1.0,\n", + " )\n", + " point = al.ps.Point(centre=centre)\n", + " source_galaxies.append(\n", + " al.Galaxy(redshift=src_z, bulge=bulge, **{f\"point_{i}\": point})\n", + " )" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "Combine the main lens galaxies, scaling members, host halo and sources into a single tracer. With\n", + "sources at distinct redshifts, the tracer automatically performs multi-plane ray tracing." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer = al.Tracer(\n", + " galaxies=main_lens_galaxies\n", + " + scaling_galaxies\n", + " + [host_halo_galaxy]\n", + " + source_galaxies\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Point Solver__\n", + "\n", + "The `PointSolver` solves the lens equation for the image-plane positions of each point source, by\n", + "ray-tracing triangles from the image plane to the source plane and iteratively refining those that\n", + "contain the source centre. At cluster scale (13 lens galaxies, multi-plane ray tracing) this solve is\n", + "expensive, so we accelerate it with JAX: `use_jax=True` plus a `jax.jit` wrapper around the solve call\n", + "compiles the triangle-refinement kernel once and reuses it for both sources.\n", + "\n", + "The solver's grid must span the full cluster field, because the multiple images sit at radii of\n", + "~20-30\" from the cluster centre \u2014 far outside the arc-second scale grids of galaxy-scale lensing.\n", + "\n", + "`plane_redshift` is per-source and must be passed: it tells the solver which source plane to solve\n", + "for. Without it, the solver defaults to the tracer's final plane, which would silently place the\n", + "z = 1.0 source's images as if it sat at z = 2.0." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "from autolens.jax import register_tracer_classes\n", + "\n", + "register_tracer_classes(tracer)\n", + "\n", + "solver = al.PointSolver.for_grid(\n", + " grid=al.Grid2D.uniform(shape_native=(400, 400), pixel_scales=0.25),\n", + " pixel_scale_precision=0.001,\n", + " magnification_threshold=0.1,\n", + " use_jax=True,\n", + ")\n", + "\n", + "\n", + "def jitted_solve_for(plane_redshift):\n", + " @jax.jit\n", + " def jitted_solve(tracer, source_plane_coordinate):\n", + " return solver.solve(\n", + " tracer=tracer,\n", + " source_plane_coordinate=source_plane_coordinate,\n", + " plane_redshift=plane_redshift,\n", + " ).array\n", + "\n", + " return jitted_solve\n", + "\n", + "\n", + "positions_list = []\n", + "for i, (src_centre, src_z) in enumerate(zip(source_centres, source_redshifts)):\n", + " coord = jnp.asarray(src_centre)\n", + " jitted_solve = jitted_solve_for(float(src_z))\n", + " raw = np.asarray(jitted_solve(tracer, coord))\n", + " finite = ~(np.isinf(raw).any(axis=1) | np.isnan(raw).any(axis=1))\n", + " positions_list.append(al.Grid2DIrregular(raw[finite]))\n", + "\n", + " print(f\"point_{i} (z={src_z}): {int(finite.sum())} multiple images solved\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Point Datasets__\n", + "\n", + "One `PointDataset` per source. The `name` (`point_0`, `point_1`) pairs each dataset with the matching\n", + "`Point` component in the lens model during modeling, and the `redshift` records each source's\n", + "redshift so the multi-plane geometry can be rebuilt when the dataset is loaded.\n", + "\n", + "The position uncertainty is 0.005\" (5 mas), the centroid precision achievable by PSF fitting on\n", + "space-telescope imaging \u2014 not the imaging pixel scale." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "position_noise = 0.005\n", + "\n", + "dataset_list = []\n", + "for i, positions in enumerate(positions_list):\n", + " dataset = al.PointDataset(\n", + " name=f\"point_{i}\",\n", + " positions=positions,\n", + " positions_noise_map=position_noise,\n", + " redshift=source_redshifts[i],\n", + " )\n", + " dataset_list.append(dataset)\n", + "\n", + "for i, dataset in enumerate(dataset_list):\n", + " al.output_to_json(\n", + " obj=dataset,\n", + " file_path=dataset_path / f\"point_dataset_{i}.json\",\n", + " )" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Combined CSV__\n", + "\n", + "For cluster workflows with many sources, a single CSV with one row per observed multiple image \u2014\n", + "grouped by source `name`, with `y`, `x`, `positions_noise` and `redshift` columns \u2014 is far easier to\n", + "edit in a spreadsheet than many per-source files. `al.output_to_csv` writes every dataset into one\n", + "file, which the tutorial loads back with `al.list_from_csv`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_csv(\n", + " datasets=dataset_list,\n", + " file_path=dataset_path / \"point_datasets.csv\",\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Scaling Galaxies CSV__\n", + "\n", + "The scaling-tier members are written to `scaling_galaxies.csv` \u2014 one row per member carrying its\n", + "centre and luminosity (`y, x, luminosity`). This is the catalogue the tutorial's scaling relation\n", + "consumes: scaling a real cluster up to hundreds of members is a CSV-level edit, with the model's\n", + "free-parameter count unchanged." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.galaxy_table_to_csv(\n", + " centres=scaling_galaxies_centres,\n", + " luminosities=scaling_galaxies_luminosities,\n", + " file_path=dataset_path / \"scaling_galaxies.csv\",\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Model CSVs__\n", + "\n", + "Write the truth model out as three family-level CSVs \u2014 `mass.csv`, `light.csv`, `point.csv` \u2014 keyed\n", + "by galaxy name. The tutorial loads these with `al.galaxy_models_from_csv` and composes them into\n", + "`af.Model` galaxies ready for the non-linear search. See `autolens_workspace/*/cluster/csv_api.py`\n", + "for the full schema walkthrough." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "mass_profiles = {\n", + " **{f\"lens_{i}\": {\"mass\": g.mass} for i, g in enumerate(main_lens_galaxies)},\n", + " \"host_halo\": {\"dark\": host_halo_galaxy.dark},\n", + "}\n", + "\n", + "light_profiles = {\n", + " **{f\"lens_{i}\": {\"bulge\": g.bulge} for i, g in enumerate(main_lens_galaxies)},\n", + " **{f\"source_{i}\": {\"bulge\": g.bulge} for i, g in enumerate(source_galaxies)},\n", + "}\n", + "\n", + "point_profiles = {\n", + " f\"source_{i}\": {f\"point_{i}\": getattr(g, f\"point_{i}\")}\n", + " for i, g in enumerate(source_galaxies)\n", + "}\n", + "\n", + "redshifts_by_galaxy = {\n", + " **{f\"lens_{i}\": redshift_lens for i in range(len(main_lens_galaxies))},\n", + " \"host_halo\": redshift_lens,\n", + " **{f\"source_{i}\": z for i, z in enumerate(source_redshifts)},\n", + "}\n", + "\n", + "al.galaxy_models_to_csv(\n", + " profiles_by_galaxy=mass_profiles,\n", + " file_path=dataset_path / \"mass.csv\",\n", + " family=\"mass\",\n", + " redshifts=redshifts_by_galaxy,\n", + ")\n", + "\n", + "al.galaxy_models_to_csv(\n", + " profiles_by_galaxy=light_profiles,\n", + " file_path=dataset_path / \"light.csv\",\n", + " family=\"light\",\n", + " redshifts=redshifts_by_galaxy,\n", + ")\n", + "\n", + "al.galaxy_models_to_csv(\n", + " profiles_by_galaxy=point_profiles,\n", + " file_path=dataset_path / \"point.csv\",\n", + " family=\"point\",\n", + " redshifts=redshifts_by_galaxy,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Tracer json__\n", + "\n", + "Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass\n", + "profiles and galaxies are safely stored and available to check how the dataset was simulated in the\n", + "future.\n", + "\n", + "This can be loaded via the method `tracer = al.from_json()`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=tracer,\n", + " file_path=Path(dataset_path, \"tracer.json\"),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Imaging__\n", + "\n", + "Strong lens clusters come with imaging data, used to *measure* the point positions and to visually\n", + "confirm the lens configuration. Although modeling is point-source only, we simulate CCD imaging so\n", + "the dataset looks like a realistic cluster observation." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "psf = al.Convolver.from_gaussian(\n", + " shape_native=(11, 11), sigma=0.2, pixel_scales=imaging_grid.pixel_scales\n", + ")\n", + "\n", + "simulator = al.SimulatorImaging(\n", + " exposure_time=300.0,\n", + " psf=psf,\n", + " background_sky_level=0.1,\n", + " add_poisson_noise_to_data=True,\n", + ")\n", + "\n", + "dataset = simulator.via_tracer_from(tracer=tracer, grid=imaging_grid)\n", + "\n", + "aplt.fits_imaging(\n", + " dataset=dataset,\n", + " data_path=dataset_path / \"data.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " overwrite=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "Output .png plots of the per-source point datasets, the tracer, and the simulated imaging to the\n", + "dataset path." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "for pd in dataset_list:\n", + " aplt.subplot_point_dataset(\n", + " dataset=pd, output_path=dataset_path, output_format=\"png\"\n", + " )\n", + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)\n", + "aplt.plot_array(array=dataset.data, title=\"Data\")\n", + "\n", + "aplt.subplot_tracer(\n", + " tracer=tracer, grid=viz_grid, output_path=dataset_path, output_format=\"png\"\n", + ")\n", + "aplt.subplot_galaxies_images(\n", + " tracer=tracer, grid=viz_grid, output_path=dataset_path, output_format=\"png\"\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset can be viewed in the folder `howtolens/dataset/cluster/simple`." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/simulator/group.ipynb b/notebooks/simulator/group.ipynb new file mode 100644 index 0000000..b46ff48 --- /dev/null +++ b/notebooks/simulator/group.ipynb @@ -0,0 +1,576 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulator: Group Scale Lens\n", + "===========================\n", + "\n", + "This script simulates `Imaging` of a 'group-scale' strong lens, which is used in chapter 4 of the **HowToLens**\n", + "lectures to illustrate lens modeling at the group scale.\n", + "\n", + "The group consists of a single main lens galaxy -- the brightest group galaxy (BGG) -- and two smaller member\n", + "galaxies nearby, whose mass contributes significantly to the ray-tracing and is therefore included in the strong\n", + "lens model. A single source galaxy is lensed by the combined mass of all three galaxies.\n", + "\n", + "__Model__\n", + "\n", + "This script simulates `Imaging` of a 'group-scale' strong lens where:\n", + "\n", + " - The main lens galaxy's light is a `SersicSph` and its total mass distribution is an `IsothermalSph`.\n", + " - The two member galaxies have `SersicSph` light profiles and tidally truncated `dPIEMassSph` mass profiles.\n", + " - The source galaxy's light is a `SersicCore`.\n", + "\n", + "The member galaxies are simulated to follow the light-mass scaling relation used in the group-scale modeling\n", + "tutorial: `sigma = sigma_ref * (L / L_ref) ** 0.25` and `r_cut = r_cut_ref * (L / L_ref) ** 0.7`, where `L` is\n", + "each member's luminosity. The second member is 2.07 times more luminous than the first, so its velocity\n", + "dispersion is 1.2 times higher (240 km/s vs 200 km/s) and its truncation radius 1.67 times larger.\n", + "\n", + "__Contents__\n", + "\n", + "- **Dataset Paths:** The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a.\n", + "- **Grid:** Define the 2D grid of (y,x) coordinates the simulated image is evaluated on.\n", + "- **Galaxy Centres:** Define the centres of the main lens galaxy and member galaxies.\n", + "- **Over Sampling:** Set up the adaptive over-sampling scheme, centred on every galaxy in the group.\n", + "- **PSF / Simulator:** The Point Spread Function and simulator defining the observational properties of the data.\n", + "- **Main Lens Galaxy:** The brightest group galaxy (BGG) at the origin (0.0\", 0.0\").\n", + "- **Member Galaxies:** The two smaller group members, with tidally truncated `dPIEMassSph` mass profiles.\n", + "- **Source Galaxy:** The source galaxy whose lensed image we simulate.\n", + "- **Ray Tracing:** Use all galaxies to set up a tracer, which generates the image that is simulated.\n", + "- **Output:** Output the simulated dataset to the dataset path as .fits files.\n", + "- **Visualize:** Output a subplot of the simulated dataset and the tracer's quantities to the dataset path.\n", + "- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file.\n", + "- **Centre JSON Files:** Save the centres of the main lens galaxy and member galaxies as .json files.\n", + "- **Positions:** Solve for the multiple-image positions of the lensed source and save them as a .json file.\n", + "\n", + "__Start Here Notebook__\n", + "\n", + "If any code in this script is unclear, refer to the `autolens_workspace/*/group/simulator.ipynb` notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "from pathlib import Path\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Paths__\n", + "\n", + "The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a descriptive name.\n", + "\n", + "The dataset is output to `dataset/group/simple`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_type = \"group\"\n", + "dataset_name = \"simple\"\n", + "dataset_path = Path(\"dataset\", dataset_type, dataset_name)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Grid__\n", + "\n", + "Define the 2D grid of (y,x) coordinates the simulated image is evaluated on.\n", + "\n", + "A group-scale lens spans a wider area of sky than a galaxy-scale lens, because it contains multiple lens\n", + "galaxies which are separated by many arc-seconds. The grid is therefore larger (250 x 250 pixels, or 25.0\")\n", + "than those used in previous chapters." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "grid = al.Grid2D.uniform(\n", + " shape_native=(250, 250),\n", + " pixel_scales=0.1,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Galaxy Centres__\n", + "\n", + "Define the centres of the main lens galaxy and member galaxies. These are used for over-sampling and are also\n", + "output to .json files so that the modeling tutorial can load them." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "main_lens_centres = [(0.0, 0.0)]\n", + "member_centres = [(3.5, 2.5), (-4.4, -5.0)]" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Over Sampling__\n", + "\n", + "Over sampling evaluates the light profiles on a higher resolution grid in their bright central regions, to\n", + "ensure the calculation is accurate.\n", + "\n", + "The adaptive over-sampling scheme below is applied at the centre of every galaxy in the group, not just the\n", + "main lens galaxy." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=grid,\n", + " sub_size_list=[32, 8, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=main_lens_centres + member_centres,\n", + ")\n", + "\n", + "grid = grid.apply_over_sampling(over_sample_size=over_sample_size)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__PSF / Simulator__\n", + "\n", + "Simulate a simple Gaussian PSF for the image, and create the simulator for the imaging data, which defines the\n", + "exposure time, background sky, noise levels and psf." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "psf = al.Convolver.from_gaussian(\n", + " shape_native=(11, 11), sigma=0.1, pixel_scales=grid.pixel_scales\n", + ")\n", + "\n", + "simulator = al.SimulatorImaging(\n", + " exposure_time=300.0,\n", + " psf=psf,\n", + " background_sky_level=0.1,\n", + " add_poisson_noise_to_data=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Main Lens Galaxy__\n", + "\n", + "The main lens galaxy is the brightest group galaxy (BGG), located at the origin (0.0\", 0.0\"). It has a spherical\n", + "Sersic light profile and an isothermal mass profile with a large Einstein radius of 4.0\", reflecting that it\n", + "dominates the mass of the group." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.SersicSph(\n", + " centre=(0.0, 0.0), intensity=0.7, effective_radius=2.0, sersic_index=4.0\n", + " ),\n", + " mass=al.mp.IsothermalSph(centre=(0.0, 0.0), einstein_radius=4.0),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Member Galaxies__\n", + "\n", + "The two member galaxies are smaller galaxies orbiting within the group. They have spherical Sersic light\n", + "profiles and tidally truncated `dPIEMassSph` mass profiles (vanishing core `r_core = 0.0` and a finite\n", + "truncation radius `r_cut`), reflecting that their outer dark matter has been stripped by the tides of the\n", + "group's potential.\n", + "\n", + "The members follow the light-mass scaling relation used in the modeling tutorial: the second member is 2.07\n", + "times more luminous than the first (`intensity` of 1.866 vs 0.9, with identical `effective_radius` and\n", + "`sersic_index`), so its `sigma` is a factor 2.07 ** 0.25 = 1.2 higher (240 km/s vs 200 km/s) and its `r_cut`\n", + "a factor 2.07 ** 0.7 = 1.67 larger (13.3\" vs 8.0\").\n", + "\n", + "The `dPIEMassSph` profile is parameterized in Lenstool's native convention -- `sigma` (fiducial velocity\n", + "dispersion, km/s), `r_core` and `r_cut` (arcsec) -- and converts these to a lensing strength internally using\n", + "the object/source redshifts and cosmology (`H0` / `Om0`, which default to Planck-like values)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "member_galaxy_0 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.SersicSph(\n", + " centre=(3.5, 2.5), intensity=0.9, effective_radius=0.8, sersic_index=3.0\n", + " ),\n", + " mass=al.mp.dPIEMassSph(\n", + " centre=(3.5, 2.5),\n", + " sigma=200.0,\n", + " r_core=0.0,\n", + " r_cut=8.0,\n", + " redshift_object=0.5,\n", + " redshift_source=1.0,\n", + " ),\n", + ")\n", + "\n", + "member_galaxy_1 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.SersicSph(\n", + " centre=(-4.4, -5.0), intensity=1.866, effective_radius=0.8, sersic_index=3.0\n", + " ),\n", + " mass=al.mp.dPIEMassSph(\n", + " centre=(-4.4, -5.0),\n", + " sigma=240.0,\n", + " r_core=0.0,\n", + " r_cut=13.3,\n", + " redshift_object=0.5,\n", + " redshift_source=1.0,\n", + " ),\n", + ")\n", + "\n", + "member_galaxies = [member_galaxy_0, member_galaxy_1]" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Source Galaxy__\n", + "\n", + "The source galaxy whose lensed image we simulate. It uses a cored Sersic profile, whose light changes gradually\n", + "in its central regions and can therefore be evaluated accurately without adaptive over-sampling." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "source_galaxy = al.Galaxy(\n", + " redshift=1.0,\n", + " bulge=al.lp.SersicCore(\n", + " centre=(0.0, 0.1),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0),\n", + " intensity=3.0,\n", + " effective_radius=0.4,\n", + " sersic_index=1.0,\n", + " ),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "Use all galaxies to set up a tracer, which will generate the image for the simulated `Imaging` dataset.\n", + "\n", + "The tracer combines the main lens galaxy, the member galaxies and the source galaxy." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer = al.Tracer(galaxies=[lens_galaxy] + member_galaxies + [source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets look at the tracer`s image, this is the image we'll be simulating." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_array(array=tracer.image_2d_from(grid=grid), title=\"Image\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pass the simulator a tracer, which creates the image which is simulated as an imaging dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset = simulator.via_tracer_from(tracer=tracer, grid=grid)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the simulated `Imaging` dataset before outputting it to fits." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Output__\n", + "\n", + "Output the simulated dataset to the dataset path as .fits files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.fits_imaging(\n", + " dataset=dataset,\n", + " data_path=dataset_path / \"data.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " overwrite=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset path as .png files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)\n", + "aplt.plot_array(array=dataset.data, title=\"Data\")\n", + "\n", + "aplt.subplot_tracer(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")\n", + "aplt.subplot_galaxies_images(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Tracer json__\n", + "\n", + "Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and\n", + "galaxies are safely stored and available to check how the dataset was simulated in the future.\n", + "\n", + "This can be loaded via the method `tracer = al.from_json()`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=tracer,\n", + " file_path=Path(dataset_path, \"tracer.json\"),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Centre JSON Files__\n", + "\n", + "Save the centres of the main lens galaxy and member galaxies as .json files. These are loaded by the group-scale\n", + "modeling tutorial to set up the lens model (e.g. fixing the centres of the member galaxies)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=al.Grid2DIrregular(main_lens_centres),\n", + " file_path=Path(dataset_path, \"main_lens_centres.json\"),\n", + ")\n", + "\n", + "al.output_to_json(\n", + " obj=al.Grid2DIrregular(member_centres),\n", + " file_path=Path(dataset_path, \"extra_galaxies_centres.json\"),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Positions__\n", + "\n", + "Solve for the multiple-image positions of the lensed source galaxy, which can be used as input to group-scale\n", + "modeling to help the non-linear search converge (and are the primary observable of cluster-scale modeling,\n", + "introduced in the next chapter 4 tutorial)." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "solver = al.PointSolver.for_grid(\n", + " grid=al.Grid2D.uniform(shape_native=(500, 500), pixel_scales=0.1),\n", + " pixel_scale_precision=0.001,\n", + " magnification_threshold=0.01,\n", + ")\n", + "\n", + "positions = solver.solve(\n", + " tracer=tracer, source_plane_coordinate=source_galaxy.bulge.centre\n", + ")\n", + "\n", + "al.output_to_json(\n", + " obj=positions,\n", + " file_path=dataset_path / \"positions.json\",\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset can be viewed in the folder `dataset/group/simple`." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/simulator/interferometer.ipynb b/notebooks/simulator/interferometer.ipynb new file mode 100644 index 0000000..9742fdf --- /dev/null +++ b/notebooks/simulator/interferometer.ipynb @@ -0,0 +1,404 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulator: Interferometer\n", + "=========================\n", + "\n", + "This script simulates `Interferometer` data of a 'galaxy-scale' strong lens, as would be observed by a radio or\n", + "sub-mm interferometer like ALMA or the JVLA.\n", + "\n", + "Unlike CCD imaging, an interferometer does not observe an image of the lens. It measures \"visibilities\", which are\n", + "the Fourier transform of the sky brightness sampled at a set of points in the \"uv-plane\", where each point\n", + "corresponds to the separation of a pair of antennas in the array.\n", + "\n", + "It is used to illustrate interferometer data in the HowToLens lecture series. HowToLens does not cover\n", + "interferometry beyond this glimpse; the `autolens_workspace/scripts/interferometer` package is the dedicated\n", + "resource for uv-plane lens modeling.\n", + "\n", + "__Contents__\n", + "\n", + "- **Dataset Paths:** The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a.\n", + "- **Simulate:** Simulate the image using a (y,x) real-space grid and a synthetic set of uv-plane baselines.\n", + "- **Ray Tracing:** Setup the lens galaxy's mass and source galaxy light for this simulated lens.\n", + "- **Output:** Output the simulated dataset to the dataset path as .fits files.\n", + "- **Visualize:** Output a subplot of the simulated dataset's dirty images and the tracer's quantities.\n", + "- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass.\n", + "\n", + "__Model__\n", + "\n", + "This script simulates `Interferometer` data of a 'galaxy-scale' strong lens where:\n", + "\n", + " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", + " - The source galaxy's light is a `SersicCore`.\n", + "\n", + "__Start Here Notebook__\n", + "\n", + "If any code in this script is unclear, refer to the `autolens_workspace/*/interferometer/simulator.ipynb` notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "from pathlib import Path\n", + "import numpy as np\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Paths__\n", + "\n", + "The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a descriptive name." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_type = \"interferometer\"\n", + "dataset_name = \"simple\"\n", + "dataset_path = Path(\"dataset\", dataset_type, dataset_name)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Simulate__\n", + "\n", + "For interferometer data, the strong lens's image is evaluated in real space on a (y,x) grid and then Fourier\n", + "transformed to the uv-plane, where it is compared to the observed visibilities.\n", + "\n", + "Interferometers do not observe galaxies in a way where over sampling is necessary, therefore the grid uses no\n", + "over sampling." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "grid = al.Grid2D.uniform(\n", + " shape_native=(100, 100),\n", + " pixel_scales=0.1,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To perform the Fourier transform we need the wavelengths of the baselines, which describe where in the uv-plane\n", + "each visibility samples the sky's Fourier transform.\n", + "\n", + "For real data these are determined by the layout of the interferometer's antennas. The `autolens_workspace`\n", + "bundles baselines of real instruments (e.g. the Square Mile Array (SMA) and ALMA). For this tutorial dataset we\n", + "instead draw a small synthetic set of baselines from a Gaussian distribution in the uv-plane, with a scale\n", + "comparable to the SMA's (a few hundred visibilities), keeping the simulation fast and self-contained." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "rng = np.random.default_rng(1)\n", + "\n", + "total_visibilities = 200\n", + "\n", + "uv_wavelengths = rng.normal(loc=0.0, scale=1.0e5, size=(total_visibilities, 2))" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To simulate the interferometer dataset we first create a simulator, which defines the exposure time, noise levels\n", + "and Fourier transform method used in the simulation.\n", + "\n", + "We use the `TransformerDFT`, an exact Discrete Fourier Transform which is fast for datasets with a low number of\n", + "visibilities like this one." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "simulator = al.SimulatorInterferometer(\n", + " uv_wavelengths=uv_wavelengths,\n", + " exposure_time=300.0,\n", + " noise_sigma=1000.0,\n", + " transformer_class=al.TransformerDFT,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "Setup the lens galaxy's mass and source galaxy light for this simulated lens.\n", + "\n", + "The lens galaxy has no light profile, because at the radio and sub-mm wavelengths an interferometer observes the\n", + "foreground lens galaxy typically emits negligibly." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=1.6,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0),\n", + " ),\n", + " shear=al.mp.ExternalShear(gamma_1=0.05, gamma_2=0.05),\n", + ")\n", + "\n", + "source_galaxy = al.Galaxy(\n", + " redshift=1.0,\n", + " bulge=al.lp.SersicCore(\n", + " centre=(0.0, 0.0),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0),\n", + " intensity=10.0,\n", + " effective_radius=1.0,\n", + " sersic_index=2.5,\n", + " ),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use these galaxies to setup a tracer, which will generate the image for the simulated interferometer dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets look at the tracer`s image, this is the image we'll be simulating." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_array(array=tracer.image_2d_from(grid=grid), title=\"Image\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pass the simulator a tracer, which creates the ray-traced image plotted above and simulates it as an\n", + "interferometer dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset = simulator.via_tracer_from(tracer=tracer, grid=grid)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the simulated interferometer dataset's dirty images before outputting it to fits." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_interferometer_dirty_images(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Output__\n", + "\n", + "Output the simulated dataset to the dataset path as .fits files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.fits_interferometer(\n", + " dataset=dataset,\n", + " data_path=dataset_path / \"data.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " uv_wavelengths_path=dataset_path / \"uv_wavelengths.fits\",\n", + " overwrite=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "Output a subplot of the simulated dataset's dirty images and the tracer's quantities to the dataset path as\n", + ".png files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_interferometer_dirty_images(\n", + " dataset=dataset, output_path=dataset_path, output_format=\"png\"\n", + ")\n", + "\n", + "aplt.subplot_tracer(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")\n", + "aplt.subplot_galaxies_images(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Tracer json__\n", + "\n", + "Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and galaxies\n", + "are safely stored and available to check how the dataset was simulated in the future.\n", + "\n", + "This can be loaded via the method `tracer = al.from_json()`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=tracer,\n", + " file_path=Path(dataset_path, \"tracer.json\"),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset can be viewed in the folder `dataset/interferometer/simple`." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/simulator/lens_extra_galaxy.ipynb b/notebooks/simulator/lens_extra_galaxy.ipynb new file mode 100644 index 0000000..a21d8bb --- /dev/null +++ b/notebooks/simulator/lens_extra_galaxy.ipynb @@ -0,0 +1,514 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulator: Lens With Extra Galaxy\n", + "=================================\n", + "\n", + "This script simulates `Imaging` of a 'galaxy-scale' strong lens which is identical to the `lens_sersic` dataset\n", + "simulated for chapter 2 (lens light + mass + lensed source), but with one extra galaxy located a few arc-seconds\n", + "from the lens galaxy.\n", + "\n", + "The extra galaxy has its own light profile, which blends into the outskirts of the image, and its own mass profile,\n", + "which contributes to the lensing of the source. Chapter 4's first tutorial uses this dataset to illustrate the two\n", + "approaches to dealing with such interloper galaxies: removing their light via noise scaling, or including them in\n", + "the lens model explicitly.\n", + "\n", + "It is used to illustrate scaling up lens modeling in the HowToLens lecture series.\n", + "\n", + "__Contents__\n", + "\n", + "- **Model:** Compose the lens model fitted to the data.\n", + "- **Dataset Paths:** The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a.\n", + "- **Simulate:** Simulate the image using a (y,x) grid with the adaptive over sampling scheme.\n", + "- **Ray Tracing:** Setup the lens galaxy's light, mass and source galaxy light for this simulated lens.\n", + "- **Extra Galaxy:** Include one extra galaxy, whose light and mass must be masked or modeled in the tutorial.\n", + "- **Output:** Output the simulated dataset to the dataset path as .fits files.\n", + "- **Mask Extra Galaxy:** Build and save `mask_extra_galaxies.fits` so the tutorial can load it directly.\n", + "- **Visualize:** Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset.\n", + "- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass.\n", + "- **Extra Galaxy Centre:** Output the centre of the extra galaxy to a .json file for use in the lens model.\n", + "\n", + "__Model__\n", + "\n", + "This script simulates `Imaging` of a 'galaxy-scale' strong lens where:\n", + "\n", + " - The lens galaxy's light profile is an `Sersic`.\n", + " - The lens galaxy's total mass distribution is an `Isothermal` and `ExternalShear`.\n", + " - The source galaxy's light is an `Sersic`.\n", + " - There is one extra galaxy whose light is near the lens and whose mass perturbs the lensed source's emission.\n", + "\n", + "__Start Here Notebook__\n", + "\n", + "If any code in this script is unclear, refer to the `autolens_workspace/*/imaging/simulator.ipynb` notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "from pathlib import Path\n", + "\n", + "import numpy as np\n", + "\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Paths__\n", + "\n", + "The `dataset_type` describes the type of data being simulated and `dataset_name` gives it a descriptive name." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_type = \"imaging\"\n", + "dataset_name = \"lens_extra_galaxy\"\n", + "dataset_path = Path(\"dataset\", dataset_type, dataset_name)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Simulate__\n", + "\n", + "Simulate the image using a (y,x) grid with the adaptive over sampling scheme.\n", + "\n", + "This simulated lens has an extra galaxy offset from the main lens galaxy centre of (0.0\", 0.0\"). The adaptive over\n", + "sampling grid has both centres input to account for this." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "extra_galaxy_centre = (1.5, 2.5)\n", + "\n", + "grid = al.Grid2D.uniform(\n", + " shape_native=(100, 100),\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=grid,\n", + " sub_size_list=[32, 8, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=[(0.0, 0.0), extra_galaxy_centre],\n", + ")\n", + "\n", + "grid = grid.apply_over_sampling(over_sample_size=over_sample_size)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulate a simple Gaussian PSF for the image." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "psf = al.Convolver.from_gaussian(\n", + " shape_native=(11, 11), sigma=0.1, pixel_scales=grid.pixel_scales\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the simulator for the imaging data, which defines the exposure time, background sky, noise levels and psf." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "simulator = al.SimulatorImaging(\n", + " exposure_time=300.0,\n", + " psf=psf,\n", + " background_sky_level=0.1,\n", + " add_poisson_noise_to_data=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "Setup the lens galaxy's light, mass and source galaxy light for this simulated lens.\n", + "\n", + "These are identical to the `lens_sersic` dataset simulated for chapter 2, so that the only difference between the\n", + "two datasets is the extra galaxy included below." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.Sersic(\n", + " centre=(0.0, 0.0),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0),\n", + " intensity=1.0,\n", + " effective_radius=0.8,\n", + " sersic_index=4.0,\n", + " ),\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=1.6,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=45.0),\n", + " ),\n", + " shear=al.mp.ExternalShear(gamma_1=0.05, gamma_2=0.05),\n", + ")\n", + "\n", + "source_galaxy = al.Galaxy(\n", + " redshift=1.0,\n", + " bulge=al.lp.SersicCore(\n", + " centre=(0.0, 0.0),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=60.0),\n", + " intensity=4.0,\n", + " effective_radius=0.1,\n", + " sersic_index=1.0,\n", + " ),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Extra Galaxy__\n", + "\n", + "Include one extra galaxy, which is offset a few arc-seconds from the lens galaxy.\n", + "\n", + "Its light is an `ExponentialSph` profile, which blends into the image near the lensed source's emission, and its\n", + "mass is an `IsothermalSph` profile, which perturbs the ray-tracing of the source's light.\n", + "\n", + "Note that its redshift is the same as the main lens galaxy, which is not necessarily the case in real observations.\n", + "If it were at a different redshift, the tools for masking or modeling the extra galaxy are equipped to handle this,\n", + "with mass modeling leading to multi-plane ray-tracing being performed." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "extra_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " light=al.lp.ExponentialSph(\n", + " centre=extra_galaxy_centre, intensity=2.0, effective_radius=0.5\n", + " ),\n", + " mass=al.mp.IsothermalSph(centre=extra_galaxy_centre, einstein_radius=0.15),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use these galaxies to setup a tracer, which will generate the image for the simulated `Imaging` dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer = al.Tracer(galaxies=[lens_galaxy, extra_galaxy, source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets look at the tracer`s image, this is the image we'll be simulating." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.plot_array(array=tracer.image_2d_from(grid=grid), title=\"Image\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pass the simulator a tracer, which creates the image which is simulated as an imaging dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset = simulator.via_tracer_from(tracer=tracer, grid=grid)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the simulated `Imaging` dataset before outputting it to fits." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_imaging_dataset(dataset=dataset)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Output__\n", + "\n", + "Output the simulated dataset to the dataset path as .fits files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.fits_imaging(\n", + " dataset=dataset,\n", + " data_path=dataset_path / \"data.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " overwrite=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Mask Extra Galaxy__\n", + "\n", + "Build and output a `mask_extra_galaxies.fits` covering the extra galaxy's region, so that the chapter 4 tutorial\n", + "which uses this dataset can load the mask directly without a separate data-preparation step.\n", + "\n", + "The circle is sized to ~3x the galaxy's `effective_radius`, which comfortably covers the light extent of the\n", + "`ExponentialSph` profile used above. The geometry is derived from the same centre + radius defined for the extra\n", + "galaxy in this script, so it stays in sync with any future tweak to those values.\n", + "\n", + "`Mask2D.circular` honours the `PYAUTO_SMALL_DATASETS=1` env var (caps to 16x16 at 0.6\"/px), so the mask\n", + "automatically shrinks alongside the small-dataset image and never raises an out-of-bounds error." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "extra_galaxies_mask = np.zeros(dataset.shape_native, dtype=bool)\n", + "\n", + "circle = al.Mask2D.circular(\n", + " shape_native=dataset.shape_native,\n", + " pixel_scales=dataset.pixel_scales,\n", + " centre=extra_galaxy_centre,\n", + " radius=3.0 * 0.5,\n", + " invert=True, # True inside the circle (i.e. masked region)\n", + ")\n", + "extra_galaxies_mask = np.logical_or(extra_galaxies_mask, circle.native)\n", + "\n", + "mask_extra_galaxies = al.Mask2D(\n", + " mask=extra_galaxies_mask,\n", + " pixel_scales=dataset.pixel_scales,\n", + ")\n", + "\n", + "aplt.fits_array(\n", + " array=mask_extra_galaxies,\n", + " file_path=dataset_path / \"mask_extra_galaxies.fits\",\n", + " overwrite=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset path as .png files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)\n", + "aplt.plot_array(array=dataset.data, title=\"Data\")\n", + "\n", + "aplt.subplot_tracer(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")\n", + "aplt.subplot_galaxies_images(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Tracer json__\n", + "\n", + "Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and galaxies\n", + "are safely stored and available to check how the dataset was simulated in the future.\n", + "\n", + "This can be loaded via the method `tracer = al.from_json()`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=tracer,\n", + " file_path=Path(dataset_path, \"tracer.json\"),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Extra Galaxy Centre__\n", + "\n", + "Output the centre of the extra galaxy to a .json file, so that it can be used to set up the lens model in the\n", + "chapter 4 tutorial." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=al.Grid2DIrregular(values=[extra_galaxy_centre]),\n", + " file_path=dataset_path / \"extra_galaxies_centres.json\",\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset can be viewed in the folder `autolens_workspace/dataset/imaging/lens_extra_galaxy`." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/simulator/lens_x2.ipynb b/notebooks/simulator/lens_x2.ipynb index 759824f..99271d7 100644 --- a/notebooks/simulator/lens_x2.ipynb +++ b/notebooks/simulator/lens_x2.ipynb @@ -36,9 +36,9 @@ "\n", " - The lens galaxy's light is two `Sersic`'s.\n", " - The lens galaxy's mass distribution is two `Isothermal`'s.\n", - " - The source galaxy's light is an `Sersic`.\n", + " - The source galaxy's light is an `ExponentialCoreSph`.\n", "\n", - "This dataset is used in chapter 3 of the **HowToLens** lectures.\n", + "This dataset is used in chapter 4 of the **HowToLens** lectures.\n", "\n", "__Start Here Notebook__\n", "\n", diff --git a/notebooks/simulator/lens_x3.ipynb b/notebooks/simulator/lens_x3.ipynb new file mode 100644 index 0000000..5a031b3 --- /dev/null +++ b/notebooks/simulator/lens_x3.ipynb @@ -0,0 +1,408 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulator: Lens x3\n", + "==================\n", + "\n", + "This script simulates `Imaging` of a 'galaxy-scale' lens where there are three lens galaxies, each with their own\n", + "light and mass profiles, which all contribute significantly to the lensing of a single background source.\n", + "\n", + "Strong lenses with this complex mass distribution are more challenging to model than those with one or two lens\n", + "galaxies, because every additional deflector adds its own free light and mass parameters to the model.\n", + "\n", + "A system with three co-dominant lens galaxies and no shared dark-matter halo is exactly what the\n", + "`autolens_workspace`'s `multi_galaxy` package is dedicated to \u2014 its `start_here` and `modeling` examples are\n", + "directly applicable to this lens. (Systems where a dominant group-scale halo joins the galaxies belong one rung\n", + "up the regime ladder, in the `group` package.)\n", + "\n", + "This dataset is modeled in HowToLens chapter 4 and is used to illustrate how the parameter count of a lens model\n", + "grows with every co-dominant deflector, motivating the scaling relations introduced later in that chapter.\n", + "\n", + "__Contents__\n", + "\n", + "- **Model:** Compose the lens model fitted to the data.\n", + "- **Dataset Paths:** The `dataset_type` describes the type of data being simulated (in this case, `Imaging` data) and.\n", + "- **Simulate:** Simulate the image using a (y,x) grid with the adaptive over sampling scheme.\n", + "- **Ray Tracing:** Setup the lens galaxies' light, mass and source galaxy light for this simulated lens.\n", + "- **Output:** Output the simulated dataset to the dataset path as .fits files.\n", + "- **Visualize:** Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset.\n", + "- **Tracer json:** Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass.\n", + "\n", + "__Model__\n", + "\n", + "This script simulates `Imaging` of a 'galaxy-scale' strong lens where:\n", + "\n", + " - The lens galaxies' light are three `Sersic`'s.\n", + " - The lens galaxies' mass distributions are three `Isothermal`'s.\n", + " - The source galaxy's light is an `ExponentialCoreSph`.\n", + "\n", + "This dataset is used in chapter 4 of the **HowToLens** lectures.\n", + "\n", + "__Start Here Notebook__\n", + "\n", + "If any code in this script is unclear, refer to the `autolens_workspace/*/imaging/simulator.ipynb` notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from pathlib import Path\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Paths__\n", + "\n", + "The `dataset_type` describes the type of data being simulated (in this case, `Imaging` data) and `dataset_name`\n", + "gives it a descriptive name." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_type = \"imaging\"\n", + "dataset_name = \"x3_lens_galaxies\"\n", + "dataset_path = Path(\"dataset\", dataset_type, dataset_name)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Simulate__\n", + "\n", + "Simulate the image using a (y,x) grid with the adaptive over sampling scheme.\n", + "\n", + "This simulated lens has three galaxies whose centres are offset from (0.0\", 0.0\"), forming a triangle around the\n", + "origin. The adaptive over sampling grid has all three centres input to account for this." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "grid = al.Grid2D.uniform(\n", + " shape_native=(100, 100),\n", + " pixel_scales=0.1,\n", + ")\n", + "\n", + "over_sample_size = al.util.over_sample.over_sample_size_via_radial_bins_from(\n", + " grid=grid,\n", + " sub_size_list=[32, 8, 2],\n", + " radial_list=[0.3, 0.6],\n", + " centre_list=[(0.9, 0.0), (-0.6, -0.9), (-0.6, 0.9)],\n", + ")\n", + "\n", + "grid = grid.apply_over_sampling(over_sample_size=over_sample_size)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulate a simple Gaussian PSF for the image." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "psf = al.Convolver.from_gaussian(\n", + " shape_native=(11, 11), sigma=0.1, pixel_scales=grid.pixel_scales\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the simulator for the imaging data, which defines the exposure time, background sky, noise levels and psf." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "simulator = al.SimulatorImaging(\n", + " exposure_time=300.0,\n", + " psf=psf,\n", + " background_sky_level=0.1,\n", + " add_poisson_noise_to_data=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "Setup the lens galaxies' light, mass and source galaxy light for this simulated lens.\n", + "\n", + "The image plane is made of three separate lens galaxies, whose Einstein radii (0.9\", 0.8\" and 0.7\") are\n", + "deliberately comparable \u2014 no single galaxy dominates the deflection of the source's light, which is what makes\n", + "every one of them a co-dominant deflector that must be modeled individually.\n", + "\n", + "All three galaxies are at the same redshift, so ray tracing is single-plane and their deflection fields simply add." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy_0 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.Sersic(\n", + " centre=(0.9, 0.0),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=30.0),\n", + " intensity=0.1,\n", + " effective_radius=0.7,\n", + " sersic_index=3.0,\n", + " ),\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.9, 0.0),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.85, angle=30.0),\n", + " einstein_radius=0.9,\n", + " ),\n", + ")\n", + "\n", + "lens_galaxy_1 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.Sersic(\n", + " centre=(-0.6, -0.9),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.7, angle=120.0),\n", + " intensity=0.1,\n", + " effective_radius=0.6,\n", + " sersic_index=2.5,\n", + " ),\n", + " mass=al.mp.Isothermal(\n", + " centre=(-0.6, -0.9),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=120.0),\n", + " einstein_radius=0.8,\n", + " ),\n", + ")\n", + "\n", + "lens_galaxy_2 = al.Galaxy(\n", + " redshift=0.5,\n", + " bulge=al.lp.Sersic(\n", + " centre=(-0.6, 0.9),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=60.0),\n", + " intensity=0.1,\n", + " effective_radius=0.5,\n", + " sersic_index=3.5,\n", + " ),\n", + " mass=al.mp.Isothermal(\n", + " centre=(-0.6, 0.9),\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.9, angle=60.0),\n", + " einstein_radius=0.7,\n", + " ),\n", + ")\n", + "\n", + "source_galaxy = al.Galaxy(\n", + " redshift=1.0,\n", + " bulge=al.lp.ExponentialCoreSph(\n", + " centre=(0.05, 0.15), intensity=0.2, effective_radius=0.5, radius_break=0.025\n", + " ),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use these galaxies to setup a tracer, which will generate the image for the simulated `Imaging` dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "tracer = al.Tracer(\n", + " galaxies=[lens_galaxy_0, lens_galaxy_1, lens_galaxy_2, source_galaxy]\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pass the simulator a tracer, which creates the image which is simulated as an imaging dataset." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset = simulator.via_tracer_from(tracer=tracer, grid=grid)" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Output__\n", + "\n", + "Output the simulated dataset to the dataset path as .fits files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.fits_imaging(\n", + " dataset=dataset,\n", + " data_path=dataset_path / \"data.fits\",\n", + " psf_path=dataset_path / \"psf.fits\",\n", + " noise_map_path=dataset_path / \"noise_map.fits\",\n", + " overwrite=True,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "Output a subplot of the simulated dataset, the image and the tracer's quantities to the dataset path as .png files." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "aplt.subplot_imaging_dataset(dataset=dataset)\n", + "aplt.plot_array(array=dataset.data, title=\"Data\")\n", + "\n", + "aplt.subplot_tracer(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")\n", + "aplt.subplot_galaxies_images(\n", + " tracer=tracer, grid=grid, output_path=dataset_path, output_format=\"png\"\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Tracer json__\n", + "\n", + "Save the `Tracer` in the dataset folder as a .json file, ensuring the true light profiles, mass profiles and galaxies\n", + "are safely stored and available to check how the dataset was simulated in the future.\n", + "\n", + "This can be loaded via the method `tracer = al.from_json()`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "al.output_to_json(\n", + " obj=tracer,\n", + " file_path=Path(dataset_path, \"tracer.json\"),\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset can be viewed in the folder `autolens_workspace/dataset/imaging/x3_lens_galaxies`." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/notebooks/simulator/weak_lensing.ipynb b/notebooks/simulator/weak_lensing.ipynb new file mode 100644 index 0000000..71156cf --- /dev/null +++ b/notebooks/simulator/weak_lensing.ipynb @@ -0,0 +1,315 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulator: Weak Lensing\n", + "=======================\n", + "\n", + "This script simulates a weak gravitational lensing shear catalogue. Unlike the imaging simulators (which produce\n", + "a 2D image of the lensed source) the weak-lensing simulator produces a *catalogue* of (gamma_2, gamma_1) shear\n", + "measurements at the (y, x) positions of a population of background source galaxies.\n", + "\n", + "The lens is a **cluster-scale** mass (Einstein radius 25\", the regime where weak lensing is actually used) and the\n", + "background galaxies are placed in an **annulus outside the strong-lensing core** \u2014 this is where real weak-lensing\n", + "measurements are made, so the simulated shears are genuinely weak (|gamma| ~ 0.06-0.25) rather than the order-unity\n", + "shears found among galaxies projected near the Einstein radius.\n", + "\n", + "The shear computation itself comes from `Tracer.shear_yx_2d_via_hessian_from`, which differentiates the\n", + "deflection-angle field. On top of that the simulator adds Gaussian shape noise per galaxy (the dominant noise\n", + "source in real weak-lensing data \u2014 each galaxy has a random unlensed ellipticity around 0.2-0.4 per component).\n", + "\n", + "It is used to illustrate weak lensing data in the HowToLens lecture series.\n", + "\n", + "__Contents__\n", + "\n", + "- **Dataset Paths:** The `dataset_type` and `dataset_name` define the on-disk output folder.\n", + "- **Ray Tracing:** Build a Tracer from a cluster-scale Isothermal lens galaxy.\n", + "- **Source Positions:** Draw background source galaxies in an annulus outside the strong-lensing core.\n", + "- **Simulator:** Construct a `SimulatorShearYX` with the desired shape-noise level and random seed.\n", + "- **Output:** Save the simulated `WeakDataset` and the `Tracer` to JSON.\n", + "- **Visualize:** Plot the shear field and the dataset subplot mosaic via `aplt`.\n", + "\n", + "__Start Here Notebook__\n", + "\n", + "If any code in this script is unclear, refer to the `autolens_workspace/*/weak/simulator.ipynb` notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Google Colab Setup__\n", + "\n", + "This cell sets up the environment when the notebook is run on Google Colab: it installs the\n", + "required PyAuto packages, clones the workspace (configuration files and example datasets) and\n", + "points the configuration at it. If you are running the notebook elsewhere (e.g. locally via\n", + "your own installation) it does nothing, and you can run it safely.\n", + "\n", + "Colab tip: model-fits run much faster on a GPU \u2014 enable one via \"Runtime\" -> \"Change runtime\n", + "type\" -> \"Hardware accelerator\" before running the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import google.colab\n", + "except ImportError:\n", + " from autolens import setup_colab as _setup_colab\n", + "else:\n", + " import importlib\n", + " import subprocess\n", + " import sys\n", + "\n", + " subprocess.check_call(\n", + " [sys.executable, \"-m\", \"pip\", \"install\", \"autonerves\", \"--no-deps\"]\n", + " )\n", + " _setup_colab = importlib.import_module(\"autonerves.setup_colab\")\n", + "\n", + "_setup_colab.setup(\"howtolens\")" + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "\n", + "from autolens import jax_wrapper # Sets JAX environment before other imports\n", + "\n", + "# from autolens import setup_notebook; setup_notebook()\n", + "\n", + "from pathlib import Path\n", + "\n", + "import numpy as np\n", + "\n", + "import autolens as al\n", + "import autolens.plot as aplt" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Dataset Paths__\n", + "\n", + "The `dataset_type` describes the type of data being simulated (in this case, a weak-lensing shear catalogue) and\n", + "`dataset_name` gives it a descriptive name. They define the folder the dataset is output to on your hard-disk:\n", + "\n", + " - The shear catalogue will be output to `/dataset/weak_lensing/simple/dataset.json`.\n", + " - The tracer used to simulate the dataset will be output alongside as `tracer.json`." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_type = \"weak_lensing\"\n", + "dataset_name = \"simple\"\n", + "\n", + "dataset_path = Path(\"dataset\") / dataset_type / dataset_name" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Ray Tracing__\n", + "\n", + "We define the lens galaxy's mass distribution as a **cluster-scale** `Isothermal` profile with an Einstein radius\n", + "of 25\" (no external shear, no source light \u2014 weak-lensing measurements are sensitive to the shear field induced\n", + "by the lens mass alone). A 25\" Einstein radius corresponds to a very massive cluster (velocity dispersion of order\n", + "1200-1400 km/s) \u2014 the mass scale on which weak lensing is the tool of choice, because the shear signal extends to\n", + "the many-arc-minute radii where strong lensing has no features.\n", + "\n", + "Because the source-galaxy positions are an irregular catalogue rather than a 2D pixel grid, this simulator\n", + "does not need PSF convolution, over-sampling, or background-sky modelling \u2014 those are all imaging-specific\n", + "concerns." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "lens_galaxy = al.Galaxy(\n", + " redshift=0.5,\n", + " mass=al.mp.Isothermal(\n", + " centre=(0.0, 0.0),\n", + " einstein_radius=25.0,\n", + " ell_comps=al.convert.ell_comps_from(axis_ratio=0.8, angle=45.0),\n", + " ),\n", + ")\n", + "\n", + "source_galaxy = al.Galaxy(redshift=1.0)\n", + "\n", + "tracer = al.Tracer(galaxies=[lens_galaxy, source_galaxy])" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Source Positions__\n", + "\n", + "Real weak-lensing measurements avoid the strong-lensing core, where the linear-shear approximation breaks down\n", + "and cluster-member galaxies contaminate the sample. We therefore draw the background galaxies in an **annulus**\n", + "between an inner radius of 50\" (~2 Einstein radii, safely into the weak regime) and an outer radius of 200\"\n", + "(~3.3 arc-minutes), uniformly in area.\n", + "\n", + "This is the physically genuine weak-lensing geometry: at 50\" the shear is |gamma| ~ 0.25 and by 200\" it has\n", + "fallen to |gamma| ~ 0.06, so every galaxy is a *weak* probe whose individual shear is well below the 0.25 shape\n", + "noise. The signal lives in the ensemble of 1500 galaxies (a deep-survey source density of ~45 / arc-minute^2),\n", + "exactly as in a real cluster weak-lensing analysis.\n", + "\n", + "We build the positions as an `al.Grid2DIrregular` of (y, x) coordinates and pass them to the simulator's\n", + "`via_tracer_from` method." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "rng = np.random.default_rng(1)\n", + "\n", + "n_galaxies = 1500\n", + "radius_inner = 50.0 # arc-seconds \u2014 inside this we are in the strong-lensing core.\n", + "radius_outer = 200.0 # arc-seconds \u2014 the edge of the simulated weak-lensing field.\n", + "\n", + "radii = np.sqrt(rng.uniform(radius_inner**2.0, radius_outer**2.0, n_galaxies))\n", + "phi = rng.uniform(0.0, 2.0 * np.pi, n_galaxies)\n", + "\n", + "positions = al.Grid2DIrregular(\n", + " values=np.stack([radii * np.sin(phi), radii * np.cos(phi)], axis=1)\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Simulator__\n", + "\n", + "`SimulatorShearYX` takes a shape-noise level and an optional random seed. A `noise_sigma` of 0.25 is a typical\n", + "per-component shape-noise value for a weak-lensing survey; reduce it to 0.0 to inspect the noise-free shear field.\n", + "\n", + "`via_tracer_from` evaluates the tracer's shear at the supplied (y, x) positions and adds the shape noise." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "simulator = al.SimulatorShearYX(noise_sigma=0.25, seed=1)\n", + "\n", + "dataset = simulator.via_tracer_from(\n", + " tracer=tracer,\n", + " grid=positions,\n", + " name=dataset_name,\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Output__\n", + "\n", + "Save the simulated `WeakDataset` and the `Tracer` to the dataset folder as JSON, ensuring the inputs to the\n", + "simulation are reproducible and inspectable later." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "dataset_path.mkdir(parents=True, exist_ok=True)\n", + "\n", + "al.output_to_json(obj=dataset, file_path=dataset_path / \"dataset.json\")\n", + "al.output_to_json(obj=tracer, file_path=dataset_path / \"tracer.json\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Visualize__\n", + "\n", + "The shear field is visualised with `matplotlib.quiver` rendered as *headless line segments*\n", + "(`headwidth=0, headlength=0, headaxislength=0`) \u2014 the standard weak-lensing convention, because shear is a\n", + "spin-2 quantity and a 180-degree rotation maps it back to itself, so an arrowhead would suggest a\n", + "directionality the data does not have.\n", + "\n", + "`aplt.subplot_weak_dataset` produces a 2x2 mosaic combining the shear field, the per-galaxy noise map, the\n", + "shear magnitude `|gamma|`, and the position angle `phi`. `aplt.plot_shear_yx_2d` writes a single-panel\n", + "quiver of the shear field alone \u2014 useful for high-resolution figures where the mosaic is too dense." + ] + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "aplt.subplot_weak_dataset(\n", + " dataset=dataset,\n", + " output_path=dataset_path,\n", + " output_format=\"png\",\n", + ")\n", + "\n", + "aplt.plot_shear_yx_2d(\n", + " shear_yx=dataset.shear_yx,\n", + " output_path=dataset_path,\n", + " output_format=\"png\",\n", + ")\n", + "\n", + "print(dataset.info)\n", + "print(f\"Wrote dataset to {dataset_path}\")" + ], + "outputs": [], + "execution_count": null + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset can be viewed in the folder `dataset/weak_lensing/simple`." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/workspace_index.json b/workspace_index.json index 91e127e..7fd32f2 100644 --- a/workspace_index.json +++ b/workspace_index.json @@ -3,6 +3,7 @@ "contents": [ "Directories", "Dataset", + "Dataset Auto-Simulation", "Subplots", "Plot Customization", "Overlays", @@ -21,7 +22,11 @@ "Light Profiles", "One Dimension Projection", "Galaxies", - "Units" + "Units", + "Wrap Up", + "Advanced Topics", + "Other Unit Conversion", + "Over Sampling" ], "cross_refs": [ "/guides/advanced/over_sampling.ipynb" @@ -39,7 +44,8 @@ "Ray Tracing Images", "Galaxies", "Tracer", - "Mappings" + "Mappings", + "Wrap Up" ], "cross_refs": [], "notebook": "notebooks/chapter_1_introduction/tutorial_2_ray_tracing.ipynb", @@ -62,26 +68,45 @@ "notebook": "notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb", "path": "scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py", "summary": "We'll now reinforce the ideas that we learnt about ray-tracing in the previous tutorial and introduce the following new concepts:", - "title": "Tutorial 5: More Ray Tracing" + "title": "Tutorial 3: More Ray Tracing" }, { "contents": [ + "Initial Setup", + "Point Sources", + "Point Source Tracer", + "The Lens Equation", + "Point Solver", + "Multiple Images and Critical Curves", + "Magnifications", + "Time Delays", + "Extended Versus Point Computations", "Wrap Up" ], "cross_refs": [], "notebook": "notebooks/chapter_1_introduction/tutorial_4_point_sources.ipynb", "path": "scripts/chapter_1_introduction/tutorial_4_point_sources.py", - "summary": "This tutorial is not wrriten yet, but will explain how point source lensing works.", + "summary": "In the previous tutorials, the background sources we lensed were galaxies: extended objects whose light spreads over many thousands of light years. When lensed, their light is warped into the arcs and Einstein rings we produced with the `Tracer`, spread across many pixels of the image.", "title": "Tutorial 4: Point Sources" }, { "contents": [ + "Initial Setup", + "Cosmological Distances", + "The Lens Equation", + "Convergence", + "Deflection Angles", + "The Lensing Potential", + "Shear and Magnification", + "Critical Curves and Caustics", + "Einstein Radius", + "Time Delays", "Wrap Up" ], "cross_refs": [], "notebook": "notebooks/chapter_1_introduction/tutorial_5_lensing_formalism.ipynb", "path": "scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py", - "summary": "This tutorial is not wrriten yet, but will explain what all the different lens quantities are and give a more formal description of them.", + "summary": "This tutorial is the equations lecture of **HowToLens**.", "title": "Tutorial 5: Lensing Formalism" }, { @@ -92,9 +117,14 @@ "Background Sky", "Simulator", "Output", + "Interferometer Data", + "Weak Lensing Data", "Wrap Up" ], - "cross_refs": [], + "cross_refs": [ + "scripts/simulator/interferometer.py", + "scripts/simulator/weak_lensing.py" + ], "notebook": "notebooks/chapter_1_introduction/tutorial_6_data.ipynb", "path": "scripts/chapter_1_introduction/tutorial_6_data.py", "summary": "In the last tutorials, we use tracers to create images of strong lenses. However, those images don't accurately represent what we would observe through a telescope.", @@ -102,7 +132,9 @@ }, { "contents": [ - "Dataset & Mask", + "Dataset", + "Dataset Auto-Simulation", + "Mask", "Masked Grid", "Fitting", "Incorrect Fit", @@ -114,7 +146,7 @@ ], "notebook": "notebooks/chapter_1_introduction/tutorial_7_fitting.ipynb", "path": "scripts/chapter_1_introduction/tutorial_7_fitting.py", - "summary": "In previous tutorials, we used light profiles to create simulated images of tracer and visualized how these images would appear when captured by a CCD detector on a telescope like the Hubble Space Telescope.", + "summary": "In previous tutorials, we used light profiles to create simulated images of a tracer and visualized how these images would appear when captured by a CCD detector on a telescope like the Hubble Space Telescope.", "title": "Tutorial 7: Fitting" }, { @@ -130,22 +162,66 @@ "notebook": "notebooks/chapter_1_introduction/tutorial_8_summary.ipynb", "path": "scripts/chapter_1_introduction/tutorial_8_summary.py", "summary": "In this chapter, we have learnt that:", - "title": "Tutorial 9: Summary" + "title": "Tutorial 8: Summary" + }, + { + "contents": [ + "Initial Setup", + "Dataset Auto-Simulation", + "Model", + "Search", + "Result (Search 1)", + "Prior Passing", + "Result", + "Wrap Up", + "Detailed Explanation Of Prior Passing", + "EXAMPLE" + ], + "cross_refs": [ + "autolens_workspace/scripts/guides/modeling/chaining.py" + ], + "notebook": "notebooks/chapter_2_lens_modeling/tutorial_10_prior_passing.ipynb", + "path": "scripts/chapter_2_lens_modeling/tutorial_10_prior_passing.py", + "summary": "In the previous tutorial, we used non-linear search chaining to break the model-fitting procedure down into two non-linear searches. This used an initial search to fit a simple lens model, whose results were used to tune and initialize the priors of a more complex lens model that was fitted by the second search.", + "title": "Tutorial 10: Prior Passing" + }, + { + "contents": [ + "Search Chaining In The Workspace", + "SLaM (Source, Light and Mass)", + "Wrap Up" + ], + "cross_refs": [ + "autolens_workspace/scripts/guides/modeling/chaining.py", + "autolens_workspace/scripts/guides/modeling/slam_start_here.py", + "autolens_workspace/scripts/imaging/features/multi_gaussian_expansion/slam.py", + "autolens_workspace/scripts/imaging/features/pixelization/slam.py", + "slam.py" + ], + "notebook": "notebooks/chapter_2_lens_modeling/tutorial_11_slam.ipynb", + "path": "scripts/chapter_2_lens_modeling/tutorial_11_slam.py", + "summary": "In the previous two tutorials, we learnt how search chaining breaks a lens model-fit into a sequence of simpler non-linear searches, and how prior passing carries the results of each search into the next. Together, they give us the flexibility to juggle the dimensionality, priors and settings of each search \u2014 the three drivers of run-time we met in tutorial 8 \u2014 whilst still fitting a complex and realistic lens model at the end.", + "title": "Tutorial 11: SLaM" }, { "contents": [ "Overview", "Parameter Space", + "Non-Linear Search", "Search Types", "Deeper Background", "PyAutoFit", "Initial Setup", + "Dataset Auto-Simulation", "Mask", "Model", "Priors", "Analysis", "Searches", + "Maximum Likelihood Estimation (MLE)", + "Markov Chain Monte Carlo (MCMC)", "Nested Sampling", + "What is The Best Search To Use?", "Wrap Up" ], "cross_refs": [ @@ -153,13 +229,14 @@ ], "notebook": "notebooks/chapter_2_lens_modeling/tutorial_1_non_linear_search.ipynb", "path": "scripts/chapter_2_lens_modeling/tutorial_1_non_linear_search.py", - "summary": "The starting point for most scientific analysis conducted by an Astronomer is that they have observations of a strong lens using a telescope like the Hubble Space Telescope, and seek to learn about the lens galaxy, source galaxy and the Universe from these observations. With **PyAutoLen**, we seek to learn about the lenses may and ray-tracing, asking questions like how big is the lens galaxy and what does the unlensed source galaxy look like?", + "summary": "The starting point for most scientific analysis conducted by an Astronomer is that they have observations of a strong lens using a telescope like the Hubble Space Telescope, and seek to learn about the lens galaxy, source galaxy and the Universe from these observations. With **PyAutoLens**, we seek to learn about the lens's mass and ray-tracing, asking questions like how big is the lens galaxy and what does the unlensed source galaxy look like?", "title": "Tutorial 1: Non-linear Search" }, { "contents": [ "PyAutoFit", "Initial Setup", + "Dataset Auto-Simulation", "Mask", "Model", "Search", @@ -168,6 +245,7 @@ "Analysis", "VRAM Use", "Run Times", + "Model-Fit", "Result Info", "Output Folder", "Unique Identifier", @@ -187,8 +265,10 @@ { "contents": [ "Initial Setup", + "Dataset Auto-Simulation", "Mask", "Model", + "Search + Analysis", "Run Time", "Result", "Global and Local Maxima", @@ -203,11 +283,15 @@ { "contents": [ "Initial Setup", + "Dataset Auto-Simulation", "Mask", "Prior Tuning", "Run Time", "Result", - "Discussion" + "Discussion", + "Approach 2: Reducing Complexity", + "Approach 3: Look Harder", + "Wrap Up" ], "cross_refs": [ "chapter_optional/tutorial_searches.ipynb" @@ -220,6 +304,7 @@ { "contents": [ "Initial Setup", + "Dataset Auto-Simulation", "Mask", "Linear Light Profiles", "Run Time", @@ -247,7 +332,9 @@ { "contents": [ "Initial Setup", + "Dataset Auto-Simulation", "Mask", + "Model + Analysis", "Run Time", "Search", "Discussion", @@ -263,6 +350,7 @@ { "contents": [ "Initial Setup", + "Dataset Auto-Simulation", "Tracer & Fit", "Samples", "Workspace", @@ -277,13 +365,15 @@ }, { "contents": [ - "Algorithmic Optimization", + "Searching Non-linear Parameter Space", + "Cost Per Evaluation", + "JAX", + "Run Time Estimation", "Data Quantity", "Wrap Up" ], "cross_refs": [ - "//numba.py", - "chapter_optional/tutorial_searches.ipynb" + "chapter_optional/tutorial_searches.py" ], "notebook": "notebooks/chapter_2_lens_modeling/tutorial_8_need_for_speed.ipynb", "path": "scripts/chapter_2_lens_modeling/tutorial_8_need_for_speed.py", @@ -293,7 +383,9 @@ { "contents": [ "Initial Setup", + "Dataset Auto-Simulation", "Model", + "Search + Analysis", "Result", "Prior Passing", "Run Time", @@ -301,77 +393,26 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_3_search_chaining/tutorial_1_search_chaining.ipynb", - "path": "scripts/chapter_3_search_chaining/tutorial_1_search_chaining.py", - "summary": "In chapter 2, we learnt how to perform lens modeling using a non-linear search. In all of the tutorials, we fitted the data using just one non-linear search. In this chapter, we introduce a technique called 'non-linear search chaining', fits a lens model using a sequence of non-linear searches. The initial searches fit simpler lens models whose parameter spaces can be more accurately and efficiently sampled. The results of this search are then passed to later searches which fit lens models of gradually increasing complexity.", - "title": "Tutorial 1: Search Chaining" - }, - { - "contents": [ - "Initial Setup", - "Model", - "Search", - "Prior Passing", - "Result", - "Wrap Up", - "Detailed Explanation Of Prior Passing", - "EXAMPLE" - ], - "cross_refs": [], - "notebook": "notebooks/chapter_3_search_chaining/tutorial_2_prior_passing.ipynb", - "path": "scripts/chapter_3_search_chaining/tutorial_2_prior_passing.py", - "summary": "In the previous tutorial, we used non-linear search chaining to break the model-fitting procedure down into two non-linear searches. This used an initial search to fit a simple lens model, whose results were used to tune and initialize the priors of a more complex lens model that was fitted by the second search.", - "title": "Tutorial 2: Prior Passing" - }, - { - "contents": [ - "Dated Tutorial", - "Initial Setup", - "Paths", - "Notes", - "Wrap Up" - ], - "cross_refs": [], - "notebook": "notebooks/chapter_3_search_chaining/tutorial_3_lens_and_source.ipynb", - "path": "scripts/chapter_3_search_chaining/tutorial_3_lens_and_source.py", - "summary": "In this tutorial, we demonstrate search chaining using three searches to fit strong lens `Imaging` which includes the lens galaxy's light.", - "title": "Tutorial 3: Lens and Source" + "notebook": "notebooks/chapter_2_lens_modeling/tutorial_9_search_chaining.ipynb", + "path": "scripts/chapter_2_lens_modeling/tutorial_9_search_chaining.py", + "summary": "Throughout this chapter, we have fitted the data using just one non-linear search. The previous tutorial discussed the run-time cost of doing this: with a single search, the dimensionality of the model, the priors on its parameters and the search settings must all be juggled at once, leaving us little flexibility to trade them off against one another.", + "title": "Tutorial 9: Search Chaining" }, { "contents": [ "Initial Setup", "Mask", - "Paths", - "Search Chaining Approach", - "Wrap Up" - ], - "cross_refs": [], - "notebook": "notebooks/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.ipynb", - "path": "scripts/chapter_3_search_chaining/tutorial_4_x2_lens_galaxies.py", - "summary": "Up to now, all the images we've fitted had one lens galaxy. However, we saw in chapter 1 that our lens plane can consist of multiple galaxies which each contribute to the strong lensing. Multi-galaxy systems are challenging to model, because they add an extra 5-10 parameters to the non-linear search and, more problematically, the degeneracies between the parameters of the mass profiles of the two galaxies can be severe.", - "title": "Tutorial 4: Two Lens galaxies" - }, - { - "contents": [ - "Initial Setup", - "Paths", - "Search Chaining Approach", - "Run Times", + "Simulator", + "Fitting", + "Fit Problems", + "Discussion", "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_3_search_chaining/tutorial_5_complex_source.ipynb", - "path": "scripts/chapter_3_search_chaining/tutorial_5_complex_source.py", - "summary": "Up to now, we've not paid much attention to the source galaxy's morphology. We've assumed its a single-component exponential profile, which is a fairly crude assumption. A quick look at any image of a real galaxy reveals a wealth of different structures that could be present: bulges, disks, bars, star-forming knots and so on. Furthermore, there could be more than one source-galaxy!", - "title": "Tutorial 5: Complex Source" - }, - { - "contents": [], - "cross_refs": [], - "notebook": "notebooks/chapter_3_search_chaining/tutorial_6_slam.ipynb", - "path": "scripts/chapter_3_search_chaining/tutorial_6_slam.py", - "summary": "You are now familiar with pipelines, in particular how we use them to break-down the lens modeling procedure to provide more efficient and reliable model-fits. In the previous tutorials, you learnt how to write your own pipelines, which can fit whatever lens model is of particular interest to your scientific study.", - "title": "Tutorial 6: SLaM" + "notebook": "notebooks/chapter_3_pixelizations/tutorial_10_fit_problems.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_10_fit_problems.py", + "summary": "To begin, make sure you have read tutorials 4 and 5 carefully, as a clear understanding of how the Bayesian evidence works is key to understanding the adaption tutorials that close this chapter!", + "title": "Tutorial 10: Fit Problems" }, { "contents": [ @@ -383,10 +424,10 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_10_brightness_adaption.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_10_brightness_adaption.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_11_brightness_adaption.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_11_brightness_adaption.py", "summary": "In the previous tutorial we motivated our need to adapt the pixelization to the source's morphology, such that source pixels congregates in the source's brightest regions regardless of where the source is located in the source-plane.", - "title": "Tutorial 10: Brightness Adaption" + "title": "Tutorial 11: Brightness Adaption" }, { "contents": [ @@ -396,10 +437,10 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_11_adaptive_regularization.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_11_adaptive_regularization.py", - "summary": "In tutorial 7, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source demand different levels of regularization, motivating a regularization scheme which adapts to the reconstructed source's surface brightness.", - "title": "Tutorial 11: Adaptive Regularization" + "notebook": "notebooks/chapter_3_pixelizations/tutorial_12_adaptive_regularization.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_12_adaptive_regularization.py", + "summary": "In tutorial 10, we discussed why the `Constant` regularization scheme was sub-optimal. Different regions of the source demand different levels of regularization, motivating a regularization scheme which adapts to the reconstructed source's surface brightness.", + "title": "Tutorial 12: Adaptive Regularization" }, { "contents": [ @@ -408,10 +449,10 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_1_pixelizations.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_1_pixelizations.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_1_pixelizations.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_1_pixelizations.py", "summary": "In the previous chapters, we used light profiles to model the light of a strong lens's source galaxy, where the light profile was an analytic description of how the luminosity varies as a function of radius. In this chapter, we are instead going to reconstruct the source's light on a pixel-grid, and in this tutorial we will learn how to create a source-plane pixelization.", - "title": "Tutorial 1: pixelizations" + "title": "Tutorial 1: Pixelizations" }, { "contents": [ @@ -421,9 +462,9 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_2_mappers.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_2_mappers.py", - "summary": "In the previous tutorial, we used a pixelization to create made a `Mapper`. However, it was not clear what a `Mapper` does, why it was called a mapper and whether it was mapping anything at all!", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_2_mappers.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_2_mappers.py", + "summary": "In the previous tutorial, we used a pixelization to create a `Mapper`. However, it was not clear what a `Mapper` does, why it was called a mapper and whether it was mapping anything at all!", "title": "Tutorial 2: Mappers" }, { @@ -437,8 +478,8 @@ "cross_refs": [ "/imaging/features/pixelization/likelihood_function.ipynb" ], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_3_inversions.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_3_inversions.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_3_inversions.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_3_inversions.py", "summary": "In the previous two tutorials, we introduced:", "title": "Tutorial 3: Inversions" }, @@ -452,11 +493,45 @@ "Detailed Description" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_4_bayesian_regularization.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_4_bayesian_regularization.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_4_bayesian_regularization.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_4_bayesian_regularization.py", "summary": "So far, we have:", "title": "Tutorial 4: Bayesian Regularization" }, + { + "contents": [ + "Initial Setup", + "Mesh Shape", + "Ray Tracing", + "Border Relocation", + "Source Pixel Centres", + "Interpolation", + "Mapper", + "Mapping Matrix", + "Blurred Mapping Matrix", + "Data Vector", + "Curvature Matrix", + "Unregularized Solve", + "Regularization Matrix", + "Source Reconstruction", + "Image Reconstruction", + "Likelihood Function", + "Chi Squared", + "Regularization Term", + "Complexity Terms", + "Noise Normalization Term", + "Log Evidence", + "Fit", + "Wrap Up" + ], + "cross_refs": [ + "/imaging/features/pixelization/likelihood_function.ipynb" + ], + "notebook": "notebooks/chapter_3_pixelizations/tutorial_5_bayesian_formalism.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_5_bayesian_formalism.py", + "summary": "In tutorials 1 to 4, we built an intuition for how pixelized source reconstruction works: pixelizations place a pixel-grid in the source-plane, mappers pair source-pixels with image-pixels, inversions solve for the source-pixel fluxes that best fit the data, and regularization smooths the solution within a Bayesian framework.", + "title": "Tutorial 5: Bayesian Formalism" + }, { "contents": [ "Initial Setup", @@ -464,10 +539,10 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_5_borders.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_5_borders.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_6_borders.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_6_borders.py", "summary": "In the previous tutorials, the source-plane pixel grid perfectly mapped over the traced image-pixel $(y,x)$ coordinates in the source plane. If these pixels mapped to a larger area in the source plane, its pixel-grid would automatically increase its size so as to cover every source-plane coordinate.", - "title": "Tutorial 5: Borders" + "title": "Tutorial 6: Borders" }, { "contents": [ @@ -478,50 +553,173 @@ "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_6_lens_modeling.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_6_lens_modeling.py", - "summary": "When modeling complex source's with parametric profiles, we quickly entered a regime where our non-linear search was faced with a parameter space of dimensionality N=20+ parameters. This made the model-fitting inefficient and likely to infer a local maxima.", - "title": "Tutorial 6: Lens Modeling" + "notebook": "notebooks/chapter_3_pixelizations/tutorial_7_lens_modeling.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_7_lens_modeling.py", + "summary": "When modeling complex sources with parametric profiles, we quickly entered a regime where our non-linear search was faced with a parameter space of dimensionality N=20+ parameters. This made the model-fitting inefficient and likely to infer a local maxima.", + "title": "Tutorial 7: Lens Modeling" }, { "contents": [ "Initial Setup", - "Advantages and Disadvatanges", + "Advantages and Disadvantages", "Image Mesh", "Regularization", "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_7_adaptive_pixelization.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py", "summary": "In this tutorial we will introduce a new `Pixelization` object, which uses an `Overlay` image-mesh and a `Delaunay` mesh.", - "title": "Tutorial 7: Adaptive Pixelization" + "title": "Tutorial 8: Adaptive Pixelization" }, { "contents": [], "cross_refs": [ "/imaging/features/pixelization/modeling.py" ], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_8_model_fit.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_8_model_fit.py", + "notebook": "notebooks/chapter_3_pixelizations/tutorial_9_model_fit.ipynb", + "path": "scripts/chapter_3_pixelizations/tutorial_9_model_fit.py", "summary": "You should now perform lens modeling using a pixelization, which is described fully in the example:", - "title": "Tutorial 8: Model-Fit" + "title": "Tutorial 9: Model-Fit" }, { "contents": [ "Initial Setup", + "Light Versus Mass", "Mask", - "Simulator", - "Fitting", - "Fit Problems", - "Discussion", + "Approach 1 Noise Scaling", + "Noise Scaling Fit", + "Approach 2 Extra Galaxies Model", + "Extra Galaxy Centres", + "Extra Galaxies Fit", + "Which Approach When", + "Wrap Up" + ], + "cross_refs": [], + "notebook": "notebooks/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.ipynb", + "path": "scripts/chapter_4_scaling_up_lensing/tutorial_1_extra_galaxies.py", + "summary": "Welcome to chapter 4 of **HowToLens**, where we scale up lens modeling beyond a single lens galaxy.", + "title": "Tutorial 1: Extra Galaxies" + }, + { + "contents": [ + "Initial Setup", + "Mask", + "Over Sampling", + "Model", + "Fixing the Mass Centres", + "Model Fit", + "Result", + "Mass Degeneracies", + "No Shared Halo", + "Three Lens Galaxies", "Wrap Up" ], "cross_refs": [], - "notebook": "notebooks/chapter_4_pixelizations/tutorial_9_fit_problems.ipynb", - "path": "scripts/chapter_4_pixelizations/tutorial_9_fit_problems.py", - "summary": "To begin, make sure you have read the `introduction` file carefully, as a clear understanding of how the Bayesian evidence works is key to understanding this chapter!", - "title": "Tutorial 9: Fit Problems" + "notebook": "notebooks/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.ipynb", + "path": "scripts/chapter_4_scaling_up_lensing/tutorial_2_multi_galaxy.py", + "summary": "In the previous tutorial, we learned how to deal with extra galaxies near a strong lens \u2014 nuisance objects whose light contaminates the data but which play no meaningful role in the lensing itself. We removed their emission from the analysis, or gave them a heavily restricted model, and the single dominant lens galaxy remained the star of the show.", + "title": "Tutorial 2: Multi-Galaxy Lenses" + }, + { + "contents": [ + "Mass Follows Light", + "Initial Setup", + "Mask", + "Measured Luminosities", + "The Anchor", + "Over Sampling", + "Light Via MGE", + "Scaling Relation", + "Model", + "Parameter Counts", + "Scaling To Many Galaxies", + "Model Fit", + "Results", + "Limitations", + "Lens Environments", + "Wrap Up" + ], + "cross_refs": [], + "notebook": "notebooks/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.ipynb", + "path": "scripts/chapter_4_scaling_up_lensing/tutorial_3_scaling_relation.py", + "summary": "The previous tutorial ended on a warning: every deflector we add to a lens model brings its own free parameters. Two galaxies were manageable, but each one cost us a mass profile's worth of dimensions, and the arithmetic only gets worse. A group-scale lens may have ten member galaxies, a cluster hundreds. If every member keeps its own free mass, the parameter space explodes \u2014 a 100-galaxy cluster with 5 free mass parameters per galaxy is a 500-dimensional model, which no non-linear search can sample and no dataset can constrain anyway.", + "title": "Tutorial 3: Scaling Relations" + }, + { + "contents": [ + "Initial Setup", + "Mask", + "Galaxy Centres", + "The dPIE Profile", + "Fitting a Group", + "A Group Halo?", + "Model Fit", + "Scaling Relation Members", + "The Group Scale Sweet Spot", + "Wrap Up" + ], + "cross_refs": [], + "notebook": "notebooks/chapter_4_scaling_up_lensing/tutorial_4_group_scale.ipynb", + "path": "scripts/chapter_4_scaling_up_lensing/tutorial_4_group_scale.py", + "summary": "In the previous tutorials we took our first steps beyond the single lens galaxy: we included extra galaxies near the lens in the model, we modeled systems where two or more galaxies of comparable mass share the lensing, and we introduced scaling relations, which tie the mass of a galaxy to its light so that adding more galaxies to a model does not mean adding more free parameters.", + "title": "Tutorial 4: Group Scale" + }, + { + "contents": [ + "Multi-Plane Ray Tracing", + "Dataset", + "Point Source Modeling", + "Point Datasets", + "The CSV Interface", + "Point Solver", + "Model", + "Analysis + Factor Graph", + "Search", + "Model Fit", + "Results", + "Customization", + "Wrap Up" + ], + "cross_refs": [ + "autolens_workspace/scripts/guides/point_source_pairing.py", + "csv_api.py", + "fit.py", + "likelihood_function.py" + ], + "notebook": "notebooks/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.ipynb", + "path": "scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py", + "summary": "Throughout this chapter we have been climbing a ladder of scale: from a single lens galaxy with an extra galaxy nearby, to multi-galaxy lenses, to galaxy groups whose members share a common dark matter halo.", + "title": "Tutorial 5: Cluster Scale" + }, + { + "contents": [ + "Shear Catalogues", + "Mass Scales", + "Ray Tracing", + "Source Galaxy Positions", + "Simulate", + "Visualize", + "Mass Map", + "Fitting", + "Model Fit", + "Result", + "Joint Strong and Weak Lensing", + "Wrap Up" + ], + "cross_refs": [ + "scripts/simulator/weak_lensing.py", + "start_here.py", + "weak/fit.py", + "weak/likelihood_function.py", + "weak/modeling.py", + "weak/simulator.py", + "weak/start_here.py" + ], + "notebook": "notebooks/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.ipynb", + "path": "scripts/chapter_4_scaling_up_lensing/tutorial_6_weak_lensing.py", + "summary": "Every tutorial in this series so far \u2014 indeed, every fit performed in all four chapters of **HowToLens** \u2014 has been a *strong* lensing analysis. Strong lensing occurs when a background galaxy lies so close (in projection) to a foreground mass that its light is bent into multiple images, arcs or a complete Einstein ring. These dramatic features are what we simulated, fitted and modeled, from the single galaxy-scale lenses of chapters 1 and 2 up to the group-scale and cluster-scale systems earlier in this chapter.", + "title": "Tutorial 6: Weak Lensing" }, { "contents": [ @@ -535,6 +733,98 @@ "summary": "Up to now, we've always used the non-linear search Nautilus and not considered the input parameters that control its sampling. In this tutorial, we'll consider how we can change these setting to balance finding the global maxima solution with fast run time.", "title": "Tutorial: Alternative Searches" }, + { + "contents": [ + "Dataset Paths", + "Redshifts", + "Galaxy Centres", + "Grids", + "Main Lens Galaxies", + "Scaling Member Galaxies", + "Host Dark Matter Halo", + "Source Galaxies", + "Ray Tracing", + "Point Solver", + "Point Datasets", + "Combined CSV", + "Scaling Galaxies CSV", + "Model CSVs", + "Tracer json", + "Imaging", + "Visualize" + ], + "cross_refs": [ + "/cluster/csv_api.py", + "/cluster/simulator.ipynb" + ], + "notebook": "notebooks/simulator/cluster.ipynb", + "path": "scripts/simulator/cluster.py", + "summary": "This script simulates a strong lens on the 'cluster' scale: 2 main lens galaxies (a brightest cluster galaxy and a satellite), 10 lower-mass cluster member galaxies on a luminosity-mass scaling relation, a cluster-scale dark matter halo not tied to any individual galaxy, and 2 multiply-imaged background source galaxies at *different* redshifts (z = 1.0 and z = 2.0) \u2014 a genuine multi-plane lens.", + "title": "Simulator: Cluster" + }, + { + "contents": [ + "Dataset Paths", + "Grid", + "Galaxy Centres", + "Over Sampling", + "PSF / Simulator", + "Main Lens Galaxy", + "Member Galaxies", + "Source Galaxy", + "Ray Tracing", + "Output", + "Visualize", + "Tracer json", + "Centre JSON Files", + "Positions" + ], + "cross_refs": [ + "/group/simulator.ipynb" + ], + "notebook": "notebooks/simulator/group.ipynb", + "path": "scripts/simulator/group.py", + "summary": "This script simulates `Imaging` of a 'group-scale' strong lens, which is used in chapter 4 of the **HowToLens** lectures to illustrate lens modeling at the group scale.", + "title": "Simulator: Group Scale Lens" + }, + { + "contents": [ + "Dataset Paths", + "Simulate", + "Ray Tracing", + "Output", + "Visualize", + "Tracer json" + ], + "cross_refs": [ + "/interferometer/simulator.ipynb" + ], + "notebook": "notebooks/simulator/interferometer.ipynb", + "path": "scripts/simulator/interferometer.py", + "summary": "This script simulates `Interferometer` data of a 'galaxy-scale' strong lens, as would be observed by a radio or sub-mm interferometer like ALMA or the JVLA.", + "title": "Simulator: Interferometer" + }, + { + "contents": [ + "Model", + "Dataset Paths", + "Simulate", + "Ray Tracing", + "Extra Galaxy", + "Output", + "Mask Extra Galaxy", + "Visualize", + "Tracer json", + "Extra Galaxy Centre" + ], + "cross_refs": [ + "/imaging/simulator.ipynb" + ], + "notebook": "notebooks/simulator/lens_extra_galaxy.ipynb", + "path": "scripts/simulator/lens_extra_galaxy.py", + "summary": "This script simulates `Imaging` of a 'galaxy-scale' strong lens which is identical to the `lens_sersic` dataset simulated for chapter 2 (lens light + mass + lensed source), but with one extra galaxy located a few arc-seconds from the lens galaxy.", + "title": "Simulator: Lens With Extra Galaxy" + }, { "contents": [ "Model", @@ -572,6 +862,24 @@ "summary": "This script simulates `Imaging` of a 'galaxy-scale' lens where there are two lens galaxies, each with their own light and mass profiles.", "title": "Simulator: Lens x2" }, + { + "contents": [ + "Model", + "Dataset Paths", + "Simulate", + "Ray Tracing", + "Output", + "Visualize", + "Tracer json" + ], + "cross_refs": [ + "/imaging/simulator.ipynb" + ], + "notebook": "notebooks/simulator/lens_x3.ipynb", + "path": "scripts/simulator/lens_x3.py", + "summary": "This script simulates `Imaging` of a 'galaxy-scale' lens where there are three lens galaxies, each with their own light and mass profiles, which all contribute significantly to the lensing of a single background source.", + "title": "Simulator: Lens x3" + }, { "contents": [ "Model", @@ -631,5 +939,22 @@ "path": "scripts/simulator/source_complex.py", "summary": "This script simulates `Imaging` of a 'galaxy-scale' strong lens where the source galaxy's light is more complex than other examples, being composed of 4 Sersics.", "title": "Simulator: Source Complex" + }, + { + "contents": [ + "Dataset Paths", + "Ray Tracing", + "Source Positions", + "Simulator", + "Output", + "Visualize" + ], + "cross_refs": [ + "/weak/simulator.ipynb" + ], + "notebook": "notebooks/simulator/weak_lensing.ipynb", + "path": "scripts/simulator/weak_lensing.py", + "summary": "This script simulates a weak gravitational lensing shear catalogue. Unlike the imaging simulators (which produce a 2D image of the lensed source) the weak-lensing simulator produces a *catalogue* of (gamma_2, gamma_1) shear measurements at the (y, x) positions of a population of background source galaxies.", + "title": "Simulator: Weak Lensing" } ] From ad8c90dd98aa7ebedcac97f24a57804882f480b5 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 13:35:37 +0000 Subject: [PATCH 20/22] build: regenerate notebooks with setup_notebook activated With the PyAutoHands uncomment fix, generated notebooks now activate 'from autolens import setup_notebook; setup_notebook()' so they run from the workspace root (Colab and local Jupyter alike). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BxKfSZisjnEn91LRGkN4SU --- markdown/README.md | 4 +- .../tutorial_1_grids_and_galaxies.md | 50 +- .../tutorial_1_grids_and_galaxies_15_0.png | Bin 25068 -> 7213 bytes .../tutorial_1_grids_and_galaxies_19_0.png | Bin 35865 -> 10509 bytes .../tutorial_1_grids_and_galaxies_29_0.png | Bin 32039 -> 8762 bytes .../tutorial_1_grids_and_galaxies_33_0.png | Bin 37162 -> 9757 bytes .../tutorial_1_grids_and_galaxies_37_0.png | Bin 35405 -> 9270 bytes .../tutorial_1_grids_and_galaxies_43_0.png | Bin 18315 -> 5325 bytes .../tutorial_1_grids_and_galaxies_45_0.png | Bin 112575 -> 28017 bytes .../tutorial_1_grids_and_galaxies_51_0.png | Bin 30685 -> 8565 bytes .../tutorial_1_grids_and_galaxies_53_0.png | Bin 45671 -> 14962 bytes .../tutorial_1_grids_and_galaxies_55_0.png | Bin 87015 -> 21717 bytes .../tutorial_1_grids_and_galaxies_57_0.png | Bin 17818 -> 6040 bytes .../tutorial_1_grids_and_galaxies_5_0.png | Bin 27241 -> 7787 bytes .../tutorial_1_grids_and_galaxies_63_0.png | Bin 25884 -> 7610 bytes .../tutorial_1_grids_and_galaxies_65_0.png | Bin 65911 -> 28873 bytes .../tutorial_1_grids_and_galaxies_67_0.png | Bin 86512 -> 22044 bytes .../tutorial_1_grids_and_galaxies_71_0.png | Bin 24732 -> 7318 bytes .../tutorial_2_ray_tracing.md | 27 +- .../tutorial_2_ray_tracing_15_0.png | Bin 39428 -> 9962 bytes .../tutorial_2_ray_tracing_15_1.png | Bin 40861 -> 10368 bytes .../tutorial_2_ray_tracing_19_0.png | Bin 25078 -> 7678 bytes .../tutorial_2_ray_tracing_19_1.png | Bin 41872 -> 10271 bytes .../tutorial_2_ray_tracing_21_0.png | Bin 16070 -> 5001 bytes .../tutorial_2_ray_tracing_23_0.png | Bin 66434 -> 17565 bytes .../tutorial_2_ray_tracing_23_1.png | Bin 66861 -> 17214 bytes .../tutorial_2_ray_tracing_27_0.png | Bin 23969 -> 7137 bytes .../tutorial_2_ray_tracing_27_1.png | Bin 57366 -> 26258 bytes .../tutorial_2_ray_tracing_31_0.png | Bin 26825 -> 8078 bytes .../tutorial_2_ray_tracing_37_0.png | Bin 35239 -> 10693 bytes .../tutorial_2_ray_tracing_39_0.png | Bin 281232 -> 77801 bytes .../tutorial_2_ray_tracing_43_0.png | Bin 23969 -> 7137 bytes .../tutorial_2_ray_tracing_43_1.png | Bin 54084 -> 25282 bytes .../tutorial_3_more_ray_tracing.md | 72 +- .../tutorial_3_more_ray_tracing_11_0.png | Bin 27026 -> 6619 bytes .../tutorial_3_more_ray_tracing_11_1.png | Bin 102637 -> 36097 bytes .../tutorial_3_more_ray_tracing_13_0.png | Bin 218827 -> 25491 bytes .../tutorial_3_more_ray_tracing_15_0.png | Bin 226895 -> 26267 bytes .../tutorial_3_more_ray_tracing_17_0.png | Bin 794604 -> 121533 bytes .../tutorial_3_more_ray_tracing_17_1.png | Bin 251394 -> 33901 bytes .../tutorial_3_more_ray_tracing_31_0.png | Bin 0 -> 10218 bytes .../tutorial_3_more_ray_tracing_33_0.png | Bin 0 -> 25405 bytes .../tutorial_3_more_ray_tracing_35_0.png | Bin 64572 -> 25405 bytes .../tutorial_3_more_ray_tracing_37_0.png | Bin 67519 -> 0 bytes .../tutorial_3_more_ray_tracing_39_0.png | Bin 67519 -> 0 bytes .../tutorial_4_point_sources.md | 437 ++++++++++- .../tutorial_4_point_sources_13_0.png | Bin 0 -> 14039 bytes .../tutorial_4_point_sources_5_0.png | Bin 0 -> 10734 bytes .../tutorial_5_lensing_formalism.md | 710 +++++++++++++++++- .../tutorial_5_lensing_formalism_15_0.png | Bin 0 -> 7135 bytes .../tutorial_5_lensing_formalism_15_1.png | Bin 0 -> 31435 bytes .../tutorial_5_lensing_formalism_19_0.png | Bin 0 -> 19016 bytes .../tutorial_5_lensing_formalism_21_0.png | Bin 0 -> 10889 bytes .../tutorial_5_lensing_formalism_21_1.png | Bin 0 -> 11477 bytes .../tutorial_5_lensing_formalism_23_0.png | Bin 0 -> 11172 bytes .../tutorial_5_lensing_formalism_31_0.png | Bin 0 -> 8707 bytes .../tutorial_5_lensing_formalism_35_0.png | Bin 0 -> 15819 bytes .../tutorial_5_lensing_formalism_41_0.png | Bin 0 -> 11384 bytes .../tutorial_5_lensing_formalism_7_0.png | Bin 0 -> 12014 bytes .../tutorial_8_summary.md | 30 +- .../tutorial_8_summary_11_0.png | Bin 56594 -> 14165 bytes .../tutorial_8_summary_7_0.png | Bin 39873 -> 10065 bytes .../tutorial_8_summary_9_0.png | Bin 32324 -> 8680 bytes .../tutorial_8_summary_9_1.png | Bin 47115 -> 11561 bytes .../tutorial_0_visualization.ipynb | 2 +- .../tutorial_1_grids_and_galaxies.ipynb | 2 +- .../tutorial_2_ray_tracing.ipynb | 2 +- .../tutorial_3_more_ray_tracing.ipynb | 2 +- .../tutorial_4_point_sources.ipynb | 2 +- .../tutorial_5_lensing_formalism.ipynb | 2 +- .../tutorial_6_data.ipynb | 2 +- .../tutorial_7_fitting.ipynb | 2 +- .../tutorial_8_summary.ipynb | 2 +- .../tutorial_10_prior_passing.ipynb | 2 +- .../tutorial_1_non_linear_search.ipynb | 2 +- .../tutorial_2_practicalities.ipynb | 2 +- .../tutorial_3_realism_and_complexity.ipynb | 2 +- .../tutorial_4_dealing_with_failure.ipynb | 2 +- .../tutorial_5_linear_profiles.ipynb | 2 +- .../tutorial_6_masking_and_positions.ipynb | 2 +- .../tutorial_7_results.ipynb | 2 +- .../tutorial_9_search_chaining.ipynb | 2 +- .../tutorial_10_fit_problems.ipynb | 2 +- .../tutorial_11_brightness_adaption.ipynb | 2 +- .../tutorial_12_adaptive_regularization.ipynb | 2 +- .../tutorial_1_pixelizations.ipynb | 2 +- .../tutorial_2_mappers.ipynb | 2 +- .../tutorial_3_inversions.ipynb | 2 +- .../tutorial_4_bayesian_regularization.ipynb | 2 +- .../tutorial_5_bayesian_formalism.ipynb | 2 +- .../tutorial_6_borders.ipynb | 2 +- .../tutorial_7_lens_modeling.ipynb | 2 +- .../tutorial_8_adaptive_pixelization.ipynb | 2 +- .../tutorial_1_extra_galaxies.ipynb | 2 +- .../tutorial_2_multi_galaxy.ipynb | 2 +- .../tutorial_3_scaling_relation.ipynb | 2 +- .../tutorial_4_group_scale.ipynb | 2 +- .../tutorial_5_cluster_scale.ipynb | 2 +- .../tutorial_6_weak_lensing.ipynb | 2 +- .../chapter_optional/tutorial_searches.ipynb | 2 +- notebooks/simulator/cluster.ipynb | 2 +- notebooks/simulator/group.ipynb | 2 +- notebooks/simulator/interferometer.ipynb | 2 +- notebooks/simulator/lens_extra_galaxy.ipynb | 2 +- notebooks/simulator/lens_sersic.ipynb | 2 +- notebooks/simulator/no_lens_light.ipynb | 2 +- .../simulator/no_lens_light__mass_sis.ipynb | 2 +- notebooks/simulator/source_complex.ipynb | 2 +- notebooks/simulator/weak_lensing.ipynb | 2 +- 109 files changed, 1287 insertions(+), 133 deletions(-) create mode 100644 markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_31_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_33_0.png delete mode 100644 markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_37_0.png delete mode 100644 markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_39_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_4_point_sources_files/tutorial_4_point_sources_13_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_4_point_sources_files/tutorial_4_point_sources_5_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_15_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_15_1.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_19_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_21_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_21_1.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_23_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_31_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_35_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_41_0.png create mode 100644 markdown/chapter_1_introduction/tutorial_5_lensing_formalism_files/tutorial_5_lensing_formalism_7_0.png diff --git a/markdown/README.md b/markdown/README.md index 9811349..214f310 100644 --- a/markdown/README.md +++ b/markdown/README.md @@ -5,11 +5,11 @@ Every page below is the corresponding example script **fully executed**, rendere - [Tutorial 0: Visualization](chapter_1_introduction/tutorial_0_visualization.md) — from `scripts/chapter_1_introduction/tutorial_0_visualization.py` - [HowToLens: Introduction](chapter_1_introduction/tutorial_1_grids_and_galaxies.md) — from `scripts/chapter_1_introduction/tutorial_1_grids_and_galaxies.py` - [Tutorial 2: Ray Tracing](chapter_1_introduction/tutorial_2_ray_tracing.md) — from `scripts/chapter_1_introduction/tutorial_2_ray_tracing.py` -- [Tutorial 5: More Ray Tracing](chapter_1_introduction/tutorial_3_more_ray_tracing.md) — from `scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py` +- [Tutorial 3: More Ray Tracing](chapter_1_introduction/tutorial_3_more_ray_tracing.md) — from `scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py` - [Tutorial 4: Point Sources](chapter_1_introduction/tutorial_4_point_sources.md) — from `scripts/chapter_1_introduction/tutorial_4_point_sources.py` - [Tutorial 5: Lensing Formalism](chapter_1_introduction/tutorial_5_lensing_formalism.md) — from `scripts/chapter_1_introduction/tutorial_5_lensing_formalism.py` - [Tutorial 6: Data](chapter_1_introduction/tutorial_6_data.md) — from `scripts/chapter_1_introduction/tutorial_6_data.py` - [Tutorial 7: Fitting](chapter_1_introduction/tutorial_7_fitting.md) — from `scripts/chapter_1_introduction/tutorial_7_fitting.py` -- [Tutorial 9: Summary](chapter_1_introduction/tutorial_8_summary.md) — from `scripts/chapter_1_introduction/tutorial_8_summary.py` +- [Tutorial 8: Summary](chapter_1_introduction/tutorial_8_summary.md) — from `scripts/chapter_1_introduction/tutorial_8_summary.py` These pages are regenerated manually by PyAutoHands's `generate_markdown.py` when a curated script changes. diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies.md b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies.md index 75e64eb..ca3c06e 100644 --- a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies.md +++ b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies.md @@ -60,13 +60,17 @@ __Contents__ - **One Dimension Projection:** We often want to calculative 1D quantities of a light profile, for example to plot how its light. - **Galaxies:** Galaxies are collections of light profiles that represent a galaxy's luminous emission. - **Units:** By assuming a redshift for a galaxy we can convert its quantities from arcseconds to kiloparsecs. +- **Wrap Up:** Summary of the script and next steps. +- **Advanced Topics:** Optional reference material for expert users, not needed on a first read. +- **Other Unit Conversion:** Other unit conversions a galaxy's redshift enables (e.g. AB magnitudes). +- **Over Sampling:** The adaptive over-sampling scheme used to evaluate light profiles accurately. ```python from autolens import jax_wrapper # Sets JAX environment before other imports -from autolens import setup_notebook; setup_notebook() +# from autolens import setup_notebook; setup_notebook() import matplotlib.pyplot as plt import numpy as np @@ -76,13 +80,24 @@ import autolens as al import autolens.plot as aplt ``` - 2026-07-11 18:13:08,002 - matplotlib.font_manager - INFO - Failed to extract font properties from /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: Can not load face (unknown file format; error code 0x2) - - - 2026-07-11 18:13:08,198 - matplotlib.font_manager - INFO - generated new fontManager - - - Working Directory has been set to `HowToLens` + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) __Grids__ @@ -108,7 +123,7 @@ grid = al.Grid2D.uniform( shape_native=( 101, 101, - ), # The dimensions of the grid, which here is 100 x 100 pixels. + ), # The dimensions of the grid, which here is 101 x 101 pixels. pixel_scales=0.1, # The conversion factor between pixel units and arc-seconds. ) ``` @@ -202,7 +217,7 @@ We can shift the grid to a new center, (y_c, x_c), by subtracting this center fr ```python -centre = (0.3, 0.5) # Shifting the grid to be centered at y=1.0", x=2.0". +centre = (0.3, 0.5) # Shifting the grid to be centered at y=0.3", x=0.5". grid_shifted = grid grid_shifted[:, 0] = grid_shifted[:, 0] - centre[0] # Shift in y-direction. @@ -477,9 +492,9 @@ print(image.slim[1]) ``` Intensity of pixel 0: - 0.01336649114209766 + 0.013366491142097661 Intensity of pixel 1: - 0.014020623587576737 + 0.014020623587576735 To visualize the light profile's image, we use `aplt.plot_array`. @@ -668,9 +683,9 @@ print("...") ``` Intensity of `Grid2D` pixel 0: - 0.024894917164848044 + 0.02489491716484805 Intensity of `Grid2D` pixel 1: - 0.025428546280541572 + 0.025428546280541576 Intensity of `Grid2D` pixel 2: 0.02596640780160061 ... @@ -927,9 +942,4 @@ For a new user, the details of over-sampling are not important, therefore just b adaptive over sampling scheme with high accuracy across all use cases. Once you are more experienced, you should read up on over-sampling in more detail via -the `autolens_workspace/*/guides/over_sampling.ipynb` notebook. - - -```python - -``` +the `autolens_workspace/*/guides/advanced/over_sampling.ipynb` notebook. diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_15_0.png b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_15_0.png index a51d3a449d3ee2835011115d459cb0c26ebbc649..43ab5c067006bf1307c18c23ad9f0d8ebdec525c 100644 GIT binary patch literal 7213 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

X0dL6OSZfzHP}A+ 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

$6wg=e)eHuXUFBJTnaq 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 qmqh}!#S|5M8Yj^I+dtgXAA!0)I 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 literal 32039 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⪚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 UjACv7!{(Sy_0M)rX^8f$< literal 37162 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

9Ou&@3T{@N+>EJr_$cvdmcbsj6DXF&wfMMA{reT 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 literal 35405 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

?v&Qqt~{pn-N_>3?`Jj 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 diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_51_0.png b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_51_0.png index 1c45883fda84064866fde8e91838402d6caf7e64..0ad7f7270342c4a6153a654eb1f56a81f10b105d 100644 GIT binary patch literal 8565 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 literal 45671 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 literal 87015 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 BKpOx6 diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_57_0.png b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_57_0.png index c4da7219d6e872bd79ad500e6e1fbe223ed4a096..e9e7b6f4189bd94c4a74003f65ff37943a0b74d1 100644 GIT binary patch literal 6040 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 YwM6M5>+**vYN^CdNQ%TA`|Za60hS9uqyPW_ diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_63_0.png b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_63_0.png index 394fd231d872d642f5cbea8916f4dbb6f280fb6a..6036f1ca4f45f099eb94fa8e8bec5ccf72197719 100644 GIT binary patch literal 7610 zcmeHMXH-+$wnha(iik)TB1J(EgCIpIIVwfE(tDJuRFMv{IZ9IjIdl;rN|7dTL;=gKlGrShEsJlx`8^c{RnGV%ytXoPT7fBPR3)tf9`~z+R0{JKgY=9&?%XL z+(}}Cd``~K&+{3~ipDy&wzeW)>4=Dk7!}h(#>b(1CwAl*2k97PWo2&`Fb)n5nwXfd zv$I1tnXiqxf|1I!8S|Cp9 zsS_2|Au3Nj9sT|PrPu#>=>JiI6hGG`Dk`q~>dMy)e1}&?7t-@@z73m*n)y*sP&({* zK9TjXUhSchZyqn!AME=G88Y&}ZT+J0=KA<9u$;g z(Y4VhNGv3l!>Gfk>*Hm2>LsRyYH_AJAtz4K;e!#-xY{@^s3_DGr*QnRDFcfkJ{U7- zP%p#~zgzhPYY0d(t{mZtt^wDkd3bd{lGUY~3^XUQ-j%@ohtxIZ-RKHw}G6m!72oCk`af>m9w; zgIe98v2lOSXN6|gjUw3Tb}*9Xf9}M+=0H>AZx&440`L#^-dMi^RkM|ZNkU; zk7ut$=WL$72PF!R+wejlG8FD8>J+L4BScoycqoCX65ukVV>Tt`=a5Icih>5> zgR@tI@A=!C8?5C#h*Jb-uU&;QJ*#$p6USz<=dybxoHwg+ThCW(GWR~5*;S!mFVS%| z)qf-QO%d5{)?YzLFO%nGLJrGX;s8j`G_ENObB8hPl|fQW!i$|k<~OH?r6xF`-Ll%k4o6Zx8MUJF-oY@ zn`f=P7T+uY<6m#MOht;dpN06ucl#G4M>c1_b=GY~xcHk?49?jExj!^{-r1(^$=NP< zxldAqq-aLew_`KP;x?;Uk$W(vFtk-V-C$>;+!-Ba%EwzK#Hc&>)k=Pxc&pu~ACn#a zfl*N*X|_SuLX`jIdMu`-R=^mPg2sAqgFf?FhL5;4mUdO#m14cq7t`#3kW&t51^X&F zRx~L~P^Skd{Qkhf%{W*)6rtLs%Dhp~9JE>Eag{DDGMx%Yb z1znm##ELmVT(?SOQ>x6s)8q##5P>0|6}-@k7gYKs7x5gJS-Ba&h?>Np`&YEM>Z3_> z#>y@tyL4V~iXyS-Lbe*g) z!6S4iQb8lKJ)+mUs&c;S6*g25rtU1ARlRA z%*=X+T(Nt;k`^y0wl1Y&nb(lllT>m8k?_EUjtNDQhJe+sUC0x)css@aj@iiLGESh8 z0VV&XN60ZR=)Ul6saZ`62vAC*wXbUQ<2`F+;mpBzz9sU=F<8C^T%@&;_Qk4lah7fB z@v^JnkZBI=EbFA(#9w|lFg-WyP6y!E8;~bEeED4g@BuAc7N~(}LY#ZYOQat=%B;pV z42zuoWmLFQkVYGk$1C5t8Y+A7HAIu9l9)ZTBD{+|j-w`LiGn_Sj?gbQP}8NLhVtf2}qC>W4L|xMzT+HbZ<0i+?Y|ih82uw8hDBT zX1=zc48QwZU$E~C$JVI0gXLq-suM`)w2Ec(9suj$Gg^*8zuQz%DdLpz3qzPDV_ot) zCTLN*&`Vd1gMc`UDrN$(sSF1p3C~c1$n)gR5uNMG(_G|p8v>cl2~0%sk^nz@GjdRsAlE(f1vxx{U;3>s!@cU9)2h%E=Oa_ z{(JsEX`C_GvVY!L%6-}54&_7Wr(fsf1z^nuQ|m~>>$hv zUh|X>g~RE91_lPd$d8QHoGpcFlrnHj@YYgN8@w}s8#MXJ>Mp5i@)XI1ag>3lDjD4) z44dQ;`jKHr69=F>WjqV-=p(f)_HX@;fabkb$Chp^lR9Yt{K#=|n}r$9hps?Sau1Qi z-6=`x=ZS9FkdY*zY5jEjnZHD!z!X}LZ8~tRYk3f!CQ3q?VF)O#8JA;ILs4z(3ob

vj2k=!i@vlC{M8?i`Yth|qU>o9P!6uV5!r#RRk`FqS@xv*C;{W ziDZ+cdp_%TUXN7QErq&EQi%!tPmB<&l3dWVafTx>&k|` z2D?vgDZ|bz>n=-rJMaB!Ub`sRjH*F+H;8H@A`XEtO0jaf{|Zv zbh1XjW9_%AJ?af#"Ps=vJfYlK77^vnscp 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 v0FJ0peto5*ULJ8^W?t(r5j>J literal 25884 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 diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_65_0.png b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_65_0.png index 140ae5b22e428fa332f6848fe476c6da9b52cb78..a97d7e6c158e1d1851afaa9d948741a5acc773de 100644 GIT binary patch literal 28873 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≪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

)sfOFv};WHt81!KCG0`d*pU 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

-5ou~ z4`#cM95!Old$aAum4NJ~O-bR!Z%Gtj2l3R-QF7Oq>sFIt!IpI@0X8V)^oCirNoux2 zf_UYEBy|-D7j)cl&gwvJN}Df-!(mCQ*qc!-bpo_j1`|@Z$IkrVNd2v;s}j3m%->?acl|*yxbuZUV0zyj9nOr-%z5gXodK4 z2kO^&++i!U>s!$ud;F5|5bGroN!h}j@I0{?hfj~fLGUk!Rp_|vG=X`vURmsw?mC*T ziq9J7p#^jB{tgLxM?Ya7VYKXF`J>Mm*)|Qe86ZGJ47JMCJc9x6MBYrs4{4crn9~fG zQuR@{kzX)xphIwt$^%Ww7C;7d2xBq{Bp}DS#&9Vk{5f0<5wS`!_`Bj+Izf*lc{#W4 zR%3Is>E15mSwG~6Mnv)Vj=w%_%NlOlZq8+b@@NK9(H80P7^;6#nXJ-_rY6tIL?*pL zaYt%f(2U~qhMEu1t;UuS_9cQtgTN0{ zL7*B2cvJ`lRMYY(d6$h_+O4+g-vUuBgIuZK9+Ca5VfSY5V*8T-E-G%>H?L3}l*)SO4aVB&Ocy_yI>@5n1d|FjjV4_H*7WwS?2` zMGt2(Fb(i^5}K%2E%O;{iA=Th=6v#LFaz zk6wjpBz66vH}-iudgzVk{k&`<7yoq_Wa{H850esv;kVVj{ry6$=XYCbq zOlX-1vnpOI_2NjE&Qq?8tk;sTL}VUu@NY+(=rp?3IwVD(VfE}WPo`&K31{@5OdUZ+ z&SA+D24N3kwbbNfG?aIf(rN{_E=a_ms35OnB;Tm1pE8^7A`p{sm!#S_b{#5qxwkc@;e~LjWu6z zfFK=e(84!62aLO)d>h?tmGjn33dV13|098Z#qF{vvg&LsHQ_6t^8f$Oy{Q?CBdV9M U=34y&)%k1wzMIxpdPnE{7ZNSeF#rGn diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing.md b/markdown/chapter_1_introduction/tutorial_2_ray_tracing.md index 14beb71..264bfd5 100644 --- a/markdown/chapter_1_introduction/tutorial_2_ray_tracing.md +++ b/markdown/chapter_1_introduction/tutorial_2_ray_tracing.md @@ -68,13 +68,14 @@ __Contents__ - **Galaxies:** A `Galaxy` can contain both light and mass profiles, forming realistic lens and source galaxies. - **Tracer:** The `Tracer` object automates ray-tracing for a system of galaxies at different redshifts. - **Mappings:** Every image-plane coordinate maps to a source-plane coordinate via the lens equation. +- **Wrap Up:** Summary of the script and next steps. ```python from autolens import jax_wrapper # Sets JAX environment before other imports -from autolens import setup_notebook; setup_notebook() +# from autolens import setup_notebook; setup_notebook() import matplotlib.pyplot as plt import autolens as al @@ -83,7 +84,24 @@ import autolens.plot as aplt ``` - Working Directory has been set to `HowToLens` + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) __Grid__ @@ -565,8 +583,3 @@ computing the image of the entire strong lens system in a single line of code. In the next tutorial, we'll extend these ideas to more complex mass and light distributions, building towards the realistic strong lens systems we observe in real data. - - -```python - -``` diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_15_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_15_0.png index 2acd4b787f4a1e403a6b4ac4f87808235ea999d7..c44dd6520e22f25d03ced151d9063d16971313c0 100644 GIT binary patch literal 9962 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 z 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%0DGW?XRAtDUTP$DsT7wHr?aUo$kDTy|f zSmKisr3Ke)NvLB`ijyx_6b`NZarr>{fVO___8-qv37GS1sVV!NLggT<&C;r&3Sq=! zZF)Yhz0)eWkNM9cwcxR#H6H|^8I1&b}?|YFw7E? zLWL?eRZb<*kdW#q@+1qNv*Cw9a>=v`_PZ5LY5DxBEbt=E19I!H?Cl@OFu>xvpEg?b z{r;)->l3nS;EFW>%U67Uv-yZKuclQWw&zT1fLk{pw@V+`PIBMq5JVos1ram~h5Eg< z^=;*T;?#2{z^z6cx;x0wyrqC>4QOZ1-c&$}M@xhW!`~~%b9HP|-?Hj>9L>?zk}2c< zwXirnu?f{Yd1Hn^41|Ww#CZlNSlkBOyW)Wz132NqNFjeR4ONet*Z72;O2buFiu-(& zM0c&*i42r%f#0sXdSGTKVmKmL3LsO5GOvAy@y+xJaZv=QG|fb{2)}@G#70zM_S>orI7}I^V-@7*$mp9Y zka8>#5CSfFJE!L^N5HDNEcK@b#SKVzF2n)Ae-}ndD~Um z+4+V@+i&m1p)8J7?qMLUc-Vv{4(Scy1fOph3MQ0yU^!BYQ{goE5r4C@ARIn$Vp9&S zLGuy^r5xM0qChkVYhwd8qIm|JVY%(HCF35yb1prhAyvkOBhgxRnH68nE`|{q<8YB5!$>(Bw+rg)@Gea66K!;i#S~S1C6(A+Y7Ues{>ByoK)getiLbXsR>e0bdTD{2 zx=o~^&+fhggYY>yL!MW3GS)Q_tzic8m0Q21_`OSdv2=MgOxWy z&mEk~u5HCqDn%f5Amb+H^LL&u)X*&04UDMc(WjK6CJ&{rH5CVnqgw(?>8?tj!&eT7 z{lovwY%rWa`uH)gX8LoHADuanLFnQ~?+@bcBvoME&ZSPADrrF4f1k}QCny8iVZ?s* zYXFQ*XuhWOPZrUZ80tLo<=A7Grb4Ezk6If2cCcMNsGi(m`2Jicau(w(!>hqwgBm$a z0H&4nTuJV2+J~lJYm|^_ei~S5Ydne&YMcuWMFvu!gC_57{FQxZ(=L zQ1v{u!S8u5rgw}y6}u$Lresy({!Z3k_uS_=)(@l?ikUKTFI7X`ye#TjGH9v_-Ti1k z&lKb+MGk&w{VTu0E%l=%f7NP=Z3Kly1B)xJXdX?snthO<4R?mvX@mIsjzD|C;lK38 z%R_~`a(#SHEj9A|DO6FmjLodNGLy>sSKx|m0kv4$UHWYU*=#!c!vK1}7 z8?d|XS&2==uY{`=U+zf%WYiBz{mEEBoOlg(|53MH`d!byRcapKbgRufJ|(tTC+F%< z@r&F(|AJ}FZCb|apOPK#&`>Vw@l&E38!_}IiZ9%DllU>1l9FSLkKvwOq1=tU5cPjS zAkfk_ne2FaYDvA;(qVQ&_R{ZW{rkuMhUh16znDqhdAdSK-exI41Iyu?D+OteG!xI_ z4R-$|c5pIQ1|nvysKDGT8bBvq>4=%l5EO%?jY$DjS*ItYjecRC#jjHPbvSk};++06gJR7@0KpI zJW}eNmkh-=SH9sZC(L_(!ef-N!EYA&j=Q}5ukwGm?U~;$0(H!+-tsHWV;fv^l6k7X zHf9^4U+4`#B>OY>z&|0jf?tUOH0jalaxaMT?8=bc62=3HE*v3 z06Ls+(3q$3L*1PBD8SiT!zCWQ`D}exxyoMWA8l9STnoae z@IpeIAdcpQ^tVQu&uC7)rR-EsbBVt(=}do$DK5SJpE#lovp5?-m}o%aXhy|@V>^x} z*7%H?%lgmc45X_D)i>ZbVL@!J;^_d&E7=628+H#e*4iwiOjT7t%|FQ@=R{&$d*iqM zP`WPun(ixGd)=l7WbEx@VgzTt%6FL%?E%HeexFS9eb~%0DZOS7D1x41VZ;wCkC<(*PV8FP_U1W29cmw9gHIgAQF2b7XX zm+G@k*y9Tr`2zCP&@g5-Gy{6cBK;12gujEWQ`q^W@H<57&<&|!#4{J%PsPEsdt7_T zs>3dJ6Y`IePCz!41g@}XmS-tAQlkb{mFi1YZD4zV0z)Kz-+ZLT->$WA4?Y&)7y@00 zmp%GuG9Q#XPzR#tmUgq`MFQo@r7RzVr3YR{X_5SXIG8mDYE>fAZa+J;dO5u2bHNs7 zrXKIGX^OG2;s=y!)Sqp?o!f#z|SW!Om2P7k=-WhGz$sK-K zX219}1&9hnhBCzprxgywZDf2^U0wr|D{su-A62v{-Lm@z?!k8UZINKV>j1q`c3}%r zxd1Bd9R*5+oV$?{&2Jn8O$jfs=LOE9xix<@$3X4qi*;z814fA#;#YNMf5yD;Rx~Xs zG*;M%`BWw zMQzik?-aj%bFc6W=j}4k}l^;neN5H7-O+Tc+R@K)0!1M&&=zlPq-zTBFSF)QP zO5_fte_&!Zge;d2F(eaH_5|2|tvbJ1(WwS|9&-8WSpDtl`>n`HHfIZ&&B-`9hGD)O z2~*+aG?MbJl<0XM|2VE=Svut5w;TDk^fKp~S32cditk#`o2qL|QTr~>I;}{Ohp}6c z>LQ_JRXjZ$pEZZi-5tJC`)TNmow3t0z?AMGMm*hTI&LkAF>>&v<+b-)wXLbQY09QS zf(<3b(sBqmQ;p1g$PUKasD?G?oEb*G$JOUsmfofvLuz{;^)Jd**BcIQfGDgEG-WAo z&`QhpH zb|A2~Lsi?FF$4FcKt!y8OZO|Xe{agVrga6R(jK@{`^nHA5!pPDV&j~`oVVz=t_le> z^69p}dbU=DX0UTU-Ne`}Z6GjhVs^wCbtaUmJbJ+!C*1%Xer(2y{xMPtq`O8V(>2D- zms2edj%!C`$&pqE`iE?A-H{-^2}n}n+m|lfE%KfNbUN?T=c+fq#RB23uQ1f2ZOD=} zeM&10nR-q8xZ~+MKfP#8m?=45Efc`}y0fed3tAG#7>qyFKkbu)>qkLo#*6oc{fB$y z&p9b}2Cs8~wC8lA1V3c!>Ddhs5c-hTV-rUwwGRjk-4!|fhsRZ2G^H5C*J2uwAwizQQuM=AEOF}8v6>h zHFaNA)>tPi1uZ+hO2$g;K0CMG;vhs|+x47Nc)tFgNQ`V9YC1|}udpo$n%EkUutgsT$vh~=4 zA}DjPO%+wyzkWp(>KWJp5$eF6A+$ffiNAH|^Ouess^0=+A3Gy)Pb22hAY&3gVJ<&*x267|uO2 zCswil(*xom+Ov9+-az0xOWURW>9l>@zpkncr@_mXsi8kc7+_txS=`tt8!)V*%_}6^4(hD@3XuI^wK?P~J6Hs9zjW5(gxG~Cg4_tY#hB<&#$AH@VqiNa* znGm$ zxd90u{Bl^IvrzRj9DcQ~dh&26h>8m!p3R$XvklwSg6e`P`;dLoafdroBa&CKH2>-Q zDB(2470InF*c~_e*l+osl2xv6h}RQh?$ge}ZAt`oj)|F!Q{|>yen{HCv%?R|4PiTt zf^y&tm1L|&GuE14QCj1-2~a{azv{(jE=cFU71Dz3%+eg4fQ!4HU>)z$4%10Z&st31 zi8D9tH{$drHuIyD#XELreVm!sNy?iZp1&^jTT0^;3jFp`Mqr`O_tk{4T^+xS@ zKRYcn7>T_<&|Eg*YEzV(jA|+l;Y;L_dQ%DazuM-(qC&O-EPSMgkEN znAHc5Ty(VEG)iASyBXYYo9L(+&_5m*KPw&Z3cj)hy_+3Bl3v(;T@sEa)3%D`){?$W z_YOsU*3HVwtpS9*9-<( z)d1+P9dFV)>979=xu$hH+WWdlLx)j;4$uwz@f89{-Y)-3AK zf)0WGmd1Nj{L@26Cxu}#ejArSJ0?Y21yetDs0X=mybE4IA}mTS;@tL32g2>g{3qY- z7)p2YFENA>!Co5ZGKLei<3PHynQO=Y}sk z;Si<2!F&QGvGV^1l7Wp{)@!{-*?sfp0c~C4JyvshWa4?r!LzDO`!VynV|u?_t7ZCF zN?|9cD%V6Oh@ro?J@YNy0*?j1yoGwe%i40B%LlF_b5vASJjCZ!S}=QmIN1UJ%Dj*C zQaBs7p^|${XUxRl?{t(VlGQ=kl81-VYNB#hhLn0#-utNNxRoW=0}Pb!-|Uh;hxhUe z9OhGd&&}>cM&n?s2QC$!ry}wOxgvL}G4_kmmpwx%pTY7_qn@O@Q?13SKBE1%eD&N~ z0M`VPb#E~&X}B^1(e^t=1EP|fp%5zHbX1jSmw9qJ3_LG1 zv`H1!taT54EYylv$FMj~E6rt7YgR&8SeLV|D=1|eji}8Xm4Q|Zx_pirwJeY4Tcbq$T+7HTN0WZV#_Q~3Q`iL~hgtbY#La|0WaYD$YsWCfBaZ|@ zfs}`X8jRXzIAG3;MP&WdL#Tq;wv~r~Y#oR`*B#JeM?HKsR24*uG2~WuzSlU_J|Ny+ zM2)M$&pE@~&u>-^3jLgdb$mn{(!k1C!eXKip3KdZ=lBGyj86C2dMRIjEA-YANn5K( z1qPqKR!vsd0poWkQdz`*9O&h`lolyDi0%sx-LZ?w^bV_posZ2dl-&EB_v@n@A(7m2 zB&%`j;S<&IBcz0w!-&&ke!8rx!C+hR-0|#WW!nyh!$_INo4{*w?unP$lF2xFcOYGV zev-H-cyfVKR;aAf<_DM3ez`he>Z5p({b332!(|~U)cfAwa_UjrPj>HM zB-AFNAo1bJ)Qoe9ZbK>ezJDYIwVl|P#Q1ZvZIM-|u{_i)rzPsQjSJm+P>;d}g}BTe zJk#KKE-K3>?yWBF18JW6sg?Qc1!t_9r*r;Vb56gLW4P7*#Xx95FuR77x4I+>?yaA2 zZ1zcaS-?6lyz6894RQY3$hTq#axSKPwk?D;X%v@zidAt;&j*UJ9h7pOb-LYb*gZQx zF*ysV#1__8&0MQ!ZOYGW*%NPAZU=QSBd<|$_sS!8+mmKXZ%h^sOP%1?89@EHygOA% z@2e;DPbh$GPhAjFu;eH;-*yaZr0%fPSF}IXzkju~wR>K9H9R+S!?$`*mtCgQ@aa%R z)MDmw*rzJ%z}-sx;vDMa$iiOuD|#R}uVap*Zg>=)`jfs8RO3L}N+w;VQ68oSa9^x> zRBb%;6mQ%xUh3EWN3(`mkokT%Me_XiJ&#%zAE?_8c9AO<$9$5i*f~;IpM9uri~3E& z-Gc{)wU02{i3hMk*r}Pf7ohPj;TsEW2F_RGG%PGQHTJh+_{~Z^WgR?r^C&qoX3vHi{rN;Gt3VT^vx;R#Srm8Fg=gi;dxe)lu zgrO)C)QY#uxq(W478DYGN~t665K;?OUZvepgICH#|yD!Yu1mO#W$1^?ia{(V=#Ogagl|_x(}CcG*w@I;r4KPlI|FR8SzZAE0kv>d{OJ%O#YLg-yFh;`qR94XOFN? z5i-%$(p|uHJeyb2P8I5{n*Qy$Jaq@`(n83r@^|%Po?m`4KOxhgIsALucqGO@`4uNT zLJkUV2{irqcOcId*xeA OCyXtQ<{mzG`~LxAox4f^ literal 40861 zcmZs@1yq#X_XRw3gMbLq&5N|Ov~(lVjRQ(|x1`b`A+3NY4N{T3L_c<#OD?6c24`jnY&|^fU0nou1^9Wzxf$)eyxcq=@bNkS z-y?WkJ)ZHgD~%h2SHW{rG4_N&NUTx+(B8|G+Cv}(c&Z9=dVaY(3;scRlSrBC={z>3 zNIFafQp_!EBLz9r+wXCi4SHJ&EB~3SJ}ENTss2&wy>#)&#Qvlxq{cyiVyb1@Vbnws zvn%#(VOVTbU2)ylj7YYD@3~71oa2#4Ed#ITB?i9l2T0TVQ)v&iuMe@_)f&p34i4<2 z!XO17oJJ`b9T3!41H76D1@M8N%O1oGKCraNrNNI=&`a?OUc7jr@_al}8~nQXvwb%Q z__gk`&CatUxMG?76VVm*I-Wh%#tJ-{-{XljcJq1Klkp1ulw&yl8|#~X`F2> zwEDIL|NNTH&oQ@l_Qm=qCu-POP}3g zbTM4jZDix`G;Hy`c%RWw?mGL7*;Bq7Q3T~XmlPw9v{nO^WWVpuhzOD zKK?z50sg$V^eKnTx$4DC@Yw>TX`|D?VpQylY9n>aFcs+!Wo4)*)>!vobDK62dae&) zK@^xt3Ji_mJo0+LF%+c$*7ntL5;u?d>_~LlD;S^itH2{TXP| zO54#;&r6Q{-+>zX`V_n^znP15IU%2opXEgf4v7^RR~afefx{EB+McOxKAAEN?(A?` zcp!N)@fh`Y_NzmY1Q32_xDdB-9p=ZUgAY|zRRzsCYoIVSCLXeH%TZ$Uh*2T3JGIC{#G`sw{A3_8Gq6h1E1@>_n6lf7f2 z_~o5c5Hp(B-Xh(!MIev#&6Q_v@agQvDT&NgjfL!6@rebRNe~7K%oisaZpdGvon0N5 zy95xU+9z05o!0?y*RF7^=F8pI@te@S_OrL(yazoJn7cPDF;i~U+mB-pOJ8zpiT`}% zHRm}j6*K$sndqGG1kp3QI*!?qH}W`FOE*Z%iyH>NWwa~gUTF0+M~cew+c@5b%qb8^ zZqVUC7Qgkwj~1mbW{#`FRa7L0d(yO}ja~N^Z?1-K#ON;1*9%rJwyI&tO!8w*y0gy; zg5ACgz?OgIxb|fWJ5tk5A4$@JrEWCpmm3)4tuD3)ik{b^HIRP=Cx^eD>q&fZyb%G; z@@;+nZ5(<(Mvw`TR~y=);R5VMp4UeOH(x+($6EJ9TX!N))eYyQnX}H$or`m;7mQ1Mh_0r8{s2E~7Vif!Zuk9I9`DntfJm1BaJ9AB<0Tz&d zxVU>l!DAdLgM(j5f}1Izu<)QNPqgT|>qloU4aN(VKgSwXT)T|Tj`u2#1lemy?O zUw^HcBXWMa(BPQ)>3B?CQ;1rVp+{OxP3=2awf6Anh`YB;z{#fmUb97eKuKrglipZt zhVk#O1vQsCf@$bhLF5bHTugUT2PgXMz-_CVf8dkH^-@bclcX2@`Sa&p84Jj-0~kZK zsLR6M4tN?(Tc0vR@I<}qQb*U3a?zusw1TTItYmmgM-@i3Zx_!P)74(*xOU6}bXYo~ z2S@t!{O~7{#gaUUlnuD5-29j~@-ZS8QUhNuPPQ~ba*wTdu0+$s3-p1+`Er|rqGS&I zkb1M3dCUvn`9tUy?sX=)25*@n_IpTz&z$rP z44weYJXyqdT4)iDCZ>zcmkI|CoC7|T}0%HgzEc6MTZ+2hZ2S>$n=cDC2 z%aC(hvw)3~jT_hLD!Pu7N>}R}hRn6D##ncn-j|$ii;WMF$Er})!PHYa)yXT*Ch+r-rbh1 zsv;zB^K!UXK?I3(R+ShV8J?i`rru*Svs{Zu0RU-!pP!nkI>dj&U;5D-H(ss+0#-GR z{WXtiqY*NL&(bAPVz>GDTub`gX2~6v#9-+fwcR-9BAA|@ZqR9S-+nRV(%JK3qco?| zw8_MB*rtIu4f<;+&vft7_i%tC$9rpPa_ghxG_NPX{V7w$%aiI*&0)i{OI1D0w2M%3rKa+7> zHnwjOfc6zv7n!&EoEQ{$f_3iZFn%NV}XDx5vG9ynw@MY`Wn?zs?rvmVN4bIoZmFZ^Fu+yQ|k&IO94N(fW9k{#; zPXo10)P-CeS%QTBJyxO~v7RI5&P*(ItONN>afgBn?>Ela~yivM~_lm zZzT5G1d;7re0;ERZJCANRMVEBQUS-mS1wQDcw7EKo`apR3vO>~lSKNj59Q@8Dh*{| z5Q{<5*fqh6Veb^-Eq0F z_aN^`V(FYX3?BU4`wVIO&9S;YRC@P0TyjnRfee_O10&^-SIkUH>>r zK9`IFESbs4NxxsOpKUfYtYPXYTyfSjrDA#Cq_|91nYUL5gHYX=bNRCBZWeqpskL6w z3V&>1aHm^eq{8L>6F_}7?t2gkc)NV7TNmavYrfU$vxBZfGbZ*c3;M8SY@gexh7oy= z3V>25z?E#`jcsCcg#A*7RKV%>tQEuX(MT;+d3*j7x$I7?#eyjk;H5Rld(;IbtFVH_ za#&p<4#c)9KJq)w@O%9p>Dp-Naf8wME(7jSJ$A6Oo};s|)~U`W|abMWIT0iV7xp zsU84RNr3gPtfgryxx3enXT81vU+#aiyuOdTVNp)}0+=NPBDxeL*m2grht+Xb^deH( zbt5*?>GE`EqoqaG`MjZJQwuxC!IvV!2|pmu+qDFJ!t$izGQ*emLq&x~=&m7)kGA*a z&iUz9es@6Y$H22)RP}agJLn5&>QpV!MbWKyfLnqJi~)ENAD{qE!F=Ir>}k!2A93Sp zqu`P$LXlgR2ZOF5V88cd7v}n2s8oWBBF{AUxtl0;YUH&wMa0I&_75kgT$9VfA4XI6 zjaS|E94`kjRi+%7(2({}t0bw@nE=ab2|2MJFIcP`#t-iX&j)N(8i&$?9WKeVa2WHR z(m!(^Xdy2*)AeQEG}(FU(%F(EFb8jNi~;b70dk&VG4v*Q9x!t%Q5Umz$Vdi{soR40 z^vZX^;qT4(YVz+iUWX@1U;GnHMn<+(QZGNr=FedGbqsekZ3A&FS zKffNYCzMovWTH;^kp)fc5`fW0fC|8ruC~&Cw%D`ayOaQO5(~1wE^~92uLHq6^kA#v z^J?(<&&-qSWyEB4NP5S{$s=XDsGGf;%Nu@BIU%2gr_Ca2p|Ghy3&m3r8c~-ofTPxi zAOip`p)bwzp-z;(ushzK6+|jOwY6pY`t>V+=yg!r#b$Yys4G1vIbz&q&HVLC43+yY zBke%9bYdXf7k?MJGe<4vW))yLiRyKnX6v4|D;avrQ&_Xg;SkeiX=U!t)M9{gLg3Zm zR4ljk&SNQXPpTBUc}gQ>r}KOI)rW;pn>J7_K)!0}u@UdJ#LvAD|nVj)dA42LHB?e3W^Xb}*{ zIbsXtt@VsqK%*la$=t zyndG71?VION^fBuBF@?4i_2qUx*9nmM8OxwUFFps)NpURZVs~WuV2-2 z19v~2TwCYxTce{0%ILMsG>DHrBY)$}}u@NPIMixLFlvpfG1kDOg> z+P1Q)>YeJ3mZnV<>{SFd+rD*iUIyf=Y+(Jv7Py>V(58;v+^jO(G@di7YV%iMS2C(YBD21iN@K+tkSE;ht=>c_i-ZxJ=$Twjg{ zYM=@mA&p2ySJM-~JJjbvM~@<;!8C|30Ygs5OFLy^F2Dm`grUj30JcFsy*T0LB zMp}JcQE-F+MBAnpE^?G+V- z)8@YBg$Ig<`T&q~ZhtoV;JEIkw>q1b|<8zunO|S5{#5 zeOvsh_EY%r&0dH^3!sNHb+!aghjNXp+ZOIV%Y9C18I*F3Rj_e}Wrqj^3dr6>pko^- zPgG)Vj4i%T>N=Ao@%;7Oz2i-T${R5Nzz1XMd@JA~eZ7>H+g{)ILe3n|#fZON#NxGmKsDLU8E`#FB z6QC=N)`H@nzT1iFB`*Pu89{YmL&M787zV?!2!e*2fa>8nz?PY1Cj|ff$)v%-7VPwf ze^u*l3wBcQ)d6hlr24WwPu%lqMAEr$=VhKfU{6I$X8<4Ie|kxqi(r9wD|>?|qWq*b z>*(x9#mAw;;A^uA^VTWQbPEJ`(6}@+6|KS&XfmZwYkG(U0lm}gxRVkDs3XH`aLvpq zFT^*B)4l_7<2z_QH2wWQsj`F4LnHg}(Bq@u!4p9s)(8e1+mXLi&;ZRYL+F*e-Sit2 z$EVKTr=XyC&1>G01&}%$G_2VSHwYN24;HnxwSC?o&bz;0DEA+(9*Cm*HkUO8ZY=AVEQ1SYSfZ2 z0J?)fqp~HI+?RFyL2J|fEM5QP z7VpmAzYG2TYcOXJNIuW1S~l-_f}_cymkP-G@#6_l0W?4-{(ZSCVlds%!X7+sUC2Tn z#m7pje*%~l2ITeYZv+6|ub}Ko2PcBIUwmKqkG%W z^Ithxg3pKn8CwLse1K>Y3G*ID&<8zy$EgZAuol6x$0%+1e1Iwc-`olH!GDkn-V7GOzZ#d*sFdlSYD1I&fDY0#-r|Ib+ zHK05nOZeo$Mr0cs8{a(zr8K}99MeN@Z*K#baGz0}MsIKLKfJt+7cPr!cYz{d+1}`X z^sDPgavoe_J@#3{v_%}y6KFp^8z$b#J__k>y37|Yx$MN}(=GMk%sB}3$x((I$@oYI zR4iFidpXrH-(_1Odmtj7aT1q&RJ)Z3Uq52@F=bWidjXI8GMcsUOA+zJqy8W3GoCVL zx-^5dmvhKeMTyErOmR!^@4JQ+OSTL&OV$mFZ%=F4iY?3EFBs6WAb*%vG#YueP8vw~ zluZ7jn1uyaSbm{z{l~ziDFrtDz(Gc|cP&ttT5}fJf7T&B+)@3 z-tpqZvyFcJD8(^8ZT-1ahS>QDFSB!{iYeh$USd}59F+62n??1|B$=`Ete8PXX5^?A zN;l`ALerXYTcTh=VGi>7THx2}OegwP%k25g%yv+sGkyEh!xnWI8*=762GUekl(=+DzjWKs&cJ5Hnx6*6ZxVas8NCxZkWnM2V;_y^dZoGPd&+5md2^h{a>WX;2W8eIzrPp?~ksKb2o`} zuFgirnv-l%t_5vVo5O68W*k8W8tg$f=sg@k#R*!7dHBPE{ZYJ(t;peLT(|NH8%83B zYb}41OZ)IZB&St#jufgkoCB{-jm*sxs;&724Pr&4I|=0UyO$->(}6T94|Zv6$H|)n zk|_2Ax9w~(aHbZDW76b81o=H#P6@G^EYla;uIc&h4pLqLmPjYxx;r1TY6?P{Ret9! zJ-oN>_+U@QVXnc^aIeR;ThzK6(`l}e2q?AAEjziMLvldk0z#Qm(rfA92cUu{fdVRB zzs|a6i0~2QjA#jcFyb%udXf5Y8r#$l8k$bkDE9j!rWTBSLDEMK#4}lXodmUq-1foU z!)Y11Or))HzVqok0vT+by6w!^_`vqYe?286rMMmajw(EKtgj#6=zcGJ`=~_4l*s-l zaBK8Ifi*N)UkgI&q1AH{0MccVT`RQ~?Xa=A7KiuL6n*Afa<5w~cgSG~TH?ti*Wxqf zC>kGbQ#ojLX?+1SXUnvKFp$Tm?di=Ho}1QmIu9&lsNBB_`I|~wM##D|SbeU)RYCPy zd{uEFluz)dEuz({3yX5O7DnF#;K8)Q?9(6B8bzpAraP~NQLr9#GHHnFK3-{Ubb!f) z-&%_Dtpufmj|E8X`Yqn9zt~oFAV~tS{GOH!(yQ(IVhgclc@qmDa41ir)V2K(Kv>Bo z4fIwL>;Mp+AMcA2@pm2^XH=nvS-1I87m_ppA0`%jHuMEWHBjp0O9k|;>1v>#h6%7E zN8f4EXk_uD6@*-HqVz(Y0&>uMfhP+^067Sk(%g$w#Azl>TLyVMN5nZ?02}BMiUrca zC?sT2>-M%D`7=+$S7VI}M4<1)Ae&I4C7?ruA#Vw94@C|aZ?f^*QAN;A6Uq^Peip$a z#j){QQUuQ<8AqOh!9Q%fwwP>NgvCesnjhh68EfV%qy+M{VVoKJ>U-7~|60`o35*^GSAlC2q+ zZ(r{YRrxwKBWJ$J3PsFm`LSm8($fQ|H*!}s1>l_@VBy<|#mLUP zejA%dBZ4PMh1lz?X#5!?>I9m?%`8?N@&1kn*OFh7b36f53k(AVpMJ;vnfvGGDsnIV zuA{2a3+DC~6PU6=E1SV<{q+%4`n>{r&y!KE^uF+C^!OdMWQ##BFnkz$iGLw8f=GT;{DsPncYk%(;VMNOHw zv{|`TGq!kkNm;a~EQ@S1hFf*`3cODZDlwf-L^i_s`~@Q#LE$+D^>$E#9{hzuU2}J4 z-uRSfFNI-bh}MFi@t>h7#SlJfii&&P9>ZtKxxk(0tBndJFqb11TMpA1Dy8@{Y^4R3rB#2}EFNNzOxLj0IjFkbj7_^1*++83u%q*Z+ZhIMt1fJxpg8>z+}4CB zMHQLO4zzp5&4z7ml2Z*A(Vki12`fiE6X5u#rc~_Yov;M|jD^uW9HaI?C*U+D1{x3j zw8SHzHG>UM$(Z+BP0(z4UMHX=YH|_-zYi409n{|>vC3=Z5zrWaGgo?ExBfsX25~0&dL~zY!_EI7^C7=l%qb;SQ2uI zP4#zp16mupa^&`J(L@SyUDkfNa#w}2-zVFgDL80EhF#rMr%;zfH5%^RM{~PAL$Z_i zvwpoVOTi_(ci>N3k*np2DP&geAcjrXMh%mVbUY#KJaxhrGBRa3acbwT+PA%^bDMai zY(0?5hCr+)31;s{X`cPruYuH}#0U6&R4Bc)XtleIjX+0*>(3m%zfz5+NI9tw^mhsJ z#Nw<)tMozpa$pSfOvDJ|?+kt*6^LF`U>=~|2cz>}OL=2~8Y_bty-u47M%1nFd*xzy?x!s+~f$b#DkK22|Y&g+PA4^-*89DcI*iCca??Iz~tz0%k#U+T_Nln zK9YeW+eXP@O39lvwXYU3ik)3nVlW+#wi}<6+n$N<@J9>yxboQ=ZZ69u?ntvtX0oP> zkgd_^&(FAQO2W`7o_Es~Cm<2Z16*2PI10Nk@u4GD`eDh6Gn4nj^(OZ(-HFay@<8IS z%?TH-P`A15tkb~leuZI6Fi12By|?-c0kSR&F?@z=Ti$UXd|t5p!B_wr3J9dCytuEA zR*v_1zyeq-^N;s#28dH!=Mjj!I+pl-@qB|iMhdg{gvhFN4i8Hfu|j-WPRZ1%+mS9}^x`>EEt;+mx3w(VQMRbB){^~A0z_ZbNlvLh>E9}GySdx=&&kW}Tube&l=E3uqbPv_?Z0^+OXcRFU#LWbjB5_FQ%1cRMKOXM8N?OnQPyE*|;U_nk zo;X(b%qPuoHLKrS1Mz^vW40Mhw^k@&Yh1MarI}B~QUfx_0O5338v#%e^5D<@q|Cnp z%LIN3<7Pqt7b$LbQN!fDF=SwTjm?U`~A8p6E0*T^4FPC?1~pv z1qEzkLP0P%Byp_PBo5wMD`X-#Et37#ma_g_aypuD`+VXPQ)%(fDI-v4bB=yasU$}n zY{9x|Yv0qg@xPmq&Pumpv7OL$+U9QeyHm!9mim4*N2wy7n#c&j`Rcwy72B}c+!fru zkomLNBfpS`90ut}l67n(R|Hv|QQc4~SDVp}vH_R~jXyQ-(}wXh&8H@8-9oK} z8w`R_3sAp3I~Sc=>gsi`gbS6o%lI56Icn$I`A8D#5w{&m)_ydbTYb20-2PYG6S5Js z+%{eG_;eAHBx~rJsW<^fR$r2-ZWDOa>zyRvmiNm&6s)+wCV-;AKGG1blDw>#TR$q} zqADW~*Twg+VO0yU=&33swMI+Ocu2DyHTda5X{L*y$`)RWjQ zk~Y)%lTt>!PHdfx%ngqM^EPgA0i8 zi(gbGU}dKw0!ftpi*dsK-Dkiev4V0(fR65wvGGgLx~>3QORxBPZrbighsk?a%Q!Nh zmu{|ow-Bf)9dL^D0&hij0N$VEE>tD&F#h<|8hBNJ*l2js5d`E70hDP1B{KuPoeec) z1``--Ag>)S2BUu4ag?{W4EnzwFpiFp!bk1+0(1W&{c7|ox;WP=-qPvL+(87x6$FgV zE2cXFbw%yRSW!~~-vw_q-mZDMY~hK4W1vBe#RHw@BQbdnpgIYERqFO_?GUA zaxcq?6qS-~Uw+GXJ&mtT#u6`po+KD~zYGq3)TBm3k0-;b@-tE4OZyl$fpHDL(o9J- zS)a6Zs#Br%T9=FU`m&;6oBEghD%|suw`}=A4{0RhyApk!%JIbKyDUt|){I1WC8lb1 zqnBi8=m|WwqJfs3XAfe zF*=Yhfvgw{X1!>D^qwvFG60cP96SIRqL$Hnx+c zDF@(LVAslhG12Lo=re1Zd7fVinpI%mL5~+OYId`Jm&pV|s9W*lRZ7hL{C(7P58`n4 zQy_-cL*?QK4Fg-quWF&`>1?nT>M!6~_U$Qf+?c;C1S0zJ7El*9hF9G?HiCw$IaIwP z;!8AE(?!h6wUVI`nBrlCWgcs~$q`YU{WTQ~3%EN6gKPC)akeNMZYrJt8mdopib$P2 zJ-U@pr$)14u=JuXEE;-3)Y&1_F9&BXChDuaP)fy=54YP^x|qG~v)?T|Pg)FEl|E7D zy08vbLNW#ecYIf$8O2d? zbPpi!+hO#Nn}T~|DTwkN&!*>^TnjdAQKj=mQ9MTw7*$3HU=K?k5h5=>4ol};UwvB7 zcicBanWZF$%g;pIpg@<_v9Pe%Ly0b|Je#&>EF`v)D>PC8LJ%upv1s0DoEzKeqnZbT z`-Tn-OcezD4{g5Zh$iK)pU%0$fLscJ^h6VR(%%4e^dUINaR#73e?MkIUBkA%WY1SC zAuBL&Mf8bwJO?rnMD}cVVYF16f!nf!7LZ~b2+FjAvY_$%?OTDt4ixCaD8nDT$u+62 z?!F}QcpMD-u;T?@^gaQDO}-KE+|q+`aM}9$>DMfw!)b4aq@xr)ZO2;y=g2)wt+#JNNfh&(@< z7w*Kl*1_A}4*HmWmlo0LbC&P3BX20k8OuVNWh(9LsY)CcO=KTCZhaIj6+S2BVuCff z)0Rf&R#VtJl6y)tMqU{;G4o;c+E6;?Zfho_N|*!+ON)j+^X;r+hoyI!N^#@?oIxUeTfStd-@=WIP^^pz9d!ncbqUhq`Of_L@c%fWaO$04x zfuj{U)%|8qD$qDZ&}%RV;sqrS+$D;x3E3Wq)=nomEE-^6kA6jMB}aVfe4vutr#IJy znWP6o-MJ=AiQD!}oqb!zfQrynAp6^XO^t~Hbyv-?ga z!bI-m+BxMy(j>s6f7`+!T+?GClQ!*Ch9OGqhkB#+kT7m1j%+1%QX3KD1)Y!)QKJ{s==5>7R&=i zn_QOyf`MmjA0)~un3H!~ULR6c7=J`*1HEBr82n&|X#;-0dCm}qN){pReRBtJ9gdpE zn}?Dl&+`4*ha``_7s~&U8F+K-;gaSnj$@`Rs0x`XQ|HaF`D^_a+>O`*G^|EspE*jl zOg=;~(*#N#=7A;=(AaQHaXYo{XE-(1oaU!iMn6gF(6a8Fzev7Ew`Q9D#Qvv)#P8*l zSlZD|vT`0pbO!Ez(u5hLks?v2kBNN*CZ7=&QIh@=qpr<-q zIzZk7xC6Zlo!9&s&soowBV8?FA;O8UI!pIy0kgF1DtjI331+0x=k9gH2nKcH3f_7c zwp77tZPhT>vIRSbifmDBt|8QN`01eOUxuv0doTA-S4=9)6{HZSiP&5W96pi+``K2) zs|diUxUga74>R1CE7ZBm$a!??kWZv% z?kX|{_7P4VsP;K<(&DDMDYy#t(}KCZLi7y2y*TALQ^tn1o@M zo7B`nP!-!aZ3Ou?>>CtXQxk4ERh=ElVa5f$ttQ*UmpdA%YuEY-TS(8IC5T64B?ruo z)QNb&Nk(ypZ&!Z#X+Pi4%O2DdL*n}34Qjck_ta2>1{Ld{^rJ1OQGgsk1 zi{ksPMw2MtVz2=Ty627AOux>k9Ek-=KEZ=3)8ro31#}=!gh0m`G*f?xti3$xPlKww zMwb^c;80aWON#V-t6C=>i75mYwSRTbIk`hvK*A=4u`5ojysQhZF<$Q4yqlx?z+kCA znsKH5A0Gb|5$r$*X70ijDv;@fota%V72=n;&fk$bxPzmz2TS zKu1?M9Oa=}&-0~U1YQwF`9ED?5qtGM@&{$-XFA{c=L$b$9v=a#^vatU`flLLC4r!- z1IkDBwx#8Cm<~$Vak0rI3EE>nFx+$lxeTlxySRv3U{4jUdlVc&;_L=Z6jO8npXw@L zs7ikYzFN<9EwiA5-Yf}U-lG!-NYb6#oYzq6_pn4 z)J+RMrY#TpK9uIi7Jvx~%C-b_$rNB@0@gSv=+$QG?a6^>>^Vn45E;tl0W`lFFs3mJ zIsdtFk4EO^eE1RY)?Q!$Ykf+)-tC)N80Cesx=i!C0R+zi&_v#pmEq^FTZ30Z*^@6E z|I;_WXA2Vmvn8OZbo{=%X2+Y8TnnX^ogpZ*bqyHA|FJ5gjFKpOC~!IBpQ>o!U$>^; z3<`)nf7MPi5jV4BJw1Z;xrcU;Y)vJ_fy@Tx3_2%B!7`S(w9)TA`kXsNOiSx}2@7{# zrWRr7ExjmFS&oPlgjneJd>X_4kYODkyub}41lN%*mOWoq6aK=L*l6x>J$T_8qE>;2 z`PkV6Z{%=bB1;{KNV5paiULP{?5Vyo+hmdIKH-XGBPk3JBYQ!()h0^GP)+C?qFS4_ z?xxm&wm?n)bjmYzVMH(Y&^Z2C#`s zIdG^<{}oXu13cw`vp&`mj|vF})2NMMZHXPBo98T~D4zm<-!ky=4IbY|#le?HeXbiW z3oR6ov2xGAP2d*4IEo;C@V?9Q1n^Wy4d_-h{*0j_{E4*c2{L(lZ| zjthdN+1O4spKWc9yupAJ0+urV?GIm7zFWQT4Tvww_6oKiouuRPIw&L!ra_ga0Bu@) zXZo6Ez`uBS&riD3`FEARIR1lvYebqR2KAa>60K{0TK~m!dPkXTy>LvG{@qI(B0LK* zZ1K0O{iGbuy`&wE;&&T-E2qEs8aY?V5#Qu&7kRCJmZ3Ysr+J5SniGIX&cv^BK zESy|A*j}HAdcR49s zK-3{o<|HtATN~FDu2y(-9w$Z)YL&m7FGEK?pF@~#doGe1tRtW1;LA)sm zr!8gxfQ8#W7QI?)vu7Xc

=_<6uVmxo2ItT9=QrfO0YV)4AFW{7e;BB!27J=Rufb(L8BW~oZ^($;MTe9pxDavt_ z?Qy5QgKoVJr4Z`x3r;eCGcE;={h}SQLWa%b+v%l*%;G|ubBFg35b$tFQLP$vS$)bU zz}u}+R(N;dTxp!x2m7M?p4nJq%KkoO>IUl5m2!j%Zp-Dm2iW#{qp)16aAis`_a(-?oZ4yj$vKrMq?SOB?-T9 z?esoj^F1WC!^AbR@dzrKEmn#p=xjdQ+hF#*)3TklA(Teni(e*zwA|YpG)K#mPc)rOZCU+yS@KjX7 z>9;_}y&-^DB=ciSObJMiK0!+elS_Q3_iZKti{D6zFRePRGVHI=`F^1$qf*E@-zECn z_&1a?PHJd^QovHW-@dA1)8_jl51Rce55^fFxUqy*)J5p=JQ8hN2G&LxOJ;xDeoTGB zt^ZB;?b_UK{uA3;o{YMN>Li9OQ7r;C-&xPB`p_yu&dCgB&V}2YU3XrJw9ivR6yki0 zow+}?ay9li%)RDrNYbpYg+D3AG>v>^Dp<^;nEDy7$47haktR${D4~g8g;dLTDTGI-=)j9&I-@N8(<|V@_3QL}wcKb9vuHBGUw(aPP19NZ*V( zoE{8;jFlMTqkTfBo-Z$tPA!dNs_8@$m>Mb4_K!a;$WV%ug*nKR$;yhxe>f|Dv6+}U z3%g77rxbS)v=UV$ys}kK6=Ao2sP)M9vv7ac#i)pfQ>3Ky1@#xW*|&_*kdQY-pp|HI zlgg;~Pn08G4^s-`kMjH^1bP2-6?7?Oht-lM>?Nb&kpgDJ&#poeeM8%8Gx1Bjc>Duq zK}a+ID6{&zG>BbPQvd(^@F}F#(KHd%B+esJ`8I}SutqB!JYR&jt;7?lx`6^Z+G4dB zN10RkJVuEyV{d%2-ThUQ(H>-NaxFlo*<*p_+Vw7Cu41y&W>wt=MrsbGOb3a6w0(Tq z-r@@-3Oo5Ai9?T?EkWEj$BzmL^O*JB0yl;#Sde*gdMaSIl$i21=?OgN1o^LsmMk|2}0;ctiVHbb670kR6*~2< zrT9DP#B4}GIO%^WbibU>EG0<$vv9RPGY(y&`k3L=|B@QtE~@%qB$|sF(=GVhVrQ;G zny_*@adPafDr>^jm@w;=#5;r@%}H_>wVRx*`(62btFuK}#S47Kt3bDJT(}m0HYpmr z%4RTk+H4*SeO5OiEi&5Yz!mFS%h#7Yf?e5ReG^oxM&or8h}|hM)D@RJH)Absu}{C99ze_;uo(ZK;lEhUTp&i2s%&iFXF;XThd3-K)RPkdYJE>}M0 zy>mh4MnF2~7Rnq(p7#$KuQuqU69WvcfMZEbt^36;yez;4M@9xOT#rkJDJN>CCahY# zl8hm}-nz?G*Eu}uAW;bBR1-6A60)C=)fG|*Z8zfL`DSI&?W$zWhkkG;vim|OPjlQ5 z*6=A>0BBOvn|DKYCKKO~oE8nDQ&b_liS0)CvF*z}2z?=vg>vDvpY(WGRH%ARX5gzm zA2LXb3+_4F@Sa&lq1ur9Z$Lo)S6jyZOf_$3;MN(ci)v?nJv^>MJ?4u(TIGI}p*_nB zjqCivoR)>t?gu2debR~fp1SU@XLkG0Um}C$LI_nq_pqctFx!)5VD0ac=UfXC3hMSr zOOsVd2zH9qmqD{C+rg)OUgnz22ph^W4=xh^&`-)DM+^$GMyk`5R_Z3r^RE-1rQ%nD zxHl+SlGq+{*$K%5?Q8^_Ah>2#mA?zBFFaFQ^*q)L->xPE5{l6Y}c_U}61F<^X-ai;~SVLr;Gw4sm9%e`(r|AEGu z`B|iqhHND4nam>Vtj?aHeb1b2fuPbunu-ghisEpyL^`-i@qC#p6%uyV}0fKN_d za_~svdj##NZvmFj+cgdt)S7(y9#sVck&&3eS1UAv&m5B0qN8Eh1R^!by}V<5+hN#S z$~_#3Z-@#26z#vgTV^YyOvRG+m4fFEod3$x{qeuR3(Dyma33c4z|#7gj5->{&rLg{ z-FAas{ZC5r89t;5nf_eP-i#|VPkP#%I4OFyE2J&YFiYahKct}kH z``q!QQ0*q5js{5IcZqb0KT9nJ1NFkLIL1lQpb!_ktcXVOXl|oUKp2wwv5-u7w_5s( zUB6cA!t&P%ZjIO_@&k-gO=cOHsk&je1&0=hIQ=j641t7zTB8n+IrIO!l7fTB_v_9i zKuheaaU>L-my5+|PWtB48*u7+Yez|Bji!^XjT=JBQo^mW*~22!&AyUJY@aPlA>Mza zILEw}Z7c)%Kuxy)zP13T8eSC+Iv^k$IJc^tB;*a~mRAy$cYus~SsdJ9_E;f*SBxMi zxs00hPG6xjTA4!)gJS^q#`^d!bz33QNI!v=#I9!Z?(0aA?y3w>XB?T(06&6a5<3eq z#WT%5{`{v{&T`q46#Rb(0a(Ug+yT=gyC^8sM%257_E=2|{e3J*$&kT% zUFGmskQZXuCfRRBtP2@qju@}pSqGGYT`BRL6~MVv^jCF|a>yl8eWlj3w`dt z2?s86t7vcmi@F*;K#S01*VfDi5w00F2Q_%YgPq2|q9 z7t9oj|F+B4`?3k=Qdsr(s4jk@`z7W@x^X>jPJxcSXl& zi@rp;^Rt)1PDFSfw^JCEQMi$ute^vWvL6+esY0nDNmwY?#fV7jODsA`GK0buLWq^V zu*to`75Fc3@v2pPD*A*nRb2#80(GK|LgwIN0G`{p+O)xwobn_XKso`m2k&t3x0>An z%Cp|Yw=@Hf;_331s?jD8#`68u0h3K#71F{ZLT+jXrCdJXY~>G!*d zp=-MP%$ZzvVhrQ`NA{9wy;4DcuRDcS?_a=^{feP$Y%=zBSxZ`6@h=AcAI<~PWdN!` z=7`b^T0#&}5GJWla|DB{T?tWZrE!^8a)?)^0G@A6d%wl^>juZF5+8YV24RV9Sw$g> zCk?&6@HYtt`aUNKvDw51rmfjS2Bwji;yxwYn>4BhE?qd4g#g+o9Sc)pLEIRrL zdD}*<15hTsv0pokGS=KL&dn)e+TA^~qr8?WYLZ zs^QivWx#$>^*8L*v%1D<-tGnz6W+m6KJ}%#SG=0=RFUaJy8&tsC&6M@LAABiQufTR`9Dq6n%H2ZqJgu22mg6; zr>F3r>lgW_f8Rty^4}|eq&EHTe~^H;WYSF7P`0QfoKfy;QIwPmJ5*G@Ibw(ZY@5s~ z`ULuOu3yV5>6H~U)W0MMxOQwrKW$mMfYy+T46fo=x!tHHVe`mrY_ua|%DkeHu2RC- zxzb^~u}rU4s_H{M{Awf&+uy^ac3X{zz#_ST#(+KnOUS1V`G3*}byDc8nmfvk zLwQO6Rj7XtPB9RHGK>iZ1_j#NVm&**HPV0bS(&{nnKAuAIPDhoE@Kx#GRXLCC6Qug zoO0mVlY}OrAuuJoca^*8geBA}8trTY%PZ@HP0K6azKfWg60kp0FWFw_vNsB5z0Suc za8^*gTg*H|$1=(KMV`wpSp<-J0%O0QYprCgg)8K6phnj?+*Q?Oij1O56`m!53N;#s ziuwfK)rafsGq2yXogl(`Eg5W@ZVaR^a62uXnOhf@F&*m8O@J73s;{?0A~%2#`~|%8 zMUR`d+P^5jjQ@+r9M!}!it4t2`^4Ng!3`vd5X04f-&7?T+=Y45jhgt_^e1CqB2jPm zVCveQezL_mgI9nj{`nR+Ci>blSr(_)dhq@{MjRqvp!*qZJZIE@;4rKTgpJ**cW4PO z7N}ps`G{WT6+5@mt=Y9#mQOY|4hEE0zRT8wtIRMZN7g2tkh9FbBs=8cVV1j99qTo} zYorgw5of^D_G67-p&fY-hGZ%Y1Y|?NK4)9=m8w2miFpk)u=l6{@5Ur#U(>ZKD(Ty& zYsI>Gt!C>UHSA5Y1g_f+=*mC3a2T9wmVg~#hMQb^=Z{+lZx-BLaR7cHb|O4@OM-Xi zPZZBeu%!TSN<@OYh)m+?BpOFUz;=KUHCMR#D~!MC{csAr@xd{8%Zbqta04o^P8&{D zEC1m;od0}E9vc+S-WSK0!2A&tBi~Kms`HRh7LhI!uD4-jO{m-cJW_;kE^nyJ>vQS7 zn5`=B`-zT<#K~^T`u-m#?>O4V2&hT;G{Wzdw}8M;Jw5j+0q%#Ye;$@OB;!zN&m_>7 z7uH79>nB6Gc3c)k4!KjysKKXdoDF3z+vHa98nwHS>I?v9JQRJnU@$`RCgGPD109Q{ zdESHxBZXF z2MZPa|C1+_eG*%*@lAqzrX(pIdN{*eX1e0$@jRMiBvgJ9H-4iJQ%#Abx1p3I@NIq) zibp-{qN%t8Gt?i2J2*C##7s7RSd}&~EiKzMFb&u1-6v-=S09LYxy`s#jz8A-kcL%q z#Ti)S8PO6vT4~A)Q)V^{I58lEc%7_dHn~r6p=+T0d>XP(NO9zwRq(WgLMM4aOZ&GV zsyyc^{0m0&?@MwV|9^5gdmn4etW__Ep4dJSpJ~^0^CL=B)kt>3`OvW<%8Td6I8X*u zvAU0N)}6e|K5vc(A37e9H&_BMy>Bha&e*tvy4TFK!(2Wi6Gd`8TA0Bar=w=bLzeX7 zSXDN0zw+RUrq`09ra){snRB{P2R6(PbUvM5cv~&&`gmTT?Yqf^|BS&G^ZS2l`|GH# zx3%pX{?USjAl+rqAtBPzWgsOYjS|v|G)Sv75(-j+N{4iZ60!(U8UzGIq(MRn-*bX% zU;Dns{l4RU{&@D-d#t@g`06ZAOvksu%)WkQC0D8go(bC_87^F08@fg`Hzz5ZmBH{X@ z+yqRk=cj`XwJMaTD+^BBK+cg@&vPIY(#Wu3d$gKo6;zb%Hc=xjK5{Gs_jmx5R0R1> zj;^u{6*id>6N(k9Gv!d!c8ZowSIta39v0w{6uVb8dck+1%a&)doz&&7>S(;AKhxbs ziuET{L(y&aS@w_jw~HzV4z7J3Q_Ri0!#W^rAQ!09XF4EEq3d8qY{=Dmdy`F-_Jzbn z1~V3o-k|_2{NOWtqF;B%-Lpx^I*D_CT4uTh3+xC_0)E5)YgeMh>QwW5#jlOInLh_B ze^93ly~Z1Jz3m`@S_K<6=&^R>)7OrkcmF@s0>f=&`N8NN|AWV6kOq?9V^F(D@P- z6+QGX7MXw{6J#PR=qDQTo``vvK$K86?t1cIg=@rmWv}j=c06gL8|2xOhdX+weshe{Q{zy^s4lZOT?Y9*l+u|5GFwNUtW zauud~IyJqCCcY2Bvp5BQcM_?;S<0_9ywZ~d zYET2Ym$=j8K5jd+4>^ zrpIbQ$4>{9pzx9%6T^Cubpt*(<)aR*U!^TWDX7D0P{PhIgf>|A>#=J=Mfw7@2iYic zFYF^q)B4vq2OYQPz>R1y0i!pv8r+pf-yn}x|NrdO+0#bRNDqaKsGxhI86V#N<2!$o z>+Y}Ou?wo{EfIv2eNK(k+eB>8SR0HAmRw{FRg12$cdO#iZEY*J{}am8Cm2e?CjIK; zjO1W+VwtdH8Tl{x!zP-o?R4Av{r3%awfh(JZ(3BANNKnR2?d0(xNu2j$OTbmLL-eK z&F?^hRAy)D7Lz#W5W(IpQi4kTDe=P0v8N?ns?zbzXm0K>ZAE`?Z!tqu zb?{ci{>Mx8O4OrR5uXUQTn&De`!wWogN5PO$ss}f8T!}`<)n)l$GCLVES-Y|kYxPI z8E^2ev_Lbhou2Xbup8^I&O3lrbdZY)itIMWz{ObesK? zBt#3`wT7Jl8aWz>q+(V@Y=Rv>*Lj@(`s7-%Rab)NcHI2Pn={BJdUtu84uS@ZKiE~x zK~I1fVSq^J_W}9fO=N*Cs^6lIl=zn9Plif)S$Zv>d@UEoqCok(~~#C z7tG9vsh>EJUO#(+jr}bgPQ&aoxAqd2fh`pTO=M_Z16acBVDDGbd1vz%ank8-WRr-o z_D`BD3lbk;(!sb6z%-|C`lvZ}aq%;BN}{}x=JK-N?~@qQ?|m5vI1#MMxnb`QiY2&M zaYT!twO9q^+%0cXbZ0NFB5f|XmYD#5#E%?&^IJfov)$TKIB6+$1IT%FfIst?drsrN zIx%O^;O#Nxit3}7@=b>~A2@W^GMSRF~Fm1vhN>dedepERjG0U_d+-tHhgn0>_SH5Gjp4MzvnI z@#XvTWgqIj?&pKf0*-|1Q_c6&UH~rwwTef+(esw2c1onz269y-FbhWK7K$3%kU~aXsr2+fKOZ08J6LyXpb{ds%O zn&bJuRWj8}P9%y!ewUbEJ4u_6+dzF(Qj`4Qy*HzewpZ-S@9jnUoUwWt;i1A=*t#tdj%`O>F7++tQ#7b3Stwn`Kjly(QE4bEK^D74$l~y3;R{9a@mkKG$#ZyK66IVOcT};`5>76hynPU%$p+%IwFenJ(OIVhd#q0Jm$XL<)Lx#;TkYv>@XK zXcvwJF|7B8AeNyAZMI^vSh;voQGUK6SnQF*7>*u9e_3h#BLjiz0|VaSCw!|xD+sm< z*a#J5rZs5v^$GL=@AD&|7JV6a?S1$9>WctUJ_(LQZ1ShawreI@DK$^Gi>c7II&2uo zaSZk_mq##-hTVf>vBYQV&8T{#S!2lE#Z|0o83&E=OG=9$KVH(ws%Qr($?RGF@{`0R z&Bux^=x{32;;Kp+~ZmKwaa)KF4tNxF^pra z_Yr>q08EEsTA=p9*Nh!0Pd9&A$=fh z2^D(TjM$o{u;OXY-6BSZ5`sAOy+hK&*+AL7X)?rS1pdj$cS~@6!)f|Yio{8%T(l#= zmiyl6f>nqh$X=zm5LMh6(O#*a1EAd(uuLdIz;snxyOzEfq=k1z%LsY&^5p<)P_t6I z((o9d9AA)G1#nU)SIywF!ak|9Ki;0U`{E4BzShn&Y2lZiUyxw=SnYZnQ5%W?f_hSA zKMIZoV0$2>Lb1ojElg9>103f8UHwB6S*634Px+70Vly1%Tmkk73t~M$&V`i5yoP0G zKOHVARemmR?u&4Qx3wb_!ORl{ZS3mxvk|7VCY zkR{I%b8NX`*8#i)i2TwFg{7oa3{hNBMi^`9pQPk7mgH`_;hMk2q{APm^3^ z)C;rN-3}GYWU4W=KeanNQ#j!mIWU;L>9YIV`wp8~DF5zo28m-Hh?j0U2!wt}s@G^7 zz=!VzCA8bfzCjg-dc$+x@oD!`pB3^j5@sn{0MfRAO)CJwnQzwIwdrp{a#r{gl-;_oPMv;!=pSL( z1Qat+60IxN;2WOl$UU?QFuHRuTmfHpg2u=R3k62K8&G7WvGk;48)d*D zFEm`PCZv9C3jG{%w`7xA3%OQ~0pU!}^s9HaA16fjDKkLoWpC%WZMtthF?ij6VvG-V zmq!g1qkB517aPCF+2<{lNDfz?7ku7nPe!qLs{c}mV&+zld(@ML@F!#TAD(Zy$Y;JU zP$wwpn11uy)QIOEuJv(>*^c%Ts;5iIX`N#hGALLjC+C9JrmSp&i*men3=JW=`*=x` z1d05O!QTv|S6oyc0;3s9c!=Q!A*L_#Ht7}E{vjU$J{BUV08thj;pmM0_V2-)Bsss~ z^EVWuA3anOcUr+(b_eulzvKLJj|wW6fV#B}kWYdTvs_uZI-aG@0FjjlFy(mBX^!zn zksrifJ?$%nJ&65;{4rY9xF}%YHp2+CYu8}F7!wTmBSJE%RSd#Tr5nE!#;n$j#&-f1 z2O-$10FHUpNb|FB$CbF#-azp|K>`YS$9;E~3~Cc}PC6o&jx(s3XJR$@<)2JAsiR2F zAJ|5SHx0}6fe=0%C2xUM6am{^CcK0ge?X#vP!r`Zh#~xh>)PtU?urFe%fjA06S2~; zTmJwlNuseQ7k~9E#XqUi46vtN0DITJhuQo(oBe2+Jcyc|I@m%@oBXl<-H}yg?(m{m zwJuIDhIe_|Zj@qDdV4$&!WFUi_nZJ@LLzbhn6W6HJ%7AD7q-X6yLdT|pmcfMB6{X}d3e%(gS3iA zI;z6&n(=alBZetoung6||)!&Ia$IWWYt{VkAkYT-WQ_2Ja| z`0|npqcbid)glpZPdm8MF{qXVM@zEEt(!+k2g?yEeWM3}1qQksaom~9ZMnKzGT$aZ zi60D9tm9Dlk^|B({2g+4@1^PEoRzJVauwKAUbdZm%KUf&EhP3kzAI4D)$0n26I3pl z5a@qYJ`yj+e#(BaV$e;F<8y+M$(h|jtsFP_7ri^%JP{-D!h4JC44>{deRjOo|FX^Y zaT#0heF87CXtiO#GhSJBcw=8@l$Hing>w4I-?VRbeDwfv+}y_PI<=9xa45M#^L!l> zsIviGpIL=yjyv)JG~HCxo#jrd{fciYLIp*eN)p+XitG#9X*QYxB`J@ew@)JPs8c5f08(K`~AUUafJ+n9-RDfAdM|_>v7o z=2Z|mpb@oU!7;#5c|~N%`L5(GDDy{W746p@IU+Sq_3Hg z!?Po`Xm>vNBLJ|Z@+RWndTZ9hW;^p|6>F|@b1y$&KU-CbA!B>gHha5+9gxL^{vqw4 zFH@)6YtUe}*)}K-ukyJxF9gO!je&7O>xfMxLy8E__cp3 z=grEvp>L7zwn#TrZzSxn{xN+L`-o9=c31P#Z8>cE*;|Cn^PuW)hiKUFU0RW4`Hd!y zr^UVVjI*p>vm>;H15z!dF0%?#fyVbc1V%=V8Hn6J72};>_M!h@NyK>`Z*-%9ZFL-M zo!?(X;a^BRx=4xd$Rq{jC(*M`U$(O5f3-XZ(#P+k7yNFHC4ASIW`ggMi6n$Z3 z=2#?><5$Nc7yBI>M{Gwwk2aKiZ+N$`WcSdaa@5eOShDt67JjapTG+FseHza)DngyI z(|(=$wYrmXvB5%jL^{Y%fsXupK$)3j5r2~}B}e|cO2kB)*e`LFszCer_n}k4JVT~x z-z^sL2E@Z3vRRdG$VGIPl(I+a92R~L3wf|GiPX8NLKENj5Sh?=;qY*CBkF%Pk3FCs za4-m*3J7_NzI1t7NjKinit>ec@%X>5LOPg2#3$~a1UNaCj_$zcH=mMzkDZk&a_dz9 z^gE)4qiy``=`m;FBkUI?WgvUfouz4ok6Ww2xBmaOgOB=rgiIZ6-Qe-Q3WQGN{sjm- zY7m@wjF((WwHQ=nr9iD&s9Sk#!`n>1X>}o40gFVBE|94!*Sxrb7Dy6pQ&b}E)`7Sp zk5r>M94brRGnG*6(pzM^b(pK{lIY#A=^WC#0s4shl3YURRo5DzGp+(`%p6XVqzm`Bfk-@R`Uj;2P^xN& z-i{OSz0D!iebAs!cPQ}uSMcrr zQIBfjNLZwZm;BrX}{#kgw&}@u&F(L-)}GhayWA1Y<&AT7j&LOS*dOBXqHyky8xdv5xER z_l{$)Uf*Ie?oK+l!eO%2w}T-&nKx}tUGfliWB+TJ}?9v>{0+j)BJW)>e^ zIm3&Bj)MJ8*Ff7rW&V(QD#hGuN!k=Ctkb0Qv#YzJ97S8qghlRIEVZ@4cJZWo_H5S` z+D=`*H#|+ce)m@cZ^U@0Cz=y^rSzk19)C{ps2kN-M#S=3f!+;X2O5HH_AUN>J#tCj zi!PW31GyI=x&y5HxvGL0RUMa(xhu`?>Mt7Dya+M^=V>47JZ4LTcKvjON|)NIAc2o9 zli#~~T8SC{b_=z$!8h4Ra{J^ItEMAEMqwlebFz!KEFa5fH@irGWsA9M*%ANztH@V< z#?A`#CAGM;H{ISl7KcV6Z0M!IDx-X&!|lc6og+2T`j<`huYUck+R4z)QJ(;cuGZq-c%rysj&-f3tc+e`Id&tvV^h)EC9&?h zwjzHDr_0rg{L%567M(Y@R!H;yd<{HvpJ}7+=TJhHRcE7c{)rhrc zf|QsTf77+hr%!IV)-b#AdKe$i@xEa|IH}4kHE8s&`k6K65l1Y0(AG(BIv=9any&-<%?H4;C=dc==Vk@g>Uw^V?OrR}$}El=woN1Js|$-*oXK0F9!KuJsm%8+*w2q=h*gDTq5UE! zXOiio#l{_*>T+DVpz?ueR;=qfg87P1FOvu~#@Y=^%$M{8kEHZ`H|mcFl6>}pmjP33 zZ|I9fmX~HR)%tX%#4OQqqxRNNw36!+(~TF>-eP}cm{r)uhX$hhtLzY1WJ`N1A1MH1 zA0NHcc-bHbko4Nod^AojMFtKkfq*sz{M>Z%pTlyxLc@_ZX)}R3T~iq(U@Dk%CAKbp zPtCh3k4+Cmt^O#c1=mYa<8HEgnj!q9Ca*O=@aIM74hTY84)K)`Mc-;BKr_ul#hz*O z4=1nWMbvx9f<0_4soqtJo`d0!S~QNXsVe?^_}{AS*NVb zM{Z1?CoK;qlugpVOdv&iw+I&&(>HJ3?TP$=v!SmupL@vM5ZH z->>{hlmOYk1}qiM7c|JX;JpKjCYwCz+m2o~5{vT{CB$Te1hi=pyCOz??`2YDCKe6E z@a?Q7<+cRKz+&AqSL5@jo;QY@DTf=>#RVb7uM!HMMayZhg-Y(>=6wHPpcL8GW3TPZ zY6qGM*UxwUmoSH%H8#9i(0l<-VpC0f90ypbKU_o^2)a!9CH(zJ=GCys+u+YN?6Tbor%kkB>Xx2?`(@17pA^s3kxY(3>6(yY>64e;gP)uJ^Nj!V7_Eg9%B8(Waz7;7|MD34lo~H)$Xyl# zdDo&~$PBHSewPz0QNiGqHA_a%I*Tggxi9DY;wJO?mWfGOm|xTjXRo*46w@uRQvLiHe9YGVx`zP95SCnzg;57TCTt`K47H`#a zoUybaH_UEz2zY)b_p4!iYY9ulwH-WGqeEEY1$>F&4JB^d9W(t7?t8`DOpDgWK7rxQ zmsETk+=HW>TAAdiv6;1w-M7p*d$}1-P;|~5JE8XOMCYKf9RgTUw*VfA(OmO6jwx+q7@~4Bbr=F`L&xe^Ngz zAb+3kFr5v5uCjC}ev5-#FW9b*a3MS`QvSe5_%-{qKQ$qW33zrv3H zzT9W;o;aMwqjo`pXBUn#`9Ru+=hr7+5^z6zVF+lsz!1*8iwxD2eaEgq^GL*;x5G>} z@>o~P+g}b&pg+QssSM+lkiic zxE+L#im~}mj_p>v5qrZuTOe5N!{=eRSfxK;s(axX^H(QQmuMD+Xd>Fz?Cqt#7!t|z zgZuva|MaMg8l|;jbT82Q=I^c;^W#bx9uTcx{<{%l;vO|y+64E$?nf^Cu-Qylh^S?^ zqo#~i!H2w^Z2vi!U^h-*Yf|`#L*HXYJjqSneWDFoiP8S}gxA~)Es9z3_b#$T4xMz7 z3uIb=eQAHuE|MBv+by>R>zJEVFSd?vU0UIUYs01|r06?)FF%*uEMCk!-i=|NX2Y9V zgVdSi{-^V|&Zth4Hhdfhx*+H(S9G5*eZL)lVOS~F>A}Oe_vHCR4=oz|KxF>l*d%V$ z4fhs~-pY~n*v!1+G3;}e9t~~3MJo)gVy`Cg7Oc|! z`((L~Gh~kvwc8$01CuDT5QWsox2%$&?TKE zV0L7ckF@Q7f027Y#)7ien2gY+jD2F*b;;1@1zql4LEm`E@u=Gtq35pmkHtOxyFxpb zsTvmZ-+o;nN;}<&x&{9+5NLCebwDrnz2lf-HWnAm zz(p=$5*{Sx65(nc$fP0m>QzT?;KOM3V_Dt6F&GfnmeD<7VC}zuyoov8jy7lKr)Dp3R{g7iSRrI_`l;mCTt^Pp%f7 z-1YRI3UZy|I6fduJGZL%F_5Nknn2GiAcSkLFf{dC$7ZyU!P$4B>Ez{6U$G)y>JJEB zt>{XHRfk2QkZb!^EuCFGkR~e^zn}~@vtfJUys{5Q(5@~|vy0|XVoo#js=v-~+`6w1 zZ(e_9W6FT;B;44N2)4_(Bs9fm^236RhD-9}Z>BB$GB~_?&t$Up9o&L+d2C57mIr?x zGrPo-`cqS7W+X#0sF(eMzqf3BL8XEF2$*~fll0`lnnr#oSpTyA&p_BfyX{Zv6SEXa zvVRjisy-reqLEKxAEat^{zzSCI5ys$0C?st>v$PjeASQD>jQa*78l2 z>lT}NrLt;L3&%9(BnK71?QSROPGWX&h$%(^aN8Uy>b#!B^n!4i>a+oz2pd==K@yBT z^L~1El&>tLxBAsCN`;gK!=q30%8rySVJT{hw6E(A*;-vv`(KY5LyHqvuFddwXJ$Nl z-dwynI$P@Ivo<*-|Gjx-eh{|7djA5CE8?4y`y8*kn+ zC+f4{D^pt#@FC1_=*K`y4c7z`Z41q+!{M6P%v1m%yW)DuD;&w$Tq`X{rX?a zU20_cZ=i3T#rKVx#^9%wyrEZt|;m(k!P1pWHdXlNGRIU zErOW99+tNAJP!X3qk=G2Vf*7zd#Uthv4J>n4+z_e%482vkW+j!wfbZ(3ATE^;BR`$ zB+L>CxH9IeJbZ`Lz1G zrOqRwA1y|j=x~p#K9_BMpIYJ{Vt2j5+=aIQZy3nfTa3ST6p0%}ZhW&E`MG8Jjp+7a zo`(Htd6MHk!Lg-r57jtJ2q$2U?NPA;$qzpqrnsPM2Q-GjsPzExoGo2Az&Xw&^)U_z zr|gQV$OY;S0JEZ*`Hck?@lY=Po>Lq^bOgEmP}g1forzqs5(SuW2XwPM4d^*3n$}DhW^5U@9;rvQE!q zF*~VleCMWf^dsixp6|X6$n^z&N{EIPIccow{%@pM&J%#_1briPlz=q z>n8~%v+svqB+fHgn$#<;a}7o36XEaPsCKcU=I1!y`&i6aw6$CtNBR?pW^QPiJ3>jy zc^_LCi`%|WRtB4~3u1|mwk_+FMW@JErjJ;;wmR=TvPl%Ut>3D-v$tVWak_(EzYai_ z*3s(hcs-&W^2ha}#o%7;OC|?#h4;!TrvmSAFbYp%xFjnAUuM`YdhA!Y1v#@ZS0Lj8 z4XJ6i_9K_G9n%Ij9E;pczAB+U!4dC-%NCzhx2PRX-oT8us+|1`P8BwuejMwSxb)3~ znc`s!R|--^{%Qw3YwzqlkxAQ083hM(ZghxMBmU_++%zGCIT7Xk6_KkcHg&`hkSpg!-&J(pY zMjU#t8_^tbFKi-Xr6#p<`af7(b3Be0i+&X^_V;~ef1-^jZ`uY=`pf^l*1y^AyDZ}9 z?D|$;aq-@J-NMr_qD=;=#-aC$>dt7EE4d0I`7&z^9Lo>#tg09n?vr$r_l3o@s{}Ig zo$Om>myvZS#3GxUi@r1EcIR>1Quc4ig!*#nIm6);Dn>;}T8g(A|MT+<+u;5S4;D)S z+7|@J{%>{5@F0FNBlgW7OSs28T0Ewm-;V&7)Wxelbe2ntDbD>-cmm&lsWQM?3ZM{? z`*I$?pnsZ?kJaAatdSb1-KMgdKlMc_!7XB~dtu$RXCM=#Z&2UuJtStqj6mT2C<0N) z33}pRU>btj_I2Q}`mP4DOs)9+slB%sqr&_!=h`dtj%YTm`opd_I{@{q6{WXDZCb?b z26@46L=8G6^~uB)n4HiCJ)%%FjR>iz;69;_IUwayKGz<8^?t(!Q{C369Y~Mei&YM# z<_#cRK&lwooo2FP*W3G*xo($#oYs041S2)40CCv@wSEi+5T=5cq}CLn>x_l85r|<9 znrSrI5Mj*$YySvA#8#bPomv(pszk}2X7&#cvvkDiC zbhwzlzf(HSuQuTzO(o2Eg(+lHFq|^yUL;h`XJEe4TcjKV(X$y0DMoV^D8D~&k2x#l zd1K{50PY$3ye}V`O6VfuW`MUM80?iz;w!y1<4PJ+{2nhWS6QS-tS*j-o=tz?^`kL) zQau|S-;4;>crivOj^@(ms}r-ZCy+83YpEk@q3==T)CMxEJ@1 zO6E;v{wl&u0hAJYHD;crl{Y{VC*=G^G3#L8(g@(N4RfF^CpoQ|gs~u|<~K_E4;oc} z2kA2~<-6-ih_b%_3q+puQbWr(-Ym+zf+R-OG`GyG6Ka1?^KZVeAIPQJ_jGo4{=MOz zQaE&fQEq=c`c(uq-t1EY;&1oe?Ny2Zun}Jo0l6 zWNeHu*im`XRT|d9s#MYEu_mo=Knj$T<4{$KB#yjohDYyao#C&X4*qFsDNFfYwLI@( zdtNwz5x`s*a@UqZVE66i8k{E(QSAr_76M;yz|G75aG0HB|7M`e@x!zBfVfI;;8=g} zrooo-344obLg)uywhr9BM+`e3>{KqrT7M$vT$S2H7p+b$Zz$-`P-_apD6{Ie6VEt0 znm@}~49E*}-E3~q{~2+i(lxhVc>`o!jzC(&_`iEhGXrC9H7Xe_oM2*1mI4#%fFaHw zu%bOv(bQj%MPe{$G#u9u+NRCN&};-2kFzt4X=qsaIE;$|HDeQ!I>H<}S~PACI%sGp zA_%c9qNJ%2rWwtxgK2tbhS>jw5sP7k8I1^ccSs~gE8>hd+)y$!CKFzI36lPFO0rB)3ma_QmLRZmjdi5!ksQWZ>Pn9<}?f#A%@?Ba5@8JxN`AgVd0bg zc>b^x?IO`F06tANt>htigl$=bu+MccHzamm6o(5cg@cQZ7e1jUjni;MK#@sq{KA8ePK8Q3xR;2 z9{iQfD9>>xSgej#A~lQT*8+tE8&mR6*TQep7eW@`01vtx-Wzpce=Z1Ls$+v5ma0K@ zt3*e08z1{bES-+1^Zu!0SH3F5i?z^j;^1Mv!~8GN4|!c1QYjwao}$Tqfux7zH?0%y z&}c#|V%^O&-AC)|>(q7h5XW^&z&f<)XKqNi3j_Nyp!GT*1$v{3pQn%`VYaL;c@-q> z_l7I%Z~T6dpP!#Cpayr@MRhCpPS)0EY47fWswx;9{<$n{$o&vLwqpe20z|CSTSV(F z2GVGeJ?InLk&@AN4hojBwr(xSRW9ow1+T0-9EDXOVg^uC%T<I&1t_BPU=(NXMzQy=^@JJ(#Ny(tAxp~! zBq+=g3YznnXAneEOI5eB?>B1NthMyuGFz-Px#3(nefe4q{DA)ojSn?;nMcLbN+ksha>y!mKJUzV90W&ZY$1HgiS(~ z5}3yT$uFm)?ql6IIFAEWv1mEGf^_my$l=LPB_G@nPM_wsS$wP+d!Ma^)LZb*zCZOV z)84$x*(6&bMEmh~3k|1fHJwPj`}`uXaj`mzq)4oHcn4|MN53%pn?4{K&q3Wu+JX*w62!#@M;w_-&@*417?HZ|E#pMWJ-G{0FDRN@^q2k zJ`Y;g%M-OTXhbFG9j_Jj#-7qxmHo3J>keIJun$o~h#^CJ;qF=f#yuBCzrD2w{0*t9 zS%8p(*l0E9G`Xi->t;!n9u46YzQE5aA4GMq`$)#i0`P4f7pvot?+qs>u|njOEzZ(){{h z^k8r(v*$4sRA5X&O1HCozwz;pAESO(!i9Ez&j z4#);?#3tTa)k>A3L!*dc?sT}&d=$8*zJMF3ZM@pG1ZeiiuJt-MSKW_EuKoatN||9t zJVG3YeM*F34B#_4q<}llJoo&Ovjbj&NMr+nAua%mM?V+r7RdIQ0TLy55RjEP&nTm5 zm5-_UT3~8jDu3P<7~UB{>6jra2*2BiMz%H#K2re2u_QRbK>7~j+mIX^Xw<5HXtL!y zP})W!q2oxY6x!#FMUt@Q>a$A%c;PB+PFE$vBhdGDId0z&MP?RMDW)EUC( zbVuwL4e&%t19WF0%QXw99rI38vknyPFIMo!;QsO<*70eDDv(t(VY~BwU;AzG5AGog z=apu?-uo&s<=NsADpnCl2-CIO-zV#3qzqLH$k zBD5EKhAzrSj;5OFf3@*yVboI}qfr;8OY&@w@0-8EPM9z4v${(eQf9LBf51FzsQ3^>Uwr#8^RcMR60 z0Pmrcw*F^-0=+SO2$3!|kNu)3*F*}{!%rG841|41AbY`6N~;oIb+pvtX7Ajy-`R7n zJc-|im?LPE=|qd4@Y`|Bk0f1I7r&^U@gdeGa=7HGaEN7_DAVGNdRwwZtt?83K@KjP zrZYBOm*nC~W`nAY9r!LqTB%)68#*;da=CD2xn%CysjJt$pZ|2dv|Re+uK%pV(uYE; z;nJjW5|1Rp2Id9<#5s z@;Zxd1RK%Z5l{nDzEXahM=LpvYa+ks5SpUe#hnCYoKh8=@&qF5K2L>ZKqgHS0yoF1 z*T6$WZ|k359<0fsoxi*l7%Z=e+uMZ*+j8j{^2yPaAG5Kr`ecyIqNm)wk*liGFCYhg zfUehH=S*tk&xZo7QDt=a%`?v0PuEFVe^h=*O;E95!>=?AbgdShn+k^IzS<&mVtSin zv4-)>aBp#<^IWJj598FGU=T|R1aUZeFSuO%83 z0bQX@SJKDBbC2ILDxAZx-`%L(KTgGGZWiv8hcfpWsHwO8Ccmn;)KUbAIn0+xZ|1%a zDuukH%h{pclxM@u7Spz~oF&;95~(6h|18orsxvHZr@{}tU;KiJ=e}ZR22{@9cF;bA zt`CM)Ir6pu*{AvnLPA)KInplK>=F!J8lK#s^fJ4R+)GD{>H9 zLK|jvRneb_9t)eQhw9?@DhDbNYliw6Nyn&YB6`5yx#^Nnx0%|5!r)7O_nTHqA&O#C zGa?hH8463xF`H-ghvZo^gG>xh*!IU4874H!yMYU;jr0g0 zJ;HP|jCFL=rqH>_=1ae4rs{sZhgXzQxO=MFSxTmiRpo`*({Y1oFBprA3IQ;}rP1lf ziU;$-oZkTfqKU)2?(Ubyte_S_k=ONNIJ;p~i|owI@9h;wJjnpG*wDL-5xj0ReU2{W zKEgA=IO2267BC%T806E!GKFkM(OG8z8YlzP&Z_2LCZ|MIgI}Qpe5+^xe1itA9rah(5+3Q>fA#O^=Gw-7#%GPJs=#Wrv2Xv&$TWHs;gw4po>Cu2*yjb}8+5B=;WEFQ}~qZZQZ#jA?Z&cO0g{e^3p zc?YK+&LKV4Acr@v<~W$H-+*F8A(c!(5WjE@bHILd)xnPsoR|EkaGw^f{$N<1yR*d_ zY8MxOa3NmvHxc?k&lkwG0L zmL(wk1ZiT9aT-{_%s>Q;)X##>U*6_FG5m{XcnotToZzp{fRvTsir1U3hoe=%UieYm ztmpKR!XMph8CkGY*d(YK-#i>A5Oz3-Y=eE%ji3^>Z}^32B~@jiFey>@g}N{7Et=_7 z;W75AKLq;ipA+_>fI|`~PXPB${US|%chsD2%!0GzXVF#ijqw2Pz2Va=&s<|)&L@8a z#qY51y$ZXtYK5o1U1Mr4R%e*KpMozCTbOZ7*vVCA_Lw$RtGN5@PSOZj-9k~+OzdN` zKfJhvm!g{j+2*?DSyfU2UDp8_KbkL72gd=-G3G-yT#HBveEpmEsKB(Bb*1e!2-x67 z)i#a2e&FN^t1}%u;fN>xqr4YvdB~LmwSo|c>N09-=##}A+fZhXOp8#Suv_QY{yUhE zdT+DHPf3Ix4V~(@hXcJGg6PL+j4_0m+mn8>$U%1|)g2qv0WlcJ$|b=YN&cgpvgc?3 z2gc10A?w3Xx~mAfcZvF@3~%0?N0uYIoS65LjyGt z;-%apX;~~D#A!<4vRNqS1HT2-u)su?FFrE1gxr;=%!z)BPj+1BwEHqZ#sTfN*2a{e zu{BhmPFvWRGL(mW72lqNO4Jrg%>%5@UgU1y5A=XjR*e#<5sT}DIFo71Zy?&tY%v4%SNFZ2^Czo zDHYk@DpD{EBk`_4Zj6WF#l7P_{kOB@NAk{P>x z)49mF@P&+-8c7zjIn?1=l8iH5LErN`9R!)`B{)xDx5-L_1p zDaI1ZLherJcJ7w&vHA82$q&1pwG}0NuNDo5*@>B2ZyU<3+|^2T`YmFC;%R~!O!XGwLdZ*tj$g*ReexN`Z*FgSSFHa7 zC>wzVHE>MEwCIEH06Yhc#$zxmivl^7VE)|T?lXw8 zXQLIIwnlExf|p`KE!a32|tpKYfp(xcUb_XpbBmY{WvGLcE?XiR84&eu^o!e(Dtw+i45YHIpfCf~w!Y5|{Ow_WJPa+N zy?G>#fAIG>2t|fUFs_nr!lYf%KwyNN_yapmC>p~Hs}Pxr&|?Ds-`#~l5=1G28PjN& z43^n~Bux^Lo1{Y#`Sr_MEW-HWk*0AFNM(+1ozSpr@~GAFRiw@Z5&JSAnu# z5Joirlu!R;l8#hyG_%zPVkCyX<5Yq)X`fenno(T{z zygq&UWC|lGkxLSlA^_NdiVv@Ia+)F4W3;XVQy3Mh(EQV=FpP@9=qQ1Dg&80!cHn$o z15&{Zf?R;f)(HwEGf;O>{ByA1>RwfvsD3)`knI4)2`Wrq!3}XEm(EjY{#FUtyZ6?j z{N6&H2Dx$I3^QLIuSUbg*BvxtLPX{k>WvrPU4Q*iB?Hn@OYIz;K%Z3iFN8B5saU4w zB}u=aJcJ$L(I-!k{YSeNLbC5Wkk;Rt?TDH8y`AEWFP(VsSjC_>kfs%XGb%?MA z=APLVs%=ZaJ#w|xELc^$(!K9lH1vDit@Bi($UGvjWE8F1v?MA3nB>z>fiZvzjLvTC z0SQPo?GU__LA z!gC1IL=pv!S2hjPcBOjH#i+h@Pfc74{oK!IinuUf<{-krK65j!_l;R=$j><_$IEkm zN$dUvPkrJ*-4&)sRY@{Fo+<8PeQM_tMuZk(Y*oPs_&VPF&IDi<%D2`*U??$ zBsQ!2yihK)jfzn(U*aPpnz_(6*ASZd4Lio^Pj(-I1VVXlRPgS5z}cMaoeJB~OIec! zZ;9AW&dd*Imv*6~^-^{P7+P`dlpbIj`Ir_3h{NUvL=KYXXKAA(RG=-|_AKc2L9YVL z#{={IPWYA<;JW-sd|Fs3nstSb}ji1RG@s98C9!%@re zdx0H9!8@IoePa*)0K`VrLo){8L)o${QtnQ`Vz|G8HZ|G!B!QHjPgx3J<^}K4fvmpplSJaH?%S zXbmO1JZbO~F&UiOnG$I%9#z>!4tdoN&Q+kM&Yw+_KfwsI1fI#F4d-@dFJ76wRRzwt z&Q<=?pO_x>zlLZphSWK*RGtI2PG6g0nRN_WqdqI0vmU9{d+S}@G$!8Uqe-RP zKLCL9`*vPtX6AE{`mwM55M>9%C}#^vjK2s|9; zzlDJfn(T#gL~dn?*z1G+-5Ibew?90Ss@muf-VE1^c17e6Ds#44(Yepz4!axuk_lwG z2X&d5?2hoHxfhQ<1x_p$KKnu6|v*$uV(+sddaF8Dg^|z{B=f1!j@D6sANWkV~WM*Q+6)-~=(;p%u1gba> zcjKdD#KSOEr|vaaou1CrKRl<6zW{+q9KBZFvNABPG`ts%vV)J%pKHYkLV@oa0DSD% zH&4Z>!MzRpSq)p+!q_(W<1Pv8`oVl{+w~-NVAH+TI(&@;h)aPi>pKpUXO*746Z)Z)bp#g1sKB*e~)mhCAIXdqdVOsb6!N#|4yY;Hl`;xGK zew0-K?uB*PA3!Sf?*q_h;(yj*gP>;0d7+=lyyrYM#6v&TUmgaI!bjLmz6$uM`F$Sl zwvz76t6Z@F444+P{+7ex2v66<%J3gsIbL@PqqrzS4z~`0r!WqN&~0*|V+E}p`+g5d zgpv=u0i*%HVvV@noyi8D7yFWTzegV!-8W5qNiS$B_j?0Q$>Qb)fPf%_um5OrJE~)P zoO`KC+k#GpddrI^8yMH4{PsBZJ)-@>e>6ld9uO3=!E2!I_Zgnj=_nqrN{|I)$vWo8 zzOyT;Pk;@Hh^|`ffBghFLB;leL5>I8NlhLzA|(a-R60yNn*aFf)gM13Wk6Sl)=pxW zC%gvUE4*o%r=8(uW&imD=|Fd$kW$NuHniU#SAbpBxe1HF(l0%Kg<`x*8j_!H@J@-r z-LJgN9wP|tu*5Yff%=TC=l4Hn_}uPEdAj^DPhVhk4z3P1*sKpH)I2<@>7+gH)=YxM zo1yMfOdAY?6y4wWRAeIi1{$t;y}(TA_W{4;53fRmZJcm~L$q7?rRoW@2G~E1Td2DZ zp17=R!Gf77?c!H}(-tW!h-n2e@Wv{^OtT8OJk%6M$Sk06J(c-Zvrvd8^CnAuGYe%3 zNjv!Y3W2IHQ;?Unq8I`-I1x2PON&Hi|K~MibVn&5JeNU8Hz4%D^QP?NnJ5Fs14c;9{BCcM$ z76`WRbjbJ+CB+G0mY^Z!AY!u#N#B&@a)Y2ilfEYYBmUkr+`(5Q)!zOib~` zRWwZ(Y@l!9s0cuuF$kat7ueu%L&@e0EXcR8y@mnD<}hd-s}yM1u3wo3%9Z`k+di;k z>`asS9ZPpBO6@A(35evPP)tHcMPl*4;p&rqDpW^vI`aBco~E o2~Os}E~%rz^#6Z<`|cmCJX%3*KAiGm4E#q;>5^jMMbm))4+kyaX8-^I diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_19_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_19_0.png index fd284d67966b53153a1142e921b3c23ae54846a3..7cb8eba452c609ed8761138a09c327081e4e364c 100644 GIT binary patch literal 7678 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 literal 25078 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%0AU$fS=o{=U%nN2Y)ie>UUH>Z5C0W` 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 literal 41872 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 diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_21_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_21_0.png index c859b9f9d4b640024c6d2cfdfececdfb6fb87949..90e2bd6d29669300b001a705fcff238a769b14f5 100644 GIT binary patch literal 5001 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 diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_23_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_23_0.png index db585b84dfa7e0979f097bb233147fff52e6730c..8efa5d18a4484ea960c43d6349ef3ef85ea3b6cb 100644 GIT binary patch literal 17565 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 ANdN!< diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_23_1.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_23_1.png index 74ecd978ac8434713a8f5cada0a7e111b82b4492..37315aa2b261af4136453772ec421028741cc8c2 100644 GIT binary patch literal 17214 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 literal 66861 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⁣XzO#VP-qLEIg^xfwdhk1Ps( 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

u!3J9q()O^3BYok6hBW z67zkeIN3;XYkOfQ=ZT4{rB9Pq6guise>rgC(x)_&w6kqQtg_azzjdS?V|eWz&)zA_karthjks2E4*(=1?cIPj#wl^r36X}-)(*Iw@H{j~m5 zlU>2L!g6kwm*yGs5Hahqz!I@Jzsz^aPoYnqU1xZA*@Z!9eR{>g>Hf?0uDL=hv?9ZrQx%`(7K9PID^~eAuVbs1w;STx6p8eXe6%mj>+V zb>5Tn0OjXDJAAOh=YEehV&hyf)&Hx+6*ep3UWlZ{t=t*peZRW0Q@Q2gTCek_1jN=t z>1KAFTKVlZR^3lV)f-c2Wvxp+G!JIUNUUNG@>*ih@)=Q$CoF_d8CLE^F4L*llM1AN z9Ze6JN8Z%1jl(5nUKaH%Ssz$vbzZBNFHa<{0uxb>%^ncDBG{2-T} zpj(lZoO_%V!!>+qCn)fKW^P7kn@D^?2sPb0)MW_~W*kZ86J6V_bh&Cl7BoUr#KtvG zS9N%Io;DQ6`U2**GSBP$%#|_Azbco1NX&{*0gB}k3nImYE!1q|^80*QcNr2?G4YcI z;u{voZ0IZXzdx%7>UwdjCG&*0lK%YMepF-)8FJF>@wD+{a;3^5EbhA*XVAYXI- eL-+G};5Q}Ciy83Hy01&+jG}anbn>;Y2K@)%Fj83n literal 23969 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

btO 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 u-d8Nu{NnG0<=+3%C4N@s<5%^ycp)r~O literal 57366 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 diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_37_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_37_0.png index ebb5cf07bf999dbb9273e005bd9c10c56e79aeac..a6e987282b22a8720b095a2f077c55c551aa2aa6 100644 GIT binary patch literal 10693 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 literal 35239 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�W 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 diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_39_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_39_0.png index 96c4be19c9067124e8682a3f567d79289b270053..96e6aae89fc6a8e54284bdfdbb5019645587ab45 100644 GIT binary patch literal 77801 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

*rnj1hJKgv6S zi;k^p_^C^uH{OU)BQq`8Z^(}~XI{>lBm=RS@NZbpa|K6$tY1fMjPoAtSdy31ycUKn z&z!W1rET`r_ve2{?-dpMk;&B>1-s%mF&S6rg^oSKrq0A!4r5ALQaQu&Jb;!UnquH< z&v3){J)f`}eAK)aiBR4&PCNsu=-V1%@WvYZ%0x;gFot?YV+7`a8hF2ka z6mN&ha_Kh*o+e;CgGP-?N#v&7Mm3uoYcsY6R@I@~==a!2J27u9g_DR}Oy*M77eGmoj9+-5FiUq*-px} z7`wC!cMsCVeNj)UeO*mHtoSNp^O=VYs0wq?(3pTvh}qyNHifV1XMOaE4{g%orapSB zi}L+)6=^!)4`dJ?qe5x^PXny?K)Z2j;?R|90oN;uj$r#-Qs^kzZTY9CJJn)ID>NN? zeK2b;>FHhYR8W9kKiOE$6yq zom6DTlO~bkz*^V$=04=L2BPR>^fplCO8QXlNr1DW=Tsx{UG>Rr@M;Wncg&zyD-;XK z>~&lAHa3E^EIc|`RzU{O3gFai0|zJRir&!OaRLi7lz7+Gc#7s9|4t?yPi&}MvA6_? zVNAcx5_KBz;bOk}kp1nejJ*5XV)<6HX zRTgXHIx+Lop0m87zhj605d6~HSR+3f*`&8UwDv<*Y}~>s`NLHS z;3K_+xzcao40+*12>k6t@3q{l3FKtdkA+)B-Sb}l>m^q5RVTsrYW0y*DR|QA{%)$p zXRU_(i3ZeWSvNK|1`go9re0;t!Qq$p>gKMMjSIg1Whr26SVdA+?0ZccDabx4iDMdG zd3%xpO7iAkFRi>m;ZPLs>);up&+k;xD7XMrU?mFoO_BMS6%}Svm=}%}Ba3~?`>$O4 zMm#!MbcH^cg{r)42K|UIeRt7nb#q=6pXw+u%JES)Hd<-Y0T^s{2N zdTId??>vz-jfM9yStW}F-ilL2(9_&+&jjUkST8JlN7=ZrTGvcjtzIoPRL)n2 zo|2l5kk7x$I%to)eP1N;JvFQI8AAU>z0^v7=cnCpOyLRHb`f}+h>pvt!^_kSG2#t) z*>pc#@FDX8@7?rOZ<%WGL@PUAG&Dw4`C5>QC;|@r-B(Kxg|ja)_~F9lxjNb)^CqA` zGkK2xsxxWq2EJCQf)`%D6Wj7dyi*pDaA1K|>cq_OAy^3{*A>BKQzKCC1|uN?#RBGU zHd*!N_pdEe6yOEx&!?au&5_tx80MsGWDa}NJ+$BJU`1gd>+SkguT-39wU_R%PUinc zT$x;KpBlww7_ljvl3XvNWyA59c|r3 z=Br$oUq#^eik}LjmCK8f1FM4Hv4fkMEP3QSaqZHsnWgZnN=?f_8$E?byIgBmmh84}0tc=BNrAQeVXZ=$N?E=O-w2daC8=@nb`AiWTi4_-NYT z5I{+(r27vpD((XIEthqY38Z!+`(#MbsDUM9&tMK2e2dX3X;7x=bP%QeSWp1nKOMBM z-U%k#*Z*j3A`Zzj+&e&<%Ryz?J3;Nkk}+$>ON+?d$$^Or!a%QnRqtpMg2&@hZR!z6 zxILN63a1c-o;1lRLwsUU{RPzXWHZ)#oD>G24+eh<@$Mle5fsw5)mta4z6yyy{e8j! z$0c$8h>FS2QpXE=?ezZ9ha@}q@43U?VC}_c=a(wwNN=-JiA#edRSFTk+PFf)$4& z9T%rSoH-H!RLJfZN#p^LaXo{kB!d_&JI2AfjJjWkYtRk8emM@VCvTG(Z;}#Gt#}EK z39?-vJqX?q+h5e}b|7~(j1Q+zrwz)7o2r7(*G!V&(z3+G-X?GzQoivsGfZivU*K;3 zTuJEN`?RC9Bn|*+Fm&JaCBED|bttd>)Cr(sB!k)d0?*%US;jK4gic17=Bzz(frNXL zFbN^}rH5sipB3QU-zZm`+Z3=X%ADZP(V9BhYe=_`mo4Z~2wk1>g?CLdPDDRCb2jYs z@dI=Ynw0RnoD06v1D#Kk4dqimPuKm(bfvyu9~#fDuwDN)Nf@Tz8)A(M(2glpgaz$* z=*|_shfPUYfJco_B+(T)EwXxN3?pfL04VMHDc8=E&rL0BwR-11O6ImqCuXYx@{ZzW z>V+?3QG@u+5)xU(-H)-|hmX#4!B`2+YOBZJ`IfM@|5^=JkT?Gv{MDC|PS8lP{vNNy z$N2QVlrK)1_p=f}OK1((oPy_SZaCUfgZ%)n_^}$=z{-U$SvJTB+WhnPQUckkn}enE zc2$7hXV6C6V7F^fAvfUc{75_ag`=~NXH@{$&dP>Hr3aQbPW!Hh8B-)4WGx3lm&p#7 zSW{PHgfHw`vB)=#?z)w@5ngZuTrAHqkhNK}<7{%k!4feHCJIBrNcX>7(j{4n-oK?M3$G z*;2z+@~s~;Cao#TpOw^tCW6vC*k=Onb~xO`H|V1mUwhFhnuormAK8-8lBIitmmgP_ z^T_iTKN)|NJUnB3RZ`T8Cd@SO_dH%HV)6?&srRV z!bg@aIF;Jt65X@oUgO(c;~^9HpZ@Oa!;4d61_@exXo-mAu3eoIS%42bN4v8tCN9vl z?NWT%xlzJJ9N1o$whs)fRj@!G^i*}Dg3h+gHJO$fjPRCmC`>c3t_anQw)I;#ylrrB9LHB9C5in4z>Dgc{T8Un= zA!0Q-vfb}mzd`$ByzvU@`r2U&s4rbGvS24r4RC{@@RwFrE?PDu;tP>4qAbX!p{TDS zVj7m_RF&waO)Wq%Yo=-j10x73F_*4v6Rdm)dH z)0v!{b8P$FDAhju-}X4atrcmhBc6sYVb2eJ9A-fHkYv&E0$MTA!}+noG=R3Lasn~<(L@+}ib=@x-j)P6|4Zu-+cb7r;%`EO zTEY0{{Vv4r=I%{+zl5S(;&m7d#t(a6N9kR7e4oAvop2wU6CULP+uMZ7%=1NWP^^_M z!IEmzVB<$Ma;dac<;S;@b0^5Z?A)jKlezanEltFwVFMNIrZR+fBlbCQeyM~!iW`C- zkoKcFB4OJxYjJ7KL|-*U4XM2V+>H*YTlFeX_JOGF4aWD@q-UtY)7$uo;bMr=JqR)v zb!7^f#V-EqkCw~Wh%=j4gob$NMzlLVm=8|94-U)on=P>mC^a`SzpSe)J70mQL=9~4 zupuwJZ|LPq+w3~wzP_nYzKB)M6 zjTrpEfRn|$$2X3e)YMCCUS(m)>_yq5xJqzwu*{(s#l1X*0o5--K`yUpu`4J%RfEC~ zRrVtn&7@o=rr}?6{hGY~(zi7nKeUDn%+8Dwyhli53PlO0Ra9DCh{dAz6e}qO0NMq; zq7Rmk@T}pGmyd~er^(j_t0mqa@eGn`#QMa>y%%bIso$V@MS&+=k_+AiopVg-a?iK7GO=Yci5`3nD0CltLt)wQH$iXdr? zN2j6g_IS^LTvf`5{o+{PjUfDqZ#6~RcOTw;f;Mpj>1!dGTYuqRBFr=A`2+(6X^r*~ z)xt)HdQo+H$@~m8+iuhUhAkK$-)JDL?DeDIPOhzT&~3MDR~FQQ!&D(E|0t}(k`X%q zD!syi1u==V=Kfx4 zJfL~H6Sgm3n#U58S?>+erMZMNs!3|kWCO@()&##PNrJ`(wDDgVFwb{ivFJ&Y7=B)h zIAcXN$hu$mAVEjv55xCqdya&OX!?*EGhWOc|$akiH7-&1vAu)oZ=2 zZwZ%H+BC7gvs(A7#{^;v_PcDDX|VF1puC{*&vzc9DEzg=A5|z=M~(Rd$y}hGsezLL z#o?jSrq0Z3f^Nw-=k&{SUzhb<-FQzUG$DJn9PBQc%v%SSVg@*m$n(i?*I)jiI_UmS=yzV22FRAiLC*%9k=g4_o7Phe9L7!TGYUNvT5}&oZ@bFbhDwmsia|g6OJk8xSO+4wR7iz zC#bFYa8oxdiO8TW50M4(9g}yy6B7Q;P&bxK@1iNuY*Bk`j!m1e`j(?2W1=XO9p?%@JuMAWF zhcNC#z>*70Ox&`?A6Yd|fBh%B?o41x+vVJF68`lLGim&1=@ZV!tr7QrTzy3iypv2z zjj~WBU)-b#GxR)(8jh`b`8fnOAv(uB7N-D<+wrD&;2Y>K!TehR4DLZ72P~g&;1ojg z%v(j^k_b#8_8A_(D!oO>N)iAQGX7r*y3ai2fI*sr_xlzO)q< z|Ai0~B`E>FR@nkrRBD^hRCj`t|>*E&rSvE*cyrZz8@R{)B{su*zKkZipm? zprz;A+^4ZPF&%SHafR{c~Hg~`go4L7=F=*=|Y{m__|DUsZbW+$x`8rjn3hT%;%z;1$T0|uOrpmU4? zx>gwJ+r>|)QR?Cxy2SYsh^R+Th9{XStLt@XdR8s0cvW?R!Vl*=4h1Thc=FgRfMScl zKu2TEwmqVoH}^%sh?Ryq7Mn6^fIF~7g#OlyVD?W4NuJpbox2~n9Y*oaK7NXYE!4@_ z@h{21Cf)c9@8x885vD4j58guBdPm9l<_^%Vhf!x)b$(g06@3>iy6N8v`SSJUz6eu| zS*AYG#sVH2?Mtlu>(g0N_O!UA^!sw{ukjVoC3`}VdVPq-YodvJc(+?j?8+^ z>+5_RDXoa|4>CyF{Xo7}TQvoxzZ}tw)@6%7y+Y-zM1_<_$`~tM2q#N>!#-E93bVlOp=1 z`u@$Nh7`uRBVs>39mwY-mCdD?M-YesM;KXTzvfa_s4EwzH}p!>Y$1(bAN1Y0c&!cn zDtP-MQk#K(wMW_>^ujQ_5^6|w8{aK%>C}4${w{ggngZB zp6QIX75HQ!|H&wok0#9nRDe>=zo!VVh120V{&q4&DHlJu7u-kRQgH0hdMoum8J$WW zI5JtF5$?h%*LPwo6tOM5F1iIVB-nXS_&pk*IaXQDD=nJ#rU(~a3vq6IM)yg~4KSuO z-o2T%{VXc<#@6YKk^qjhsniT)9I9Y;<(T7$r7hTS{){`rl9O#>BiKdi^p@sl|0Lsn z-7{q(tG5vP!SFu#RL5T&MT=KdZM{i%A;UD>D)atV#PmCm`O7=hpvS-|SuC#}R(p@` z2hy-?_3nLj2y2|grgw$X$U8Z!>dl47X5wp?y)|elwz3Af&PEjFS=>vM&4w;dcP(}f zr1R&NwkW_QFK*B><}c&6;*+<1osw_&`Yc>*xRiXG2)9od4>9D4*4N{d2eIVw7@)7TUZ-e=jlILFlm4@56qc`(I5#_eeU`XESUv&!lM^<7{K!Gq(}T`pgPrnt|4ye=|94# zYb^*@dJXzEL=(Jz9B5NMYIg#mvS5ekT@&nERa#=Kj*&kbMbw}l2M?MY6;NW^{W~E0 z%QGd^fXSImwIfwlB`$C_pX60^`*)Q3Tffn|P|z)0e9-}T(1I<5_?LZCX@&c{ zvr4rcXwpTnqWll*_lU`Msy(r@bA$Pseba z*w#6#BMk0VcF27uc&rNkSizaC+~Q4O%#PjFyzOYyO`Y3N9cQ!xo4wPYICub%_Z~cm zM{mh8OB?eK4xL2?UC5a*tsQ_z^vwPz@7!qf<^A1_wdb~SQ?UsGYge22^}<)M!Tp$q zQ-Ht1wel5@pQuYCs^{$HIcU-f@W#x)99>jBR>|>X&aq-`#;95i_sdt+13SeefqYI~ zJ9hFGh6PMlp3Ff$z>21z%4U0}2*R}SMuZ+Q_uam6g8W09OKdodBWo!3d(97-H`W}m zgM$G(r`m@r<5!5L?iN^o`VSTz1{U=-H-;Qswye{q==Sq}o9r(p^yoF55&zfQrHhaD zmif1rceqwqQ*ti=P~y}`*1ru7KclsFUQg~w$cb4EdH96c*)EF%bYnrq#(_UR(p$}| z&p>r4sv)$MCC~G340c1y=ixj8CjBp=Tc6m?As_d{K~|4s;vvG|Trw^xiA zgbZwWznyDdH>LlG?p{awgNU}*s0*--eFw$lUj!Bv^f`qM8=4hbe5E8!y^_<{!)^zK z-;}G8A4y9<84}o!Wq|$J9Yruv5pnRg!lMe#;X;f?!8U;O>a^PqJk zETO1c1PdOac*VjQV{*4|&W+}DMB@f@HP%2FIyV5FYU7)JIWF#L`L^Mcd8oSM3B5+0 z6icMH;j;RHfUgpFaiX_qcgR3QE!voEOaAb(^sGY=Oe6nKlc}W|a|6`cE-*0_1#LNd z7!z2OyY1<02( zarP?;vy?wtbi_aPB28Kb*mZTw!J!{z6?ELmlIi}jo7EPLS`Q<9^~nwk$lnu9hk;|e z-TuS(^)6*4GA^{A2ZW}gS`jLghQU?IQ$WNZibp`eb$8p#Er@98zy=D~y{377va0{I z2Zl}z4{+60e({cU=0E{AOhoreqq6Z$STB-0#2(oky~K3+cEoo-tPwx08vOAniiIEa zfryBd0ECMaey+LFFo$93Y)u%IzyM1%L~#{VOj1RF{5U7* z@v>mvfROZb0iMsls%McdB(P*tK&vr7@og z_r)&xGKiq_e97L*%^K)Yk)~!xT~^-D4s1oPVw1SpXaiTy&DA6Dh}lyZ|E!v;&GZsw zl)s9elT)cz=1U`ZrArzCm=&G7ms5~jK9IG}wekphVE$4Xv8e8z=xdc^FnVat89y&ZelJx$1P^;q-E|dSV>_NAJkDjALxGWj0#}1 zTlNDgbLc3BWDxk;Q9v>VR&#&tU#m(D@M$fZ09u7g`wYMMjynRc?rw_ys`>3*wo(O4 zil$bntsG}&_dMm55$wkh1ncq+7_W&{%m^cf7?n1>!9ku;WvbeVn2`R>{^$8&Rg_tux4G54hu{?PJP;tl zheg?_Nm}oX`Oan)c}S91Bvk6Waqnk2<*H$)K2KW*z%NqQ-ut6yW*k{8*SA3%YCrsJ z!u#sJ*eh8FB|8vB!#WSnYxRrw8KA8kJ_T|zmIDGaTB-Ul5#-McTgPWrodl$LLy%Fips zO0Pr*CrbzYBMVyj-(9plTWt*wTc`7Kfsd<9B+3=bx>-A zUV=yP3!asa_Z&q@ zSH~k?hSEcTr>X@ja{iC?uxP@_K}~+FH(Iwmd0APqtAg^*yN&8#$0R&$GUUZYVLU}~ zV@mmgZZ|x^Ps$uBq)1Q8&0fNDybeL~0A_}>a%8a*PJ<2?vx|&6Q((z1%@m^cUb4rW z$5lSn$dtU^voW6-k0=rdqK!Dh8C$ykCJnIVo7Y9`^R%&~?lYpYnBM#VnuEA<-vM%C z;%?hir#%m-TKZNJ`43|q;c6U^PF!)2*zSgss(%VPpQLy@wA4xq&nz}%zjqR298w*$ z^`OILI*7ARKdnT_yWy$L2kRsZ*MvE6?@&j`B{Z@wTr)U(lvn8bs0qe7m~hH0HmLY56o@hxufJ8qgFwl9ty;UEcmK0Jfc??&>U%yf`x{!O-rC82Bv&y-PJ1iUGR_iYoQ7?$ZQalhkLCP7&K@s~RL&-Ue4V zs=aotk>hEB3#F`LiLCqxsxwyp>drR&Y0GlrWe(zr4nLk3#sI=CKl&FYeikE z1G`M--*H7?Ubn$GDj9C?7+z~!W>+t=%*~?rdlC48DuJe`n|;60jkHA}4-lj-F-MPv z&h~~TOTlbW8u^2^iKc&WGnPAi?^YK5InvwDySn?mF^m0S5eQ!>UBjsjs74s0Dng%z z6d%LZGEs!^W_*){TeD>ir!mi%TrSd!WjbNAXmZXV!(DI7dIfT8V9d&5(qv?&i0VoX zFZmuqomK6JPMoSkPsPDyo=qqM?iG^E+nYlG_`y-o8sFw^WeeP9W`b= z)mE@g0S|;pL90O*sr&6!OFcMQa(Z?-c7CENj$(7*$l!)c5q`CS#K;tH!1(rf|oGOeK?0=BPn!{d*_r??QCC?8b)2MWzR~8y;V#%5elf z<)4F~+LI=|lhFFncXm^q&$q>1#|J26KJVu8i}Rt6$9o=X?C%#EKhk;ay1PsY&QO0N zjx-YeG%rwRy3m+oKiS-q%6ty@#VfxI_`)PK+n#psNpXhOUCqNLBe-v*=^4D>c|H(; z9g|3>MrwnKHDJL?N>atpipFJ4OW AZU6uP literal 281232 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�~R zs}N!#i;jF$G;1<^ZxroiLlq%MLK3gtXRqrq-_-{e0=b<~mv1l?fLIX6KVM%L6%@pC z0)?yNLQe*y)*S&j$HK$)CUYQc>j!=_w{B4P+zAT1k%aY5ie*Ze2wLw_8)XyiS%PkV zN@tQe;z3>rN6nvRA>+(f7e7xNl^H9?4jRfFR3c@r6h}ry%LZrk{W)Q}uvBFg?)f+S zR)q3GOy{;e=?gC}%+oLNK$@Kokdlr6qpwEGwB7@P&Xs(Qm^|LRD76n;{cJ{?>v?9l z8d6w@^4eZRT5z4pfz7iFC!(20;C?%A*Uk_6zt>1f9-oWED!7k@4$17+UIm7HhfT}C zX$TMUris90U6{>65d!MOQ()t zHzL}bPDfewpz7FcGL=i8*IrfNU3W#6Up`c6Qa2jE^`c94;a$uD*X>flSHqqtzJBGS zb0neB2Vjc~=`xO8N-{9h-d!7)8asih3H0%m)aOugC@un>59db81*+x2E5vFQ%ep63 z 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

CyDp@;-zMgvd6wM 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 diff --git a/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_43_0.png b/markdown/chapter_1_introduction/tutorial_2_ray_tracing_files/tutorial_2_ray_tracing_43_0.png index 71bc1d4e5c31fc754340cd3428caee3bbd8aa1f3..eeed8b34af375600e5a04d7a1b0904438addff4b 100644 GIT binary patch literal 7137 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

u!3J9q()O^3BYok6hBW z67zkeIN3;XYkOfQ=ZT4{rB9Pq6guise>rgC(x)_&w6kqQtg_azzjdS?V|eWz&)zA_karthjks2E4*(=1?cIPj#wl^r36X}-)(*Iw@H{j~m5 zlU>2L!g6kwm*yGs5Hahqz!I@Jzsz^aPoYnqU1xZA*@Z!9eR{>g>Hf?0uDL=hv?9ZrQx%`(7K9PID^~eAuVbs1w;STx6p8eXe6%mj>+V zb>5Tn0OjXDJAAOh=YEehV&hyf)&Hx+6*ep3UWlZ{t=t*peZRW0Q@Q2gTCek_1jN=t z>1KAFTKVlZR^3lV)f-c2Wvxp+G!JIUNUUNG@>*ih@)=Q$CoF_d8CLE^F4L*llM1AN z9Ze6JN8Z%1jl(5nUKaH%Ssz$vbzZBNFHa<{0uxb>%^ncDBG{2-T} zpj(lZoO_%V!!>+qCn)fKW^P7kn@D^?2sPb0)MW_~W*kZ86J6V_bh&Cl7BoUr#KtvG zS9N%Io;DQ6`U2**GSBP$%#|_Azbco1NX&{*0gB}k3nImYE!1q|^80*QcNr2?G4YcI z;u{voZ0IZXzdx%7>UwdjCG&*0lK%YMepF-)8FJF>@wD+{a;3^5EbhA*XVAYXI- eL-+G};5Q}Ciy83Hy01&+jG}anbn>;Y2K@)%Fj83n literal 23969 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

btO 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 F{|E4+X(<2z diff --git a/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing.md b/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing.md index d5c3553..c847a44 100644 --- a/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing.md +++ b/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing.md @@ -2,7 +2,7 @@ > It shows the example fully executed, with its real output images. > Run it yourself via the [Python script](../../scripts/chapter_1_introduction/tutorial_3_more_ray_tracing.py) or the [Jupyter notebook](../../notebooks/chapter_1_introduction/tutorial_3_more_ray_tracing.ipynb). -Tutorial 5: More Ray Tracing +Tutorial 3: More Ray Tracing ============================ We'll now reinforce the ideas that we learnt about ray-tracing in the previous tutorial and introduce the following @@ -30,7 +30,7 @@ __Contents__ - **Initial Setup:** To begin, lets setup the grid we'll ray-trace using. - **Concise Code:** Lets set up the tracer used in the previous tutorial. -- **Critical Curves:** To end, we can finally explain what the black lines that have appeared on many of the plots. +- **Critical Curves:** We can finally explain what the black lines that have appeared on many of the plots. - **Caustics:** In the previous tutorial, we plotted the critical curves of the mass profile on the image-plane. - **Units:** Lets plot the lensing quantities again. - **More Complexity:** We now make a lens with some attributes we didn`t in the last tutorial. @@ -42,14 +42,31 @@ __Contents__ from autolens import jax_wrapper # Sets JAX environment before other imports -from autolens import setup_notebook; setup_notebook() +# from autolens import setup_notebook; setup_notebook() import numpy as np import autolens as al import autolens.plot as aplt ``` - Working Directory has been set to `HowToLens` + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) + .../PyAutoNerves/autonerves/workspace.py:206: UserWarning: Cannot verify the workspace at HowToLens/scripts/chapter_1_introduction is compatible with the installed library version (2026.7.23.1): no `version.minimum_library_version` or `version.workspace_version` key in config/general.yaml and no version.txt at the workspace root. + + If you cloned the workspace from `main` rather than a release tag, set `version.workspace_version_check: False` in config/general.yaml to silence this warning. The `main` branch updates more frequently than library releases, so version mismatches are expected and not actionable for `main`-branch users. + + You can also set the environment variable PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 to disable temporarily. + warnings.warn(_missing_version_warning(root, library_version)) __Initial Setup__ @@ -106,8 +123,8 @@ tracer = al.Tracer(galaxies=[lens, source]) __Critical Curves__ -To end, we can finally explain what the black lines that have appeared on many of the plots throughout this chapter -actually are. +We can finally explain what the black lines that have appeared on many of the plots throughout this chapter +actually are. These lines are called the 'critical curves', and they define line of infinite magnification due to a mass profile. They therefore mark where in the image-plane a mass profile perfectly `focuses` light rays such that if a source is @@ -121,7 +138,7 @@ However, a radial critical curve only appears when the lens galaxy's mass profil when its inner mass slope is less steep than a steep power-law). To make it appear below, we therefore change the mass profile of our lens galaxy to a `PowerLawSph` with a slope of 1.8. -In the next tutorial, we'll introduce 'caustics', which are where the critical curves map too in the source-plane. +In the next section, we'll introduce 'caustics', which are where the critical curves map to in the source-plane. ```python @@ -140,12 +157,12 @@ radial_critical_curves_list = al.LensCalc.from_mass_obj( __Caustics__ -In the previous tutorial, we plotted the critical curves of the mass profile on the image-plane. We will now plot the +In the previous section, we plotted the critical curves of the mass profile on the image-plane. We will now plot the 'caustics', which correspond to each critical curve ray-traced to the source-plane. This is computed by using the lens galaxy mass profile's to calculate the deflection angles at the critical curves and ray-trace them to the source-plane. -As discussed in the previous tutorial, critical curves mark regions of infinite magnification. Thus, if a source +As discussed in the previous section, critical curves mark regions of infinite magnification. Thus, if a source appears near a caustic in the source plane it will appear significantly brighter than its true luminosity. We again have to use a mass profile with a slope below 2.0 to ensure a radial critical curve and therefore radial @@ -213,9 +230,9 @@ aplt.plot_array(array=tracer.image_2d_list_from(grid=grid)[1], title="Plane 1 Im -Caustics also mark the regions in the source-plane where the multiplicity of the strong lens changes. That is, -if a source crosses a caustic, it goes from 2 images to 1 image. Try and show this yourself by changing the (y,x) -centre of the source-plane galaxy's light profile! +Caustics also mark the regions in the source-plane where the multiplicity of the strong lens changes. Each time +a source crosses a caustic, the number of images it produces changes by two. Try and show this yourself by changing +the (y,x) centre of the source-plane galaxy's light profile! ```python @@ -266,7 +283,7 @@ aplt.subplot_galaxies_images(tracer=tracer, grid=grid) -If you're too familiar with Cosmology, it will be unclear how exactly we converted the distance units from +If you're not too familiar with Cosmology, it will be unclear how exactly we converted the distance units from arcseconds to kiloparsecs. You'll need to read up on your Cosmology lecture to understand this properly. You can create a `Cosmology` object, which provides many methods for calculation different cosmological quantities, @@ -405,11 +422,6 @@ print(lens_satellite) Lets have a quick look at the appearance of our lens galaxy and its satellite. - -```python - -``` - And their deflection angles, noting that the satellite does not contribute as much to the deflections. @@ -486,18 +498,13 @@ print(source_1) Lets look at our source galaxies (before lensing) - -```python - -``` - __Multi Galaxy Ray Tracing__ Now lets pass our 4 galaxies to a `Tracer`, which means the following will occur: - - Using the galaxy redshift`s, and image-plane and source-plane will be created each with two galaxies galaxies. + - Using the galaxy redshifts, an image-plane and source-plane will be created, each with two galaxies. -We've also pass the tracer below a Planck15 cosmology, where the cosomology of the Universe describes exactly how +We also pass the tracer below a Planck15 cosmology, where the cosmology of the Universe describes exactly how ray-tracing is performed. @@ -522,7 +529,7 @@ We can now plot the tracer`s image, which now there are two galaxies in each pla 5) The image of the source galaxies is computed by summing both of their images and ray-tracing their light back to the image-plane. -This process is pretty much the same as we have single in previous tutorials when there is one galaxy per plane. We +This process is pretty much the same as we have seen in previous tutorials when there is one galaxy per plane. We are simply summing the images and deflection angles of the galaxies before using them to perform ray-tracing. @@ -532,7 +539,7 @@ aplt.plot_array(array=tracer.image_2d_from(grid=grid), title="Image") -![png](tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_35_0.png) +![png](tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_31_0.png) @@ -545,7 +552,7 @@ aplt.plot_grid(grid=tracer.traced_grid_2d_list_from(grid=grid)[1], title="Plane -![png](tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_37_0.png) +![png](tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_33_0.png) @@ -559,13 +566,13 @@ aplt.plot_grid(grid=tracer.traced_grid_2d_list_from(grid=grid)[1], title="Plane -![png](tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_39_0.png) +![png](tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_35_0.png) __Wrap Up__ -Tutorial 6 completed! Try the following: +Tutorial 3 completed! Try the following: 1) If you change the lens and source galaxy redshifts, does the tracer's image change? @@ -574,8 +581,3 @@ Tutorial 6 completed! Try the following: 3) The tracer has a small delay in being computed, whereas other tracers were almost instant. What do you think is the cause of this slow-down? - - -```python - -``` diff --git a/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_11_0.png b/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_11_0.png index 96ec34a77a83c63a556542d441d731e1ec57e9a2..39d80a44647883b6aad878ba04af42ed50f6cb06 100644 GIT binary patch literal 6619 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 aaOUx>EHH9C;ebzZC>&Nflzi~?#s3Ej_1Fyn diff --git a/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_11_1.png b/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_11_1.png index 7357030fce0d768b35b5f896ff57b2ccf4f34eef..3be40ee7f0ede2c80c320c59589e04288fd65e9e 100644 GIT binary patch literal 36097 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

cqd6dJMF) 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ᶫYG~mBi7S*@M;?0H*mH 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 diff --git a/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_13_0.png b/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_13_0.png index c42325696f488ecf4f18c591a2f27472fcf50ff4..c41da72e82ebd7a5c07004187dea7742039df917 100644 GIT binary patch literal 25491 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 L$%D}be{5HwDhj1491Cm! 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

udh#w>!RWrf++EfYEDwB0hzy1<4Ob@o<( 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

-ZtS2jd!~IPx{)z^GZNdq<1@yoK-m2vu=6P4 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

  • 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 U6G`a<0)DjAbRSnfdhz!E04dwu+W-In diff --git a/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_15_0.png b/markdown/chapter_1_introduction/tutorial_3_more_ray_tracing_files/tutorial_3_more_ray_tracing_15_0.png index 3f1fadb1de3826c14b60df3268b40874daf76118..efad7366efefd9dd68844399a5bdf91eda5a5d68 100644 GIT binary patch literal 26267 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 ~QWyuzoUE9NDuHQXqiDEhK;| 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

    siYwwW!%x$)Pi3r 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%0Di+cX+&<<*NNl^&yb{Z>F#0e#-iFJaSyOA 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%0A)2iAHBQb#dzCq8$H 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

    M(5J$w9Y0Pnc{6!S7qI4E;u8BV-@crxg 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

    --AE~dwaubLj8r6|mV25zh`KdrTB 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ⅇ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�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 literal 794604 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ℜjsma5g2|Hxh>E4OYbN?cTB1@p48cm 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:iOBfle4mRIhVNt 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

    T)6!;4*WbY{6(b+r+AJY)JvVEN#B}TcNw!L; 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ఎ*Tc#b%&(sa3l!p$+|pA3A5JK*W< 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

    N_wy9aXpN3F?<=NJjF=9ezcihIesP3q`EE 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

  • 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 X0<8mEa$>z0`0u=uhT?O1Q~&=1`*ccv diff --git a/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_43_0.png b/markdown/chapter_1_introduction/tutorial_1_grids_and_galaxies_files/tutorial_1_grids_and_galaxies_43_0.png index 5945e1e837568adb0f79e0e3df638256fad9a1fd..b7fe2ba0978a334031225cd0c51e3fb139d62327 100644 GIT binary patch literal 5325 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 F^-rRKJU{>d literal 18315 zcma)kWmJ~Yw(bWA2nYyBNT<>%ji5*fBKjezh)5_P-Q7r+2#OL4(j|?AbVws0-O^H$ z5_0E@`<(OR-ZRGCW9-4+@At-9bItk8dZxkmRTT;Gsqs-L6rs{>IW-gtlM{u)_G!3H#aq4bTqcLGqti5;uYZM73XF&vA4Ij zli=gC`0qP-t!$t3T~X-Qfw$mU-`251p@^R%|Ha6Z$uLEs6!w+mZmK&ctW7w%KbW7D z+3Zmo{lvALWM70IP!=XT;;SP6DWyUFHIwCil3h;TX(x?}!L&%;W^T6c+^IL-xPR?&>9%9li8H=PLPDa$ z7_fwrga3#&q{zY_ictB0pr9abicoyyS8fV&W@hFhZEjBZ&8SdY9e!&w7zrk_z8a>$ zA}A>Mq0fX->D7`L{H#t~#GP7FatQ+i<378k^fQA&c{UanteZD)rWnGf&{&_+(wO-9 zH`80S9ngIy*HC7s_wzKl#0cR-gNjN@c)q^AD#>%AhJ*6+?aTCenjOfBjEq-=Ec{|j zgOLvxX2Of2n+?!Ru&U7J|Nj;LFAvV+@RDmzyIaODQNaefs6*QwxF=$LrB5eABLChd zr2|o9>KLNGM7+K4gsR)PT6F)R1`o1e^mcQKEnPH^Zr}H@%aznDB8hDjbb)a9hynTw zk5J}UpF6vl1Q!{H`|$*r)}xH4y%dGy zT9JF>;4*W*-CAZlb<$tBK)45x3;z27Z0c9QUs(#y@HF zKv}EtfLzXVbCz$`&G*Z!k_zfyYxnI3VF~lWMQbNX29p8D+kDw_?q)t`ht-82+Rh_3 z%w==$69Y=$0`uM}ax)u6tZRksZcjn0;Kv++^Qy>q+&^ay+=}GCcTgqq;ZruwqkD`0 zzHbiK{bZSD{;Fc2oOg*qCJzkISs7efr^hZ5xXt9%se;HgeYoc6`LJZW|ArO6!7YRI zf1k$;ZMSgtzOzCGU*({P9kcezK;0&_W=uo9!RI;?M3D=uynbqsf znf50Jbw_;G`PVZ>&w|fBFLKuzU07V~mzQ~_AYqFur=H}dSJda+6 z(})^u%{JdwQo1?y)dT(Tq3gulVrM*-mX=mO#idIFO~EfF27l04s_wOM3_jiX;?8s# zEb1MWQrU;gALZrc&*S0MSG#QUyZrw7f_`Y(zIWL^J^7BZ^2JM+{AXtkOiD-7!$Qh` z(6^Q!@fxVVp?E7=`5@-22pqmJ7YBz=PR@%O>Dqwg!!PgNzo!{3vk3k9^XIB`zGlwH zL9S@9E$-KvHcB4M%qcDUX!*3<+zX4{iGH=UwM*>f18l>DdDV$%9g8}? z){0NkaE68#AFAuQ%#)i>eWlCF${H?yPE7ASjlmwP97ZRpX_V_4&5CDOIoKVoL!NvE zv5sg9(ueB2k1PEP4O^L|q-awWBVT4@T-{q6!?m)qiY{ESP=9k{n1hw|6Zwq!-tJWt zXaTx$B-ni`mP;$d{g33rd`e5*p7gLiGfmEH|K^?tNeT;~#K@)4cc}*9fBSf-ZmiM8 zItb&`n}Ybv2}0ZHR)&7ics|6v^m=ux^&4%U4RRfHoKB6CRcfGgPip@pN!JrJR-QX#r#2*QXd<(fXnOXXZY2 zST&jn_NMbW^X<3K5uUwb!!v46+4eRS0zfmLAvY53DK|NoVR*-w0a|qi$Tx@OC;T0; zXC{y*cRgEaE<G#?831WiF}0XGYqV zDDIDNSWDzwYV8k|N8q8zjGOb>!irI(o5UdoO0(GxvHZS7eYEL0L*4@QDrqLHSl7wS zD1f4m+UnFdBjb|J|F)LP%Ezf?dv<2HMx}7wN0#ZS{m>|y{0w5u#3*7Fe&1JNyhQq0 zCJmM4GM_RBaG(QlpfJ0!669%7gJGTa5cK7x0oqjVw8A#E!SBt70s(vkA&flWg?)8< zUpEJ{qqWlKJ|Q>az>4Jdl(FfT=`m5-U-x~duYr_)1j?sHhp*9}lML|pqr|rnOqKh$ z|Av(BZSEyRRE{obqw_~<%`cIy3UYJaoi3y=&G7m`|Lum2ap}Kz_{pc?*%NQys3^dR z9mF|yUi#;LG?DAKU-`GX{)otSuiC&2Q_!)7BV=B!OZhHGzch|XT}r3+ySM4K8!?w-d+<%Znz%Wq*6xd2xKkgI;9M~roY7})c!=3?DP2)IsM2vsI4 ze!#hT+ngVzn$5<{TuDwrj?rRI@Ulj&Av#q4whG^w4?*1A`RP3L+~jR9RGp~XgMZS{ z=jQYctF2aBtMtEcNn`2Eu@tGmMSDC)MK>=VdtrrR>!|%xkX$7_1^G=@CBblzL-K!L z@lkNZ_im{tqWsPE`8tQznG8Z3Q<$S-+KGsr2r*Ia#aA`VsX$@`O)1R72T4p(top0* zx~z+@|0xbyTm2ltu5HWo-dB`2pJV!&e=yR~R_CsZIeCbQ@|1oRF|L+)c1m%6^39k{ z{uQYYqG)!66}YEbjd#H)^7YY$s8_5r-@cZna(3*er>ON*af0<@aC1@^n&3V;=OUK! zIfYt=ZUNI8^aT|f()<}j=Dfj=s(VwVR)L}g7=RD9FTG_nq5Bo}N-IJ})i@M!h^(}s zA=oyWV^4J>M~!z~vcUV0z~k}5T$lEg@o?1$qM|fe&yMXre5^%l)%z&*5eg+e<)UXz z4V#AGhP#){}v_$G=3e z;`OKBC8KL**405-YPeH}aAltz3~3{Ch_bu8R2;XCZ)PTYADUZXN<`0OG2>>yq&GP( z@0mbZ{Wnw8G&Nt^%(cvH_s9fRRaGsCQQUgPDrMuMZak872_V83ghL{HeMa86{WS-b zw7VD%A+>#np@RgSva<4udD*YOOQ-{rfi~X0ng5O;Y-K~++he(G4mO{5#tUWWwf4jd z;pXS(r}MD0XGW8Sq!m5Tmo2!DDt*J*A^2wSDs#$$yf#|t&Yi|kzOO+WUyq33Kf8yC zmxZ2vsHhk&NlQx;wpHG0X~t<(N^4rqRr{sdO?ejWDB*E&1`^T9s;UxI+Am{DN=goo zj66NsThp$vX8QH(mp(sL{vW#1hlF{WkDeDhSgLY{MP$*5KP;L{IMb55ceK%$#jF`4 z7-S;+{m=DNkdgU;G?V8Xr$G=C}3h4hR;|Ld?0DCfBI#e+?IQ zFZ}v-;oiM_@W0XO+@Y6#&iF?sVxmx|Cqg>NiKe8p9A`6RCv#vuy!FZ()MU=+rNxsq zP%HZYdGc6`v9hOskN>0?YJbw4QR?odHDZ}$p?m#xqNB)ruHrVxuGzB@=_VI)T3bji5-G-@F_w3^>%_#=P%vg{6 zWX5R}E+68QH!CZ>@?XS7ps)NC^LK~+ znc~EQzad{8Y9T=T( zqkl~A=Zj9~Ol19gfIKuL_5nL<|8?)Lqlv!Xv(4(knu9uF?KtE8eGEv%pr+wxwWoIx zQH(ZoZFO^RHKwQS^ItfVH>7&dkVX_;=H?Wc1$`~~?Wlm37ydf@jmsPE75SVwd|omQ zlaCk=7v)~KErs8HCRiOA3UV63Tt5bhvfdP3tGcU?V$NJ(r6IgW?qk$u`#d_#osbMbfd;SHs0JI`2u^p+LtC7#9jTC~LZdy43{W|q|)Pero<+dVjF|g#mwWsJp8@>zX zSg~q8Cmh(ru?bfZOzN{hu47n6IF~4%M@={0rPTl&Uj?^#LFIBUem5su#AD8ubTXZ@ z(-@=)RTi3FPHFim{S@VWdUV2lLE+zC!Rua0S{fpS0P}V?N8>2V^1lZN;DL`0pIeKa zN-k>vj5#$F=0J8sf0KWfOQ@viW7tsq`)Pd0pL0jdV zbBKymio-7paEx-eUp~UIR8P4y%EIZIb8~iuK|YXpG>V1Nq*IwABnS>_ODW8}cI)vi zDSoMThN27AN2^M_n2Kj&rybN9m?IeieELCc&zsq7IzS_@hyR$bPhp>hc=>%FQq=VHEZ1pS!L`w!sSx-0EB_SynrSd} zIS1j)%!9+j*{xQF*8Im+or!_(hQW0}Hu9mOhX#z{bX|I9jjj zE3BLN!3iwW7PSnz9ho{m2vgyD#zKfRn|=e^UBLb)9)om z7`8?{ovd~_n2VIz?7cx0Qr1Dl@P5`n%15d^;#KROo?T7jy31j@ z=OTiFnu=ev@twde2P-)RpH2I(fRv`cEG9LkMoQz0ii-9N)VS`-0)%(P#=NU5xoPov z;kJb8^H>A$ZuG%~6m($s@4n!KXR5rrh6kzsaE+TNDJdzx!^(gJ8#W3urp<--R_|C? zgh@oNlIu|oGA@R5^~Tie>2g-MmCefo3`91}Y)?@P@ba=O+l z;PI%wT3>x-+m3`ulU|H!_N<^=0_EF(CO(jmhb#CcB)r%lj!8}?PE#9+%3vkfw7c@+?(?A3V!^Mu5re$L|{fcUw`OopuR`}iFRITaDp}@lMUlP zj79?pC^1p2N)41x+%YIADfF#=_m(vd%9CoE@|!t7}9^PXC;6 zuZQmhM*g^I&kfn)Gs~RJPoF-aP&gN;ypz5DUS3~c4<`-bZe*G8+nTGtMq8sEwl9*< z;Ok}oPuTG|UFeZYha4T{_Sxo85^{3vJWYZ;&CsOlZnNc6o>g;;Y}@xaS*vL%@su!s zuo>w)32NoCf&0_gAc&zO61dPtd&m?+?JxbvP~(rU8W_4;#tea40E#8457(Hn8b z?kBrLRN}U*5wzmIM064ZqSV4EZ8x-}ez2UI`c>myKEyU#PI)A2(aKc?#$q~9l}RgZ zdv0)WFnz;H?$syP+JhhxmX+h3Pa^4LnK}G7_kp^s|)5EX>SfPKu&z)hVD$FNX4)VaHZSPLT{U zL~x*)gJx3OokH5h&j7K~jr{hc{g7C6nZ_r=#+g zALHu1r0VrTv(nLPTYK#acOi;9=E}$V6-)Y8D$%d&YO%Z`=;gBy@aEPCx}~vlK9qjf zJK-qf%aHXW(bA;H{=}FoFR0Ovyho|9k+(w6iBeKi3-#-LUpA#E{1{dAyLwc14%PX0 zN=bd`#Tgbq8Upy!)xAJWOpK~)38&eb_9Jfi_6@HwkXTVo?K>T|Aa%IImCjejE`QfW zOlB5>c2bl99=Q>hGg1Md_u&KMuZb$k`T6*txm={cfFT@g)iv;yC^q z_8AyZr$x(Wsb;WuQmSR-@pW5@v_JGLe0cQZLyDlq=ryEZ z;^X6U{`~nHr+-f{29iia!oqU*x1k!Le|)fYo|w3`&IgNxfg$qldy%J`)AfYG@^_8y z`|}}nF8$YA?Zk>73j{(U0GmXVU(q=KX{qLIADTA=R^5b2GcFg|MdD4?%MIe6a*xeYmU;jG}RI9qEqgEZEd&3BqSR8`bf}dwDwnb zms`mZxxGQ`UKb)Zy z{Q^}SI|X^!)UrlMMi0!K`ol6oZfiOF6EOuMZhPinIyiuh{EtJb-S#cbM~dbvv0s`e z*XFQH(oWJBoVwF8SW5W$ta*?u%yUanK>Yx56H*7$eu$k^S66>_Tzi=NxQaqgPfyHx z8imx5?4Gl738X)|cv!OMo8J;NJ|2VA zC2U1Ew!NgD);Cqo)m*b%-e*d4R*;rzF|4*fTa2tCG}=Ypl5 z9vEoh|NS#3a4eF?=YEYS#SpZE+~htQfKb4RsK};(h@dt9r&K~WXERtuW0BGXqf)g| zJQ!5|q`dLT;cmrZlAFGjRpjpK(A3WG(MIiQgkQ7;dW@sc+WdLg!3M9n%=^%S{Z9r4 z8~lBR$Qcj1MTE$HyrHQ{;qLC9FR9qPKLUV2}^>2U$2rE=q{63$Z{il`^LfAr_yj0nN`;Zm*1*Xg_ z=Qco6>;8EwYzf3`R8Q^xpyA-a*?gjMw^EcXLDXuJ4wq$Y9x5`8fvKAZMSj|qlGrDW zHGKtn+|zpN8B*_wHTUTQXbYR zcHD^z4$92O;W=1XT@Cd*J(_weW@Er2mo1~3UTO)EdDyYDXt&Xu6t}myno=YLl59N+ zq$DGi3bjL#AdQX58c>ZTd|Wp+3Yk%CUNcGB+Z=VLC!U&T8pKb?$;nrVC=VpJxa{?uatX+!gU#?H&+ zY!akkE4~U0=&jAo8vshwutf#TaoWOZhD1iCx_#X5n{yxUoZ+25?6CM*R|6C`0F_0=`#LQMe zTX153A(Vc(K_fCa=-o#EIcfxxqGdg?Sr)gDjIUD?Mw3l=*+^j+;I6%OF7 zUw7V~+(UWqizYNA{ggt|ugolAXFQKIHJ8TlHr*>b_{~^}kLtkx{c;M7ey7EICXMxu$-&)fTii$`HD0$^>-0=RA z^eQs~qQ&E>#y*sHk5jt-ZvC~h%@qopM1)jTxg`qofcQ;KIT8{QHrL9h-to}(O-)de zdl!!wYge%0S>=mI#OZYh;q6|e3k?dQR`LsJKmN15dYpToeR^#z98#WY$jT~C{~mQk zhc8v86Po*d`lWUp_ckEo4MRg^Rt?G0`WdndV-~BX!xq?)YLs8Sett$ZhibaTSI!+_ zXOk_xgih|8P$~6vPrsTlNVqZqrJkmWX_^tKtFd&_$rrI8xl}cd(?47}M-{GF)dm&B z2~;S)P9BA2g!XT3t<2Z><`U82XN3Zg!?TtYSPdg|)-S9OA@e}2sOx!uLp+WIJFYvJA8W?!bj=bC~u^uQ_CP}hC@*y_*0 z!PeXc`$hDvYN<~=MatQT!oMw=<=2!N!FudFA>RrSq@>Z09M5;u1&1GVG-$${f4}z| zcDzEluDW-yJfdf^yvB?;xD!J79W*hkE=94Dk+YXPfP9dub_WG1yxiGK>QZDynsqD! z)5xlrn)>mePTMmTpplyq8B@(;gt zbp=F55+hH0o*X{juK1tC!WZIKz1>@)yN&hNst@M`P<5RoByR^KRiJ2)ve0E#aLB>S zi-U4@cGlhBf@Go&a+VTE@`a71iqwc(&&|X#Szw@wPn}3*=qp)~0?pu?=CDkvaD{QN z(-U@1&ITwN@xaGUaToi|7(s1 zQE%TmH@?C|nUzwTl~&?Ch|Yr=v5=zN4J|_i!}u*UFb5p*FDy@Am7oUo@|RCIjF)iW z^!zhV3I2v0g65RDsPI>;cpJ^~NW#ibWvuep=G<8K&!7l-=+ZNlWVRKBWj)9+fb8J_ zs>UP~ElLps75`$705_JC5293CJHKxYyYW6j^36(&k7u>xgS|1ULW5>}D4rS_8#8fn z5kO+YY#1F5EeU=vmFE}CHn1LtlOPcCkpLTU?tKpD6IHmBzB}xD?G9>zi<;%}N)~1N zB#G9rsEe7RZR-9c1zlzBEhAz%oXKON87QnS<}Um;(upgm8qD}~ae@O}l(ZW+4ix0> zXXn%#-r1j1hYl=6BKG8=Z&mKFhNLP7gARU#CP4^i_SW#5qv(VOR}d9`493-!6go=u zL}rqX4zr|4ca14~_C`i!7O)0YWbl`2d-w)71Nc6F2)LW@zwlKD1 zjf_NCoPs=s##)_YtJ$9lL`eXmyyszek%p}J?30@CNlRIajHX$|Dt+fqGTDTJ>A7NI zyGYX?RwRP_To3jNdexB0Tk7=K(`KF|H{u={VmmteXr^pjsF0rS-@gVmn3vpGr^m}w z(j##fe9GJ5aSC{RMF}dRkXJ|z7OiF1*E~QzU`Yg8W1{O8k>wkq z-mDl%TF)^>r=U@K)BYN?Ibm-DsF)-FnOZ~1TWRY0bHUtUr@v9q&Ol7QNF4Ydg!WI= zQC~f)C9e@VibXy24wRnogLD!x0cf=1_t7nlw3Eq5^^-vt7U{Lu-`ktEr?7fPC9Zt$o8H@8qdzKxkc%8a`{4hN*RieX8EJI zukS7?P62wun*L_`Z=};)TeB>(yq*zo9h@ZP?E zq(V4&PpUs#mdCE#4-k_Gg)?Nmk-;c>{M((O>7~mD6)iswE+WGphhzwHE3z;bvBNTa z4@~GbC&&t&_kLH$8oQ|pEELzYP1C&%4pIR*ohyQF+vsP<0|WO9C2-ERh36Y7*PHf= zzoeu>LWdj_0Y7^KWv$c{CEX(vv^F|C_z7K|;`^S4x;t-!Gvf`>Ohp$VRy^2>*K=kS zp(?t-J^aca?z!O^uZpPJQ}_yZkY5eyhRnram(LOwgwuUOSE@r@ozc-B*1PP1bkl#Cq-CU@k@BH=ao7gm=7!}||E zTG8;SYtU@{7?qRy({)p|gpK)qE9e!QdnwU@tC|y1d4jAPsqsTDYA_a0+t&w?3SlUI zG&!1`RjRL??T6}exQH|_0M*l3t*y7Ef6sC5RFesjj6gG%nd=hChvw6y4L`i=w@?GT zwO&2GiNj9PPpk!*nYY2+7O8;(chZlLbX;-ptIfgU{i!w0ki6D7_JRzZKDUHVGJ=D= zWk_Zm_r2aqVBv%x3e~ayxUM(SQD2LcGMI&V6 zXzTD^>wPs19tnC9v>z~`MxvxGsy~}Pl<6OjjomV(612iCOInD%DQA=jf-?^*9wjPP zbZpAbaAh3m$AdWWZ3#DhzZRSI1UYk&1n7_mXIa`+Pq#vbq$M&OB}}C6TXkAY2Yqo= zYIM#hX|w|%R?*W4PPWNPK1>;zF#?jm4*_N8x`czB^|$C*(D9Rm7UoA!ArEna${Goa0wa|BU$H)28!cs?yD02-GU{sBNZ_$GiA9H` zrBEwX`FqGnfAkv#CHNqaSyxmq((s5_S~B5&SaRFw0&`_ZqMDCQA=B`onU|D@)*Xma ze<^o2)(|)vwDhz_w+>naXX5E}W-%ze`uwbmx~aK&Vv{OS6*qCcz>D=CwW#TVj9mDV zfhYEYrBnc6YcUE14X31~G17ZGgnlnq3ofFuw7asB$Aq7E(^gbgzAJ;U3yLu2dY?1M zq%RMV=OnKOXWr0yy-KM4nGNqmdN`!VG2s^CTjZFFp3!*6 z%DX@_oD!$39(pl)OmcF&wvsHIj(1;w;~p>*9xy8fI$l>Ct5SvNcZOTc?uF2SSU8RL z2X9mT3(34<$I7rprP;PBA3(CA3^7xzhqi7)nX!N zT|?kByHBR0`zkr86Tl^iS_M3D)8y0PtsV?#2NN*_=@K(2@vVqDqy;n8*bx{^@roWLH$`ii|rf{~YPY$F&KP zYb6x6xu0(BX2brG-!_mo0 z_|EBGyoiZd|7^P%%6nAR2YUMaU!Su}lv$G}L>z-T3t3K-Fo?PQU%O)_kf`&KMR-sPLgGX8N_9 zy(9o$+m-pamCu}inZJ&Ck;K2@vx;N=aPI}*aq1&}9QlJA7OiLs<~x9{aw2&x`b`WO zwx8Xfa5`RHe7{#EIWp(d?L*bibAHB?+6OOq=^4B)bEG2bNdyCtUITI9_o&AyLTiyk zwvBJ!GKK~11-8`d>B}-7N&=djIhtKi_;tIzIs4$6xp=G}wc(nKMZ})+IN5R_Zq>OI z#XI-%J7kS8kXPz-@C-ifioT;wp8V48%Y6FD*N4Iij%J8(F3uDLuojkFJUf2>+I*_R zWorq~>v5(J-(aIg4=Wk-?FfLC=7SPd^x+78#{geWsqGu2`n;yX`-5JoHLhPA;)A=9 z%`aV$TagIM>3P2Qoq=KaaFAsR^hs&Rgb*9tOXTBU)8b^^F`EybiT+FVy`Gq!n@0}V z2LVBuN#JY%cj;-{(i=3?YL%)DP$+nS3d1wV;={OF-;SuPKc zAG7;(s?Ei>ui6d~e(uD_foj`hS1B@@i089%El<+qUwNzEw4|b)39VoA=o@Vf&>|+8 zxB}~E7E*>(8kia8%AE~;cbXmO33lzXd3Z=Xm#AmE9Uca)AnKbLZA7j$6Zv3d*jH*(7_1rH51ZLQ%eDsXW_kFy!7r_ju}(K^fM}d0*MJuSl&!eK5allGcI=Nlv1z zA*n`0T$cE)Imyl?vzJCCl7khJaYB!WZXdN?+_NXN2^>}B;O9a2Bl0O?tfa;wN~b_# z3-jxCYbK$7HJHFo=*=jlbS>YL^{=JCS8ZpbfxHMxl!76gg_7dLV0DICw)D1l931GK zoQf2CG?SM4zLP<|)%!!SaaL9YBLAQ^WylymB?v9%D<@Jljs9ztHADB1vj_vpcI8~)PGcO;ZRae%rI>{IcLz7w+Das?iCfxbNC zutzef{Yb6~-T8d#jzRQ^VtO+`_UD_`0&!j_M?ChM=o4?EOY|GRxSrutqsGK2&(U%*p{z<0#GSktd7{uC?Fp z;%n`@BQN$&Gt9q)IiZt1%Pu*EODaKQ>Eeex9$t+6rD54ned37fC>LZueRr2%gn<+B zO*NGlbIqcHa5L)l;}Gh(QU*L~TuJ-$y(u-d6l*6XCW{3(A3Y(Y{pFHIB76Zfg=C^E z+YAe6-OK_t=YlUc0}Zfcx%2yKL^V4rV`s;gvg(5ueUnf8fJA+;JwP&ug*+24Us@mZ z>6c(a8+!}XuA$~$pVg^$Nq1411=X9m);l_cZQ*gvWNy{B448I&fEEN7;*pa=r$!rJ z{*oq<(9YSM)k&Jroy)_wXxowRwsJo6x`+Cshq}G(M+JESRV-Q~7B3N@XMTg7A<_W+ zPUzxn9)YiRaWn@U<5OAQ*9T%X5>(x>T9m-PGSC5gJ-YIjATta3R&;akAeFUrd08DW zsAhC6FLy7-&AID|?+6cddwpr>kPokNr7b z@G^zeR^3c8&Gh@);01-t%K@=sZyxOp#XX4Fb}@!H`+XU3NDEw4t-`69=vB|}S<8N2 zoG*AIYDKu%I7|uwBCLQTE4wA28voPJH!Q*%zvG@n3>=5hsQ#>JsMqt+C%$^_izE{? zig?Cpp@bN8!|Cd|O38+W=)q`nN z0tIZ;IPNy51-xg0GBwHcf;S*6kmT#MR_l(Kg#{6uGK&LC`b4SuF653YnhjXM>Uw4bD$i`l0Rp1Yy1}`#oKSE!idARI`GjAgZ9lOX&05#5V?ph+Wv9`o zH3vmpYH2NxU3<-&^&JHph?^x5rh#muWXJL59jiC1(w5iS+qj09QZw=6nD zq4H_{0`E7W)JeQ%&f+=1YVys1|D*NQN%Q^JO3ATX7DH0&rI6b~8clNvfB83i5H;PS zipk9iGe43)#;!kKYcd_#x_sjrWGTE1XK@?^8rD-YZN&2mu zU+DkLml~&k(2YDU8r|6L*k!MfQhSh|a})f9DfTXx$c?qkyB4PC`mR2B<({=eb@k(u zn$+v#v>Mh9C4p7NHN6_XI$%jb=j_x*n1=g_AU`gb`eE`Kot<;De*U|fcD~}x<|j`G z+IQGm}Uih={t>mBW^|NCB?absw~AZVm0{M;L5;Ig_H%9IKM=k9vAYrq0d% zNEOi%nl!_%QD_-7gB32llq95Ls0sr1OZTC}9~7YgkNe{Bac(bkHOAbN4pxe}0=9$++zF%w z@Y#M@4auH^Zu7&)L&4Bo@5ftI*G!^JlVv~FeYolO*=b|)MFb2#uyb%^6(gTpgW~b; z-@lw}3(mkzEqyqlzV&Z8ES#LN_>Zd`o1q1w zas(4jW#%KkKt;hS^^;NzQo3MfuJ@;m z6)OIYl4x>(!5|AKegGyEpu-QTALhlK2KJu&&&_`Sp0%f*tNA*3yPZ5i1)0V9pGmQH zLZI1nCWy!EQCs|6;o7VJQ)}srP8t2qprUi!2}!gunmW*jDVSc8Ljz z?5$ff)6?F=!`ifB);H`~-xnLU5`|F-U;@<)D(S$BA*cIxr3(nn(9-f#NcDlv!0ha- z^+M<6zC!cve*`JxhnI4m_aq%auSu@8$OT$}0jx@IMJ(Pev5Of0$kmBr&FcP<|5);= zi?;gTXM@=qZ>2pXo^>Y#18;^!LW25MAd$SPYQ&O>NLqC@RC@YgWzq1g1<>N&3L4|X zAWLA^d(qU&O6prLFWhu-`2x4H@$+AVFExL>6==OVeRCZ6JP4;sH9?F?;$2rrWMu0r zwmTQeq0hyTq8G3!# z8O3*@L;&@EVD$mld|`fJp#i!sW93$gwVo$(t%aua^z;Xtjl=>jzm59P=Bhe6m!SdX zdr$h$Ibd`1N;s_e|Jhy)jW8B^*7Ys`2B(;rm~Pr%LeZkLZv8*)PY?3j&eVzu7_$jv z7bfzn_lCio6p+Prx4lb1)4Lllhz+tT*tQam*ZRNaq%OrZXIm+oSh~2l@Kasb+}+J9 zo*EjW%($0K@j9eU3d}0~?)#UMHEyZEeN34fPMB+rOoj8x%+B@=4JCjB@`IKia-9ER zu{X80hDI0^8yFfEnvV$j2L`eT36T{)?@@qGQuN!m=ff5Hf5K4)y$go+5~F|sdg;rv zM-=q*2&eoKCFNWzgI5#S>}QW7$2f8!<^K@f;RGA&>u=iAzIW)kzW?@XWJriCFfU|f zWk0*_nlWVv>Zs?>&d+0~sRaX-UE-*?xOir9@hUrcU*h}!v}}Ndj&;_u8D{-Q+`>Xt zIrpfjCbrE!uo4`lCmC=7QOC4Xug zcrP$cS+8CtaPjCye+f}elO4)`Txi@u(J!6a7sT_ZY*SZAhfOC=z+pu_SEm@q>+hed z4Gj%)ie@4pO?!#NB`Oi)={g@V&towtQm8xvf(p>V0%8AguN9CP1JKO+si`Mzt9Ekp zRtW7BkL(KLl`A+CRZgwYYehpz2~avX;@N}t_V$&M?boj_v9hw(H8x_^*VkjljKm?0 zyXFvb?Q%=HYt)2*YbX=|kF~x1rG)M?z}+9WBlh+4LokJ$OH+TW%wo92GzJU<+W)#j zwe2G#my?o`5}b?`3aWqOD}+(`L`7W$ywV2;a-TDnO42bmN{XA)3wUN!KNl8e6P+e+ z0`UV;UYM%W6RM9}?*#gnfPNjSzXwnl7lqL7I^uZ9UbpXY>s3>sdTYH-C5~zjSGZIX z#0rxxl{(RWqE!{f$V|{`7cHB0|Du5HiiK@b>oh%-o#cz`%fl z2i*%cB~pMPw~o0T*Xsa$Hb8`HA(l7t0afO1Y6>P}QX&OkT~l)%&U&-Q>o1vxhQ>3m zJWwyG-GK+sye4yMfM|xG3_MM<>tLR!oYufqQ0+UU=XTfr5;M~I;BNc;v@t3^K6rbv zXAU^N4S+)Yb_*)SwGlu-26x=~w^~bGU46QPueRyux0sD3mmSxdcv78m7{quAY6yKl z|0Q<0yAe<>_XVIo`16N}o&7xYe8Fj76tS8#ca;JWf+@>~Qt(Xw{OJ#zIrr0(eTSq} zKn$?$Krrg#lasCF)8oZ=LthRD?wOf!vMPb0`7Upzq%cEg3WhN-Q1}D{0+!=q&Tejv zz_+s)EveUf;^EL(YuNab@P5u95U2vr3q?cixO+Y}7w*yy%V z69^s+u45gnUO{lt+R;$~tYL3siWnsZ%m85BqQVuhfIkb^`$PP05e$j$tc_7dL`0m& z$8R9utM>l=+qQoWsKW&{d(<$K{6RCP59o64f9Bt$w*s{_0{s51Jk7?bDTadDzY=C< zW-5{U8&eDjDdz8=9JYRj%%r-!C`Bqw{7bVuHEV4Gfrp{^|#Y(*HF(o6~-6lpI-9 z$wMB`lU*&Ty!EEwMrwt+)!5!2p1c1wZR8Ax>xp|7=DRE3w8b|WxTS9jwWoXFBIg&7jP}>m8-lZCViMdvae$HuSi4D=vbMMP_F8^ypEH*RRtd z^vNr#2|-q0|KNbzXn`OS4;MF3!uTgJKU;Q|`wP8JJrUw6*;Q3J;6n*GZ|Xzz6GknJ z|Mlxvgl-67)oLdtrZ>?03_$+cHLk({P6&mxq@+Zm)qZ1=PSR<;I{eg3PDJ(!b147Q zhI2Yu>h0a#-9-@nV6@=}$o>VCwmNhJNB8E5=O1I3nEz5zqOO^x{(EIG=WgWU;$jDA z&2Jc*G8v^LC1v*7=~FD??yyx>4!Lkc+V*GA@)pnoFMC%ztZKr;E=@rszadauIVlgL z6<6~--fFdS83)e5Ph1A~-kojmP)1LlJkiPMkKg0bDU$nPa?RG$^RGklt<=6Yz`3e* z!cxc{Fha2H;B^`-5U<8Kkj<2l@39tejW(8-ykHmb#<*=-kS0}x{JeDpi`_6 zXRPD-_s`;d)yCJV?$zT7Uu=S(y}i9O(yB%|V$f;2iLlq3Ln#pxN0{*7Avb}1{El9f z>Vh*Ee<8TgPZ=2yUVxvAUwEG&=|tpOLtj`}m_7vzFaAVX(@caYODuiB2pSZ|bn7J} zFE0_y9#qb30W-nc+PdP|DWo4rwxC<>Oaj+>S9gcPcH|TkWYg5*Jymbtz5!#)Gcz+b z6GQJHfJ<_o#p8bRmDUf3u%VGyCJYi3jLhpiFdio0zCYoVK4+}+vd=^g>i95jMg(5H z3N*R0$75xHW9Qch*(=ugz1{T*8e?PQ3j1YJ&=w37(90Y=d%z07f2S`3KF9*$X?Y9G zKn|6ZGe4NSfcY^0IH)+4pwaC_Ls~jIc+O@bL9Q&!4rz847YjWsw+u&GHjgVW z9qn%v2tApF6*hrTH%DI-JYD^fcl-A3I>>`IOulEyqK|sKxjWK5fUM#W0izji)-w&* z)jQwsw6(R>K@PUn&Q&nJDPB`ueP3H!`}q_^NysJr-#@<{oa|3UM@4yqFMk{}F*5R{ zy9ZQMv`gm25AFmp8%)sUR+u>e>e+cDj<~UAnwpX9NevXv^fkcO+sewaz`e8lGrsFE zuij4%GEu!dsQ8BWan!3w665m)mX5;z*G zYM=5+*N$rpM*Hh$5iq^S4q8r8G1a&u4ycB?%T5nV&9L3v-1_And~js`HQ0JQ5ldW) z4D5f+x%xxTV;l?tp@|tlZgudhxX1D!AyLw)MpJ zm~03M!@+V!^2%{naB%R__!qkxy_mK*sCemo4rK78QcfcUM~I0kG402BFKX2S+F}hl zCUvsY-`3qNLbowH>kFHi8`OHzjGRSNlN`h=eb>xvufth^aB-2zj0YL2$RMTjYF_yY z?RK~1hCU=bw^dbJg2}FKg0KDn%Mx|(hHL}$kjz0rW3hRZBycy%kh;a3)E>B-lC40?^QYMAL! zhaiv<|4_>|*4%d2T3H@vQ3mKsMvqVFLG7nT>dIaZz{JsT-QPr?LqXT0dNL)6|}}gk27Ts2{SZ59*v&u36?l zrH0JO;IIzY8?lR2h42PA^^1_49Ur?(L5N%KPOQ#J?s=xWe3zKAl zSCiep+yAiz{eh?r2U1`Zct&J;;Ot+72pR8Uzl4t%E}-GkWQ`;OdDY-79U|c0Q$gf{ zlqDdIWD*vJxkPjR*pDzGky24{@UH)+T$c~)lk4e9azj+CJnK?tZ6DS`z>s?vMtz4xAk zj+7+S0S36d-|zeXen0N4HJMqnvS-fh+2@?+dG=}~V z{xdle0qoSfreTYUmXncKrk*pNTzd0hrDW*Lbi#aLztR{rsdrw}au2H9Eaciaw z%@MF#xEdc~9Zt+BGb@!YMiY?4^txQb3dXHB&l}-?E8bi-n>z?jHDgGNBBiMnplpKw z=luV_{V(@`Dg|RQ3`PX=GSWA`_d%W5C75;F`}-eXYI! ztJ>NC8?~{u%!Zd&zuK-UKRGDK-%(VUnq4@otZLYHb`6;QznwB!xJpfBM>KSsS4|oR zMr$k0GuxKe!KVXW3|S_Ov~ex12v|VZH@t#_TaL7+1CxB5N;_R$9dnU3RStL9-hlDk z@jHB|1|mVpD3{kEqZuWp!{-$$K)?&9ck7nfFXxx4FJ}M3NeTMWY#QvZ%TsP zmkRd1&3CeBUvEir@sxjW%o>Y$J%t*w)Te!L=NtOF{B`P}*XNDsuRG3h_zW-*UH*8I z{HLRd!%5U+xzkol$tF~6NhhlSaQNKr(O zYyuC(Wb5te17*+6@fyLAUvj{l=Ddf@?m~Os1y}9*Xw=8{&+Mg0p4c;g^bd(g?2p*K z&^Ti!eZ%Z10nuCMmZb4F+J5_1LRQ&IdF2;hU8;)m%1>m4%6@uy&2iUaM!(pJ?h%g; zAl2k>yLiW`ztXg*P{A8qW2Xb3J$h`U($aACIk!GleqZAIXUeTa_VJuD>)BkaYd!t# z@vIW<1d~T~g|4rktgY#Eyl?rl)*;C|c50Vg5{`~gI!a+ICBHht_WPkjt}*f8R~PSP zS=DVu(c0!k)+Zb9C^;-WBBJ>}%A|X}|49qXH$lBmj%b=(bs01mt7ccQlkj%1{-tR>Wtv>c>+nip3i$quQP!I^MRN-!1qq13G0mwK{2t#wpU#D^pEm{`NZbul z0sH&Ay0v0(6I)+yN21ku;rr;w+%}Pf!;O)HZ{dbBRmOgWeFiF3R|AFRWC`4a{$QI+Cew@s zq!y4bU#QS644O3k;J#ZCD=wOU#|IOTXPHf8{wBD3v&T1+?;v__!$wM$nm4LMq$u&6 zC&*W!l8c8HSkG8qv1`pbRYWQC>k|hwUadj+zem4#m@L@&vd~USO6w>Tcln928o%a= z6sEi(4ojoh7C8xE$0AyWpz&lom++nX7PFrJ(^lGLg)H2D)@`Gze<9@*pm>u7;zf8bxTULT-#F|0 zp`QHXQ}5_yy8!)A^EY?4zx(o(+|4g?Wnazn<-Wt^6IJFkWiAX{5U2@tZ|;!qa~q_n zZ1Hmc7yJ!cS=mTL`iI;CsPsVig^14tJj+}jY@!}D zleurv&7-}CD?8iCpQVEPY?354lFsA*a(@Y;EibgKD1)CX6xi8`<-Qr$|DDpCHJ#Eu zek)i1SNh2Fas6K=?x^4gt#x`?VoP_?92b<0(sOa$&v57wiH$ay7n#wVZqM|8rsGd% z(dUPc$Ed)7T|R{vSoY0hZeNPMj`r&fn$Kg0!oBNlUrjaEHk zra^yv=DQX^NG$tW;(1L~dnfk&MuPIVH>Q)s%^CC#XxMp$uT!l13wJja*m~1ENL5wC z)l+`u@10H=`@p%J9h--+z@B1$6kuVAC5z!-+WgY$scHwgdG#8y%QD&T@i_kgYls5L zz^wV4#M9G{$p?){Hu&;^bmgcevU(`zp%`LYTZ;OoNBBkJ=Ky>7HLl=`8=+|S#^Y7M z`VraZeL6$8oPh1)!s;F3>rZg>LSYmCf6%8}6=Xbwz{(^#V8UvqU zzFrc=i#Xi6ehqq9l^SRMTI+FwLiSB1sMKB-%0>?^IJOOr9;}O>j`?(MwjjYHBuDKQ z&fdVFLu5QY`)$^i*J~a8_q+bZpB`yN^1rKH=Td1vwwyjnReAHzi$fTw|4O_@(irSt zJby#Iv$vI*CE#6Fxk<%`zp6POt`OP>^CFMEHA;0sPC--A`pJOcug)d^+@Qp&GOv!& z&wSaP#x*}Z^LB0om|pLy^(_LE(x-4fOg|4F`hT?`Y^INzFf@~CO5WE zRsM{LSU;_tR(`Nmf6Sc66XiPaW%~-Iv&{a}wRwjQSBK}5tZ(m^vO)KoWH-g`?~p&S zdRfu2X*)>WdOdXdlPR=dpIsQ0_c;8m|HOL)dgg)4kJo#BhEU9m>^b|}BXk9AmEo^U zs~EHPFTbOT7`}|eWN(nVXG)i(`#=x-zdCx(m*dpX0ljhPr{7e2vm_G-K_lKpQr+>k zg7W+aHoC5Cpx1=DSx<~<*J+Rt{cx(f175ZvySU$5lOUMgT%Yu%>_l2s5Ibv~C7MEU zMSSZ4$vD2i{A!$#uEC(+4Lu5Aqy4$9xUb`S&zS~6rnDhLrie3}GvJv_fT?5kt9!5_ zbIfQNR-sD^0--uSC^Okz#kps)q%ZK$sh=?B1_t?0L}$DAJQ#aW@BiIJD~n6P@tOQL z&GYKVowyuFj${AgO{Qs8Pz63ao^mwJ<#OcXg|*Mzw(yQV;p$Ogx)Q<5o+qIJ1Z%4w zbv!`JV%Q%IrV0?gDdcP+ut9 zU7O?;1NQqEoqxSdN{!B)gJL@NZ=O5??Fd5WI0N~P)IpSTDJpe_ zpy~{EoAWmnGSk()rfD)K-*;@GhjsJ=pK_R~tSB4~w!5zg9WmNC5i~~{Qi4j}XLIW6 zSN3%~&q;nUan$!VA%oXZd3dJGlS8GpqMbyb`I_72b0?mbQW~}K>s_Nt1nvw5cbqz* zZuqY=ISsmdm7vEGSM;XLTr&AqvaV`&?~3&Mudd5`>$yh17o6lQ+n+z*13$lwBg@fc z{t;zwkUhZ>s53Tdb`?}nbX;X6e0N>w$C!y-TV!;7%kKC*MN=Uqy+8j(EYoksQ=waQ z#HuPXqAvtHOW@KEyH0OM>hf}C(;-HCMCYaHz(lpo8GKoM zViZ~QZo3%O@U$>BKmCektZ9AYK2J1Fl0yv)2xx5KHA9aS3)J1xm^6bkWiw4>Q=2YY z!_1shcJBxq4fLS1Oqrq&PuE1hF}`u^u!R|O;lH<9egeHW2x33!s%CYmP6@xOwR zub?Z(SF}sK{igcNJZf}%-?v?-J$U7Ay^{8PJW2}bXHZB47yQhIi-_3j@?qwNO0l8r zQbW-N2a4@V{5r2~CSs>HcvsyA%p`^BGdNq1#`cE&?;;$hv8s|73fZ9;qCRg}R$>m! zDad*8$iDHxl01TIg0+PK_tNm=!&8TvjL~5%{#LxHjG4+qn@-;}%`sLPaQ65W?VEnB zxMr)|=~yM!@_~|Tz(ZI9CERu+Nfs9^av6PH^Y5b;iZ|1ll7{bjeE;NHaqHkAs}^Po z(<%M*ch$E?WJT-WV)$7@=%Dj0`^_fY^&ewm)e)^-kGzBfVWN<76P?6&wcLM+`g>s3+LE(QjRs;J&{h3Um z{d)JyT~$98bjGU6@ZMqUJHDEy6_I#4_mF7CSF>qj0yoWp(GmVu8rFJWH^26S%GTPI z$^b!cHfD|ek~!P@q9-Du3J9bGYhfwV(;pnI=qo3R+_Bj|Z39r$HZxTV#Glt&kCq;2 z@B>rryr#Ni@cWIEVsf7Sty7kNUys?{x*GOWoUAZ+3@_tROxb`A97lX;(MuJ3%)fVn z+JHl*clU)DNR_eW?6O9!tE=Z zZi-BjBv8ZqEQ6~x5?mAYmud=xPdbcf;f7f?A4bS{y~m|NyDdWc=T`A5Qs#s(bskOO2L&mW>~Xo@FI^P}q=sf^;Wq_(V(w0U9BgY&9`1xdfE zuuS8B_gYZ-GD|X6nhk!{OQv^RN>due{+Q|tB_9Vqci zd7L4J?*^ZRFMSV~X_PR`C!73jG5B|2EdMv=N}oTzwbbn->mUQ>I-ody40F!%oN zNC;=H%MJ+rYn15Ju?wBrs1vr0;}wb5vs3!5f8E|70`y{8g;_az5A=o^>cA{T&8GVA`=Yc4~3&TtUl~7-; zyWc2*-1MZ0^!+EY7@dKD-+th~_y}0>Iz_gf$LB<~wg)!9(*t4|fJWoI=iuWiRwMp@ zVI-|by2h%{rm5Bho_Is~pKs}YG)&Z8G5qi)fBZQz`{|DTb=EWu#c?caUCrtj6x$c$w=3>d>c5+`%sTM_~pM?mq>Prq7adGh!-Nyzn|JC}f5%?s{kJv$lc0tT2 zLT<5=1b%lcT-8dO7xhNfVz8gDXnoBj(*)?hkUumR;P%!vuM9zMF0mTh_T)W(0m8S5lgh0-`7hw0! zH5$((rww(B|Brw02^=Z^9(#Y=V*i1XJ+CZ;R~$EAWByT`@Y!=I5^Rb18--eHX8!n; zeZ>$R-5R-G8}%FV!%~P-N$yAMip7yEkIhW)v|>#!~kUysYFWHFQ_PR$gNE@VX|tGt+zkIFKG zL4A@>{`D#B$O-lyNW6FE3AZ+E1BMhMx{TBp9z?ikefoMtyu9SwCr<_y>WKDb+41Yy zLPizo*8qsyi~-Pb-m9IITyUClBHh#(zQLqV8OnB%UkQ80540`C<8Lw4kG)Xjl>_zS z!PDe#?`3mM?X_R)iRQl?q^y=I@gob`gYHa*xD?;O?SmAgP;UyMeskfR+URJ z)9*Wzb=#iO6 z&i5xQ(gTWRBk--`*9ch!;4i%=9&VEE)gPx>027|W2wS?p9QM+=5j{L_;;{xi@b04a z&ix54%~Me(sLwQ}b+SyLZDDvuto)j10@eP5E6cn&2D*ZGqk2TubRy7Ghi_?t1}R9%{$-QF z$y+JK+(M-1%}ui5G;VHa>xNbJn~gr=AeZe3q2R}hlT|XR6eu#+a9K9^5@qfz535%5 zW}``m7E9mJVg!GU`|cdK&SPTHJLFbL#sj(`00!C zgLjO9Da<1$;Vw;D8)pi|E(7yuWPJUu%z?t~*KhhkYBQbNYL7m5e-}j!UaR4f=qwP6 zacyh9OFPhl<3%qMG8m$*4U`lZS{O7C8e2cQusXWz&APsE_%frXB_d{q0*^LG8TYEl zp*GXc#$ZyHXdFL1m6Bti?PK3Md>QV>qia8QsG343--87|LOLmx@aeb8++f!PWJphP|T!RY`CW!p3NCfV`gzLW-Tgu z9qH6jjEY$Nwc$Q;74&8?(J_|5@1BJ#tF^Psb8-78# zDveDQVGJ^E=4+x{~8?yQXDdlPb#X`{ZYv1VXBp+z(L}*y@VzEmkouKDa-=mH3$4%2TnYw{7?Vz zN3_|4tBxw z_HrabuI|c@Pu~G<`lZHG7S~$LH7s5a8vd5zgg_v&v$F@OBQ>V~7-Xw*B63{&hxFDa zC%0dg-}f+9Yp0z1WKH^EMjJ{u3X%)0=B5H3^zjhyeEf5j>vl}{0cNd%Jy*#scQOoN zUEI6L?s~12!BfXLIxn4xBHGF-LuJr;i{sJY{R?d@bSqQi;OWDGt|VPj7x&Vy^KA@v zTu+kAORVwZbu)NJV~p*(&23hl4bKz0fs)yzMf6J*=rts>&*Is#^tM7Ow`?uh7TwcRa62DE=Lm4X*>5$cS{1G zQV5D}mcQ&sAI!*Ph8lJ z81H=OlRm=T^473oS~LtrZFdglDyeCb^Yu5o2XSe*INUmvyZPEx>%*h{wSy?z5B$9% zAx;q83%5AD@o;^nXMRlfTSB27b#;6=Vwl}% z>!W08V!_tOH^P&zpqDIWxxF*7w{><#$(KrmCeFn#L!Amc+4s`o!)rtav!5`bPJ)zt zo^C0cA#syf_zaUI>Hs@K1o`3})kO-S4;-veF)$y>ErJZu!+fmH+7RYY$Fl%WqY7Zl8SMI=b<@Pv3HcB(#y{JAH9z_?C9dz? zwxNAa6e#o&R$0Fgj?6}DP2T{ho_0rm#oZU*S^PIG#?}1S6cQ6DW(%EWrWQr9RI$My z49Dr4^3_K+&;HPJXPIG&oReL$|M_R~4HE}pGFI)pgA?U{JvC8O&a<;1%;31fGt_Oo zFp$^0qsj-OMGX81!ILH~8rYq%#G?I0o>>KPa}ICnAfy1Z$S~d<>IIvM6_As6(~}ii zP}nGsg<^`1lueR&$9}jF897z5J|}uh`Kv$4q;=a`=%=>e1EP|vPaO1#EMCzW#mN-0 z1VdNe#%xjklw^S~9;?3QUWyY0v^A9VdX_qOe_exD!r-6Edh+Ncg1&+k&g8xva3eA? zMDJ23{@2ji6fqPspI~#cK$&crxn5TQGSP`yMXpK^C2@v4@FQPcOyJjr@;&mG=vYvP z$>z2XfHycL;2udCJ>zw?Vy8129#v;&Rv@Ged2^ukiOyHUKOa;L_UC!tC?)MHHJKZ! z2eVkXonaH~Zg-ZD-iOvl?pk?gW^-S-{?OiR#(^NXvXV08^a?s!Aq(;p2iC zn|z(hC0qAurIJ^#K3J>o!xL>kejbm|dR2QKYk;U;fAoBxn#_Eh>3wJKc2+#AhqKJq zOu|{Xv`6Bd-;^z>_wkxlJj@}sG-^EOu+-me^CtpqVE2R-C>)Bv&aJ};#5S#&FJIkp zalQJRcXj9|epkPXp^-#R{VvhdO!d?@W|wo1d`UtpgQ2JG^%kPNpiBpoq1fzrzC%Q3 zY3U&t32--nZ%L$@$SSF?C^wbQi3f7QQ7VQLNPdC+kv&YJ4$Ir!`b`fbZh*~yYK^xb z)zom&0c@6%q@-_EfK{zrQCkg+lML$Z4~l7-gH$1vr>EYcRW=@g=FmlJ7s8+ z*|SzuxHn)Tl!L_Xu#|_eS?O(gGcaBd$nlB(7}r#pAoTaJXCTOGus5*-*KSjCH{jj3 zmcYBB+%HkeI6AS7ZH}E1fdpV@cKv+#`TTp#1eePs!tz|iK$h}*;>qUHr zQgiS0Uk$eP4_4XK9w)6&);>_9D4YGTB0T=b^51R%9lMjBnS`uh-TWorz<`bJfoo03 z>M1wks}lHHF-xL8y)JZpT@JS-)J8M#e%)DJtK_Cvx1p!e^l8H!HgDaOoCzDz14M{lLUiWj90ME$Ls+34SXos6k9B6{1dc z9QWb0dT}xWY5vwO+M%RX#fP*L*+qBjyoeXR6(~tU#PX%Z{+M~;!u;E*rLEP&_jt{O z8nQOzN3dI!fi;#t3K?I^-848hmnx$Lxe={e6`#(U-a2omL|u6~)PAymAkW>5wA!c4 zmAFrNN^;{1>{%~s&aCMP#k5c9V)Nh;mFH$_38lr89b;FvX52q3R+Obn*DMPFbdt0n zu?*#)G(#Jb%7f5caxGu^#!CBj;CTWr)5WWY<>Z;zAjR6M0r7QBLF(oUOa=)xHP#W! z2$U8qMI_C`w;Q!k! zDS6ihH)d6gd7Zt<6Hci6p5Nf!GDzE8uTk#CiMKGks4WN{`lr{sQD^}kTmSRMQrxIj zFsGsg=qoBCPLLtgCzL zU?1(XPvkbm&EVI4hU$YS!!BnXq^R1b!;vRLPGyfCdYAWRzuI;8)$Z1Nl=m)OA)*a_ zi5A{VFx&m1Tkx-XxqXe10g4S97!(Dsg2Jy)a=-?)rOV`_%r$(R7pbZ}1-{+NhVNuc z-m4+*c1sC8ue5i;v#U@~pMx+hO1ZL>4FUCWYbg=kgM@|iCE16XM|A`7ddsAu1Fn!s z2_-=0^M^eQ{r5DsgA*?J$S>&;j3&Fs<~XiJk`}%h+er+6yykoVUC^I(@A(Nv$WUXY zHj~hSoRg3-KWiqXQa@9#Au-$(rw6H&;Q`J`ItNilevggjQ#NsnPO&e89G4%x)80$# z?eqw;`E-p&OwBhdcrBJkV-CTCFVM8lR3Te)gNh?9oK;oi{z~X%;$`k07R_3ZA4|0W%+?v(r`@iYhaPcaEUX<>^ zx0_0+<|owL`eOTk(RhrC`!o{!pgqIksnEzcqP%b$EGLZ#}hGv@q5p`-O zEitvI_@zlwxw{sh`VKrniH@Ja0sKXJt(_ z$yFGiF+BN51UNc6g7fq9#{`{TPF4hh$cYaNm{fP481DOVy{K!M-)Yjiel0XK8;87? zkiDL`$Bp`?w?6t@HRz2Vrc+y71-!b&r%Ex?+G@Za*#lyEzKMnM>s}OxjI#&KXXKpc zy-ersETJk?n6zaO^$;HZ_HFVj19_GKrAk9pvnD-`z*JLvYCMZa@g-?OugdDQnvkj-06$QBMS)r6;g{;U z>Whm)bnRqVb}D=r8}7*gRQfVXsJL>W*ht|M$L}y^YdF-+6>R?&D?PE0LlWJ3Qf-+FdzX)Mvd$Dy%Pi+w^U3*u=d9kSgp0$i0t0u$fY&<1`Y701%$#R>Rdbaib3__u?e}pc?iW$E=Vwk<_6HE3K0Nc= zOC-r}^HJ21zxpB(^}HcmKlk!lij=&F@h9=z(c&c z{3X&3y!)gHHy`H+GhD}77W&Y1me4r{IWYiVTyPmfAJB>>-cx3jA?WCAdgg5Y$BEFP z3^C-!7DHsxG}u@rK!tg`-XmzRxuhWoJa!eQpMF9j_dIy}-vKpdtxd!oGAv!gXgAhh zuu%a&(|}K%4EAi2GjYMLkP=FH2C4genSE$})UVC$(y{7$-7 zLk#HxMaBS62ECTp;2ahCN^+FwUu#*2!aBmjx$`o4KWIG3)iS_HvYuz-M)kAr(?vuS z1NF7jFT1PfKGblZE=3-=FKVeMWW9lQPOG)5`xKdtd-Rr3S1S#T)}KJM*y4o8eIay zw~-18Ija=%>p>pSNI|NBbqF(jg=|+i4{-lH$|o4@KZj7xAKQpgVz1Q&o>OoryvGdYm;v=P^M}-?0pwc>FBjMBd2m%sP%-Ht z%Wk(>8$N?fLX?_!^Yn0=;FSd`(lfr#7CED7$BF+rv|>ki3B@2v)ThbuqLfa8JDU(G zUfIX!8WpsIGCzwsz((_8!f648vw%>nFTLfV-egwn+{{bfnvo84GIMBOK%-E+>m48R5Z$#_1{R#HHMsc5rZVGJ=xjj6zpgL9?&~2k z&C{ns2QZ5%z|qXV0sX3Hz-Ox=1Y<_Nv*IiI#8Z7g3z)hCfKq%y`xM+jD}lx_s9M56 z&#QYy4znh45{c=2UmMe3GuJ}+E_r&L@Phtc;5M!V#ixn?u8evSx2O#WrBiDm^i2SuCgWDG4xYTv(240{yqxUAW;NZ$nk z?ww~;&ORsF<@i!{h&0MNZDWo&Z!z$7;Z6vKJx56{BKuN+h30l71BYi7FF)GD@3#ei7op~Vp7X&mda9XUL$t;z%{O22*HWq#iz2Cci z&wGkUe})ir>=J&&I_nF;591IQCkN3a8FV5RrrqWc9q`HoD8ppnr5)&djyg6 zKb>rWul-{?YTqXHp=JE3ZRyd$X{uy>;UKmj8bF}J@tVHTDiMNF=!XuYvd^B2?IQJ*Q&`GD=!>(awM*{+&^|?Q73yx`MV+FIK_l3y^70_sRtnnDin^U7jE%hRh zL||5U$Fp55^7CK3GM2mZ)caK7B12+i<6H?}*JUCUZT;cenVe1kN`}+S(NbOW7t|GX z+v$VdBNTDCr2F7e&c9w>hpk3Bu7Db91c9j2^>YU(J`(TcUrP?%{f!U+y!sVy4!PEm zVb}7W2>|ezrBfzTuj7`kXVI!K;E?xP44S5JZ*@P24A1=ZKl@L7JUo4)nr+yZbl~kL zD7**<>q6|3uh@d?i<1*tfY?2?Y0a+^1#%HHo}s3}oOR~siBC{11*#Hcra?nNh^CJT zdCLa;K%CbRCI{JwekA#=6IpZ;`l?8SP{)kGHj~S7018_pudNw@DYEl}ID#btNNUE7 zjjb*gsP@31Vs&FPEKLFi%q3K53vL#~5MC4j*fLXR7+^ZCUcGz-5+(5a1Qq_IY#w}m z*ehuSn*Y;eLA`kOPn8z6{LA3-4jS2n>q}>b`1Vr4q0>ieQQoYCg6N%pM-#Z^2-hDp zjz_?0Aay50O=F2f;ywK7Vy*!TybPppfEL1{&Sw_Eam~rPW&-ywkp@;%-the{{({Fd ze?qSTW?v14cX53J~rX!$MLs^g%P=vRqG_n^AG^-G5DC)gztnwan2g9hy6_0Sj=|Gh0S4wDG zh7^ANgt{;DdOM*vy67+&4{WyKh)a9&`spo&TcfO9h`@QzluELtBdzkeEBT?XIj==z zZ~u#Z#kJrv7~40*c92Z5ejci141ZSYJwOktTE& zf)$xM`7=Oj?LVx%J4bKn#K#Jx|LA0WnUvxA>ch3TUP&U>HRI5zXiM+FWWm8+fmZ%# z^%CfeJUu`{lPyzboNRc-#j(@%8wGqa=kn$Btr(kJ$pRGnLnSFf08SHqO1B2&$foFuSxCs z5QAC3Ic*b;tQ<{bJ;RWt{D+#o7N1ef4R5+7xYjtP^3T_xXp6NOM&Ehg@t}t;$ks+sCXYX%stCBL%JDa!1jYaGggpVR z;xHZ^u&m06;uOB@Zgo?t(6VWoaf{i@k#e2{G{wZ{2&bptzR;((t?qvi+=`5ri zoh!$aXn*<5qw}&LydWMc@AQM$azDTgva&--K{JVpr!U+gzM2BjGyLhdud6LZje!&x z-@#eJ9h>i`F{YN!BDTtzcmWbF)#sv80BhGdmx;VI4+?QvQx>R7hS7t-wf>3VSz_DNRkTbUDw7-F_ z>Or~;AMbkvc?d#z%UpUPh1+e+fEKQI_@)!bUU|SBhHk+41ZTcmV}xEwK?!#jMe5rP z(HZ}|M>8uP*n;X`Rv(9md1R>L>)1O7^@sPD*r!hLixg>!4Urh%9kEK5=~Z13ATcTY zrU>8Bw>DSuW}GPxih>e2Y!o{ooYFVr!ma(-ng+)Y#;Zr8$|gKc@q1giD-mecC-DsJ zCA7_hTzqUTgKU(Se{K;9{t6Ole?bbiO7hotXA1%If5<+)F!g)dT*b``TsAQ<1>7Z^ zUK$nCZ+7BRb2@O@4a`TshB3Ykw$Q5JhxUU`B3k;<4Xw$K^u)P3G^J%ijHnkd0NqA7 zy|S>A+=+7>nrb+DtaG#|IOsI5NQ-K@PT2ey%XjWNbnOS(B9b0uz09D9VvIqP(V|iv z@O5ij`IVed+Oi}q>T+)GynIqFH%hUCdP$yc?zw|*3dvFQsJg3Enq>F>-m-uZ1PdrQ z<6;HquUbZ;S0*s>EvjO?jqO8o^PYN0hX4H2ikrWVKUF58X~O9>jXiN9IBvEhx7@UD z`CYZ7^**Hy{Jzm#xp-8a1)j}mK_hIyJf64sX8|GaufzN6XIF#U?acUr#P~;-PQp22 zin)|S5!_J-YbsQ6mA||cp8Lo6D+9B(o0paO?$Et@v<^R{>MxReq7dB*#*hAEI9}fg z$EhCCT&}wjzOKUeW3)l_S4`pCDPZkKr=v;Z8}Rs($;fMQ4m}WhS+_Bjo)nG* ze!2&A#}MK?F#o*ZZmb(k$#8%xT++1;byofQZpWkEr1%WJ%dGA@yVXZ>-j$ z4_u2+y)ES@ogLd;)AS_+!v9X+rD-#;ix$mj7Mz+`T*<3syP%r0fC^gn%BwBof~npd zd1T+@ot{{Xq^x9PZ*zUgD0>H_X)$;mEjmph8W=kq&I&jUhO^G~XfB1bQa@)fWo&b` zbs3Rq*)tc;CmP;@LmVQLnSjDRS5@#V#iz)_Gjmpe5uPg^b;vNj zd)I{K@S*&sTRXlk{H{p>Z@Xp%DZz0HvN@j!K~Ja};o0MnEMD-DM@NEWlD0^e%#Gk5 zIRXH4^lw{#riknjdb1G*6Y;jS(0rHFiUo>%)h50?YQHa%>!JDH%@q06i}F9-h_re! z0=mjp4^;J)sQfectuJ-j^X9vKf&G`q8tcoSZP!3g?4+|HOq_&9@|LodB3Q%skL^8w zPwdA327Y?3yU8%~j$HrPoe)l|RA+=TgnITB>01Z&=MOLxQpvo5S`^7_sBYEukUU&R>x}6mlgU$LTAEz7t()g@QKigv|eM1;{SfP zHKt$?2xlI0;7}qrQKTK zT1@-slxB$Mdpdz~gJMc+|+i_}9_8a%4%F{Ob~!UoSgScx;}C)Y7g}AEf#|F5sV%r)Pg}#&?~u_djjqWDCUIve zY&0Xq@BA8dY#J=q7(vG0#4|?=r%om0AjN z>CJdXVAt%SP|WhZZuL^RGy z5O8~OlgSq6AHe*PMx`-v;d%v|+K)R8Q;mk41TCm$<)El$*;9SGhk~pRAvpgJz zIvt#oP5lNcN(|VFlTiNa!)>F@^Pve0FY_u(%RUS5XVkPUZ3wWzVH<{JGabl7T1Cx`Amq_R_A*tk*~fsL`Ppq zhN9_uj^GLU2!pot1d8EXn>?cb=|+MBEtmJ3X()Cl2^DVKcJ46ns1S~Ayu<^ATLv&V zjfN0>=jsWG_6xi+_?uov1jFmr)M#3TQ~M4?R$U@x9d*pjrAdc76XE=qrRH5>f@W*m z^fCO_&*Er+pVz`L6kAm_JC4IzE*jvO!KHKTn+6Uy9P0S!0p~7%!K3>YH-Mj~;TVcf zD90vTsH8s$H{Z@d^4Bucho*wHJ@=VVA?;4REB<(8VsVg>qb9i1Jy-y`asE6M9lnxq zNjpLh3BFptcn7)QTqdjV|bK$2(5t99~v^*@kgB(SHvfc{k;zNaT z@hRlNUKQ~)aCk!WWO&DbpU*Tpp0z~j&le%}2ouqJe~{6}C{jb%y)?qYMYu99{7Gi- z*Iv;lQP!Dn%<%^*bC)q5kNopDRhklxmUUGJZ7+QJX`mY?YOHH77y+`bC6>ID=xYGq z#%+$`le2NRKiZJhu$j$Af+HhvSP_DWKER!=66!9rOPWT_-A&Wva^6&2N?mTYt`m2y z_yOmkzSrPb_7Rh-Z>J5!7;KvB>v<_UQ!V+57`ng0XN3Nw%X23w0dbG&wAD7QX1wnkbj51sTy`UR=EVTKE`g2TYq#Hs$mlIgsCe>c;V!-|bTLo!wDmwYRBDO)$M&F*4jnr^s!p6^SNW z9?t(VQf5dfxlA62s!hbBRj%+J@eAR@Qy{Afv82wt%I{6c`5XhiNljY#U{}z(i{zgH z?s<|BEewSmRK$eJ&dwcCbzP_H#PO7t#Z9F(yx+BUqD3h={G&z}=L}pT(NHRZpBUf_ z%u?;j4ayu69dUKMlme`s%be5CR~l8dU}0nk@U|J5kb-ot3TE7MG7*!rtoug7(6_ z7uT-ve+A#pXR95w*GM-}MKHi0OF=b!km1~cGjB!HUo&4L68|p~Ay= zysE9}f6Z6inNQ0)-xYw0ryH8?U1?JOKYe{=SXAE^E+E}KNDbYMbPPy`A~A%-fD-=b zlpeYyh7bW2MoJVAFhF|fl2j3p9EKEy8FGLF-1*mR%ZEfsXAGKj z0(ycsT9h%6@(p<UWeEONAJO7Ly5ruT8%Cdd9y_;&8oz?U%uF;S#7xS0LK0t0d3B=W$Z+ z_ua9Q4{9u$R&66bL-EagcwLQvM}rUxQcrxr;FJjVD2X6a0lzTcwI=HlkC!jE zYg+x4x@K3;g})L71J~9YcqkvfZ3#&PpCi$rk7Ut#Nq9EyXL5-(eZ)l<)eHi+k+N{v zqN1Xfs+Y@!Zg^omGkAVov|pW9A2zdnzexNp_VH&z)!*rlolV>W;62(%Fx}~PBK8hP z=Wtp8@|KebC2H~8;$mFH$8*VBNdf#{HnwAP%(;?bGN1oDD0;7lJxYh=Ny8>ryHlRV z$;W+`yJDghFvCEuziYTVT+mz1Ol%%?+e0HxjJulb%qp4x30S0b9+Srp^qO-nmB5BY&F*Nb1H@Q=;KzDmZV?M;Qh#D&NW?9-oX^iLN-;#Mw4 zSjd2J9$yzyGq?<}WU1#a8}y(b(^NRhrjiW~?%@M+6q*c-%D4?#A*>yV+l?Ezq+$v9 zfy_Y_RwI0>E<;L=L`jogvc$7*U}{QWxUqQ3h95t3R?G)C$(WI>v}aO{YZk^YyNnS& zBJue>Cs%hH=LajzK>%~bKH|5}To>AmBWbSTj^Tsr_4A@{j(Pw4jg+zn^X>BwIYtcL zUjAtJ<_iNzSpVq{kJqr}z5~<^BgJl*A+)!Wb~n6t+77J7ha9}#wBIn_N+wf65RI&HrQqfzO5Eugd=OkWzJ3nF?L zB;y&_&rgrf=zxGv_~T)hEQ4TD$ZH~UUlh9@K>I;nP=ov?N;Cnf0cBsbq_YiDevM37 zMV)>gc}0NQCpTRlEqSjW7HQY;0mdXd9p|y!I7Qx>=rr-pt`yAN>2XFMu7h#KGCK&4 z#((I&B-}<~h7uWlI_^@qc=xdA=r5TqaazHI17M&J-5MW&P@1zUuTr zaCZ33Y+CnCJ3Em488W@}d68n0bhFWdrZuKh8o$gL35yg-0mn=e)N|;9;PSl|Kd-uQ zd$H+jq7rd!Zg_SZk|im)*g;3(DV(fjkv|zGDcD`ZhyflYBHvwB9(?U%Vuc9B(R{*p zX~^7ge!ArygVh5Hy~dL><=~3MGv972uth`&Pn{2vL3)3sts1cp$U3kuge+MkFa2g# z9l|@@v~{rj4Qs-;vAFXCf6T!;U(igV0KEYPY)4B)hO|~zD#@hfC4)Pb!_3v5^o0)d zb;B`FFqPPGq(;{^@@|>kWL=wTx!o~!OJKjCEgovHeeDaf53hqUfp%mhh@AQIdr&Uj z18fjwNN&#oz!KVCmaSJ|H;q#w%nXR&F~DWr2?X-`sTv2w=~|;`n1MTCE**@U_#95X zg7{zIdgnQK@{6w>fn$jM%TEijz&VH!yPw~}7&Uyd2f2U1^Q>B)rEtTy|CWjqYBZr^ z2$L^Tz_sw|uQYIQoG=G`y>1e*a)F~5o(feA9}em}z@Hw1;nFB9!p=U7GD{^ItEc^j zzOGFU+JaxR8_$r5s^kqR195f*LxQF|@RX{l@dfoIi?iH~6Pl0J%uT6b_x!(yvr+Q~ zj7u;$+T}Ecd?WmAk3XNF!|g%f&S2%Gu0+i6Hp3Q426@n6I~_XQe61rzty|}U2)}S) z0gOR+zHvWWaTq!W}@4dhA4cak4MGMwAlHECE9m_Q*0cw6!iee(Y;3CZ5y^`KrbE zFYbB4I@KH5bVV3x#ZS%wob%x^L(_!Y%-o9yJjUm0YD2#|?8QC~&?ka}*3>{n`+?ZYXhH-H@4{z%g~v{k_+Hn>d?1E! zr7qy2u!@QM!l)tIp{c^ubjhZd7TvtcoC|;ESFQbP2-1^$GL#?`;I0kE>B%7nuK}8ikS6AkurgpV<)vJj>7*z>+f+paR^FDH@4bhFqU;rc=`P z>W$^lQC#{g5TLU;F9p@Bo=y0UFm*dYmA{nJAms>kqRX3t0H5Kh*sO|v3ai5+cWqu` z0R)mKMM*H?Z)aWo6vn^Y*7FmL5+3%4%Bv6GrfDXHW1&ZdlKOjWY{<5glDU#_@TS2$ z2dEy|yW}*Nr&Ud4-W}Pjj+L1Mf8057vgbs_efvtcMnQ=hKYwC|rnpaJ@LeZyty&^! zST#`;?)ro@4pKYxs) zzX$|oMC5gJlr9&RB2lkW)Viv&*03wVe6##NcEcFj?Fsr90av~(c;UnKE?Csua$g=d zT!@h^KX1+JqPK+2Q2J9-;XT0{SD3+C*OTB#O~4b`2cF$Z16MFC?FwUr2Bmu$s;Sl; zuX)G`012Gn%9^?Yzx$S$QgSf{QA9s|35%~i=D1oYTw3ODF`He2e zu_d2Ls~^2mo-mJZDNmKU*ae?m&C5|%VO(a^d>I0HmOiL_eT24{CJW|X^GDCwihXU3 z0k5sIwkd(gA&|w~v!twR`F|?faTQD)urh~WFC1psg%LQ!o?F31*x~@bU9d*%%c5Uk zJawcEdU7p%;@d@hZ6%o(DXJ-=Y z=be~8qmW1mBJ12u4ZyD%35RI4~1V@d6t`~Acu{GEVC3ni*wQy<=Rg`i;r#?78~(cqhD_`1FgHVz8?Ok-R? z`@{TL;C$!3{#`T<*F$Xl+{lk9cww(4eUj8wGRbXvs5=D+b+eVU8t148_ovJQh{7N{ z=XDoc)ug$sZmmS#w=4_DxcSE(4epJ@YcT=^??sgR7*XlC<=dI8aQ67Q#nja>bb-YQb2{NY8B|&xE8wqax(A6M_GkZcXMM^@XgMIX zt|hS43|Tm7cSyG*DLQSuMzx=BbNV3C{YN8|QG|UBAO?uvo=nB^b^*A@pdjmb25M?+Ki_WUl zbg0z7)^($tgCF&DQ}~$g+Mc`GO>1+SOFRH}`RDWgsSwUh+~>|r3-(qAAYV64BmueI zk}|!WVf%4VwvbZcCF)Q4FVY9h`u&5XWNv;=B-aBcS$oBsq-lj;jNir9GFY1{J(M)=KmT6Y{f7tr*=+hqOhZQ-`B zZq;+LyOde1kR&bS8_5hXeP{lx_FdR!;2HMT(Y9rf(QoW$Dt&FyHZ>q$Xp8(EzZ%f6 z)O$Cfd%2gvPQmdL9!*4BMoim>5Rhx-=3s+w!DK0}!fpdj3840O3gDHUWnRFZ+-w^E ztv=z~r6gk{W8*#Y2L8Lc3;Bj4S2nGte`wlTwsId@Zs5ChQlu1BqqK2&U`clIlmS9@?If-gM+w#AP|ht*A$z3c!!_z++*35%=p5)JHuFBm zZ-8MEW^DU`0+N`T!FLza&Xe&&Fvx{(&PM!e>(u?w+Q*VOJ-}n*Bq08l%@BeKNO5M3AU#(*{%S*yvg#h}SWy1>6Hw7|D!+8%p64OoerI>wQc>*+X zakhb1t+{75!v_Mg5Xa59drw&*E2ZSG`^LOnxjvd~CAO$&K)iaX?~sa%*vvcDu7_`Q z^HlE~8CE$DA_}~842(N^_WBHxz_%)Pw{nsFwlZ8d&83eV1)w$qjr*35*Q_14xAYd{ zVcQ!ULj2yeaT)zj1e&C>^NkHN9vY`5u~1go7zr2D-F>4->x}pQ?+3mV>VfU=GMK-B zAt{%lmhpL3$cIZ>QntyqY(dyM&q?JR*jtIDRksR(86x&)J&hEQ{A2MUXD8oD5Q7KS zY;!XB)er;ET~l(%-$P+)xs`%%p<#j2M46*2Qv>QNd z6FucXWybVQ9yRTqZSgYagIs)-ck0S%P?4LN0g2C_U$4bHrDDVhg_d6#c2F)f;TF9? zMs`~w)kdM;MPr%GvMA!;7 z^$9KmfH`X;1#Q=R?0~;wA>_@YoY;O6N}OmR(Ies|tHCMO-hVtp2P1(IAonT0fHsqT z+NfFvBEZzEA9Sb9?R{+pec&w}1F!_Xp1w(qK*BJ9VhUv`&%7 z%Nln`=JJwUeU~*tfhI#<@BCsN)O4xR3xQeSWkUvYzSQ&X1Ei4 zoPrT`h$xYwCFJ+FS>lLE20~nZvdU@Xq&yBRhaVfxujg-B;(64Bw`_ZDz}{Z(cDlX^ zLx-ul4_{4Pi2-je<{VRsq;x~B)|kpDsr*w1I3R-a%x7tF=&`4prlRjgsXE`dP?Vkx z(xVFK-`xyJr?7{iz1nn$`MLFg-&Hd~dA$Zjl61F`)oPu3TUZw(U!39v>N`H~OY3_E zh$M|vIwK*A&N7A3VC)(R;t++~Wlj-|g5CH8{L%ZNZy!i-y;IbEXwo5C$ojPmb^Ec* z?S}PKcFR>ex7|zzxcE!m0q~P+L{XUy19ZZfMu_y6V?dQONl%Rbi_Y6Vjnp6zne=UB zfD>_5?0ZfFWbBOKV51N8Dyj|_p~TpKP~|<2G&NeQ$iH=blmxOPn-S|&1IClS0I<#4 z6GIkwSamRs!(77lWeukM=OYK)oyru-3+X3TCa}U_OVc?csaOr_ zPTl9u;ID6q9Or_9KWQJ#g;7sgA4&4YX#!b}2E>Hk>|q!q%5fGF^nJO9fXttbR-p8# zymoD~?B0xzJNXx-b(Nt`x0|o3PpW=gp_#7&q9jtm_gNKq$bg?bu0%$D7}M=NBV5nH zJHM#SH@B?nPtISD$svu-yMK&9vXS$j2&K*MUF7GFid)|G%iFU; ztoRzMSh0d0wdUeXRPg6hx-Qs9iaX9fCj{SN{YmZ}^N*qlAgf*8+pY@b8V<5>u~V6Q zJ>PfBub_4ukV@i;L?k;EGe@SQNTL|X_v^2}$HwH0M5q@C=ZT{&Rni|?&$T{^&vN2k z&1bkIUDt}{AT5b(`Vji`(oCvyM+(M0v<T!*XBQbY^?6^_)-$q&8wUg^$0t{mS zaw5Q$WZo!wjnYZnFdfW7AS^3V%Wm!ZPd|_9S(GkDqI6CV+>z!SDdX6~@h}pR$ z2%Dhfd4fwD`#Qm90_zNRV;JUy{;@=5o)M;Bvd5MYp}JjR#-wHz}=+nxN-n*6 zN(T7n87^Yq@V_{n4OU`pwyGMo9m`ldi^JaIL=ivoOS$PVwiqwgU>56)SPvX_ic9W{ zcw5DsaKh%+mn4sApbchJKRF#VkaX|ps{A!LXwU&SuuPM0c=JVp_E9!6r)nI!(3+`F z(f*Lf`uLaks~!d)h7F>i4{aSfLie{@X%r|hUi1(<#b%pYTdVhX_l$`RLUdW)vSYf$ zIGJ+%C0R8gb|ZR;t+sffz43t&4~g>n(pHAbmCmO?JKg6W%EGv!`5hf*lnuF^ob~Ph zfY4i%SryXXs)Ov0<0DhJg-;859(F?0GUJ2VDGl zRY4Qi&e^YcfnHdeZo|};DTpNFAY}df^pFB6-^cJnf8!)V$ zt{biSn0UpE+sD2Q3APgdM-7LDYCuDtQpiB1$1EN(5h>;ow|>CSUZGhAWTCZ%R;T$b zPLtfh85;0|do+)l3gng7lsrEwv^go2uTfIP=Vj(fe-Z#`&x?s!yjB{Vq)}tzV_|3JlzM#`$6M3d$u^y(4<64Qpd;r%Befy*Rs8 z2|$z|TChrP!BpgVP#{BIuAMcMe~`HwT^EgiSeV7$o9B~HW}sGSPACx?zUE15Cjy#I zb=-;vmS2COR2I13ecq1t*}5v^n7)K&4ZDX0MtzaS^TcEIi03)V{XBDN>R+CVkcq*azof|9*;$*mtqr;jI~PCZCsi@fW=@*s zoF&S(@WiM3a;?ov{Jd213&PO`UT^1#}FPiDLJS*a#mydv7C+Ii@p z%GL}Tg6A);{>R4%3OrM63adHTpeEh?d8DL6?vPQ=q<EMSeEJ!@63&;Y`X)^2?F#DDfadf0kG3Ln zKVRdZAzt?(ckbg)Yzt<}-AZ;yUNA+F!moJJVAAbmZTWgs!^Zq+d1ISvrp^%jqDbuEX4SjjQfp(n6~K z2{Vdk$E@_pBKr|AK|b3POxjsOMfktWf-^ndfRC>yMR$*v>~}QI9ClAvhV?n_@D4pN zHR;fSF|s(Cy3*7{6;cZ{>U)2a7ChG&S2;P?l-&26RA|{tDlppV$e={MZ?5hw_Qj=r zm~!5ZegPd|@B){zEaTNkxAqoovj4LkA8{Pt4nEO;n{hqU_pk1Acpb*h{3Fyl^@U+O+N5bR9j$?%qOY?Ps zW5!GW#0Hno4gw}8EBXQ+8U0SVVhc}d-v0bqR0+6m#luWaAdEUWK3@IJq0wvGJzHCB z!5)zRz)|JK!##e`+wAd>(bk{cR>{oO9}5d1Hof8Q40dWToQl2P*-VHn738s^&6>KZ z8<1Ws^O1`TNXcQ7Y+){1IhQ|&Fsn>~{~zn7d+RM^$F zKL&q$oY>L(GE(vF z%^p)$WkC;F_xlvOaE`o~KC|$^?L|d%-@3kr*Q?n6=<$4%|BM|X2^zoMVdau{a>wek2iQ@osE$=| zhEoI%wOU|)RYyG_d)X0NIF|*ETbUX<(6UY#_4L3gDj7FKeIk_9WT>p|y}bt*-R7ib z4rKm5Q9|2&mW7Dk4OjC%uyeB1WOi<|rve2CvAeX#88AZAOM#bHER^$mN5 z^*K?$kf&B-(HJe}C5t)4yVV?;!+a?qkfZ)aBzYF`sZpg1BYa?|e}JOo#3v>F86%17 zwtgjbf zE=Eic&K^4Sa7DVq0FD)%uEqU{TOMFLx6M!;mUx=|3Ky!`>t><&4V~s>GSTosYqb*r zfjd+ZS!-C&_9(}{=U4-^{a3?a$M~FVSaJ4V*Jw8(u3%U^`%!O@x=I%m?XapW_aJ#q z!Cbs~*rKApTt@X%3|Iht^(!6R<~O;r*E3ar%k$2yRt(<3QqLi9%_s8cZ^NUJwXddU z(K*@8Xs?n9zSC%9p_0hEEn8Kza^$5RB^)}R9ZJ&YTcigr{?Os*jRKSYZS9_K?fxwh zp6cFN$KNZ-@q?%XfjQnqX`d*&x$bkPt{EX`wBUE6DqpajMLH1_kM_bt)n=-N1jE2k zoQCTbv|`{O_H<~>>T}hD0+}TU<-Ol# zrW>~I`ScatMAJJp&Xo>K{9bs&34cpH`m(^&2}2N-3BwDeiuMH-l0`(tr@y4 zm6ic)^xa{3`U#X`_ z`)XcJX|mJm2Pb)%Lbn}0G%nTangqLeLvvS*aYcj;-4gACt=-i2`oAYRvha=TNM-76 zPvy({9AtIUL`Mt)x&2&hJ*|e?yDa~+GSI%fe}V01+aU=2@<<~8J?TNT&7R@ayl(LZ zwWW0bz2qu@yw=k4I6L5wScFZIpV^Kx5jXXLP!$K0{aQv)y za<6D`+b5N&sSE6@2U>{PC~S0`b@Z6}k-CF3o(WW(`7mvuOe>g0y`+gA2tN3bIQYZi z-(N!**5EjMyK7%JT<-M~jBM=DjE_ILrTS%Z+810}WbLf_;j*eS&G;_`RcrpQ*LC0U zR#mjF@F(sWyFjgwjlsEn@_zmS?XzXeNU zFb|W^JpGBStd*{s$n&rZ-RTJ!^>v)KuRN>VI>=*uu}sHLgtF7)8&iszx9)4ytCgOb z`~~&ue1_zN---%Yf~t4j-%SW;sxO&4%$%ylmkODa%*nlIiacc&eTXBN^Fg&T>&lAf2`wrZ z66ku8m3HycpAle;vS{x4Ks1Yc>@;}lmH0mA$f2sz?@8O>$YnZ9XC(MG+%k)s5IA-( z|9K1{`%6)o4&EgF%Bj1jJodBIiZJNZspu$ru>8C~@Q!QpGhLc3U@ltxk@>BkzAR?+ zw4!gSzD3gjf!xn1TGf75LeR8BQILq4RCwLt_fch(h!~8ELWE2!bf)MT*)&-Dz0bJ2 zJs-dbR1`<#4I-r0Sco3bK?La??N~{3B+7AJNl8C(F zDN?LBmpq(3QRs!ov`4m=nD+aJ!y^W=B!FDZc-fb{bCN*4u=nr8rlli22WpE{l zKkIxM*H8n3-0CK%;Nd8-nNQXY=um+~Cupxts7R7mn<*`a(9ADB2CAj|BfUNYQ}MEw zaA&;19o*snq}NqulB#PgOCyU#6Bz4t1P}O4>620gtD?g9rrF;r?my33XT(MN9|}R< z%{z>L$F|8l!w%|$t^?NpXQ3hs8K&U9K=6Lf@JwA&w~4Aio{)-SjUO1M!%yN`W%pT8 zQhVpWl3@BQvYgn@nr|rMFR&p_x!EM;jBXqz#zS%6j)uQ%MLxoNEW3qk{a=%05VS&; zKhVl5P?S8aE~;aZmWuMhtr;#k0Zi5VcMqu=@L;wc7( zp-6wU?hz2p^48*J;M>Zn2z#VpNyNh9%0Oa_5Q{A1jAHR*4e>O?TkEJB;GCNPeMJrn z-ZP+>V}Z}AALEzMUA-}!Sjr!~?Fv6Bb|!+N*<&p*O!|sA0q_2g3nl+aop&#on~R>B zJgge7vee4z|6oSnEzcUGa$h$|e|fj> zt)em>9sT&fGM$4Tr4fxoG^pO`tTz0Hazr4r(PWhWo$5KG<`?agKrT$*yO`UW{6Wd_zB-raP`!vH2W<{$%pll<+o{nx#WY#w~sc3CbCU-7Bgo9 z=V5{QmmFmE<=faqSa$ZJUQOBSB`VlFqNsm!WGhgb$>X2e?7UQ02n6$8YDGDfLVhS< zzb(GEaY%dv|MWHaR*K2l+^^LoA-HvehzgEtkO@VgPj*T7AwY+3w^AIADJV4DyV~5? z{rhqAJ5doVRWAKIQMotAkJ468DPW<0Mn^Z3?VMy_#m)#cJ=*Jpb3x%-3>wi4f0tv%`2=Gr&VYaHd2iM75#wL0VN&S=Qqs9W{)uPT4`IR)KPcVWYdn&-gkE|yEk`63=Jx016u_K6I!9t*w>zMsso!JQ-_U?T(alT zH6YAvur_SHAuTL@^38qZ^S&2Ho2tLZz8MyAeo*D|SHs`_G5KP!0k0M~Bow{EnsDSj zj;$P*sI>}tB=~2O^7DSSj1s364fR_JUVxtb)TDR-%Sm7V!W>al9tFz=!RcW%i^P`r z+t&zZA664$w*s?l`lx=7xFy)ko=Dnb@BL<#zlh;FH%(b|Z|LlSEQNO3ex%Y{{;zo`%}!|kf5#F1KZg{l_?_O|0zi}T Vdpfte|95tiiNSsShP$qb{|6XtXngn=vW>B$ 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