From 4c780cb495752e8b8c00af80e5f56667d467108a Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 11:04:12 +0200 Subject: [PATCH 01/44] Minor changes to installation instructions --- docs/getting_started.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 14c2168..d2b90b6 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -9,6 +9,9 @@ LePHARE is distributed with `pypi `_, and thu .. code-block:: bash + # We recommend using Python 3.12 which is the best tested + conda create -n python=3.12 + conda activate pip install lephare .. note:: @@ -131,7 +134,7 @@ editable mode with the `-e` option so that any changes are immediately propagate .. code-block:: bash - conda create env -n + conda create -n python=3.12 conda activate conda install cxx-compilers # May not be required for linux git clone https://github.com/lephare-photoz/lephare.git @@ -144,7 +147,7 @@ editable mode with the `-e` option so that any changes are immediately propagate .. code-block:: bash - conda create env -n + conda create -n python=3.12 conda activate conda install cxx-compilers brew install llvm libomp From db7cfaa665ad8bfa2949f45701230b02e3c446fc Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 11:20:57 +0200 Subject: [PATCH 02/44] Attempt to fix cppp coverage issue --- src/lib/_bindings.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lib/_bindings.cc b/src/lib/_bindings.cc index 79a9d59..c805c73 100644 --- a/src/lib/_bindings.cc +++ b/src/lib/_bindings.cc @@ -63,10 +63,9 @@ PYBIND11_MODULE(_lephare, mod) { "standard constructor") .def_readwrite("lamb_opa", &opa::lamb_opa) .def_readwrite("opared", &opa::red) - .def("read", &opa::read) - // .def("lmin", &opa::lmin, "return smallest wavelength stored") - // .def("lmax", &opa::lmax, "return largest wavelength stored") - ; + .def("read", &opa::read); + // .def("lmin", &opa::lmin, "return smallest wavelength stored") + // .def("lmax", &opa::lmax, "return largest wavelength stored") /******** CLASS EXT *********/ py::class_(mod, "ext") From 42a7e8fc815262108a7b1705b9f66d1c18858cf7 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 11:25:41 +0200 Subject: [PATCH 03/44] Attempting to fix code coverage error --- .github/workflows/testing-and-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing-and-coverage.yml b/.github/workflows/testing-and-coverage.yml index 17df281..5b186b8 100644 --- a/.github/workflows/testing-and-coverage.yml +++ b/.github/workflows/testing-and-coverage.yml @@ -43,7 +43,7 @@ jobs: - name: Collect C++ coverage run: | - lcov --output-file coverage.cpp --capture --directory build + lcov --output-file coverage.cpp --capture --directory build --rc geninfo_ignore_errors=mismatch lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" cat coverage.lcov coverage.cpp > coverage.txt From 77df555dfe9fdd475a93affad012df2998bf9787 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 11:30:36 +0200 Subject: [PATCH 04/44] Attempting to fix code coverage error with additional line --- .github/workflows/testing-and-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing-and-coverage.yml b/.github/workflows/testing-and-coverage.yml index 5b186b8..1578150 100644 --- a/.github/workflows/testing-and-coverage.yml +++ b/.github/workflows/testing-and-coverage.yml @@ -44,7 +44,7 @@ jobs: - name: Collect C++ coverage run: | lcov --output-file coverage.cpp --capture --directory build --rc geninfo_ignore_errors=mismatch - lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" + lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" --rc geninfo_ignore_errors=mismatch cat coverage.lcov coverage.cpp > coverage.txt - name: Upload coverage report to codecov From ce34fd187f8377685fdb8a239045e991d86155db Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 12:54:11 +0200 Subject: [PATCH 05/44] revert testing test --- .github/workflows/testing-and-coverage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing-and-coverage.yml b/.github/workflows/testing-and-coverage.yml index 1578150..17df281 100644 --- a/.github/workflows/testing-and-coverage.yml +++ b/.github/workflows/testing-and-coverage.yml @@ -43,8 +43,8 @@ jobs: - name: Collect C++ coverage run: | - lcov --output-file coverage.cpp --capture --directory build --rc geninfo_ignore_errors=mismatch - lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" --rc geninfo_ignore_errors=mismatch + lcov --output-file coverage.cpp --capture --directory build + lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" cat coverage.lcov coverage.cpp > coverage.txt - name: Upload coverage report to codecov From ea8c2e50f1afa7b224dfe64eb48bb61250801e31 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 13:35:23 +0200 Subject: [PATCH 06/44] Further attempt to fix coverage error --- .github/workflows/testing-and-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing-and-coverage.yml b/.github/workflows/testing-and-coverage.yml index 17df281..fdc4711 100644 --- a/.github/workflows/testing-and-coverage.yml +++ b/.github/workflows/testing-and-coverage.yml @@ -43,7 +43,7 @@ jobs: - name: Collect C++ coverage run: | - lcov --output-file coverage.cpp --capture --directory build + lcov --output-file coverage.cpp --capture --directory build --rc geninfo_unexecuted_blocks=1 --ignore-errors mismatch,gcov,gcov lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" cat coverage.lcov coverage.cpp > coverage.txt From 6195c88cb817734cab3762f19e5ca4797ba2c5a1 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 15 Oct 2024 13:44:22 +0200 Subject: [PATCH 07/44] Moving lcov stuff to other branch --- .github/workflows/testing-and-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing-and-coverage.yml b/.github/workflows/testing-and-coverage.yml index fdc4711..17df281 100644 --- a/.github/workflows/testing-and-coverage.yml +++ b/.github/workflows/testing-and-coverage.yml @@ -43,7 +43,7 @@ jobs: - name: Collect C++ coverage run: | - lcov --output-file coverage.cpp --capture --directory build --rc geninfo_unexecuted_blocks=1 --ignore-errors mismatch,gcov,gcov + lcov --output-file coverage.cpp --capture --directory build lcov --output-file coverage.cpp --extract coverage.cpp $PWD/src/"*" cat coverage.lcov coverage.cpp > coverage.txt From 48b227744d3e4949acd19803e3ef8e1016ee22e9 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 16 Oct 2024 15:03:22 +0200 Subject: [PATCH 08/44] Remove unnecesary installation line There was a repeated line with a typo which did not do anything so I removed it. --- docs/getting_started.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index d2b90b6..def9dbf 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -136,7 +136,6 @@ editable mode with the `-e` option so that any changes are immediately propagate conda create -n python=3.12 conda activate - conda install cxx-compilers # May not be required for linux git clone https://github.com/lephare-photoz/lephare.git cd lephare git submodule update --init --recursive @@ -149,7 +148,6 @@ editable mode with the `-e` option so that any changes are immediately propagate conda create -n python=3.12 conda activate - conda install cxx-compilers brew install llvm libomp git clone https://github.com/lephare-photoz/lephare.git cd lephare From 26b7161a766548246026bfcf4d76ad888d93b814 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Mon, 21 Oct 2024 15:12:41 +0200 Subject: [PATCH 09/44] Improved installation instructions to include notebook requirements Following testing by Olivier we realised it was easy to have a notebook kernel that was not inside the correct environment. We decided that this was a common enough mistake that we should add explicit instructions tot eh documentation --- docs/getting_started.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index def9dbf..238aaea 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -13,6 +13,10 @@ LePHARE is distributed with `pypi `_, and thu conda create -n python=3.12 conda activate pip install lephare + # If you want to run the notebooks you must install a notebook server + conda install -c conda-forge jupyterlab + # And create a kernel which has access to this environment + python -m ipykernel install --user --name .. note:: For existing users accustomed to using the command line arguments, those should From 47e423a7c9525aa01ae82c0a423344a9154cc504 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Mon, 21 Oct 2024 15:24:20 +0200 Subject: [PATCH 10/44] Add known issue surrounding pypi installation from source Since including the pybind11 code using the MANIFEST.in file I could install on my mac from source using pip. I am concerned that this wouldn't work if I did not already have compilers and libraries present so I recommned people follow the developer install instructions which install the required libraries if there is no binary available --- docs/known_issues.rst | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/known_issues.rst b/docs/known_issues.rst index ac6e681..256c91b 100644 --- a/docs/known_issues.rst +++ b/docs/known_issues.rst @@ -47,14 +47,21 @@ check that clang compilers are set as the default. .. code-block:: bash - >> echo $CC - arm64-apple-darwin20.0.0-clang - >> echo $CXX - arm64-apple-darwin20.0.0-clang++ + echo $CC + #arm64-apple-darwin20.0.0-clang + echo $CXX + #arm64-apple-darwin20.0.0-clang++ If these are not set to clang, you can attempt to set them using conda with the forllowing commands: .. code-block:: bash - >> conda install -c conda-forge cxx-compiler + conda install -c conda-forge cxx-compiler + +PyPI installation from source +============================= +When no PyPI binaries are available there may be issues installing from source. +If we have not covered your operating system or Python version pip will installed +attempt to install from source. If you have problems installing from source via +PyPI it may be simpler to follow the developer installation instructions. \ No newline at end of file From 3140de121bb136f19da7ca87a5092c02bf6d5dd6 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 22 Oct 2024 17:08:39 +0200 Subject: [PATCH 11/44] Added known issue regarding AVX2 --- docs/known_issues.rst | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/known_issues.rst b/docs/known_issues.rst index 256c91b..f02bcfe 100644 --- a/docs/known_issues.rst +++ b/docs/known_issues.rst @@ -64,4 +64,13 @@ PyPI installation from source When no PyPI binaries are available there may be issues installing from source. If we have not covered your operating system or Python version pip will installed attempt to install from source. If you have problems installing from source via -PyPI it may be simpler to follow the developer installation instructions. \ No newline at end of file +PyPI it may be simpler to follow the developer installation instructions. + +AVX2 compiler flags +=================== +Advanced Vector eXtensions (AVX) can increase performance when they are available. +We have had an installation issue on high performance clusters where the node +that lephare was installed on had access to AVX2 and compiled with the flag set +but then failed when it was run on a node without them due to old hardware. +Advanced users can switch this flag off if they encounter this issue which can +be manifest in the vague error: illegal instruction (core dumped). \ No newline at end of file From abd5a72ff5a3cae31388bed29c38f885632e1b64 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 23 Oct 2024 11:11:31 +0200 Subject: [PATCH 12/44] changes to getting started from Olivier's reading A number of changes suggested in the PR. Some section renames and addition of extra lines to code snippets for clarity --- docs/getting_started.rst | 8 ++++++-- docs/known_issues.rst | 2 +- docs/legacy_install.rst | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 238aaea..93dc767 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -93,6 +93,8 @@ and download all the auxiliary data there: import lephare as lp # If you do not set a config input to the following function in gets everything. lp.data_retrieval.get_auxiliary_data(clone=False) + # Setting clone=True would use a git clone which may be faster but will only run + # on an empty directory. * `LEPHAREDIR` is the location of the auxiliary input data. * `LEPHAREWORK` is the location of the intermediate files produced during a lephare run. @@ -100,10 +102,10 @@ and download all the auxiliary data there: Both can be set if preferred or left to the default location in the user cache. -Advanced Usage +Example Usage ============== -Taking advantage of the advanced capabilities of LePHARE will depend on a detailed +Taking advantage of the full capabilities of LePHARE will depend on a detailed understanding of the configurations which can be specified by text file or via a dictionary in Python. In the later stages of the documentation we cover the various options that can be specified via :doc:`keywords `. @@ -126,6 +128,8 @@ grid which would increase accuracy but take longer to execute: Developer Guide =============== +The developer install is required for editing the code but can also be useful +on systems that do not have PyPI binaries and for systems that are not well tested. Before installing any dependencies or writing code, it's a great idea to create a virtual environment. LINCC-Frameworks engineers primarily use conda to manage virtual environments. If you have conda installed locally, you can run the following diff --git a/docs/known_issues.rst b/docs/known_issues.rst index f02bcfe..7e3b7d2 100644 --- a/docs/known_issues.rst +++ b/docs/known_issues.rst @@ -62,7 +62,7 @@ forllowing commands: PyPI installation from source ============================= When no PyPI binaries are available there may be issues installing from source. -If we have not covered your operating system or Python version pip will installed +If we have not covered your operating system or Python version pip will attempt to install from source. If you have problems installing from source via PyPI it may be simpler to follow the developer installation instructions. diff --git a/docs/legacy_install.rst b/docs/legacy_install.rst index 166eb40..3ac6181 100644 --- a/docs/legacy_install.rst +++ b/docs/legacy_install.rst @@ -89,6 +89,7 @@ The pybind11 header files are provided in the *extern* directory, but after a `g conda create env -n python=3.10 conda activate + conda install -c conda-forge cxx-compiler pip install -e .'[dev]' pre-commit install conda install pandoc From e1f22b806e187b52e6efa0f92591c5e9143df9e4 Mon Sep 17 00:00:00 2001 From: OlivierIlbert Date: Fri, 8 Nov 2024 09:54:16 +0100 Subject: [PATCH 13/44] Heavy changes in the detailed documentation to adapt from the overleaf version into the rtf --- docs/figures/LePHARE.pdf | Bin 0 -> 76300 bytes docs/figures/LePHARE.pptx | Bin 0 -> 52741 bytes docs/figures/LePHARE_structure.png | Bin 0 -> 177745 bytes docs/original.rst | 3546 +++++++++++++--------------- 4 files changed, 1705 insertions(+), 1841 deletions(-) create mode 100644 docs/figures/LePHARE.pdf create mode 100644 docs/figures/LePHARE.pptx create mode 100644 docs/figures/LePHARE_structure.png diff --git a/docs/figures/LePHARE.pdf b/docs/figures/LePHARE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f99f70cfa73cbc13850891773c17b7226bd424fa GIT binary patch literal 76300 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 )y4knzFwRtj~w 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 b=r5-je$C1i9IZfSOe}!k-DU;+x7+_01PssC literal 0 HcmV?d00001 diff --git a/docs/figures/LePHARE.pptx b/docs/figures/LePHARE.pptx new file mode 100644 index 0000000000000000000000000000000000000000..618fe4badc750265a45cfa864e8030714fd7c688 GIT binary patch literal 52741 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. +Introduction +------------- -This section contains more details concerning the -internal structure of the code and how to run it using the legacy command line arguments. -. +LePHARE was written by Stéphane Arnouts & Olivier Ilbert (Laboratoire +d’Astrophysique de Marseille) and later by Johann Cohen-Tanugi +(Laboratoire Univers et Particules de Montpellier) and Raphael Shirley +(Max Planck Institute for extraterrestrial Physics). Full details of +all contributors can be found on the main GitHub `here +`_. -.. _`sect:introduction`: +This section contains details concerning the internal structure +of the code, meaning of keywords and how to run the code (with the python +interface and/or command lines). -Introduction -------------- -*LePHARE* is a set of ``C++`` programs to compute photometric -redshifts ( :math:`z_\mathrm{phot}` ) for galaxies and AGN, and galaxy -physical parameters [1]_ by fitting spectral energy distributions (SEDs) -to a dataset of photometric fluxes or apparent magnitudes. Stellar -templates are fitted too. It is based on the previous Fortran version of -*LePHARE*, a code described in Arnouts et al. (1997) and Ilbert et al. -(2006). *LePHARE++* package is composed of four parts: - -- a preliminary step to read the SED and build the SED library; - -- a preliminary step to read the input filters set and build the filter - library ; - -- a program to compute apparent magnitudes in the filter set for each - template of the library, along a grid of redshift, adding dust - attenuation and nebular emission lines and storing the results. This - step allows the user to extract basic information relative to the - filters (e.g. :math:`\lambda_{mean}`, AB-corrections, attenuation) - and SEDs (e.g. k-corrections, color-color diagrams, etc.). - -- The photometric redshift code based on a :math:`\chi^2` fitting - method. This part can also be used to compute physical parameters. - - -.. Comment out old download instructions -.. Download and installation -.. ^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. | The basic package is available from GitHub. Each file is briefly described in Appendix -.. A. Additional SED libraries (in separate tarballs) are also available -.. on the same webpage. -.. | Before starting, you must set two environment variables: - -.. - ``$LEPHAREDIR`` is the root directory of the software (e.g., -.. ``/home/yourname/LEPHARE/``) - -.. - ``$LEPHAREWORK`` is the path of a new directory which will be created -.. when compiling the code (e.g. ``$LEPHAREDIR/work/``). -.. ``$LEPHAREWORK`` will contain libraries created by *LePHARE++* (it -.. can be placed anywhere). The code will use ``$LEPHAREDIR/work/`` if -.. it doesn’t exist. - -.. | These two environment variables could be set definitively in the usual -.. files depending on your shell (e.g., ``.bash_profile`` or -.. ``.csh_envlph``) as any environment variable. -.. | Once downloaded (and unpackaged) *LePHARE++* , enter in the directory -.. ``source``. Then open the file ``Makefile`` and modify its options -.. according to your OS if needed (see notes below). -.. | Once your OS is ready to compile the code, execute the commands: -.. | $ make clean -.. | $ make -.. | if you recompile once again from scratch. Note that the directory -.. ``$LEPHAREWORK`` will be created during this phase. -.. | You can create the directory ``$LEPHAREWORK`` separately with the -.. command: -.. | $ make work -.. | You can use ``Makefile`` to build a gzipped file containing all the -.. source files by the command: -.. | $ make archive -.. | Notes on the compiler options: -.. | With the default set-up, the compiler is GNU ``g++`` with basic -.. optimization flags (``-g -std=c++11 -O3``). If you want to enable -.. parallelization (OPENMP), other options should be included (e.g., -.. ``-lpthread``). MacOS users must be aware that the ``g++`` installed -.. via XCode is a wrapper of ``clang`` and can raise errors while -.. compiling; the easiest solution is to install the original GNU -.. compiler (in the GCC package by Free Software Foundation) available -.. through Homebrew or MacPorts. Note also that the code has been tested -.. with GCC versions :math:`>6` (6.3.0 and 7.3.0); older versions may -.. result in critical errors. - -.. Example with one run -.. ^^^^^^^^^^^^^^^^^^^^ - -.. | We provide an example of the whole procedure for a test catalog -.. included in the package in -.. | ``$LEPHAREDIR/test/``. For this example, we used the COSMOS2015 -.. catalogue (Laigle et al. 2016) but limited to the zCOSMOS bright -.. sample, for which also spectroscopy is provided. You can find more -.. detailed examples in ``$LEPHAREDIR/examples/``. Different -.. configurations are tested, showing how to configure the code for this -.. application. All the key steps are considered. - -Structure -^^^^^^^^^ - -The structure of the package is illustrated in Fig `1 <#fig:skim>`__. -Each step is described in the following sections. First, one has to -define the filters used in the input galaxy catalog (program -``filter``). The other initial step is constructing a library of -rest-frame galaxy SEDs from synthetic models or observed spectra -(program ``sedtolib``). Then, another program builds a grid of apparent -magnitudes at different redshifts, adding dust attenuation and nebular -emission lines to each SED in the library (program ``mag_gal``). The -main *LePHARE++* program (program ``zphota``) will use the file -containing such a grid to fit the photometry from the input catalog. - -.. image:: figures/lephare_skim.png +The basic principle +^^^^^^^^^^^^^^^^^^^ + +*LePHARE* is a set of ``C++`` programs to compute photometric redshifts ( :math:`z_\mathrm{phot}` ) for galaxies and AGN, and galaxy physical parameters by fitting spectral energy distributions (SEDs) to a dataset of photometric fluxes or apparent magnitudes. Stellar templates are fitted too. The set of ``C++`` programs can also be manipulated as a library and handle through python scripts or notebooks. + +The photometric computation can be decomposed in four parts, as illustrated in Fig `1 <#fig:skim>`__: + +- a preliminary step to read the SED from synthetic models or observed spectra and build the SED library. This corresponds to the program ``sedtolib`` in command lines, and the class ``Sedtolib`` in python. + +- a preliminary step to read the input filters used in the input galaxy catalog and build the filter library. This corresponds to the program ``filter`` in command line, and the class ``Filter`` in python. + +- a program to compute apparent magnitudes in the filter set for each template of the library, along a grid of redshift, adding dust attenuation and nebular emission lines and storing the results. This step allows the user to extract basic information relative to the filters (e.g. :math:`\lambda_{mean}`, AB-corrections, attenuation) and SEDs (e.g. k-corrections, color-color diagrams, etc.). This corresponds to the program ``mag_gal`` in command line, and the class ``MagGal`` in python. + +- The photometric redshift code based on a :math:`\chi^2` fitting method using the previously established libraries. This part can also be used to compute physical parameters. This corresponds to the program ``zphota`` in command line, and the class ``PhotoZ`` in python. + +When running the code using command lines in your Unix shell, these four steps need to have been run at least once (but not everytime if the libraries already exist). When running the code using the python interface, these steps could be combined or atomized in smaller steps, but the basic principle of building the magnitude libraries before computing the photometric redshifts remain the same. + + + +.. image:: figures/LePHARE_skim.png :width: 700 :alt: Alternative text :name: fig:skim + +Structure of the code +^^^^^^^^^^^^^^^^^^^^^ + +The structure of the package is illustrated in Fig `2 <#fig:structure>`__. + +The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of anything. However, if you decide to install the code as a developper, i.e. by cloning the code from the `lephare github repository `_, the executables will be located in the ``LEPHARE/bin/`` directory. This directory should be automatically added to your PATH. The ``C++`` source code are located in ``LEPHARE/src/lib/`` and the python scripts are in ``LEPHARE/src/lephare/``. + + +Two directories are essential for the functionning of the code: + +- ``$LEPHAREDIR`` is the directory which contains the internal data used by *LePHARE*, as the filters, the SED templates, the dust attenuation curves, or the opacity of the IGM. If necessary, the user can add new data in this directory (e.g. new filters or new templates). + +- ``$LEPHAREWORK`` is the directory which contains intermediate libraries created by *LePHARE*. The advantage is that these intermediate libraries don't need to be created every times you compute the photo-z if they already exist. + + +These two environment variables could be set in two different ways, depending on your need: + +- Let the code set these environment variables by default (no action needed on your side). In such case, the code will identify your default ``cache`` directory. ``$LEPHAREDIR`` will be set to ``cache/lephare/data/``. ``$LEPHAREWORK`` will be set to ``cache/lephare/work/`` + +- Set yourself the values of these variables, either definitively in the usual files depending on your shell (e.g., ``.bash_profile`` or ``.csh_envlph``) or define them everytime you run the code. Defining them everytime is useful if you want to save the intermediate libraries within a different directory for each of your run. + + +.. image:: figures/LePHARE_structure.png + :width: 700 + :alt: Alternative text + :name: fig:structure + + + +The LePHARE internal data directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The code needs essential information to run, like the filter curves or the SED templates. These informations are stored in one directory which is indicated by the ``$LEPHAREDIR`` environment variable. If the user doesn't set this variable, the code uses by default ``cache/lephare/data/``. + +For a question of disk space and downloading time, the internal data are not installed by default. You have different methods to populate this directory: + +- When importing the *LePHARE* package in python (``import lephare as lp``), a function allows the user to download only the data needed for the run ``lp.data_retrieval.get_auxiliary_data(keymap=keymap, additional_files=["examples/COSMOS.in", "examples/output.para"])``, with ``keymap`` being the map of keywords used to configure the run. The code will check the existence of the data before downloading them again. + +- You can also retrieve all internal data available in *LePHARE* immediatly, using the previous function ``lp.data_retrieval.get_auxiliary_data(clone=False)``. You need 1.3Gb available. + +- You can also clone the data directory from `lephare-data github repository `_. In such case, ``$LEPHAREDIR`` should be set to the ``LEPHARE-data`` directory. + + + +The sub-directories in ``$LEPHAREDIR`` are the following: + +- ``sed/`` which contains three sub-directories for galaxies ``GAL``, for Active Galaxy Nuclei ``QSO`` (named QSO for legacy reason), and for stars ``STAR``. Each of these subdirectory contains its own set of templates (the various directories should have a README file and a file named ``.list`` with a default list of templates. + +- ``filt/`` contains subdirectories with telescope/instrument/survey names corresponding to a set of filters. A large number of filters are already included in the package. However, we propose also a solution when using the python interface to download the filters from a `Filter Profile Service `_ with a much more extensive filter database. + +- ``ext/`` includes several dust attenuation curves. + +- ``opa/`` contains tables with the opacity of the intergalactic medium at various redshifts. The code uses by default the Madau et al. (1995) opacity. + +- ``vega/`` includes some spectra used for calibration (e.g. Vega to AB convertion). + +- ``examples/`` includes some parameters files and input files which could be used as an example to run the photo-z on the COSMOS2020 catalogue (Weaver et al. 2022). + + +The user can add new data in this directory (e.g. if the user want to include a new set of templates not included in *LePHARE*) following the same model as other files already present in the sub-directories. + + + + + + + +^^^^^^^^^^^ + + + + + + + +Running the code +---------------- + +Configuration files +^^^^^^^^^^^^^^^^^^^ + +Two configuration files are important to run the code. + +One configuration file set the parameters associated to the run (e.g., ``$LEPHAREDIR/example/COSMOS.para``). It defines the set of templates, the filters and all the parameters that you want to tune to get the best results. You can store your parameter file where you want (e.g., in the directory where you run the code) to keep configuration files of different runs. Configuration files must be in ASCII format, compliant with the following rules: + +1. Only one parameter per line, with the syntax: PARAMETER_NAME value(s) +2. Comment line starts with “#”. +3. Depending on the parameter, values can be Float, Integer, or String (without quotation marks). +4. When a parameter accepts multiple values, these must be comma separated (no space). +5. When a parameter accepts a file location (as a String), the path can include environmental variables (``$HOME`` and ``$LEPHAREDIR``). +6. Some parameters are mandatory, *LePHARE++* will print out an error message if they are not set (either in the configuration file or via the command line) +7. Other parameters can be omitted (*LePHARE++* will assign a default value to them) + +In the next sections, we will mark the mandatory parameters with an asterisk ("\*"). + +A second configuration file (e.g., ``$LEPHAREDIR/example/output.para``) indicates which properties should be written in the output file. If not existing, all possible properties will be included in the output. + + + Syntax ^^^^^^ -| All the programs in the suite can be run from a Unix shell with the - following syntax: -| $ :math:`<`\ program\ :math:`>` -c :math:`<`\ configfile\ :math:`>` [ - -Parameter *value*...] -| where :math:`<`\ program\ :math:`>` is the name of the program, - followed by a configuration file called with the **-c** option. The - various code options are defined in this file but can also be given - through additional instructions in the command line. Using such an - optional list of parameters, any **-Parameter** *value* statement - overrides the values in the configuration file. +with command lines +~~~~~~~~~~~~~~~~~~ + +All the programs in the suite can be run from a Unix shell with the following syntax: + +.. code-block:: bash + + program -c config_file.para \ + -t G \ # type G for Galaxies / only necessary for sedtolib and mag_gal + --Parameter value \ # optional flag to overwrite + +where `program` is the name of the program (among ``filter``, ``sedtolib``, ``mag_gal``, ``zphota``), followed by a configuration file called with the ``-c`` option. + +The various code options are defined in the configuration file but can also be given through additional instructions in the command line. Using such an optional list of parameters, any ``--Parameter value`` statement overrides the values in the configuration file. + +An extensive example on how to run the code with command lines and including some advanced features is available in this `example `_. + + +with python +~~~~~~~~~~~ + +The ``C++`` programs can also be manipulated as a library using the python interface. This is done by importing the *LePHARE* library in the python scripts or notebooks: -The parameters associated with the various programs can be included in a -single configuration file (e.g., ``zphot.para``) You can store your -parameter file where you want (e.g., in the directory where you run the -code or in ``$LEPHAREDIR/config/``) to keep configuration files of -different runs. Configuration files must be in ASCII format, compliant -with the following rules: +.. code-block:: -- Only one parameter per line, with the syntax: PARAMETER_NAME value(s) + import lephare as lp -- Comment line starts with “#”. +Classes from the *LePHARE* library can be manipulated from the python interface. Several notebooks are given in example in :doc:`notebooks `. -- Depending on the parameter, values can be Float, Integer, or String - (without quotation marks). +The `full run notebook `_ is the closest to the four steps outlined in Fig `1 <#fig:skim>`__, i.e. creating the filter library, the SED library, then build the predicted magnitudes from these filters and SEDs (for GAL/QSO/STAR), and finally running the photometric redshifts. -- When a parameter accepts multiple values, these must be comma - separated (no space). +However, we also added a function ``lp.prepare`` which first compute the full predicted magnitude library (the equivalent of combining filter, sedtolib, mag_gal together in the command lines), and then we compute the photometric redshifts with ``lp.process``. -- When a parameter accepts a file location (as a String), the path can - include environmental variables (``$HOME`` and ``$LEPHAREDIR``). +.. code-block:: bash -- Some parameters are mandatory, *LePHARE++* will print out an error - message if they are not set (either in the configuration file or via - the command line) + # Read the config file within the working directory + config = lp.read_config("zphot.para") + # Example of change in the keywords + config.update( + { + "FILTER_FILE": "filter_test", + "Z_STEP": "0.05,0.,7.", + } + ) + # This line run together all the library preparation + lp.prepare(config) + # Calculate the photometric redshifts + output, pdfs, zgrid = lp.process(config, input_table) -- Other parameters can be omitted (*LePHARE++* will assign a default - value to them) -| In the next sections, we will mark the mandatory parameters with an - asterisk ("\*"). -| You can use the option ``VERBOSE NO`` if you don’t want that - ``mag_gal`` and ``zphota`` display the template or sources computed. - It could be helpful if run in batch mode. + + +^^^^^^ + .. _models: -Rest-frame SED libraries through ``sedtolib`` ---------------------------------------------- +Build the rest-frame template library +--------------------------------- + Overview ^^^^^^^^ -A set of libraries for stars, galaxies, and quasars are available in -$LEPHAREDIR/sed/STAR, $LEPHAREDIR/sed/GAL, $LEPHAREDIR/sed/QSO [2]_ -directories and organized in different sub-folders. - -Each sub-folder contains a specific collection of SED files, described -in a README (how those SEDs were built, etc.), and a file (usually with -the suffix ``.list``) listing the relative path of the SED files to be -used as input for ``sedtolib``. For STAR and QSO and most of the -galaxies, SEDs are written in ASCII, with :math:`\lambda(\AA)`, -flux[:math:`erg/s/\AA/cm^2`], with increasing :math:`\lambda`\ [3]_. -For Galaxy, in addition to empirical SEDs, output files from stellar -synthesis population models (Pegase and BC03) with a more complex format -can also be used by adding a specific character after the file name in -the SED list file (see end of section 2.2.2). - - ``sedtolib`` program -^^^^^^^^^^^^^^^^^^^^^ +In this first step, we generate a unique binary file from different kinds of SEDs (star/AGN/galaxy) with various original formats (ASCII, binary). The binary output file (\*.bin) is saved in the directory ``$LEPHAREWORK/lib_bin/`` with an attached doc file (\*.doc) and a file with physical information (\*.phys) for galaxies. For models with input SEDs expressed in luminosity or energy (:math:`L_{\odot}/A`,\ :math:`\nu L_{\nu}`,...), like BC03, or the FIR libraries, the SED are converted in flux (:math:`erg/s/cm^2/A`). -The program **sedtolib** is used to build the different STAR, QSO and -GALAXY libraries from a list of SED files. The goal of this program is -to generate from different kinds of SEDs (star/AGN/galaxy) with various -original formats (ASCII, binary), a unique binary file with direct -access that can be easily read in the following steps. The binary output -file (\*.bin) is saved in the directory $\ *LEPHAREWORK*/lib_bin/ with -an attached doc file (\*.doc) and a file with physical information -(\*.phys) for galaxies. The new SED format is -(:math:`\lambda(\AA)`,flux[:math:`erg/s/\AA/cm^2`]). For models with -input SEDs expressed in luminosity or energy -(:math:`L_{\odot}/\AA`,\ :math:`\nu L_{\nu}`,...), like PEGASE, GISSEL, -or the FIR libraries, the SED are converted in flux -(:math:`erg/s/cm^2/\AA`). - -Syntax and parameter values -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A set of libraries for stars, galaxies, and AGN are available in $LEPHAREDIR/sed/STAR, $LEPHAREDIR/sed/GAL, $LEPHAREDIR/sed/QSO directories and organized in different sub-folders. Each sub-folder contains a specific collection of SED files, described in a README (how those SEDs were built, etc.), and a file (usually with the suffix ``.list``) listing the relative path of the SED files to be used as input to create the libeary. For STAR and QSO and most of the galaxies, SEDs are written in ASCII, with :math:`\lambda(A)`, flux[:math:`erg/s/A/cm^2`], with increasing :math:`\lambda`. For Galaxy, in addition to empirical SEDs, output files from stellar synthesis population models (BC03) with a more complex format can also be used by adding a specific character after the file name in the SED list file. + + + +Syntax +^^^^^^ + +with command lines +~~~~~~~~~~~~~~~~~~ + +The program **sedtolib** is used to build the different STAR, QSO and GAL libraries from a list of SED files. + +Specific parameters have been duplicated for the STAR, QSO, and GAL categories with different names to simplify this algorithm section. The option -t allows you to specify if galaxy (G), star (S), or QSO (Q) parameters have to be read. +The syntax is + +.. code-block:: bash -| Specific parameters have been duplicated for the STAR, QSO, and - GAL(axy) categories with different names to simplify this algorithm - section. The option -t allows you to specify if galaxy (G), star (S), - or QSO (Q) parameters have to be read. -| The syntax is: -| :math:`\%` **sedtolib** -t G [or Q or S] -c zphot.para + sedtolib -c config_file.para -t G [or Q or S] + +with python +~~~~~~~~~~~ + +With the python, you need to instantiate an object from the class ``Sedtolib``, and indicate the type of SEDs (GAL/QSO/STAR) when applying the fonction ``run``. + +.. code-block:: python + + sedlib = lp.Sedtolib(config_keymap=keymap) + sedlib.run(typ="STAR", star_sed="$LEPHAREDIR/sed/STAR/STAR_MOD_ALL.list") + + + + + + + + +Parameter values +^^^^^^^^^^^^^^^^ + + +The parameter value "XXX" means either GAL or QSO or STAR. Note that SEL_AGE and AGE_RANGE are relevant only when using templates including an age (e.g. BC03). + +-------------+--------+---------+----------------------------------+ | parameter | type | default | description | +=============+========+=========+==================================+ @@ -242,259 +280,234 @@ Syntax and parameter values | SEL_AGE | string | NONE | Full pathname of file with a | | | | | list of ages (Gyr) | +-------------+--------+---------+----------------------------------+ -| | (n=1) | | to be extracted from GISSEL or | -| | | | PEGASE SEDs. | +| | (n=1) | | to be extracted from BC03 | +| | | | | +-------------+--------+---------+----------------------------------+ | AGE_RANGE | float | —– | Range of age (Gyr) | +-------------+--------+---------+----------------------------------+ | | (n=2) | | | +-------------+--------+---------+----------------------------------+ -| -| The extracted text from zphota.para, related to the **sedtolib** - task.The parameter value "XXX" means either GAL or QSO or STAR. Note - that SEL_AGE and AGE_RANGE are relevant only when using templates - including an age (e.g. BC03). - -Building libraries from a list of SEDs -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -| The easiest is to take a predefined list of SED in the existing - subdirectories and look at the README file. -| *For stars ($LEPHAREDIR/sed/STAR)*, SEDs are available in the - subdirectories : -| :math:`\bullet` PICKLES/: 131 stellar SEDs from Pickles (1998) -| :math:`\bullet` BD/: Low mass stars library from Chabrier et al. - (2000) -| :math:`\bullet` BD_NEW/: Brown dwarfs library from Baraffe et al. - 2015, Morley et al. 2012, 2014 -| :math:`\bullet` LAGET/: (missing REF) -| :math:`\bullet` WD/: 4 white dwarfs from Bohlin et al. (1995) -| :math:`\bullet` SPEC_PHOT: Spectro-Photometric standards from Hamuy et - al. (1992, 1994) -| *For QSOs ($LEPHAREDIR/sed/QSO)*, there is a list of observed spectra - from different authors and some synthetical QSOs listed in the - subdirectory (synth/). In particular, a list of templates was - successfully used for computing the photometric redshift of the *XMM* - and *Chandra* AGN identified in COSMOS. In short, the library includes - pure QSO and hybrid templates obtained by combining galaxies with - various AGN and QSO templates with different relative ratios. The - details of the template construction are outlined in Salvato et al. - (2009). Note that, unlike for galaxies, the templates to be used in - QSO depend on the type of AGN and QSO to be fitted (see Salvato et al - 2011, Fotopoulou et al. 2012, Hsu et al. 2014, Ananna et al. 2017) -| *For galaxies ($LEPHAREDIR/sed/GAL)*, SEDs are available in the - following subdirectories: -| :math:`\bullet` CFHTLS_SED/: 66 SEDs used for CFHTLS photo-z paper - (Arnouts et al. 2007) -| :math:`\bullet` COSMOS_SED/: 31 SEDs used for COSMOS photo-z paper - (Ilbert et al. 2009, 2013, Salvato et al. 2011, Dahlen et al. 2013) -| :math:`\bullet` CWW_KINNEY/: original CWW and Kinney spectra -| :math:`\bullet` BC03_CHAB/: SEDs from the BC03 library. These - templates are derived with exponentially declining Star Formation - Histories. -| :math:`\bullet` BC03_CHAB_DELAYED/: SEDs from the BC03 library. These - templates are derived with delayed Star Formation Histories. -| *For Far-Infrared (FIR) SEDs ($LEPHAREDIR/sed/GAL)*, different SEDs - are available : -| :math:`\bullet` CHARY_ELBAZ/: 105 FIR templates for different - luminosity -| :math:`\bullet` DALE/ : 64 FIR templates -| :math:`\bullet` LAGACHE/: 46 FIR templates -| :math:`\bullet` SK06/ : different set of starburst models based on - Siebenmorgen &Krugel (2006) -| Note that for the first 3 libraries (CHARY-ELBAZ, DALE, LAGACHE), we - have subtracted a stellar component from their SEDs to get only the - dust contribution at the shortest wavelengths. -| To know the format of the SEDs that are used in your list, an - additional character must be specified after each SED file, allowing - you to mix in one list of different types of galaxy SEDs. For example, - you could prepare a new list which includes: + + +Adding new templates +^^^^^^^^^^^^^^^^^^^^ + +New SEDs can be easily added to the current ones. They must be located +in the appropriate directory (GAL/STAR/QSO). If they are ASCII files +they must be in :math:`\lambda(A)`, flux[:math:`erg/s/A/cm^2`], with +increasing :math:`\lambda`. + + + +Output +^^^^^^ + + +The binary output file (\*.bin) is saved in the directory ``$LEPHAREWORK/lib_bin/`` with an attached doc file (\*.doc) and a file with physical information (\*.phys) for galaxies. + + + + +Others +^^^^^ + + +Already included libraries +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The easiest is to take a predefined list of SED in the existing subdirectories and look at the README file. + + +For stars *($LEPHAREDIR/sed/STAR)*, SEDs are available in the subdirectories : + +- PICKLES/: 131 stellar SEDs from Pickles (1998) +- BD/: Low mass stars library from Chabrier et al. (2000) +- BD_NEW/: Brown dwarfs library from Baraffe et al. 2015, Morley et al. 2012, 2014 +- LAGET/: (missing REF) +- WD/: 4 white dwarfs from Bohlin et al. (1995) +- SPEC_PHOT: Spectro-Photometric standards from Hamuy et al. (1992, 1994) + + +For AGN *($LEPHAREDIR/sed/QSO)*, there is a list of observed spectra from different authors and some synthetical AGN listed in the subdirectory. In particular, a list of templates was successfully used for computing the photometric redshift of the *XMM* and *Chandra* AGN identified in COSMOS. In short, the library includes pure QSO and hybrid templates obtained by combining galaxies with various AGN and QSO templates with different relative ratios. The details of the template construction are outlined in Salvato et al. (2009). Note that, unlike for galaxies, the templates to be used in QSO depend on the type of AGN and QSO to be fitted (see Salvato et al 2011, Fotopoulou et al. 2012, Hsu et al. 2014, Ananna et al. 2017) + + +For galaxies *($LEPHAREDIR/sed/GAL)*, SEDs are available in the following subdirectories: + +- CFHTLS_SED/: 66 SEDs used for CFHTLS photo-z paper (Arnouts et al. 2007) +- COSMOS_SED/: 31 SEDs used for COSMOS photo-z paper (Ilbert et al. 2009, 2013, Salvato et al. 2011, Dahlen et al. 2013) +- CWW_KINNEY/: original CWW and Kinney spectra +- BC03_CHAB/: SEDs from the BC03 library. These templates are derived with exponentially declining Star Formation Histories. +- BC03_CHAB_DELAYED/: SEDs from the BC03 library. These templates are derived with delayed Star Formation Histories. + +For Far-Infrared (FIR) SEDs *($LEPHAREDIR/sed/GAL)*, different SEDs are available : + +- CHARY_ELBAZ/: 105 FIR templates for different luminosity +- DALE/ : 64 FIR templates +- LAGACHE/: 46 FIR templates +- SK06/ : different set of starburst models based on Siebenmorgen &Krugel (2006) + +Note that for the first 3 libraries (CHARY-ELBAZ, DALE, LAGACHE), we have subtracted a stellar component from their SEDs to get only the dust contribution at the shortest wavelengths. + + +To know the format of the SEDs that are used in your list, an additional character must be specified after each SED file, allowing you to mix in one list of different types of galaxy SEDs. For example, you could prepare a new list which includes: + | BC03_CHAB/bc2003_lr_m52_chab_tau03_dust00.ised_ASCII BC03 | BC03_CHAB/bc2003_lr_m62_chab_tau03_dust00.ised_ASCII BC03 | COSMOS_SED/Ell1_A_0.sed | COSMOS_SED/Ell2_A_0.sed -| In each list, it is possible to comment a template with #. -| For ASCII SED file, no character is required. The character **BC03** - is used for the Bruzual and Charlot 2003 models. For the BC03 - templates, the file is in ASCII for the C++ version of LePhare, to - avoid the problem of portability between various systems. -| For the list with FIR SEDs, the character **LW** (as for Long - Wavelength) is required. - -Physical information for the galaxies -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -| For the galaxy templates, an additional file is generated by the - program ``sedtolib`` with some physical properties (\*.phys). This - information will be used when running the photo-z code to derive - physical parameters. It contains the following parameters: -| Model Age :math:`L_{UV}` :math:`L_R` :math:`L_K` :math:`L_{IR}` Mass - SFR Metallicity Tau :math:`D_{4000}` + +In each list, it is possible to comment a template with #. +For ASCII SED file, no character is required. The character BC03 is used for the Bruzual and Charlot 2003 models. For the BC03 templates, the file is in ASCII for the C++ version of LePhare, to avoid the problem of portability between various systems. + +For the list with FIR SEDs, the character LW (as for Long Wavelength) is required. + + +Find physical information associated to the library +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For the galaxy templates, an additional file is generated associated to the library. The file ``$LEPHAREWORK/lib_bin/*.phys`` contains the following parameters: + +| Model Age :math:`L_{UV}` :math:`L_R` :math:`L_K` :math:`L_{IR}` Mass SFR Metallicity Tau :math:`D_{4000}` + | where | Age is expressed in yr -| :math:`L_{UV}` is NUV monochromatic luminosity (Log([erg/s/Hz])) - (:math:`\int_{2100}^{2500} L_{\lambda} d\lambda /400 * 2300^2/c` )) -| :math:`L_R` is optical r monochromatic luminosity (Log([erg/s/Hz])) - (:math:`\int_{5500}^{6500} L_{\lambda} d\lambda /1000 * 6000^2/c` )) -| :math:`L_K` is NIR K monochromatic luminosity (Log([erg/s/Hz])) - (:math:`\int_{21000}^{23000} L_{\lambda} d\lambda /2000 * 22000^2/c` - )) +| :math:`L_{UV}` is NUV monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{2100}^{2500} L_{\lambda} d\lambda /400 * 2300^2/c` )) +| :math:`L_R` is optical r monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{5500}^{6500} L_{\lambda} d\lambda /1000 * 6000^2/c` )) +| :math:`L_K` is NIR K monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{21000}^{23000} L_{\lambda} d\lambda /2000 * 22000^2/c` )) | :math:`L_{IR}` is the IR luminosity (Log([:math:`L_{\odot}`])) -| Mass is the stellar mass (:math:`M_{\odot}`), .i.e. the mass truly in - stars (not the integral of the SFH) +| Mass is the stellar mass (:math:`M_{\odot}`), .i.e. the mass truly in stars (not the integral of the SFH) | SFR is the ongoing star formation rate (:math:`M_{\odot}/yr`) | Metallicity is the Gas metallicity of the galaxy -| Tau is the e-folding parameter for a star formation history with - SFH=exp(-t/tau) (yr) -| :math:`D_{4000}` is the 4000A break measured as in Bruzual 1983 - (:math:`D_{4000}= \int_{4050}^{4250} F_{\lambda} d\lambda / \int_{3750}^{3950} F_{\lambda} d\lambda`) +| Tau is the e-folding parameter for a star formation history with SFH=exp(-t/tau) (yr) +| :math:`D_{4000}` is the 4000A break measured as in Bruzual 1983 (:math:`D_{4000}= \int_{4050}^{4250} F_{\lambda} d\lambda / \int_{3750}^{3950} F_{\lambda} d\lambda`) + | If not available, the parameters are set to -99. -| The IR luminosity (:math:`L_{IR}`) is derived using LW libraries. For - the Infra-red libraries ( LW: Dale, Lagache, Chary-Elbaz, Siebenmorgen - & Krugel) the IR luminosity is measured from 8 to 1000 microns. These - luminosities may be slightly different then the ones quoted by the - authors due to the different definitions of the :math:`L_{IR}` - integration limit and because (at least for Dale, Lagache, and - Chary-Elbaz) we have subtracted the underlying stellar component from - the original SEDs. - -Adding libraries -~~~~~~~~~~~~~~~~ -New SEDs can be easily added to the current ones. They must be located -in the appropriate directory (GAL/STAR/QSO). If they are ASCII files -they must be in :math:`\lambda(\AA)`, flux[:math:`erg/s/\AA/cm^2`], with -increasing :math:`\lambda`. +| The IR luminosity (:math:`L_{IR}`) is derived using LW libraries. For the Infra-red libraries ( LW: Dale, Lagache, Chary-Elbaz, Siebenmorgen & Krugel) the IR luminosity is measured from 8 to 1000 microns. These luminosities may be slightly different then the ones quoted by the authors due to the different definitions of the :math:`L_{IR}` integration limit and because (at least for Dale, Lagache, and Chary-Elbaz) we have subtracted the underlying stellar component from the original SEDs. + -example -^^^^^^^ - -| G **-c** zphot.para **-GAL_SED** - $LEPHAREDIR/sed/GAL/CFHTLS_SED/CFHTLS_MOD.list **-GAL_LIB** LIB_CFHTLS -| This command reads the list of galaxy templates given by the keyword - **-GAL_SED** (as indicated by **-t** G). -| A binary file LIB_CFHTLS.bin with a LIB_CFHTLS.doc and LIB_CFHTLS.phys - files are saved in $LEPHAREWORK/lib_bin/. -| S **-c** zphot.para **-STAR_SED** $LEPHAREDIR/sed/STAR/STAR_MOD.list - **-STAR_LIB** LIB_STAR -| This command reads the list of star templates given by the keyword - **-STAR_SED** (as indicated by **-t** S). -| A binary file LIB_STAR.bin and a LIB_STAR.doc file are saved in - $LEPHAREWORK/lib_bin/. -| Q **-c** zphot.para **-QSO_SED** $LEPHAREDIR/sed/QSO/QSO_MOD.list - **-QSO_LIB** LIB_QSO -| This command reads the list of QSO templates given by the keyword - **-QSO_SED** (as indicated by **-t** Q). -| A binary file LIB_QSO.bin and a LIB_QSO.doc file are saved in - $LEPHAREWORK/lib_bin/. -| An example of a misleading command: -| S **-c** zphot.para **-GAL_SED** - $LEPHAREDIR/sed/GAL/CWW_KINNEY/CWW_MOD.list **-GAL_LIB** LIB_CWW -| This command will work and will read the galaxy templates given by - **-GAL_SED** but will interprete them as stars rather than galaxies - because the option is set to S: **-t S** ! -| The parameters passed in the command line can also be changed in the - configuration (zphot.para) file, except -t and -c. -.. _`sec:filter`: -Filters -------- - -Several sets of filters, from different telescopes, are available in the -directory ``$LEPHAREDIR/filt/``. You could find most of the standard -filters (like the Johnson-Kron-Cousins in ``filt/jkc``). New set of -filters can be added there. - -By default, the filters are stored in ``$LEPHAREDIR/filt/``, but you -could change this repository using the keyword ``FILTER_REP``. With this -keyword, you could indicate if you prefer to store the filters in -another directory. - -Description and outputs -^^^^^^^^^^^^^^^^^^^^^^^ - -| The program **filter** puts together a list of filter response curves, - and applies some transformations according to the nature of the - filters. The resulting file in the directory $\ **LEPHAREWORK/filt/**. - -.. _syntax-and-parameter-values-1: - -Syntax and parameter values -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -| The syntax is : :math:`\%` **filter -c** zphot.para -| The following parameters are considered: - -+----------------+----------------+----------------+----------------+ -| Parameters | type | default | description | -+================+================+================+================+ -| FILTER_REP | string | $LE | Name of the | -| | | PHAREDIR/filt/ | repository | -| | | | containing the | -| | | | filters. | -+----------------+----------------+----------------+----------------+ -| | (n\ | | | -| | :math:`=`\ 1) | | | -+----------------+----------------+----------------+----------------+ -| F | string | —- | filter files | -| ILTER_LIST(\*) | | | separated by a | -| | | | comma. | -+----------------+----------------+----------------+----------------+ -| | Nfilt not | | | -| | limited | | | -+----------------+----------------+----------------+----------------+ -| TRANS_TYPE | float | 0 | Filter | -| | | | transmission | -| | | | type: 0= | -| | | | Energy; 1= | -| | | | Photon | -+----------------+----------------+----------------+----------------+ -| | n=1 or n=Nfilt | | | -+----------------+----------------+----------------+----------------+ -| FILTER_CALIB | integer | 0 | Filter | -| | | | calibration | -| | | | for long | -| | | | wavelengths | -| | | | [0-def]. | -+----------------+----------------+----------------+----------------+ -| | n=1 or n=Nfilt | | | -+----------------+----------------+----------------+----------------+ -| FILTER_FILE | string | filter | Name of the | -| | | | file with all | -| | | | combined | -| | | | filters . | -+----------------+----------------+----------------+----------------+ -| | (n\ | | It is saved in | -| | :math:`=`\ 1) | | $\ **LEPHAR | -| | | | EWORK/filt/**. | -+----------------+----------------+----------------+----------------+ + +^^^^^^^^^^^ + + + .. _`sec:filter`: +Build the filter library +-------------------- + + + +Overview +^^^^^^^^ + +The goal of this step is to: + +- read a list of filter, corresponding to the ones used in your input catalogue; + +- read each of these filters and convert them into a comman format; + +- store them in a common library in ``$LEPHAREWORK/filt/`` + + +Several sets of filters from different telescopes are available in the directory ``$LEPHAREDIR/filt/``. You could find most of the standard filters (like the Johnson-Kron-Cousins in ``filt/jkc``). New set of filters can be added in this directory. You could also store new filters in another directory than ``$LEPHAREDIR/filt/`` using the keyword ``FILTER_REP``. + + + +Syntax +^^^^^^ + +with command lines +~~~~~~~~~~~~~~~~~~ + +The program ``filter`` puts together a list of filter response curves, and applies some transformations according to the nature of the filters. The resulting file in the directory ``$LEPHAREWORK/filt/``. + +.. code-block:: bash + + filter -c config_file.para + + +with python +~~~~~~~~~~~ + +With the python, you need to instantiate an object from the class ``Filter``, and apply the function ``run``. + +.. code-block:: python + + filterLib = lp.Filter(config_file=config_file) + filterLib.run() + + + + + + + + Parameter descriptions ^^^^^^^^^^^^^^^^^^^^^^ -| : all the filter names must be separated by a comma. We assume that - all the filter files are located in the directory - **$LEPHAREDIR/filt/**, except if the keyword **FILTER_REP** is - specified. When writing the set of filters to be used, only the - pathname after the common string **$LEPHAREDIR/filt/** should be - specified. -| : Type of the transmission curve for each filter, separated by a - comma. The number of arguments should match the number of filter but - if only value is given, which will be use for all the filters. -| The transmissions (:math:`T_{\lambda}`) are dimensionless (in % ), - however they refer either to a transmission in Energy or Photon which - will slightly modify the magnitude estimates. The magnitude is : + + ++----------------+----------------+---------------------+--------------------+ +| Parameters | type | default | description | ++================+================+=====================+====================+ +| FILTER_REP | string | $LEPHAREDIR/filt/ | Name of the | +| | | | repository | +| | | | containing the | +| | | | filters. | ++----------------+----------------+---------------------+--------------------+ +| | (n=1) | | | +| | | | | ++----------------+----------------+---------------------+--------------------+ +| FILTER_LIST | string | —- | filter files | +| | | | separated by a | +| | | | comma. | ++----------------+----------------+---------------------+--------------------+ +| | Nfilt not | | | +| | limited | | | ++----------------+----------------+---------------------+--------------------+ +| TRANS_TYPE | float | 0 | Filter | +| | | | transmission | +| | | | type: 0= | +| | | | Energy; 1= | +| | | | Photon | ++----------------+----------------+---------------------+--------------------+ +| | n=1 or n=Nfilt | | | ++----------------+----------------+---------------------+--------------------+ +| FILTER_CALIB | integer | 0 | Filter | +| | | | calibration | +| | | | for long | +| | | | wavelengths | +| | | | [0-def]. | ++----------------+----------------+---------------------+--------------------+ +| | n=1 or n=Nfilt | | | ++----------------+----------------+---------------------+--------------------+ +| FILTER_FILE | string | filter | Name of the | +| | | | file with all | +| | | | combined | +| | | | filters . | ++----------------+----------------+---------------------+--------------------+ +| | (n=1) | | It is saved in | +| | | | $LEPHAREWORK/filt/ | +| | | | | ++----------------+----------------+---------------------+--------------------+ + +.. _`sec:filter`: + + +``FILTER_LIST``: all the filter names must be separated by a comma. We assume that all the filter files are located in the directory ``$LEPHAREDIR/filt/``, except if the keyword ``FILTER_REP`` is specified. When writing the set of filters to be used, only the pathname after the common string ``$LEPHAREDIR/filt/`` should be specified. + +``TRANS_TYPE``: type of the transmission curve for each filter, separated by a comma. The number of arguments should match the number of filter but if only value is given, which will be use for all the filters. The transmissions (:math:`T_{\lambda}`) are dimensionless (in % ), however they refer either to a transmission in Energy or Photon which will slightly modify the magnitude estimates. The magnitude is : .. math:: mag(*) = -2.5 \log_{10} \frac{\int F_{\lambda}(*) R_{\lambda} d\lambda}{\int F_{\lambda}(Vega) R_{\lambda} d\lambda} - If the transmission curve (:math:`T_{\lambda}`) corresponds to energy - then :math:`R_{\lambda}=T_{\lambda}`, -| If the transmission curve (:math:`T_{\lambda}`) corresponds to number - of photons (:math:`N_{\varphi}`) then +If the transmission curve (:math:`T_{\lambda}`) corresponds to energy then :math:`R_{\lambda}=T_{\lambda}`. +If the transmission curve (:math:`T_{\lambda}`) corresponds to number of photons (:math:`N_{\varphi}`) then :math:`R_{\lambda}= \lambda T_{\lambda}` : .. math:: @@ -502,53 +515,85 @@ Parameter descriptions N_{\varphi} = \frac{ F_{\lambda} d\lambda }{h\ \nu} = \frac{F_{\lambda} \lambda d\lambda }{h\ c} \rightarrow mag(*)=-2.5 \log_{10} \frac{\int F_{\lambda}(*) \lambda T_{\lambda} d\lambda}{\int F_{\lambda}(Vega) \lambda T_{\lambda} d\lambda} \rightarrow R_{\lambda}=\lambda T_{\lambda} - When building the filter library, the filter shape is changed with - respect to the original one as follows : +When building the filter library, the filter shape is changed with respect to the original one as follows : .. math:: R_{\lambda}=T_{\lambda} ( \frac{\lambda}{< \lambda >})^{tt} - , where :math:`tt` is the value of TRANS_TYPE parameter and - :math:`< \lambda >` is the mean wavelength of the filter. -| The modification of filter shape can be significant for long - wavelength filters and when the filter is broad. Nevertheless it is - often not the dominant source of errors with respect to other - uncertainties relative to QE-CCD, telescope transmission, atmospheric - extinction shape etc... -| In the output filter file specified by the keyword **FILTER_FILE**, we - save the values (:math:`\lambda (\AA)`,\ :math:`R_{\lambda}`). -| : This keyword allow to consider specific calibrations at long - wavelengths in order to apply a correction factor to the original flux - estimated by LEPHARE (see section `3.5 <#sec:filtcalib>`__ for more - details). -| We define the correction factor as - fac_corr\ :math:`=\frac{\int R_{\nu} d\nu}{\int \frac{B_{\nu}}{B_{\nu_0}} R_{\nu} d\nu}= \frac{\int R_{\lambda} d\lambda/\lambda^2}{1/\lambda_0^2 \int \frac{B_{\lambda}}{B_{\lambda_0}} R_{\lambda} d\lambda}`, - where :math:`B_{\nu}` is the reference spectrum used to calibrate the - filters and :math:`\lambda_0` is the effective wavelength defined as - :math:`\lambda_{0}= \frac{\int R_{\lambda} B_{\lambda} \lambda d\lambda}{\int R_{\lambda} B_{\lambda} d\lambda}`. -| The value of **FILTER_CALIB** allows to describe different - combinations of :math:`\nu_0` and :math:`B_{\nu}`: -| : :math:`\frac{B_{\nu}}{B_{\nu_0}}=1` or :math:`B_{\nu}=ctt`. This is - the default value used in LEPHARE. -| : :math:`\nu B_{\nu}=ctt`. This describes the SPITZER/IRAC, ISO - calibrations -| : :math:`B_{\nu}=\nu`. This describes the sub-mm calibrations. -| : :math:`B_{\nu}=`\ black body at T=10,000K. -| : A mix calibration with :math:`\nu_0` defined from - :math:`\nu B_{\nu}=ctt` and the flux estimated as - :math:`B_{\nu}=`\ black body at T=10,000K. This appears to be the - adopted scheme for the SPITZER/MIPS calibration. -| : Similar mix calibration with :math:`\nu_0` defined from - :math:`\nu B_{\nu}=ctt` and the flux estimated as :math:`B_{\nu}=\nu`. - This may reflect the SCUBA calibration. - -Filter informations +where :math:`tt` is the value of ``TRANS_TYPE`` parameter and :math:`< \lambda >` is the mean wavelength of the filter. +The modification of filter shape can be significant for long wavelength filters and when the filter is broad. Nevertheless it is often not the dominant source of errors with respect to other uncertainties relative to QE-CCD, telescope transmission, atmospheric extinction shape etc... + +In the output filter file specified by the keyword ``FILTER_FILE``, we save the values (:math:`\lambda (A)`,\ :math:`R_{\lambda}`). + +``FILTER_CALIB``: This keyword allow to consider specific calibrations at long wavelengths in order to apply a correction factor to the original flux estimated by LEPHARE. We define the correction factor as fac_corr\ :math:`=\frac{\int R_{\nu} d\nu}{\int \frac{B_{\nu}}{B_{\nu_0}} R_{\nu} d\nu}= \frac{\int R_{\lambda} d\lambda/\lambda^2}{1/\lambda_0^2 \int \frac{B_{\lambda}}{B_{\lambda_0}} R_{\lambda} d\lambda}`, where :math:`B_{\nu}` is the reference spectrum used to calibrate the filters and :math:`\lambda_0` is the effective wavelength defined as :math:`\lambda_{0}= \frac{\int R_{\lambda} B_{\lambda} \lambda d\lambda}{\int R_{\lambda} B_{\lambda} d\lambda}`. The value of ``FILTER_CALIB`` allows to describe different combinations of :math:`\nu_0` and :math:`B_{\nu}`: + +| ``FILTER_CALIB=0`` :math:`\frac{B_{\nu}}{B_{\nu_0}}=1` or :math:`B_{\nu}=ctt`. This is the default value used in *LePHARE*. +| ``FILTER_CALIB=1`` :math:`\nu B_{\nu}=ctt`. This describes the SPITZER/IRAC, ISO calibrations. +| ``FILTER_CALIB=2`` :math:`B_{\nu}=\nu`. This describes the sub-mm calibrations. +| ``FILTER_CALIB=3`` :math:`B_{\nu}=`\ black body at T=10,000K. +| ``FILTER_CALIB=4`` : A mix calibration with :math:`\nu_0` defined from :math:`\nu B_{\nu}=ctt` and the flux estimated as :math:`B_{\nu}=`\ black body at T=10,000K. This appears to be the adopted scheme for the SPITZER/MIPS calibration. +| ``FILTER_CALIB=5`` : Similar mix calibration with :math:`\nu_0` defined from :math:`\nu B_{\nu}=ctt` and the flux estimated as :math:`B_{\nu}=\nu`. This may reflect the SCUBA calibration. + + + +Adding a new filter ^^^^^^^^^^^^^^^^^^^ -Standard filter informations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In general +~~~~~~~~~~ + +Filters are ASCII files with the following format : +| In first row : #   SHORT_NAME_of_FILTER      ADD_COMMENTS +| In next rows : :math:`\lambda (A)` Transmission + +Wavelengths must be in increasing order. It is better to put the lowest and highest :math:`\lambda` with Transmission=0. The units of transmission are not considered. + +The header, the transmission at 0 on the edges, and the transmission sorted in lambda are set internally if not + prepared by the user. + +As an exemple : filter pippo.pb and put it in $LEPHAREDIR/filt/pippo/pippo.pb : + +======= ================================ +# PIPPO This is close to window function +5000 0 +5001 1 +5999 1 +6000 0 +======= ================================ + + + +Getting new filter automatically (only in python) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The python interface allows to load the filters from a yml file, with the possibility to query the `SVO service `_ including a much larger number of filters. + +.. code-block:: python + + filterLibSVO = lp.FilterSvc.from_yaml(f"{lp.LEPHAREDIR}/examples/config.yml") + filter_output = os.path.join(os.environ["LEPHAREWORK"], "filt", keymap["FILTER_FILE"].value) + lp.write_output_filter(filter_output + "_svo.dat", filter_output + "_svo.doc", filterLibSVO) -| As an example, using default values listed in the configuration file - zphot.para. +where ``$LEPHAREDIR/examples/config.yml`` is a yml file including the name of filters to be downloaded. They are store in ``LEPHAREWORK/filt/`` and name defined according to the keyword ``FILTER_FILE``. + + + + + +Output +^^^^^^ + +The filters are stored in a single ascii file as given by ``FILTER_FILE`` and store in ``$LEPHAREWORK/filt/`` with an attached doc file (\*.doc). + + + +Others +^^^^^^ + +Get information on the filters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +As an example, using default values listed in the configuration file zphot.para. +--------------+------------------------------------------------------+ | FILTER_LIST | tmp/f300.pb,tmp/f450.pb, | @@ -563,67 +608,48 @@ Standard filter informations | | | +--------------+------------------------------------------------------+ -| Run the program ::math:`\%` **filter -c** zphot.para. -| It generates the file HDF.filt by combining all filters and saved it - in $\ *LEPHAREWORK*/filt. -| It returns informations about the filters on screen. Another stand - alone program allows also to read informations about existing filter - list (with :math:`\%` **filter_info -f** HDF.filt). -| The following informations are written on the screen : - -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| #NAME | ID | :m | :ma | FWHM | ABcor | TGcor | VEGA | :m | CAL | :mat | Fac | -| | | ath:` | th:`\ | | | | | ath:` | | h:`\l | | -| | | \lamb | lambd | | | | | M_{\o | | ambda | | -| | | da_{m | a_{ef | | | | | dot}^ | | _{0}` | | -| | | ean}` | f}^{V | | | | | {AB}` | | | | -| | | | ega}` | | | | | | | | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| F300W | 1 | 0 | 0 | 0 | 1.398 | 99.99 | -2 | 7.433 | 0 | 0 | 1.000 | -| | | .2999 | .2993 | .0864 | | | 1.152 | | | .2999 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| F450W | 2 | 0 | 0 | 0 | - | - | -2 | 5.255 | 0 | 0 | 1.000 | -| | | .4573 | .4513 | .1077 | 0.074 | 0.339 | 0.609 | | | .4573 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| F606W | 3 | 0 | 0 | 0 | 0.095 | 0.161 | -2 | 4.720 | 0 | 0 | 1.000 | -| | | .6028 | .5827 | .2034 | | | 1.367 | | | .6028 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| F814W | 4 | 0 | 0 | 0 | 0.417 | 0.641 | -2 | 4.529 | 0 | 0 | 1.000 | -| | | .8013 | .7864 | .1373 | | | 2.322 | | | .8013 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| Jbb | 5 | 1 | 1 | 0 | 0.890 | 99.99 | -2 | 4.559 | 0 | 1 | 1.000 | -| | | .2370 | .2212 | .2065 | | | 3.748 | | | .2370 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| H | 6 | 1 | 1 | 0 | 1.361 | 99.99 | -2 | 4.702 | 0 | 1 | 1.000 | -| | | .6460 | .6252 | .3377 | | | 4.839 | | | .6460 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ -| K | 7 | 2 | 2 | 0 | 1.881 | 99.99 | -2 | 5.178 | 0 | 2 | 1.000 | -| | | .2210 | .1971 | .3967 | | | 6.012 | | | .2210 | | -+-------+----+-------+-------+-------+-------+-------+-------+-------+-----+-------+-------+ +When building the filter library, the following informations are written on the screen : + ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| #NAME | ID | :math:`\lambda_{eff}^{mean}` | :math:`\lambda_{eff}^{Vega}`| FWHM | ABcor | TGcor | VEGA | :math:`M_{\odot}^{AB}` | CAL | :math:`\lambda_{0}` | Fac | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| F300W | 1 | 0.2999 | 0.2993 | 0.0864 | 1.398 | 99.99 | -21.152 | 7.433 | 0 | 0.2999 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| F450W | 2 | 0.4573 | 0.4513 | 0.1077 | -0.074 | -0.339 | -20.609 | 5.255 | 0 | 0.4573 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| F606W | 3 | 0.6028 | 0.5827 | 0.2034 | 0.095 | 0.161 | -21.367 | 4.720 | 0 | 0.6028 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| F814W | 4 | 0.8013 | 0.7864 | 0.1373 | 0.417 | 0.641 | -22.322 | 4.529 | 0 | 0.8013 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| Jbb | 5 | 1.2370 | 1.2212 | 0.2065 | 0.890 | 99.99 | -23.748 | 4.559 | 0 | 1.2370 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| H | 6 | 1.6460 | 1.6252 | 0.3377 | 1.361 | 99.99 | -24.839 | 4.702 | 0 | 1.6460 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ +| K | 7 | 2.2210 | 2.1971 | 0.3967 | 1.881 | 99.99 | -26.012 | 5.178 | 0 | 2.2210 | 1.000 | +| | | | | | | | | | | | | ++-------+----+-------------------------------+-----------------------------+-------------+-------------+-------------+-------------+---------------------------+-----+---------------------------+-------+ | | where : | Col 1 : Name put in the first row of the filter file | Col 2 : incremental number -| Col 3 : Mean wavelength (:math:`\mu m`) : - :math:`\int R_{\lambda} \lambda d\lambda / \int R_{\lambda} d\lambda` -| Col 4 : Effective wavelength with Vega (:math:`\mu m`) : - :math:`\int R_{\lambda} F_{\lambda}(Vega)\lambda d\lambda / \int R_{\lambda}F_{\lambda}(Vega) d\lambda` +| Col 3 : Mean wavelength (:math:`\mu m`) : :math:`\int R_{\lambda} \lambda d\lambda / \int R_{\lambda} d\lambda` +| Col 4 : Effective wavelength with Vega (:math:`\mu m`) : :math:`\int R_{\lambda} F_{\lambda}(Vega)\lambda d\lambda / \int R_{\lambda}F_{\lambda}(Vega) d\lambda` | Col 5 : Full Width at Half of Maximum (:math:`\mu m`) | Col 6 : AB Correction where :math:`m_{AB} = m_{VEGA} + ABcor` -| Col 7 : Thuan Gunn correction where :math:`m_{TG} = m_{VEGA} + TGcor`. - (99.99 if undefined) -| Col 8 : VEGA magnitude : - :math:`2.5\log_{10}(\int R_{\lambda} F_{\lambda}(Vega) d\lambda / \int R_{\lambda} d\lambda`) +| Col 7 : Thuan Gunn correction where :math:`m_{TG} = m_{VEGA} + TGcor`. (99.99 if undefined) +| Col 8 : VEGA magnitude : :math:`2.5\log_{10}(\int R_{\lambda} F_{\lambda}(Vega) d\lambda / \int R_{\lambda} d\lambda`) | Col 9 : AB absolute magnitude of the sun (:math:`M^{AB}_{\nu,\odot}`) - [4]_ -| Col 10: value of the calibration used for - (:math:`B_{\nu}/B_{\nu_0}`,\ :math:`\nu_0`) in **FILTER_CALIB** -| Col 11: Effective wavelength (:math:`\mu m`) - :math:`\lambda_{0}^{B_{\nu}}= \frac{\int R_{\lambda} B_{\lambda} \lambda d\lambda}{\int R_{\lambda} B_{\lambda} d\lambda}`. -| Col 12: Correction factor to be applied to the original flux measured - by LEPHARE. This correction is included in the programs **mag_gal** - and **mag_star** as :math:`flux^{cor}= flux^{LePhare}\times`\ fac_cor +| Col 10: value of the calibration used for (:math:`B_{\nu}/B_{\nu_0}`,\ :math:`\nu_0`) in ``FILTER_CALIB`` +| Col 11: Effective wavelength (:math:`\mu m`) :math:`\lambda_{0}^{B_{\nu}}= \frac{\int R_{\lambda} B_{\lambda} \lambda d\lambda}{\int R_{\lambda} B_{\lambda} d\lambda}`. +| Col 12: Correction factor to be applied to the original flux measured by LEPHARE. This correction is included in the programs **mag_gal** and **mag_star** as :math:`flux^{cor}= flux^{LePhare}\times`\ fac_cor Extinction informations ~~~~~~~~~~~~~~~~~~~~~~~ @@ -636,7 +662,6 @@ Extinction informations and is the default law for the galactic extinction. | % **filter_extinc** -c COSMOS.para -FILTER_FILE filter_test.dat | It returns: -| ####################################### | # Computing ATMOSPHERIC AND GALACTIC EXTINCTION | # with the following options: @@ -648,7 +673,6 @@ Extinction informations =============================== ================= | -| ####################################### ====================== ================ ======== ============ Filters Ext(mag/airmass) Albda/Av Albda/E(B-V) @@ -677,17 +701,21 @@ vista/K 0.100 0.118 0.364 extinction laws but Calzetti (:math:`R_V=4.05`) and Prevost (:math:`R_V=2.72`). | Others extinction laws can be added by following the format - (:math:`\lambda(\AA) , k_{\lambda}`). + (:math:`\lambda(A) , k_{\lambda}`). .. container:: float :name: fig:ext + + + + .. _`sec:filtcalib`: Application to long wavelengths -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -LEPHARE has been developped for the optical-NIR domain but can be used +*LePHARE* has been developped for the optical-NIR domain but can be used at shorter (UV) and longer wavelengths (FIR, submm and radio). In particular extensive tests have been performed in the long wavelength domain by E. Le Floc’h to evaluate the photometric accuracy. Some issues @@ -698,7 +726,7 @@ have to be considered : wavelength domain. - The bandpass in radio domain is very narrow and does not require to - convolve through the filter. However the structure of LEPHARE + convolve through the filter. However the structure of *LePHARE* requires to implement a transmission curves for the radio frequencies in similar way as in shorter wavelengths. @@ -729,51 +757,51 @@ correction is : In the case of MIPS, the effective wavelength seems to be defined, according to the MIPS handbook, as :math:`\nu B_{\nu}=ctt` while the reference spectrum is a black body. This mix definition can be - described with **FILTER_CALIB=4**. + described with FILTER_CALIB=4. | In the table below we report the effective wavelengths and the correction factors that are applied to LEPHARE fluxes for a set of filters spanning from NIR (K band), MIR (SPITZER/IRAC), FIR (SPITZER/MIPS), sub-mm (SCUBA) to radio (VLA: 1.4GHz). -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| #NAME | :m | :m | CAL | :mat | Fac | CAL | :mat | Fac | -| | ath:` | ath:` | | h:`\l | | | h:`\l | | -| | \lamb | M_{\o | | ambda | | | ambda | | -| | da_{m | dot}^ | | _{0}^ | | | _{0}^ | | -| | ean}` | {AB}` | | {B_{\ | | | {B_{\ | | -| | | | | nu}}` | | | nu}}` | | -+=======+=======+=======+=====+=======+=======+=====+=======+=======+ -| K | 2 | 5.178 | 0 | 2 | 1.000 | 0 | 2 | 1.000 | -| | .2210 | | | .2210 | | | .2210 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| I | 3 | 6.061 | 1 | 3 | 1.004 | 1 | 3 | 1.004 | -| RAC_1 | .5634 | | | .5504 | | | .5504 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| I | 4 | 6.559 | 1 | 4 | 1.004 | 1 | 4 | 1.004 | -| RAC_2 | .5110 | | | .4930 | | | .4930 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| I | 5 | 7.038 | 1 | 5 | 1.005 | 1 | 5 | 1.005 | -| RAC_3 | .7593 | | | .7308 | | | .7308 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| I | 7 | 7.647 | 1 | 7 | 1.011 | 1 | 7 | 1.011 | -| RAC_4 | .9595 | | | .8723 | | | .8723 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| 24mic | 23 | 9.540 | 4 | 23 | 0.968 | 3 | 23 | 1.006 | -| | .8437 | | | .6750 | | | .2129 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| 70mic | 72 | 1 | 4 | 71 | 0.932 | 3 | 68 | 1.013 | -| | .5579 | 2.213 | | .4211 | | | .4725 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| 1 | 156 | 1 | 4 | 155 | 0.966 | 3 | 152 | 1.007 | -| 60mic | .9636 | 3.998 | | .8945 | | | .6311 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| 8 | 866 | nan | 5 | 865 | 0.997 | 2 | 862 | 1.000 | -| 50mic | .7652 | | | .3377 | | | .4710 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ -| VLA_1 | 2 | nan | 5 | 2 | 1.000 | 2 | 2 | 1.000 | -| .4GHz | 14300 | | | 14248 | | | 14145 | | -| | | | | .3782 | | | .1645 | | -+-------+-------+-------+-----+-------+-------+-----+-------+-------+ ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| #NAME | :math:`\lambda_{mean}` | :math:`M_{\odot}^{AB}` | CAL | :math:`\lambda_{0}^{B_{\nu}}` | Fac | CAL | :math:`\lambda_{0}^{B_{\nu}}` | Fac | +| | | | | | | | | | +| | | | | | | | | | +| | | | | | | | | | +| | | | | | | | | | +| | | | | | | | | | ++============+========================+=========================+=====+================================+=======+=====+===============================+=======+ +| K | 2.2210 | 5.178 | 0 | 2.2210 | 1.000 | 0 | 2.2210 | 1.000 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| IRAC_1 | 3.5634 | 6.061 | 1 | 3.5504 | 1.004 | 1 | 3.5504 | 1.004 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| IRAC_2 | 4.5110 | 6.559 | 1 | 4.4930 | 1.004 | 1 | 4.4930 | 1.004 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| IRAC_3 | 5.7593 | 7.038 | 1 | 5.7308 | 1.005 | 1 | 5.7308 | 1.005 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| IRAC_4 | 7.9595 | 7.647 | 1 | 7.8723 | 1.011 | 1 | 7.8723 | 1.011 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| 24mic | 23.8437 | 9.540 | 4 | 23.6750 | 0.968 | 3 | 23.2129 | 1.006 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| 70mic | 72.5579 | 12.213 | 4 | 71.4211 | 0.932 | 3 | 68.4725 | 1.013 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| 160mic | 156.9636 | 13.998 | 4 | 155.8945 | 0.966 | 3 | 152.6311 | 1.007 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| 850mi | 866.7652 | nan | 5 | 865.3377 | 0.997 | 2 | 862.4710 | 1.000 | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ +| VLA_1.4GHz | 214300 | nan | 5 | 214248.3782 | 1.000 | 2 | 214145.1645 | 1.000 | +| | | | | | | | | | +| | | | | | | | | | ++------------+------------------------+-------------------------+-----+--------------------------------+-------+-----+-------------------------------+-------+ | | As can be seen from this table : @@ -786,8 +814,7 @@ correction is : :math:`B_{\nu}=BB(T=10,000K)` and :math:`\lambda_0` defined as :math:`\nu B_ {\nu}=ctt` (FILTER_CALIB=4), which seems to better reflect the current MIPS calibration. In this case, correction factors - between 3% to 7% are applied to the theoretical magnitudes estimated - with **mag_gal** program. However, we also compare the correction + between 3% to 7% are applied to the theoretical magnitudes. However, we also compare the correction factors when both :math:`\lambda_0` and :math:`B_{\nu}` refer to a black body at T=10,000K (FILTER_CALIB=3). In this case, the corrections become negligeable with :math:`\sim`\ 1%. @@ -799,604 +826,398 @@ correction is : special warning for MIPS calibration, where depending on the calibration scheme, a correction up to 7%, may be applied. -Requirement to create a new filter -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -| Filters are ASCII files with the following format : -| In first row : #   SHORT_NAME_of_FILTER      ADD_COMMENTS -| In next rows : :math:`\lambda (\AA)` Transmission -| Wavelengths must be in increasing order. It is better to put the - lowest and highest :math:`\lambda` with Transmission=0. The units of - Transmission are not considered -| In the c++ version, the header, the transmission at 0 on the edges, - and the transmission sorted in lambda are done internally if not - prepared by the user. -| As an exemple : I create filter pippo.pb and put it in - $LEPHAREDIR/filt/pippo.pb : -======= ================================ -# PIPPO This is close to window function -5000 0 -5001 1 -5999 1 -6000 0 -======= ================================ + | +^^^^^^^^^^^ + .. _`sec:mag_gal`: -Predicted magnitudes for galaxy/qso/stars libraries : **mag_gal** ------------------------------------------------------------------ +Build the predicted flux/magnitude library +-------------------------------------- .. _description-and-outputs-1: -Description and outputs -^^^^^^^^^^^^^^^^^^^^^^^ - -| The **mag_gal** program predicts the magnitudes expected for - GALAXY/QSO/STAR templates at various redshifts. It establishes the - flux library which will be compared later to the data. -| For a set of filters given by **-FILTER_FILE** and an input SED - library defined by **-GAL_LIB_IN**, the magnitudes are computed at - different redshifts defined by **-Z_STEP**. Extinctions can be applied - as specified by the three keywords (**-EXTINC_LAW, -MOD_EXTINC, - -EB_V**). If evolving stellar population models are used, the - cosmology (**-COSMOLOGY**) will allow to reject models older than the - age of the universe. The magnitude in VEGA or AB (defined by - **-MAGTYPE**) are saved in the binary file defined by **-GAL_LIB_OUT** - in $LEPHAREWORK/lib_mag/ with an attached doc file. -| An output file (**-LIB_ASCII YES** ) is written to check the - magnitudes, color tracks with redshift .... + + +Overview +^^^^^^^^ + +In this step, the program predicts the magnitudes expected for GAL/QSO/STAR templates integrated through the filter curves along a grid of redshifts. It establishes the predicted flux/magnitude library which will be compared later to the data. .. _syntax-and-parameter-values-2: -Syntax and parameter values -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -| The usual syntax : :math:`\%` **mag_gal -t** G (or Q, or S) **-c** - zphot.para -| The parameters values : -| (XXX means either GAL/QSO/STAR and are selected with **-t G** / **-t - Q** ) / **-t S** ) - -+-----------------+------------------+----------+------------------+ -| Parameters | type | default | description | -+=================+==================+==========+==================+ -| FILTER_FILE(\*) | string | —- | Name of the | -| | | | filter file | -+-----------------+------------------+----------+------------------+ -| | ( | | file must exist | -| | n\ :math:`=`\ 1) | | in | -| | | | $\ *LE | -| | | | PHAREWORK*/filt/ | -+-----------------+------------------+----------+------------------+ -| XXX_LIB_IN(\*) | string | —- | Name of the | -| | | | GALAXY/QSO/STAR | -| | | | binary library | -| | | | (with no | -| | | | extension) | -+-----------------+------------------+----------+------------------+ -| | | | created by | -| | | | **sedtolib**; | -+-----------------+------------------+----------+------------------+ -| | (n=1) | | Files must exist | -| | | | in | -| | | | $\ *LEPHA | -| | | | REWORK*/lib_bin/ | -+-----------------+------------------+----------+------------------+ -| XXX_LIB_OUT(\*) | string | —- | Name of the | -| | | | magnitude binary | -| | | | library (with no | -| | | | extension) | -+-----------------+------------------+----------+------------------+ -| | (n=1) | | files | -| | | | *$GAL[Q | -| | | | SO]_LIB_OUT*.bin | -| | | | (.doc) | -+-----------------+------------------+----------+------------------+ -| | | | are saved in | -| | | | $\ *LEPHA | -| | | | REWORK*/lib_mag/ | -+-----------------+------------------+----------+------------------+ -| MAGTYPE(\*) | string | —- | Magnitude type | -| | | | (AB or VEGA) | -+-----------------+------------------+----------+------------------+ -| | | | | -+-----------------+------------------+----------+------------------+ -| ZGRID_TYPE | int | 0 | 0: constant step | -| | | | in redshift | -+-----------------+------------------+----------+------------------+ -| | (n=1) | | 1: evolving step | -| | | | in redshift as | -| | | | :math:` | -| | | | dz \times (1+z)` | -+-----------------+------------------+----------+------------------+ -| Z_STEP | float | 0.04,0,6 | dz,zmin,zmax: | -| | | | redshift step | -| | | | (dz), | -+-----------------+------------------+----------+------------------+ -| | (n=3) | | the minimum | -| | | | (zmin) and the | -| | | | maximum redshift | -| | | | (zmax). | -+-----------------+------------------+----------+------------------+ -| COSMOLOGY(\*) | float | —- | :math:`H_0`, | -| | | | : | -| | | | math:`\Omega_0`, | -| | | | :m | -| | | | ath:`\Lambda_0`. | -| | | | Used for age | -| | | | constraints. | -+-----------------+------------------+----------+------------------+ -| | (n=3) | | | -+-----------------+------------------+----------+------------------+ -| EXTINC_LAW | string | NONE | Extinction laws | -| | | | to be used (in | -| | | | $\ *LEP | -| | | | HAREDIR*/ext/\*) | -+-----------------+------------------+----------+------------------+ -| | (n\ | | several files | -| | :math:`\le`\ 10) | | separated by | -| | | | comma | -+-----------------+------------------+----------+------------------+ -| MOD_EXTINC | integer | 0,0 | Range of models | -| | | | for which | -| | | | extinction will | -| | | | be applied | -+-----------------+------------------+----------+------------------+ -| | (n\ | | The numbers | -| | :math:`\le`\ 20) | | refer to the | -| | | | models in the | -| | | | *$GAL_SED* list | -+-----------------+------------------+----------+------------------+ -| | | | Number of values | -| | | | must be twice | -| | | | the number of | -| | | | extinction laws. | -+-----------------+------------------+----------+------------------+ -| EB_V | float | 0. | Reddening color | -| | | | excess E(B-V) | -| | | | values to be | -| | | | applied | -+-----------------+------------------+----------+------------------+ -| | (n\ : | | values separated | -| | math:`\le`\ 100) | | by comma. | -+-----------------+------------------+----------+------------------+ -| EM_LINES | string | NO | Add contribution | -| | | | of emission | -| | | | lines and | -| | | | specify | -+-----------------+------------------+----------+------------------+ -| | (n=1) | | how to derive | -| | | | them | -| | | | (``EMP_UV``, | -| | | | ``EMP_SFR``, | -| | | | ``PHYS``) | -+-----------------+------------------+----------+------------------+ -| EM_DISPERSION | float | 1 | the emission | -| | | | lines can vary | -| | | | by these | -| | | | fractions from | -| | | | the expected | -+-----------------+------------------+----------+------------------+ -| | | | value (example | -| | | | 0.5,1.,1.5) | -+-----------------+------------------+----------+------------------+ -| ADD_DUSTEM | string | NO | Add the dust | -| | | | emission in | -| | | | templates when | -| | | | missing. | -+-----------------+------------------+----------+------------------+ -| | | (n=1) | This is based on | -| | | | the energy | -| | | | absorbed over | -| | | | the UV-optical | -| | | | range. | -+-----------------+------------------+----------+------------------+ -| LIB_ASCII | string | NO | ASCII file with | -| | | | magnitudes saved | -| | | | in | -| | | | $\ *LEPHAREWORK* | -+-----------------+------------------+----------+------------------+ -| | (n=1) | | called | -| | | | *$GAL[Q | -| | | | SO]_LIB_OUT*.dat | -+-----------------+------------------+----------+------------------+ + + + +Syntax +^^^^^^ + +with command lines +~~~~~~~~~~~~~~~~~~ + + +The program **mag_gal** is used to build the different STAR, QSO and GAL predicted magnitude/flux libraries. +The option -t allows you to specify if galaxy (G), star (S), or QSO (Q) parameters have to be read. +The syntax is: + +.. code-block:: bash + + mag_gal -c config_file.para -t G [or Q or S] + + +with python +~~~~~~~~~~~ + + +You need to instantiate an object from the class ``MagGal``, and indicate the type (GAL/QSO/STAR) when applying the fonction ``run``. + +.. code-block:: python + + maglib = lp.MagGal(config_keymap=keymap) + maglib.run(typ="GAL",gal_lib_in="LIB_GAL",gal_lib_out="VISTA_COSMOS") + + + + + + + +Parameter values +^^^^^^^^^^^^^^^^ + +For a set of filters given by ``FILTER_FILE`` and an input SED library defined by ``GAL_LIB_IN``, the magnitudes are computed at different redshifts defined by ``Z_STEP``. Extinctions can be applied as specified by the three keywords (``EXTINC_LAW``, ``MOD_EXTINC``, ``EB_V``). If evolving stellar population models are used, the cosmology (``COSMOLOGY``) will allow to reject models older than the age of the universe. The magnitude in ``VEGA`` or ``AB`` (defined by ``MAGTYPE``) are saved in the binary file defined by ``GAL_LIB_OUT`` in ``$LEPHAREWORK/lib_mag/`` with an attached doc file. An output file (``LIB_ASCII YES``) is written to check the magnitudes, color tracks with redshift. + + ++-----------------+----------------------+----------+---------------------------------------+ +| Parameters | type | default | description | ++=================+======================+==========+=======================================+ +| FILTER_FILE(\*) | string | —- | Name of the | +| | | | filter file | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=1) | | file must exist | +| | | | in | +| | | | $LEPHAREWORK/filt/ | ++-----------------+----------------------+----------+---------------------------------------+ +| XXX_LIB_IN(\*) | string | —- | Name of the | +| | | | GAL/QSO/STAR | +| | | | binary library | +| | | | (with no | +| | | | extension) | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=1) | | Files must exist | +| | | | in | +| | | | $LEPHAREWORK/lib_bin/ | ++-----------------+----------------------+----------+---------------------------------------+ +| XXX_LIB_OUT(\*) | string | —- | Name of the | +| | | | magnitude binary | +| | | | library (with no | +| | | | extension) | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=1) | | files | +| | | | GAL[QSO]_LIB_OUT*.bin | +| | | | (.doc) | ++-----------------+----------------------+----------+---------------------------------------+ +| | | | are saved in | +| | | | $LEPHAREWORK/lib_mag/ | ++-----------------+----------------------+----------+---------------------------------------+ +| MAGTYPE(\*) | string | —- | Magnitude type | +| | | | (AB or VEGA) | ++-----------------+----------------------+----------+---------------------------------------+ +| | | | | ++-----------------+----------------------+----------+---------------------------------------+ +| ZGRID_TYPE | int | 0 | 0: constant step | +| | | | in redshift | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=1) | | 1: evolving step | +| | | | in redshift as | +| | | | :math:`dz \times (1+z)` | ++-----------------+----------------------+----------+---------------------------------------+ +| Z_STEP | float | 0.04,0,6 | dz,zmin,zmax: | +| | | | redshift step, dz | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=3) | | the minimum | +| | | | (zmin) and the | +| | | | maximum redshift | +| | | | (zmax). | ++-----------------+----------------------+----------+---------------------------------------+ +| COSMOLOGY(\*) | float | —- | :math:`H_0`, | +| | | | :math:`\Omega_0`, | +| | | | :math:`\Lambda_0`. | +| | | | Used for age | +| | | | constraints. | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=3) | | | ++-----------------+----------------------+----------+---------------------------------------+ +| EXTINC_LAW | string | NONE | Extinction laws | +| | | | to be used (in | +| | | | $LEPHAREDIR/ext/) | ++-----------------+----------------------+----------+---------------------------------------+ +| |(n\ :math:`\le`\ 10) | | several files | +| | | | separated by | +| | | | comma | ++-----------------+----------------------+----------+---------------------------------------+ +| MOD_EXTINC | integer | 0,0 | Range of models | +| | | | for which | +| | | | extinction will | +| | | | be applied | ++-----------------+----------------------+----------+---------------------------------------+ +| |(n\ :math:`\le`\ 20) | | The numbers | +| | | | refer to the | +| | | | models in the | +| | | | $GAL_SED list | ++-----------------+----------------------+----------+---------------------------------------+ +| | | | Number of values | +| | | | must be twice | +| | | | the number of | +| | | | extinction laws. | ++-----------------+----------------------+----------+---------------------------------------+ +| EB_V | float | 0. | Reddening color | +| | | | excess E(B-V) | +| | | | values to be | +| | | | applied | ++-----------------+----------------------+----------+---------------------------------------+ +| |(n\ :math:`\le`\ 100) | | values separated | +| | | | by comma. | ++-----------------+----------------------+----------+---------------------------------------+ +| EM_LINES | string | NO | Add contribution | +| | | | of emission | +| | | | lines and | +| | | | specify | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=1) | | how to derive | +| | | | them | +| | | | (``EMP_UV``, | +| | | | ``EMP_SFR``, | +| | | | ``PHYS``) | ++-----------------+----------------------+----------+---------------------------------------+ +| EM_DISPERSION | float | 1 | the emission | +| | | | lines can vary | +| | | | by these | +| | | | fractions from | +| | | | the expected | ++-----------------+----------------------+----------+---------------------------------------+ +| | | | value (example | +| | | | 0.5,1.,1.5) | ++-----------------+----------------------+----------+---------------------------------------+ +| ADD_DUSTEM | string | NO | Add the dust | +| | | | emission in | +| | | | templates when | +| | | | missing. | ++-----------------+----------------------+----------+---------------------------------------+ +| | | (n=1) | This is based on | +| | | | the energy | +| | | | absorbed over | +| | | | the UV-optical | +| | | | range. | ++-----------------+----------------------+----------+---------------------------------------+ +| LIB_ASCII | string | NO | ASCII file with | +| | | | magnitudes saved | +| | | | in | +| | | | $LEPHAREWORK | ++-----------------+----------------------+----------+---------------------------------------+ +| | (n=1) | | called | +| | | | $GAL[QSO]_LIB_OUT.dat | ++-----------------+----------------------+----------+---------------------------------------+ + The extinction laws and dust emission -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -| A set of extinction laws are available in the directory - (``$LEPHAREDIR/ext/``). Several extinction laws can be used and set up - in the keyword **-EXTINC_LAW**. Each extinction law will be applied to - a range of SED models specified by the keywords **-MOD_EXTINC**. The - model number corresponds to the rank in the list of SEDs used in - **-GAL_SED**. The number of models must be twice the number of - extinction laws. The different values of reddening excess E(B-V) are - given in the keyword **-EB_V** and will apply to all extinction laws. - The extinguished flux is : - :math:`F_{\lambda}^e = F_{\lambda}^0\ 10^{-0.4 A_{\lambda}}= F_{\lambda}^0\ 10^{-0.4 k_{\lambda} E(B-V)}` -| If extinction is applied, a new estimate of the IR dust luminosity is - computed by measuring the amount of light absorbed. Some templates - don’t include dust emission. We add the possibility of having the dust - emission by using ADD_DUSTEM YES. In such case, we use the templates - from Bethermin et al. (2012) and sum their flux contribution to the - stellar template (e.g. BC03). **Don’t use this option if your - templates already include dust emission**. The B12 templates are - different for each redshift. However, a current limitation of the code - is that an incorrect dust SED is displayed in the .spec file (while - the fit is correct). Therefore, we use by default only one B12 - template at :math:`z=0`. The fit will be correct if you use all - templates (but not the final display). +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A set of extinction laws are available in the directory (``$LEPHAREDIR/ext/``). Several extinction laws can be used and set up in the keyword ``EXTINC_LAW``. Each extinction law will be applied to a range of SED models specified by the keywords ``MOD_EXTINC``. The model number corresponds to the rank in the list of SEDs used in ``GAL_SED``. The number of models must be twice the number of extinction laws. The different values of reddening excess E(B-V) are given in the keyword ``EB_V`` and will apply to all extinction laws. The extinguished flux is : :math:`F_{\lambda}^e = F_{\lambda}^0\ 10^{-0.4 A_{\lambda}}= F_{\lambda}^0\ 10^{-0.4 k_{\lambda} E(B-V)}` + +If extinction is applied, a new estimate of the IR dust luminosity is computed by measuring the amount of light absorbed. Some templates don’t include dust emission. We add the possibility of having the dust emission by using ``ADD_DUSTEM YES``. In such case, we use the templates from Bethermin et al. (2012) and sum their flux contribution to the stellar template (e.g. BC03). **Don’t use this option if your templates already include dust emission**. The B12 templates are different for each redshift. However, a current limitation of the code is that an incorrect dust SED is displayed in the .spec file (while the fit is correct). Therefore, we use by default only one B12 template at :math:`z=0`. The fit will be correct if you use all templates (but not the final display). The Emission lines -^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~ + +The role of nebular emission lines in medium- and even broad-band filters has been shown to be essential in several cases (Ilbert et 2009, Schearer et al. 2009, Labbe et al. 2013, Stefanon et al. 2015). Some templates already include emission lines. In this case, you could use ``EM_LINES NO`` to avoid creating additional ones. To include emission lines in the template SEDs if they don’t exist, one of the available methods must be selected through the parameter ``EM_LINES``. There are three different options: -The role of nebular emission lines in medium- and even broad-band -filters has been shown to be essential in several cases (Ilbert et 2009, -Schearer et al. 2009, Labbe et al. 2013, Stefanon et al. 2015). Some -templates already include emission lines. In this case, you could use -**EM_LINES NO** to avoid creating additional ones. To include emission -lines in the template SEDs if they don’t exist, one of the available -methods must be selected through the parameter **EM_LINES**. There are -three different options: - -- **EMP_UV** LePHARE accounts for the contribution of emission lines - with a simple recipe based on the Kennicutt (1998) relations. The SFR - is estimated from UV luminosity, which in turn defines the - H\ :math:`\alpha` luminosity. Intensity of other lines - (:math:`Ly_{\alpha}`, :math:`H_{\alpha}`, :math:`H_{\beta}`, [OII], - OIII[4959] and OIII[5007]) are defined accordingly by using the flux - ratios provided in Ilbert et al. (2009) and slightly adjusted since. - The UV luminosity is derived directly from the SED template. Emission - lines are not considered in red galaxies with - :math:`(NUV-r)_{ABS}\ge 4` (rest frame, dust corrected color). This - option works for any kind of input template. - -- **EMP_SFR** At present, this option can be used only with BC03 - templates. This option can be used with SED templates that have SFR - already defined (BC03). The SFR is converted in H\ :math:`\alpha` - according to Kennicutt (1998). It skips the conversion from UV to SFR - done with the option **EMP_UV**. - -- **PHYS** At present, this option can be used only with BC03 - templates. For each of them, LePhare reads metallicity, fraction of - photoionizing photons, and other physical quantities needed as input - in a model (Schearer et al. 2009) that quantifies flux emitted by - several emission lines. To see details and applications of this - method in Shun et al. (2019, in prep). - -In all the methods, dust attenuation is applied to the emission line -according the continuum value. The MW (Seaton 1979) extinction curve is -considered for the emission lines. A factor :math:`f` is introduce -between the E(B-V) obtained for the stellar content and the E(B-V) -considered for the emission lines. This value is taken as 1. - -With the option **EM_DISPERSION**, the emission lines can vary from the -standard value; for example by setting the option to -EM_DISPERSION -0.5,1.,1.5 the code generates three SEDs with identical characteristics, -except the lines will have the standard flux (prescribed by the EMP\_ or -PHY recipe) and :math:`\pm50\%` of that value. - -Even if emission lines have been built for the entire library, during -any SED fitting run the user can decide to ignore them for a given -subset of models (see ADD_EMLINES option in Section `5.4 <#fit>`__). +- **EMP_UV** LePHARE accounts for the contribution of emission lines with a simple recipe based on the Kennicutt (1998) relations. The SFR is estimated from UV luminosity, which in turn defines the H\ :math:`\alpha` luminosity. Intensity of other lines (:math:`Ly_{\alpha}`, :math:`H_{\alpha}`, :math:`H_{\beta}`, [OII], OIII[4959] and OIII[5007]) are defined accordingly by using the flux ratios provided in Ilbert et al. (2009) and slightly adjusted since. The UV luminosity is derived directly from the SED template. Emission lines are not considered in red galaxies with :math:`(NUV-r)_{ABS}\ge 4` (rest frame, dust corrected color). This option works for any kind of input template. + +- **EMP_SFR** At present, this option can be used only with BC03 templates. This option can be used with SED templates that have SFR already defined (BC03). The SFR is converted in H\ :math:`\alpha` according to Kennicutt (1998). It skips the conversion from UV to SFR done with the option EMP_UV. + +- **PHYS** At present, this option can be used only with BC03 templates. For each of them, LePhare reads metallicity, fraction of photoionizing photons, and other physical quantities needed as input in a model (Schearer et al. 2009) that quantifies flux emitted by several emission lines. To see details and applications of this method in Shun et al. (2019, in prep). + +In all the methods, dust attenuation is applied to the emission line according the continuum value. The MW (Seaton 1979) extinction curve is considered for the emission lines. A factor :math:`f` is introduce between the E(B-V) obtained for the stellar content and the E(B-V) considered for the emission lines. This value is taken as 1. + +With the option ``EM_DISPERSION``, the emission lines can vary from the standard value; for example by setting the option to ``EM_DISPERSION 0.5,1.,1.5`` the code generates three SEDs with identical characteristics, except the lines will have the standard flux (prescribed by the EMP\_ or PHY recipe) and :math:`\pm50\%` of that value. + +Even if emission lines have been built for the entire library, during any SED fitting run the user can decide to ignore them for a given subset of models (see ``ADD_EMLINES option``). This option is not appropriated for the quasars samples. + + + + +Output +^^^^^^ + + +The binary output file (\*.bin) is saved in the directory ``$LEPHAREWORK/lib_mag/`` with an attached doc file (\*.doc). + + ASCII ouput file -^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~ + +An output file is produces in the current directory if ``LIB_ASCII YES``. It has the same root name as the binary file with extension .dat and contains the following informations : + +| Model, Extinc-law, E(B-V), :math:`L_{TIR}(L_{\odot})`, Z, DMod, Age(yr), nrec, n , (mag(i),i=1,n),(kcor(i),i=1,n) + +where Model is the number of models based on the original list, Extinc-law refers to the number of the extinction laws used, :math:`L_{TIR}` the new estimate of the IR luminosity, DMod is the distance modulus, nrec is a record (internal use), n the number of filters, mag(i) the magnitudes in all filters and kcor(i), the k-correction in all filters. -| An output file is produces in the current directory if **-LIB_ASCII - YES**. It has the same root name as the binary file with extension - .dat and contains the following informations : -| Model, Extinc-law, E(B-V), :math:`L_{TIR}(L_{\odot})`, Z, DMod, - Age(yr), nrec, n , (mag(i),i=1,n),(kcor(i),i=1,n) -| where Model is the number of models based on the original list, - Extinc-law refers to the number of the extinction laws used, - :math:`L_{TIR}` the new estimate of the IR luminosity, DMod is the - distance modulus, nrec is a record (internal use), n the number of - filters, mag(i) the magnitudes in all filters and kcor(i), the k - correction in all filters. Sizing the library -^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~ + +You must be aware that the size of the library becomes quickly huge if you do not pay attention. You can estimate its size by considering the following numbers : + +| # of models x # of age x # of z steps x # of extinction law x # of EB-V +| For exemple, 10 SEDs with 60 ages, 2 extinction laws and 6 E(B-V) and 150 z steps will exceed 1,000,000 rows. + + + + + + +^^^^^^^^^^^^^^^^ + + -| You must be aware that the size of the library becomes quickly huge if - you do not pay attention. You can estimate its size by considering the - following numbers : -| # of models x # of age x # of z steps x # of extinction law x # of - EB-V -| For exemple, 10 SEDs with 60 ages, 2 extinction laws and 6 E(B-V) and - 150 z steps will exceed 1,000,000 rows. -.. _example-1: - Example + + + + +Compute photometric redshifts +----------------------------- + + + + +Overview ^^^^^^^^ -| **mag_gal -t Q -c** zphot.para **-FILTER_FILE HDF.filt** - **-QSO_LIB_IN** LIB_QSO **-QSO_LIB_OUT** QSO_HDF **-EXTINC_LAW** NONE -| It will generate the magnitudes for the QSO library (LIB_QSO.bin) - through the filters HDF.filt. Those two files have been created during - the two previous steps. No extinction will be applied. The output - QSO_HDF.bin and QSO_HDF.doc are saved in $LEPHAREWORK/lib_mag/ -| zphot.para **-FILTER_FILE HDF.filt** **-GAL_LIB_IN** LIB_CWW - **-GAL_LIB_OUT** CWW_HDF **-EXTINC_LAW** - SMC_prevot.dat,SB_calzetti.dat **-MOD_EXTINC** 3,6,4,8 **-EB_V** - 0.,0.05,0.1,0.2,0.3 **-LIB_ASCII** YES -| It will generate the magnitudes for the galaxy library (LIB_CWW) and - HDF.filt. The library LIB_CWW is built with the following option in - sedtolib: -| **sedtolib -t G -c** zphot.para **-GAL_SED** - $LEPHAREDIR/sed/GAL/CWW_KINNEY/CWW_MOD.list **-GAL_LIB** LIB_CWW -| CWW_MOD.list contains the following SEDs : 1:Ell, 2:Sbc, 3:Scd, 4:Im, - 5:SB1, 6:SB2, 7:SB3, 8:SB4. -| The two extinction laws are applied as follows : -| :math:`\bullet` SMC_prevost is used for models Scd (3), Im(4), SB1(5), - SB2(6) -| :math:`\bullet` SB_calzetti is used for models Im(4), SB1(5), SB2(6), - SB3(7), SB4 (8) -| The overlapping models (Im, SB1 and SB2) will be extinguished with the - 2 extinction laws. -| For both extinctions, the same values of E(B-V) are used. -| The files CWW_HDF.bin and CWW_HDF.doc are saved in - $LEPHAREWORK/lib_mag/ and the ASCII file CWW_HDF.dat is written in the - current directory. - -The photometric redshift program: ``zphota`` --------------------------------------------- - -| The program ``zphota`` performs a :math:`\chi^2`-based analysis, - fitting the predicted flux (built in Sect. `4 <#sec:mag_gal>`__) to - the observed photometry (AB/Vega magnitudes or fluxes). To measure the - photometric redshift we use a :math:`\chi^2` fitting procedure by - comparing the observed flux (:math:`F_{obs}`) and its corresponding - uncertainties (:math:`\sigma`) with the flux from templates - (:math:`F_{temp}`) defined as: +The final step performs a :math:`\chi^2`-based analysis, fitting the predicted flux built previously to the observed photometry (AB/Vega magnitudes or fluxes). To measure the photometric redshift, we use a :math:`\chi^2` fitting procedure by comparing the observed flux (:math:`F_{obs}`) and its corresponding uncertainties (:math:`\sigma`) with the flux from templates (:math:`F_{temp}`) defined as: .. math:: \chi^2 = \sum_i [ \frac{F_{obs,i} - s F_{temp,i}}{\sigma_i}]^2 - where i refers to the band used for the analysis and :math:`s` the - scaling factor that is chosen to minimize the :math:`\chi^2` values - (:math:`{\it d}\chi^2/{\it d}s=0`): +where i refers to the band used for the analysis and :math:`s` the scaling factor that is chosen to minimize the :math:`\chi^2` values (:math:`{\it d}\chi^2/{\it d}s=0`): .. math:: s = \sum_j [ \frac{F_{obs,j} F_{temp,j}}{\sigma_j^2} ] / \sum_j [ \frac{F_{temp,j}^2}{ \sigma_j^2}] - where j refers to the band used for the scaling (j can be different - from i). -| The photometric baseline can span a large wavelength range, as long as - the templates are established accordingly. Galaxy, star, and QSO - libraries can be used in the same run, but the :math:`\chi^2` - minimization process is performed distinctly for each class. For a - given class (e.g., galaxy SEDs) several libraries can be combined. -| Different options are available to improve the :math:`z_\mathrm{phot}` - measurement: physical priors, adaptive photometric adjustments, - addition of nebular emission lines in the synthetic SEDs. If the - templates include physical information (Sect. `2 <#models>`__, e.g. - BC03), ``zphota`` gives in output stellar mass, star formation rate, - etc., for each object. -| As the previous commands, the basic syntax of this program is: -| :math:`\$` zphota -c zphota.para [-PARAM1 VALUE -PARAM2 VALUE ...] -| assuming that zphota.para is the name of the configuration file. +where j refers to the band used for the scaling (j can be different from i). The photometric baseline can span a large wavelength range, as long as the templates are established accordingly. Galaxy, star, and QSO libraries can be used in the same run, but the :math:`\chi^2` minimization process is performed distinctly for each class. For a given class (e.g., galaxy SEDs) several libraries can be combined. + +Different options are available to improve the :math:`z_\mathrm{phot}` measurement: physical priors, adaptive photometric adjustments, addition of nebular emission lines in the synthetic SEDs. If the templates include physical information (e.g. BC03), the code can output the stellar mass, star formation rate, etc., for each object. + + + + + + +Syntax +^^^^^^^^^^^^^^^^^^ + +Note: you should use the option ``VERBOSE NO`` if you run in batch mode. + + + +With command lines +~~~~~~~~~~~~~~~~~~ + +The program ``zphota`` is used to derive the photo-z and the physical parameters. + + +.. code-block:: bash + + zphota -c config_file.para --CAT_IN sourcelist.in + + +with sourcelist.in being the input file in ascii format. + + +With python +~~~~~~~~~~~ + +You can run the photometric redshift with the function ``lp.process`` prepared to ficilitate your work, or using the class ``lp.PhotoZ``. Here are the two methods: + + +.. code-block:: bash + + # Read the config file within the working directory + config = lp.read_config("zphot.para") + # This line run together all the library preparation + lp.prepare(config) + # Calculate the photometric redshifts + output, pdfs, zgrid = lp.process(config, input_table) + + + +.. code-block:: python + # Instantiate an object from the class ``PhotoZ`` + photz = lp.PhotoZ(keymap) + # Fit + photz.run_photoz(sourcelist, [],[] ) + +The ``sourcelist`` is a vector of objects of the class ``onesource`` containing all the necessary input information (e.g. fluxes, magnitudes, ...). + + -.. _lib: -Input libraries -^^^^^^^^^^^^^^^ - -| The principle of SED-fitting is to compare observed flux with - predicted ones. We can extract from this comparison the photometric - redshift but also physical parameters associated to the galaxies. - Therefore, a fundamental input of ``zphota`` is a library containing - predicted flux created with ``mag_gal``. -| The name of this library should be transmitted to ``zphota`` using the - keyword **ZPHOTLIB**. The name should be a string and points to the - binary file stored in ``$LEPHAREWORK/lib_mag/``. Indicate only the - name of the file without extension. For instance, if a file - ``BC03_LIB.bin`` has been created by ``mag_gal`` and is stored in - ``$LEPHAREWORK/lib_mag/``, you can simply use the option - ``-ZPHOTLIB BC03_LIB``. -| Several librairies can be combined, with their name separated with - coma. You can use as many libraries as you want. Moreover, you can - combine libraries created with GALAXY/QSO/STAR templates and the code - will recognize if it corresponds to a GALAXY, QSO, or STAR library. -| Finally, one can modify the properties of the input library by - applying emission lines to only a sub-sample of the templates and by - reducing the explored range of E(B-V) and redshift. For instance - ``ADD_EMLINES`` defines the range of galaxy models (from the .list - file) in which the code considers the emission lines contribution. - Similarly ``Z_RANGE`` and ``EBV_RANGE`` could be used to reduce the - redshift and the E(B-V) coverage allowed in the fit. .. _input: -Input file -^^^^^^^^^^ -| This section describes how to manage the input file. -| **CAT_IN** specifies the location and name of the input file. -| The input catalogue must be an ASCII table including at least for each - entry: +Input +^^^^^ + -- an identification number (Id); -- the apparent magnitudes (or fluxes); +Input file when using command lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This section describes how to manage the input file. ``CAT_IN`` specifies the location and name of the input file. The input catalogue must be an ASCII table including at least for each entry: + +- an identification number (Id); +- the apparent magnitudes (or fluxes); - the corresponding errors. -| The format is specified by **CAT_FMT**, whose value must be set to - **MEME** (“Magnitude-Error-Magnitude-Error”) to use a catalog in the - format + +The format is specified by ``CAT_FMT``, whose value must be set to ``MEME`` (“Magnitude-Error-Magnitude-Error”) to use a catalog in the format | *Id mag1 err1 mag2 err2 ... magN errN*... -| while the string **MMEE** (“Magnitude...Magnitude-Error...Error”) is - used for catalogs written like +while the string ``MMEE`` (“Magnitude...Magnitude-Error...Error”) is used for catalogs written like | *Id mag1 mag2 ... magN err1 err2 ... errN*... -| Other columns may follow the photometric baseline when the option - **CAT_TYPE** is set to **LONG** (it is **SHORT** by default). Such - extended catalog will look like: -| ``Id mag1 err1 mag2 err2 ... magN errN Context``\ :math:`z_\mathrm{spec}`\ ``Extra1 Extra2...`` -| The ``Context`` indicates which passbands can be used for the object - in this row (see below), :math:`z_\mathrm{spec}` is the input redshift - (can be also equal to -99), and “Extra1”, “Extra2”, etc. are the - remaining columns (any kind of values) that will be read by the - program as a single string and propagated in the output if required. - Only ``Context`` and :math:`z_\mathrm{spec}` are compulsory in the - LONG format, while Extra1, Extra2, etc. can be left empty. -| The input catalogue could include magnitudes or fluxes. To use fluxes, - you must specify **F** for the parameter **INP_TYPE** and fluxes must - be given in :math:`\mathrm{erg}/\mathrm{s}/\mathrm{cm}^2/\mathrm{Hz}`. - If you use magnitude in input, use ``INP_TYPE M``. In this case, The - calibration system is declared by the parameter **CAT_MAG**, which can - be either **VEGA** or **AB**. In any case the filters in the catalog - must be the same (and in the same order) as in the SED library built - with ``mag_gal``. -| For a given object, the flux in a given filter could miss (not - observed or the photometric extraction failed). If the magnitude (or - flux) and the associated are **both** negative, this filter will be - ignored. If the measurement is missing because the flux is too faint - to be detected, one could use an upper limit. In such case, the - magnitude (or flux) are positive and set to the upper-limit value - while the error should be negative. -| You can run ``zphota`` on a subsample of sources. **CAT_LINE** gives - the range of entries which should be considered when running the code. - For instance, ``CAT_LINE 1,1000`` will run the code only on the first - 1000 lines. -| NOTE: commented lines are NOT considered while reading the catalogue, - so this range should be intended as the number of entries, not rows. -Context -~~~~~~~ +Other columns may follow the photometric baseline when the option ``CAT_TYPE`` is set to ``LONG`` (it is ``SHORT`` by default). Such extended catalog will look like: -| The Context is an integer value which specifies the filter combination - to be used. It is defined as the sum of powers of 2 : - Cont\ :math:`=\sum_{i=1}^{i=N} 2^{i-1}`, where i is the filter number - as ordered in the input catalog (and in the library), and N is the - total number of filters. -| As an example, let’s consider a catalog with the following passbands: +| *Id mag1 err1 mag2 err2 ... magN errN Context z_spec Extra1 Extra2...* -================================== = = = = == == == === -Passband U G R I Z J H K -Filter number (i) 1 2 3 4 5 6 7 8 -Filter Context (:math:`2^{(i-1)}`) 1 2 4 8 16 32 64 128 -================================== = = = = == == == === +The ``Context`` indicates which passbands can be used for the object in this row (see below), :math:`z_\mathrm{spec}` is the input redshift (can be also equal to -99), and “Extra1”, “Extra2”, etc. are the remaining columns (any kind of values) that will be read by the program as a single string and propagated in the output if required. Only ``Context`` and :math:`z_\mathrm{spec}` are compulsory in the LONG format, while Extra1, Extra2, etc. can be left empty. -| -| :math:`\bullet` If the context is included in the catalog (CAT_TYPE= - LONG), you can specify a context for each object. One context value - corresponds to a unique filter combination: -| if an object is observed in all passband but H : Context=191 -| if an object is observed in UGRIZ : Context=31 -| if an object is observed in GRIZK : Context=158 -| :math:`\bullet` If the context is absent in the input catalog - (CAT_TYPE =SHORT), it is equivalent to use all the passbands for all - the objects, so Context=255. However, the code checks the error and - flux values. If both values are negative, the band is not used. -| In practice, the context specified in the input catalog can include - all the passbands where the object has been observed even the bands - where it is not detected (upper-limit). Additional options in the - configuration file will allow to restrict the use of the catalog to - some specific filter combinations. -| Note 1: if the flux (or mag) and the associated error are negative, - the filter is ignored in the fit. -| Note 2: In the configuration file, some options refer to a sum of - filter context: -| GLB_CONTEXT, FORB_CONTEXT, ADAPT_CONTEXT, MABS_CONTEXT, FIR_CONT, - FIR_SCALE - -.. _output: - -Output files -^^^^^^^^^^^^ - -| The name of the output file is given with the ``CAT_OUT`` keyword. -| The format of the output file is flexible. All the columns that the - user want in output are listed in a parameter file. The name of the - parameter file should be given in ``PARA_OUT``. -| An example of parameter file with all the existing columns is given in - ``config/output.para``. Some keywords can be removed or commented with - #. You can also modify the order of the keywords. The symbol () - indicates a vector (with a dimension corresponding to the number of - filters). -| You can also decide to get the redshift PDF for each source stored in - a single ascii file. You need to fill the keyword ``PDZ_OUT`` with the - name of the output file. Don’t put any extension, the code will add it - for you. You will get the probability measured at each redshift step - listed in the header. The file will contain one line per object. -| If ``SPEC_OUT YES``, an output file is created for each object. This - file contains several information on the considered object (like the - observed magnitudes, the spec-z, the photo-z, etc), but also the PDF - and the best-fit templates. These files will be named as - ``IdXXXX.spec`` with XXXX being the Id of the source. The file can be - read using a python code ``spec.py`` located in the directory - ``$LEPHAREDIR/tools`` (or the sm macro ``spec.sm`` if you prefer). You - can create a file containing the figures for several sources using: -| ``python spec.py Id00000*.spec -d pdf`` -| It will create a file ``MULTISPEC.pdf`` with all the fit. -| If the user put a name different from YES/NO as argument of SPEC_OUT, - it will be used as directory to store the .spec files. -| You can also decide to get the full :math:`\chi^2` map (the value of - the fit for each redshift, template, E(B-V), etc). Be careful that it - could take a lot of disk space. It could be useful if you have one - source that you want to study in detail. - -.. table:: List of parameters to configure *LePHARE++* . First column is -the keyword to set the parameter, which can be set in the configuration -file or in the command line. The second column is the type of the given -parameter (string, integer, or float) with dimension in square bracket. -For parameters with size :math:`>1` values must be comma-separated -(e.g., :math:`1,2,3`). For parameters having a default value, this is -listed in the third column (a hyphen, —, is shown otherwise). The fourth -column gives a short description of the parameter. Keywords with (\*) -must be defined, all the other keywords are optional. +The input catalogue could include magnitudes or fluxes. To use fluxes, you must specify ``F`` for the parameter ``INP_TYPE`` and fluxes must be given in :math:`\mathrm{erg}/\mathrm{s}/\mathrm{cm}^2/\mathrm{Hz}`. +If you use magnitude in input, use ``INP_TYPE M``. In this case, The calibration system is declared by the parameter ``CAT_MAG``, which can be either ``VEGA`` or ``AB``. In any case the filters in the catalog must be the same (and in the same order) as in the SED library built with ``mag_gal``. - +----------------+----------------+----------------+----------------+ - | **Parameters** | **Type** | **Default | * | - | | | val.** | *Description** | - +================+================+================+================+ - | LePhare++ SED | | | | - | libraries: | | | | - +----------------+----------------+----------------+----------------+ - | ZPHOTLIB(\*) | string | —- | Library names | - | | | | (with no | - | | | | extension) | - | | | | like | - | | | | XXX_LIB_OUT | - +----------------+----------------+----------------+----------------+ - | | (:ma | | Files should | - | | th:`n \geq 1`) | | exist in | - | | | | $\ *LEPHARE | - | | | | WORK*/lib_mag/ | - +----------------+----------------+----------------+----------------+ - | ADD_EMLINES | int | 0,0 | Range of | - | | | | galaxy models | - | | | | in which | - +----------------+----------------+----------------+----------------+ - | | (n\ | | considering | - | | :math:`=`\ 2) | | emission lines | - | | | | contribution. | - +----------------+----------------+----------------+----------------+ - | Z_RANGE | float | 0.,99. | Z min and max | - | | | | allowed in the | - | | | | GALAXY library | - +----------------+----------------+----------------+----------------+ - | | (n=2) | | | - +----------------+----------------+----------------+----------------+ - | EBV_RANGE | float | 0,9 | E(B-V) min and | - | | | | max allowed in | - | | | | the GALAXY | - | | | | library | - +----------------+----------------+----------------+----------------+ - | | (n=2) | | | - +----------------+----------------+----------------+----------------+ - | | | | | +For a given object, the flux in a given filter could miss (not observed or the photometric extraction failed). If the magnitude (or flux) and the associated are **both** negative, this filter will be ignored. + +If the measurement is missing because the flux is too faint to be detected, one could use an **upper-limit**. In such case, the magnitude (or flux) are positive and set to the upper-limit value while the error should be negative. The predicted magnitude will forced to be fainter than the magnitude given in the photometric catalogue. + +You can run ``zphota`` on a subsample of sources. ``CAT_LINE`` gives the range of entries which should be considered when running the code. For instance, ``CAT_LINE 1,1000`` will run the code only on the first 1000 lines. +| NOTE: commented lines are NOT considered while reading the catalogue, so this range should be intended as the number of entries, not rows. + + +----------------+----------------+----------------+----------------+ | Input catalog | | | | - | (Sect. `5.2 | | | | - | <#input>`__): | | | | - +----------------+----------------+----------------+----------------+ | | | | | + | | | | | + +----------------+----------------+----------------+----------------+ + | **Parameters** | **Type** | **Default |**Description** | + | | | val.** | | +----------------+----------------+----------------+----------------+ | CAT_IN(\*) | string[1] | —- | Name of the | | | | | input | @@ -1407,10 +1228,10 @@ must be defined, all the other keywords are optional. | INP_TYPE(\*) | string[1] | —- | Input values: | | | | | Flux (F) or | | | | | Magnitude (M); | - | | | | see | - | | | | Sect. `5 | - | | | | .2 <#input>`__ | - | | | | for units. | + | | | | | + | | | | | + | | | | | + | | | | | +----------------+----------------+----------------+----------------+ | CAT_MAG(\*) | string[1] | —- | Input | | | | | magnitude type | @@ -1418,10 +1239,10 @@ must be defined, all the other keywords are optional. +----------------+----------------+----------------+----------------+ | CAT_FMT(\*) | string[1] | —- | Input format | | | | | for photometry | - | | | | (MEME or MMEE, | - | | | | see | - | | | | Sect. `5. | - | | | | 2 <#input>`__) | + | | | | (MEME or MMEE) | + | | | | | + | | | | | + | | | | | +----------------+----------------+----------------+----------------+ | CAT_LINES | integer[2] | -99,-99 | Min and max | | | | | rows read in | @@ -1430,227 +1251,267 @@ must be defined, all the other keywords are optional. | | | | 1) | +----------------+----------------+----------------+----------------+ | CAT_TYPE | string[1] | SHORT | Input catalog | - | | | | format (see | - | | | | Sect. `5.2.1 | - | | | | <#context>`__) | - +----------------+----------------+----------------+----------------+ + | | | | format | + | | | | | | | | | | - +----------------+----------------+----------------+----------------+ - | Output | | | | - | catalog: | | | | - +----------------+----------------+----------------+----------------+ - | CAT_OUT | string | zphot.out | Name of the | - | | | | output file | - | | | | (full path) | - +----------------+----------------+----------------+----------------+ - | | (n\ | | by default | - | | :math:`=`\ 1) | | saved in | - | | | | working | - | | | | directory | - +----------------+----------------+----------------+----------------+ - | PARA_OUT(\*) | string | —- | Name of the | - | | | | file with | - | | | | selected | - | | | | output | - | | | | parameters | - | | | | (full path) | - +----------------+----------------+----------------+----------------+ - | | (n\ | | | - | | :math:`=`\ 1) | | | - +----------------+----------------+----------------+----------------+ - | SPEC_OUT | string | NO | Output files | - | | | | with | - | | | | Gal/Star/QSO | - | | | | spectra (one | - | | | | file per | - | | | | object) | - +----------------+----------------+----------------+----------------+ - | | (n=1) | | (if YES: can | - | | | | take a lot of | - | | | | disk space !) | - +----------------+----------------+----------------+----------------+ - | | | | If a string | - | | | | different from | - | | | | NO, save files | - | | | | in this | - | | | | directory. | - +----------------+----------------+----------------+----------------+ - | CHI2_OUT | string | NO | Output files | - | | | | with all | - | | | | :math:`\chi^2` | - | | | | for galaxy | - | | | | library (one | - | | | | file per | - | | | | object) | - +----------------+----------------+----------------+----------------+ - | | (n=1) | | (if YES: can | - | | | | take a lot of | - | | | | disk space !) | +----------------+----------------+----------------+----------------+ + + + +Input source list when using python +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +Let's start with an input file ``input.txt`` with five filters u, g, r, i, z. This file is taken in ascii as an example, but it could be in any format readable by python (which is an advantage compared to the run done with command lines). +We can also have stored the context and the spec-z in this catalogue. + + +There is two different methods to establish the input source list and run the photo-z: + +**Method 1** + +.. code-block:: python + + # Read a standard input file + cat = np.loadtxt("input.txt") + id = cat[:, 0] + fluxes = cat[:, 1:10:2] + efluxes = cat[:, 2:11:2] + context = cat[:, 11] + zspec = cat[:, 12] + + # initiate the photo-z run + photz = lp.PhotoZ(keymap) + + # Create a list of object of the class``onesource`` inialized with the information on each source + sourcelist = [] + for i in range(len(id)): + oneObj = lp.onesource(i, photz.gridz) + oneObj.readsource(str(id[i]), fluxes[i, :], efluxes[i, :], int(context[i]), zspec[i], " ") + sourcelist.append(oneObj) + + # Run the photo-z on this source list + photz.run_photoz(sourcelist, [],[] ) + + +**Method 2** + +.. code-block:: python + + # Load the full catalogue + cat = Table.read("input.txt", format="ascii") + + # You will need to set the table columns in order: + # id, flux0, err0, flux1, err1,..., context, zspec, arbitrary_string + input_table = Table() + # The id is in the first column + input_table["id"] = cosmos_full[0] + for n, name in enumerate(filters): + input_table["f_"+name] = cat[2 * n + 1] + input_table["ferr_"+name] = cat[2 * n + 2] + # The context is a binary flag. Here we set it to use all filters. + input_table["context"] = np.sum(2 ** np.arange(len(filters))) + input_table["zspec"] = cat[11] + input_table["string_data"] = "arbitrary_info" + + # Calculate the photometric redshifts using the function process + output, pdfs, zgrid = lp.process(config, input_table) + + + +Context +~~~~~~~ + +The Context is an integer value which specifies the filter combination to be used. It is defined as the sum of powers of 2: Cont\ :math:`=\sum_{i=1}^{i=N} 2^{i-1}`, where i is the filter number as ordered in the input catalog (and in the library), and N is the total number of filters. + +As an example, let’s consider a catalog with the following passbands: + +================================== = = = = == == == === +Passband U G R I Z J H K +Filter number (i) 1 2 3 4 5 6 7 8 +Filter Context (:math:`2^{(i-1)}`) 1 2 4 8 16 32 64 128 +================================== = = = = == == == === + + +One context value corresponds to a unique filter combination: +- if an object is observed in all passband but H : Context=191 +- if an object is observed in UGRIZ : Context=31 +- if an object is observed in GRIZK : Context=158 + +If the context is absent in the input catalog, it is equivalent to use all the passbands for all the objects, so Context=255. However, the code checks the error and flux values. If both values are negative, the band is not used. + +In practice, the context specified in the input catalog can include all the passbands where the object has been observed even the bands where it is not detected (upper-limit). + +Additional options in the configuration file will allow to restrict the use of the catalog to some specific filter combinations. + +| **Note 1**: if the flux (or mag) and the associated error are negative, the filter is ignored in the fit. + +| **Note 2**: In the configuration file, some options refer to a sum of filter context: GLB_CONTEXT, FORB_CONTEXT, ADAPT_CONTEXT, MABS_CONTEXT, FIR_CONT, FIR_SCALE + + + + + +Parameters of the fit +^^^^^^^^^^^^^^^^^^^^ + +.. _lib: + +Input libraries +~~~~~~~~~~~~~~~ + +The principle of SED-fitting is to compare observed flux with predicted ones. We can extract from this comparison the photometric redshift but also physical parameters associated to the galaxies. +Therefore, a fundamental input of the fit is a library containing predicted magnitudes/flux. +The name of this library should be transmitted using the keyword ``ZPHOTLIB``. The name should be a string and points to the binary file stored in ``$LEPHAREWORK/lib_mag/`` (indicate only the name of the file without extension). + + +For instance, if a file ``BC03_LIB.bin`` has been created and is stored in ``$LEPHAREWORK/lib_mag/``, you can simply use the option ``ZPHOTLIB BC03_LIB``. + +Several librairies can be combined, with their name separated with coma. You can use as many libraries as you want. Moreover, you can combine libraries created with GAL/QSO/STAR templates and the code will recognize if it corresponds to a GAL, QSO, or STAR library. + +Finally, one can modify the properties of the input library by applying emission lines to only a sub-sample of the templates and by reducing the explored range of E(B-V) and redshift. For instance ``ADD_EMLINES`` defines the range of galaxy models (from the .list file) in which the code considers the emission lines contribution. Similarly ``Z_RANGE`` and ``EBV_RANGE`` could be used to reduce the redshift and the E(B-V) coverage allowed in the fit. + + + ++----------------+--------------------+-----------------+-----------------+ +| **Parameters** | **Type** |**Default val.** | **Description** | +| | | | | ++----------------+--------------------+-----------------+-----------------+ +| ZPHOTLIB(\*) | string | —- | Library names | +| | | | (with no | +| | | | extension) | +| | | | like | +| | | | XXX_LIB_OUT | ++----------------+--------------------+-----------------+-----------------+ +| | (:math:`n \geq 1`) | | Files should | +| | | | exist in | +| | | | $LEPHAREWORK | +| | | | /lib_mag/ | ++----------------+--------------------+-----------------+-----------------+ +| ADD_EMLINES | int | 0,0 | Range of | +| | | | galaxy models | +| | | | in which | ++----------------+--------------------+-----------------+-----------------+ +| | (n=2) | | considering | +| | | | emission lines | +| | | | contribution. | ++----------------+--------------------+-----------------+-----------------+ +| Z_RANGE | float | 0.,99. | Z min and max | +| | | | allowed in the | +| | | | GALAXY library | ++----------------+--------------------+-----------------+-----------------+ +| | (n=2) | | | ++----------------+--------------------+-----------------+-----------------+ +| EBV_RANGE | float | 0,9 | E(B-V) min and | +| | | | max allowed in | +| | | | the GALAXY | +| | | | library | ++----------------+--------------------+-----------------+-----------------+ +| | (n=2) | | | ++----------------+--------------------+-----------------+-----------------+ + + + + + .. _fit: Managing filters used in the fit -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -| The choice of the filters is defined by the context value for each - object (see `5.2.1 <#context>`__). This context is given in the input - catalogue. You can also force the analysis to some specific filter - combination for the whole catalog. If **GLB_CONTEXT** is used, it - supersedes the individual context. You can also reject some bands with - **FORB_CONTEXT** keyword. This keyword is useful if you want to - perform some test without a specific band. -| The empirical and stellar population synthesis libraries of galaxy - SEDs only account for the stellar light. It is strongly suggested to - only use filters where the stellar light is dominant. Typically we - suggest to authorize only the filters with :math:`\lambda\le 5\mu m`. - Longer wavelength information should be treated separately with the - FIR libraries. - -+----------------+----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default | * | -| | | val.** | *Description** | -+================+================+================+================+ -| PASSBAND | | | | -| SELECTION | | | | -+----------------+----------------+----------------+----------------+ -| GLB_CONTEXT | integer | -1 | Forces the | -| | | | context of all | -| | | | objects for | -| | | | :math:`\chi^2` | -| | | | analysis | -+----------------+----------------+----------------+----------------+ -| | (n\ | | defined as : | -| | :math:`=`\ 1) | | :mat | -| | | | h:`\sum_{i=0}^ | -| | | | {nbd-1} 2^{i}` | -+----------------+----------------+----------------+----------------+ -| | | | 0 means that | -| | | | all bands are | -| | | | used | -+----------------+----------------+----------------+----------------+ -| | | | -1 (default) | -| | | | means that | -| | | | context per | -| | | | object is used | -+----------------+----------------+----------------+----------------+ -| FORB_CONTEXT | integer | -1 | context for | -| | | | forbidden | -| | | | bands | -+----------------+----------------+----------------+----------------+ -| | (n\ | | defined as : | -| | :math:`=`\ 1) | | :mat | -| | | | h:`\sum_{i=0}^ | -| | | | {nbd-1} 2^{i}` | -+----------------+----------------+----------------+----------------+ -| RM | float | 200 | Threshold in | -| _DISCREPENT_BD | | | chi2 to | -| | | | consider. | -+----------------+----------------+----------------+----------------+ -| | | (n\ | Remove 2 bands | -| | | :math:`=`\ 1) | max, stop when | -| | | | below this | -| | | | chi2 | -| | | | threshold. | -+----------------+----------------+----------------+----------------+ -| INCREASING | | | | -| PHOTOMETRIC | | | | -| ERRORS | | | | -+----------------+----------------+----------------+----------------+ -| ERR_FACTOR | float | 1.0 | Scaling factor | -| | | | to the errors | -| | | | (in flux) | -+----------------+----------------+----------------+----------------+ -| | (n\ | | | -| | :math:`=`\ 1) | | | -+----------------+----------------+----------------+----------------+ -| ERR_SCALE | float | -1. | Systematic | -| | | | errors (in | -| | | | mag) add in | -| | | | quadrature to | -| | | | the | -| | | | observations | -+----------------+----------------+----------------+----------------+ -| | (n\ :ma | | must match | -| | th:`\le`\ 100) | | number of | -| | | | bands, not | -| | | | used otherwise | -+----------------+----------------+----------------+----------------+ -| ANALYSIS OF | | | | -| THE | | | | -| :math:`PDF(z)` | | | | -+----------------+----------------+----------------+----------------+ -| Z_INTERP | string | NO | Parabolic | -| | | | interpolation | -| | | | between | -| | | | original step | -| | | | (dz) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | | -+----------------+----------------+----------------+----------------+ -| DZ_WIN | float | 0.25 | “smoothing” | -| | | | window | -| | | | function for | -| | | | 2nd peak | -| | | | search in L(z) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | (value between | -| | | | 0 to zmax) | -+----------------+----------------+----------------+----------------+ -| MIN_THRES | float | 0.1 | threshold for | -| | | | the detection | -| | | | of 2nd peak in | -| | | | normalised | -| | | | L(z) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | (value between | -| | | | 0 to 1) | -+----------------+----------------+----------------+----------------+ -| PROB_INTZ | float | 0. | redshift | -| | | | intervalles to | -| | | | compute | -| | | | probability | -| | | | from F(z) | -+----------------+----------------+----------------+----------------+ -| | ( | | (even number | -| | n\ :math:`\le` | | of values), | -| | 100) | | output vectors | -| | | | from 0 to 100% | -+----------------+----------------+----------------+----------------+ -| | | | 0.-default : | -| | | | not used | -+----------------+----------------+----------------+----------------+ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The choice of the filters is defined by the context value for each object. This context is given in the input catalogue. You can also force the analysis to some specific filter combination for the whole catalog. If ``GLB_CONTEXT`` is used, it supersedes the individual context. You can also reject some bands with ``FORB_CONTEXT`` keyword. This keyword is useful if you want to perform some test without a specific band. + +The empirical and stellar population synthesis libraries of galaxy SEDs only account for the stellar light. It is strongly suggested to only use filters where the stellar light is dominant. Typically we suggest to authorize only the filters with :math:`\lambda\le 5\mu m`. Longer wavelength information should be treated separately with the FIR libraries. + + ++----------------+----------------+----------------+----------------------------------+ +| **Parameters** | **Type** | **Default |**Description** | +| | | val.** | | ++================+================+================+==================================+ +| GLB_CONTEXT | integer | -1 | Forces the | +| | | | context of all | +| | | | objects for | +| | | | :math:`\chi^2` | +| | | | analysis | ++----------------+----------------+----------------+----------------------------------+ +| | (n=1) | | defined as : | +| | | | :math:`\sum_{i=0}^{nbd-1} 2^{i}` | +| | | | | +| | | | | ++----------------+----------------+----------------+----------------------------------+ +| | | | 0 means that | +| | | | all bands are | +| | | | used | ++----------------+----------------+----------------+----------------------------------+ +| | | | -1 (default) | +| | | | means that | +| | | | context per | +| | | | object is used | ++----------------+----------------+----------------+----------------------------------+ +| FORB_CONTEXT | integer | -1 | context for | +| | | | forbidden | +| | | | bands | ++----------------+----------------+----------------+----------------------------------+ +| | (n=1) | | defined as : | +| | | | :math:`\sum_{i=0}^{nbd-1} 2^{i}` | +| | | | | +| | | | | ++----------------+----------------+----------------+----------------------------------+ +| RM | float | 200 | Threshold in | +| _DISCREPENT_BD | | | chi2 to | +| | | | consider. | ++----------------+----------------+----------------+----------------------------------+ +| | | (n=1) | Remove 2 bands | +| | | | max, stop when | +| | | | below this | +| | | | chi2 | +| | | | threshold. | ++----------------+----------------+----------------+----------------------------------+ + -| Expanding photometric uncertainties -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +By definition the :math:`\chi^2` procedure is sensitive to the photometric errors, so it is important to provide reliable uncertainties. Users must account for a possible underestimation (when noise correlation is present in the data) or zero-point calibration uncertainties. The keywords ``ERR_FACTOR`` and ``ERR_SCALE`` allow to tune the individual errors. Note that ``ERR_FACTOR`` will not change the best photo-z solution but just the estimates of the errors, while ``ERR_SCALE`` can change the relative contribution of the bands and thus the best redshift. + + ++----------------+---------------------+----------------+----------------+ +| **Parameters** | **Type** | **Default |**Description** | +| | | val.** | | ++================+=====================+================+================+ +| ERR_FACTOR | float | 1.0 | Scaling factor | +| | | | to the errors | +| | | | (in flux) | ++----------------+---------------------+----------------+----------------+ +| | (n=1) | | | +| | | | | ++----------------+---------------------+----------------+----------------+ +| ERR_SCALE | float | -1. | Systematic | +| | | | errors (in | +| | | | mag) add in | +| | | | quadrature to | +| | | | the | +| | | | observations | ++----------------+---------------------+----------------+----------------+ +| |(n :math:`\le`\ 100) | | must match | +| | | | number of | +| | | | bands, not | +| | | | used otherwise | ++----------------+---------------------+----------------+----------------+ -| By definition the :math:`\chi^2` procedure is sensitive to the - photometric errors, so it is important to provide reliable - uncertainties. Users must account for a possible underestimation (when - noise correlation is present in the data) or zero-point calibration - uncertainties. The keywords ERR_FACTOR and ERR_SCALE allow to tune the - individual errors. Note that ERR_FACTOR will not change the best - photo-z solution but just the estimates of the errors, while ERR_SCALE - can change the relative contribution of the bands and thus the best - redshift. Adding prior information -^^^^^^^^^^^^^^^^^^^^^^^^ - -| Additional constraints can be applied to the :math:`\chi^2` fitting - procedure with the options below. -| *LePHARE++* could apply a prior on the redshift distribution, - following a similar procedure than Benitez et al. (2000). This is done - using the keyword **NZ_PRIOR**. We used the N(z) prior by type - computed from the VVDS survey in I band and detailed in Ilbert et al. - (2006). -| A prior could be applied to avoid unrealistically bright galaxies. The - keyword ``MAG_ABS`` gives the absolute magnitude range allowed in a - given filter **MAG_REF**. This could be defined by checking the - luminosity function of the considered population. For field galaxies, - a common range is -24,8 in the g-band. +~~~~~~~~~~~~~~~~~~~~~~~~ + +Additional constraints can be applied to the :math:`\chi^2` fitting procedure with the options below. + +*LePHARE++* could apply a prior on the redshift distribution, following a similar procedure than Benitez et al. (2000). This is done using the keyword ``NZ_PRIOR``. We used the N(z) prior by type computed from the VVDS survey in *i*-band and detailed in Ilbert et al. (2006). + +A prior could be applied to avoid unrealistically bright galaxies. The keyword ``MAG_ABS`` gives the absolute magnitude range allowed in a given filter ``MAG_REF``. This could be defined by checking the luminosity function of the considered population. For field galaxies, a common range is -24,8 in the g-band. + +----------------+----------+------------------+------------------+ | **Parameters** | **Type** | **Default val.** | **Description** | @@ -1701,496 +1562,307 @@ Adding prior information | | | | means not used | +----------------+----------+------------------+------------------+ + Adaptive method -^^^^^^^^^^^^^^^ - -| In the c++ version, we provide the possibility to train the - zero-points of the photometric catalogue. While this training is less - sophisticated than the fortran version (which allows for a training of - the colors and more), this training is sufficient for most of the - applications. -| In order to turn on this option, use **AUTO_ADAPT YES**. This - procedure requires to have galaxies with a spec-z within the catalogue - (format should be LONG with -99 when no spec-z available). This code - will first fit the best-fit templates to the objects with a spec-z. - Then, it will measure for each filter the systematic offset which - minimizes the differences between the predicted and observed - magnitudes. This procedure is applied iteratively until convergence of - the systematic offset values (maximum of 10 iterations). -| You can also decide to train the zero-points with a sub-sample of the - spec-z sample. Galaxies can be selected in a given apparent magnitude - range (``ADAPT_BAND`` and ``ADAPT_LIM``), in a given redshift range - (``ADAPT_ZBIN``), in a given model range (``ADAPT_MODBIN``). -| You can decide to train only a specific sub-set of bands which are - indicated using the keyword ``ADAPT_CONTEXT``. -| If the photometric catalogue contains a large number of objects, you - can save times by doing the training only on a sub-catalogue with - spec-z and then apply the offsets by hand to the full catalogue - (APPLY_SYSSHIFT). -| **Note 1**: for philosophical reason, we decided that these offsets - are added to the predicted magnitudes (because we don’t know if the - offsets are due to the imaging, bad knowledge of the filters, bad - knowledge of the templates). Therefore, if you want to apply them - directly to the observed magnitude in your catalogue, you need to - subtract these shifts. -| **Note 2**: when using adaptive mode the redshift, for objects that - meet the criteria from ADAPT_LIM and ADAPT_ZBIN, is automatically - fixed to the spectroscopic value during the adaptation, and will be - let free when adaptation is finished. Do not use the adaption with - -ZFIX YES. - -+----------------+----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default | * | -| | | val.** | *Description** | -+================+================+================+================+ -| AUTO_ADAPT | string | NO | ZP adaptive | -| | | | method with | -| | | | spectro | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+----------------+----------------+----------------+ -| ADAPT_BAND | integer | —– | Reference band | -| | | | for the | -| | | | selection in | -| | | | magnitude | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+----------------+----------------+----------------+ -| ADAPT_LIM | float | 18.,24. | Mag range for | -| | | | spectro in | -| | | | reference band | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+----------------+----------------+----------------+ -| ADAPT_CONTEXT | integer | -1 | Context for | -| | | | bands used for | -| | | | training | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | -1 : used | -| | | | context per | -| | | | object | -+----------------+----------------+----------------+----------------+ -| ADAPT_ZBIN | float | 0.01,6 | Redshift’s | -| | | | interval used | -| | | | for training | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=2`) | | | -+----------------+----------------+----------------+----------------+ -| ADAPT_MODBIN | integer | 1,1000 | Model’s | -| | | | interval used | -| | | | for training | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=2`) | | | -+----------------+----------------+----------------+----------------+ -| APPLY_SYSSHIFT | float | —– | Apply | -| | | | systematic | -| | | | shifts in each | -| | | | bands | -+----------------+----------------+----------------+----------------+ -| | (:m | | number of | -| | ath:`n\le 50`) | | values must | -| | | | fit number of | -| | | | filters | -+----------------+----------------+----------------+----------------+ +~~~~~~~~~~~~~~~ + +We provide the possibility to train the zero-points of the photometric catalogue. While this training is less sophisticated than the fortran version (which allows for a training of the colors and more), this training is sufficient for most of the applications. + +In order to turn on this option, use ``AUTO_ADAPT YES``. This procedure requires to have galaxies with a spec-z within the catalogue (format should be LONG with -99 when no spec-z available). This code will first fit the best-fit templates to the objects with a spec-z. Then, it will measure for each filter the systematic offset which minimizes the differences between the predicted and observed magnitudes. This procedure is applied iteratively until convergence of the systematic offset values (maximum of 10 iterations). + +You can also decide to train the zero-points with a sub-sample of the spec-z sample. Galaxies can be selected in a given apparent magnitude range (``ADAPT_BAND`` and ``ADAPT_LIM``), in a given redshift range (``ADAPT_ZBIN``), in a given model range (``ADAPT_MODBIN``). +You can decide to train only a specific sub-set of bands which are indicated using the keyword ``ADAPT_CONTEXT``. + +If the photometric catalogue contains a large number of objects, you can save times by doing the training only on a sub-catalogue with spec-z and then apply the offsets by hand to the full catalogue with ``APPLY_SYSSHIFT``. + +| **Note 1**: for philosophical reason, we decided that these offsets are added to the predicted magnitudes (because we don’t know if the offsets are due to the imaging, bad knowledge of the filters, bad knowledge of the templates). Therefore, if you want to apply them directly to the observed magnitude in your catalogue, you need to subtract these shifts. + +| **Note 2**: when using adaptive mode the redshift, for objects that meet the criteria from ADAPT_LIM and ADAPT_ZBIN, is automatically fixed to the spectroscopic value during the adaptation, and will be let free when adaptation is finished. Do not use the adaption with ``ZFIX YES``. + +In python, you can run only the training part with: + + +.. code-block:: python + + photz = lp.PhotoZ(keymap) + a0, a1 = photz.run_autoadapt(sourcelist) + photz.run_photoz(sourcelist, a0, a1) + + + ++----------------+-----------------+----------------+----------------+ +| **Parameters** | **Type** | **Default |**Description** | +| | | val.** | | ++================+=================+================+================+ +| AUTO_ADAPT | string | NO | ZP adaptive | +| | | | method with | +| | | | spectro | ++----------------+-----------------+----------------+----------------+ +| | (:math:`n=1`) | | | ++----------------+-----------------+----------------+----------------+ +| ADAPT_BAND | integer | —– | Reference band | +| | | | for the | +| | | | selection in | +| | | | magnitude | ++----------------+-----------------+----------------+----------------+ +| | (:math:`n=1`) | | | ++----------------+-----------------+----------------+----------------+ +| ADAPT_LIM | float | 18.,24. | Mag range for | +| | | | spectro in | +| | | | reference band | ++----------------+-----------------+----------------+----------------+ +| | (:math:`n=1`) | | | ++----------------+-----------------+----------------+----------------+ +| ADAPT_CONTEXT | integer | -1 | Context for | +| | | | bands used for | +| | | | training | ++----------------+-----------------+----------------+----------------+ +| | (:math:`n=1`) | | -1 : used | +| | | | context per | +| | | | object | ++----------------+-----------------+----------------+----------------+ +| ADAPT_ZBIN | float | 0.01,6 | Redshift’s | +| | | | interval used | +| | | | for training | ++----------------+-----------------+----------------+----------------+ +| | (:math:`n=2`) | | | ++----------------+-----------------+----------------+----------------+ +| ADAPT_MODBIN | integer | 1,1000 | Model’s | +| | | | interval used | +| | | | for training | ++----------------+-----------------+----------------+----------------+ +| | (:math:`n=2`) | | | ++----------------+-----------------+----------------+----------------+ +| APPLY_SYSSHIFT | float | —– | Apply | +| | | | systematic | +| | | | shifts in each | +| | | | bands | ++----------------+-----------------+----------------+----------------+ +| |(:math:`n\le 50`)| | number of | +| | | | values must | +| | | | fit number of | +| | | | filters | ++----------------+-----------------+----------------+----------------+ + -Analysing the PDF -^^^^^^^^^^^^^^^^^ - -We have two methods to extract the information from the fit. Either the -profile likelihood which was the original method in the fortran version -(noted MIN hereafter). Either the Bayesian method (noted BAY hereafter). - -The PDF are given in the output file using the keyword ``PDZ_OUT`` for -the root name. You need to indicate the type of PDF you want in output -using the keyword ``PDF_TYPE``: - -- **MIN_ZG** the best :math:`\chi^2` at each redshift step is saved to - build the function :math:`F(z)=exp[-\chi^2_{min}(z)/2]` (profile - likelihood); - -- **BAY_ZG** all the probabilities :math:`P=exp(-\chi^2/2)` at each - redshift step are summed (we marginalize over the redshift). - -You can obtain the redshift PDF for the QSO library with similar -keywords **MIN_ZQ** and **MIN_ZQ**. We also propose in output the PDF -for several physical parameters using the BAY approach (sum of -probabilities) with **MASS**, **SFR**, **SSFR**, **AGE**. - -The value indicated as ``_BEST`` in the output file are obtained using -the PDF computed with the ``MIN`` method. This PDF is also used to -refine the photo-z ``_BEST`` solution (Z_INTERP YES) with a parabolic -interpolation (Bevington, 1969), and to search for secondary solutions -(``DZ_WIN``, ``MIN_THRES``). The search for a secondary solution is done -by imposing a minimum distance between the two peaks in the PDF -(``DZ_WIN``) and a minimum value with respect to the first peak -(``MIN_THRES``). All the values in the output file indicated as ``_MED`` -and ``_MODE`` are derived using the Bayesian method (i.e. summing the -probabilities for a given redshift or physical parameter value). In the -case ``_MED`` , we provide the median of the PDF (the old name \_ML -still works). In the case ``_MODE`` , we provide the main mode of the -PDF. - -+----------------+----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default | * | -| | | val.** | *Description** | -+================+================+================+================+ -| ANALYSIS OF | | | | -| THE | | | | -| :math:`PDF(z)` | | | | -+----------------+----------------+----------------+----------------+ -| PDZ_TYPE | string | NONE | PDZ in output | -| | | | [def-BAY]. | -| | | | BAY_ZG sum all | -| | | | probabilities | -| | | | at a given z. | -+----------------+----------------+----------------+----------------+ -| | | | MIN_ZG takes | -| | | | ex | -| | | | p(-chi2_min/2) | -| | | | at a each z. | -+----------------+----------------+----------------+----------------+ -| | | | [BAY_ | -| | | | ZG,BAY_ZQ,MIN_ | -| | | | ZG,MIN_ZQ,MASS | -| | | | ,SFR,SSFR,AGE] | -+----------------+----------------+----------------+----------------+ -| PDZ_OUT | string | NONE | Root of the | -| | | | PDF output | -| | | | files | -| | | | [def-NONE] | -+----------------+----------------+----------------+----------------+ -| | | | add | -| | | | automatically | -| | | | an extension | -| | | | [\_z | -| | | | gbay.prob,...] | -+----------------+----------------+----------------+----------------+ -| Z_INTERP | string | NO | Parabolic | -| | | | interpolation | -| | | | between | -| | | | original step | -| | | | (dz) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | | -+----------------+----------------+----------------+----------------+ -| DZ_WIN | float | 0.25 | “smoothing” | -| | | | window | -| | | | function for | -| | | | 2nd peak | -| | | | search in F(z) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | (value between | -| | | | 0 to zmax) | -+----------------+----------------+----------------+----------------+ -| MIN_THRES | float | 0.1 | threshold for | -| | | | the detection | -| | | | of 2nd peak in | -| | | | normalised | -| | | | F(z) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | (value between | -| | | | 0 to 1) | -+----------------+----------------+----------------+----------------+ -| PROB_INTZ | float | 0. | redshift | -| | | | intervalles to | -| | | | compute | -| | | | probability | -| | | | from F(z) | -+----------------+----------------+----------------+----------------+ -| | ( | | (even number | -| | n\ :math:`\le` | | of values), | -| | 100) | | output vectors | -| | | | from 0 to 100% | -+----------------+----------------+----------------+----------------+ -| | | | 0.-default : | -| | | | not used | -+----------------+----------------+----------------+----------------+ -| Physical parameters ^^^^^^^^^^^^^^^^^^^ -| After computing the photometric redshifts, other SED fittings can be - applied to derive FIR properties, absolute magnitudes or to get - physical parameters. Often, the photometric redshifts are computed - first, then the redshift value is fixed with option ``ZFIX YES`` and - the physical parameters are computed in a second step. The reason for - this two steps procedure is that the template libraries producing the - best photo-z are not the same as the ones needed to compute physical - parameters. However, nothing prevent you for doing the two steps - together. +After computing the photometric redshifts, other SED fittings can be applied to derive FIR properties, absolute magnitudes or to get physical parameters. Often, the photometric redshifts are computed first, then the redshift value is fixed with option ``ZFIX YES`` and the physical parameters are computed in a second step. The reason for this two steps procedure is that the template libraries producing the best photo-z are not the same as the ones needed to compute physical parameters. However, nothing prevent you for doing the two steps together. + Absolute magnitudes ~~~~~~~~~~~~~~~~~~~ -| This set of parameters allows the user to specify different methods to - compute the absolute magnitudes. The absolute magnitudes are computed - automatically in all the filters of FILTER_LIST. Different methods are - available : -| :math:`\bullet` MABS_METHOD=0 : A direct method to compute the - absolute magnitude in a given filter from the apparent magnitude - measured in the same filter (example: - :math:`B_{ABS}=B_{obs}-DM(z)-kcor(B)`). This method is extremely - sensitive to k-correction and to systematic effects in the apparent - magnitude measurement. This method is likely to be less accurate. -| :math:`\bullet` MABS_METHOD=1 : the goal of this method is to minimize - the sensitivity to the templates. For example, the absolute magnitude - in the filter B is computed using the observed apparent magnitude in - the filter I, which is chosen to be - :math:`\lambda(I)=\lambda(B)*(1+z)` at :math:`z\sim 0.7` : - :math:`B_{ABS}= I_{obs} -DM(z=0.7) - (kcor(I) + (B-I)_{ABS})^{template}`. - This method is described in the appendix of Ilbert et al. (2005). The - advantage of this method to limit template dependency. Indeed, if - chosen careful, the term k-correction+color doesn’t depend on the - template at a given redshift. The drawback of this method is that a - systematic effect in the observed band will be directly propagated to - the absolute magnitude (like zero-point calibration, or a band - systematically with a lower S/N). For this reason, a context - associated to each filter (MABS_CONTEXT) reduces the filter set used - for the observed apparent magnitudes (for instance, you don’t want to - keep in the subset a filter having a large offset between observed and - predicted magnitude in AUTO_ADAPT). -| :math:`\bullet` MABS_METHOD=2 : used to measure the absolute - magnitudes in all the rest-frame bands using the observed apparent - magnitudes always taken in the same observed filter (given by - MABS_REF). It’s not optimized but you know exactly which filter is - used to compute the absolute magnitudes. As example if MABS_REF is - defined as B filter and A could be any filter: - :math:`A_{ABS}=B_{obs}-DM(z)- kcor(B) + (A-B)_{ABS}^{temp}` -| :math:`\bullet` MABS_METHOD=3 : The absolute magnitudes are directly - measured from the best-fit template. This method is strongly model - dependent since you can only derive rest-frame colors which are - present in your templates. However, a bias affecting the photometry in - one band could be smooth out. -| :math:`\bullet` MABS_METHOD=4 : imposes the filter depending on the - redshift. The filters are given in MABS_FILT for the corresponding - redshift bins listed in MABS_ZBIN. -| The predicted apparent magnitudes and absolute magnitudes can be - computed in a different set of filters than the standard one. In - ADDITIONAL_MAG, you can add a different name for the filter file, - different than the one indicated in FILTER_FILE. New predicted - apparent and absolute magnitudes (only method 3) will be computed in - these additional filters. - -+----------------+----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default | * | -| | | val.** | *Description** | -+================+================+================+================+ -| Fixing | | | | -| redshift | | | | -+----------------+----------------+----------------+----------------+ -| ZFIX | string | NO | Fixed redshift | -| | | | (as defined in | -| | | | CAT_TYPE LONG) | -| | | | and | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | search for | -| | | | best model | -+----------------+----------------+----------------+----------------+ -| EXTERNALZ_FILE | string | NONE | Use the spec-z | -| | | | from an | -| | | | external file | -| | | | (format Id,zs) | -+----------------+----------------+----------------+----------------+ -| | (n=1) | | | -+----------------+----------------+----------------+----------------+ -| Option to | | | | -| derive the | | | | -| absolute | | | | -| magnitudes | | | | -+----------------+----------------+----------------+----------------+ -| MABS_METHOD | integer | 0 | Method used | -| | | | for absolute | -| | | | magnitudes in | -| | | | each filter | -+----------------+----------------+----------------+----------------+ -| | (n\ :ma | | 0 (default): | -| | th:`\le`\ 100) | | mag(filt | -| | | | er)\ :math:`\r | -| | | | ightarrow M_{A | -| | | | BS}`\ (filter) | -+----------------+----------------+----------------+----------------+ -| | | | 1 : mag(best | -| | | | filt | -| | | | er)\ :math:`\r | -| | | | ightarrow M_{A | -| | | | BS}`\ (filter) | -+----------------+----------------+----------------+----------------+ -| | | | 2 : mag(fixed | -| | | | filter with | -| | | | MABS_R | -| | | | EF)\ :math:`\r | -| | | | ightarrow M_{A | -| | | | BS}`\ (filter) | -+----------------+----------------+----------------+----------------+ -| | | | 3 : best SED | -| | | | :math:`\r | -| | | | ightarrow M_{A | -| | | | BS}`\ (filter) | -+----------------+----------------+----------------+----------------+ -| | | | 4 : | -| | | | MABS(filter) | -| | | | derives | -| | | | according to a | -| | | | fixed filter | -+----------------+----------------+----------------+----------------+ -| | | |    in a fixed | -| | | | redshift | -| | | | interval | -+----------------+----------------+----------------+----------------+ -| | | |    as given by | -| | | | MABS_FILT and | -| | | | MABS_ZBIN | -+----------------+----------------+----------------+----------------+ -| MABS_CONTEXT | integer | -1 | Context for | -| | | | the bands used | -| | | | to derive | -| | | | : | -| | | | math:`M_{ABS}` | -+----------------+----------------+----------------+----------------+ -| | (n\ :ma | | -1 : used same | -| | th:`\le`\ 100) | | context as for | -| | | | photo-z | -+----------------+----------------+----------------+----------------+ -| MABS_REF | integer | 0 | Fixed filter | -| | | | (if | -| | | | MABS_METHOD=2) | -+----------------+----------------+----------------+----------------+ -| | (n\ :ma | | 0 (default) | -| | th:`\le`\ 100) | | means not used | -+----------------+----------------+----------------+----------------+ -| MABS_FILT | integer | —- | List of fixed | -| | | | filters chosen | -| | | | to derive | -| | | | : | -| | | | math:`M_{ABS}` | -| | | | in all bands | -+----------------+----------------+----------------+----------------+ -| | (n\ :ma | | according to | -| | th:`\le`\ 100) | | the redshift | -| | | | bins (if | -| | | | MABS_METHOD=4) | -+----------------+----------------+----------------+----------------+ -| MABS_ZBIN | float | —- | List of | -| | | | Redshift bins | -| | | | associated | -| | | | with MABS_FILT | -+----------------+----------------+----------------+----------------+ -| | (n\ :ma | | Even number of | -| | th:`\le`\ 200) | | values (if | -| | | | MABS_METHOD=4) | -+----------------+----------------+----------------+----------------+ -| ADDITIONAL_MAG | string | —- | name of file | -| | | | with filters | -+----------------+----------------+----------------+----------------+ +This set of parameters allows the user to specify different methods to compute the absolute magnitudes. The absolute magnitudes are computed automatically in all the filters of FILTER_LIST. Different methods are available : + +- ``MABS_METHOD=0`` : A direct method to compute the absolute magnitude in a given filter from the apparent magnitude measured in the same filter (example: :math:`B_{ABS}=B_{obs}-DM(z)-kcor(B)`). This method is extremely sensitive to k-correction and to systematic effects in the apparent magnitude measurement. This method is likely to be less accurate. + +- ``MABS_METHOD=1`` : the goal of this method is to minimize the sensitivity to the templates. For example, the absolute magnitude in the filter B is computed using the observed apparent magnitude in the filter I, which is chosen to be :math:`\lambda(I)=\lambda(B)*(1+z)` at :math:`z\sim 0.7` : :math:`B_{ABS}= I_{obs} -DM(z=0.7) - (kcor(I) + (B-I)_{ABS})^{template}`. + This method is described in the appendix of Ilbert et al. (2005). The advantage of this method to limit template dependency. Indeed, if chosen careful, the term k-correction+color doesn’t depend on the template at a given redshift. The drawback of this method is that a systematic effect in the observed band will be directly propagated to the absolute magnitude (like zero-point calibration, or a band systematically with a lower S/N). For this reason, a context associated to each filter (MABS_CONTEXT) reduces the filter set used for the observed apparent magnitudes (for instance, you don’t want to keep in the subset a filter having a large offset between observed and predicted magnitude in AUTO_ADAPT). + +- ``MABS_METHOD=2`` : used to measure the absolute magnitudes in all the rest-frame bands using the observed apparent magnitudes always taken in the same observed filter (given by MABS_REF). It’s not optimized but you know exactly which filter is used to compute the absolute magnitudes. As example if MABS_REF is defined as B filter and A could be any filter: :math:`A_{ABS}=B_{obs}-DM(z)- kcor(B) + (A-B)_{ABS}^{temp}` + +- ``MABS_METHOD=3`` : The absolute magnitudes are directly measured from the best-fit template. This method is strongly model dependent since you can only derive rest-frame colors which are present in your templates. However, a bias affecting the photometry in one band could be smooth out. + +- ``MABS_METHOD=4`` : imposes the filter depending on the redshift. The filters are given in MABS_FILT for the corresponding redshift bins listed in MABS_ZBIN. + +The predicted apparent magnitudes and absolute magnitudes can be computed in a different set of filters than the standard one. In ADDITIONAL_MAG, you can add a different name for the filter file, different than the one indicated in FILTER_FILE. New predicted apparent and absolute magnitudes (only method 3) will be computed in these additional filters. + + ++----------------+------------------------+--------------------+-----------------------------------------+ +| **Parameters** | **Type** | **Default | **Description** | +| | | val.** | | ++================+========================+====================+=========================================+ +| Fixing | | | | +| redshift | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| ZFIX | string | NO | Fixed redshift | +| | | | (as defined in | +| | | | CAT_TYPE LONG) | +| | | | and | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n=1) | | search for | +| | | | best model | ++----------------+------------------------+--------------------+-----------------------------------------+ +| EXTERNALZ_FILE | string | NONE | Use the spec-z | +| | | | from an | +| | | | external file | +| | | | (format Id,zs) | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n=1) | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| Option to | | | | +| derive the | | | | +| absolute | | | | +| magnitudes | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| MABS_METHOD | integer | 0 | Method used | +| | | | for absolute | +| | | | magnitudes in | +| | | | each filter | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n\ :math:`\le`\ 100) | | 0 (default): | +| | | | mag(filter) | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | | | 1 : | +| | | | mag(best filter) | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | | | 2 : | +| | | | mag(fixed filter with MABS_REF) | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | | | 3 : | +| | | | best SED mag | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | | | 4 : | +| | | | MABS(filter) | +| | | | derives | +| | | | according to a | +| | | | fixed filter | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | | |    in a fixed | +| | | | redshift | +| | | | interval | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | | |    as given by | +| | | | MABS_FILT and | +| | | | MABS_ZBIN | ++----------------+------------------------+--------------------+-----------------------------------------+ +| MABS_CONTEXT | integer | -1 | Context for | +| | | | the bands used | +| | | | to derive | +| | | | :math:`M_{ABS}` | +| | | | | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n\ :math:`\le`\ 100) | | -1 : used same | +| | | | context as for | +| | | | photo-z | ++----------------+------------------------+--------------------+-----------------------------------------+ +| MABS_REF | integer | 0 | Fixed filter | +| | | | (if | +| | | | MABS_METHOD=2) | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n\ :math:`\le`\ 100) | | 0 (default) | +| | | | means not used | ++----------------+------------------------+--------------------+-----------------------------------------+ +| MABS_FILT | integer | —- | List of fixed | +| | | | filters chosen | +| | | | to derive | +| | | | : | +| | | | math:`M_{ABS}` | +| | | | in all bands | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n\ :math:`\le`\ 100) | | according to | +| | | | the redshift | +| | | | bins (if | +| | | | MABS_METHOD=4) | ++----------------+------------------------+--------------------+-----------------------------------------+ +| MABS_ZBIN | float | —- | List of | +| | | | Redshift bins | +| | | | associated | +| | | | with MABS_FILT | ++----------------+------------------------+--------------------+-----------------------------------------+ +| | (n\ :math:`\le`\ 200) | | Even number of | +| | | | values (if | +| | | | MABS_METHOD=4) | ++----------------+------------------------+--------------------+-----------------------------------------+ +| ADDITIONAL_MAG | string | —- | name of file | +| | | | with filters | ++----------------+------------------------+--------------------+-----------------------------------------+ + + + + Physical parameters derived from BC03 templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -| Physical parameters are derived as soon as you use a library including - physical information like the normalisation of the template in stellar - mass. In *LePHARE++* , such measurement is possible only with the BC03 - templates (but we plan to integrate the PEGASE or MARASTON libraries - on the long term). You don’t need to turn on any keyword to have these - measurements. As long as you are using BC03 templates and that the - corresponding keywords (as MASS_MED, or SFR_MED) appear in the output - parameter file, you should get the physical parameters in output. -| As for the photo-z, you will find physical parameters measured at the - minimum :math:`\chi^2` value (indicated with ``_BEST``) and the ones - obtained by taken the median of the PDF marginalized over the relevant - parameter. - - FIR libraries -~~~~~~~~~~~~~~ - -| A set of four FIR libraries are available, and can be used to - characterize the FIR emission of galaxies assuming that the emission - is dominated by radiation of dust component heated by star formation - activity. No implementation of hot dust heated by an AGN component has - been included yet ! -| :math:`\bullet` The user defined the minimal rest-frame wavelength for - the FIR analysis (FIR_LMIN, default is :math:`\lambda=7\mu m`). The - global FIR context (FIR_CONT) specifies the set of filters to be used. - However, the final context will depend on the redshift of the source - and only filters with :math:`\lambda/(1+z) \ge` FIR_LMIN will be - considered. -| :math:`\bullet` The contribution from the stellar component can be - subtracted (FIR_SUBSTELLAR) based on the best galaxy template (used in - ZPHOTLIB). We arbitrarily add in quadrature the subtracted stellar - flux in the flux error in a given band, and if the stellar component - is too large (:math:`F_{obs}-F_{\star}\le 3\sigma_{obs}`) we discard - the passband in the analysis. When activated, the stellar flux is - subtracted only if :math:`\lambda/(1+z)\le 25\mu m`, we neglect - stellar component at longer :math:`\lambda`. -| :math:`\bullet` For each library, we estimate the infrared luminosity - :math:`L_{IR}=\int_{8\mu m}^{1000\mu m} L_{\lambda} dL_{\lambda}`. In - most of the case the SED’s distribution is attached to a luminosity. - However when several FIR bands are available, it can be interesting to - allow for a free rescaling in order to optimize the SED fitting - (FIR_FREESCALE , FIR_SCALE). -| :math:`\bullet` the FIR output parameters are described in - Section `6.1 <#sec:outp>`__. The total IR luminosity :math:`L_{IR}` - and its uncertainties are derived from the maximum likelihood function - : :math:`F(L_{IR})=\sum exp(-\chi^2(L_{IR})/2)`. -| If only one passband is available, the FIR parameters luminosity is - derived from the models with closest predicted flux (no rescaling - allowed). The median and :math:`\sigma` in :math:`L_{TIR}` is - estimated from the best models of each library. - -+----------------+----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default | * | -| | | val.** | *Description** | -+================+================+================+================+ -| | | | Additional | -| | | | Libraries | -| | | | KEYWORDS | -+----------------+----------------+----------------+----------------+ -| FIR_LIB | string | NONE | Far-IR | -| | | | libraries | -| | | | separated by | -| | | | comma | -+----------------+----------------+----------------+----------------+ -| | (: | | | -| | math:`n\le 5`) | | | -+----------------+----------------+----------------+----------------+ -| FIR_LMIN | float | 7.0 | : | -| | | | math:`\lambda` | -| | | | min for FIR | -| | | | analysis (in | -| | | | :math:`\mu m`) | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+----------------+----------------+----------------+ -| FIR_CONT | integer | -1 | Context for | -| | | | bands to be | -| | | | used in Far-IR | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+----------------+----------------+----------------+ -| FIR_FREESCALE | string | NO | Allows for | -| | | | free scaling | -+----------------+----------------+----------------+----------------+ -| | (:math:`n= 1`) | | | -+----------------+----------------+----------------+----------------+ -| FIR_SCALE | integer | -1 | Context for | -| | | | bands to be | -| | | | used for | -| | | | scaling | -+----------------+----------------+----------------+----------------+ -| | (:math:`n= 1`) | | | -+----------------+----------------+----------------+----------------+ -| FIR_SUBSTELLAR | string | NO | Removing | -| | | | stellar | -| | | | component from | -| | | | best optical | -| | | | fit | -+----------------+----------------+----------------+----------------+ -| | (:math:`n =1`) | | | -+----------------+----------------+----------------+----------------+ - -The maximum redshift :math:`z_{max}` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Physical parameters are derived as soon as you use a library including physical information like the normalisation of the template in stellar mass. In *LePHARE++* , such measurement is possible only with the BC03 templates (but we plan to integrate the PEGASE or MARASTON libraries on the long term). You don’t need to turn on any keyword to have these measurements. As long as you are using BC03 templates and that the corresponding keywords (as ``MASS_MED``, or ``SFR_MED``) appear in the output parameter file, you should get the physical parameters in output. + +As for the photo-z, you will find physical parameters measured at the minimum :math:`\chi^2` value (indicated with ``_BEST``) and the ones obtained by taken the median of the PDF marginalized over the relevant parameter. + + +FIR fit +~~~~~~~ + +A set of four FIR libraries are available, and can be used to characterize the FIR emission of galaxies assuming that the emission is dominated by radiation of dust component heated by star formation activity. No implementation of hot dust heated by an AGN component has been included yet ! + +The user defined the minimal rest-frame wavelength for the FIR analysis (FIR_LMIN, default is :math:`\lambda=7\mu m`). The global FIR context (FIR_CONT) specifies the set of filters to be used. However, the final context will depend on the redshift of the source and only filters with :math:`\lambda/(1+z) \ge` FIR_LMIN will be considered. + +The contribution from the stellar component can be subtracted (FIR_SUBSTELLAR) based on the best galaxy template (used in ZPHOTLIB). We arbitrarily add in quadrature the subtracted stellar flux in the flux error in a given band, and if the stellar component is too large (:math:`F_{obs}-F_{\star}\le 3\sigma_{obs}`) we discard the passband in the analysis. When activated, the stellar flux is subtracted only if :math:`\lambda/(1+z)\le 25\mu m`, we neglect stellar component at longer :math:`\lambda`. + +For each library, we estimate the infrared luminosity :math:`L_{IR}=\int_{8\mu m}^{1000\mu m} L_{\lambda} dL_{\lambda}`. In most of the case the SED’s distribution is attached to a luminosity. However when several FIR bands are available, it can be interesting to allow for a free rescaling in order to optimize the SED fitting (``FIR_FREESCALE`` ,``FIR_SCALE``). + +The total IR luminosity :math:`L_{IR}` and its uncertainties are derived from the maximum likelihood function : :math:`F(L_{IR})=\sum exp(-\chi^2(L_{IR})/2)`. + +If only one passband is available, the FIR parameters luminosity is derived from the models with closest predicted flux (no rescaling allowed). The median and :math:`\sigma` in :math:`L_{TIR}` is estimated from the best models of each library. + ++----------------+---------------------+----------------+--------------------------+ +| **Parameters** | **Type** | **Default | **Description** | +| | | val.** | | ++================+=====================+================+==========================+ +| | | | Additional | +| | | | Libraries | +| | | | KEYWORDS | ++----------------+---------------------+----------------+--------------------------+ +| FIR_LIB | string | NONE | Far-IR | +| | | | libraries | +| | | | separated by | +| | | | comma | ++----------------+---------------------+----------------+--------------------------+ +| | (:math:`n\le 5`) | | | +| | | | | ++----------------+---------------------+----------------+--------------------------+ +| FIR_LMIN | float | 7.0 | :math:`\lambda` | +| | | | min for FIR | +| | | | analysis (in | +| | | | :math:`\mu m`) | ++----------------+---------------------+----------------+--------------------------+ +| | (:math:`n=1`) | | | ++----------------+---------------------+----------------+--------------------------+ +| FIR_CONT | integer | -1 | Context for | +| | | | bands to be | +| | | | used in Far-IR | ++----------------+---------------------+----------------+--------------------------+ +| | (:math:`n=1`) | | | ++----------------+---------------------+----------------+--------------------------+ +| FIR_FREESCALE | string | NO | Allows for | +| | | | free scaling | ++----------------+---------------------+----------------+--------------------------+ +| | (:math:`n= 1`) | | | ++----------------+---------------------+----------------+--------------------------+ +| FIR_SCALE | integer | -1 | Context for | +| | | | bands to be | +| | | | used for | +| | | | scaling | ++----------------+---------------------+----------------+--------------------------+ +| | (:math:`n= 1`) | | | ++----------------+---------------------+----------------+--------------------------+ +| FIR_SUBSTELLAR | string | NO | Removing | +| | | | stellar | +| | | | component from | +| | | | best optical | +| | | | fit | ++----------------+---------------------+----------------+--------------------------+ +| | (:math:`n =1`) | | | ++----------------+---------------------+----------------+--------------------------+ + +The :math:`V_{max}` +~~~~~~~~~~~~~~~~~~~ We compute the maximum redshift at which a galaxy can be observable given its SED. This maximum redshift depends on how the sample is @@ -2199,56 +1871,259 @@ define the selection criteria of the sample. The :math:`z_{max}` is computed for each galaxy and is used to compute the :math:`V_{max}` for the luminosity function in a given reference band. -+----------------+----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default | * | -| | | val.** | *Description** | -+================+================+================+================+ -| | | | Additional | -| | | | Libraries | -| | | | KEYWORDS | -+----------------+----------------+----------------+----------------+ -| LIMITS_ZBIN | double | :math:`0,99` | Redshifts used | -| | | | to split in N | -| | | | bins, | -| | | | separated by a | -| | | | coma. | -+----------------+----------------+----------------+----------------+ -| | (:ma | | Need N+1 | -| | th:`n\le 100`) | | values (start | -| | | | with the | -| | | | minimum | -| | | | redshift). | -+----------------+----------------+----------------+----------------+ -| L | integer | 1 | Band in which | -| IMITS_MAPP_REF | | | the absolute | -| | | | magnitude is | -| | | | computed | -+----------------+----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+----------------+----------------+----------------+ -| L | integer | 1 | Give the | -| IMITS_MAPP_SEL | | | selection band | -| | | | in each | -| | | | redshift bin. | -+----------------+----------------+----------------+----------------+ -| | (:mat | | Need 1 or N | -| | h:`n \le 100`) | | values. | -+----------------+----------------+----------------+----------------+ -| L | double | 90 | Magnitude cut | -| IMITS_MAPP_CUT | | | used in each | -| | | | redshift bin. | -+----------------+----------------+----------------+----------------+ -| | (:mat | | Need 1 or N | -| | h:`n \le 100`) | | values. | -+----------------+----------------+----------------+----------------+ - -The output files and parameters -------------------------------- ++----------------+----------------------+----------------+----------------+ +| **Parameters** | **Type** | **Default | ** | +| | | val.** | Description** | ++================+======================+================+================+ +| | | | Additional | +| | | | Libraries | +| | | | KEYWORDS | ++----------------+----------------------+----------------+----------------+ +| LIMITS_ZBIN | double | :math:`0,99` | Redshifts used | +| | | | to split in N | +| | | | bins, | +| | | | separated by a | +| | | | coma. | ++----------------+----------------------+----------------+----------------+ +| | (:math:`n\le 100`) | | Need N+1 | +| | | | values (start | +| | | | with the | +| | | | minimum | +| | | | redshift). | ++----------------+----------------------+----------------+----------------+ +| | integer | 1 | Band in which | +|LIMITS_MAPP_REF | | | the absolute | +| | | | magnitude is | +| | | | computed | ++----------------+----------------------+----------------+----------------+ +| | (:math:`n=1`) | | | ++----------------+----------------------+----------------+----------------+ +| | integer | 1 | Give the | +|LIMITS_MAPP_SEL | | | selection band | +| | | | in each | +| | | | redshift bin. | ++----------------+----------------------+----------------+----------------+ +| | (:math:`n \le 100`) | | Need 1 or N | +| | | | values. | ++----------------+----------------------+----------------+----------------+ +| | double | 90 | Magnitude cut | +|LIMITS_MAPP_CUT | | | used in each | +| | | | redshift bin. | ++----------------+----------------------+----------------+----------------+ +| | (:math:`n \le 100`) | | Need 1 or N | +| | | | values. | ++----------------+----------------------+----------------+----------------+ + + + + + + + +Output +^^^^^^ + + +Main output catalogue +~~~~~~~~~~~~~~~~~~~~~ + + +The name of the output file is given with the ``CAT_OUT`` keyword. The format of the output file is flexible. All the columns that the user want in output are listed in a parameter file. The name of the parameter file should be given in ``PARA_OUT``. An example of parameter file with all the existing columns is given in ``$LEPHAREDIR/example/output.para``. Some keywords can be removed or commented with #. You can also modify the order of the keywords. The symbol () indicates a vector (with a dimension corresponding to the number of filters). + + +When using command lines, ``zphota`` will automatically write the output in ascii file. + +There is more flexibility when using the python interface: + +.. code-block:: python + + photz = lp.PhotoZ(keymap) + photz.run_photoz(sourcelist, [],[] ) + # Write the output + import time + photz.write_outputs(photozlist, int(time.time())) + + +With python, you have also the possibility to get a table in output which allow you to write in any format. +You can also directly save in fits file. + +.. code-block:: python + + # if no para_out, it will save everything in the table + t = photz.build_output_tables(photozlist[:10], para_out=None, filename="outputpython.fits") + + ++----------------+--------------------+----------------+----------------+ +| Output | | | | +| catalog: | | | | ++----------------+--------------------+----------------+----------------+ +| **Parameters** | **Type** | **Default | ** | +| | | val.** | Description** | ++----------------+--------------------+----------------+----------------+ +| CAT_OUT | string | zphot.out | Name of the | +| | | | output file | +| | | | (full path) | ++----------------+--------------------+----------------+----------------+ +| | (n=1) | | by default | +| | | | saved in | +| | | | working | +| | | | directory | ++----------------+--------------------+----------------+----------------+ +| PARA_OUT(\*) | string | —- | Name of the | +| | | | file with | +| | | | selected | +| | | | output | +| | | | parameters | +| | | | (full path) | ++----------------+--------------------+----------------+----------------+ +| | (n=1) | | | +| | | | | ++----------------+--------------------+----------------+----------------+ +| SPEC_OUT | string | NO | Output files | +| | | | with | +| | | | Gal/Star/QSO | +| | | | spectra (one | +| | | | file per | +| | | | object) | ++----------------+--------------------+----------------+----------------+ +| | (n=1) | | (if YES: can | +| | | | take a lot of | +| | | | disk space !) | ++----------------+--------------------+----------------+----------------+ +| | | | If a string | +| | | | different from | +| | | | NO, save files | +| | | | in this | +| | | | directory. | ++----------------+--------------------+----------------+----------------+ +| CHI2_OUT | string | NO | Output files | +| | | | with all | +| | | | :math:`\chi^2` | +| | | | for galaxy | +| | | | library (one | +| | | | file per | +| | | | object) | ++----------------+--------------------+----------------+----------------+ +| | (n=1) | | (if YES: can | +| | | | take a lot of | +| | | | disk space !) | ++----------------+--------------------+----------------+----------------+ + + + +Individual diagnostic files +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If ``SPEC_OUT YES``, an output file is created for each object. If the user put a name different from YES/NO as argument of ``SPEC_OUT``, the value will be used as directory name to store the individual ``.spec`` files. This file contains several information on the considered object (like the observed magnitudes, the spec-z, the photo-z, etc), but also the PDF and the best-fit templates. These files will be named as ``IdXXXX.spec`` with XXXX being the Id of the source. + +When using the command lines, the .spec file can be read using a python code ``spec.py`` located in the directory ``$LEPHAREDIR/tools``. You can create a pdf file (by default ``MULTISPEC.pdf``) containing the all the figures for several sources using: + +.. code-block:: bash + + python spec.py Id00000*.spec -d pdf + + +When using the python interface, you can plot the best-fit SED with: + +.. code-block:: python + + lp.plotspec("IdXXXX.spec") + + +You can also decide to get the full :math:`\chi^2` map (the value of the fit for each redshift, template, E(B-V), etc). Be careful that it could take a lot of disk space. It could be useful if you have one source that you want to study in detail. + + + + + +Analysing the PDF +~~~~~~~~~~~~~~~~~ + +We have two methods to extract the information from the fit. Either the profile likelihood which was the original method in the fortran version (noted ``MIN`` hereafter). Either the Bayesian method (noted ``BAY`` hereafter). + +The PDF are given in the output file using the keyword ``PDZ_OUT`` for the root name. You need to indicate the type of PDF you want in output using the keyword ``PDF_TYPE``: + +- ``MIN_ZG`` the best :math:`\chi^2` at each redshift step is saved to build the function :math:`F(z)=exp[-\chi^2_{min}(z)/2]` (profile likelihood); + +- ``BAY_ZG`` all the probabilities :math:`P=exp(-\chi^2/2)` at each redshift step are summed (we marginalize over the redshift). + +You can obtain the redshift PDF for the QSO library with similar keyword's value ``MIN_ZQ`` and ``MIN_ZQ``. We also propose in output the PDF for several physical parameters using the BAY approach (sum of probabilities) with ``MASS``, ``SFR``, ``SSFR``, ``AGE``. + +The value indicated as ``_BEST`` in the output file are obtained using the PDF computed with the ``MIN`` method. This PDF is also used to refine the photo-z ``_BEST`` solution (``Z_INTERP YES``) with a parabolic interpolation (Bevington, 1969), and to search for secondary solutions (``DZ_WIN``, ``MIN_THRES``). The search for a secondary solution is done by imposing a minimum distance between the two peaks in the PDF (``DZ_WIN``) and a minimum value with respect to the first peak (``MIN_THRES``). All the values in the output file indicated as ``_MED`` and ``_MODE`` are derived using the Bayesian method (i.e. summing the probabilities for a given redshift or physical parameter value). In the case ``_MED`` , we provide the median of the PDF (the old name \_ML still works). In the case ``_MODE`` , we provide the main mode of the PDF. + ++----------------+---------------------+----------------+-------------------------------+ +| **Parameters** | **Type** | **Default | **Description** | +| | | val.** | | ++================+=====================+================+===============================+ +| PDZ_TYPE | string | NONE | PDZ in output | +| | | | [def-BAY]. | +| | | | BAY_ZG sum all | +| | | | probabilities | +| | | | at a given z. | ++----------------+---------------------+----------------+-------------------------------+ +| | | | MIN_ZG takes | +| | | | exp(-chi2_min/2) | +| | | | at a each z. | ++----------------+---------------------+----------------+-------------------------------+ +| | | | [BAY_ZG,BAY_ZQ,MIN_ZG,MIN_ZQ, | +| | | | MASS,SFR,SSFR,AGE] | ++----------------+---------------------+----------------+-------------------------------+ +| PDZ_OUT | string | NONE | Root of the | +| | | | PDF output | +| | | | files | +| | | | [def-NONE] | ++----------------+---------------------+----------------+-------------------------------+ +| | | | add | +| | | | automatically | +| | | | an extension | +| | | | [\_zgbay.prob,...] | ++----------------+---------------------+----------------+-------------------------------+ +| Z_INTERP | string | NO | Parabolic | +| | | | interpolation | +| | | | between | +| | | | original step | +| | | | (dz) | ++----------------+---------------------+----------------+-------------------------------+ +| | (n=1) | | | ++----------------+---------------------+----------------+-------------------------------+ +| DZ_WIN | float | 0.25 | “smoothing” | +| | | | window | +| | | | function for | +| | | | 2nd peak | +| | | | search in F(z) | ++----------------+---------------------+----------------+-------------------------------+ +| | (n=1) | | (value between | +| | | | 0 to zmax) | ++----------------+---------------------+----------------+-------------------------------+ +| MIN_THRES | float | 0.1 | threshold for | +| | | | the detection | +| | | | of 2nd peak in | +| | | | normalised | +| | | | F(z) | ++----------------+---------------------+----------------+-------------------------------+ +| | (n=1) | | (value between | +| | | | 0 to 1) | ++----------------+---------------------+----------------+-------------------------------+ +| PROB_INTZ | float | 0. | redshift | +| | | | intervalles to | +| | | | compute | +| | | | probability | +| | | | from F(z) | ++----------------+---------------------+----------------+-------------------------------+ +| |(n :math:`\le` 100) | | (even number | +| | | | of values), | +| | | | output vectors | +| | | | from 0 to 100% | ++----------------+---------------------+----------------+-------------------------------+ +| | | | 0.-default : | +| | | | not used | ++----------------+---------------------+----------------+-------------------------------+ + .. _`sec:outp`: The output parameters -^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~ +---------------+-------------------------------------------+---+---+ | IDENT | Original IDENT | | | @@ -2535,11 +2410,9 @@ The output parameters | | input file | | | +---------------+-------------------------------------------+---+---+ -Appendix A : Content of the main tar file (lephare_main.tar.gz) +Appendix A : Content of LEPHARE-data ---------------------------------------------------------------- -+-------------------------+-------------------------------------------+ -| $LEPHAREDIR/source/ : | fortran source files (\*.f) | +-------------------------+-------------------------------------------+ | $LEPHAREDIR/vega/ : | SEDs for reference stars: | +-------------------------+-------------------------------------------+ @@ -2548,11 +2421,6 @@ Appendix A : Content of the main tar file (lephare_main.tar.gz) | | BD\ :math:`+17^{\circ}4708` from Oke & | | | Gunn, (1983) | +-------------------------+-------------------------------------------+ -| $LEPHAREDIR/doc/ : | documentation files | -+-------------------------+-------------------------------------------+ -| $LEPHAREDIR/config/ : | configuration files for photometric | -| | redshifts | -+-------------------------+-------------------------------------------+ | $LEPHAREDIR/ext/ : | extinction curves for internal galaxy | | | extinction (see README.extinc) | +-------------------------+-------------------------------------------+ @@ -2625,14 +2493,10 @@ Appendix A : Content of the main tar file (lephare_main.tar.gz) | $LEPHAREDIR/tools/ : | macros for plotting filterset | | | (filterplot) and extracted SED (spec.sm) | +-------------------------+-------------------------------------------+ -| $LEPHAREDIR/test/ : | Quick test with COSMOS2015 | -+-------------------------+-------------------------------------------+ | $LEPHAREDIR/examples/ : | extensive list of tests/commands with | | | COSMOS. | +-------------------------+-------------------------------------------+ -| $LEPHAREDIR/simul/ : | configuration files for the simulations | -| | and predefined input files | -+-------------------------+-------------------------------------------+ + Appendix B : keyword differences between the Fortran and the C++ version ------------------------------------------------------------------------- From f507ebed0cd105b9953e8ad612fd5641b0b19324 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Mon, 11 Nov 2024 11:59:50 +0100 Subject: [PATCH 14/44] Updates to intermediate notebook following Oliver comments in issue Some of the change requests were ignored as they are required for the notebook to run. I have so far left in the onesource examples at the end as they were previously requested. We can discuss if to remove them this week. The issue with curl to download the para file was that it needed the url updating to the raw file not the html. The example para file does not run through the downloader because it needs the sed list links to be relative. We can either update the para file or the downloader to append these links --- .../Intermediate_usage_notebook.ipynb | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/notebooks/Intermediate_usage_notebook.ipynb b/docs/notebooks/Intermediate_usage_notebook.ipynb index 3e48f63..f38cd4c 100644 --- a/docs/notebooks/Intermediate_usage_notebook.ipynb +++ b/docs/notebooks/Intermediate_usage_notebook.ipynb @@ -52,19 +52,23 @@ "config = lp.default_cosmos_config.copy()\n", "\n", "# You could also load this from a local text file:\n", - "# !curl -s -o COSMOS.para https://github.com/lephare-photoz/lephare-data/blob/main/examples/COSMOS.para\n", + "# !curl -s -o https://raw.githubusercontent.com/lephare-photoz/lephare-data/refs/heads/main/examples/COSMOS.para\n", "# config = lp.read_config(\"./COSMOS.para\")\n", "\n", "config.update(\n", " {\n", + " # We turn on Auto adapt which uses spectroscopic redshifts to calcualte zero point\n", + " # offsets which is crucial to getting good results.\n", + " \"AUTO_ADAPT\": \"YES\",\n", + " # For a quick demonstration we use a very sparse redshift grid. DO NOT USE FOR SCIENCE!\n", + " # Comment out the following line to improve results.\n", + " \"Z_STEP\": \"0.5,0.,7.\",\n", " # The following measurements will correspond to all filters. We could have an array of values for each.\n", + " # If we have an array care must be taken to ensure it has a consistent length.\n", " \"ERR_SCALE\": \"0.02\",\n", " \"ERR_FACTOR\": \"1.5\",\n", " \"FILTER_CALIB\": \"0\",\n", " \"FILTER_FILE\": \"filter_test\",\n", - " # For a quick demonstration we use a very sparse redshift grid. DO NOT USE FOR SCIENCE!\n", - " # Comment out the following line to improve results.\n", - " \"Z_STEP\": \"0.5,0.,7.\",\n", " }\n", ")" ] @@ -406,6 +410,16 @@ "output[:5]" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e45e406-79c6-4024-989e-25e41efb0c28", + "metadata": {}, + "outputs": [], + "source": [ + "output[33:37]" + ] + }, { "cell_type": "code", "execution_count": null, From 93c0fc30de6e12625e7d34c1b5e8887fc99096e7 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Mon, 11 Nov 2024 12:12:40 +0100 Subject: [PATCH 15/44] Implemented Olivier changes to example full run notebook He requested a couple of changes which will increase run time. We need to check that all notebooks still complete in time for the documentation. I also added a simple z-z plot --- docs/notebooks/Example_full_run.ipynb | 36 +++++++++++++++++---------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/docs/notebooks/Example_full_run.ipynb b/docs/notebooks/Example_full_run.ipynb index 6578455..f298458 100644 --- a/docs/notebooks/Example_full_run.ipynb +++ b/docs/notebooks/Example_full_run.ipynb @@ -7,9 +7,7 @@ "source": [ "# Example full run\n", "\n", - "An example of a complete run of the lephare with all stages required to estimate redshift.\n", - "\n", - "Define the two environment variables necessary for Le Phare (directory of LEPHARE package, directory in which to store the libraries) and define the directory in which you run the code. " + "An example of a complete run of the lephare with all stages required to estimate redshift." ] }, { @@ -78,7 +76,10 @@ "keymap[\"AUTO_ADAPT\"] = lp.keyword(\"AUTO_ADAPT\", \"YES\")\n", "# this line reduced the zgrid density from the default to make the notebook run faster.\n", "# Comment this out for better science results\n", - "keymap[\"Z_STEP\"] = lp.keyword(\"Z_STEP\", \"0.1,0.,7.\")" + "keymap[\"Z_STEP\"] = lp.keyword(\"Z_STEP\", \"0.04,0.,7.\")\n", + "# we can write the config to a file to keep a record\n", + "config_file = \"./config_file.para\"\n", + "lp.write_para_config(keymap, config_file)" ] }, { @@ -125,9 +126,6 @@ "metadata": {}, "outputs": [], "source": [ - "# we can write the config to a file to keep a record\n", - "config_file = \"./config_file.para\"\n", - "lp.write_para_config(keymap, config_file)\n", "filterLib = lp.Filter(config_file=config_file)\n", "# uncomment to test passing the keymap\n", "# filterLib = Filter(config_keymap=keymap)\n", @@ -471,7 +469,8 @@ "outputs": [], "source": [ "photozlist = []\n", - "for i in range(10):\n", + "n_obj = 1000\n", + "for i in range(n_obj):\n", " oneObj = lp.onesource(i, photz.gridz)\n", " oneObj.readsource(str(id[i]), fluxes[i, :], efluxes[i, :], int(context[i]), zspec[i], \" \")\n", " photz.prep_data(oneObj)\n", @@ -494,7 +493,7 @@ "metadata": {}, "outputs": [], "source": [ - "photz.run_photoz(photozlist[:10], a0, a1)\n", + "photz.run_photoz(photozlist[:n_obj], a0, a1)\n", "# If adaption of the zero-points is turned off\n", "# photz.run_photoz(photozlist[:100], [],[] )" ] @@ -514,7 +513,7 @@ "metadata": {}, "outputs": [], "source": [ - "t = photz.build_output_tables(photozlist[:10], para_out=None, filename=\"outputpython.fits\")" + "t = photz.build_output_tables(photozlist[:n_obj], para_out=None, filename=\"outputpython.fits\")" ] }, { @@ -527,14 +526,24 @@ "t[:5]" ] }, + { + "cell_type": "markdown", + "id": "1f895cff-fd1d-4033-ac94-5d8e616454a3", + "metadata": {}, + "source": [ + "Check the results broadly follow a 1-1 relation" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "d7e7c675", + "id": "e357b04d-c2ce-4065-91bf-22946e7f04db", "metadata": {}, "outputs": [], "source": [ - "t[:5]" + "plt.scatter(t[\"ZSPEC\"], t[\"Z_BEST\"], s=0.1)\n", + "plt.xlabel(\"z spec\")\n", + "plt.ylabel(\"z phot\")" ] }, { @@ -576,7 +585,8 @@ "from os.path import isfile, join\n", "\n", "listname = [f for f in listdir(\"save_spec\") if isfile(join(\"save_spec\", f))]\n", - "for namefile in listname:\n", + "# Lets just look at the top 10\n", + "for namefile in listname[:10]:\n", " lp.plotspec(\"save_spec/\" + str(namefile))" ] } From 9c2275eeeb91564fa6764cad2e00a4644a471d88 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Mon, 11 Nov 2024 13:04:27 +0100 Subject: [PATCH 16/44] Updates to legacy install page following Olivier notes There are various small changes and cleaning things up. We have to set up the environment variables but given the new structure a user may also need a further environment variable to reference the executables but I will not mention that for now for simplicity. --- docs/legacy_install.rst | 159 ++++++++++++---------------------------- 1 file changed, 46 insertions(+), 113 deletions(-) diff --git a/docs/legacy_install.rst b/docs/legacy_install.rst index 3ac6181..17320a7 100644 --- a/docs/legacy_install.rst +++ b/docs/legacy_install.rst @@ -1,8 +1,26 @@ Advanced Usage via Command Line Interface ======================================================================================== -The four principle command line tools are immeidately available after installing -with pip. The basic calls to each are summarised below. +The four principle command line tools are immediately available after installing +with pip. They can also be called by building the c++ executables directly but +that is generally not advised. The four basic operations are summarised below. + +Legacy code overview and main features +-------------------------------------- + +LePHARE consists of a set of four principle executables: + +- ``filter``: read a configurable set of filters and store a representation of +them for later use. + +- ``sedtolib``: read a configurable set of SED, and store the results into a binary library in a common format for later use. + +- ``mag_gal``: use the preceding outputs to compute expected magnitudes and compute extinction corrections, applying different rules for galaxies, stars, or QSO objects. + +- ``zphota``: performs chisquare minimization in order to derive photometric redshifts and other physical parameters. + +These executables are configurable via a set of keywords, that can be passed at the command line or through a configuration file. +The list of these keywords can be found :doc:`here `. `filter` can often be called with just the config file @@ -47,28 +65,33 @@ Finally `zphota`` can be run similarly. Most of the optional flags that are sent to the command line arguments correspond to keywords in the config file and effectively override them. -A more detailed example shell script which will run the COSMOS example can be found `here `_. +A more detailed example shell script which will run the COSMOS example can be found +`here `_. -This `example `_ also shows some more advanced features which can be accessed via the command line. +This `example `_ +also shows some more advanced features which can be accessed via the command line. -Legacy Installation -------------------- +Build only the C++ executables (historical method) +-------------------------------------------------- In addition to the Command Line Interface that is available immediately following pip installation some users may want to use the original binaries to run lephare. -To do so requires making the c++ binaries using the MakeFile. It is possible to +this might be useful if you don't want to depend on the Python interface or +as a means to solve installation issues with an unsuported operating system. +To do so requires making the C++ binaries using the MakeFile. It is possible to install these binaries using either cmake or make. This is not the recommended method but it remains a possibility. -The C++ part of LePhare has no external dependency beyond OpenMP and standard compiling and linking libraries. The python part depends on cmake and several packages from the python scientific ecosystem (see below). -In order to run make you will need an appropriate compiler for instance gcc on a Mac which can be installed with ``brew install gcc``. - -Build only the C++ executables with make (historical method) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The C++ part of LePhare has no external dependency beyond OpenMP and standard +compiling and linking libraries. The python part depends on cmake and several +packages from the python scientific ecosystem (see below). +In order to run make you will need an appropriate compiler for instance gcc on +a Mac which can be installed with ``brew install gcc``. -Follow the steps below: +Follow the steps below to build with make which may require updating the +MakeFile for your system: -.. code-block:: console +.. code-block:: bash git clone https://gitlab.lam.fr/Galaxies/LEPHARE cd LEPHARE @@ -77,105 +100,15 @@ Follow the steps below: #Add the current directory to the path export PATH=$PATH:$(pwd) -Currently, with this method, the code just builds the executables in the *source* directory. - -Build the C++ executables and the python module with cmake and setuptools -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Currently, the following sequence allows you to build and install the C++ executables, together with the python package. -The pybind11 header files are provided in the *extern* directory, but after a `git clone` one needs to download these as well, with the command `git submodule update --init --recursive`. - -.. code-block:: console - - conda create env -n python=3.10 - conda activate - conda install -c conda-forge cxx-compiler - pip install -e .'[dev]' - pre-commit install - conda install pandoc - -The C++ executables are installed in the bin sub directory. -The python module is installed in the conventional `site-packages` area of the system. -Note that you may need to create the LEPHAREWORK/filt, LEPHAREWORK/lib_bin and LEPHAREWORK/lib_mag by hand. - - -A user manual is provided through **LePhare_documentation.pdf** in the *doc* directory -If Doxygen is installed (see https://www.doxygen.nl/manual/install.html), code documentation is also available: execute ```python setup.py doc``` and an html sub-directory will be available for browsing in the *doc* directory. - -Legacy code overview and main features --------------------------------------- - -LePhare consists of a set of executables: - -- ``filter``: read a configurable set of filters and store a representation of them for later use. - -- ``sedtolib``: read a configurable set of SED, compute extinction corrections, and store the results into a binary library for later use. - -- ``mag_gal``: use the preceding outputs to compute expected magnitudes, applying different rules for galaxies, stars, or QSO objects. - -- ``zphota``: performs chisquare minimization in order to derive photometric redshifts and other physical parameters. - -These executables are configurable via a set of parameters, that can be passed at the command line or through a configuration file. -The list of these parameters can be found here . - -Quick Start ------------ - -In order to run these commands you must first get the example data sets `available here `_. Next, a parameter file named ``COSMOS.para`` is shipped with LePhare, together with the input files needed for a quick analysis of the COSMOS field, under the examples directory. +Currently, with this method, the code just builds the executables in the *src/lib* directory. +To run code you would also need to download the additional data repository and +set the environment variables to the correct location -.. code-block:: console +.. code-block:: bash git clone https://github.com/lephare-photoz/LEPHARE-data.git - cd LEPHARE-data/examples - #We must set the environment variables to find the required files - export LEPHAREDIR= - export LEPHAREWORK='' - -First, set OMP multithreaded to the value whished for, e.g. : - -.. code-block:: console - - export OMP_NUM_THREADS='10' - -The typical sequence of execution is then: -- read the filters and compile them into one file stored in ``$LEPHAREWORK/filt`` - -.. code-block:: console - - filter -c COSMOS.para - -- read the galaxy templates (as used in Ilbert et al. 2013) and store them in ``$LEPHAREWORK/lib_bin`` - -.. code-block:: console - - sedtolib -c COSMOS.para -t G -GAL_SED COSMOS_MOD.list -GAL_LIB LIB_VISTA - -- use the galaxy templates and filters to derive a library of predicted magnitudes and store it in ``$WORK/lib_mag`` (the parameters correspond to enabling emission lines correlated to UV light + free factor in scaling these lines, more information in the original ``LePhare_documentation.pdf``) - -.. code-block:: console - - mag_gal -c COSMOS.para -t G -GAL_LIB_IN LIB_VISTA -GAL_LIB_OUT VISTA_COSMOS_FREE -MOD_EXTINC 18,26,26,33,26,33,26,33 -EXTINC_LAW SMC_prevot.dat,SB_calzetti.dat,SB_calzetti_bump1.dat,SB_calzetti_bump2.dat -EM_LINES EMP_UV -EM_DISPERSION 0.5,0.75,1.,1.5,2. -Z_STEP 0.04,0,6 - -- proceed in the same way for stellar and QSO templates - -.. code-block:: console - - sedtolib -c COSMOS.para -t S -STAR_SED STAR_MOD_ALL.list - mag_gal -c COSMOS.para -t S -LIB_ASCII YES -STAR_LIB_OUT ALLSTAR_COSMOS - # AGN models from Salvato 2009 - sedtolib -c COSMOS.para -t Q -QSO_SED $LEPHAREDIR/sed/QSO/SALVATO09/AGN_MOD.list - mag_gal -c COSMOS.para -t Q -MOD_EXTINC 0,1000 -EB_V 0.,0.1,0.2,0.3 -EXTINC_LAW SB_calzetti.dat -LIB_ASCII NO -Z_STEP 0.04,0,6 - -- finally proceed to photometric redshift estimation - -.. code-block:: console - - zphota -c COSMOS.para -CAT_IN COSMOS.in -CAT_OUT zphot_short.out -ZPHOTLIB VISTA_COSMOS_FREE,ALLSTAR_COSMOS,QSO_COSMOS -ADD_EMLINES 0,100 -AUTO_ADAPT YES -Z_STEP 0.04,0,6 - -- a python script is available to perform a quick diagnostics - -.. code-block:: console - - python figuresLPZ.py zphot_short.out - -.. toctree:: \ No newline at end of file + # LEPHAREDIR must point to the additional data repository + export LEPHAREDIR=$(pwd)/LEPHARE-data + # The LEPHAREWORK directory can be anywhere useful + mkdir lepharework + export LEPHAREWORK=$(pwd)/LEPHARE-work \ No newline at end of file From 612c9a6f9d3175faf0178ecb6b3e39d28837ba67 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Mon, 11 Nov 2024 13:13:15 +0100 Subject: [PATCH 17/44] Minor changes to getting started Mainly adding git clone code for clarity following Olivier sugestion --- docs/getting_started.rst | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 93dc767..2b3c5c2 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -62,7 +62,7 @@ You can also see the executed notebook with all outputs :doc:`here Date: Mon, 11 Nov 2024 15:47:24 +0100 Subject: [PATCH 18/44] Olivier edits to keywords I also added a custom css to make the tables wrap so be easier to read Many changes to keyword descriptions including removing the defunct keywords --- docs/_static/custom.css | 4 + docs/conf.py | 3 + docs/keywords.rst | 263 +++++++++++++++------------------------- 3 files changed, 105 insertions(+), 165 deletions(-) create mode 100644 docs/_static/custom.css diff --git a/docs/_static/custom.css b/docs/_static/custom.css new file mode 100644 index 0000000..8531220 --- /dev/null +++ b/docs/_static/custom.css @@ -0,0 +1,4 @@ +.wy-table-responsive table td, +.wy-table-responsive table th { + white-space: normal; +} diff --git a/docs/conf.py b/docs/conf.py index c91b1b7..10af2cf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -62,6 +62,9 @@ html_show_sourcelink = False # Remove namespaces from class/method signatures add_module_names = False +# Use the custom css +html_static_path = ["_static"] +html_css_files = ["custom.css"] autoapi_type = "python" autoapi_dirs = ["../src"] diff --git a/docs/keywords.rst b/docs/keywords.rst index ae2ade9..4a1c258 100644 --- a/docs/keywords.rst +++ b/docs/keywords.rst @@ -44,34 +44,34 @@ sedtolib - Name of file containing the list of Galaxy SED files to include. Absolute or relative to ``$LEPHAREWORK`` * - GAL_FSCALE - float - - Arbitrary Flux Scale + - Arbitrary flux scale to be applied to each SED flux in the list * - GAL_LIB - string - basename of the Galaxy SED library output bin and doc files under ``$LEPHAREWORK/lib_bin`` * - SEL_AGE - - - filename of the file containing the ages to consider| + - filename of the file containing the ages to consider (in Gyr) * - AGE_RANGE - - min,max - - age range to be considered + - min,max + - age range to be considered (in Gyr) * - QSO_SED - e.g. ``sed/QSO/SALVATO09/AGN_MOD.list`` - - name of file containing the list of AGN/QSO SED files to include| + - name of file containing the list of AGN/QSO SED files to include * - QSO_FSCALE - float - - Arbitrary Flux Scale + - Arbitrary flux scale to be applied to each SED flux in the list * - QSO_LIB - string - basename of the AGN/QSO SED library output bin and doc files under ``$LEPHAREWORK/lib_bin`` * - STAR_SED - e.g. ``sed/STAR/STAR_MOD_ALL.list`` - - name of file containing the list of Star SED files to include| + - name of file containing the list of Star SED files to include * - STAR_LIB - string - basename of the Star SED library output bin and doc files under ``$LEPHAREWORK/lib_bin`` * - STAR_FSCALE - float - - Arbitrary Flux Scale + - Arbitrary flux scale to be applied to each SED flux in the list mag_gal ------- @@ -84,56 +84,59 @@ mag_gal - values - Comment * - COSMOLOGY - - H0,OmegaM,OmegaL - - LCDM relevant cosmological keywords + - H0,OmegaM,OmegaL + - Cosmological parameters * - FILTER_FILE - - - same as above + - same as above * - MAGTYPE - - AB[def] or VEGA - - Magnitude type (AB or VEGA) of the library + - AB[def] or VEGA + - Magnitude type (AB or VEGA) of the library * - EXTINC_LAW - - calzetti.dat[def] - - Extinction laws stored in ext/. Could include several files separated by comma. + - calzetti.dat[def] + - Extinction laws stored in ``$LEPHAREWORK/ext/``. Could include several files separated by comma. * - EB_V - - 0[def] - - Reddening color excess E(B-V) values to be applied. Values separated by comma. + - 0[def] + - Reddening color excess E(B-V) values to be applied. Values separated by comma. * - MOD_EXTINC - - 0,0[def] - - Range of models for which extinction will be applied. Two values per attenutation curves, separated by comma. + - 0,0[def] + - Range of models for which extinction will be applied. Two values per attenutation curves, separated by comma. * - ZGRID_TYPE - - 0[def] or 1 - - constant step in redshift if 0; evolving step in redshift as (1+z) if 1. + - 0[def] or 1 + - constant step in redshift if 0; evolving step in redshift as (1+z) if 1. * - Z_STEP - - 0.04,0,6 [def] - - dz,zmin,zmax: redshift step (dz), the minimum (zmin) and the maximum redshift (zmax) + - 0.04,0,6 [def] + - dz,zmin,zmax: redshift step (dz), the minimum (zmin) and the maximum redshift (zmax) * - GAL_LIB_IN - - - - Input galaxy library (in $ZPHOTWORK/lib_bin/). Must match output GAL_LIB from sedtolib. + - string + - Name of the GALAXY library (with no extension). Files must exist in $LEPHAREWORK/lib_bin/ and have been created by a sedtolib run. * - QSO_LIB_IN - - - - Input AGN library (in $ZPHOTWORK/lib_bin/). Must match output QSO_LIB from sedtolib. + - string + - Name of the QSO library (with no extension). Files must exist in $LEPHAREWORK/lib_bin/ and have been created by a sedtolib run. * - STAR_LIB_IN - - - - Input stellar library (in $ZPHOTWORK/lib_bin/). Must match output STAR_LIB from sedtolib. + - string + - Name of the STAR binary library (with no extension). Files must exist in $LEPHAREWORK/lib_bin/ and have been created by a sedtolib run * - GAL_LIB_OUT - - - - Output galaxy library (in $ZPHOTWORK/lib_mag/) + - string + - Name of the output library (with no extension) storing predicted fluxes/magnitude/k-corrections. Files .bin and .doc are saved in $LEPHAREWORK/lib_mag/ * - QSO_LIB_OUT - - - - Output AGN library (in $ZPHOTWORK/lib_mag/) + - string + - Name of the output library (with no extension) storing predicted fluxes/magnitude/k-corrections. Files .bin and .doc are saved in $LEPHAREWORK/lib_mag/ * - STAR_LIB_OUT - - - - Output stellar library (in $ZPHOTWORK/lib_mag/) + - string + - Name of the output library (with no extension) storing predicted fluxes/magnitude/k-corrections. Files .bin and .doc are saved in $LEPHAREWORK/lib_mag/ * - LIB_ASCII - - NO[def] or YES - - Writing the magnitude library in ASCII file + - NO[def] or YES + - Writing the magnitude library in ASCII file to $LEPHAREWORK/lib_mag/ * - EM_LINES - - NO[def] or EMP_UV or EMP_SFR or PHYS - - choice between emission line prescription + - NO[def] or EMP_UV or EMP_SFR or PHYS + - choice between emission line prescription * - EM_DISPERSION - - 1[def] - - Dispersion allowed in the emission line flux factor. Example: 0.5,0.75,1,1.5,2 + - 1[def] + - Dispersion allowed in the emission line flux factor. Example: 0.5,0.75,1,1.5,2 + * - ADD_DUSTEM + - NO[def] or YES + - Add the dust emission in templates when missing (using energy balance). zphota ------ @@ -146,23 +149,23 @@ zphota - values - Comment * - CAT_IN - - - - Absolute path to photometric catalog input. This must have the correct column orders and be aspace seperated ascii file with -99 missing values. It is not required when running throught the Python interface. + - string + - Absolute path to photometric catalog input. This must have the correct column orders and be a space seperated ascii file with -99 missing values. It is not required when running throught the Python interface. * - INP_TYPE - - F or M - - Input values: Flux (F) or Magnitude (M) + - F or M + - Input values: Flux (F) or Magnitude (M) * - CAT_TYPE - - LONG[def] or SHORT - - Input catalog format (long requires at minimum spec-z and context) + - LONG[def] or SHORT + - Input catalog format (long requires at minimum spec-z and context) * - CAT_MAG - - AB[def] or VEGA - - Input magnitude type + - AB[def] or VEGA + - Input magnitude type * - CAT_FMT - - MEME[def] or MMEE - - Input format for photometry (MEME alternate mag-flux with error) + - MEME[def] or MMEE + - Input format for photometry (MEME alternate mag-flux with error) * - CAT_LINES - - 0,10000000000[def] - - Min and max rows read in input catalog (to run only a subsample) + - 0,10000000000[def] + - Min and max rows read in input catalog (to run only a subsample) * - PARA_OUT - e.g. examples/output.para - Absolute path of the file with selected output parameters. @@ -170,65 +173,71 @@ zphota - path to output table. - Name of the output file * - ZPHOTLIB - - e.g. CE_COSMOS,STAR_COSMOS,QSO_COSMOS + - e.g. CE_COSMOS, STAR_COSMOS, QSO_COSMOS - Library names (with no extension). Could have several separated by comma. Should be in LEPHAREWORK/lib_mag. Names must correspond to outputs from mag_gal. * - ADD_EMLINES - e.g. ``0,10000`` - Range of galaxy models in which considering emission lines contribution. + * - EBV_RANGE + - 0,9[def] + - E(B-V) min and max allowed in the GAL library * - ERR_SCALE - - 0[def] - - Systematic errors (in mag) add in quadrature to the observations. One per filter, separated by comma. + - 0[def] + - Systematic errors (in mag) add in quadrature to the observations. One per filter, separated by comma. * - ERR_FACTOR - - 1.0[def] - - Scaling factor to the errors (in flux) + - 1.0[def] + - Scaling factor to the errors (in flux). Only a single value applied to all filters. * - BD_SCALE - - 0[def] - - Band used for scaling the models to the observations (sum of $2^i$, as context). 0 means all. + - 0[def] + - Band used for scaling the models to the observations (sum of $2^i$ starting at i=0, as context). 0 means all. * - GLB_CONTEXT - - 0[def] - - Forces the context of all objects (sum of 2^i, as context). 0 means all. + - 0[def] + - Forces the context of all objects (sum of 2^i starting at i=0, as context). 0 means all. * - FORB_CONTEXT - - 0[def] - - context for removing some bands from the fit (sum of 2^i, as context). 0 means inactive. + - 0[def] + - Context for removing some bands from the fit (sum of 2^i starting at i=0, as context). 0 means inactive. * - MASS_SCALE - 0, 0[def] - - Prior: allowed range in mass + - Prior: allowed range in log10(mass) * - MAG_ABS - - 0, 0[def] - - Prior: Absolute magnitude range allowed for the model) + - 0, 0[def] + - Prior: Absolute magnitude range allowed for the GAL library [0,0-def] + * - MAG_ABS_QSO + - 0, 0[def] + - Prior: Absolute magnitude range allowed for the QSO library [0,0-def] * - MAG_REF - int - Reference filter for the prior in abs. mag. (start at 1) * - NZ_PRIOR - - -1[def] - - N(z) prior as function of i-band. Give the rank of i-band filter in input (start at 1). Negative value means no prior. + - -1[def] + - N(z) prior as function of i-band. The i-band number should be given in input (starting filter numbering at 1). The second number indicates which band to use if first undefined. Negative value means no prior. * - ZFIX - - NO[def] or YES - - Fixed redshift with the spec-z value + - NO[def] or YES + - Fixed redshift with the spec-z value (as defined in CAT_TYPE LONG) * - EXTERNALZ_FILE - - NONE[def] - - Use the spec-z from an extrenal file (format Id,zs) + - string + - Name of an external file. Use the spec-z from an external file (format Id,zs) to fix the redshift. * - Z_INTERP - NO[def] - Parabolic interpolation between original step (dz) * - DZ_WIN - 0.25[def] - - Smoothing window function for 2nd peak search in L(z) + - Window function for 2nd peak search in L(z) (minimal distance in dz from the 1st peak) * - MIN_THRES - 0.1[def] - Threshold for the detection of 2nd peak in normalised L(z) (between 0 and 1) * - SPEC_OUT - NO[def] - - Output files with Gal/Star/QSO spectra (one file per object) + - Output files with Gal/Star/QSO spectra (one file per object) (if YES: can take a lot of disk space !) * - CHI2_OUT - NO[def] - - Output files with the chi2 for the full library (one file per object) + - Output files with the chi2 for the full library (one file per object) (if YES: can take a lot of disk space !) * - PDZ_OUT - NONE[.pdz] - Output file name in which PDZ will be stored (full path). The code will add automatically the extension[.pdz] * - PDZ_TYPE - BAY[def] or MIN - - Define how the PDF is given in output of OUT\_PDZ. + - value: BAY\_ZG[def] or/and BAY\_ZQ,MIN\_ZG,MIN\_ZQ,MASS,SFR,SSFR,AGE PDZ in output [def-BAY]. BAY\_ZG sum all probabilities at a given z. MIN_ZG takes ex p(-chi2_min/2) at a each z. * - FIR_LIB - NONE[def] - Far-IR libraries separated by comma @@ -248,17 +257,17 @@ zphota - NO[def] - Removing stellar component from best optical fit * - MABS_METHOD - - 0[def] or 1 or 2 or 3 or 4 - - Method used for absolute magnitudes in each filter + - 0[def], 1,2,3, or 4 + - Method used for absolute magnitudes in each filter. 0 (default): mag(filter) -> Mabs(filter). 1 : mag(best filter) -> Mabs(filter). 2 : mag(fixed filter with MABS_REF)-> Mabs(filter). 3 : best SED -> Mabs(filter). 4 : MABS(filter) derives according to a fixed filter in a fixed redshift interval as given by MABS_FILT and MABS_ZBIN * - Z_METHOD - BEST[def] or ML - - Compute the absolute magnitude at a given redshift solution maginalised over all models (ML) or for the best model (BEST) + - Compute the absolute magnitude at a given redshift solution maginalised over all models (ML) or for the best model which minimizes the chi2 (BEST) * - MABS_CONTEXT - 0[def] - Context for the bands used to derive Mabs. * - MABS_REF - 1[def] - - Filter used to derive the Mabs if method=2 + - Filter in observed frame used to derive all the Mabs if method=2 * - MABS_FILT - 1[def] - For method 4: list of fixed filters chosen to derive Mabs in all bands according to the redshift bins @@ -266,23 +275,17 @@ zphota - 0,6[def] - For method 4: list of Redshift bins associated with MABS_FILT. Even number of values. * - ADDITIONAL_MAG - - - - Name of file with filters, to derive Mabs in additional filters - * - RF_COLORS - - -1,-1,-1,-1[def] - - When computing uncertainties on abs. mag., do it in two colors (4 filters) - * - M_REF - - - - Filter in which to compute the absolute magnitudes and associated errorbars + - string + - Name of file compiling several filters (in $LEPHAREWORK/filt, created by filter)to derive Mabs in additional filters * - APPLY_SYSSHIFT - 0[def] - - Apply systematic shifts in each bands. Number of values must correspond to the number of filters. + - Apply systematic shifts in each bands (convention: values in magnitude to be substracted to the observed magnitudes). Number of values must correspond to the number of filters. * - AUTO_ADAPT - NO[def] - Optimize zero-points with spec-z * - ADAPT_BAND - 1[def] - - Reference band for the selection in magnitude + - Reference band for the selection in magnitude (start at 1) * - ADAPT_LIM - 15,35[def] - Mag range for spectro in reference band @@ -302,78 +305,8 @@ zphota - 90[def] - Compute z-max. Magnitude cut used in each redshift bin. Need 1 or N values. * - RM_DISCREPENT_BD - - 200,3[def] - - define the threshold in chi2 to consider and the minimum improvement in chi2 expected - -Not implemented in latest version ---------------------------------- - -These are values from the Fortran version which are not currently supported. - -.. list-table:: Keywords - :widths: 25 25 50 - :header-rows: 1 - - * - Keyword name - - values - - Comment + - 200[def] + - Threshold in chi2 to stop removing bands. Remove 2 bands max, stop when below this chi2 threshold. * - Z_RANGE - - - - Not implemented in c++ - * - EBV_RANGE - - - - Not implemented in c++ - * - ADAPT_CONTEXT - - - - Not implemented in c++ - * - ADAPT_MODBIN - - - - Not implemented in c++ - * - PROB_INTZ - - - - Not implemented in c++ - * - MAG_ABS_AGN - - - - Not implemented in c++ - * - CHI2_OUT - - - - Not implemented in c++ - * - PDZ_MABS_FILT - - - - Not implemented in c++ - * - LIR_PRIOR - - - - Not implemented in c++ - * - LIR_PRIOR_NEW - - - - Not implemented in c++ - * - ZFORM_MIN - - - - Not implemented in c++ - * - PHYS_LIB - - - - Not implemented in c++ - * - PHYS_CONT - - - - Not implemented in c++ - * - PHYS_SCALE - - - - Not implemented in c++ - * - PHYS_NMAX - - - - Not implemented in c++ - * - FAST_MODE - - - - Not implemented in c++ - * - COL_NUM - - - - Not implemented in c++ - * - COL_SIGMA - - - - Not implemented in c++ - * - COL_SEL - - - - Not implemented in c++ - * - ERROR_ADAPT - - - - Not implemented in c++ \ No newline at end of file + - 0.,99.[def] + - Z min and max allowed in the GAL library \ No newline at end of file From 7dffc22579e37d2360bc694a66884dded3805302 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 12 Nov 2024 10:53:15 +0100 Subject: [PATCH 19/44] Minor changes from discussion Mainly installation instructions --- docs/getting_started.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 2b3c5c2..2758e3c 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -5,7 +5,9 @@ Getting Started Installation ============ -LePHARE is distributed with `pypi `_, and thus the simplest way to install it is with pip: +LePHARE is distributed with `pypi `_, and +thus the simplest way to install it is with pip. This depends on having both +conda and pip installed. .. code-block:: bash @@ -172,7 +174,7 @@ At this stage running the tests is a good way to check everything is working: .. code-block:: bash - pytest tests + python -m pytest tests Once you have created a new environment, you can install precommit and pandoc which will help you to run precommit checks and create the documentation locally: From c7ab75eeececa1269a84b02aef841a73bff7c345 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 12 Nov 2024 11:32:03 +0100 Subject: [PATCH 20/44] Update the skim figure from Olivier --- docs/figures/lephare_skim.png | Bin 73257 -> 165906 bytes docs/getting_started.rst | 2 ++ 2 files changed, 2 insertions(+) diff --git a/docs/figures/lephare_skim.png b/docs/figures/lephare_skim.png index 8041a24d949920688db4b5a2b44090cadbb7457a..34c4a6a8d33d72891548196ab605210a6953d5f8 100644 GIT binary patch literal 165906 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 z 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

XO5(-F zO5ph+G-pK0OMWVRG9EC0yG$zEQ|skMhH#CxFHg4_rAfYjo8q1I@a-~iJ$b;O;XZUMksOl$%BYMYN;#YAN4W%07M{~hCV>7P~x^xjrF6qQzb@LwFH$`>-{X|afcG9tf$@hbM*~+El{1lZN&fr2#!Ux4RH|HVUlHIiVg+LJPey1xXsLd4T)%3n1I$Q-nD zz23Ew6VoW?N333ig_q1+hxTi;Kquj@wy#z`-!w0gkK>wTE-O7K9))_nsOQ9-Tw(2J zRG&ZIZQ`<1B#MC-r0lvUWFE=83Omq5QegJ12$J!cQlE**9)< zfVh5Y^nIIN(@f6p+18*4>Fk`sautjYt|G!OD>@Yn~^1eC-!;6uH)m$Xaie zr6QVd0maiIFw^7f?PxL7*(<3!mWM0&OE@bd=j0PD6rjgAry=N17yTLg!fZ~( z__(n*y7#I-W0fP1PSKf%UxXCk{+MUcy3H$|ZrWx2g3aC%Hnw}~@1atYpq60QaAOI- z{P>A&yP44i#nx=(X!do~$om%a&`~xgA@}2_opR$_eN^gru(qknCbTm(6MIMyr@_&$ zn=AET#gpdoru0=iw?@lLW9@94?NJoilBZ44dZ%@FojCmR24;TD!J*%70D&f0Q!U{o zVFKg7DU=76uqA47<2dDBso(F0e;IZS_JGx_-TL z7~(uq*Yc%9C>SuF&{mbomJXj1DUx7#>D_akPo>MlKG!|sap$lPkNq~*y{TqTAM3SU zlA8~kKn_p2&VM{NtHAt%?~!dIFT9qw6`v}CtjnutB829mYK`<@A2M3cU)g5w{JM!< zjz%VJC6nTU{R02pS6{G_1GATrJxZpx>z)G#^Q><3MlYkFJUoyeg5>yY^F*0<7P5n zNroiR{Md17;US4^fYi$zUUpkvrr5vxY)0$ySc-K{;U&wD*cK}u~_rSZl)BCE-^>#8Bv8f zhgF8xGt#kbLr9_AXR^fO`fdZ_Oc(?Fob>M!v|#A4lDf~MBUMJdkz2a&E={;LrnbSU zHnd-=*?!Rj54h*0a}5?ek?wB(rz`PSO$s}*Br47=vgzI%%ZR1olGI6px;ywx;sswB znVFp*TgB_1+f*Yc-VDmVZ+ZW_Hu9^N&(tAE=f}qsOO0CD)qz&=-ZNJ7lYRLT(=`QL zxP74PE@}Z}C>9NU4s@&WvXN`S8jw2ZP2iukxqpSca?JaYEaU?3$LOT`jKkIf&yu4H z9fD?a9bY!%!Y+GdwL*>W{f)$f<2imUO7+!01$p1c!@jvOskT(-5;cjZpw&@-XF-j@ zM@SwIO5}}at|$ZcI5|vU6Ml2JxkRbD$5qI+e@!dch48Pg_0wKC=KhEmGJ$V=yekf4 ze1|=h#()jKmaukd;{K_%+I#?msg3dZXn~3QSu_9Xqq0OBx)FuVntTkIjvxo;%%^{q z<;@mY-C2VuGMpp5ud|BkzIVR2_dFR**-REazP57s-Q%xhfx=(ChFzio8@nniF;4-( zDc4KW@dy+qZ4(qam24C;(J?U$Ch4waq@X`)6-R}@zL~2Rz1kPpX)E;s{Ui&P968$t z(J}G;{9xU5SCv#~HcXQw2<^+rQ=WI>wax4Hyv_nm?D=&y_MNEoV03+^;aI$Al_7`( z4(4g<5S#@f4vOUOL*l1O6=iFiVF-$si6D}QG6+T)iiYr@SX=dO*Vl3MmT=4UP%(3K zwrYP|{9QqISYQ>HO>Bgfxd?S_mvSfQIc-$+~+jTGz3g0MGyCggP9sL%<~t9_VlbrB2E7k;=h zxe$@0O#*|;)ZU*^AZ%DSzBL_IIor%NJG&>cK$;B@ts4{!egpCLJ#&NjKb4ee$Ypa+ zcI|fqaR!`J9OL>-W@p#E-wBI^r%|sLc+zn{&sjk)wggz8 z%8@0+{62@oM{tm^LK?O5ZjBGW>g>Cf(sC_#)L+fqcQy}i*T3^gCVGx9 zevU#)sT)XdeI6<~#u58UiDYTd`0uk2LsD^4U^Jd9NHCa4RUStxCt0LiM0~kFnJdqU zYt17GP9DVxrz?Pz@ifM(cb6jJt(Mg%?^u3v%qhYb90pQj?e@LR6U2J}q-T=akHv;MyKz+Zb{!Dy2VHbg33 z|F?Et{vFi@^1E(CJ$K((%wPZUe>W8+5QduR&naRJ`Bm_r&Hdla{{Mmfy@vmP#r`=S z|4+`CpCyZYL=t^pX8;U^N|~lTz>N{E_0*`hj(0oXy4_4>&|s%gDvDDqloyufe{^g& zpqZO(b}5(4;L}pCHK!2%iXCszA2HYyfRttszDWS?@hS3b*v|-XIOJ;YHmWsF7Z;E#oST8ln7s^wt z7-2JNQo|s>iEm z2}l~}qYi)^9d2*G^CRmFNDF~W!G>8~0oewus?o*HPwBnM@-F#XfL#5Sh+2@T^+KN0 ze&fpv?GKH{A0mDOh9&`UtSUkz5kH^0T0V8g^W(8kkk0mKn$f{* z<#?tbM665$z3wjJSG~pkusBlT&;ckMP2%lThln^}_sPC?S;YQ*U;pEafEc)A^xCSQ zzS~@tk$knWR5FV}P#m?Kkn_-ZI54l5))&dp#@TNs1d!l&FnCOi5n~H=)wy<1qkip zGi6#{!QM}|COPzh#epK>c(+$D8fvZXwVpuMhARDD_}Hf|1SZ6U$$B3E^&x_0ttHnn z(hV>X!Zf1sts6QMk?AUi)A@bcXfVb*2nHw;HGd^S#VUy9xXMe?8~IE zOMQE5roU)Iuic`0(qdpsEE@4fzSZ5So6hIy;V6$>me6T$63r8b*k#Enk#mK2kPoN9 z#P(6>A3N-CgY5U0fgVW35Uk3F>fK|ENDij8Yqg8Z0<>)m3o6g6ITI>q6hcpZPy&Ou z@IsB*1e_P7^mp*%9$+kw5qX9N07{v%-F&Jj&9SLzn7MzlHQ+dj7IUPH$L;LqYAznQ zv)>Hxh<_Zhf;g64yAO^51jn3mZ^N8&#<=%xh2BJV#FaxIu1TuwX6BqXaA9S*V7Om$ z4(Pah5GI%>Ta7PxPWj(_rVW)5zwdxRx!L^cUX*>2>sa)bFH3pQ+iVF*DKo*f2hkg85x#_c$6+CRGWV)bbTo~}$xV`C+d4YYb zxV(*v7z6;1CXYQWiBW2U__E4AczT|A25_evU8n15#h+45z6;ag>pbhI{_4Q@{NT`j zG3&Y!EjnBoOyqr&Yq0p=3a}b$7v%@VyAKCQ)XBLX+h?sqAWkAl6_NAZT$p?Q`ug zqBU*Xw?P`>MAaeh7y_c@uy8m8p$cdA7XeEEHf_YOK=Xo{e%Jf1y41GDGu4 z6+C2Y+93ryS1MNibiCZU3D9-6+DbI)M-!*D{O-{qI|Dj~@QpfPl*iY^D|kxyx8mYP z)aCh~AI|xT_iRBJ^l8ZcNgt@0N=Ac`@F^SZH(9T(7aQ!T(x9Ci_#WifQ{k~_2YkUG z!j#_nGj%~B()V#Y?hr53S)DK8bCB5(Ht-kmaC}-F@5SIk3 zWhexQspw%T;R=3gP7;8FWW!oW#vPXFZ@a#V)v)7R#m&1BE5pZPO_OP;3{r6T)F5HH zP*(~U1H*yU2`LDlWvINb8JjDgCvLouLU@FaN?mFCGkZ%GP-+_>ruMhi*sC!)hJ!KS z_3*MEKd6PWlGwn;<;c2|nXW{UeAo!Y(PqA1;NcceEc$mwA|BI#iTaFuA zgR^AmF1NT<%f&Q)U&FZqP*Bb;dG}oOVQT>{0Ag+&pwTwoA2sKwL*Kvz#UR@s%(CPx z1_Uyd2xT<{)Y3lOSFO|+xkW18nj8Z3$EpJ3LQ9cip+4p?xAOsW za|w}&>TLE=*{rWu`}0$CGxyT8f;u}7+fPNtoUR5L)pK|7Nt<$q-Xw z4kvjZr}<~d8KRvGH}y6E_&6iLdWiw707nMo5?2!0@lGl`At8Snh`13z^<&T6;Vi6) zCD4bQzCj`2+DLrkZErH1L?Uba;pa}Ml4jFAc&P@++Gg2r9D2cIDT{cA=z*jeoX$dZ zu&Y!AKu;}wpixKZBUR-cud=M8UqdE`6c0AR{i%h>xV*3G5B^Wv}x@9b$aNs4r zIR1}>n$ zFF?N!w24%bNxF-s0*%-VYAvpnOy7xzz$pkHtoCC;lF9__wQh3J5wDq z0Oq_Yed6`elEqa=QN7)I-}rYqvi7kTCZ-1~q1y&pGOJPOA^?-Mf4H$*d9qb`dN`LU z1hAF20wHi;H-nJy@e(0mtAZa&9d~|omUI>2StIGXX|{Q~snuJjNyQvg0VXk}RIB^t zM%(=n+dlAxRdC&S4K^3U$iqq;mFq>ezi^C=te5C`{9QL_WRvj?# ze?kg;)+g{=x8?cf?PZm$g)O_qVKqOA`B+jt$~ttvJ5i8gQJ^$u%d3gw^tlSKVs1%( z3JM}#Gn^nSmuhgB{mArtp+UGk{1hY0c0@3kAteB-brMXz2X2JW@kVVcI}#5yEM z?W6Ve#|B}5?*+|G$GvsAZY`5sZh&-7uOI#v<(9%nBJ%u)&fA59jw;?=Y?%Z(WA`; zZWC}osX@e(p(3O{1H3U@3VQHqz|@j1X^s&a!rpNo;EsB0v%Cno_(4|UWTnZe_|sNt z@JO{x2A}{HCW_zWP#g`$r9_vz$Me&pJfLd6ZxfgW+0KAbP(KKDLw%tCL?3rJTWL_G*A49_ z0Y5|K(vZ4}4N)dA%5y&a1zHq*Gg1&vwe5r4BOvpk#k;)zn{;Cl(Y>qiX7w`VZq@(>Q{6GqX1#Hl5_>y zlm2iSb13B*+iLJiYZdtvsdi%`@hbwQVQ^s z&9?E=6TtP5gF!y0@OimQCWHt6-{m71x)?t=OF5u;&Ro>$^UXx6NTg%+(oz#dC-zhL+Hvx8edBA0g5f9%f=p>>b=@C(Z6`%+ zlfF1!=7i9=Rdr?m^R`q!pOGa`H@)6Aq~)YfAh}*Qgea4qi-2EZ`oNxk?Tg_^^u+ON zj(_h$_J`G-EQpwQ9>^10LJ_hptLO90-MQP3E<=|p+URKrEI2QVGC&MY)}BPn)Xu5; z1O&dzA+MGa8B_@W^h^UP-!F{Z_FzD7f{)*uUNC})m-ZgzO`P3|BwL09-b~^$ic_Kk z-qhFt={Jl1F#pEq)wQ#WVw+pv4Ms)HGb{#%MtJOaOHPOTt3N#Te-4n?3hoX6H{#%{ zqqs+I4xkX{emLpYQUCpSv<`i@>v%ph54)}3j(W3?uZ~%$lS((}v_;OaX($@uF{A0{ zsuq?s|8#c>NTR=YzsY9D-@L%Q1qpWDf(25Zgmi2%v*e>xL>>5eL$x8eMr7!+%>K^z`?989K2w>}r}(JjgY1Elp(8esPfxJMIsk z`ztV4PhaGBJ|Xs7I~wK<2*;?n6u3pYL1UW*_moY&ucET!_l+=Nv=jfOG>9Sn{7n>N zNUE|CQoXQ$VG_O^V?RVHUl*)pHPn{w6ULlBO z5!gXlsPpr3l($Yn8i=p{huz!5=m(xh3(FT}qT?Y7khsyB1C0iODM-74yNdEI920bR zdikWC>B9aYHi#9_e5J9Plm-xN$oJGIn*DL}b<=qaB0Mv4m6%HS5^4S|5i4afZEwHf z4RRH{;fx^;5b;F6hcbo(uB)^f&^W;-u^%qV$eqn!{|fvi$G`eDC%DC+O8TQQzuqv( z-wn97Nljb8fnDYJ{MWBudO*F0lm^92ne;yFHk2E*chHl-MRm|fbhPEb#}!e#y2$-` zeu%5l2TGfic2r4}x4)%3jW9!<$Elr5@}6Tcq@`bO*8cgk-*c1yM66TUbG7gil6Z>A zD;y3lc-d=#3%J##&n}ofZPnR6SX*L$x{NA6bnK}X45y|X1rDJ?oma)TgPtB?B#q2k zQ;)7waR8zEr+w(Bh>wS8h0#Hnwp(QH51F^p)y&yXvSF$CNF_C!^VaZyJ@ZQwea1 zF?X~l6j(oYwpe#lD)a-F>Qh~6<3x2^3--UF5(1d8s!-?im-snR_|-3c`R$+s4c?c9 zS|1JnjspRc(~o@RSn{J*sO0Eft9UXA{8sDp5!)pQ5Iycwu`~ZR>b{Wr(a)hT*wty_ z^p+%Jy>yiO&DV=#&PAz+%@F#}ZAFEFEGe6MLe5u-X8YLbd9o^~&~5-HI$oUKg8VlNy)p^}$nCgy@XXdY}U&W@#X__JfbSxQ}}QswJ!+Ib_WP!30njgpU5 zTR?rc%MGW0?@YE>hq@>xeH4FaBP-p@x_&_hySJ`7F51}`(){y>#C340TE$bX`6_0> z$WpcA*Z)To|8DM&@8c1#u!hb06FC35(Es77eA)bb%Ba`s%nB;e@d$|>5-wUKfa5RL z2B$Rc6F)tItNQXH=jQ1?6YK8sjboAJ0+xn1PReu>5Q|_qd07ahg)fsW&!4#8}rUm!*|cnk+B~{(I2Jf zJ*6*=o_HEJiq7%H1LcJ&T*}^@O{HdRH0Ko?5K8RdP35k0I(vA8uk_Kx*&pJ6GA7Z)^E(fJ{UH&a4fJZ+V5-S3m=|Hc*m zuR|rEj!|LND?4-RxkY+=I>X<)kU-<^&Nsm~T4!4uyetZU5@_Z<`!S}jNxCrJ;jSgWpH4i4GpYCG_vrMAHSQ%|% z&3CG=K=~h;0w&n&8qB=rhsC@3#8NW;a&0D{q7S>U+ez*$nE;f-!BQ+D9U7*PD^2M_ z3z;eIH`D%Sd8HkJgwi?Uocs}#Z|t*R)HV)=AoIA1ei?GwUH`mrLmv>}%q}IIxs{%~ zJO*2F&y43Of+e_=?cT>VOiK$Y<#GrO(q#=mg>gK2Xj=#n!)q|4^0}QhaLY?YreAFfiXmvePVTmzr!PpO?58-LL#iX9!s6y_Uv!nLmYutg z7*TB*&y^|TdB0XGlmEp-ONTN&z7QcnA|q>kvmBf5Y8B+0Ft57 z%SXS=5%e@mE#VXgS5zBFN2WsBwRhJ2ykxvLb(h{&#T^>@?P|n4#S?{4Ix3R#nb^Vm ziI<#Tl~H5!EUdTKa6A&Uaeb+gr?}=H^UeZ0x!yAT_(45hJmqrJ$109`ugB}Q{~R7O zSh+Fm=M&2cV_akVLqDVT9{UYw4&AhaOn$ROW5o*w1>vkVMy7P5yuG4u?lTs>h-GPs zTKfof(xG$3*=j>^RCk?Jid4oz&=d%N-;pgHvgmfzDqA{Vtw%@ zi}A-2mHo|mEQu69JXL<4*}QN*vSOpf0}8GmH8U>Bzzv|B0>w`TUE1Mtt?_S?mJC1) z&a5!SI!i@>hH6tF2u3mQ$D1Oc&bEe7L0MoZ+QrkWSm90|iT5ug?ao!<{#1Aa8<0P) zL{r$KN>o$c8!#-^NvdCAK*Xcm`(GO9I>vwFv#HpJnvcBVj%!4H9c)-5T+fgLT*>U0 zD`{PhyDw3vlj9PM{ah#QeedyAkxoPYsO^ErP0<8a;a3K*F{eH#6SdH?ua_PkDlm00 za=gtbgs0Ro!F#Wp4NNFKlDC{_Q{Lj&9mfQ(;2kQwaq%*1SZS1UQ^7zHv{!k982>v^T)F1Q|4HTMC8)+x}ex zkFGZk1#?*AX>PrLgz%bC4=P;7IH9J9EWd--ySulK;zw(Fq0ycnXkQ+ut(K}$IhlwzBA4(2Q?%y@J7{=iV@;Z1>ndMY}{3#Rh?z;GA>0x0szK3f;pI3xB z!&l54%e$R5ebQtH~_UtQSr&HP|XX_GaaaS!;%w zDN}7q;>?SG67#v3JQT6JETZLUwVyHC9^%|9XjGp=-$M2NAM%D7=0y|tYbY*1i)#CZ@V(u&;0pMx-H&;__Ua^@ z%vJnbGWiT$j+RW)v2uOx&uum}m8jVZ)#Qu|+ZXF60TfH4hXwj>#sZTS&GvLLC4%G0 zDo5*cl2A}px-9qv6~QX(~_s z!ZD3wL4y$o(}}4<$NW2`wgF4$%+(mwhh;P?iug2l#C3b==uG5Sj`~tFyxzHAiL$d+w)bl)=agCT zyD95#G8yT!V%5EHWSi(=BKhYvt)Jj)CDU;D&PK1*D^%d|V}n+QCC3HPsyM`9EzzXA z`+!PyxCLBFK`Wtgj`fVIpsB+YwTgI|>n{SG6)dyX8N|uR(<`^bcP$`W&=xPs!nRo& zar<-Y)Yu7WBYQk|aa|X#@aC0-x_H`OxvR_EtO8&Y^Hf;sUD5WQ4Z3cIobJ$Lwso?{G`=ew#II4$%wZ?h&en2|^`> zzx+vKd4>-{lf!j?)2dylU@hMEIAb%+oAJ)pdcmc3`NQNfij13Gsn{LHa+RPBm=?s{ zmQhVBvcxZ3uKkO*H(ZFMYgY?)T#i&TwN|7iDs*%^!5xs(aF!mfyMgxWv;e(ilt0 ze$HanA+x6shQCgBbjy(*n#o)pL>^));cX((YYcYEW*0WvijkHQO$$;LbZnvudI61lqFGglp1FYdAZgbZdZbA=1 z9tl4| z#oKr|y~gOFeTYx2u6m>ntf zOt{NuI@9m#UY>T5Pi@zE9;y3(zwRqVJL;$wufEmCE%OD|XTU!9dmT3p4f|JbXIuH9 z%v;Rx^L~uj$z<=*9$Q#ut`s^LY`V~9Q|0eFJm)I7S0!+ntV*Lvvu`u1w)(+d;*8U+{4zI=aS#LDXYqk=>M;vLQc_yY6TE zQF*9V&8Icc96aXePU5cs?;GE-{Dlu9B$nrAR}@QCi2Gi}$8Snzowu>@7J8NyQeIgN z+T+DN#fYxdG!KWhSuC($Ss6gVkB|3CbHLA9q~pC&T=6~2dfW?t#2kFAPPNin^3QC+ zayrR;?1oreLc69~jQuI?a~+KzMiR56qZ7_~0!JBrv7l#q(+4qgvt%+z*C&KKMg;Al zP4KQ)6MjYQf*?!NdZL07Yq--|;LTxyKWBusGCdAff)#4m3GW$Dn+m3FA+L1Oysk_R zy1TdMkjcw54kB_X%Jk>8z_U!){A}$0U%3EKw$eTg!Pz`AOJ!$>Oa$7yosaTv!I-2) zD9$MGkMfq8QGF43813c|t5@N}ym{X9Qh>?f@elmfuizcG-Y-M=sps7t;-k1vk2#3p zFeOD|-hQ?Jyn6eX^1(H8Z1#@9bTqo}_x4vy6F z;A8FESu(wp3zO@r3%9`AG;n$N?IsTNy0;saUL;iKXnC&UV6rG(rZcP$ zf}X9ExPg#9S;8V6mJw!?NyH$M2BG0o$6Iz)Rs(lWn%c0SayIH~vckw#?1avvT}mZH zlPS}IvQ@&)Y&;{_>t*ffb1M#n>NbZl@AZ1D=`gKP8^ec&U%}`Zx9ZO}lSBB}%d)?+ zeuC%m(YMFOQrWcj*q-I%XDM%2Kug>BDV10lS(KyDLE1V(jiK%#uB=rkw|{8&s5tPI z)M{9i`nI)y(hWmoWlG+8wo0>k*PgY(XT7&4=uUtWZ=>H z3K`ljQ&)uSruM$+^(JfE0#nf@FW#4mh|YVk<0NUk$(r_wSt+STJ-KCtC3%6m9mGf+ zM^yOhLwzg71p(IREutdtf&I2(M&==-7H*cEz(SL2O}BJ6rq%bJh|mhm>kaWsLr`qY zKVW-a$-7*}L-Xn0ooHkv8?GA1gDRea@L%8592c5p&We6`4l-FrxM>rC_DIw9neEH$ zF}Z8|j3WA$E9-N=z(V6ZTFS;PGBNMpK@(yxxSA3TC3uQj&Lz5>rPDQzmF8xlGMIgZ z%#1J2N7XKx#&Mt|J$503L(3^|H5e-#VgXh}tFj5=algfUk|gF|-GEW2hKk=Culu4k z?SS0N3JUBS4*AHV-R>Awf(8kya0OCESi`oJFnP3)eM$;7OBzZ@@joJivN75EGj*jS zotf@5JMT78G?)4c96vj;jBibyEqU5GOw_g1c5|Bdwo;hlj~z;=OFMHatkX!TAZSk3 zZ-?Wg@Nva~c2*X=?*iwkf=Ka)bQU>OxjuB-KuC9~zaG+u#IY%7dp??Be>>mw`W37) zlP2)n-Zrr#qHztog|^oX0&}v;!|)H>G&^qQ_ZYU(!92veY`4KWP}LbW`#-u~ThCR^ z8s$D-!Az3QA(M98c^#Bc^ociF^ke%cXJ{#^oRu|2^|bnxOu0biy2qSm&8=oMPyl{_ z#pR}1TGu+ukZHFs??V%z;;3vQ^X|Nf!E!yJN|l*YT|&if&w8J&8jyRrWDPbUT;yLM|Yy`*E9D-?2yEg4V{{sbgqJ2=3{s z>r)qg4uy+~XDR|jPK_0QR~V(MVe*dCIPt?!;OLh}?g_lXJViysGn|+sN&1NzLaxI9 zc0Ox1Fw@SYbPgsWZBv1HX6kyRB*PoQO|5~gQ($rY9lj(NeQ~N<7h;TG7FNqP$xT}a z)B9znB*Bx;8HdfhBb9G{6x7wH-qJ^2;m3D}Oi0&ikpXhtUN*Wv5Rt6@aZdGN2yl1T zy;~gbI20s@-;(u$M`Z5)4(;D*zyAvbzF&mvE7}l8gU|_W63csJ{vlasm>Ag^$9opP z(c1gHVgz3R?39j@R~{c;bn>DL;YBcZa5}!t47Jari0a&UC=DAp6KV3#Hsy*o;{+kz zK$>s!PSnQIP->R9zWrsP1C)gO-0pg6oiiMW4-yc8TyD!P#bA99gL$KUZ&)O(OK-ehFdqLg&w8RuJDNJh|-bK4`6);UPf+^e%bxr!F8^;0cDdf{j$a2Ffq+O^J9-B#z z`fa=0qhKdWuceZ@=8DOe5*HBzvO?T^8G)0k+94y4r<+E800vWMC#3>sHt|^___gJM$XekpdmKKE>^01z7G%Ahw%G$nURX9|!z|-XhK-Co6j%{h; zC@)7(_G@#DZ^qp|Dc8`n)}N#p`Dn^PFS<~#cH)MM7l-v%UM@U!cHNM$(G5QMMONjQ zZ|=o2n3F`Kp_lN;dI!C9^EdECEAgLe`Pz-x>4t!#pT+WcpAgc7|Y`i0wxCUQF zQmabe!vE2E3IDwqo=!A^@)*Hm(8lLJ4s_LGgH!%C+|e;iw>Ip{cKNO&$MBEu`QmQF z8`N?9<(1!Q%EKM#U{^7a(P5bpUZU=ro*S(m}fDtC5!N z=7qY)&t6MhY5Rn%Lq-SG8fP0xWU}2x68GwKbUNSq#crn(}=+Wcv=Q^^MmLGJM#kcaoIw z#ag^RaUjtrYE>S3)f@x6*Pqq!S%ae?t>RSl$LR6Nz^nCTba9K!$-A2comw?Q10;5&uiLa@nUy}NoeLKDl%gB zqNeBmKPNU@m!m&_Ht=r3zvd404s7+g;$d9>`r>DDYS*u;VcMf6Uu5oJV#O4bUH#=? zvwbc_{5{dB=@aqxbr!9m&u3H~5Z#Sk1%EEAIckXRWQlvs**tBy9p8hk;E8=Le~)XH z`tumO)f#zT$fpvYl6MtLb)X5w-H?aR zc?qmRCCe34kO~Lb%yD)$jRFRF zx-1ygQatH3M(D(8cQSy6frzntx?~5FQNg5XmrPQzzx#-=&k7ij2J0i0=E4B<%eAG9sM|rEV()!DJtk z6*Pb1KvN4LPV;pS%bC|7P>^0*A?A%YFYPa*s3zxRfctg&svNZ0b8)LR|L}%4wVB_j z`}qt@={Fw(8{wMQRA1xuq`NIr#UFEzL#t!6Kxn2gk>RUjb`tn`fhZ(*rA^rh;fn7V z@kjgF9)&D&k4Yss)O(6HIN8oOE7wfM;wby9l77Czq~Hu4L^zB5y5Ar$@!NNH*dOdf zNEc!-L9mFMSdws6OiU@GDU`F$N=OgTAcHSTcm_+f7Fxm;V?wIIYHQyhezoneSiMo` zfPnL+Mys72D*rUGcF3MzFL2Ur0w;1uJoB(X}=~ns5&LGxlK#-lH_*0^7O6o7HN)dkc{>IGog`htxtyDx|bkd zB@;RrKHZle5q*0Y94^e)IM;Xy!xi8Ch`4W@Jk+!d|HZu^mIvRV6a29)q(c$)1_|AR zN_O7#NWyCFih##3G(h*qPIDGgd<;95CO5GyfxjXd?77=KOkf@zy^v00b9Lo-xN|cH zdc;D^5y>drt8tbKIyKX_o68Eqf`2EG zCF)TMHE34O`?&cIa|$+UQ~WU3;3`#YZ+$EF+ht8teIbp4G1qlu_`*A}KINR9Uf;<5 zMEcTwxLy|eQ@yN*x+WkuJURlo6i0xQ-=lP%Q?mc2%?bf^^)*2N@z?JV`QE>p5i1#0 zPe!Z3>GbF*;IWwDm729`B|kNrCpce$(TmwiaaVi}I2s0TkCm_Vix7`wJoM!3$bj_&IkM!^7 z2>{~KU3m4~E(;u}uY)wb^k~g*7Z1G?&>{5-`U!2O4}P(X zL1P1B=SYuT!s?~RsmO2=0`?LQxsngTLLoNbYQLIq=)KfYzi0BBJ1N5LK29Q{&tWjB zKfrcn$f%_0>+AHDwUZW$**_+e?v-0WZI^;rl@0_rp`M$@mh2kkUaj@xOtg9|&n}Y( zuZ+FJuXmF{YP4dAe_n2yxIq%uFLvy0D%K5}A|hA0I^ZMHNm4fuEnZuPA2Ng0#1Lo< z!(rd^7Qp(+M^P2=xe1(uv|=xSUV>{&dfU$fDa`v ze+Q!T$yU{?v-x3-SbOS_Dvqu&SpE-tZxvM6wzX>qcSvvvlHg9z;1=A2I|O%k3lJc< zy9al7hv4q+?mlt&2WzjjcfP;Qx3AB|shX9Vl@LaseYVj@@2$P*{xe=mUmH-#)|F>jtmLBAx(_t8Q=6D4d^NXjhP6ZV47jkXCS@?np+ zlj!4wV;MVpke8=c)ykHC#*A`xsnvbMo|ztWS*Q!TSaG5;`fw#(2GeB_y5v62&KZLA%q^h`gP@trOV;gE-^TV13bgIx3ZV9 z3-0-2RexFrUAE%Q$)D+&h-95*vF`4!4!a~XJA(3yST3qzN9ukb%#V>bi-P< z$wd!`BQJ5d-(9qLnv6v_?+wdH`F5T1G2+dz_&pGt#nzOcR6R#ThF-sfG`e3%vNdc3 zI)zTJ+Yw5}un{)SP>kk+PIY5g6TYH!?1AvI@(S?6%neOZL8{aS#exh5{fD^_@Fo;P zx^T$d=seck-!MR*Q4AKH))H(sz((@U|+%?)OKjwW6)0X@@eov}YDZQ}AhBY}28=Ps*A)t-k%5#|BObc*`L3qz_d%hm6Iox#e_@H%7w#oYMpd};zj-zp#fixxrGk;#-bjgHT zm_8>10oOH+g$_8KVBJ$#(19s5a^Kg^)4oU*UUiDoIAcxE_8-$x_|k8#~YYLXjm_}QKHwIun zU!ZV5cpjyW4x?}u>t=rTJA@AL*A4m|eHw~(>*vF#3z5T++twb0{0)Q9u|)Ze>tQ)I30!ucHf zAPEa+8VhTpkdk2gO-T-;Y{WH0K;!-Ro|9VXXQ459uc!sug+96nbkm%55dM69Zm^+R zv1Fr-%y9w^!smE@rdp9FVrvBf1y_DIm%}zZ(h?|del(G57ym-SeThxtZSaKxE^g)o z#i7(-D;G|`1y5SbnJ(<$(r^-*niH3>R@!KfIY*Qv#mO6A7ZeAP>U((KOrAchqR#>E zTx!Aomeh5nlErpd-q*ud+IzrZ%p@C%!}7-ElpPe{dIG*2po_M9z&C@A)_}809D@4i;+_(Rn%+2qXSq~n1g3!yNMmpW)7hR-h0J;)KhXEX%s9Sed1`q0xEWm4AxM&ULVx{2j0NV}eC;rb zVE?kT`L`uNAAnGpUKM(Lmi-pZXKNu;H?^|rSY1Of!3ufLVk|$`EO3pM>HK4mjl#tS z*-$KV7)r=IyiRyfAHThBqa|&b(AZ=VbNx!srv?J3Skxiz=?PT8n`kvfom!Jv6p}9N zh-kk*7K6Qalcn=T(;#a1%ZU|TXweGGT*zScYO2;aW{oq(bM(3&|M4`?s#X3mf=8b5AY8nNhkOQ@7e|MH%Y>uOqc zy8w1p@L7w2wn9Naz1r@#-#FL8S$&F#Ib>dv$)knO`8wX%cWlfo%9u<(1jqLz%D+@v z>iT0j)55YoSi)cn#Nx$WDeYrXY1a2zTZKBbJx~0=EBUsQEst(`Gaj($eb(hKs)8Hp33!Jv+;Ezr@A;dWE%FFE$4 zxE~`&AuF)BfgWUAdXn`ilJ8?Sg9%Va&K7LrOs`!ZhY2(EBAs}^5=)F^t$BibK+HJZ z#Vz)uf=N5Kc3@;U>0(Mm(s00RQeNY24rs*guKC1?*@yx(z7=b8X@(JS5J5bEA`eT? z(rMrB!A}NUNAC+h+~K>rtYEesTeDXBMgKGrCDH(wC2KcjrzOF}dzWui9Wy}3q>^J8 zlP%;CRU}covbZ&XFVhRd>zHK|8=;Z7-kCYuP9G(K2|9NM4jUezPuF9OCQw!99oFi6$&GrxgS6WI6sf|t=BSQ92qhadir>Wcy# z`$y{KrRklt(RjA-`1=D~E=(`TZw(fSQI#Hfr88^Mn4joN<>v;wNr+B>p`=BE>*Oritu)2 zOMy*mwh#M=6;ZIvtI}ru?RT>PRbEow>%CE_7gebr(e#smB%1Od`V{)Q0r3#-3uiz5w9CL8w5Xz)f);i<%26zIzLk;`U3f-#7&+`%)hkEQE%MK<)mrBUqwqr zt|&33@zu=ySc91K=8uiO;O+)8DNPEw{?2r3o2}K*d$(FohVr6B+;DsyT*mJ?@%H;u zWT*$H5zlm(=dnf5dJ{WX9)j#kusyH@voG##1LTeLq|zr1;unQU>iriC7?QO`H7y zm01oMLYf31!QO?$WcO}fE<_)HW5`x#MW>v;`g6bl3vqTc>5V%e>?8Dpl*RyuB??0! zwFA28+3l8PX8ix7YTroWi}bnMdeW-ZU>CJ^Zzb4 z%aH@+mZ?Za!GBcM|B+Wup=NwzuYq*o`FpdIjRMFOCIgtt{?v>A%PQe5w09@eMgR8h z3|lFKam9OR2C{#Y$cSXX1)x{oXr%$}yF=7Y8Vll>r5e<$bZTNm{~pEb8*6bi?1@XV z{((21c~?yB19>6sIkbmj!xuSQq2rTVfE1B(@P|?4t9BS3mf^?}KI0r6^(UG4ql;}n ziv_O4lPRJxx>V^<@PB4Pl!ymTw&8vHO=!-DGx)HXBBRIP`*~xDgmWif($`j$H>(_Z zGf##VdLex00(UuzErq!XyR&7$_Uf4;+3^SyiR6f!e%ZlKe>81a<+IGaZsO`Er>hTDmnHD|o-OA|}mw%zS4y>FBZ>oCu1r+SeMalUGJX4I5aXBjk<>!d|7=8&|fTV$vw$$yV1&^0dbUnuDc;t@yr}JoI#j@cE+qdS|WZDmiiRH zaBDq%hm<2w@GD9^(Sv1|T=n8%_2Tv#D{*%{R3^_<^(A&>mn9;1At9yhQ3i)eFEZIe z<yHq=y{oOU;av`8N)-+jHha(@*+M=^;wx;V}` zdsrg-IdGHx(f8v_^tRXotGFbEz+oWgxKyO9O%{GIa3}8gF2Ru42z}2V5C%jU-Fo(INCP=?a|gQ zeP8y8oh?-xIxQ5-UnZteap22T-WN>od-=5DoVoqGoZgya61Upoiz_$nfoDOH$EY8Z zdG=-7PL-BNOI0#TWvf)Hw3@Vl^zP8<^U}Rnn|Ua6nWie}h?8j4gJGN=#hf``OS;rz z@%K@Bg>w$z71{4`r_Px|Y@|p-+jQ0R=;N7JvgWcs*Br*oUGyu4;;Zb%KI=fU&4Xp) z<0j*s=RBe9(ta^CwVmzLxao^L8Hzk zz)CvY6Pz*T`}t&jl`~op>J{QCyFN*^4@H zT92Xb&6&rcF+GPq49=KG$W89x#Yt7KS2(TmYpWG!WWEZPC$S%H_^h|fZWd?{l_Kk0 zHFgIFd4iWYYNDtN#9`e(2z0m`RtU5j-NuHKncT0HCz>l zyXL%jesUgD$~Kl*{&do`Q2k&*aLQ%d@}46~Cnl|yK0xn;3BQmRa7cE6R%-?IqqlLj znD}_efM4e|?+R47*hF4A7(q-W5H z;QH4s8epxG4pS#eqzTLA`P9wRopR%2?EEU$0k&EAr1 zLw>fcHIe>9~dn9U` zxyrq5ci46@xXa+-#OtZ_ohk9e#kVQKP}n|5d>sFbbDh}1{88*04v{Pf2&8-_g$D%X zXM+jo2d1?Sv+2r)Uvg`0=IHI@d5HGMuhQ@z<<7Up7buLc`4Z49$Hq!&zl~~x<7GdN z4az@f^EYt%-@y0hmBLs;)~hKee+?PudET}yO3sv=?o&5$_n@2D3|9}?%@g8vS@s41 z*=o~yj@$EO$+lrPZT~%Xl}GfEJ4fR&VJu+=}eo8RMwsUAxPdrtSP8ve(*e$Ak^Cp?O3Ja`!nSpB=i@UcPBt)KJk!u*I(y zkD3}t+(SdRN*vgwmKwP3M&h{-Y!7pS`nYOhR?02nr%K#&nU%Ues#tYVa$%V+bW%v?l*Al% z&|fUl39Ek2{Sc$zq@SctYp;FanN!WvloTT;bo$U@8CR749^Ek`M07B?Kqg}NfI#ou z%50b;_lN2}n{B0wQhBKG((ousRe%7UU4D+cE$ZHaP;@C06bMkA-&bNk4|8<{{ITQ6 z!}Y#0rSAPWYrPO-B4?>0ZA9kXAzpucYkdfuzev+<@7C*hn3(X^$u=>M=@H#Fl)T3! zll@ubb96u;3xQbLmR54geR(7mM zf0_q9Uy{9_j3oRRDa2$R^jK^~qzR@FFG4t!@(wW% zfyo@$!8`W{oK$MxM3T<+rca{_Tth)Vk&A@~uIo!EwEoc%>4CZ%TqP`(5d2Q8#PnDE*7{Fs zD62DOtd?lZ99~KY=G3AA_k0Z9$UH-9Ma2_1-9rj}Kv5vUZizB7zJ_B_rA+T_?srd_ zwa(4mX|KVDq#NzzXFFoO!6rV8?eeAGD|$&v&diyE!C6aGiW8JWySck&|B0<)_^%E2 zHuHtgbvDDgXgl|+3_sKf)#?9JlxJk~=Cd%U)4T-jt`0PCbT^9)2Qf-)Dz|@!;8ASK zr-ou8mZ5!zlFtc+ZS$DVgwhfhp5YYOBi_O600|M$1d%P&)Dt^U_}f)&G03<}Cy94~ zRcS5YMlN(2Y=7mHc;0D^SJ@?@#yR!gpSwv-wIJtN8-U;{#I&NwXMgQf035FcS%pi4o4Mz5R(CDPlWq-JchWtLpmxJqGMjFQnw4yR+I& zi#uzpajWkJvNNG;mbUi-k@Eny=GY~)8K8#`Mxg~c*X#h3?B zLwQIy;G~|KYq5 zmREyfx@R~m2{D4aApop~tU}TZXO?;Qig*goBZPT80(v_8$t;+q!<0LYa(i9#pYxM3 zPyOl$8b@y1gkOr{Tjd$tW-zP>85^Fd?{7gkDAVDHyPT(SzK0beuf6h3+vcyoHf|tFh+Q>fCk+3F7#?0Ylq)Huw3hi;md=t&K7n z{@znGGe3Z4iVxT1L;huZMU^`eay^m_9z>)DlY+~qn*JGsjb@;}SW^?3-c>P|uT`4e z@E(_La_ZFnSUhLg5lXSs)$7dWO;#^!s93&Nd8o{4IQiY9n_C$YscXh%MxUP#4o|#| zd)xgva*j?<-(~UwLj@g=EHq@!cLY>PG{JVhLj*dvnc`M6WSJyzlfjUEUF+#eMa}9E z8C(2|TO=&AjF2AIK-FI#6dLFDb2GhwRH8uubldm23)jORdK40yxEPX}<(5#hzrVxe z{+eeL{z{mP694a$Rbnz~hv_7-%HmByEWT=YHS$ zwhMzo|J;UDX5@V?t)e=hhqi#|R4$Blcd@-+P@SKmO~s(_S#@5+ZL9p*=<4@Q62YQ~ z{|>&W9|&4DjX8xzt%(Ukvp8e64Tv0PK(P)x7hZoea2d@#x=2u3AP@RrT=ubEm4wT; z25#M!KFX0`;pnvR5FEQfrDI6)^hgqLOR-N!slz8McK=N1(Gz4^u<*PNwsJJYTC7~M z40vDWhRNx_nw%(_ekFYJaO;eODm59>Htk78mEX%N1K|P7vTT z^4{&{2Pp>>tmIdTX?12bn)h?Wrqo;aj#67@iVU3=!lqDhc{9V_Y-Ly??y1E^FwDZQ z(#X6mjr@-7X2$AS+8&g0C*In3YxEJ!U;WY)clccb#%B|QmBk)*YKHS(j3(Xr;g>FT zDc|^6DJeP=b1;I#&wYoH$4Wbrp{cp9n|&6fwG7{jA!qJf-j@P7mm835*T6e1IhlF5 zJxCDZN<{TqidKK_s3y5>UC7Q_P<1d>v<0s{`!u6YJC>Q@CscZE(=rPO+HGO=JcCGu zIgAnA(hUV6ZZj5x3+JO4sW>QnJ;ePY+G9`uK7cfw4VAeRjCWG@S65}*Z0K<)DX%an zQ%AU~AG+rU3rx)RVcm1qs5E|qHr|ww%qThS^*l=Uqwrg?FIWB;4)K?GIIB~8Bx}Cy zNvjl0TzY$bnN={W(@GsFN%vnmLrq>CC)N~*${h}sRBKFQkCqzbO=pS=+Aw+zy8MwQ zYAw`{?O$&2>a5oVRNFjTn2pEyUfubqGIa4bfAW2{Fi?Owrcx38X8H`FTz5`s&zoG) zSIxxG@@$B72DOd8Al6pIazrA90%a(JuMj|FJcqy$OL&Y9$yLR_G1P(n?2;j&uC1yg z_j7HyeC4RnyHWSuvXD_*3#VlqrCvtu2fAQZ12-fcXns6UWF0Tl@s8z!bif1WZIE9j zBGY;^>WE9nLKmkKIWFp#&dC;@h4h~mmA1=<^LZAly;Gf>OODit_{Fw3-nHZ}XGIF~ zf^V;q%?W#3l*DJocLEN7V{j}Y_lO!l{Ic?9y;@y3xgNMNjYT?CsdsKK7NY)H;4>eo zMc5B=CXrC-YpQ}fZjepcxI-pecbC!8pUQB(`>r}APq^ewlH(yh^cGqI)}6lVY4|vS%dF`oKQU4XvT7VgrM6#N!m`i3EB24pFuNRm^KDEx;)P%$-hQjb@!7X!Qh+p(0aI<6BNBL#GS#>JA!Q7W>I(}GV zk8FQzJz`geW{&S!@xk~EB$G7b$DwOV4z0lOSyqtqeXvpq%l;AJ?Sy|$b*wFEP=YWa zxFKH#pMMRf{@m{dokmvS&A3I*hvsUrr=b|sYt6Z6EuV6 zo|jh_uiU(OqcnDTc&z#C*T)Wf?`U)x213 z$B;t+zq5cb%G_!f`7Ecnv|#ceyJs*tugx$b8rtrM18GrV6d=WL*!J8YXVh>U&wmgE zUWKj85`5@yDsMO#XN=(?tLf1$3pQX~JvypLt%ohdX96@Fy&rMG-b0xo5cVcsH=)Y+ zax7A3x#e?w>KC3Exuis_2{k*VJqU0F0fo+cRg^_D;mR+`*PwX+LG5HT&DM2K!Tylv zkBD^OlnI}hKs&qs14TDlv}bo_Iq|qsT*cy}GFR+h%+nwWRb&e0cv5cMDau;lcSPIB z88!lcN5B}AZwFS(1ge7FIzt65t@!r3I6c%JU%PWgDVaZ=bFHrceMUF?5DqB5iSV}s z>u$)iGzr}yZr>B*_g?rrmL#8y1R2J_oV+4}I0P}k{ho92Gh?d`S@zN~ZuK0yK@LkE zDkw8vpxg)doo}afRrvWRfe@MZWnfJ3hjM*T_-bGJa3t=zJ8RLHJ63DUih9z_StiO33508RK2Wyy50AQm!-A4xp(F6 zTP~Fj+LMS|xNhNljgR#{k&2KB-!sf-Iu|U~I^vaxpkBpeVU*t9B&63UF(@DmrEWG7 zmQcoM@8|P4takyKeZ09d>d_8C@~+})ns_%2_TvJ%ROLPVQ#RDbvZ|Eom1kn`I|Zf< zM?n@}x;o$Re;Vu92b7;k#&Sax3z@Jy+}Z@%S3nJ!g5kGmYMjBP0InpyP!30&`lR9 z-$Zf%mbf&UjZ-Sj0E=_1&I^F?+Adnui2+Wv23viRtxp;syswDfnyAk^l=v5%ZL|Dj zgM??NNG)!^w+D^3CF*F-v?Q>gd&?*lY1HoXCi3tq!W+gwRnQTky@!A?@3P*!&^i?r z=={X1jQ1H+bgdBF_p!Y3apxKaYT#o20Q&TvNAS0zr^~3+z6)!*sLR5ol8Gd8-RV0q zP87`1nR|@5!P0i9H_*u7+{BiRTQlQ^fIK?eFB64EdmT`QV|GARn3NuHkEwhMmxTWj zR$U$@#EbUH%(aAb9hl*N(q)KX-YQ}j#tD7G7X7Y^ z_Pg<3kT-`fZHfOWftYr{!eDph$&jzt5=PziA4 zZpOb#Y~4;(E+qNhc(XF367oJKB>5A@Sf;Ase?ycH!u<$nYA zn9s+68*HKqi|qZ~*L%yiZ1>(1wx#z|$q3NAbOvVT;mY5I>l3d0_6N9p!O|NN(aFjO zYBCOb&$G9P<*zDOSZ*IEN$qNZF%^4K(rc&DxF?76$%9^RKFWTC^tl>1=5V&zc0rn=A{+nKovIV=fn?W@cX(?zuazydmK7K z4QzJ>ph$$`vSjmlzbsh}C$q`yjHFVhayr$DHIR7Q6TgNUEjA5a$p$oLo>s-fK!F)z zbykM#4;6!GHV@O<^Lf6`2=W;eL)Y+yTbR}-e&MBkI<-)AP`l8{AAwy=iwVh(a>h1 zz0C$okZYk?D-4XgX_(8)5BZnVsQ^YGL36-Xth7?U%Ex0Jt_#(gWJ7<3?_I-gC@qkY zQtPARu4Mh5&eSI`wE=i`gC{l733VQaH@bLb__GPw=Tg>pZTFbnXwy3FOUe{I3NKV2 z2sUo7xjw#nn0cP!OAzEiE&#>{&DHC6XPImw52iM<%P`HHj=9j#6qIKlj-+iaNX5Hi z0oLNx!}(88PUksRz`phxgh3N^f}@ew+*|aDJgSvXv2VfK^tGU>+$>FJ7C(!h@l8JX zY~xG2d@^|3x=+MfuU-E5tA&@gtYuj4H?eG}gWpC;7i*|JK>^W5UFwX#8*;k$;IRD& z1etLd64^VG*35}K0}lbs_}*8~8KSDU-z%L#NAnl`CZmxU z7PA@b!97-sgnZk0*l~Q5A>#xJ#O*-RxGO8E_0>A2EiB+ZIjZy`ytE0fnvFL?^`6xp5 z4?kKBb0S%`dwSTQP$G8*s)mC{|BK*}!juT~-wWKlIlJ>*AGb|LFX@)uqs;0)zDbG| zJq_ljr;RIT_FIhU=cT)Z>h5t^gSoA6>gmfHT`{3kZ;(7kr%oWIbTVxvU)LaK@epr* zSg%B>+)jtwv@P?84*!9QXGy*G3_QNRehgMFxol{!U;mZMQ%87mq)}wT zakG5Vi;V4}+8_%9??ahzj&GJ@;Qv@*(p07eTC%>+VlA;M@N?06YDq7E(0I)Tr{`I= zd`WZVJ+EVMogl@)k>?0tNu6D2K zG5c8{V(YS~dOn;fvzhf`sr6d~s0eBnI>79<%r52YWX@2k|T6nF;#nYmc zNWZ)(eL=oYPlV0FE1tKm+Q0Qv@Ji?2c$MQeoX_7#y+KzoZNJBpADMR38LrTRI7S6|oON0Fqkm^<3PsTZ}Pw5^%X2Hba5k zFa+vajQcES2(S7;>!3(iMVYX9)P5IGW8Y9{04n9^?}?O0w%22Na?=%$z+1!x3`l!l zyr7V`T!ee-A63$n&D&5PP;xtAs@PUT7Q!6UQLp)kzQDEytR;Nq_j*UiKy=oH=w0cW zh_;1#^6WXum-g1JB(_ktmX5jHE47icqQa>$zs(qX4l;_|@?^~}a6PmJjlv`2**L?V z;lTBFc+~v_Ds!wC@vCU{eMH~jljWjkwo}_fYVRlUBcRN|4my1&kQ`1R zj~4!d1J5;7y@gJUTpFXIRVq$e28H!jWo^Z`lB?&e&BP_VOO|U8PRLFsB)Sy*4@)ck zw|m{;M_E?k=af={v6NGvtXw!#qVsjq8g=~OZm|!Rw!%6VpuVcp{=!qBHyQ}FVE#s= z18-)s*cUQWqgfPAt;AZR zjTM-BVCk{Yi3K!8u#9Q*al*%qCiGw50xhL_Ae5MKrE{0OTD|dS5rz{Hmi9$o&4oFA zPl=+dMip9;GPA|sF;D|d51iU-5_MX>ajI}rxj%eht9r+31s^du=T3XNV9~osqArgd zxS|ms77J6ljOEX`e=_X-0kfX z>JcWe#R`Z~bPavJu>1?VNVPfF9LMjTr1wcLMyHZ%7KN>!ThE5%cU;o?xrD^vVkzV( zO@74)Piy;s#m)Yb*&&NACKgF)Fc9&9Q3y6C%4LY_;dIs0YITHrq~&Jm;p8f9)iwQL zqU_W^gMniIbDUOhip}6wP z^{!OgDq!o1+2e_V7*JkLjy@AH%duKmoSFGIDO z-h)E|ik@_5w-l{}x4Hyoi(itai;9=@ew4i&6cO&9a-LGRaS`%De$>0b;N8}f79~1? z~~yAj1p6=7x$)%oErJYihO9$Y&bM7jX z`m+talcOX&;NU@u;B6;wwl;FLq z3EKLNVdt@mZ6Lsuz|P>Hm8qDZ9j_79>KoYDbw4VmZEXeKymmqHiGPsI6o8s9*YzDK zoyO?tk0!4PhL_~5quT;H$`mMk-+n$$IBvoq_V8@MOzYqnXkA5Ots@qfOE z5(z-wQ+xfE749T2O>-OzK-UB61qg(mcTl$FDi_U73y+R^L0HI{BWIh zaS5Meq?x17Y`N78K99UMv0=LngLyo@%dwQfJ3}Pf_>_ey#JVw+Yku)t-PMLs#q5_? zrL{4N_qbqYGyAngf@q!2H5r9sw6yUv@v+~=*HbA(Ot=X;26+RZDs>a_d#-JUHM$1_K_6R^tO z4IfE0UCi|>5{<<(RTJwiQcRV zmw9qY6~}>5unHrr(`9O&u50mB7EcmWQc0CwJ=9v(Jxud+MwGnP$LAfn}}y7oZ#nL*Ja~D&QjX>}r4Sl?VNye1q{3kS!;v zki~3vQ6g|*o{`bif*#e%5+DSj6~-(O&ZWvcP9Kc*GM`|(6<5b6ui2{srKXq)oTDcozbXiI z3^S3>8ve<8rU$`0d6VcRZ81P&+Oe~{@*++~uTes)Us136p@xsO*md0}>n0$&`q$8J z-Q~s>l&9pp0QXGI0BkMUYyqEj6RT6zOH@ftloKRZr1bpd_uoG)WE-zat6v2h20BZ* z%_aHI-zf4vZjY`Iu-YWj78i~?{a_??ses2ccUQgZJK+U!j+)5lag)DyjL1#4b|y2L z=A8L)J&j^3+DT9D<~-&5UX?KbP#tMJr@@s9W+Hf3gjKY&8BAcgKQe8z#b=(em_e*R zG#Vdc+Vxj;H}d4$y~U1wYIJDYO>%%a!Abw>&+iIi`Y8WxX+7n$gK(>Axj0AbbKnK3 z$DCbqe^uG8&T)9sGm|B#8%E7FZNPxdL)7g>F;6$S|)M)Ik+zj1~Yo28^XHUEmGhzZ!E7*r1>)j6C@dUV-US=D>I1uM>Jfb+8G|#qLZM^{Y z5yoBvuzFi*ZYPm|SGsB2Fbelo1dk@LbD3}9v>9lGGg_rnt^872|Ix-@0q}=6IMu2N z^R0}aQ>L@AA#rmi$RhyPY`lrI(UyrdzY7*?wPo2X)v;EO7kW@jvbh~bFvqSy{y|55fi%Y{Ix-#R>CzNEsKT%@WvUR=$ZEkXNE8E|x1 zRi?=88qaG~xYZ2WUaI|8o5Jm);SV|`K3;SljkDSKw1B4FpD>jY)G^|{hv%xe{z87sp6OZ7^Mt;;=?bt&e=wnsUO^ofgb%! z>1g`FT1&M)5$d^krdL{Nn4+qJvDW|Ef#5k|UA${)^LH_DE8kzul&II(vOAqDDbR6x zZ#3kiF?f9EgAxX-V=(qeYW29wc1#Yz7AcO(p;IOOf|Zm6>Lch+dDZJNWVzrN+xar7&5lJS2Wpz z4~}PIra7zaT058vKnAKgL^A(C#$A+*jFzVUs`C=1gA(+9p(ySXAADKf34ls2lpem^nQb!WMqTsPg>LiAA--Z#&q#VN< zd>VT1~T8DElYoeSPj_#sa~n-O5o|^5za!G z7Q7@D3poUID;9k<_@GMhx2CWB?e{Q@Mx~$QEoyWk_OpxnM8CwIuw1$;bGTvh!rn(o zvfH|aH3tf~J4hdv9z`^_VJ z*98v3i=5~i;FH3gQZ-lo6~e%%BNpJW@y({ix1oU05tl?CqFAG4)5sfivA%GU90>=PxEUU|jef`L1;t>Z&|IxU7J>7w`t!$}9*&JAr} z9FbfmGu0r>r1wdlVRg1NG+QcJcqEmbHlWrb$S^VSfB0Pggw%mEE(Rm4FOvFM0kkf^ z`ag4d!<R)uN6N%f0-y2q1vqu{)xqOa&lJ>`EtklR@(rO6F-)I;=6oC5zgust zrR8I#!TsBY0QevE202>Vu%`{^H^O?EsP8Utxj_c~;uViEvuVjTeuwV(>3_`oGo{X#$=Mhe8UOmZa&e zyVCIA*~Xs~8M1y0KD5#JA?zsgUKtteHg?iD3U!Av1^ z|E6!HI&|ul^^&*7^U>OYPf7>7Vt~!i)r55V`5*tBY~b>*EM$Bt`+~6o z&%1RU$}Ichil`qdq~=mL7eU(wGx3CjRURubfs;lDetP9^1@DJcN#(=R|y<1z6zP92XAydU_Vk<|>QU|kzmeMvr8v`FW zrGGnq-4X?95JucdSu1JLjAcX@XWfBJ&rt(O^gW6GK;d8%tEPs1q&%Xs;omO)m5{(C z^XxNCwo`1+?RReFxUOEY58>VtqMVRhSenua^5T#O z$CW4$5AUkx*Tkl-3vBMovrgpY33Wk_r^On|t zS8xaDx_V8R^T7Ugk8HbbZ`XMJ{r~$5QUZ`z=>&e_`fooJ@g3;#V4?>9uRp^l3OGO@ z!{J%|r&HkHttNlG$?!>Z_+#jQ-UxrcCn5nnjskv!vb}DQ{`Z$`#}Egw;{KP{TU20U zBiPxK{C~K}A4AC3F~tA-%lu=UfBp?@AW(Aqpt~vc->$|7jJgW>zYG}orypN{*^Veb zC;R)c_~%9bcu$p}3iIE`EbtL%x)GgoM*D9w6akF77~;Q=`NL~}5s7(o;2*ctA9M51 zDBule{+GG=d)VF)uSzLY)|D^+^(z6w=2bz#H@{_d8{8lVyOr?6K6 z`wcGcM}Qz|F#bzO3yze83m|-5G!eFS0NU^?tITAnzM|CwP<8pp09(Wy z$wWr5tY+(VpI4eO@C={_K)H79XVPG~(y3HNBPo$UrdntsM`9P9q!_^Ea+0?_-xodJ z?WQNKPb+KFeg>dp%&DFLJ+CV%t*!5sJPd%YV!w3%mT1qnku7F%roFP zVl{O^7{*~TTwK<;uD~N7f3Df?6#K`S=6~E3Ym(oS(D353M8XGNo^N;)*{ssc7pld8 zL&Zmcx*1Er?P}azKwDqb^~&G`$e8$DhC>N*3w2iXr>zgA`ol@npCmJ)Wp&s9wHmdu za+y|1>;M25%>>B6oQ(Q?Z(TM5$-#v_yyA5L4COx8cYX@nQSO^QfXzr<&pTCFFNHO5 z1<-B#0jb+Ht+J*=ER9CJECaV#c`sua3?C@tOa%Zt8sC zgQ|jh*!Yj}5ik(7twnUx0JmwK7!9xWV zm$lvxP&Y670x*j1z@hh`EmD%L0sLhYfT>92q0p7e$KLm+7 z%jIm{F8}qPtl6JO(zuH-%E}jdbofo9&B|Jofb#ueMVQFlnPvimu8$#MVYgeewJnu) z^H%8HA8X?uE2pEd<%e&U%mkRKzof<&xeu}E|;(B z)lL8nk;TYtS?Ej0lo;ZD`!V9&hZk&Efq4c7^dObN-7Q``2Xmm5d(lhi1*=i9=4Nt} zY`M|y;EpA$Y)uFq6ZW3{;~Hf8p7Rd&4?fSs>7w0OO>LVsc0h9?9^e5`gzfRmSBzWH zD0m;!{|9vIpJyhp3oC?-0jDx%FW)>xSjNLVyMN?*3eMOJtiwab=dkCeET*IIOH`gA zlSy;u=Z--DBnej>ryxF6!NUh?g?#IA+5rwV?IO*l+TElJu#(a1)74eGkt43FF~R!< zAR9AG*)p8Sl*d!1p|ZCLka^Vzske)iKW|@b`lwyWXbUC|deWKjNskUb;5G&vHUv-v=RNLE7Ieb$#&1anmX`g`-g$rUF^T zfyj5A0AP8Vy7+6oR$m-#vT}-lI7_jMGyp~(5VE0$y6^+!J+9qm1D8WgqZ()3+LTh) z+?MR>Xt24`RI`j&Q=PF`vG1-iulv()3-M+y5+9JVumH5@uj(m*0IcWxLwYm?E2;Ol zo`wA29^q=gFMV*Q>NB8u>4G3eg&GEJFkryfm%ZI$@bJsrtaTE2AC9W9G&ldDbNv6- zpfe$znZCN_tERCV|BoiI6FyO2_$Xtu0aEdTsUl^v0q_vKn2?}%S^CCx)(+AC4eIc# z3fLw@(f>!+S4PFLZQbJT?iyT!LvR8Cf@|Xq1b2525FCONGz1Io?iLyg?yiC0?yqvr zJ@>osefN#gKbkS1s9m*Xt-0o0bLp_M)A0WCS3a9wGR|=6)8V+LgW`3OLXJA|Ym#>Xy3)+fl4~>cE2p5 z;Gc;;-)=4TwE5f|s{tmU%4$Ej%R-Fv%JD|CFXp?0Jx_p~5$`&~I;@md{uS3mj8eRH`r?MNa7|X$;j>JY0Ap#r z7FR2B1g8aQCS`bbnRvvD%ypMXzzee$@rvwW6VqrjPqxYp=gy$kJZ9Ok7k!bLs6tIe zdmWKfKY5cs$@aGG9n;3u4JE;;Y$IS}TH~-LYVZOC2OblCAbs5PMVm_G>oWrth+me` zwAZayc>f#Li5aNR#S*E3PE>(v`iG8=C8qeNA!5!yo^IAE8z28|67qlN4HK^b2v^jS z#YVQ8*)MsfVhyM>k%n^f8yffRXMhUmzmdlfFrunfF-c{>^-_!an0?FJsnnf z4N5W)5P5BOW9Z{j86;ww#T;={8uBAJL8Vf_B4SLBlSYb|QGX}o(MYNF?&>B#zGE!G5-Ymz zr7EZaZ~?wRF~PH}dgL)l8a;)!W91y>Wp(}34`)21Um%a~BJ^F4@kicBpG%M%*8wd8 zc@;0rOXo#Wy<4?Oe;wCcCcob85Ff-Wv$tKvu$SNAVs})Lvz<+^p=_0eT_8}Jnbl3z zAvbUU3Z6)E0;Rhedq+s}q=#mic>pK^emUAa6ioLv!K92ZO-%VBWHsNl*02Iu1jR}H zB2@|sZPNrd$E71y-4D2Ye6c89Z_cp5u<-=3^;)at#fJp!Q6NH7-2dI|_g53$xK~)gONl8ZS z8iyddVx1r8k?Vk)v65b}q1R4wEaWXevgFx^`bfT;t|J&$vg)*4)uwctjb%w{gdjI{k?5DUx8Y^s=x(s0%mbb&l_OgcfHn8xr0MQPXKZ zt>CXS!~ZsVXdFi=Dt3Tex!t2(uDOmvl>sA-Raj0->F$9KSQ1Zam7R`8{W_UroP*uK zYkD0R>;=r0AuY+f;neD~k1QWSD0q24Pz&#S-9lC}7PrxlIZT*TI7x%x&j7kUy>&IO zi~Pf6f49iZ@|Gas7&%}7UV@^Hbqc=^9%%t}1llTIP zG~aUKe0g$j`uKJqzCsqy2^=Wtfg~+3)ahHlZ-9coZvkSd6XWxS9;w#2V_b+1aT8|8 z9KcN5In)}w@Ko*zMMJPiVbd%0bM7S}8Ru6qB%|Gy`|qPif(-&v45>SO8+Z`l6K;6= z`|{V6_k=)efN?ERYV|o9tdBC@01l2kO$x==^VoHp(r!1ihC4qM&oBFKGZ_q5rNq~MUIs~Y?^s(uevTD`u|A{t7+nk zL!&hhoRWa4B4f-0u>1sF_v0Bn92202&5-oXh|-1JzH3oPEZ}|@SG9T+>g6Jle|38t zD$eA#J3`!!Svo^474`!#M!s^&4KOEpIhZLGk=U?@k#7LvFC7kg3-&bW+mY%{yKG^v zIvg^HL+hGtz|BG>aVk1UeEd64I1S}PT#11Wv3~qN|G8Ww0VZofm0z5@AqUu zloq7Nnmp2e`DIF3%<8?%w-W~^v4A@lA9Q=>ky`#p)#WI77$83hP~}mP+)D4#gwc1W z8dr(#ZFFi%9+o8|n8dPq>T%-C#1>5xijY26VaVO46!RChzxe?KD(nvJS1Ao#H<@)u zKt$C5HVh}y2xLK_P1^}PVNJ`p32ioC%hI@=W@KtY@JURaKLBnnt3g6lR3Pyzq{ zqGBxoC~Sxi-(kgjmq@RO(?s^izWyr7{kArg2XGd**^pp-2c*V6UI5#-p00w9d2mJS z`BtjRlS))2rQ3w~7!B-~&S4}f;fr3%1Fio#$JTLFX;lk!H}sO*O8O3>^wRX-?`;vKV$Zyw6J zKi-aW4y>b;HEmE5;hGQygoCQ|#fi!mlJtXEZC_8+pvEH7Fvf~5b z^SQ`|+`;0BG2n-RApRSbd2y@j0Vdc3?tq(MqK^t^6RAI#*l9z=>9D-<02&YUi`FQC zNL*a^pYq86a|}321)`Xv(lzy`0gwk6wNx4uDw+OC`V6dz8f8+-%cPGfj_nDUj(cS_ zzAf>{`}DEv>lu)2PUHXuR4aZ26&lHehzl8~s8aytnS$_xkjHbxj2;X_KjW%zQ@a;@ zmXk8lcu_%M9H|D;OfCZDxehqGx!Q5j(yaj+H}yh=2`3JK7yy(xE0YW9F^u#;Cp2qd zII}jVGvo1)<~7Jjrqnz#F1;*}S6(rJEP4x|JSEd3+wO3S1Qb2{V0S3+W~$sno6JxS z)sm1S{a8h(5{0)nXZ3B{!@2#U< zP_z(KDE&EtHn9q)UN1GP{s*E|;S-fBmkyw5#qabQPYi{P;V!xENse`%s)Vk z3I=N%(hg_RWpP|_C6Gc-U-h8rr+vuW?CKf$UiEq;D7r!W%4$AhoT1k4(Y(~SCSgmQ%y+}Ll$oB9JE zq5wwpy#|cbf{4v5Yx}L=gfx>tB(Kzhyikmnm-Y1I_-=^KDm z8Lbx%Scy}sv=q;sGGU;4))pJ*`aBx&!zvQlf?8ZlI&<4({yR!6iabKWD{dY~w(j;6 zBi-5-yF&IVW3~m^Dy0;1*B12}Y@2`VydxtB(m9uc zI(Ez54&!|T=f44a_vIRwoa4V&FU05n;N*Ns(VyT<-a+|$8IPih4WCX#W9oC^vFn45 z+iwiJdqRWCa!pfx3due}mE~5izgk`ZPmBSO>w{}54kNqafA_Nwa{Qy{$mAg=MDB|h z2e2!6O8EoYKxssa@$9U7lmVRodPCnlVVnSa`Bvk^$E$G+LEml5$zbnvHDOnR|EL0N zCUhm_555Xm6;}HOhHh?C^BVe`epKPAjEHx$i$q~W=ll(t_@oMs*;K5&7Mk+ zrTq&D0qWdJ#cNDuFDbM>d`zl!RT`Rhm!3&Y8k_zktFTwmUTm;sziG5dJQ#++03~L9T{uxvmR9&Eq7q!27?7k+0&vB7YeD ztdn8nlDxdo61x0z`=E*Gy*^VKA)67C-x@J9P(r+fNzzipRQ|%=p83W_chc;~zFQ39 zf8wGW)Q;ENPI9TDA@(lRGK_|&#JAmyzs|OMojsPcHsn54|5c-iM)JMB((p3<;dtls zpj1hg=3yjR$ZELf^-oq={mSw9l4(U$EZ{ggQ_M#zmRyWFu_LQMOnbJJZd`0dx}r>v zB}Hf2YA`0)>*uNRc0uFn71U5BOXr7Sy|-LDBP__o+&*J2;r~&Vq54xg6`^IoJV`Zu z@PJH+EY;Bfk|n<+>@JkM^-<9T#mwqIUxB$sIVC(88r*zC8uH=CyBupQ z;@Z8>`gF{4<^`ZX#GHSB-u|(d*KsDC&e89O40m_(Lnhjn>P^h&R{hSeet6I+X7Egm z6RH1k^ahd*{U%2V`@_qRBZgIP*Rt4*u!l6;zP|eKwQ~o{@tokV*B(TK9SF^i@a`<= z>s^-->GpI&$RgMSuns)ejjMPKNtazrE67Yb&Be~~Od4K5#Y^p(AyI86I}Go+{GX~Q zRRk0s=N)7&Wx3${KDSF!aG~j(;r3so0j4mhRUMh;Xb<95D-HIdw86pXzgZ0eSb>9x z`zp1BjCqwErDz@-hRpY?48qM6Kn{9+iZHYT4ZVL|1~>k2pV6i<1CRu-W=Ujm>z+?I^1YuxC0B0Zf2{WatwcjM? z@D@Gq-;)9O0$iHMYRaoDtuu{BEp3V`({SRyT57@Flk~AkR z#tOGU_3nN(o13G5wgD_;m|eiK9)DHmpNL8J2rfGIYW@rtX2phwjvi&V^LZg}IE{~5 z0*A{y*4*p=X50`V5y4;NEH#8v^T|m3Ipa3yz^jV82KcM<#H9b+Bqj7dD9*=_DlSHEca0hr_5;apI1$_@He;WGdVTwKc^I) zc-Ow}=n1&4h77n^1TKT?9Y6>o|KArA05+r8qn{hJ#?i^Df3Xiek^W-8g)(Rj{F4Bk zDFRoEIp)=Ej)?#|Pwp!GMSP3?-^4ef!%sj*yYSaqGJs<%Fi`5h2bv8c{+rVPOb7md zap-pVfahk3AN%V+C(Hl-{`QZre1hq4+W)NO|2TyHIZQNhW%YGAH3<_!Q3-==tTp3P zw6$&`k9+P=o!5W7zVn&$zjGhb74+P0n!5sH)R>PkuAFp805N8~M@Jfy4+cfTQbjqN zw!Wc^|NRwaI_J$^-~=EAF>G1!Yu_G8kv60hF~A@b-Mz^Et;02Rq3RIn7AuSAwix#^Yh0tX)@|F2gE^)4g|-ay+VvC8Z7hui4@42HqR%WHS3+#sI)Nzy>_E7 zDb8YeO7(Q?tu&-|E0!5?_sWynQq2;JmUt7RzuUKSSx1tIx^o?vq3}r*oy1Jt9M=5S z*$#csJJ?@)u#SCfb_uAG3l(Wo7wygdl!G)?s7MP-*(nuZ1Q^GEX{tE%kKAZZQf*g0 z)MPJ+n|pqaBNNJKLI`FE%*m3O8I~(8{r^vwV9k70`t!8GGeq=7A$FlP2IqH23E2AF|zMP@wwDV0LBi zpi(g)b;x~SyY`e68Ov0ySEaONv(g|nA8Cx*A-wX*A$gTz*E7I7T*{|{zH)tMa$WOb z>vATi>gLU6wO#gd&zt)4lctIa`yBgwpVa8IHYzZVyArg+rzt2Uzj1+4>+eHaoGs8r zlHm^q>q%jP9yVLL@@ra(S`Mr9CrW9iN=3zN_#;dQPW^nfbSS$Cg>KAuBYo=f$TyFt z5nMJ4-Z{pP2E~<0RQxRc6d#UK0zNF4<zm@Ph&l+EOOYP-so}Bm6`VKnZ`!%_%`%CcBrm{--pKS?*gEajju?naezSr(gKS#=}R;oYMnqM)aW_*Pe zdl4m(lc7U5vg@&|tIvgMuK~1nb|(;9roWVaWQ-E4)5 zq;(1l`xHTWLiwBPJ5-9)Il!f6co63$okYkgyX!meyM~cPE_5R}#>IQlWf_9XCxciz zCYBJUp~bbvVG>?lSl*R$^aRao0*?5le0{^_Uk>THtR4Z6X74!{Vsz#a^?1)2Qwhsg zXju53>2#9e-KA!bfVHYGk5mZ6lNe<4xLZan8Nw=4&>JKsKu*P1q`uXd%9#8T23!lwt;vi?Y?gPbp&-=~#$+l;&h0{Hy z&Ycp&inM6|ynGCoQPZc88ni1?r;qG17Z1sqG<{q-$dC*IbkL6xvrYuNataPNn8=+0 z`I1M_61^I0Kt(*oJ3U?>ILJ=c!*g=p+DM|%0eKvBSE)_XT;$f%%Y8O^Fx;8Xsp|N{ z6&flTt?vLD@@K_S4Y|qy7JE%@!`Puow}2lO+^N>^7gtxMKZ;9G%`U`z9RJPG-i+)z zb=Zwcl<0OU07Vqk*`^8fy6!jx{8~E#?e=Rg3f7pTv>5D6(?_QQ7Ua$dKC5<}wDX=@ zbiU3@vxQ_OL5YaXjdLl1J;jW|Lo5MAMLS zQu8~z3DNgDs|+(&;Sw(P3_}JfZzR0z!L(JFZ=G8?cJ;x#qU~ZkE4aj$$SFK{P&C;u z+1o15>9>r(#<3)4JUAHvVlebZxqfQ)r@<0$azGq;s@#RPPRO^kr#3k^s1RaGg~#qh z2gcDA#<4S2wa;&XH$%o=Jz_yyARHQs+!ynn!bfncKq-3PKSzU2y)U~xH#Ww^`>chH z%WT8?&TN=(94%4Oi+u{kGyvNq7xg%t3cPSK<&fMX6w{#PbuqE@s(ca9OyiB9YT120 z^1+l#@J$^u7(Ezfp;W#i9;v37?Z(#ayE9VlI8u)hP(KCIoL==hD z5BNg3sPaC>bv31n4Gm+i(kRYEZ$CEI9HvihM2VcguI782eMXniBSzqXra~s(!W00R zf#4;_6}>RJXxmJco_pVP-m9 z;cH)=qdhsbSZp)IFHx`lX3e^jgbq0;B!EpMtT;b6w%L@(29rly-SE!fx!jgNUyYN) z^z%K&ue#fj?~LUpC9!=ra;Fq#txc)a*76k-(v|(DoTH@kLg#PSxZs;?qPx5YDgRVm z_M-sO^w4FjK2l|yTJ~U&trF9FlijSRN4x4{+6z$oU?4Bnsd|+Yv`$rIgO|5}UT-Lg za*i=)eE8B;^urhgwc}f5dGZfb+O;ankHd*;jVD*k?-<>n{9_gkw3X!vhl;j>rFV-s zM2nwh+6%HHh6elYSTq;3ybCNae!K05*x&4zJWDY=<+9ykV_Xp*%c~fD|9;Yqz0*qU zU-Mc3wo_h4!CUDHeJVO$d%O9Qny<-EsBzbhnug~O_cR6T9w*BDKW|t%4{|S6j+Ip^ zQFn%zsz`vCCedBfv@IY_Al~EF*1oKR^ok`_E9IDUXQgsi{;<^M-~?fQS4DJe!~Mh6 zZs!iIra5;%g9_Ph%acgpg}vwI6)tnFO`^V>?Y&Q9>Wd`5Q%ebM8VTaC$ux3X2q(IA zM20G-$+_>*=Uzhw&d7F&b{1WpV*09i2|v*Hju4gkO@p2HW3QU8yWW_zI7^+$9u9N_ z-wSujG&A)~OE>8beKnU|UU@_zCsg~T~iNo4VJ>E4BWBt=ubQ15v8rR}BB+|!k0 zdTSQ8o&{eTZgFB=v6fgFlbwQRXtXQ#uaH`H0&e*_;&e%e(?e-R>G<^}i!v$kQTSLR z4?$V;D{D=<1iabo{*LK5>mlDejTM6v`a~me8A1V(jtj+RG8*Y*nR5z`kIcVmcr<;#1hg^3@RdA zR?X$Z^lWd&3B~SZuB<9&CfdvI3reR)z@=TuF!zO)t(~H~dgBG+e#&sJrAAdLORIz- zKC1g_RQvo!C99;4659GAVwdfms)vexCHGjxy()&AKB=MxLJMX0cn)znbOH1C3qkj8 z*Ul>ob=euzhHsx2d{hjHUd!FYxS89&1p8qWha^m+r~QV1VDIv?&mryE)X}dz5R8Vu zV0l8i54s)e`e~P=dk8_&M{?J!o!D@PJB}00N%o~Yr9ZZ`Edj?O>}X^ol#MMihHqot zt_G1JAeGJi?CQe&V$iK$XesJ6-yWQUxKA_k8-K=iSuqlF5t=(3&8&Qn$rkzhsZ*wD~ z($ld#UQJ=HR71WMr@I52^>-i>c3O(4-x*xglviV1YjLNTZdpgbA;#ZiT_mt&>2F z-$Sg;u1tb=?=mibdrA8F=r;@Of7Aa8g1_rSgk{Mxe3`GOQ_MY?(~DcPSCmn9>v3gZ z4YSHl;EmmoL#^GQ2L<&C?NpdwwQUBP;G7^b=AHODH9enQ5+d3+81kP4fjz?@Xl=%3 z(CO8#<*OM1_M2!L4C|@YFQ$#9CuI?ummW}SuxQT9Pm@UF(Xd8tFl(tM)=tW39m{v0 zH`BK-&N_*3Z@kgJ6yrbYO?ROk$TOns3Vshk1S-Kbo}S9eIJZh&Vs2F3CtanK%2Oc$ z*EdpO-z2!&#-qiZFeFUBYu(|TUkr#{y?*)U0F!4}Z&3aS-{`aAk!W93q0$+mg3ygl zLGVFF&$CqRoVHxYJ zssPJ~A-SFIBRh!o1>I+N?-Q2oG~D!;&B=(o1WJ5wEIe6}*;(2bRe);KlP~sdJmBlg zbe^fa&}4T!6mt*b<2iquR)-tA7g*d=LMrat-GS<;%sGC`?auc`)%lr{PEEW~(fS1}7iW__55z&-(w2gaMxjNn6R z&F=4qA)fLNt!I(LBI->~1ux*v3Ga_j%^3XqU}f}s{fF_Dyh6(*codf;t6rlw_4t$o zb0N-NfOOjIG_`hz<4P)oa@OM5mK{WX`(*J(_K@OaA%9|O$T$xXb=F<+;DA!C?Z;`5 zadVrv5?we~V*^6^CAMm^EW((fDa1S(Y z`f~Mp%77^r%e|c>T{<5on6S+N=rIU%Xq|maOih&a<$LA~p;`*D$gx!(Y5Z*hH{?Az zb^xk*ZV3q31cO}^yC@zCZ& z1%#!{`v@i$@GoE}ow=snaUg`Tap7SGi!4cs@ZTN|c)&vR7(&}4V2|~Dz%elGY8Tg&0+pkMQ-441S_80sLsX*QR5=X@F6 z-;x(3!3k0dv{1ex_nz$@7dmf!-yfsw{GmA{*rV-UiJsk+Sil@avTjORM_7Fm>^H;pASJ=Eib0y<3v|)p7zGJIg*4o!gF?nW{&$e-IZ4+ zH2hU;^13o`?Ck28eBy3p#{GGINfD#wcMx+|S4}t09}{e))46 zYqoJ2@b{o4oBAu(b7&iF#$?98Cs zVP`ER#LBEzLsPfoZtNQh>s#yq=CxuD&X%NgHO}pTl-~k@e02rG!1#4_p+Nz|1 z_rvTezq=TCNaV4~#-a&%zKy?26iMk(Au`jN>dKXsqJ_`T)(T}IamTzQFTl@ly74Fo z{4)81{M)+UIQ2Qlds$apXRUfib8%B0(eXCi3RgubZzIC$0*f)zUOmcr1C}3W9F6#7 zsF4?iM^aI0+MD9xX`@C8MvtDRjM%tWROYQ8a$$zV&(pv)A&^e55UIWTy_;33(U_&I zu68DTCE|nMrX1`zzPvdoE593ATEqDOilprpyh!n((|h8fHf1iz_624pFYLP$oKD$t z8Je1UEL9U?h5o(Bq>S=O>9?d_ExL^Mj*aY(ANy35%D^!LP$Ya(^o($+ ziruRRj62OmFv2W~M^3jKKD1iv>+~yTT7J0muIvJAVkL?W=U(-*kc7I;C?KF^u4h?m zbDFlWAap6@lP@_-qwagC@)i`wB;}q7Dm435qw2ScBS!;X0M@x^TvvlLhO?~KK4pU{ ztocFk5)8QZq0wCiSV^0f%QXJ~lnMGsq3f(NxAp49T?Oz)EJLn{1$F8>DP|BDaylm$ zws1_g>q5Ps@NMqRox~VfIJ4H+hmJy;>;`*fVIlTE`n*^~j=J)2_q^~%W|ALZiF!dh z+&eaSwTLlEjPdV?`FOO#_{>I_D(!Nw8@0iNh`bOwUFMK1t0@}vOVok3c{!GTMV@+Q zJj@a{i(|~cmf2z|QoWshOz$=^YG3bdNkK+=ltp9%71}3oJ%)tdPr1kXaz)QNw^oe% zo~axO(&n~|(I_2P`=u89gM_6P+oMFG>RanolydMupq$IjaTn3}vZM6ZXJ`b;>-44P z`)pu!b&apa_56kcm|p(td)%XW4I_iUEo2#H#s|8f;kc0!5E*lfe*~ZBlH1?2J>R<_ zk=o`6CGBBZtw0IDU9gLL?t_;PLOCr%yZL2rFgqsg4XWdylQWnp`ZW2ha2Hue(|b^@ri`{lUL&q z!7~wr0?zJ<^Lw=cD8*ntV_3VhOt#LegYo5r(D+>Pvd|Et>H0Qln z7Sot*deyt*Ymf!lLBGmJR*qDZg97AEh2|QI8I)h2gW`xQo@-I#x9O zpG?C?v|}z>AEF)0r=^7L;k0T}z8C9P|DMRAL(33g3g37?heSfi|Kw0r<2hDTBx(}B zU1O_LC(XHvid7`7Q|6S`^m_^H6$TlZX8YDTRS3r5RZ=HVH*!LwjMNHpCJw#_rzUqk z9jUT^v2oF|{fREYvpCU&xm~)tyyqU}DfZhbr-7;muUr*^xtV3XA)=t;E6pZQ{q8Pe zFi>|-uVPm9tGam>`!5!9Pqp)qhKy29ds7ayjY?_SGtMF!qtPpPZkdVQz%J(nX26D`|7m3gI9&4;WpO|^~iAz6)PZf z_s?JW8tqoZuaMlP>GnX_?`RKLwQP)Eu^SL2UI9&D+A=r;F*SA}kpD~RZ+-b69Z1EgDX47huD!D~i`%n(aBG&Otf^BK99al-;(LixRO8Q;}S0i8Slp#)YGB^X3?6>9#!!HoX(M zVZ|a6@}|5MA^7Fx(>!Z(ODSiHmJ@QlTa=v}wUzMk zS=)YtqgRG)vUq5JpR{2+OjjgaZTaOTSAVCw3k7wgUQ1q+G0j1tX5OIX7}Ku*K!YC0 zHi}Mn^_`bml&*f*8Sr_XHiq_)v*WMR{>n>(yw}Ae2fAU+N(A1d36GUCx*=??qd?Mnj0L_&0tV_c-YnnaFvSOpUfkxUQAb zUd6RX5T;Bhw_h}~%In6X5&*Uewa8yG*~;jv#i`+D69?YKizx9dR;eH_)8?w8y*KBP zUH?Kz>*c^mNSr5Mb`bdG@wl3Cd85cD;hb&nmHh#7S)&m#uO|2?;zTR|VCPCQIE^_3 z;gJJEvywU!sGiZCE!7_OyFO`%3FCHa;A<3CbfjtMo>6ju0i$*GdX(R5 z^d1Q&L$;12A^=ypZ%f8ZB@La1XyWJ_3JmF_igt~1OOW~4<*z86A^22Ocn^xJJl{cX zXyLMY_GYYqK2f$Cu;h#ezb0C*srXO{yY$@M0}C;W?&y`Ia3h|&&is~p4sdE*FE_(d z)IGER#lj9sdfR1}vp@6($3i-z#<)Gq36k~EN_o9aXBo5hIdfK+^CqkXy@4F_WkQ8> zZ!AG`M2KIOl%T>-M)B`jCd zrEy0ZQiv53Ry2aKP`GBdaUsh-l<_m-yW99+Yj3P&1dw03u>=gQqbU|sP@FcmWVn^y zH9Y4CCfTG13Hp2cj#C)2>*ezlVtE_Qp^7kwr$THPPQP<-ZY!|OiW{Xnx5SEm9 z4!hu^);{SA)_9WK%w7~v4aD&`Uj^E`b#r zg5W^-A3zWM?GoHmWpiI8!IiyTeNN$o7nSt%0eFN+aDmBk9oz+(?@UCDbpjp|Ys}BU zKn^?FI7Xuo&~Kb$C!zM|2*L73BGtx+m6q?iUtfH9_?AJ-p3?i9P*eKUDmA7;jDZc)B0Z?Mxto)b(M4V>DxZliBQ3IN5>N$_9e3XkpxC$P+1&KtCnQs{KZ65SngGfurbj zLuSNOhJ#H&kG{v^fcg?y1r>!#6y;X~%q?tIxNwW;bo-9JKfvW`Nx99eH;T3%e_D&} z=$A@ABG9OQ1;K+lw}PIL!Emj4te9DAWz(hvFbDOjo`lpJHz+1@K0XM7rsQMospdVP zC((DCvqXFhE$~~QTQPnW#PSaV1u4taPn;AyCiiaz2E0|7ds;4Yz{D(`oMD zJN&D2VP%@Dz3;v<;nqB{Kbe5bJT> zb|JeMD(RuQ5p~ zwSvS9cx=~ANmFpgS!}j}u8S!Uxzco#pq56qC`8anzbHWgx0*iNBD9u@z-r$4<5%lf z4DY_`AeIr-t%C`8>+a=yybdiN?=%vOL!mm5)int@ngmhW zFz#b_Bsz;38RT|>?2H{~eg<==_kD3E za|WY_hxg!|gU~||(pLH4$xpP`2beGR1188(Q8JPQ6$`&38g5|O;8BCYeeK!j%@$W; zpTsq%S&@A!v)~ABdS}2%UX@^MRZ#twN0;yEF;}oh+S#1lj%9_*-(){=m@}m=?T2Bz z9Hh=rj?ycP(=V7(DXG(4tmeHE6>3q?Yl{Nam2O#T?D_3s{zE)wip0pT?cVf}7nA2m z5vve+kgLq{Xdm|G#-Q*!m}%$@Dqv&26D_xc^Lbcevq;1=6^E9lUS!+f(o{XnZhKJh zSwZ05s6wv?K!wwp9L~9{hO=qD!LoX@!9IpvtR&LU*zF~(?-bbjGtqN4b{dQsQ)jYfo&!M(w zN7BL5ASDykmM=5YxQqfa*KI~&B~9Ue+(vBX)k-f=1_i9)G4DT#JJH<;v63K0KPUkV z8KAlH!zgK-k90(hn8-Hjk;TZNBoQVj7be1Kca#icQpfE)JgWLUq4--O#;6gLnrokR zr7bhw&`~4;jJ`oRtd}j=K`&PL%$_cJ+z@of1SjoU?|WDl8AiQC7LXgSE>J3eNW5qnQa^JJ*pJQPn1xqe?B5IZ|r zx)BnkWFZ8-JjzdzZdl_ zUF_Wx>$YD1G@jEX1P`llI)Qp~wHy8dv1N+=#^Zek@@}FP8A|5NcKt(I$C#oF>@J*1&DWo2~i5GX*$eY$%!* ze%*XJ@!&_O_x>JK(UD(dl*CFP!W%-E$P>SM<}ZfpcyR&-;-oi^l#lYo;S=f_%AWkY@Qnyp`h8~%x- zET`Looi~xAcmM{19#%j{@l!uB<~_X6bMVpJMr&LUG-y9oYmK3a;7@Z?!sh;nJ{L|e zE~`Fz9hz5r?6l=4t690G*0KsZKi6yGsVnK$pQb) z=`A1gfX_2~!?Z<~@U(c6X`&%bFDe{fkEc?(On zueo<#%3kJA>YTC6dJvt!XE7Dl_$r5x+~>{LPK&+2#WDrpdu$a24hc{JaOp)o3(>S2 zg>wD}sv$UJU_2%KK4vyX-6bcvR?uQCTPSgVvX6-sulH6p(CkmiBXJPHcUQaFb~CJV zVN{M?@icR+R9I3lroZ>MiG^{yeRk@Ve$zo9uhQ?O3+M)AOkxfqKRDA~L@@*+m99Fm z%ln)+o{GGFHmU?~*Q0nr}KMBi~J1@NiXo zb0gSt?oF^XoV6=^cMm5&+gO%BJl@pQq^Ymz5^?G^M~ zLHg1RV!8o(kG2(((UesRIHGU5iV$VzaY>QqbTUsIbQ;faMWoB!pYSOKxS3??61n9b z{K&nCxQDUvpN2;35xzL~9QT>Z;PhqwTKjP?=mhgviuRaTlk&_U?qe6u&P0$Yd zum456p(g-}EPM%pwx~mXico(*-B`Jdh|LmUvm=?CoQTV5*S{%u3=~z$iK9PUGad;G z$&)Jh9O@=u6!p-2hu#qW+7Gi<8peLTB1|R>y0IiY6tW@la-md zPw~BbycTd|Pitrf9@{FjW4Q4>hh;dzIsflUJG*nV-gs%7M$bk!O}#svnOW(z)lbL{ zvE`W~g0=N?w3!}yso1mG1Y?3j%lM?iMH~4-@d7)jH*onzr`q-ba|)}O%WP>byRDSA zE5u?J>Fce=%Pu`#eRIJp8{Qa7tcm%gNY@5fzg>Dgh`pIXx?68PxB?(oH^0oVvK;pd zHi!8xzea@$_4BgT0hH4%M@+`^;Y;cy^%SCqeIma@>7m=s^&aB;BZ8y0u{$9mey8uQ zUKMdb3on{}YyK z+d2IE2^h#AuYZ@SKTpf1>bf&@B?-@JPu3u47P_%a)xYUo;8*rr{)&B{3D59zOt+); z1XJq%E&5JJ=->#&LaFs#3S0!O#RV?2>ARSZ0pP?~((H9|)><2Dt#}E8lj)(lqpP3> z1x_myQu)l;hf&d0@>_7=4>X)~oB3;1RIeTyGFa_645Cs*!WzbaK#S>%K@Y}^VBbPj z4icVinyc)PuU@;FDcVpd%cg)mlR`nqRH*KK7Z?AKE|_ zc2oVJk2kf|t*PI)D_%97W_Bd47S|Knt&VKwg>%A0-yNKl_i&`|1bW}qDC3R!E^eVr z#|B91?7FF;c6H0%w#7@4Pc@}=#AKOhj*5s=tNycBbVeZ)>M zIBu^F0`sA+N-1i#_n;-Hd{~NHa0Vm~#EYGAbq=`mBENpC!hX2^0c|MPUTv8=SN$af zjz5Sf4DPcOlo3WPl&bsPH&v#;dCk@X7BvE`)i81qO)VF>xZVSBR ztmM=rLU`EVWwnFwHCFALyM|4VxQe?`#ma9pl<5Y(jr^Hebd6L+e_y+egX)CyIrN)Q z6?Un0rJr)D`z#m%d-*z*k2|n)Gz*pQk6lhvZ~pbLIe-*7;LLO##zsKGyf}11N|XH% z$>cH)WtS+(qULX`=u8?4oe7ZXb66|v^z{fiLcfh*g>G61>=L6T;Qbm8MY5JNsxOZP z{BkO1PsWc2xm{gvsio~a?_n(QWpptd2J0Bi_zDXH=88FWHcZJe>XWFIJRaaav#D;H{WsZ~ zMiMH&KgK3yjz!X9IFpGU#rzhqapXvKPN=4%F^g`L-FP7NzY8z=8K%*8rhtAI6znzs zEoq@j3H?zA0q2u8jF$8TTZ}a%3bQV$&N>EF-WIv*=Im%3Gg%4JgFjo*f3cU6C}-0O zR_(A7t4K&6o*U##R1o<9)5)0gBc0p)=V2|Yrf4D{^Zf$1l?QB>pO@JlxqFR{7hLx0 zRQmu&i{txuvv(!!6sL=RRJiQ*t6 zu#<LYGOa2zxh^xRAgD_ACVgJeJNB#)NxGxpb{zDq{H%-1viOM6^ z))^o^FXAJxr5w3>{{2vZTa7p`pCSK;eh2st$TMUvo3tmLpgZ4R-_@@FefLap zP^l}5UgOb%^#4!afFOlUnx^)i-mDq4+-x_ zmQ>5?gvMC*8xDXmMqi|qQ?IY+)mnzgbdvu1-{7tT+<_J|lU)*rWhwSs4|*!$|Bx|Zx+ELd=YdmxYi!QCZ52p)oaaJK*lcS&&f0|X0B zaChh6?(XgmZzp$V?)=`Jx$mF%&#QV>)G2D8eRlWmUTbytlJB!yx4N}bQxZH#tWT1< z{jy`w)FnhEo3vq+3^?N3$^cM1#8Bt;Zj?^|C&oInIKTey@g?`~_ZH&#$V- zb04RF$_b>DwYbcbTaTWmyq^^obO!Qr4MrG~4WF938yM=}K6N!a_HJZ9@6X7jSs(bx z+OXOpe1QCFy~^Bt?+i%Kj8W^K(s{Azom?Dq+KJrL)$G)}ZH?zzY&@8t{VP}Rq97&; zrq&+0um0(n`C^d!#|3OZ=lu>+Fo}+{K;~}CWa{0z%Eh31l}7>KWMpzn0gC}%mJbho z+2{P3#`L%`Q;4TicaO?Z;spKZ0K0rTE%yb@!Gm)_)9L}EQSYLtgmlb&jtu~zn0t)S zv!AOC^D8~wL;6F%WcK!R@zxYdb0bp+LkHB&@d=AkEdvLS6~M`KX}w6VsiqVJ!fZ25Pg& z)=sh~UHoX?O=5wKSV z5}jU`doJoW6aQQ@skW7mP_456K6CVbP}F|Rsebj81t=AGXSjAN=+uW-9{-9)a;UNL z6WJl)2*D_2VJX{su-jiZ-8maEV9d^`lojO;5lD?zZRghF+)96ag*Q2MmF19`6vZs+ zLz;e)ty?VLkiK;{^;CYezW-H`TCLGiyZPG|Ps|VOO$Mj^w4{m#t14ol+IjowDeXQL zPs6f#T7prUo(o#Ch+o;au4pcFQX2UlwL8h1jr8?Xt( zd|R)V7H=MwJk^eSd-87dsmw*=1Kl|g`(RuUy#6pq6N**Sd-lmt+K7{y#f?eT$Q}2` z7^9=bE7Mr`8?x;2s`!ICp4cq0_I#I!&!zbY{%7mwF%z?C6<1qDx5#b?KXfl$I^Ns@ zR_MjUb;6AeW>2xW+zD*;k$j(WzJK4^oniB?Mm!xI3MD6dVUCj?G@sR^T$#ba(Jg*v zDW&T|iDwU?gR^4TjK}uCgH@G$&$BWn$G+s`8UpG^#B}Ib3JPJ=q%47g(^jpcQDsz)0y?Co6m`1>&t;8AvU!yio8)ay<`#{X>3vt2`?mBLqjmQbEApXrpDNzPQ-J--`(P*;*@zdDR3{1! zNRbqNqxL%d%l_TZ!uj*7SKZ4%(aEv zQso9AQhxROg;59U+u$l$=la(eavkj6DEX~ZSCJfj3m>>=+?Pu$4o|c-w>V=UiAQ20 zZJnWa@~dn7|5&7aTh_t_830VXXrN9FSbtea)p}})1)Q6@XU|C3i|Pm1E7v;_u!`=A z^R*e2=o0iN2AOxLbC)nrVZ&QOO%RqAw%SX(=F`p8!tHA3?y$3*7iec?x_lqR={nCE z)rF@kWH$`nBrK&}`{o`Z^tn|u(R7|}VX0baY;20N-_s^!XnGv&)q*wTo8blB<2Cc} zMS3-xRE52#lKCqIUPq6iI|>u*XTAkzmcIyR&!^vgyad zJl!hnm6KPJEwBBtVqQW*Tku}wtkd5b2HOeSz6@tFnVuHkHinAs2@hhp1#)IgU)3auC>B{T zKTv{zOxc+-_wW#f$B2D_1Psr`l$rI&$3A}+mnJx zS(SUfT~r%pDppGFDe(|N{o2#u$b((t`~_>L)oql{Iwa9PiT(7_+iYI-*;r_?(qra{ zFOtejK{~-t1spVj`U?&H7FsW2Bz~!7};Y_A*7^ z>fA~byi1zB(>zOvm@Q)kTL8b`M{#}?Hsy>gvbzVY5(TG_h^3reWs(g+j3MmFO*+pz zjX0p9AcygC34@6Modaz=(s61cmT=?SUV~o8!?%8^wQ}*BG-*nQ-SLyAp3F~jP?mXz zPD?+Gg})b}o=oNVTTkfDDOt^OC46`Sk})d%cg94UBHH`3;xQ}cR&;PYKxz2biSa~? z74^T$8ZNNE?L8tJC0Nc@X*6jyC>v1^SfPv$dY|^n+)b``TP#!rBRDj&>NdB(l^bgc zb6gsTnX-_15Yo8v$BgECte1I|*4bB|cr3}FR~q4*Ed=-St{H1(EwkFj(Zwz8?>4=8 z0f|7(mqTzuVA_9^fs*(6mF!Zq&3dOQqy7T^^^<$C=x1J1j~^@6)1fW7teOfUttf94 zn8GuCW^^>aJ`^;6d4lQFAGchaBJ5(vP=!k4a!}W}UQLPiA^2u_o}9iduJfWy`{IEq z!4U79C{3}Lx$FFps&w9}m_E_{qI00JAO@3UUNfESo82u|O*_H&m_vE;_6u>j4H%Pw zO-sCI5>KSCf*=I0o7k#F-J+$-N4}8Ry2@tlE0q;v!pVu}%GMtbW$!gqHP)&RHO4+z z=@9aeoRjDcXnoo-9n8OaeXk>@{BZyEtO4iN`?iH3c5v-ugj8lsd|R{uLFR{aAD7-` z2{N*R0@-!(-$2F}m%;JV}uW zE-Ba<4z1Su-DRYAg|Dtzd*VC*@!XA&%E%pJjb8)n13K$n8Gury{t$5F_eZdLe=i@M+eQi@7Ms z3uC~oh+<-heG+PA_za7Q@$7{{e)@Ynv6z=)J6b!9*e*vG$;MIKmkdt53$Nnm{kH~= z${dW0AM2|*?;!O@T;+jv9y$I>h~*e2dO>(b76X?yl9?|43ZyXuX8822D7(6onKbpz z2gpVv1*R7){%|GGtD1!EP}tW(*N68rAnq^sA&YP;U#`s$Dvqr##eAXCjPem4X2K=< znO{A&9j~3cjj0=P@^?CTgDv-;?!8WKTU%0|?{PDI9hM3e#vP7mbLI><`!)rBDVti} z3DprkzpSD@_q86hfNXm=eB<5Fq~zl)y=h9iolSCYW}cVV01C;_Z^!@a7b`!70ykrq zA8k;vYx5H=1eSS$?S~CXojzC_fh%0sb^F~qcLiytk9zn~H}1vlOGxUG=Hq_iK@;Qg zXQnL%fYszhLXj8uZ}47QDx32kF4Lqe?*PtHDqjTjxR2Q{{bOnjc-?QmB=R|zT?&wL z*`!OT32QcaJk-U!RuE}xZ|DEep9-4>HTw;8L15H|kWR9kFSBP_-?zYlHtTIt(0**8 zi<7YO)uhTlkE4O$7}b#M)QqU!@#Sb{YS1ME98Sk%Xi@6e%}J6~rFCTW#Jnk<3Z2sH zt}QeBOe9Vd2GZm=RI49rwbWT?{(_?nTIU0c;1J+d6 z^0Oz-CK}lWFFSckC8J-~E?S@ln=X)Dl@EPVMd@e?Kz%eVmg?r@lWW5*TEaB%k+yf| z6&Rv?SXRNvz5}mtW09Fa>BlOjFl1x%OsW2eTae5Uc2$TqF)XybaHzLHhrsB~`7||6%|NOBqCtKn z-4`klK4apTHW)J=AupNVLw-5-*tt4Ry~T1Y{R5jf!43t_T7aX5b4ybmAKOT&X%4(n zDKcbo4Wf#r7LT50o#V#Kzab4Yf5n5P3L zFt*IT)iE5;D(=C@Ucd&|3aGpZx6)+X9tIV->kkmvHbcl+U;CaAcU^ExIL~A$ppy)- z73Z9J8}stL)O79#9=7RiJ|5J6-6}R@^%aJDU2#JRR_>zA-)^r}8f>X4dUe=-)!qEEYzx3?u%7~#bdXkCt!J3m2tVRa1eTP=D@cafJ*cMpy_<|&UuM@*5}!CgNb}4 zEKE!a0M0ZP07I5c<#8Z(iay&K+8f3Oh}_~|y!mJXT?2sjlzBdRyxM&x^$RRE`>SOq zKmzrQIU1dqi(Ks6j|lh=H-1vv$2<5lWVVddkvp*+ z;Rnl-XJ3@}#>vqzVgy|tk=!$Vf`KMmd?yvl1oYI?zF>!a0jou&XgZ zP60+I3;*k)KHE9-vNvY{sll4%Ll>u_!;k0d<&JkA3qoG;OfK|#8^N0+je`kCytgVE z59A>)Umz0Fnee4!LSxQ@ur(D(@QfKXM>0279T*y_0uT&?nw5Q97Je?N&h6Q_etQ3v z;6Zz|UI_p2_6AO)9jRN`7pugOfVIShBIi1H&3LXDIw)gINdP1NRz4Pr2DqRqLX&eJq>SrUrnhy>Z)U>}S9&7=sM?VlAlWj>h3{F8w-<;05$kN)_<3MXGY#r`;&>g4e z4;Mxr`eB^BLVHQO3orM954Pi6bJ_Gxne6?8Jq<~lSjYMN3X+`tyq}vRYxlXqw@c5h zp)OP7=UMHnFTu&n!!Rp$b-Rc*Y$(M6TO+NEg4w(XkV|wP0S4DC(nDfpT{ZwAj*a3 zMvN+Am3HJ|t7)kbR`fUwgF%RCJ=S(cx?+=`ZxasE_8$&qStY=@LIz)lx%B8)uHLa@U&X?e{4+qmqKW;RyC>QBf*Kb8awe}H;>!AZpELp{ z-24XZ`Daa(tHG&2nJWH*ri|5~r~8rTvzVx|u8YVJTlY8yFypC=Wr{`zP9WH)I-&cq z=~Ez;57=i3=8J0W8459;xOdDY*ahc(wvn17c^I4{F&8yaIa%4pXBWJmFl~(cvlq#B zQ@tj&F8brmmb8n-N}A$~mc@`rFdq+}-)R855e~*#zP8Ez5Bv|GU%B>iJ zQPOJO`guQmJ2HSXV>|ed442a1bm>?~_nk1Cd@6bG}q%dM?FwdaU2shra z8Iw$W(li}vQ{$Eif72mF$&mc8%zjwZV&M`(DVtjTwV!%PMTu_##Z<9iaqE4_IF^DS z&-RX^MGNHPiK~n?*E>^0NRVrYN^L2h(|fraIi$v8E9>l4N8U5>Y3J<(8BK8lGKPfI>XsWx?aCLV8++R|eS`4g zrQL_k(WFvYKEg50<-S!fcxI&ev|TGfnd`C9)5S`tSRP+Lg?$L<8`JS7ukonehhO0n zNq;X)1(ib846!BLx9W&|ZU9Gu=uEABu0d~<*l3On-7kz^Tn|jE&mBRSJ~r5mt^fl) z0VV%1*z?i(pjNZeOeq!DhrQt|Km$^I1+ZDv;}%9515l%1w)OzH#r3Z=U<{B#yDvTk z%f}q)oyeMyGpHkjp#I|;01-X>mGxpnT?4?*H=*5ooE6ZTNwCpSB=R-mo{NJodxe|d zcJ*EACBPXlez%&YC+a;DKqWbpP+d_N`;ND?9$D1Ou`yF^t^!>fT$ZAZ z-Sf`;py5n3O}0t~gLOsIZy3tjjenqOaf|>|zUX+WiLym1adz%nCe}&dI4SJwMps~K zP&m}C8n|T{bXXc%kDiy%895}VY^}p*&n=L)1IO^Va&uny?bUwYe4b!K0_GE*b@|Ih zhIa<|tFPB?o(FJ}Fp zRU@%Pwl*?H**4*QSA;)XUR3b}im^-~FDL8szwR#;jG5F0UqKw@a+h`8l^2S?5Mt92 zg4-6=HNn}o5MjZGH<`vynce7SN+o3;(R`_^mWQd+2!mc22?MNF7DFxXqsK#G>^};& z7p5t~9Pf8_Pwxwtm{~6{zM}=9@(g6Vyp`=}yAs zkI_PqeQ_=>njkvQ5E2uNzIuQ8X@yp^Q-tFtp~l>3CSH*(h=XqEGYGVtV*$?z`p`%S z*B*K;IPv*M0EDTzYZ+D;xd`7$cAA3z2cbbDvdx2x1NXkD-yUw8rYe^%*&T zL~qcysVW=GbVb-S(jp>6K27+1GG+@W!)2W8DT%pfzI3XnB{(bHWbn3gBM=@%gzf{? zOKNnsBp!hJZa8DOT2T?_vr!;!9UV@83A!HN3PoWiCLE&~h+IgQ0~P1oC(Z7x;dYm2 z*k9>sb&c2fboDol8cZY<{Li@>+f1_(IHV435Hyi!0t)D^jU0meT3%=fK&aI?3ZCw` zZjnvpc~x#S@KHOs*I>TJ_G6(cb7K<#UORh-r^gxsfYB_uWj5hl&uz~9a;cq0#gv-ySJ1K9iL3) z=9HQ&)>QlLx+tiiW|NdN7;<>@lB*9itj7{hRrhpfD~*V9jI^XJwf49AjXBrJ$Z(^N zcM=4NRX0l(^HVLg<%cSd0FKLsNaUeKz1`bNmj<4kP}3W!i^=SIk?*-n(Kxgn-LKgh zf?0WU+dgn1Lr`hsE4Udcw7CSr;Gyf5(3{OqhU!p7m=|;WvlW@YU`pVx5Mj!$qT+lg zt3Cxg7#)t2!P1K825cjSPX_jhH6@z5Yg}1Zq65no8Rht^V*Lc9aPJ$-yO&HO%CA+F z555@1k>p|o>jjO4aB3F3?k3T%)Fwg6|MwjX72^+C9PpkMY9{TUfx@whKv2IfIucUs7p?Mtg{^(EN6o z)?hoo@HwS<>-SOSS!A}Pd>W+MTfu`HZnr=Y)JAkUf?zDd=wXIrhauNk$7#uoV9%{z zlvLo+i{o|m3|{NChQEY4ttY&1Rq|-k7F51?zsmk5Bp{fpwTnERXThm#>zMc5uumKsxpl7znS+yVQ z-I(*#nu5S><;yz(N)^*#+RN8WiX7|yU}Xu`lWOT1;%fbwWWGtOIqUviOdNC+GW}y& z{E}h>d_rNwgVB`{!cie-2K`b&*4x`cPmTntpR#LqBsJfj4nV^~cZ1wp$?rl`~rg+$nP$VY~;)*a`<)F-vO6 zc&nJF-mucrgXr&%Ebk`gzHm`P6v2^s-=D57$~Dd@yPlE+hWHuOCd$eAHZjAe@!KvN zi{RtahI7lcl~j?EfGr5MoKueN4Y(#+Fs0x#D_=Fc{LAvpKmn0Y2?^r~9-MpDB*^eX zX2)jL${nyw|Tu+p}n1hCyxQH%H7UYN4c;V5F^ff+p z$1*p>23IGg67bcA#%%g)Z!`2XH9KWqe&&EU^Jag#rXog}*>8k3utuRYKW@5KwJV&+WxObWi~^+Yc`IV?ts3aPd5k=FL<bkhAA3UO{Mc~1;hz&wB~s=);{a}YP^y>{+mJ0X|d$5-Ij4{ES(NP-Uxb1O2kYB z6ygpWt2Y<Am(bSgXx0>oX)EHNg2?*_Py}@?on-b*fKaWUwbJ{Xzb9% zElLxbx#A+e7WErix#^|u>MOzPW#19BpU(CMxh7w+UhP+raNE6mUXI}-vkjm`%J%d` zQf9kc?7EP=n;~R3LxhK&Z*s4{v}rHNE$g()A1jX+DC`Y zBL2vx==(Cs97r8T(;1?H>!F;B!)JgOV^r~81BkJrMMeU=%Wv~3&&7a?>kCdx6L&ET z?j>t6E6f(tTx;;qfawQU*cQ`nA?Sx45P>9l2*HBVAdZ4=%1ht1KA#fpDa*xK+#z}6 z1LBUliyZeoNgjL6n1S2*l{a!(PDVZ5DnnL-VOzltL5g<~goS8&6rWid`pCB7!zaIq zo$Z+2H|SQ5@AI@AD&A!eS;AiEg}ijyzru+e8V%wNtLa@NTzsKj$$lD&@7L$IQeS0g zz0OJ*chbnp>_2e!vSF|Y*7r!Itw=3Eg01VPtoGZ8JClc^1-w=pF_Au0EeqlV zf1qrYgSf66E#f8<-`IG;i<{&l3md`iElHK`(qhIJ8~&D)D+i%&+$=j{C~*n+0WA1h zh7p8vmU2S|$S99Nx^ra1}U=AkXvt?6R%*=hvoSqag1i zUAeqcjL=vF8kZJw7`=7nd&G1F2VCZ;n1haWN zS?X#yyqxi}2q&mNJ#=d_Tu+f>W!F2KvEz=>KB~Yyx@T=|<=HX<#9qDa74WP!}kz?2<6IE+9uEO}k0mpf(I8HGn z$TH9SMl84y(oj@Co;?>q3?_9$C`C{251HQQ>off>Q zr#&We#J?MiKa@LB38r;UxRmGcT}f}kr)mwUvFd{zdXC+-aaRqVK<5;^IPh6WP0F2u zW@&};WkR9$IimSIs(0Idm-^j78FZS;n(?u(;4IwRIfUu(uriP(k!NUoN@j_(6m1IP zc9DKHHLN{aE|ZlDJGqv^@JKlI<;bK2?K5xauUxBDU*K3m^315?wRW{ts=&LAzQ~Lc z$Vtd+%T+9W=>T|C!XAKaiUJ^hiUw!_WtEFH^F$RPDcp)QqCrS&n4zkW(v|i=DFDO2 za(TYeT!my7=6m_cw@KdG6Gnig&nE&8u~i{Qn&6FQO(_FH!;eU7;N0)PfS*+gxC-mE zU$>VuKhgqzJ#55H#35)_hqeYieXYO?HY^*lmT1RV8q1W0K-uZf4UW#=t2`?%kQ`D}v9z*IAZ8jJOLemyPCliD z*6&9#sH_M|FB6T?pulo*wh++C3hOl(HpOU7@GuI0gh6ie0FM!X(G+n@YEDA6h0 z)d&-2e2D)!t^F9X332XR_coqZX}*>$@2oqd&C+lDv8BgHwn8w?Rh!6`z~c(8uyW#f zQof_URYQ@Ls5!iKw8~+}+^^@~t({Zj(J8La;adn@QNtue-9;^0X+(=$dQ(oKCU}{Sx{0v;DnjZ-fnKi?ef#lvq;{?OxH&h*oAy|yZ7E*6 z)0D8t=O_4$iPz-d3BaqjkM>-FpkyEhlGc6+Yvdw05N3jZPV!Ko_QkbMn?2(3(+U-a z540~8J=u+8h^cuTT|R++?k%m=luzYc%3-*Qdw`tA527itGoxrVSnaAgbpE<#G1LGb zcg(}@DszFA>DPN(CDRANDy74B!QwC;St?eGbV^cq<1kJ|nAZ7cPLfQz2q<@4L{#kz zqUdg)EL;OO!qL{M+Gs>ZSU0Oc;;1Sy9g#EM|tMJ6vh!%ko z%Jl^*J;UqBSbFo&3C;PwVD;;o3nXJTPR|CX!=&))l-$9+&gnpHFC@YEnbJIC!=ZAm zfyV%Bw-8?~h2T(k;Wthd%_T*VHlNBVWWsK?U)erE)-dAl99|@>poR=%ihXG(ygW=Q!_|F|WI-P|l(A4J<8%|%ZyUHWj+O%`u4^W9Z{ z)^OWEuf+?R#p51?gpNMNoElETOAV0POmzzaG|F+773%A_ekxOc!9|9i?>GT@T=-1)&8odk@7W+DqP{Vz zVPJj zg$10L-u@W=_MmN&vD6}_Dh#;l)|ea=nWGqW92g6`lMe2(7uuB^I6$rxImaP)FJ&be zUw!c$D@gU&+`jt!T*K|Ml9r5kZX|_YZW5Hyyk_OtZzE)PDIH*rYi&sru(IeR&n=n( z`#WBQkil{sP{n$7PB5)TDruN%FCv-kScrgh9n>NUxYy z)Sys2U!hqHA&gnhalv4LjcAD;H!JQtuxONYomg?84Js^ov+^bOc12W8?{$5q9u()^ z>jDhy?l*F_9q^*X1mis|#rS7cD5Q4C!+ zsI1lILDx&FV?|^kM2~a}M{wOmN6AUA;Ml2*>IqD(5+d&E0_(x zby|}bw9&)%@|dIyIcJctBWE70iSQnFQAbWEs|0o&ySw|R1VqzqG_eu;ZMIDkuF zb5^`*H~)oG3I8~OuUEQ0%#|;{gxpIFwG7hZVKv{QHBE;`qU2_yU@PfW-WmhZ^MJgW zaK&Fbc^ubrbGG%1waiC&zb`h}?FXkb0iz-1OCXk%WZ6}Ychf?Q(3T9uvCj|YRIFL= z9`DbF?2ea(-$GSe&M7ZTh8(}Z@M{E)XaFOyXL08Sz$3eJOvptIk5Q;mT`W*_W84Su z_G*`ZK$pFq)(=Oj(rc_lp;rEq#Aa%7XHUI@$z(|n@>;B{NYJ)o7F~ z8u2jSdYm8Li<#n@qkkZ{vCAc>m4?CHWxXyPG&h)uHtQ z!kK5`G!_5&85KA)0uSOQXG=09zXG3jBsi$7V!>(X=s>z$WPRF~$Q_lm&z~qx$#Z>&7)c~g8sP1x{B#eMYfYG|n{4a8&^YrATEmrJOk@=dJ}=%r zdtkKv)*XU@qZ^XUN7yq+Z(j#g#2uZvFm=dvKNY*4q#kV5pfOw79x}Yaob$7?neV2j zlt%Ddd%inCZ>}}q$SUR$R32;}5FkK!ille^1^uHZbxu5IcgP#`anIfkGyUYS0(Yx%x(M;E$(vGCB)M9=1GS7i*H?V1db^-at;`2HdqLA=>3I;r9BF0%# z@v`X4P5{So>#_$mnO}>^Vngi4bd?`|~w6A!b4r2fk?Zo~4oMX}e z)sTc9Fh2aj-Q(R+<}1l$jv~?;o8fffSt&yB7(gbA(-9-iy&{9!dIto+c`Sk4OG6-5 zRpqvB26QE6s4*G2F|K729IbUJpvL?tuH7nS|~+0*No>=(?H1@!eh)p+{m zdr1$Nbqt@lt2Be`TA23qliJ3xGe$5Rhd`gZDw@kJfsJXS%vK@F;pvyS$+|(jA*;!I zcYZ-_e|OQKm^wyu>C!C}ov9syk4wddR24aIj?FI|`QAt{hW5^3N&O2j$zH&pA zFtwiqaJt6Y6F;+qEqMFXtL>TEk zUYx*=REm*koUAwy z0o|%qecXRY3ZO*S&UOcamsFwwDC!;l$Mr@7gul4iHnvAHXA9JgN&5w}ZUCmub8W<} zkzy@gekh8DEKGfZHYUDk*Nffkb`x?GgjI&Cy(u|6Ai|Fi#pHf_K07uGQcD*7yxa=r zckT0rMfg&KQ4UtbvWXXxKA<%x1v~`vJ8adPq0TkQ&U1sz&dzg97aXbF#SXg+a^{4_ zXH6hSdq-lOBG!{KeOL1_m2Tsv6ChL3gO$nne(R8oyKZ;B4aCu|W4)zJLFRlQRX;3X z_3E2p?(`u7m=Ctw?g!ORZUwl_hrlosko>smueeh*RGSKU7q-iTz{l3x6I-@@{Z$2C ztKgxHXXe!(K>0B|iz$LGuHD93*mR8dH7`*<+)3mk!Skf>Z%>$rdFwv)*36i-L{jrO zR?X;zAWMCAFBO)6YEzU>s_rvvu!x>q%5Av3e?a-^W=mo7u&S2ob`T(A+Z$l|5Cip2 z#Vuu~D|C?8eC1(pf1@W{;P$=1^)l>Cvu87|)qs}=MrLRzKC{R##_^}Sr6+?nKP00{ z@S^-m+b^1WP)U{B717Q)NQNYsz;~dP7aJWcA)7j8n?upmYTh<=dGqe7LDyX?EDJ2ST5qYu zoPw!Q??q@ycvAS08eLIOlcA>>0QkV~+;;DNJ&8zTr`|c;X3~Y9(qYyEdr}}r{ebgo z!WT+>u2-)UlE}IN_`!VEc)BD7Jnn0Rh68XIwdWbKPa3K;di}kqyj;fy8}FW7(Gnuf zGr}F`7<_Jc>)d>7$d4Td#h2VYpcYq(aB*yMC;;o4V430=IO%fN#m+oyp2BiQZu=b( zqQ)xG#1e?S)aWX~j>SEhj<6L{A0^a+A+(K*YyoXwx0;=f-@}rF`PDXJ#Ec2S%>)oc zZ<*!EiykJC85RKc`&;R`hj6+=rZ@{gK1slBmu0a~r_^m0Kyw0cBo^=ovl>Buh*|&% zNF0-=pLIn#!~+6PfDGO&z)#2X31O0wgRRY8v(`>5umuDtss2DXFC6vn$~vmI%_UM!VBoes{ixZU8jdtZb?k=NEL+OpXF-5YQmmqY#!_k z_-RN|cv5(^!aY6SSqpC?cgTvXK1b;YY(2ldJfOo@Ws(E)slRrth5+98 zG22v3YXVHJ#>|ngefjOt%*z)ezOn0X!tk!?_Eyx%~Wso?!zS?>Z!0>6oAUFxR zY8pWEeUeG#VPD)OBP7g6!0#aUt+)#Z+FH@}cU8_0xmq<_@?=xh|NR*6J8vj9Wz|G1 zv1hp($=XbcFa%QgZe}LmQgLy;w_0kT*g`vy z?%_F81%CgpKW!{88ghZsEwI&!A%pZE?p>N=&Ey`}n2V;3yUbI>f7}{z43}OcqAzw` zVywX_cML<7)PkaNu(-gphYZ^`QBH%^aLPyi&!Q%v4AAQi4rr4h_sVh-X_?>}l<9Iv zvkCt7u!t5oQqLOjKrq1-!+iTMk^Fsi98pM-eXxF59h-*_9z>ng65`uD_8^w`@h82} zM#o^K-9eiv|B&ZDZvXwGN3rF>qGY?zcj~nc2jBesUq#C;?d<40Gcf(d=hK1&Jzrom z)YiDyamnuEO7Ppy27D2P>}`%WXd;7ik@qp9uwibk^Ie|$cVx(qlb|8Nn3S3Fe6m{& zte?)cz^>@Eg3xjLzc)FEl)ggv(==~@V7XqHOzP`P|CA$0<*z%ICE#pI+W4P49%(yv zg@5P)N^O4+hnEvvdWN`#b`HCeNx>4@{cwHADuvSb=Mew1t=PQGrl_`Or{4$<@??Iz=xMp8fk+R>N6oH&W$ZS&goqhSK3Va4exezDwdX-L{OA{!KcLBnx## zKVPp~6Q9wJa>X&f_RnF(Fo8=?6yfy`Kz@spv>S8O93}EWUxxm`u@EMORfD@7$H7WM^en$zmLPoyXC$8naFfg^Zc9#%lVIT*54Cw9VFE1 z=A0#Umz!lCSS7#%Q~nG6#M_U;3$3h^m1Y-638$8hY(zlY31c%iR&R^(lc4ycF4emR z^M`ir_l9##4fbuvg&M;ba(NHpx*QkK_--7Qa};Os^zj$TReg`Xfg5d|QonFNdZW0b zXJUUJO8-%p>J6f@*?#Z$g6@-$-3Eku;{$H|>_owPl8cPrBv~I{dZDqp;WFyHl^Wk# zDw^Bq8CfgS9}?(|rjz)XPrLUA+9bv@oGk5Iwt`WS_OYDEduMy8?6T}E;Ucq-Iq#U8 z^AnelAOUDXH$?P`9I}7qw}MHA;u)U)iaWg(k^Kj~<1sqSSAm{1PhH(Nzcl5)|M9&N z@}5!rJfHS=H@z3aPH%xc_x{^^TIgV2Bs8{lz5915`s@EM5}Z;0p*Vl2&tE=4VqP%i zD$@x;f7_fF3~R|Bv-n>>OAzICFOi9`|A7hrmxli6hP>`3`yUqSzkM#_KqEu6_4Hr< zxk~(5ll*7v$dCs3zZq%ZtA>}rVAEMhzx&fX|8;<nBGUNgD+hkpJ0 z=3XZP@?R(LY~98#BFSABThbKi6&lbBq8X zGXL+Q`0HicX=Dj-`yt!g^}Ju3`O%*>`#)ze@@!JNf59$d(V&! zA@~2S07DCT!PrBkP~k@Y-RRv%0;1>1M@J8E!2V^-{&fWo3Q#?0n<&+He+uotb?6@# zk0pR1emE&CmHs;^#ef2|2BAgrGv;3{=$}*5LWTrbjsHJjfHC}ke!zr&2;w3e&ORN{ z&iu5?AfBt&LbINGt#*ogI`zFw^Ovk(gtoK}>`{5v(nc|u%l4||e2Xbs`t&hNmdH}D z_^*QY>x#D!HO3c}L_wwH;kb*_tsajumyZm!nyAIm~xo!!6 z1={#+0q?(h=^#OfHf7^`$sEpT1n7U$UUtxVW1;iY54my3`uO;)vg;WA-mw2ws=o@i zSi@~<6~y;!gNv|zp~EGA*C%lkqlarpSmz0R`2Sh4u6?|gI&{JO72#vIhJ%Xo z#X7YRe2DCh%`0F}-;5=MvZ>kG-`DzfZ~ZWp*RgZH;#fuPK}aTVw6Jl(h2dYC`9J;< zO2<5Y?(KYV6uo}kMB=#L#%dgoYmFAQIzcpDv<35fr-fYKjrV-F!@yD15lU_BWAtFW*E@kqroAy zGF3T`MsVzJ9WXzbwEZvJ6PQph9YjcAwROdsa@}BNREe}CVRj7_MetE7+{_e zA$C{AB;~x-Rx@wyfAGf7n*`M9|V_AFvAZP z7;@1LCU#Ea@?WncmUkyeNEcdZ*VEFVA4EQ<3GY47;LQG1)Wy8n8Tx16|L0Cl(iiI4 zCLCAzT--qXjObkr-$zg!@#ub~2ZzGp{7E~@%E8w8;|wxxJQy3dUb-K35t}RL-IH}a z#~1-Um`ii<(XbH?ArO?N2b1Gh!*`Mzb{q7{j4jGo@TqkzlTpE8k;y4Z_NrM*J&rJYO!i;EiDjWP+Po~Y`G z2EJXnuhWfU$b#}x%g$2vvMo3T&vV22JI83ge2*A5IGqjml**ZZX7PXS)bR&}deEky z^zPYrEpbhoaG}`{wd{AH0WMonfMvYtSBm{vQa#a+v5SGnsdoCpF>#^RUgPV?p5c>c zL2QDPW*Htm1z;K8Q1nL490dCRvN_%Z<{MtKSGN=WQPrPb0Y<(oYbdV2>L_2wBOQ9YL%Rc@Snyyx5x@rlJJ>zfyK`Cb7a#bj|em#3U9P) zZDcQtb#nTXI21W@8w&51Y8=I??jHil3p-=aj9)q2hD6oBd*-mfUY4q{_h>{qMRrX* zTPOU{KR14LmuEmNt70+4#XC7RcFiG%&q00WbSTZ`NnOqfr~9C|nAN)9ypN=3%)y?z zz`mX@qM)Vh-%sNI5;ZCc7_ESz;~EZaBuI6!&Xh<@w}ifr2^=wkv9HZH@23#0W;@BQ z=97?p)suL&>|8oe0!GHr6w57#de;L%v!zRQ6n0+5=%WjZ%&nyu7ZR7c`y z30f5<{KnUTF12Q7#+8UWR@(3Vptn58CRK8~g`A%l5?;;4T$@)qcuFgDA5laL?o-DP zg3Bz`&)elqM-O20CaMZ77f@e?gzrAaU^z|AOeQ9Z;F!PP6KJoTHtn;hD!S7z0~bwP zzIw}~(f=&t%fgXhFjA(%&CjaY;JFxH_o{hE7}iyzr)w+YT8A?r(Lrt{doD|ZEbnCe z%yDl(#G>1;WncCIBc90dw#S3uq)p!uf-#w?dy~Hz;W(Db%h{VS1+H2WGz%}h2}ZWU zGG#HSlJb2PbfGBVAx3^lsKI1ZTJd0#6*gc|6tA}dBGKaZ6hG%y*zj%HuOUgL+)PQ_ zgUp>KvB2M+TXayg2L6`~g7*h6<^=2;NRiU_+zH}mTlU>(a~&JQ2ECT`q>EJwj}PW? zmd-~3IF73<4fbOOkk4}hM|aR=pf;vP6rg}0neh2X*tzWgMc7wH$Cd0_$Bc=Y*^Zex zW@ct)W@c<-VrGWK%*@OTNz86DCT3>%Ix}W3qcj-SLU7dCT%(bJ76TcchM))PgOg#Z?BRmQ$y#f<*lZ$<2hcjP($GmNle+vy zyRlN0H5s=#MWU^X7Flcf%9b8k%Lt{tNjg+q;o#m(rMuaSA+>T{Hpe?4ErjOWZE)h; z8=2#%!E=kL^s+m3H<{UGcO>T3RC8FI+YV${6b#>mdK13#j*cTHSjbeE6M8m8)13Mw z2!C26Yv=nS!jN`s_Yf1u;zpRriUMP18UD~Vfy_Z7O9nXQkv^_s^E zwD4Wi!F)MOj#+vVt)4EB++CL6b|*V0W9*<8E1#dcC#G;8WBa*tPX; z>9vF2ffs+7v2G-eEY@@+XP9xUPx#+j`1iqz0pylUVl*cJXUnpXqOy}4!C`LXM6FFw z&a_WNkZH1Ni+-O$UHzaTK+T7dXP)}QzzaIL3<}><|2-NCcMQvSQqz$9yL2uGA$leg z9%zIpDZ>~W{g~aiGF}Sk?)V*Ft*9ciGnHiREM^1!kcYFEev-jtRl2vzhksWz;xVot zdC2|RzRA0*6ugZiLMa#=Q=K`eSv(cvH5>e(*ECQzrO_0zdM-PH+@5Ux#i)2q+gIWP zBDQcvMK+&Q0L$J4Cmw3yK?*6OsFZEKxnSuNYl2n~nNoep-ibgZp1NzHVF z>lKYJ9%>aP<-?b&?H=!qZ`J*nT;CZAiYQDbKG;25RMGo*Dz%$vU0|q_DDI8!k#~>p ziPf9!mx(ofrA9uY^!uu&|9I};Q70Ye2VU6$2ObLZ7fk&>kQl%l5RAwbD4$ZEXYAOH zPqP9Eos32vaiU!>iWC+8%t+0s*~w2+3r7nOx`@)_cKJRL!RfVxI@~X7A35x3sR{2@ za*fcWyHE=FaZ?o;C6LXm;orH&9k(%9e|umgv$Gjh)qO!D(B_h8-U_;nBg{my$ET7b zO>L{)y$KGBG3+z>eRKXj7F7Nk?=xCn8YYPQplkhaEB>~QA zP~bJqDF&hWU%~6gKz+m(3f3s$U($8*Ol-o{B z>P!X=>YUaPfgG%8sJJwj5=c?J>ooY1WoL-W1=4n-I%RoFVuO3~4AlKIz!X0|v>CU( z*xhS(q`f~1v;3~${v1n1gS?gZ&f-KT7ftWhYe3*at0RlBx!-w{-XyX>i(fZ$liSB| z-5OtZU?9N8{Pq1^l1lKIS4JxRjAxn<7x3y?Jlt7uB({6#-8_-aeEKDN!jl;p%pL8M zAiWmvxeWo~&g_>?7LX04Tz)L$gqnuu?k^H^bf@snRy)7b&jRV#gs-E=XBp_ZoimGM z#7yYBg`;&nj`VP+^YS8c21uU*>qNdrdQ7!B6Ww_kOY}QBw6pu7GU0EA$5#LLjn(|U zGwzIA7!%oxy1qf3;oAS6;jd5P(BWFJ7TKxidBG0R@llO=GPa35o8B^*S6JyCcloQuPxPs6*S94_;9S6ROrnYwdyJZWx4=iCmK2L(O(3P#nRBv!Yhw+Z!@H~>R9 z7jcK!*9suWYN5>T&LUOI^oXOok67Gd62WI!FA4qS-PC$x>0H)M>0CBc-4^)E z`P?Lq#WrHFmJmS#QQ2`zxnt|htacZVu3waI(>2KDhDJ2!k$)OV8kE~{dROhPkS*$Gc@s zx!|1!sZ|*E?e*Nyp$0=~96>WwpNns1`*pv+MGSr%BG<(aWYXGXh(`l%7wPbE$sF$J z6H!Nx&pnG5H-k5VwAIasp4FEr_%r_qBM)!_piH1ggT4hH)jiuTF}Is}V4k$bwbgUp z!eN6`e-9bf(b{HZR6u}IVl$cY&7p`~c&^l+Jqh5n9>{C)tGAfJQ{r?eUxR^gUFs6iHQ%dkBG)-QmCI1a8Ni;F?~ z+y$Kh$Bsbb?-%_2l?91^0d1`VB1jS@96y7xc7IgSf17vtBbE$_3lQ7xPS~9h2V(H> z%Dki2{L%*67yrjU`iug59S*Kxw#z3*Q9MXhVYKF-#CCi3*qu4H6dShYE$6uY3wTAgfd%d&X<5SiZ~+5eZ6*Qi+&djn z!^3ZOO#cOyJ!STM)62}ptWhisFK}$70hrKm-mb4UKd~> z#_W&w7O`+U3`#;dCp>-IuCo7$`21VsFOndf)V!zk{wnf&*E;rSR&ks_opJgf0+)yU zrP_Wz96KaXn52Bz?H~B}*ZyO$!3g<8DjJ3%Ub-v?nfvy#Xgmf3VRtdd?w~%IIju78 z14xl?+(IIIaH&*1B{1kPj2blkf{|rGP{hgYt~uC08Y7ZDXyE>oOqqQemRAKEB7e2_ z`u+U>Ha=4T_s1aZ7eJ|1{f}4sU$dS9g*@HGLl6HOWETi&3<~;ksf(`sABgE+U+%#H zot`OB#j$^0mcQ0YumS`V4o7_C`Ny^U_lF@W&yUHVyH69v3FiL*%Kj3G z1?Z7H`F(ExT^6;dpqLgd>B;{R(tmtyBMKCUvQTY_`Dgt0FIf<)gCJ8Au>perF4(MJ zVbCb}g@06%|CYsoG$=q;@v#NszX~>x74*n#rA_YtDhq%nC|nhTf#UJc!HR$FAxCjg zOr4cR_YW?~f6V`P=^)brzG~i{^%KZvbJ1#mGW$UEUP(p8IHHs|vEQPnAoAAso}5%7 zce3eJnvk#vM4i@;*ElWV|9DZ!ElBV!DdYLvfYH7}TGPp)$vT%?{#LI;byNZR3c|mq z{+`%>vgvY1Ef4_y- z>i*nTxkAlqnw+$m{+`Z_8%`=mI7meG+iBTkRGg8?z;FDuvydJ=40}X(5Ld6&={iBT z+flnJi;ux$7HF(u{`^HC`*lH@->ba1KsJ6Qv7+@~?5)2xK#!krPc`J;jK%b*jDtT_ z0K=2cHj)%3#U>Ym)UvG?`Fk89>yt#Agt>pmVkHg1N0p1>(SNc;nod{8`u-ds;UcQl zu-D~g%%_k~9voL6KYQ^jSccd|Ycb`;|68`do*3ATc7_M=x_t@$UUhg_=eM9gNyjSz zHX2tgT2Nfqtzvrr_nsz(Ly=5mkKJ(D{Grd)=}>>P<{?Pv)s`rW&99ijugeHGm!$T~ zDFH}=4=dy-o4nX299vK1nhYz9C6{Z=;Wcu;_qt#r{cEoPAjxaIfb!Hjb!j2Ra%8P8 zrm4z<@G^5SG?MTFFLDdxgn9Un^*}+MB$Y4;1^e z{=8%vDu4?qA=wkbxj)?-i*864=S zK4|tShss!9B%u}zJ+=DW#y~(kI>lmln|<(;fv+j!o}@aV_St*B%h$uQg;22-*1Zs1{V@i z7-w6S?e03G%oVViaCN{V=#TR%2c8lb{%b7&cO*3uq2@>T{sLNc#?kcs4NDhN2NPWP zbk<~jf9>l4Qpf#yIdF=@-FVet8|(#$UXhgCh?xHlMu7%B>;P4qdIa8QLlNa)=^lg2 zZO=AOo#Y#&c}E7D-;J)`y=yB1B@HBD)^B%34qVH>b*1^209)UFey981xEYUkuDk92e6Dc3bx4!&k9T3|?e&3~guNA2=pKiO{ zrow$KxuS^kiGoSt)h{P35Dfjh=_mnbne3mG+ds8-95Ey^O@G5`(c}xOP|RrXuj4ML z3ww1mv%b};D;7E7G#YF5*Z=P!f+e1HoHtH(Rr*CnBl6{E`xcRG34YljCgWDfoCf|c z_T;aPMeGQhb_47SP#+tVNrfohpaYTpKz6d>K#SCc$84bg$3{dXbKJl5%zF&*Qr7(h z(1!SVK#YE#5uJ%zX#I(l$)MAHQhhV&XWe`0L9c%|tN3*zox&E#22?*cSwDBLnf3i) z(rlQ3H#@AS^sbA)qlpE3MwZC=m-d&677Xhcd=EN>ZQ7sM<)uNaXrRY&WA=Cr)te@a ztlu$`GaGQBUJ}$4Zr#*x%TKHF3&&Sv zrfuLee?YD6S`%w8Z4MRqWxNTct5~pz$Q*2!5uCmiVcc(P4O%1N#NzKb_%R;{o1@Y) ze*MZ<)bOA>;78Vs`7|Yo5w))?y7|9)41Q7|b}PzCpi|Sn@w-y(dyjR zmC~CmvsXIYcw!{ZrgutJC{j6re59iZp<{8m`=g)gu}tWGs9e*^BqueFz9=q{8I2h+$$Sx^DKR2y;$!8eN6FN^DU^Q%H2HRy(Lq18yTt<#WZo zo9wAZ`x8bbO#G7(Qmef(Du*A7WvgQ5?&09z-z5<3(WSoL;NN^e3XuO=<1A&RUf)5d z+pT9#r=M#mCii8^=+qrarj4z%VEt}=cOtaq?c(mivSUT=wKgIDF(as!A$RY=(Scx& z|FqsNTI%&R5fzCY9v{`Ex?TKeK;J<5^VK`mxgf>=;XHK!d67%?ofgB zd4<#VDJ66T?H^md=UMDcw+D!9okR~Jk^j;uA`h-`(8M6lyY5o`0eo1|N8d)4Uh8p) z!F0jGt$Wk2pe|a_(EddX8W`r8 zHHw|1-6t&4@WW;x(sM%J;`%dcWG2lyQj^uK(Y@6R4d3a(A~{APv^14;GQN=^FIJkK zlgt-SQUh#JbpwP6_Hm4Oqw2=F;r{M=tm+^4D_Sfg`E%n3_h4ve4_{89%wZkgmM5YA zPzk0af1)L7tK)xKDAb~-&Kqb!mzLxNuP;9&=8sf*ub}Q#Cr_SD&aJRzT~+mV_(7|B z7cQVmF$CqPG>{Vx$^g8P|q~hWxaKV<_auVw!vMw)2p5Df& zb8J9P(S1J2#^t{kgwN})O@lE`i4n1ryfprj>?iG81ceExQQdUj{_aJs)*)$#kyQwC z?phdOZPz;$7G?$_yBTRFrT@G+R~8`ql-JRcJdTzq)o8`6HQ~U>m4r>-iw=4st|R|= z@|4SL>9C!#$0_TW5`VpkwFMG=L4y6#+J0f(xU9jKlOhm)m1M6l-&hsXeD5rFG16z$ zdBxnP^2pG%T*M~Y4DeS53W75sI{$6L!W7Ib{F1%Y8W^HzuIlBIV>m+e; ze5z|7PK&~IR!CQza?JHw{3GSw_+vcfuAszMO1%u=fSIfG<_nkzPWX+l_H?z%`ZfVf ztW=FR*=FHh*S+6Ym@R=nv<2WXp{I76(yddZUwJL{+M@7J?S3Kv-b->j)W+jZYDD0P zIv9Na!ZRq9KXg_Q(u`w!xkmQg?rUsQ#M|61#juWL@dH&l3idJd`LzMgJYlnt(uD#) zD=H1)#Zecm-6e&gMS`)^;Tv|&_K1O+I4(c!PK>+LC#O)>@nOqU>Mhx@$zVg2B9)L(UO%}T&RMYSqL*UiB$1mv zMYLMDT5ZP?xzCUzS5Ze=Kt{7Pzv>}g37ZycK{Wf7qU`W4$6v~{2DQbR{o=Td__{{! zFJBYz7%Hg9hQdWGQ%SgXP7V2P;%8kjqo?#lQeF0x| zwRS^LZ858W6zk6q%`2_>^3q8FlD<@83fFYu*4?~_)F_soM|{Gisfk+r#xbm9I6v;g zmSKp1rx`8O&Z_1J6+LwVlcQ4^HLWJ#@vYEs5x4v86T6NpSDl4y@$|h8S<%uIr?9iD zmAcOGjlabX;xi2&3xLwCM!6FC(&r_kl6!qh&PMw9V$ie^wc7(!?9z=^jHRpmpi3;f zTBs~*VeW_znSyIKVk8E6|I7Rn>D?-q-?rRbEb=G1i;rigwk#^{Cqmd(e zW$US*2$s)jdV?e~hFF(%!G0yl4Txmve|yuyxj*UV!svFzW%F!a#;r|XejxZqZD?kR zB3E#Qt$>%+Qju?>p+|G=nY?GvgHjkU1a3lE>zJp$^w%`WapG#yKYipq%h0*A#)tG^ z%#yZj`xrH+Be$PT7aKyGF3r34DVka+>EL%J=sbb>wwt^U{2o$#8z=m}!j23Tw}dv& z%(-MP+|(JInfiQg-?V||9~)aJH+a%zLW_hfpoL}WmReMXp1WkH47zCY*MA}(K98(& zV-KA%4f$0|HP$U(Vml>il=hT3GWwaWs|^@2b}1Vkdo(}th@&cg__4To4x%8}Dv zHEX53OPckO#o=y8r7ks0SpQ}8ZOLvtMB~MKt#qR8ccg*+W!XW(1KK^vhQ-UyDuzxaLoXYoNDeCo?I?-Y&OjP4>i=E8r#fxAGyY!&e_Y+&7YCOX=+!zr{ za1+QZ#192Z5Z6M1brHND`4FbLG(oP{7967S1euzWLOh-H$f_N+1Q7Ec6{D>sp3_ul1MJwMG`f*Y0}t#AN%}_j;SXxm zN`edqomGd{9GkeoFyz9vY2Nt|Tf<#?D{X`%CvSg#6ZfIXD=V=A~m+^Zc}uA>o}fZTl*7&3k^UWJTK(sKwqLqs0tS&|OVMf1t`1>7601r_fqg zut1<}_Yjq&vd<_bdyDqI&VKk7-^hvA2yi;N=#hh#Wnu!G9(1iHgONaJAeTUn=bj2-?j`3$3-OxfPVzNrrapzDVan5<M{ZNju-D~T6Q0cijV_aSi$|=24&i=$1P?c7y7rD1*Ng`hLU2|QZ)|x|6{VMYk zM$uGu?)S$g>x4d`x~NWQ!!|lRouYKg+%i&*w#sPiHUyu6owf!fH4}w6d5#FPg;DAA z8n|b+L?K$!GU|~rkkCg;tgt<##(^&X=oN`~@JTeJv-mQFP|E5b6P?9BQ=>PmvTw7NhRIk79 zrLPfK5O>k$ck&Gv+z1`G`8GxfyK=7#-{WK;77Lb_?XY}di@8MGgS`X?yWa(Mi)HNL z#iQHu)FcVcm=07bc~T!!4{`WmW}k6<8bRG=`e^=|#>NSC0h|BFQ(AtN1neoYrV1^9 zV2k_!R%AG+eSwTO-pQ_K1Hh{`I4XAJb57MF0VVYt3af@6XJnZTR&c)XSr}yBDw=2Zm*%&THVMVq!gNxj;BNG zoR%;HB96hfay!DD^MxtVA>FVN-Fjb?XM%nmS|(qCGjl-gvvrMt=6T6G;a}1Gp0Srb}S z6 zkaaU6=IyD#S*EP)qrX3qwU$ws6Z6R^xkJCO>AMZ54hL@w?DDDurb=qVo`Ado}Vx}@kCpzausSq^Qa0s_<8tm;%=y4^$vo#j`zMw}rv5vpc7(D!QsI z5hhzQ2AnlSVL)`a6MAjS+;EV&KDA8f!|fq2(|U!u*JvtV;ybfE4eb}M_FPR4pgErr z7?Pz4)*O4#_VG%OE>MH&2FM}Sg$cBMxu2CT+ zU>ADNj|DiR%Kgy!aF_XLf*+_m#A8j3}L6^|?)kG-|@!!@4m2R?om zi#@tiuj$(?91H(_uK`HnOb1)SA4 z6vbd#lfmvlgDsCyw0kh)I7(J@;Hh!bFJyAy&C8K;uGu2rq9D;mF1*qRHSE$ofOq=a zk)*|uz`+<~NVJGBMvk(jxZO?E&q>k|e*Eu+p*~KgD$66uyC<;V_1RdN(=DZM0=AlS zt!z82Ybyydq94T4_~6$}1diT*N~dkc7Q&jz1{+e>9dbpN2ySK$+s&`Zn%TeWsSTJY ze3$d3dec`P2ChGX0^{o>Q7;~3WGfBpI)+lUC z3m}fcO?vwr!X0fa1=xRszA8)7(*0TTNMKd3d^dhI$r1JJ6wbeIRy zT+^TUaNS!Kc%L&})7MHX=Da-`J7K?4@>m)`Y4y#g0BEpEC{YpVo}FtpeRG%d8@BZ) zh)R3~EBZ7@;O%D`E1dKu}7TEL@|1>)@R2%URRpm!OX(Y$pk(bdVv43+v8Abiq zePL!^2(8hPc~K>%MbjSme)#R~GBFt52&FV+4jhX{%M=VmB{s$)2$2;NvMN1GKq!KvXnnzUXdEO%_bWp-wFm>OK_^8I(lotTr6G;uh%3jjP}*gIqij4#e> zPcA1xC~1|81X|rns@0`21(Hcjpx%=ZW`In*X(Vh)2OA+7Q0D|l&8-cmrz@_X+&hns zOZQWLK~yn4Z>cP<@NUaj6m4+PEeG}&y`4O~JDTnZ535s%sq7DE!B=4njtw6KEEroX z@>lDz-nFm$_<$i0^PcfRo|2879MCxOu`*B&8glRP!kiNa@B^XFauXPlr;VIu6m3+0(R9N19{amr`w%lmgDtTS zYI@Sz)?#Vex&-3tEv3Hy7Qiv`%a1M3#+N|s@EWKeaZoSegt2Kcg44rp2hVm8P-N#d zfET|){#_@W7iWG#3OXPjW&AaB+J1DsLCvVpqDwE=^gV8_6*`kBalKc>vXbrd<>ww{ zvl`64kOgm7GHyDAo@Gty+vPUGl<)ur|FNhl32^%R-u>)ACH<*;b#%16nlv{ zK4MXnW%em@r679+<Tp3W(Q|Fa1eip{joOW%g~1O*o)2~HXkq_Wo5P}p*LY% z2*1Y$UZ2>0+0OLUuLdY?z{eL~oB4lD$*XYq*T;kJW zPuF6g1$*%SQc@c?q{#IqpB$?FEF2)-zag2_=DD(*`D!{vLWZQ@HS$F8qD|`&iR^6G zLxiE!X2?Jvm?FZU@9s5kj2rR2w;WygD_X{<+a~x(K$soTq0p0y`Jz`7loG__CZZ_= zS)5RGkmFR~x}_<~NE4aOFpwA6v?ax=F=%@9n)6m;195+nho;S_d7}~dIG!6NK|fzv zhDi}SPeqSZ(t-#;xTW&{MrvM*g4KYW`8Hr`_{qq>r$)E8>&qg}osp%0ElY>j^YTsp z<M!oPUg1?te-9}Bt;$sLH? z4pUYLrD;rbaJau1Llx+FLVr`r*mR5(@hIdN9*C$DyPz}2xwfn6ptg7msc$hE_fBDN zsGyU}km3yKFSOyW@Hi-j)ng~LF|XWiAE{?bX%g{9G=9360sYQj82_k{1IyDBnhvt* zi0emAlq{$N???vzqdJd@C6Y12KqRKycqU8*3$d>_5Nmu9&pY0a2&xWgihonLw;yN!x@e;3)SQd5)u122d*e=v8~)3u zB@5rFb4O_Voh5z~?uaN-juU>vocr*9JkNY$r#H(IHyqG#pFgi7Ky)z&6-+9NFtabp zw}gpIC*BZ6VSEhZ=z6tljLK~vv&#e^cC6+5b94=BLW@+s&RvtpcAqcBy0hP2-j8cE zFlCV6G;r>=Or}4l8=l&9O4zl=9>-M>P zFQR<8>}n_UF2h}}C1VjVU2jIKuwf&wX?D8#pCtM*4!7H3_aXTaejwN~_(FjURHnRq zSAg!x;McWj84g?q$G`8~k1~{2YjVKG3`P@YDt=*P)hhgi(>(j}#tSRA#TN2s1aWG?;D4H0vhb$jf zIu^ar2&QUA1G6Dx1o+!uM0K+{YqW*HSs*6`A=2+luPG3x92{PH08RTgUIAJ?`@B*K zq6xxKCRu12q^(Nk&Fr8`lS8Qenb^_KL4|KYeKvg#RzfWU!pMN({Mr*3IGf|mNAXxN zezeGqDrHa;pcKQdatJtI^E1iMuN@dRA)(MLSx$-NQ{zOV0`V(p2&V129QLsI>y1KF zL_EawnH(u7L^q!@qn&Ag8KE1LfEb6X`18bK84w|aTm|smziMz$a)Sa4y(&P{#&Sog zok>$fzukZJy{PTlWivI+ab?laWaB*z11zt8d6epGyuYOBgVD=!%i{ZHA#f6fjh;3y z=jRJC9Olol4Zd{Nc*|ZOYH-K5;J#yxSF@^bJDU{Z=V6#QN^iDo*CC1Jd-XTeNx4bC zSK7uNiYv54zT<=ykH^rBlFzK|lvmv+vk%$;`%*ps9BP(hUO*a&e#3wfvFBo8d=mM- zoweweggc8w9@^VB&lpYRF_doM2lNrn6UIb-``e0r#>gL6W=~nk2LjI@&xxk^1+?+{p(T^tbyHtZlQlV zIT8V6-KKdnPqUXY5Wx789X7r0W)Ym(M7j4*`o1R<W>e2*^&&w6I>NPQ>j%3AjU#I+6hUSg&mgk#C%9|&*l8twhp`?!!g;*h@;Suc zOeA4|;CLIx$`*@#L;i>JGf-4$Wdft_@zkU!5;;`BYgY<{aHur2>naB*OuRN^PCT@f zx9dwZ;2}5;lIUrt9e2$(s0Z2%t!(wKyb9j-&8xt<@-ZlYd!T}uGp$QWWIlp=Y&niY z@@FtfyexWX5>{!Cp@($1?q<}!`QUy~K`qXy^gM)w&*L@@G=lJ;05eSu;B~5^{_v@< ztQXdF%XB(PpPt2i_+XD2^-VtxXGt|Hd^gMA20QU0B&d=C<*GKHWgB2(ZO_4vgsQ;S zlGMEFx{@N`&BEoeeU?y1~45@ zljnX*cuHe=dOD^X19`#(-utTF+8^lR0g9N~2Y_Qw#li$b8VC3Ez2$+7H5|M$%Y=+w ze20!a5d0gR>5K3NfJID}+3X4?^k?=~-SM_UB&TF6saJv0E@}e1iMC4G3g*+vT3J`p zNUliNgIlR5X7uT^Em|w5ggO0FhnjT~19}zHv&AY97Sv%+R?qOjkawXVW0p!ya{l;E zrs5ct+B9@pGe?`p|5)Xi-#{9u9Xmz4x9yOo>6kL`9Du9r(mP$<^9EBTi^ z{Mst;yJMuSt_`^2fS~P$!c18(7frhu|9ZQE$5REom=iBQtu9ObQjHgWYMl?U@B>z6 zKm!TW&Wk54oFg7zmOk#Yl_6&O9D()%*_2uIS7;tQoS7mH{AaGN5%*@LN>ebGj&DSo zL4m9Aa&_4Em!v8MD-5ZeI^tecPVCf94)VQCQwD9eEPLPP;raFuQDNOc{+P%!Z0&zk zd;7P8Tr0oP)v+|eL7d|aKQI-Il*zmPF+NS5O@X5p+(n-r78X#~1V5K^xIY~~Ist6E z{fw@`%vwqo+-jLqQFNa{!<+xr`5l2=nERQdc-t)XdyC_`BEpHp&TeEKOXQ#uE&aN2 zO6@r0pxWqJ>O@dA|MN%tTN|ErdyAfC*3Nm{Qtd7Mdr^9JMUNqIlw(H1IT?(kUl~nn zHMneCti`FP53U~#?*YPVV#)LmNHz^4H$-H>C#(LOL7)q$UCZu_hK_Vz2+7Q!;BSBfD^>?!1BvK$Eu_Pg;d&K{; zseX~Ts$c~LJ2fKjNZg5Bz33m8Z{iazWC0zjqlvh+Ul*LaiUe+ZHHC(b4lDK22djNq zdeJxey&il+)D$6ojwW^~9-I37?%8-+QcPu2wY{6HsH*+AsrxSC<&LVvV{Q;(b3rkC`+;3Fiz%7z+HPDFT%1KaJavv|&lYX!d(-c{ z^)y8~-NvSzCaSvg?K9Fy$Fxninv*QzhB3CUHfyH_csYKJr>w=@GSF_`eILieuRpx~ z*7aow&icn^PqM|g0hNus-%Zl=#JD+qdOnV8o^)0RFpFVrDnuh%ie3~*MfDu%_r_w? z%n6>`e;jWyVz!@$=PG-)QY{Q&Q+o%+mf3068F6tPWu`0zUgZGI4yQ0 zA+sb*^Wg)2@ioQICVjiS=e(kTiRP?aX2QTfOsr>&}5Y)p8d5kuE_>o{wJmU4}$Li4H#@A z3>z&Df8Tw*MTD!)NS_!7gK;_LX5{$Y{*jyzPrEmJZl~jic@886s}Pq=caxfvo_?HA zwG}@QrkVgGq2k$pynIjxj-bt3pz~fKnmX!`V2NELr-CT?^chO}AWXxm=w;r5E%E95 zT=|7(Wt};HN-W(tkZxxeiDk=fmP+qy7vgOeixJ72iVbIifjZ6u<*JfWq&w!BR`ysOb-arBKm+OTaaE-i-Fv1 zhwovE1hj%Pb_5Rhi7rQ3sQ~v@r)$0l8cgXc3aKM(^xE7_7USVK-9JPJ$WgHR$9}dn z__Cr^(5-DMioyIX?3fiE-W&QMlPM}z@7?%QjbSB9+Npfv*l}d^&)2eHiCpHHsCAAt z;MxA2Ft&IPDI^Ew+SWt&Ya3<0qUrXDh}`*r_AS=Da7-wq*4Gi$R}cnS2twyi%Z9AEnbP+rv8Fjm8x_CQ{+t*u40JnHy8Jj^A z++fT^P=Zt5=T4FGKDz(u(w;zqkEn)vBA&bU$i&J3Z--z9lr4zc@2}OXwtPqI-ON)+ z@i61L{5+?17p*+yAE%uvWAE2^)9NjxEqr}RHkM1Y^8&rRr0c_#Jduo=BNuLeG?5%E zQ>C#+`u+580?K2BVvNiS=q)YXmcTIiMs8Nx<~N%I`87BBO*YR#@bO$EcOtqv3C{Vq zkR=wQ6YKU8jc!XI44vt%z*ml=Q}U;<`txvada^oGNxU!9YSJq7ssXT;*qP*4f<>;aVKDb}sZkNILwhGgM=K%SgMmR@-nD75lU^gp zZU*ng0q_e$4m(7i&=VywOdh8FoDy&c)`U`(hCZR@IWcacPs4Q0PQW%vhLx5sHM)&q zFxzM{KL%kI*T)~`AX2D&@cRD#B4k;<%7<$O7jdcValNBo`>9rB4Zp(qaL(CWl3y^cy~G4_`3PA~ZB zZ++@NzrgL>*{jxKa}p;|G3sm}AESTe(3veaq*GTMKmpi#@g8WT=H-%bF2B-t%}+3AzWw0^vTS<`Wh|b}%CQ?Y zUWniT?6rndo0ADkFdI5HwJ_5?)H`+QPeS4^I`^-iv&f#elj2@+S@*qVS zLe<`$!QnjgI}|Yy9^v{QtW)c{EHvD$xYB2Z3x=H-NXX+xMuD(F1j3OQ@vxfav&L6I zL#@=Hsp%c*Io$BkWhuh$WiICE=kxl4cJuV@qCksWk^^@F?r$Hve_)B4odpudek*{* zN3wWo^R4e-zo1-jAQFf@T@#^fAgYhvg&sKO%I&ZYu`wMcBgTF07#OslDytlN_@N@1qMNQB96qw>jb7U-+WdlF8>WNyOs)fZ8k<;&LBLITg>n z8+kCOqCZ+BlFMPE1g$#}4T8#^B%;NggaGZ`2G4D(d(}X~Djw`9x9T;noObi_sLa+r zQ!uuG&mB7mw0nSv;oIFw`!e`fhaJ`4(4yv^!M$LN2q_Rtki1?$>v#cy#uU}?Ln1*{ z*fn9P{_+Z(#G}>hEy5BMp2u;jQd>aFnP8NEedS{i^r^s%Eu5{#z${dq?>M3CML9ve z;roCwtVx>(@ylTtt$=t z>W)D5;T#e>(q*dBlmC!$;uGKRV}W(-a4OFI&ugfc^bJo0mcWDjGDn56^+=C@FJ_oX zuKS4q4O)QC@!Sp4;4(3CvxBZ4Dy4jhu#0f#5I;%1#t>dy^csDEL*NZm7Iv-m;!8&|9CZZc7NaMmp&iA{>Nf0OJ8(cqCt5>ExQ5)J*Z-vJZ9IME0S zxjS?FL2vQ1vQwv0+??%AUBnOMgzoH4;d#5)@l_0T8@jv+TUq^B*oa;2LFB;h0{&F;AK#s-;A+CEAo{V(?3 z-uHf<=l%E|$9$MW@S5Se&UKz^{bDT-6~5;K0x(A>1jh#omyVp@h(HNj({wgwB$?(m1&oic^5$9zsV<_!qg8|uRA>*VcV@I%5>DEpy|#O>@@-FG3M2NHhE#s!oVHn_j)T!tkrF_rA*1TN2UO9UZ|ryDHML zY2`Q3Gqu7vn0p6zXIsM{mrj*ps#Z>%VcCZ&7V_+0@Ctxb1WK(`h391Yh|UO6?9$4| zcj@+$iGqhsZ>6VM5t~hNS-Fkb!t10GJsYID*VKJmenUxoQrN9AYj7COQ?FBzo0lXF zxdH~46Psn;?0)K3omHfz=RhzbS=G8ChE~F~q??hML+BrT1iil_S27MAF>8u^(TG_q zd=={rFO-^gPGlsh<-wFwiW!ep$t^#_>2uK9YG)`K`!X`rLTsTMrnUK45JjXfF%%5l zO4a>veU+|#(2dc_926KcfzV=$H}d&q5LPk_e~acxnik_A%zYcoYf(V&G(Tq-D5G7y zFB?x2_w6k^(MJu94qGmvq;2mPh}7()$&J}1O&Hm{Yw8_4(Nl6I!iRqazb?%qN)c=x z5qRkaE1cV2rp=AH}ny>Ody zq&x_ZZ2t4?jNaElf@eWoY0pxyLX|V(D7|_~@Uy=ECTIcZnu#P}3TC2=7b>TX`}6~4 z!t;Tqyd`Hqy1`proE!!2(6a3splw$2DwYzaW?5ge|Dta@G!sE@`dVlrKl~)W^Dfv6 z)mM+t+wK$gKbEV1Bo&E>ZKWEdjxg4wS_Mnt7jTndCPrcP8t0cGqR+(zIaKB|d3>1H z9VlJ)5Dp4S{d0RIiD#o(#b+*7vylhFR9~%#ev{+n{9Q{~By322YCJLL#(q5z$4-{M zPOK)nA98$~C=RNneo_*wtC(cUQA8tA z_LkdpLvn6}+eCsOd^!corvQtJTzdaUjLe zW#m8K-mnDn?H~n9W~zt|6qJEz%6`jcUEpIjsSpySY~>B>vAq^d?0(BOe}wfOuK{i= z{&EW^><%Km$@W;cspFOwiCGlmD>D|3q3ioz66msYgc!aAB;FZ3UDR)~@fyovWi zt--O*CdZ?~W&sWG`(aWC4DL?v)}t~;wu}hdl4a<9=tg)E|D?cZ0ZO-vp%5?-$Q_8f zjef!l{`r?SaUkLgQEgO+HYQp-*1_P|pqa(~43h!uLqh1~r|q}7<(x@Ct;$p@!w-$-*ewULkr#j=+lr7s_*No z_p=ywi`Ift&KBJBLECA#Nkg#roQf!5F+*v?WxPUV;$%97Pi@R^O!QMHOGMVs)r9Fl zXdY!|Bgsoe@Q?MB*6hZe;maNvqQEHfMAXcGR@llgHQNiRhL$vD<-NW#I_spIQJ?K} zkoz6kI?Q&KzT~S&I&fL8CcO`0Ed?`DW`Rq^m!H>@DmI zPy+Q`JF)hAiViZ%SU zh>-!^VNs%!HiU66CFT%)OI~b6L|)IGCp8m{( zi8;lWIH>RM%*tFtX?0=q3(YK2%@BoO^WwGXvNut;YAE+`hewfaPmxtC`rKzG>zLuM z)A9>!2hxx>Nu6smvR9B$78tALZ!0#i)(~Gje~2NWIbL8wS{R1CAQ7U?$zzQxokHO! zIFa6iA1`xudVhufdS6gGvfX^e9s~OwP{5Tl>d_}@@yrOj%m1UQ;P&fVx%`QG_l?tx?l%O>=y^mU_K72V4$h1CUf(VF}fv_-<(-}bjMika=Ge^q3* z(v>Bw1NOo-R;v3_kk_!bV!NMPM^p`3PJpo+2Hn0E%P^Zwe!T{{i{{p~5EDdp;-$d@ z@)DLhm4LvIye7?<_8ZQ-q<;_tN3%_$lyQYYa0hE=A~~ z*v)x!*Y(Gury;ChSaYay-zd2sXYdK~Mw84xl~KuZ?2a}c#>I;mRaR!X1e(MYa#yEY zj8L7~6L=|_l~7ct+9-979+Szcm$Wu~v2L-#i{G>vAi=%AGVC^=Y9%nv0HLUSLu~DGe;=M%K;JOW9$z~nCa=kY9wAoO8LBIX5Jow4@xpXoCGX&L}T#v2toPZ9pZ zru9pdK9rbAF1U})C0!r?0|tmwx1nx*&Dsu;TN$PbFp3)H^S=(idbQ=g^HXg*8%tj~ zwN*Vje+tCmU0RTgqH=+dKJBo8dRdVVFJyb_L;ZsK3=i7qjgih~%xFu7Nw5Da^2lF@ zd40RY8Gk1zO6m4+RCeDmXxv)KU=0AHz*09sh{^ZijYkI*9VHp(AOIz%w>*@w;D@5p`b&GQ4JCCm&g%jFgz z_rJaC0E9{Nc0@Tz%i@`^uotkH^tL&MY-4Bv z&|7IPf;=QGlN0QfB64h2c_nC)JD|#}8y3c5aU~gq63z+#&>9EjdVHc%KenCd5pUd; z!;Dv0nGl{BWm236rUCZRuowWz=GS!`a$+PLAYJ}Ny-uf`G?@Z^lMDKu6NQ9liJ`_o zXymIaai1mk+@|&jMI(l~Be0we;BFggz21&nFUID?w^-07LglcayVrvSkRz{&Bru05)&t$cbJY%9cUFOF-ngm`K8tWJL_ZKH!{MvhT zK1SXnJXa6Hw2p?0LiK*v*}&LF8EuhizBdGCKm$Y19E4zig!xtjUm9r0{s{?-=_Qnx}vpJ{l8|S|1r&TSu@(8ihi5_cb-k zjbO%=+>rDst2|VDcvpx?Jhn*!9eO^`^XIGrPB12rL}L}3n|4;&Ons$ktbmywH;>Tm znP$}O5cj(y6;YJ^&b3#7yUljj)zBL=ZHDE6rl`~c~RLbq3e!gug3#4m6seZxRdAIE~s<=!Y(HZk4tS)7!}CgAE1w= zao|R5a;8k=dv=7SirJE)Y$vkE;{{JTaKFug=XPd0bQ!8?uAN(8E*=3NBp!F~eP&?m z-Rm4kr-ocfJPY1_`xd=3@Pa(zQKB)>b7Q4&p=butYNjrAV<1D$`Jbe%;RBGgF)h-7 zn>=I@Dn}N0{-j4h2NE90*hErtq?zsZ1o`%!Z0QS-6BLJ%Nrhqwd9Y6tRUH;QUtT@} z2=Qq>x?E_c=GY_K5WA+!#aIo&Pp58RM>hcNx#LP>6nU>EhNQ1d97Q4VGHW_`l)y#! z{BlTIex2nXIV%C&!Vz>L zf8Zp=|ASvOkzK4iyps_A!iY0OhcX4m&*oz4OD+8T8rtFcZKIigBO9+)I&1T@_J^Ci zZel7!%OW?kV@ONuTl;#S^HeRjY8m+TW_}L&r=(}>y~X#L?e`l$tM?Aw-fWCy`3;>9 z-9`tsAZaAPrpz+$smG27JIj^(KoyO4)3w{YrhhV@4saxG_Wt6XCyGFxUwNYBZRejT zd1NUGU55uTPwE>>Zi(Ae)V}uVbb5Dxx3D zyhB{;7uehc$Z$oU<$3;+=2tPnGC=Q?lt4UfWo+VqEdMF8@* zU{sXZgnd!xcj~{c`A@f{wn&g>@>?JVUak14sr{LXS`>_a%j^0Z*D}_!YR%Vy9tRUg zot_B(#~mi|64+WTqi%7suove)mn}qyft2*Koj)lMK@ahnNw#4tV0%wb!HmNw@1|c@ zmWn@$@Mxb3{n}58L2tT;_>E$M&nj;L*1;UgaZ^8>$(*pm8(y{Ub6geHZh-(d8nHdX z!jSM17pJm!dsw=s>c_!=;|S!7OpSvDtA2b2HEkN0hXcMZ6@BB&#dae_0T^xR_`$Ch zdjA~rR`}xxovlaoFHe5WVt*cw$i!e*#1@QNKtOTdGlbY1@9_Gm%l{}J`u<N&oHP%s@f!F2Q{LhFKVaDS6q1(xid1{1AE+mUA& zo^j=K@y($;qPf~FLMjZh;edQNr@}hZB<1l%vo0w?QP-cQhYvJLzjhh7#QUzVKGSuc zOTGJOs^p)99C%4|;<|DLeW%;ai4#)u++Rmh5tky#0ZN@-C4wN`%nxHsM~2xwe}4OO zsHZ+sbWf`KK+I$7?a4gbJEdW|Wg(y)CVLIoFA{@#mFHPLvg-3? zEUm%eCQ-UkC*~(drBT$Nc{6>E+xg9XRKDO!CWfV_!!fx5+5U==R9-4n{cd{+=alUpI&%a*PC64*ZwB*TSCb%l

WSCYf11E6qQhCD|`JcX={h32Y%Q++|X2&6&#oCsX|I8%zfzu{z%x6}8%{ zhAoVvmi&AzcAL$k3UN+$1JCSeoq&{YuZfXia>tq0@`zOvkuNtBEQr+N(o@j{-zS9z zKqW$FsVP>PAJ18(5pBP|u42A$Wpp&K(w|wxH+573xOE(L+sn6V;?geQp%3>8!g-mu zhDH7Me$Ca4C^w&#X$dg467ojUhIorMUNl~k2~aMEC~~ZsgwjrZcbbZqCSgjYO9Qla z?jK5So^~Jf4|$a^^dByRrm>+HGe)?DC4GCTtAN8ut7+Z5m<`%@{rP#c49n14KLDCa zfJC1gdK-3|;b^B-uemdP5{%%-r;zQH{3^!3n|_y-l8WgQM;c+P@!RZi>{uPb7wQ;& zKCa+}__eR%9?)=1L{(~s2_?u}?2ivMnjP*I(?-M94khIYU09>cJFSFzCW zWPnUp+Dif^(BQe*c!hp9A|CmS%eS2uLz*(uY!#VVC)Vk%3`M$*ogLC>xcS9xs781L zkn2QIjGuLn)tqamMvG+j6?fmYCcaPJ-cHf&$w}jW4Q-v)Cfi{j8pq9ThM%+wETD|W zoWttdJ*Q>s{q4EYPZ0~ATRsZx8?LTFE39i(&c3lf+laip@UEyh?fw-guo>QmuDOSw+Nn-6nRPi=k6dls)^Bm&pvu3P#LNfbf*|7%J%CSo5oXBZuWyM44!>R)`MU)e7`mA%YNtDtIw=mM5uTL7ZKNnlX1- zAZ}zM0hn!)xzH8s?c(L@BrJ5Jv4CHkyB1owZk6y|homzc-Nv+o!e}-FKPD8DcB^EOEt2R z1qaBXhlmT9rx$uQ=BLV|PpHier6B?U>-_u0V>d_ReX$=03^kXBfLKP9-cdr{QUw&r zkBBXXv%Jz4Cpd|O?vB~Q1j=QUp$eID={OOdt-f!vTt`oMX>CV@yy1eRQ3hAGR$*t; z(WF*O!uD9rd#J_H*kaL(ByU%S_2)7{!)Ri$xpl`l|K!$l#91cD+c=7FoDz zbzkY95R=tzvF(O2y^$I$dgaC?xASw?@BvJuN(%)CbLt2m*(5wSmGxq~i3XN zWCf)R31|aQTSVsgO-M_3;`nCn4kD5Yo>-dCdQ^bO^22sVegAiDV!ERzsV)g zvn`KVy#94~*PFVCERN))bbw%J6wqNq?}e|{w$x@$)A=~XxnH%A`U6QEE|3ZYa#IMc zWThL?4;vNQXSs{=OZ|wpta`OUl{0_y=mt0j%O!r5inJ|VNxBQqvu=xMy19{M9B>Ux zJQ?SLk=ltN4>RKQyuDC9IfH94zUx#uF?S>LX>zQzAROm1GT>%#-G^q2;mU=2oEB|OT7|a z|Dat?fTba&cO`^CbTLaMkH_<349%hU8R4N0mv?j3jRS9?p8Bw*`Q!IOjm;Bnvmx_Q z2M6dzxi1-OGTyLkWLUWhou2u0@fhVO(I13JrV2O)Rx# zj1fcd7AKH`39;aG_u8qH_Njaf3{l43Z`bWS2ffz7#Y{N3Z~KRAl@R=SN&=F`?Bw)US!Qs4^WdX z|EMiy-opQtK`!WfrcKg4B}8qv`^kLVso6aA8CXa`Q+l;Zj0%G6q|(hE8XF3-$$%K^ z1JrAnw+dW^x=}fV%Aij(`20EYvkv6v*?=C&f4~KoK$yB=59$Wmw3<2dajStjS~lBN z*=KHJ%F21B_qDfMCoPNTz+;x*>#B>eIzD-&+I!~QJh1dX7EEX!ru*15%aE*;I^f3r zLJqh?!>if@VG>_m`24=84>&4sW;aPXtM(n)0UDoWtFvC|Eo?(+=aMEW#zK9=wi_N= z9*x?yso6TEyKg?3Ec%~IELaS3m1ftRfpLkqRVcQrz@j;~dMgVVwI;u=7q=F2YiG)O zc1|Vr63}9pwi@5nx3FH4itJ3;_v#RT!6O0j4)noW+%5opD#cJS16VcEE2I`WBSvXn z)nz|JM21W<=y0tRuZYSmF#J~g$h!jHsoq9vchyksSC&1=Y%qy9G-kJ_J|od>xlhfa zyCz^9;h=jYQ&xjNXo6qlyXE$TS5k;z2XOcFC(yl=Ph^rtjPCc#N;P?*`4wj+X>L&QDr2%|MboSFtYChrl2QPJZ%S9lHvI|@iAAspD; zsfD|gvZ>t*My174N#5b|!M0HTQ8_mR}(c?>UblJ{#bc;8@SmfF-Nu zOmv6?YKQ?72lUzq*&l)Yi=_tVLNa3Q0Tm{WaHLT#P<;C{m@n-DYYkDb;N8w370wT`>; z6EgixNSB-4r5WzeIA7GgXk`PtoeKr@Z=?nTYv9`_?G+TztX?n+_02bN{TwOS9qofW*yC*UA?Nyn(J3Sz-3VYRs zIhIX)oYE0XvhZE6(#}C_=+opX{h8hoY12p0oR0Io6YH@$y?w z0#s4u$lxt5qk10#xerCN_hn)far2{C6?9;8ASvm6o>KqhkN4kYfO$Vt8V3Dw)L6}S z?Q6BmehC<&cW(t;cWF#|qoc}5IFiO@99ph>z6!eSCwqz-y}lZ3@;uw>zddSonA@4J zEoIWJ8)X_1rNNwldQH5Qjjt2+)z#ajM$|P%OoCK9%V{$WiHVqDc)%qyb0SF z60aS=At3kqY7tQfK{MEAwETx*D;C`E1zVNUK+mJ0R~?6(O;AdES6GuoTr*IDBMIX4yOu=l=v3=i562PUaIxyzypJNDgOrTwkJIN+?3zLI`7 z7G@7v0yzD6R>9?5saiI^<&;D-jQ*J`KB0XX1}Upsv87=LXY{dPf!HI^eoQTxIaeei zab^QrA=YWa8&`3v7i*g> zk%{{0o^B4%zHw})MMjPxbC4kz+rJca%4JT7e% zG@CriJtvE_-fLG`8r?v@io=x8^DqYApG?ba`?SzPeqj=P_3Of z2bF5Ve%MOU9z_N@stv8_UPvi#XRqo@_-HkFCSeI1Nw5K`wAC$dZy5Oqd2wgQg*ubhmnCIFlc^KP!LfS zPI1O^Bem-LPe<6!Lymv%2c7voI+zo+8X|VxXZR1!GSIw><5x+33GY*5m(|^lz13G& zJ4eXwYdM2AY#w++^ihgWBlbW<{T2Zwel8sWev%HcEvRRNXB*VD_@qsPo%r;shT2ic zUw`eMHfs^nmg6lG*7I`LC<(`qSzF&vkE*$4LSkR@R{;&&U=*H*$KzycLW=#P*yJHV z?aV(eC|zC>W)?nqF4wqW2SyD1-^@v$xmSSGFh94G@`4?65FsO>oQ9Xj(|wtdV!L0+ z=C@VEwq2er!_6W%Y!gW{U)?TlZLI8Z+q2h+9vK;mpG&!p|(s_NqQGBfO2=W#-_4{M(!HbwZ z%!tNso&uw2QG#9bhw4%o2Ok7)PXR+t4sGd%Upt+Y?o9t}a`PdGJFum!J=2ixhH&xmlk(-GguwntBdf|CUJG$^z_3vId7TL#%{m|l{_OWC-sy9;Q5dgaJ z*}Kw$r)aC>TB1k6fauT|<=*OD^{4v!ce>DYlmS%&Vc(DQtV3r)r$TOg8uwOo1^2xe zx%ncDN?U-45r9?Pks(R?UUC^er*fBvR5^skwxH%d0ye_{PyI^ss0V|y%zk}obLYp0 z`|m)YO4Ilq)^Bf|jfmnSjsh8jORWiKa@@f}lPB0}zNVN&*h_T@$nqe*@N;Bbma+N? z3v6r0ch_g%-+X>$?gs(EnNAmJ(XL-NUoLUZcL;@zsuik#22K)!a$>>}xp*2Ul&ORH zTHZD1?r_}AboZq=;Qt}rJp9Uu`5A^qz42K?KQ0gsrQx;@-<=lXKdj3ph^{h;cNG!Y z1vrNXWADD{OH)w|)aB5|HZ2rIe`5HeV~G143mZgi{o`xc*Gh^d!JNDlMRCKBOU`|a z3o-!~fZ0p3PfhnxD?M@a4G&mJGbpVD+Rj>+l(K0%2I)tv3y{~qW8Sjx7jaQcyZjOz zR#T9-V>*1ZdfL$KcnKAlB!8WQrYrw?MS_QcBXP`vF~1ow+fF3G3%tQUQedm@LPNdq0fhuJl`MWZ#jc%i25k@HYEMNR91!9-05l^ zCWhcfpx7#~QQ^T|QwfqcS4R+&V9xC2!q8qK&1i7Cy5b2 z(6yXi_c37I0%qG-=RQ67_^$b4@r&9PFY<6swr6Fk8B3uoI{Vo?lyUG#l#_j5*|e!? z=++EsE| zQ|Sf!U48@dzSTR=%Urjbu{=HOkCC|cwz{Jc;I#g=!~B+C=iRF9dcLp~4ZXj;dKRvE zuu1$KRU!l*HF*k5LdlgMs)DwB4@8HtfAbfNym5)R<8zB*m0PKyb@Z8m=l9XX0UZ1FNuhj;l@`jL57*mKZ1?w<%ft{t|A#wiRHaOjW^b)o zvo>`Y(8(u;_k%8o)1MhN5?{Q0gV^OrOsDiEwn(dzNZe;2k@;QzTS~zJ#L2!U{d(u` zT`uk7m(o{M(?~8pIWdu$LVE8kh8a?juUbkX&Z8wOp6lAY9QDTxqCyEvw{r0i^{bbu zwgpt1lS`B-hFm$KfqXR)G&rad%0)9v!ywbR^L{W{$vkBpW%;vtVb{Yz!5{5lt?k=i zCEK>0Ef-07dP_5$AH;v7pi;k=H>?lXr1-h+#oYqOk#y2_&Q0coJ4@>q(}6Iz4CX7j z*;-KghZRp^p3xdKRF2{?pA&Pw)bQ&2Vm+cdfT8YjZLT|g(5>Pl)e@Kv`WdU_&HlU@MwtN%h z`oR)an8*cfmpU^|*cKtM2?>K5IpcMs6+o$oY z*QFv_BdFhrAGB?Dj#o9cN+s^Sc1RBb>kr3l*F=BY|9-PbzWh0i5(L0xgw>b?tDzSz zK|iJ6hR)W#uS8_?VT%XVWen_c|KGk0vd*r91m zULJv*y7Dx=4gIV*VPth>^gOx`-v1#kmBWBD+Wk<}8m~A@t+AL573GEM!LXORc7hY= zFb05}-^aSuV9@gQR@lIMxy*^xz;|g~<#3nk4daN43wjid8zpjn5|o7UW?EZvOsJ4_ zBM+8V=Ua4{eOU(Jcubu80C&P@b`gx^n8Drr=tbgG_UKhDmFgg3;tZopa;S*JR4zOg z)B;Xx0}!kMT=aXS{l&%^Q+Ns85dU)Ar1nm8>P~kk1B(gS2Yt!$ZzYs79?hO-=Jh_; z75#wIb09fMsD96!Zl4Den@)*qgjCQCC$BE@V_9QB8*2L;JV!j%v74K82r8k1H20ix z991w@CaZ281wO0(r`AU|-&PX=!1tW+%)aXuyRM}DyiOE?1@?e_F)Dp;x2)0Fr&=8h zztkZlnEVO)c? zn#$_~foyEdmoTd~wGboIMb*(7C>Fi?bNISO9VP>}+BVyWh_;FS0jmf!PF1E**D&U3 zNaIEZJ_i9h@5;QEIapZjnKbM;eAlMM5;^s4XL$Smm@#KxmyFoA1HKhv_ht6U9j)eh z3_*0_&z-L%S(htxM8;OL5X)Yx{eBX@E?6>T^NLN|FXQi&qkJQ6v=b7%BtN>pE_!PS z&j2VS+tOuMMzbWObwe;w#4m?_k4xw9)kBu*Z1nwiUD9 zrQZVv^^nzQxX6MQ#R%`LJrt}+qOh=C2hQ#Wratc|X9#UaitJr3#WyU$L%>L+8 zKj$x%wNE<2ft6-tnGeomUbFa&_6 z@AwZN(<%9Dyjt%}q?3mq*aD9<7Ciw-RImk;Rz;V>>s1lrn!XHP2=u*A$P6bH zfTX#(UY-F(?$DlTe|&u&^gNw#5c4b0k*Cxs6VegTS0s%kK5N-#40B|6QPs%a@`s*c z16?&w0O}Ew!qB+y^^*y=&a;R_ldacMd&`4kDvhX*NNpNKsU5E8+`SHq4lbrPsx@K{ zwZkt>(g6N^mUi$$t_=fZ;-~e>V-|5T2wH+a1r{9wwPcAF#Nwj0vZ?NL=OlP><~Zv4 z7uy~%F}+apPIizo#Hl|+^{6wFCHGmk?KT`S^Jxxc22D$R#muspwW?P$M7u5Csh2Hk z>eW*vrvF4RcqP+(K*6Ttgy+jp6!_RkN*1?(F3vwH(j!UCcepi6=S(VLLH-uDgK)(% zhH_XQN9F|Y7(0^5xPa7_nn#2&?mYeMiGo>iqj0?WZS_N=G{bhjMlr+h#_Ia_gfg|u zJaPk&|4$rU96utE@H#f%qo!1r_xlycBOC%We?z=8^vu#=uiyp@` zUQOKIOz8j+OhY>JJjkHKx#|JL?q4xcnf?#Zuz_lu8J_#{iIcna7}3<)rHaz@fs;S; z3BQc0)RXTzSV|9KwmIBwi<01TMwNf&qXXuw4ab3lXfTC9Wi!7DrQiV#bB@#k@|)^- zxbL}hCg0x5N19g;{4}o)2(WOVaAH!>R7w)aR;DZ>D3Y~JI;%Y}(N^sYsjZo?#|F7p+C{sPvoxAliw2PI4A9zn`rzHD^C zNO0Af`(w0X=k)J;9BjKQ`^8(5?Q-d{9vpa$1+RnydN|NhT~17!avf4(;os%@FZz;IiL;#RBu3fNXG+Ls5rqP`A;o_{Y>UC#d<$?Vq3JFA5&dR@#F$pK3O{m60R^KL!MJlGw(h z7M&trcvz=NPMPQ8VMEis*MljX=E8djcEk`p=}ZydK^=>p%JdP7Kh(ez1$zWcfAik% z_yI^`vC5{Aj{Q$@lX*A=tg@Kq z!`<1)V%SPtId2e!iS!$fYWyd|2K%&GibckS=jy_{v%>cegL=OdUY~od z+b4aU17zf$MO*hE19QZNMPMk$ExH3DV``Z|QJvw=>w4IMPU9T$ZexxM|B*L%xGc@V zi^{*Nzg2XK@WH^H!Ml0AJ}toKGM}2cAS-y+!4yap61J#4IIOjE-VAXTe)pC2RKZK2#z`>h4Czl~*7@dle-k*k zWec^RRu+@y>R_OnKbQ^l8}@`l#$lT;(y1*G`*Ju_nyHW>1V!w?{6fs*qUZfJs`0R4 zAPkBbtI~%N$j!t<=CShJbFa9z>Z^@$3Y$?NDhc1Ht#f-ITs()_8@Y6WY8-}lU2Z`m z{}tGXfmAT-elSUu8!8Mx+>T;RESwMEn^b7kNP$j5o(=B9d{lgO$}_g+OP|WqV4-vE zv-|qms=V-LgB^laAD~X7{v5uUG-rl95RWAs*$m6^0SogZzQcl*ehxrzByi@+Guu^h zu#n~CGRGMuI6TyGq3mWpDcu3=GV&LS=yv9fdqw3SCo=Yvh4< z#Ij#*xhJ27PL)yKQztnE?FOqP*)(`*n!`(s5oQ>vRyQy39$jkX%vt=KoLVgPc7(jtf{8=<_ ze(ef|6WK$-qs`%^Cis?uhw!AVpz9(&^>z6db?b<_%_|jzvrVqIq_s!xYv|MyyafT8 zJ|}BZ466CDI4ruF<|7%*8YQ~yaL>;+`mu*Op*81oHl;{pOU7$m9|J=zDBcsr3?#7* zWJ!cZ8Xgor&izF3%QGZ=px)bi*B8kO*@#h1!z+BPhJ67yp`Jg zr`m6C#!^%1G|(&cv%mG{REuZ;gOU)H4S#04o*wLfK2*?FH4p|Q_+ksLJx`8OKsETO zaK=IQ9WGO4K`~r~8wQyuvx6_c+O+Mw1zv0J86|S3A4uvsmJ%Z(XZy)^BY&Z3TWw|J zv#`yRy06gDr)Fm?60|=X4odb_i=21D8Rh578%C1)P!IWziBp=b3(IrLd?ES5fG*qf zzLI=F3Q46KAH>%LE+>IKYYtT+C?^%^0t$eRN6Wj1+9~O;A=My|)*=IG@W#XFeW)Xv z{x6id;Iix8(W9s`d-ZWq%;jP=L|BV`!D(;*{Zex*(+~sX%Hy^VV%Ns$a;a13C-{Ut zzcB2dQA{*1*AXTkL~DqoP&9HC5WLK14 z#&UhPagj}l=Z(l){J~VW%mS*>%$(2%E%o=oE5%VsMVbWWNA8;%tU0R^f1u+m;>>RJ zQ#}CtIU?ycxIkT2TKzlm@zL!|>shE(zG-~rvm9Gf050WFfe#Faz?h&xYG{o3?ooCcEh5b)* z%|4WFHY*-YlzbF=*Ib3wXF&417;F7~u551b#}eX`*?EEFL;*97YFAlW`UZULTXdTk zEpm76H1C2V%Y+}1fuRITHg^0z=Wrq&S6-pBXySqbSlD)w7LA$+^F5x(iI7KDS8yR< zL$mc$x4(!lm0h`@aWvgSu6MbqYr5&+9B8CM%z*ee+eX(T&4=kig_4B+w7& zXhRFp@b;(3X}wheM)c99pnOI%*Qm4mbMrVsw;Cgf#4{y*8WJM0y+l(H&W-;P<#QyR zN!EQ-X+jE@l3pr9H4h`7VM$M-VR$DqrZ^0Epu*%pm?Ux4B*YL~y}eD6iG$7o{sOT? z8&fHy9PQrjJi|VIM4HhA%?dtbkdQNZ(_S~~ z=4PxE{^=b4t5MAdKFA~282TDV$Ac(=h8}u&+ZRz~7P+Jg7JlEYFS`8h;UKUssh$0Q zEK9)T;DBelmb$HLM2hdSWwQt@;}p9PKn6Z1Qa-b2hY~`RZ`u6yE9o>?zeLe_cP;)Y zN&1jxi5N5s3|oZaSV=m;LBOyV-+cWsvvQ{s)k!!BV~K>F?0Vm z(0wuJKeN;(^{jJjqlvx>1!8Tu)-5>hW&mB)!;)VSQ)qGz!r-9pSZvWbO z^#dN(fVY47rf9;dW85goMz=K5Aj;;xIArcaqU0k{NOX>iEob_U)T478T;~J6C zJ>5q!dd$9b>a{E2f`wKTc2PaeE9OFTYpEMn6|OJry=oGV;}U-((gijj&mV+oyTZ(xw9412Q&4mTcPuL%?nisp|4bV z>x^JMhv6{U9OL8uEp?mT%G$qkn{v4oz;fhlJR@EC@us@4U#GN%AT7;g{^@rxb70{w z53J^bnAgYbY*bBK@Ny0++5h>ji13gBi^n*V`I%(Jb@Sb?BEo@VXq7`>Q3iiWm9mh2 z*Bj_n3>_v}VD5Drhdu5AZKaO0{3Ef)cI;8T2Qh!1AhlHBP+wielTUYNA`L0g29|FZS* zfxG&^kAPbhc{z=B_-4gU;$yQS>U7nmx7%lsCs_Wn1!iOSvplWN)?k*fv&NQgJcoq3 z+?PmE%RpD#I=z2xDKOerd8L(jX0t<7X7la@#(8Iw{Sw{XuOzBzCMV)n*x)Hh+74vD zUU#Csl$mB4-z>f~+s^O}?D)PNy`Ru{*w6ff!#n}lpO>Q>yG0WI+7}m|!y1M) zbN%>f2wq=-R=rQ%jt{U60j^p`$g9mGz%WfKmnq(9`YUODqk)zueXey;DE^!5OS$*o zxj!o2HG4La8D0D((*b&0*0Csm5&B%-S_e4C%3T|r4#K^A5Boof??J1Rwzavz$|x5R zvDnGaX_SZeIh;ouPscfnO&7jpn(ju{JD*NkiL1a1{f}t{jF$0ZteS%=<-&wtF?nG;$OYA z>px6R2oMB1mKq`!E!Ih?@0s+Lh;AO2uREWty{vb+4yRGhi2U%+GN({NDuR|t{aiM9 zJ-+0cw9%I+b;#&bs>-6HeW<3hnjHOyF5#Z{hsHS`-Fsrk6Ams3=*x+(wg0n6{wrIi zfF#qrtxXh3;l1g^8dQr|Bn}Q;%{)G1b2EAt+Yw!a17&kC| zo?AF)=X6Y0Aw&covk3iJE|{_U|Ggc0>3y<%C8oera1rtt9#Rol#BwS9tYpFYMXCnu zdqme^sz4SIc+YV`N%@{^&^uUT4DJnN2JmbHt}}&)XGUWlf{jRVjTP>|#IVPD$sI*} zsR6iQPh`g9HskG1`26v)4>$^3QSPzR8Lwx}fn#vTdD9X5{*Y=5cnW(Y3v~U*cN2=* z;X+s#3V9p>34PM%?r`CaTx*c)?(+fu3aWboFyt=akR{0Q`t+a{vGU literal 73257 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 Date: Tue, 12 Nov 2024 14:47:07 +0100 Subject: [PATCH 21/44] Various changes and restructuring We have moved the developer install to a new section and reordered gettign started --- docs/advanced_install.rst | 155 ++++++++++++++ ...gacy_install.rst => commandline_usage.rst} | 0 docs/{original.rst => detailed.rst} | 14 +- docs/getting_started.rst | 189 ++---------------- docs/index.rst | 17 +- docs/notebooks.rst | 8 +- ...hare_architecture.rst => python_usage.rst} | 19 +- 7 files changed, 216 insertions(+), 186 deletions(-) create mode 100644 docs/advanced_install.rst rename docs/{legacy_install.rst => commandline_usage.rst} (100%) rename docs/{original.rst => detailed.rst} (99%) rename docs/{lephare_architecture.rst => python_usage.rst} (81%) diff --git a/docs/advanced_install.rst b/docs/advanced_install.rst new file mode 100644 index 0000000..90ab0d2 --- /dev/null +++ b/docs/advanced_install.rst @@ -0,0 +1,155 @@ +Advanced Installation with full clones of repositories +====================================================== +LePHARE is split across two repositories one for the code and one for the +auxiliary data. Advanced users or developers may want to edit the files in +both. In this section we explain a developer install and clone of both +git repositories in order to allow modification of the code and auxiliary data. + + +Auxiliary Data and the Environment Variables +******************************************** +LePHARE depends on auxiliary data sets such as spectral energy distributions, +filter transmission curves, and attenuation curves. In order to keep the pip +installation light these are now stored in a distinct repository called +`lephare-data `_. + + +We have built some automatic machinery for downloading the required files +for a given config `para` file. The automatic download functionality can also be used to +download all external data. However, some users may prefer to simply clone +the entire directory: + +.. code-block:: bash + + git clone https://github.com/lephare-photoz/lephare-data + # Set the LEPHAREDIR to this data location + export LEPHAREDIR=$PWD/lephare-data + +.. note:: + lephare uses environment variables to locate the external data and work files. + These are set by default to your cache. + If you want to download the external data to a specific location you must set the + environment variable `LEPHAREDIR` to its location. This must be done prior to + importing lephare in a python session. If not lephare will use the default cache + location on your system. + +In the following snippet we show how you might set the `LEPHAREDIR` to a new location +and download all the auxiliary data there: + +.. code-block:: python + + import os + os.environ['LEPHAREDIR']='/path/to/my/preferred/data_directory/' + os.environ['LEPHAREWORK']='/path/to/my/preferred/working_directory/' + # You must import lephare after setting the variables + import lephare as lp + # If you do not set a config input to the following function in gets everything. + # Data will be put in $LEPHAREDIR + lp.data_retrieval.get_auxiliary_data(clone=False) + # Setting clone=True would use a git clone which may be faster but will only run + # on an empty directory. + +* `LEPHAREDIR` is the location of the auxiliary input data. +* `LEPHAREWORK` is the location of the intermediate files produced during a lephare run. + +Both can be set if preferred or left to the default location in the user cache. + +Developer Installation +********************** +The developer install is required for editing the code but can also be useful +on systems that do not have PyPI binaries and for systems that are not well tested. +Before installing any dependencies or writing code, it's a great idea to create +a virtual environment. LINCC-Frameworks engineers primarily use conda to manage +virtual environments. If you have conda installed locally, you can run the following +to create and activate a new environment. We then recommend installing in +editable mode with the `-e` option so that any changes are immediately propagated. + +.. tabs:: + + .. tab:: bash + + .. code-block:: bash + + conda create -n python=3.12 + conda activate + git clone https://github.com/lephare-photoz/lephare.git + cd lephare + git submodule update --init --recursive + conda install -c conda-forge cxx-compiler + pip install -e .'[dev]' + + .. tab:: OSX + + .. code-block:: bash + + conda create -n python=3.12 + conda activate + brew install llvm libomp + git clone https://github.com/lephare-photoz/lephare.git + cd lephare + git submodule update --init --recursive + conda install -c conda-forge cxx-compiler + pip install -e .'[dev]' + + +At this stage running the tests is a good way to check everything is working: + +.. code-block:: bash + + python -m pytest tests + +Once you have created a new environment, you can install precommit and pandoc +which will help you to run precommit checks and create the documentation locally: + +.. code-block:: bash + + pre-commit install + conda install pandoc + +Developers can also build the documentation in the following way: + +.. code-block:: bash + + cd docs/ + pip install -r requirements.txt #install sphinx dependencies + make html + +The doc entry will then be located at `../_readthedocs/html/index.html`. The +documentation includes a rendering of the notebooks, which thus need to be +executed. You can bypass this stage by replacing `make html`` above by +`make no-notebooks`. Executing `make` will list further options. + + +If you wish to incorporate your changes to the main branch, please make a fork of +the repository and then create a pull request. + +If you are having problems with installations, there is a list of known issues `here `_. +If you can’t find a solution, feel free to `create an issue in the lephare repository +`_. + +Some developers who are familiar with the original version of the code may +want to have all the external data present in the same repository as the code +or some other preferred location. They could set the `LEPHAREDIR` to the code +location and then use the automatic downloading functionality to put all +the auxiliary data there as it was in the previous versions. + + +.. note:: + The single quotes around `'[dev]'` may not be required for your operating system. + + `pre-commit install` will initialize pre-commit for this local repository, + so that a set of tests will be run prior to completing a local commit. For more + information, see the Python Project Template documentation on `pre-commit + `_. + + Installing `pandoc` allows you to verify that automatic rendering of Jupyter + notebooks into documentation for ReadTheDocs works as expected. For more information, + see the Python Project Template documentation on `Sphinx and Python Notebooks + `_. + + The environment variables `LEPHAREDIR` and `LEPHAREWORK` are set on import + in Python. Care must be taken not to reset after importing. + + It remains possible to build the C++ code using either make or cmake directly. + This is not recommended and will likely require OS specific changes. It may be + useful on unusual systems where we do not support compilation. diff --git a/docs/legacy_install.rst b/docs/commandline_usage.rst similarity index 100% rename from docs/legacy_install.rst rename to docs/commandline_usage.rst diff --git a/docs/original.rst b/docs/detailed.rst similarity index 99% rename from docs/original.rst rename to docs/detailed.rst index 33ad9a9..697bbb4 100644 --- a/docs/original.rst +++ b/docs/detailed.rst @@ -4,13 +4,6 @@ Detailed LePHARE user manual Introduction ------------- -LePHARE was written by Stéphane Arnouts & Olivier Ilbert (Laboratoire -d’Astrophysique de Marseille) and later by Johann Cohen-Tanugi -(Laboratoire Univers et Particules de Montpellier) and Raphael Shirley -(Max Planck Institute for extraterrestrial Physics). Full details of -all contributors can be found on the main GitHub `here -`_. - This section contains details concerning the internal structure of the code, meaning of keywords and how to run the code (with the python interface and/or command lines). @@ -2537,3 +2530,10 @@ Appendix B : keyword differences between the Fortran and the C++ version (:math:`L_{\nu}[erg.s^{-1}.Hz^{-1}]= A\pi D^2[cm^2] f_{\nu}[erg.s^{-1}.cm^{-2}.Hz^{-1}]`) you get: :math:`L_{\nu,\odot}[erg.s^{-1}.Hz^{-1}]=10^{-0.4(M^{AB}_{\nu,\odot} -51.605)}` + +Appendix C : C++ compilation flags +---------------------------------- + +C++ compilation makes use of a number compilation flags which can be changed +to improve performance or enable compilation on unusual systems. By updating +the CMakeLists.txt file flags can be removed, added, or be updated. \ No newline at end of file diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 049ae57..9b3a16d 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -6,16 +6,17 @@ Getting Started Installation ============ LePHARE is distributed with `pypi `_, and -thus the simplest way to install it is with pip. This depends on having both -conda and pip installed. +thus the simplest way to install it is with pip. This depends on having +conda installed. .. code-block:: bash - # We recommend using Python 3.12 which is the best tested + # We recommend using Python 3.12 conda create -n python=3.12 conda activate pip install lephare - # If you want to run the notebooks you must install a notebook server + # We have prepared a number of introductory notebooks. In order to run them + # you must install jupyterlab with the following commands. conda install -c conda-forge jupyterlab # And create a kernel which has access to this environment python -m ipykernel install --user --name @@ -24,8 +25,17 @@ conda and pip installed. For existing users accustomed to using the command line arguments, those should be immediately available after pip installation. +In order to run LePHARE we need to download auxiliary data such as filters, SEDs, +and attenuation curves which are not shipped with the code. These are explained +in more detail below but for simplicity you can download everything via Python: -The following Python snippet is the most basic example of running lephare end-to-end. +.. code-block:: python + + import lephare as lp + lp.data_retrieval.get_auxiliary_data(clone=True) + + +The following Python snippet is the most basic example to test the installation has worked. You can also get an example notebook running this code `here `_. @@ -34,8 +44,7 @@ You can also get an example notebook running this code `here `_ -which should directly run following installation of lephare via pip. -You can also see the executed notebook with all outputs :doc:`here `. - -.. note:: - Lephare can be used either via the Python interface or from the command line. - The use of the command line executables are generally for legacy purposes. - An example of using the command line arguments can be found `here `_. - - -Auxiliary Data and the Environment Variables -============================================ -LePHARE depends on auxiliary data sets such as spectral energy distributions, -filter transmission curves, and attenuation curves. In order to keep the pip -installation light these are now stored in a distinct repository called -`lephare-data `_. - - -We have built some automatic machinery for downloading the required files -for a given config `para` file. The automatic download functionality can also be used to -download all external data. However, some users may prefer to simply clone -the entire directory: - -.. code-block:: bash - - git clone https://github.com/lephare-photoz/lephare-data - # Set the LEPHAREDIR to this data location - export LEPHAREDIR=$PWD/lephare-data - -.. note:: - lephare uses environment variables to locate the external data and work files. - These are set by default to your cache. - If you want to download the external data to a specific location you must set the - environment variable `LEPHAREDIR` to its location. This must be done prior to - importing lephare in a python session. If not lephare will use the default cache - location on your system. - -In the following snippet we show how you might set the `LEPHAREDIR` to a new location -and download all the auxiliary data there: - -.. code-block:: python - - import os - os.environ['LEPHAREDIR']='/path/to/my/preferred/directory/' - # You must import lephare after setting the variables - import lephare as lp - # If you do not set a config input to the following function in gets everything. - lp.data_retrieval.get_auxiliary_data(clone=False) - # Setting clone=True would use a git clone which may be faster but will only run - # on an empty directory. - -* `LEPHAREDIR` is the location of the auxiliary input data. -* `LEPHAREWORK` is the location of the intermediate files produced during a lephare run. - -Both can be set if preferred or left to the default location in the user cache. - - -The configuration keywords +The Configuration Keywords ========================== Taking advantage of the full capabilities of LePHARE will depend on a detailed @@ -132,104 +79,4 @@ grid which would increase accuracy but take longer to execute: config=lp.default_cosmos_config.copy() config.update({ 'Z_STEP': '0.001,0.,7.', # A very fine redshift grid - }) - -Developer Guide -=============== -The developer install is required for editing the code but can also be useful -on systems that do not have PyPI binaries and for systems that are not well tested. -Before installing any dependencies or writing code, it's a great idea to create -a virtual environment. LINCC-Frameworks engineers primarily use conda to manage -virtual environments. If you have conda installed locally, you can run the following -to create and activate a new environment. We then recommend installing in -editable mode with the `-e` option so that any changes are immediately propagated. - -.. tabs:: - - .. tab:: bash - - .. code-block:: bash - - conda create -n python=3.12 - conda activate - git clone https://github.com/lephare-photoz/lephare.git - cd lephare - git submodule update --init --recursive - conda install -c conda-forge cxx-compiler - pip install -e .'[dev]' - - .. tab:: OSX - - .. code-block:: bash - - conda create -n python=3.12 - conda activate - brew install llvm libomp - git clone https://github.com/lephare-photoz/lephare.git - cd lephare - git submodule update --init --recursive - conda install -c conda-forge cxx-compiler - pip install -e .'[dev]' - - -At this stage running the tests is a good way to check everything is working: - -.. code-block:: bash - - python -m pytest tests - -Once you have created a new environment, you can install precommit and pandoc -which will help you to run precommit checks and create the documentation locally: - -.. code-block:: bash - - pre-commit install - conda install pandoc - -Developers can also build the documentation in the following way: - -.. code-block:: bash - - cd docs/ - pip install -r requirements.txt #install sphinx dependencies - make html - -The doc entry will then be located at `../_readthedocs/html/index.html`. The -documentation includes a rendering of the notebooks, which thus need to be -executed. You can bypass this stage by replacing `make html`` above by -`make no-notebooks`. Executing `make` will list further options. - - -If you wish to incorporate your changes to the main branch, please make a fork of -the repository and then create a pull request. - -If you are having problems with installations, there is a list of known issues `here `_. -If you can’t find a solution, feel free to `create an issue in the lephare repository -`_. - -Some developers who are familiar with the original version of the code may -want to have all the external data present in the same repository as the code -or some other preferred location. They could set the `LEPHAREDIR` to the code -location and then use the automatic downloading functionality to put all -the auxiliary data there as it was in the previous versions. - - -.. note:: - The single quotes around `'[dev]'` may not be required for your operating system. - - `pre-commit install` will initialize pre-commit for this local repository, - so that a set of tests will be run prior to completing a local commit. For more - information, see the Python Project Template documentation on `pre-commit - `_. - - Installing `pandoc` allows you to verify that automatic rendering of Jupyter - notebooks into documentation for ReadTheDocs works as expected. For more information, - see the Python Project Template documentation on `Sphinx and Python Notebooks - `_. - - The environment variables `LEPHAREDIR` and `LEPHAREWORK` are set on import - in Python. Care must be taken not to reset after importing. - - It remains possible to build the C++ code using either make or cmake directly. - This is not recommended and will likely require OS specific changes. It may be - useful on unusual systems where we do not support compilation. + }) \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index d8cb797..096c326 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -17,20 +17,25 @@ LePHARE (PHotometric Analysis for Redshift Estimation) :align: center :width: 150px -LePHARE computes photometric redshifts and physical parameters by fitting spectral energy distributions (SED) -to a dataset of photometric fluxes or apparent magnitudes. LePHARE is a Python package built on -a complete rewrite in C++ of the `Fortran code `_. +Since 1999 LePHARE has been a code for computing photometric redshifts and +physical parameters by fitting spectral energy distributions (SED) to a dataset +of photometric fluxes or apparent magnitudes. +LePHARE was originally written in fortran (Arnout et al. 1999; Ilbert et al. 2006). +It has been completely rewritten in C++ with a Python interface. + .. toctree:: :hidden: Home page Getting Started - Advanced usage via Python interface - Advanced usage via Command Line Interface + Advanced Installation + Usage with Python Interface All notebooks - Detailed documentation + Usage with Command Line Interface + Detailed documentation Keywords C API Reference Python API Reference Known issues + Acknowledgements diff --git a/docs/notebooks.rst b/docs/notebooks.rst index 44acd4e..56041f1 100644 --- a/docs/notebooks.rst +++ b/docs/notebooks.rst @@ -1,5 +1,11 @@ Notebooks -======================================================================================== +========= + +This is the full set of example notebooks. They range from very simple and uninformative +to demonstrating advanced access to the low level functionality. They should all be able to run +independently following installation. + + .. toctree:: diff --git a/docs/lephare_architecture.rst b/docs/python_usage.rst similarity index 81% rename from docs/lephare_architecture.rst rename to docs/python_usage.rst index b2deb1b..126c479 100644 --- a/docs/lephare_architecture.rst +++ b/docs/python_usage.rst @@ -1,7 +1,19 @@ Advanced Usage via Python Interface -------------------------------- -The best way to learn about the Python interface is through running the example :doc:`notebooks `. + +The best way to learn about the Python interface is through running the +example :doc:`notebooks `. We have made an intermediate notebook to demonstrate how a new user can download +the required filters and run lephare on their own data. You can download the notebook +`here `_ +which should directly run following installation of lephare via pip. +You can also see the executed notebook with all outputs :doc:`here `. + +.. note:: + Lephare can be used either via the Python interface or from the command line. + The use of the command line executables are generally for legacy purposes. + An example of using the command line arguments can be found `here `_. + Whether or not you are running via Python or the command line there are four key stages of a LePHARE run. @@ -132,3 +144,8 @@ https://github.com/lephare-photoz/lephare-data/blob/main/examples/output.para In general this output will contain the best estimate of the redshift alongside other physical parameters. + +The three most basic notebooks which demonstrate the key Python functionality are +available in these notebooks: :doc:`Minimal full run <../notebooks/Minimal_photoz_run>`, +:doc:`Intermediate usage notebook <../notebooks/Intermediate_usage_notebook>`, and +:doc:`Example full run <../notebooks/Example_full_run>`. From 803fac848ba438f5a69c2fac9a93b8aac7995058 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 12 Nov 2024 15:34:11 +0100 Subject: [PATCH 22/44] Other minor changes based on discussion --- docs/commandline_usage.rst | 12 ++++++------ docs/getting_started.rst | 9 ++++++--- docs/index.rst | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/commandline_usage.rst b/docs/commandline_usage.rst index 17320a7..b992db1 100644 --- a/docs/commandline_usage.rst +++ b/docs/commandline_usage.rst @@ -1,12 +1,12 @@ Advanced Usage via Command Line Interface -======================================================================================== +========================================= The four principle command line tools are immediately available after installing with pip. They can also be called by building the c++ executables directly but that is generally not advised. The four basic operations are summarised below. -Legacy code overview and main features --------------------------------------- +Running with the command line +----------------------------- LePHARE consists of a set of four principle executables: @@ -38,7 +38,7 @@ overwrite the config can also be passed to it. --GAL_SED COSMOS_MOD.list \ # optional flag to overwrite --GAL_LIB LIB_VISTA -`mag_gal`` likewise can be run with just the config and type but is also highly customisable. +`mag_gal` likewise can be run with just the config and type but is also highly customisable. .. code-block:: bash @@ -51,7 +51,7 @@ overwrite the config can also be passed to it. --EM_LINES EMP_UV \ --EM_DISPERSION 0.5,0.75,1.,1.5,2. -Finally `zphota`` can be run similarly. +Finally `zphota` can be run similarly. .. code-block:: bash @@ -66,7 +66,7 @@ Most of the optional flags that are sent to the command line arguments correspon keywords in the config file and effectively override them. A more detailed example shell script which will run the COSMOS example can be found -`here `_. +`here `_. This `example `_ also shows some more advanced features which can be accessed via the command line. diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 9b3a16d..1394e33 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -27,7 +27,7 @@ conda installed. In order to run LePHARE we need to download auxiliary data such as filters, SEDs, and attenuation curves which are not shipped with the code. These are explained -in more detail below but for simplicity you can download everything via Python: +in more detail below but for simplicity you can download everything via Python (~1.3Gb): .. code-block:: python @@ -36,19 +36,22 @@ in more detail below but for simplicity you can download everything via Python: The following Python snippet is the most basic example to test the installation has worked. +This will generate intermediate files and outputs stored in the cache or to +the user defined storage locations discussed later. You can also get an example notebook running this code `here `_. .. code-block:: python - import lephare as lp + # Continuing from the cell above... from astropy.table import Table # The following config is highly dependent on your input data and science goals config=lp.default_cosmos_config.copy() lp.prepare(config) # The following example table is in the lephare input format. input_table=Table.read(f"{lp.LEPHAREDIR}/examples/COSMOS.in",format="ascii") - output, pdfs, zgrid = lp.process(config, input_table) + # In the next command output is an astropy.table.Table object with the results + output,_ = lp.process(config, input_table) This will take over ten minutes to run. To check that everything was successful, diff --git a/docs/index.rst b/docs/index.rst index 096c326..41e7b1b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -31,7 +31,7 @@ It has been completely rewritten in C++ with a Python interface. Getting Started Advanced Installation Usage with Python Interface - All notebooks + Example notebooks Usage with Command Line Interface Detailed documentation Keywords From 7b69b075dc15f9450beee528547d504dff7deab3 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Tue, 12 Nov 2024 17:38:04 +0100 Subject: [PATCH 23/44] Some changes to notebooks following discussion --- docs/advanced_install.rst | 6 ++- docs/notebooks.rst | 2 +- .../Intermediate_usage_notebook.ipynb | 41 +++++++++++++------ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/docs/advanced_install.rst b/docs/advanced_install.rst index 90ab0d2..98788ee 100644 --- a/docs/advanced_install.rst +++ b/docs/advanced_install.rst @@ -1,7 +1,9 @@ Advanced Installation with full clones of repositories ====================================================== -LePHARE is split across two repositories one for the code and one for the -auxiliary data. Advanced users or developers may want to edit the files in +LePHARE is split across two repositories one for the +`code `_ and one for the +auxiliary `data `_. +Advanced users or developers may want to edit the files in both. In this section we explain a developer install and clone of both git repositories in order to allow modification of the code and auxiliary data. diff --git a/docs/notebooks.rst b/docs/notebooks.rst index 56041f1..aafe0eb 100644 --- a/docs/notebooks.rst +++ b/docs/notebooks.rst @@ -10,7 +10,7 @@ independently following installation. .. toctree:: Minimal full run - Intermediate usage notebook + Typical usage Example full run Building a list of onesources Example of usage of magSvc diff --git a/docs/notebooks/Intermediate_usage_notebook.ipynb b/docs/notebooks/Intermediate_usage_notebook.ipynb index f38cd4c..afff89b 100644 --- a/docs/notebooks/Intermediate_usage_notebook.ipynb +++ b/docs/notebooks/Intermediate_usage_notebook.ipynb @@ -5,13 +5,13 @@ "id": "da7fc884-bc5d-4758-aede-087ac6cd18c3", "metadata": {}, "source": [ - "# Intermediate LePHARE use case\n", + "# Typical use case\n", "\n", "In the minimal photoz run example notebook we demonstrated a run on the COSMOS example in order to show the most basic LePHARE functionality.\n", "\n", "In this notebook we want to walk through a typical use case where the user wishes to run on a new catalogue with a new set of filters.\n", "\n", - "We will be looking at the same COSMOS data set but only use the ugrizy bands. We will also use the Spanish Virtual Observatory to get the filters rather than relying on the versions in the LePHARE auxiliary data repository." + "We will be looking at the same COSMOS data set but only use the ugrizy bands. We will also use the Spanish Virtual Observatory ([SVO](http://svo2.cab.inta-csic.es/theory/fps/)) to get the filters rather than relying on the versions in the LePHARE auxiliary data repository." ] }, { @@ -79,7 +79,9 @@ "metadata": {}, "source": [ "## Download the required SEDs and additional extinction laws\n", - "We will need the same set of SEDs and other files required for the COSMOS example so will download those using the automated download functionality." + "We will need the same set of SEDs and other files required for the COSMOS example so will download those using the automated download functionality.\n", + "\n", + "If one has already cloned the full auxiliary data one does not need to use this functionality." ] }, { @@ -340,7 +342,7 @@ "cosmos_full = Table.read(f\"{lp.LEPHAREDIR}/examples/COSMOS.in\", format=\"ascii\")\n", "# Lets just look at the first 100 specz to be fast for now\n", "specz_colname = cosmos_full.colnames[-2]\n", - "cosmos_full = cosmos_full[cosmos_full[specz_colname] > 0][:100]" + "cosmos_full = cosmos_full[cosmos_full[specz_colname] > 0][:1000]" ] }, { @@ -370,7 +372,9 @@ " # The ugrizy fluxes and errors are in cols 3 to 14\n", " f_col = cosmos_full.colnames[2 * n + 3]\n", " ferr_col = cosmos_full.colnames[2 * n + 4]\n", + " # By default lephare uses column order so names are irrelevant\n", " input_table[f\"f_{b}\"] = cosmos_full[f_col]\n", + " # Units are assumed to be erg /s /vm**2 / Hz and do not need to be set\n", " input_table[f\"f_{b}\"].unit = u.erg / u.s / u.cm**2 / u.Hz\n", " input_table[f\"ferr_{b}\"] = cosmos_full[ferr_col]\n", " input_table[f\"ferr_{b}\"].unit = u.erg / u.s / u.cm**2 / u.Hz\n", @@ -413,22 +417,25 @@ { "cell_type": "code", "execution_count": null, - "id": "2e45e406-79c6-4024-989e-25e41efb0c28", + "id": "a2335825-4cba-492f-a277-8349a43f88c4", "metadata": {}, "outputs": [], "source": [ - "output[33:37]" + "plt.hist(output[\"Z_BEST\"], bins=20)\n", + "plt.xlabel(\"redshift\")" ] }, { "cell_type": "code", "execution_count": null, - "id": "a2335825-4cba-492f-a277-8349a43f88c4", + "id": "8f1fb5cd-bbdb-4574-85b6-7f209bc65736", "metadata": {}, "outputs": [], "source": [ - "plt.hist(output[\"Z_BEST\"], bins=20)\n", - "plt.xlabel(\"redshift\")" + "plt.plot([0, 6], [0, 6], c=\"r\")\n", + "plt.scatter(output[\"ZSPEC\"], output[\"Z_BEST\"], s=2.0)\n", + "plt.xlabel(\"z spec\")\n", + "plt.ylabel(\"z phot\")" ] }, { @@ -541,16 +548,24 @@ "outputs": [], "source": [ "listname = [f for f in os.listdir(\"save_spec\") if os.path.isfile(os.path.join(\"save_spec\", f))]\n", - "for namefile in listname:\n", + "for namefile in listname[:5]:\n", " lp.plotspec(\"save_spec/\" + str(namefile))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9214157-f932-46a3-84e4-71adcb84d93a", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "lincc", "language": "python", - "name": "python3" + "name": "lincc" }, "language_info": { "codemirror_mode": { @@ -562,7 +577,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.14" } }, "nbformat": 4, From 37cdbc1274e281075053b3cf2faea632da741860 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 10:16:18 +0100 Subject: [PATCH 24/44] More detail on input table in the typical use case notebook We wanted to be more informative regarding the contruction of the input tables which have a strict format --- docs/getting_started.rst | 2 + .../Intermediate_usage_notebook.ipynb | 50 +++++++++++++++---- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 1394e33..9e28960 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -52,6 +52,8 @@ You can also get an example notebook running this code `here Date: Wed, 13 Nov 2024 10:25:16 +0100 Subject: [PATCH 25/44] Minor changes to typical use case --- .../Intermediate_usage_notebook.ipynb | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/notebooks/Intermediate_usage_notebook.ipynb b/docs/notebooks/Intermediate_usage_notebook.ipynb index 897d58b..2558b4c 100644 --- a/docs/notebooks/Intermediate_usage_notebook.ipynb +++ b/docs/notebooks/Intermediate_usage_notebook.ipynb @@ -442,6 +442,14 @@ "output[:5]" ] }, + { + "cell_type": "markdown", + "id": "8f56984e-b3cb-4cde-9ef1-1b13e157dc20", + "metadata": {}, + "source": [ + "Next we can perform some simple plots to check the output" + ] + }, { "cell_type": "code", "execution_count": null, @@ -473,7 +481,7 @@ "source": [ "## Lower level functionality\n", "\n", - "The example above uses the high level *prepare* and *process* methods. It is also possible to have much more control over every stage of the run by using lower level classes. Here we will briefly introduce this functionality by running photoz on a single object and showing it's best fit model." + "The example above uses the high level [*prepare*](https://lephare.readthedocs.io/en/latest/_modules/lephare/prepare.html#prepare) and [*process*](https://lephare.readthedocs.io/en/latest/_modules/lephare/process.html#process) methods. It is also possible to have much more control over every stage of the run by using lower level classes. Here we will briefly introduce this functionality by running photoz on a single object at a time and showing its best fit model." ] }, { @@ -555,6 +563,7 @@ "metadata": {}, "outputs": [], "source": [ + "# The following line would make the output tables if you wish to save them\n", "# photz.build_output_tables(photozlist[:n], para_out=None, filename=\"outputpython.fits\")" ] }, @@ -579,14 +588,6 @@ "for namefile in listname[:5]:\n", " lp.plotspec(\"save_spec/\" + str(namefile))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d9214157-f932-46a3-84e4-71adcb84d93a", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 64eeacb6665a83cd7fe78957174c1e832d5e32da Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 11:56:14 +0100 Subject: [PATCH 26/44] Readthrough of typical use case notebook simplified and retured the standard filters and removed low level functionality section --- docs/notebooks.rst | 2 +- ..._notebook.ipynb => Typical_use_case.ipynb} | 377 ++++-------------- 2 files changed, 80 insertions(+), 299 deletions(-) rename docs/notebooks/{Intermediate_usage_notebook.ipynb => Typical_use_case.ipynb} (50%) diff --git a/docs/notebooks.rst b/docs/notebooks.rst index aafe0eb..3b2acee 100644 --- a/docs/notebooks.rst +++ b/docs/notebooks.rst @@ -10,7 +10,7 @@ independently following installation. .. toctree:: Minimal full run - Typical usage + Typical usage Example full run Building a list of onesources Example of usage of magSvc diff --git a/docs/notebooks/Intermediate_usage_notebook.ipynb b/docs/notebooks/Typical_use_case.ipynb similarity index 50% rename from docs/notebooks/Intermediate_usage_notebook.ipynb rename to docs/notebooks/Typical_use_case.ipynb index 2558b4c..ff705db 100644 --- a/docs/notebooks/Intermediate_usage_notebook.ipynb +++ b/docs/notebooks/Typical_use_case.ipynb @@ -7,11 +7,11 @@ "source": [ "# Typical use case\n", "\n", - "In the minimal photoz run example notebook we demonstrated a run on the COSMOS example in order to show the most basic LePHARE functionality.\n", + "In the minimal photoz run example notebook we demonstrated a run on the COSMOS2020 (Weaver et al. 2022) data set in order to show the most basic LePHARE functionality.\n", "\n", "In this notebook we want to walk through a typical use case where the user wishes to run on a new catalogue with a new set of filters.\n", "\n", - "We will be looking at the same COSMOS data set but only use the ugrizy bands. We will also use the Spanish Virtual Observatory ([SVO](http://svo2.cab.inta-csic.es/theory/fps/)) to get the filters rather than relying on the versions in the LePHARE auxiliary data repository." + "We will be looking at the same COSMOS data set but only use the ugrizy bands. We will take just these filters from the local auxiliary database. This should demonstrate the basic procedure for updating the configuration parameters and creating an input table in the appropriate format." ] }, { @@ -23,10 +23,8 @@ "source": [ "import lephare as lp\n", "from astropy.table import Table\n", - "import astropy.units as u\n", "import numpy as np\n", "import os\n", - "from collections import OrderedDict\n", "from matplotlib import pylab as plt\n", "import time\n", "\n", @@ -39,7 +37,7 @@ "metadata": {}, "source": [ "## Update the config\n", - "We will start with the COSMOS configuration as a basis. We will update the various keywords. We use the default which is shipped with lephare. You could also download the eaxmple text file config from [here](https://github.com/lephare-photoz/lephare-data/blob/main/examples/COSMOS.para)." + "We will start with the COSMOS configuration as a basis. We will update the various keywords. We use the default which is shipped with lephare. You could also download the example text file config from [here](https://github.com/lephare-photoz/lephare-data/blob/main/examples/COSMOS.para) or write it completely from scratch." ] }, { @@ -57,18 +55,9 @@ "\n", "config.update(\n", " {\n", - " # We turn on Auto adapt which uses spectroscopic redshifts to calcualte zero point\n", - " # offsets which is crucial to getting good results.\n", - " \"AUTO_ADAPT\": \"YES\",\n", " # For a quick demonstration we use a very sparse redshift grid. DO NOT USE FOR SCIENCE!\n", " # Comment out the following line to improve results.\n", - " \"Z_STEP\": \"0.5,0.,7.\",\n", - " # The following measurements will correspond to all filters. We could have an array of values for each.\n", - " # If we have an array care must be taken to ensure it has a consistent length.\n", - " \"ERR_SCALE\": \"0.02\",\n", - " \"ERR_FACTOR\": \"1.5\",\n", - " \"FILTER_CALIB\": \"0\",\n", - " \"FILTER_FILE\": \"filter_test\",\n", + " \"Z_STEP\": \"0.1,0.,3.\",\n", " }\n", ")" ] @@ -79,9 +68,9 @@ "metadata": {}, "source": [ "## Download the required SEDs and additional extinction laws\n", - "We will need the same set of SEDs and other files required for the COSMOS example so will download those using the automated download functionality.\n", + "If one has already cloned the full auxiliary data one does not need to use this functionality.\n", "\n", - "If one has already cloned the full auxiliary data one does not need to use this functionality." + "Here we will need the same set of SEDs and other files required for the COSMOS example so will download those using the automated download functionality." ] }, { @@ -111,112 +100,9 @@ "id": "c0e67888-712b-4cd3-a88b-e67f8434c14d", "metadata": {}, "source": [ - "## Getting new filters\n", + "## Setting new filters\n", "\n", - "First lets get the filters we need from the SVO" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5782269b-a3c5-4d55-aeeb-9b36f534d792", - "metadata": {}, - "outputs": [], - "source": [ - "# We can get filters from the Spanish Virtual Observatory using the correct ids available.\n", - "# See ids here http://svo2.cab.inta-csic.es/theory/fps/\n", - "svo_filters = [\n", - " \"CFHT/MegaCam.u\",\n", - " \"Subaru/HSC.g\",\n", - " \"Subaru/HSC.r\",\n", - " \"Subaru/HSC.i\",\n", - " \"Subaru/HSC.z\",\n", - " \"Subaru/HSC.y\",\n", - "]\n", - "# We make a list of lephare.flt objects\n", - "filterLib = [lp.FilterSvc.from_svo(n, i) for n, i in enumerate(svo_filters)]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e0c9143a-1760-4954-883d-c54461f41718", - "metadata": {}, - "outputs": [], - "source": [ - "# We can write the filter file to the LEPHAREWORK director using the lephare format:\n", - "filter_output = os.path.join(os.environ[\"LEPHAREWORK\"], \"filt\", config[\"FILTER_FILE\"])\n", - "lp.write_output_filter(f\"{filter_output}_svo.dat\", f\"{filter_output}_svo.doc\", filterLib)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bb4e45ae-d4b5-4c96-9da4-d326b3f3c30c", - "metadata": {}, - "outputs": [], - "source": [ - "# Check the files are there\n", - "!ls -al $LEPHAREWORK/filt/filter_test_svo*" - ] - }, - { - "cell_type": "markdown", - "id": "1c43eff8-0edf-44aa-a2c8-c6e38a8b5288", - "metadata": {}, - "source": [ - "We can also write the filters locally and update the config to take them from there" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "acbb467c-043b-42d8-8063-49f6af5cdbdb", - "metadata": {}, - "outputs": [], - "source": [ - "!mkdir filt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fbc51fe6-e8a3-43d1-b80f-b32362e25424", - "metadata": {}, - "outputs": [], - "source": [ - "for n, f in enumerate(svo_filters):\n", - " data = Table()\n", - " data[\"wavelength\"] = filterLib[n].data()[0]\n", - " data[\"transmission\"] = filterLib[n].data()[1]\n", - " plt.plot(data[\"wavelength\"], data[\"transmission\"], label=f)\n", - " directory = f\"./filt/{f.split('/')[0]}\"\n", - " if not os.path.exists(directory):\n", - " os.makedirs(directory)\n", - " data.write(f\"./filt/{f}\", format=\"ascii\", overwrite=True)\n", - "plt.legend(loc=\"center left\", bbox_to_anchor=(1, 0.5))\n", - "plt.xlabel(\"Wavelength [Angstrom]\")\n", - "plt.ylabel(\"Transmission\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "55ad1ebb-adaa-4a4a-9faf-e91bd0490ccc", - "metadata": {}, - "outputs": [], - "source": [ - "!ls -al filt/*" - ] - }, - { - "cell_type": "markdown", - "id": "5eebc7de-d184-4876-b9be-8d2a5151f0e1", - "metadata": {}, - "source": [ - "## Update filter list\n", - "\n", - "to use these new filters we need to update the config and set the filter directory to their location" + "As a simple example we are taking a subset of the 30 filters used in the standard COSMOS example. To do this we will take the 6 ugrizy filters from $LEPHAREDIR/filt. To use these new filters we need to update the config and set the filter directory to their location" ] }, { @@ -226,35 +112,42 @@ "metadata": {}, "outputs": [], "source": [ + "# We need to update the filter list and some other config values according to the new filter list\n", "config.update(\n", " {\n", - " # We now set the FILTER_REP keyword to that location to ensure that lephare looks in the right place\n", - " \"FILTER_REP\": os.path.join(os.getcwd(), \"filt\"),\n", - " # We also update the names to the new SVO names\n", - " \"FILTER_LIST\": \",\".join(svo_filters),\n", - " \"SPEC_OUT\": \"YES\", # We want to look at the model spectra\n", + " # A reduced list of filters:\n", + " \"FILTER_LIST\": \"cosmos/u_new.pb,hsc/gHSC.pb,hsc/rHSC.pb,hsc/iHSC.pb,hsc/zHSC.pb,hsc/yHSC.pb\",\n", + " # FILTER_CALIB must be updated to either have the same length as FILTER_LIST or be one number\n", + " # ERR_SCALE and ERR_FACTOR must also be updated later to be the correct length.\n", + " \"FILTER_CALIB\": \"0\",\n", + " # Use a test name to avoid clashes with other runs.\n", + " \"FILTER_FILE\": \"filter_test\",\n", " }\n", - ")" + ")\n", + "filter_names = config[\"FILTER_LIST\"].split(\",\")" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "2cebee8f-e140-46dd-9b96-8ea6fe0283f8", + "cell_type": "markdown", + "id": "e14cad3e-390b-4c4e-8e96-5aeb3a6a743a", "metadata": {}, - "outputs": [], "source": [ - "config" + "Plot the filter transmission curves." ] }, { "cell_type": "code", "execution_count": null, - "id": "5ef3a15f-2b60-4eff-87d0-9adb62a6180f", + "id": "88dd83b5-6d85-43b0-8633-fa6ecc282933", "metadata": {}, "outputs": [], "source": [ - "config[\"FILTER_REP\"], config[\"FILTER_LIST\"]" + "for n, f in enumerate(filter_names):\n", + " data = Table.read(f\"{lp.LEPHAREDIR}/filt/{f}\", format=\"ascii\")\n", + " plt.plot(data[data.colnames[0]], data[data.colnames[1]], label=f)\n", + "plt.legend(loc=\"center left\", bbox_to_anchor=(1, 0.5))\n", + "plt.xlabel(\"Wavelength [Angstrom]\")\n", + "plt.ylabel(\"Transmission\")" ] }, { @@ -262,11 +155,11 @@ "id": "056c72a9-c47c-40b5-808f-f949169490d6", "metadata": {}, "source": [ - "### Set object specific config values \n", + "### Set specific config values for \n", "\n", - "In order to get better results we often also want to use different config values for stars, galaxies and qso.\n", + "In order to get better results we often want to use different config values for stars, galaxies and qso.\n", "\n", - "We therefore make override dictionaries for each type." + "We therefore make override dictionaries for each type. These are the default configurations that were used in Ilbert et al. 2013, Laigle et al. 2016, and Weaver et al. 2022." ] }, { @@ -284,7 +177,7 @@ " \"MOD_EXTINC\": \"18,26,26,33,26,33,26,33\",\n", " \"EXTINC_LAW\": \"SMC_prevot.dat,SB_calzetti.dat,SB_calzetti_bump1.dat,SB_calzetti_bump2.dat\",\n", " \"EM_LINES\": \"EMP_UV\",\n", - " \"EM_DISPERSION\": \"0.5,0.75,1.,1.5,2.\",\n", + " \"EM_DISPERSION\": \"0.5,1.,1.5\",\n", "}\n", "\n", "qso_overrides = {\n", @@ -301,7 +194,7 @@ "source": [ "## Run prepare\n", "\n", - "The prepare method runs filter, sedtolib, and mag_gal. These are the key preparatory stages that calculate the filters in the LePHARE format, calculate the library of SEDs and finaly calculate the library of magnitudes for all the models" + "These are the key preparatory stages that calculate the filters in the LePHARE format, calculate the library of SEDs and finally calculate the library of magnitudes for all the models. The prepare method runs *filter*, *sedtolib*, and *mag_gal* that would be run independently at the command line. These are all explained in detail in the [documentation](https://lephare.readthedocs.io/en/latest/original.html#detailed-lephare-user-manual)." ] }, { @@ -321,60 +214,38 @@ }, { "cell_type": "markdown", - "id": "584a6041-9bc7-4127-af23-4f4860702f86", + "id": "7f91e803-33ce-4ba4-837f-9a6c52625f68", "metadata": {}, "source": [ - "## Run process\n", + "### Creating the input table\n", + "\n", + "We need to make an astropy table as input. This can be done using the standard column order:\n", + "id, flux0, err0, flux1, err1,..., context, zspec, arbitrary_string. A simple example table with two filters might look like this:\n", + "| id | flux_filt1 | fluxerr_filt1 | flux_filt2 | fluxerr_filt2 | context | zspec | string_data |\n", + "|---|---|---|---|---|---|---|---|\n", + "| 0 | 1.e-31 | 1.e-32 | 1.e-31 | 2.e-32 | 3 | NaN | \"This is just a note\" |\n", + "| 1 | 2.e-31 | 1.e-32 | 1.e-31 | 2.e-32 |3 | 1. | \"This has a specz\" |\n", + "| 2 | 2.e-31 | 1.e-32 | 2.e-31 | 2.e-32 | 2 | NaN| \"This context only uses the second filter\" |\n", "\n", - "We need to take the input catalogue and organise it in the correct format for LePHARE. By default this is done using column order.\n", + "The context detemermines which bands are used but can be -99 or a numpy.nan. We do not need to have units on the flux columns but LePHARE assumes they are in erg /s /cm**2 / Hz if we are using fluxes. The number of columns must be two times the number of filters plus the four additional columns.\n", "\n", - "Because we are removing most of the fluxes we now just need the ugrizy bands" + "This input table **must use** the standard column ordering to determine column meaning. This odering depends on the filter order in the config FILTER_LIST value. " ] }, { "cell_type": "code", "execution_count": null, - "id": "22fae397-8557-4205-bf82-325e1315caea", + "id": "c43e9307-4dc7-4b26-bb8b-5126f29874f7", "metadata": {}, "outputs": [], "source": [ "# Load the full cosmos example we downloaded at the start\n", "cosmos_full = Table.read(f\"{lp.LEPHAREDIR}/examples/COSMOS.in\", format=\"ascii\")\n", - "# Lets just look at the first 100 specz to be fast for now\n", + "# Lets just look at the first 1000 specz between 0 and 3 to be fast and have a small sample to test\n", "specz_colname = cosmos_full.colnames[-2]\n", - "cosmos_full = cosmos_full[cosmos_full[specz_colname] > 0][:1000]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "24f7f747-8f3d-44eb-9f99-b085924df27d", - "metadata": {}, - "outputs": [], - "source": [ - "# Look at the original filter order to see which columns in the original catalogue correspond to the new filters\n", - "lp.default_cosmos_config.copy()[\"FILTER_LIST\"]" - ] - }, - { - "cell_type": "markdown", - "id": "7f91e803-33ce-4ba4-837f-9a6c52625f68", - "metadata": {}, - "source": [ - "### \n", - "Creating the input table\n", - "\n", - "We need to make an astropy table as input. This can be done using the standard column order:\n", - "id, flux0, err0, flux1, err1,..., context, zspec, arbitrary_string. A simple example table with two filters might look like this:\n", - "| id | flux_filt1 | fluxerr_filt1 | flux_filt2 | fluxerr_filt2 | context | zspec | string_data |\n", - "|---|---|---|---|---|---|---|---|\n", - "| 0 | 1.e-31 | 1.e-32 | 1.e-31 | 2.e-32 | 3 | NaN | \"This is just a note\" |\n", - "| 1 | 2.e-31 | 1.e-32 | 1.e-31 | 2.e-32 |3 | 1. | \"This has a specz\" |\n", - "| 2 | 2.e-31 | 1.e-32 | 2.e-31 | 2.e-32 | 2 | NaN| \"This context only uses the second filter\" |\n", - "\n", - "The context detemermines which bands are used but can be -99 or a numpy.nan. We do not need to have units on the flux columns but LePHARE assumes they are in erg /s /cm**2 / Hz if we are using fluxes. The number of columns must be two times the number of filters plus the four additional columns.\n", - "\n", - "Alternatively one can specify columns in the standard order or use a standard naming of columns. See https://lephare.readthedocs.io/en/latest/autoapi/lephare/process/index.html#lephare.process.table_to_data for information on these other methods of determing column names." + "mask = cosmos_full[specz_colname] > 0\n", + "mask &= cosmos_full[specz_colname] < 3\n", + "cosmos_full = cosmos_full[mask][:1000]" ] }, { @@ -388,7 +259,7 @@ "# The id is in the first column\n", "input_table[\"id\"] = cosmos_full[cosmos_full.colnames[0]]\n", "# Loop over the filters we want to keep to get the number of the filter, n, and the name, b,\n", - "for n, filter_name in enumerate(svo_filters):\n", + "for n, filter_name in enumerate(filter_names):\n", " # The ugrizy fluxes and errors are in cols 3 to 14\n", " f_col = cosmos_full.colnames[2 * n + 3]\n", " ferr_col = cosmos_full.colnames[2 * n + 4]\n", @@ -396,7 +267,7 @@ " input_table[f\"f_{filter_name}\"] = cosmos_full[f_col]\n", " input_table[f\"ferr_{filter_name}\"] = cosmos_full[ferr_col]\n", "# The context is a binary flag. Here we set it to use all filters.\n", - "input_table[\"context\"] = np.sum(2 ** np.arange(len(svo_filters)))\n", + "input_table[\"context\"] = np.sum(2 ** np.arange(len(filter_names)))\n", "input_table[\"zspec\"] = cosmos_full[specz_colname]\n", "input_table[\"string_data\"] = \"arbitrary_info\"" ] @@ -417,7 +288,32 @@ "id": "d80599b6-529e-4565-be0e-2dc51445c54c", "metadata": {}, "source": [ - "Finally we repeat the main run stages prepare and process to get the results" + "## Run process\n", + "\n", + "Finally we run the main fitting process which is equivalent to *zphota* when using the command line. We also need to update some of the config values to make them consistent with the number of filters." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bccf50f1-0df3-4e97-9bf3-767a7d8eeccf", + "metadata": {}, + "outputs": [], + "source": [ + "# We will update some of the config parameters that are used during the fitting process\n", + "config.update(\n", + " {\n", + " # We turn on Auto adapt which uses spectroscopic redshifts to calcualte zero point\n", + " # offsets which is crucial to getting good results.\n", + " \"AUTO_ADAPT\": \"YES\",\n", + " # The following measurements will correspond to all filters.\n", + " # We could have an array of values for each.\n", + " # If we have an array care must be taken to ensure it has a consistent length.\n", + " \"ERR_SCALE\": \"0.02\",\n", + " \"ERR_FACTOR\": \"1.5\",\n", + " \"SPEC_OUT\": \"save_spec\", # We would like to see the output\n", + " }\n", + ")" ] }, { @@ -468,126 +364,11 @@ "metadata": {}, "outputs": [], "source": [ - "plt.plot([0, 6], [0, 6], c=\"r\")\n", + "plt.plot([0, 3], [0, 3], c=\"r\")\n", "plt.scatter(output[\"ZSPEC\"], output[\"Z_BEST\"], s=2.0)\n", "plt.xlabel(\"z spec\")\n", "plt.ylabel(\"z phot\")" ] - }, - { - "cell_type": "markdown", - "id": "6d53758a-b944-4fc1-be2e-e670135cf35b", - "metadata": {}, - "source": [ - "## Lower level functionality\n", - "\n", - "The example above uses the high level [*prepare*](https://lephare.readthedocs.io/en/latest/_modules/lephare/prepare.html#prepare) and [*process*](https://lephare.readthedocs.io/en/latest/_modules/lephare/process.html#process) methods. It is also possible to have much more control over every stage of the run by using lower level classes. Here we will briefly introduce this functionality by running photoz on a single object at a time and showing its best fit model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bc2c7c93-de35-4d72-9e0d-95e7d0d1c83c", - "metadata": {}, - "outputs": [], - "source": [ - "# First we create a PhotoZ object from the config\n", - "config[\"SPEC_OUT\"] = \"save_spec\" # Set location for output spectra\n", - "photz = lp.PhotoZ(lp.all_types_to_keymap(config))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e45f7806-c825-42d5-86ac-79f8c6f5dc90", - "metadata": {}, - "outputs": [], - "source": [ - "# Then we make a list of the sources as lephare onesource objects\n", - "photozlist = []\n", - "fluxes = input_table[[f\"f_{b}\" for b in svo_filters]]\n", - "efluxes = input_table[[f\"ferr_{b}\" for b in svo_filters]]\n", - "# Lets just look at the first five objects for now\n", - "n = 5\n", - "for i in range(n):\n", - " oneObj = lp.onesource(i, photz.gridz)\n", - " oneObj.readsource(\n", - " str(i),\n", - " list(fluxes[i]),\n", - " list(efluxes[i]),\n", - " int(np.sum(2 ** np.arange(len(svo_filters)))),\n", - " input_table[\"zspec\"][i],\n", - " \" \",\n", - " )\n", - " photz.prep_data(oneObj)\n", - " photozlist.append(oneObj)\n", - "print(\"Number of sources to be analysed: \", len(photozlist))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d33c217f-6beb-46dd-a85a-fc96c66e3313", - "metadata": {}, - "outputs": [], - "source": [ - "os.getenv(\"LEPHAREDIR\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6ea1eadd-c70a-418f-82f2-f07cb40ec96e", - "metadata": {}, - "outputs": [], - "source": [ - "!mkdir save_spec" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b2f6cd2a-421f-4265-bb2f-f32e742ba9d0", - "metadata": {}, - "outputs": [], - "source": [ - "# then we run the photoz on those sources\n", - "zeros = [0.0 for f in config[\"FILTER_LIST\"].split(\",\")] # Use zero offset\n", - "photz.run_photoz(photozlist[:n], zeros, zeros)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "30046164-e003-4345-8d5b-f7d91e6c7ab4", - "metadata": {}, - "outputs": [], - "source": [ - "# The following line would make the output tables if you wish to save them\n", - "# photz.build_output_tables(photozlist[:n], para_out=None, filename=\"outputpython.fits\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7e3818db-4456-4577-8c31-4eeebf7532dc", - "metadata": {}, - "outputs": [], - "source": [ - "photz.write_outputs(photozlist[:n], int(time.time()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "35ea4200-2406-4aba-ba70-f30c62990cf2", - "metadata": {}, - "outputs": [], - "source": [ - "listname = [f for f in os.listdir(\"save_spec\") if os.path.isfile(os.path.join(\"save_spec\", f))]\n", - "for namefile in listname[:5]:\n", - " lp.plotspec(\"save_spec/\" + str(namefile))" - ] } ], "metadata": { From 8ac337b968d447c75c793e3836aa70ebe01ec74c Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 16:50:31 +0100 Subject: [PATCH 27/44] Lots of changes to notebooks and docs We have run through the first main notebook examples and called other developer examples --- docs/known_issues.rst | 9 +- docs/notebooks.rst | 14 +- ...mple_full_run.ipynb => Detailed_run.ipynb} | 201 +++++++++++------- 3 files changed, 144 insertions(+), 80 deletions(-) rename docs/notebooks/{Example_full_run.ipynb => Detailed_run.ipynb} (69%) diff --git a/docs/known_issues.rst b/docs/known_issues.rst index 7e3b7d2..8fc8f6e 100644 --- a/docs/known_issues.rst +++ b/docs/known_issues.rst @@ -73,4 +73,11 @@ We have had an installation issue on high performance clusters where the node that lephare was installed on had access to AVX2 and compiled with the flag set but then failed when it was run on a node without them due to old hardware. Advanced users can switch this flag off if they encounter this issue which can -be manifest in the vague error: illegal instruction (core dumped). \ No newline at end of file +be manifest in the vague error: illegal instruction (core dumped). + +Installation on Fedora redhat +============================= +There may be an issue compiling lephare on Fedora/redhat, based on an attempt +on a rocky 8.8 distribution (gcc 8.5.0). The compilation error is related to the +std::filesystem standard library and is alleviated by adding the compilation flag +stdc++fs. You can see information at `stack overflow `_. \ No newline at end of file diff --git a/docs/notebooks.rst b/docs/notebooks.rst index 3b2acee..81b9dc3 100644 --- a/docs/notebooks.rst +++ b/docs/notebooks.rst @@ -11,10 +11,10 @@ independently following installation. Minimal full run Typical usage - Example full run - Building a list of onesources - Example of usage of magSvc - Data retrieval - Testing fit of one object of the catalogue - Example of the cosmology class - Demonstration of SED objects + Example full run + Developer example: Building a list of onesources + Developer example: Example of usage of magSvc + Developer example: Data retrieval + Developer example: Testing fit of one object of the catalogue + Developer example: Example of the cosmology class + Developer example: Demonstration of SED objects diff --git a/docs/notebooks/Example_full_run.ipynb b/docs/notebooks/Detailed_run.ipynb similarity index 69% rename from docs/notebooks/Example_full_run.ipynb rename to docs/notebooks/Detailed_run.ipynb index f298458..c23a4f7 100644 --- a/docs/notebooks/Example_full_run.ipynb +++ b/docs/notebooks/Detailed_run.ipynb @@ -5,9 +5,13 @@ "id": "3b7a14b6-cef8-48b3-affc-3c021aaa6191", "metadata": {}, "source": [ - "# Example full run\n", + "# Detailed run\n", "\n", - "An example of a complete run of the lephare with all stages required to estimate redshift." + "An example of a complete run of lephare with all stages required to estimate redshift. In contrast to the two first notebooks we are not using the high level *prepare* and *process* methods. Instead we are using the more fundamental *filter*, *sedtolib*, *mag_gal*, and *zphota* which more resembles a command line based run.\n", + "\n", + "We show how to include new filters from the Spanish Virtual Observatory [(SVO)](http://svo2.cab.inta-csic.es/theory/fps/).\n", + "\n", + "Again this notebook uses the COSMOS2020 (Weaver et al. 2022) data as an example." ] }, { @@ -38,48 +42,50 @@ "id": "48336218-e813-4d76-88d8-6520fa9e1726", "metadata": {}, "source": [ - "Read the parameter file and store the keywords in a keywords map." + "As for the previous notebooks we are starting with the default COSMOS config that ships with the lephare Python code." + ] + }, + { + "cell_type": "markdown", + "id": "a853ff51-6c06-46e5-a257-b3470923c932", + "metadata": {}, + "source": [ + "Modification of three keywords of the parameter file. " ] }, { "cell_type": "code", "execution_count": null, - "id": "dd703d19-e493-4440-9675-8980a9c9f57f", + "id": "1b12b2bc-9e28-4513-b041-9ad44a6ab16e", "metadata": {}, "outputs": [], "source": [ - "keymap = lp.all_types_to_keymap(lp.default_cosmos_config)\n", - "# Get the auxiliary files required.\n", - "lp.data_retrieval.get_auxiliary_data(\n", - " keymap=keymap, additional_files=[\"examples/COSMOS.in\", \"examples/config.yml\", \"examples/output.para\"]\n", - ")" + "config = lp.default_cosmos_config.copy()\n", + "# Verbose must be NO in the notebook.\n", + "config[\"VERBOSE\"] = \"NO\"\n", + "# this line reduced the zgrid density from the default to make the notebook run faster.\n", + "# Comment this out for better science results\n", + "config[\"Z_STEP\"] = \"0.04,0.,7.\"" ] }, { "cell_type": "markdown", - "id": "a853ff51-6c06-46e5-a257-b3470923c932", + "id": "e786250e-08e2-4132-a3eb-672ad263747f", "metadata": {}, "source": [ - "Modification of three keywords of the parameter file. Verbose must be NO in the notebook." + "Then we get the auxiliary files required to run the notebook for the documentation. If you have cloned the full auxiliary data repository you do not need to run this." ] }, { "cell_type": "code", "execution_count": null, - "id": "1b12b2bc-9e28-4513-b041-9ad44a6ab16e", + "id": "dd703d19-e493-4440-9675-8980a9c9f57f", "metadata": {}, "outputs": [], "source": [ - "keymap[\"ZPHOTLIB\"] = lp.keyword(\"ZPHOTLIB\", \"VISTA_COSMOS_FREE,ALLSTAR_COSMOS,QSO_COSMOS\")\n", - "keymap[\"SPEC_OUT\"] = lp.keyword(\"SPEC_OUT\", \"save_spec\")\n", - "keymap[\"VERBOSE\"] = lp.keyword(\"VERBOSE\", \"NO\")\n", - "keymap[\"AUTO_ADAPT\"] = lp.keyword(\"AUTO_ADAPT\", \"YES\")\n", - "# this line reduced the zgrid density from the default to make the notebook run faster.\n", - "# Comment this out for better science results\n", - "keymap[\"Z_STEP\"] = lp.keyword(\"Z_STEP\", \"0.04,0.,7.\")\n", - "# we can write the config to a file to keep a record\n", - "config_file = \"./config_file.para\"\n", - "lp.write_para_config(keymap, config_file)" + "lp.data_retrieval.get_auxiliary_data(\n", + " keymap=config, additional_files=[\"examples/COSMOS.in\", \"examples/config.yml\", \"examples/output.para\"]\n", + ")" ] }, { @@ -97,8 +103,9 @@ "metadata": {}, "outputs": [], "source": [ - "# keymap[\"AUTO_ADAPT\"]= keyword(\"AUTO_ADAPT\",\"NO\")\n", - "# keymap[\"APPLY_SYSSHIFT\"]= keyword(\"APPLY_SYSSHIFT\",\"0.049,-0.013,-0.055,-0.065,-0.042,-0.044,-0.065,-0.0156,-0.002,0.052,-0.006,0.071,0.055,0.036,0.036,0.054,0.088,0.019,-0.154,0.040,0.044,0.060,0.045,0.022,0.062,0.033,0.015,0.012,0.0,0.0]" + "# config[\"AUTO_ADAPT\"]= \"NO\"\n", + "# config[\"APPLY_SYSSHIFT\"]= \"0.049,-0.013,-0.055,-0.065,-0.042,-0.044,-0.065,-0.0156,-0.002,0.052,-0.006,0.071,\n", + "# 0.055,0.036,0.036,0.054,0.088,0.019,-0.154,0.040,0.044,0.060,0.045,0.022,0.062,0.033,0.015,0.012,0.0,0.0]\"" ] }, { @@ -108,15 +115,13 @@ "source": [ "## Create filter library\n", "\n", - "Read the filter names to be used in COSMOS.para and generate the filter file" - ] - }, - { - "cell_type": "markdown", - "id": "f39c7b82-e639-4ce3-a009-1b08c474c6b0", - "metadata": {}, - "source": [ - "First, you can use the standard method with the list of filters in the parameter file. The filters are store in the LEPHAREDIR/filt directory. You can pass either the config file or the keymap as argument" + "Read the filter names to be used in COSMOS.para and generate the filter file\n", + "\n", + "First, you can use the standard method with the list of filters in the parameter file. The filters are store in the LEPHAREDIR/filt directory. You can pass either the config file or the keymap as argument\n", + "\n", + "### Getting new filters\n", + "\n", + "Each filter requires a filter response curve. This is a table of wavelength values in Angstrom and filter transmission in arbitrary units. In this example we get the filters we need from the [SVO](http://svo2.cab.inta-csic.es/theory/fps/). We could have also used the filters that are available in [$LEPHAREDIR/filt](https://github.com/lephare-photoz/lephare-data/tree/main/filt). Or one could also use local files." ] }, { @@ -126,9 +131,11 @@ "metadata": {}, "outputs": [], "source": [ - "filterLib = lp.Filter(config_file=config_file)\n", + "# This would get the filters from the config file and local LEPHAREDIR/filt location.\n", + "# Later we see how to do the same from the SVO.\n", + "filterLib = lp.Filter(config_keymap=lp.all_types_to_keymap(config))\n", "# uncomment to test passing the keymap\n", - "# filterLib = Filter(config_keymap=keymap)\n", + "# filterLib = Filter(config_keymap=lp.all_types_to_keymap(config))\n", "filterLib.run()" ] }, @@ -147,8 +154,8 @@ "metadata": {}, "outputs": [], "source": [ - "filterLib = lp.FilterSvc.from_config(config_file)\n", - "filter_output = os.path.join(os.environ[\"LEPHAREWORK\"], \"filt\", keymap[\"FILTER_FILE\"].value)\n", + "filterLib = lp.FilterSvc.from_keymap(lp.all_types_to_keymap(config))\n", + "filter_output = os.path.join(os.environ[\"LEPHAREWORK\"], \"filt\", config[\"FILTER_FILE\"])\n", "lp.write_output_filter(filter_output + \".dat\", filter_output + \".doc\", filterLib)" ] }, @@ -177,8 +184,9 @@ "metadata": {}, "outputs": [], "source": [ + "# We use an example yaml file to retrieve the filter names used by the SVO\n", "filterLibSVO = lp.FilterSvc.from_yaml(f\"{lp.LEPHAREDIR}/examples/config.yml\")\n", - "filter_output = os.path.join(os.environ[\"LEPHAREWORK\"], \"filt\", keymap[\"FILTER_FILE\"].value)\n", + "filter_output = os.path.join(os.environ[\"LEPHAREWORK\"], \"filt\", config[\"FILTER_FILE\"])\n", "lp.write_output_filter(filter_output + \"_svo.dat\", filter_output + \"_svo.doc\", filterLib)" ] }, @@ -187,7 +195,7 @@ "id": "9fd175f2-53b2-4e4c-b13e-db09bbe731af", "metadata": {}, "source": [ - "Plot the filters" + "Plot the filters. We can see slight differences between those on the SVO and in the lepahre database." ] }, { @@ -212,7 +220,8 @@ "metadata": {}, "outputs": [], "source": [ - "# filter_output = os.path.join(os.environ[\"LEPHAREWORK\"],\"filt\", filterLib.keymap['FILTER_FILE'].value + \".dat\")\n", + "# filter_output = os.path.join(os.environ[\"LEPHAREWORK\"],\"filt\", filterLib.keymap['FILTER_FILE'] + \".dat\")\n", + "# This figure shows that the filters have differing normalisation which has no impact on the fitting process.\n", "filters = np.loadtxt(\n", " filter_output + \".dat\", dtype={\"names\": (\"lamb\", \"val\", \"bid\"), \"formats\": (float, float, int)}\n", ")\n", @@ -237,7 +246,7 @@ "metadata": {}, "outputs": [], "source": [ - "sedlib = lp.Sedtolib(config_keymap=keymap)" + "sedlib = lp.Sedtolib(config_keymap=lp.all_types_to_keymap(config))" ] }, { @@ -287,7 +296,7 @@ "metadata": {}, "outputs": [], "source": [ - "maglib = lp.MagGal(config_keymap=keymap)" + "maglib = lp.MagGal(config_keymap=lp.all_types_to_keymap(config))" ] }, { @@ -297,7 +306,13 @@ "metadata": {}, "outputs": [], "source": [ - "maglib.run(typ=\"STAR\", lib_ascii=\"YES\", star_lib_out=\"ALLSTAR_COSMOS\")" + "maglib.run(\n", + " typ=\"STAR\",\n", + " lib_ascii=\"YES\",\n", + " star_lib_out=\"STAR_COSMOS\",\n", + " extinc_law=\"\",\n", + " mod_extinc=\"\",\n", + ")" ] }, { @@ -314,6 +329,7 @@ " eb_v=\"0.,0.1,0.2,0.3\",\n", " extinc_law=\"SB_calzetti.dat\",\n", " qso_lib_in=\"LIB_QSO\",\n", + " qso_lib_out=\"QSO_COSMOS\",\n", ")" ] }, @@ -328,7 +344,7 @@ " typ=\"GAL\",\n", " lib_ascii=\"YES\",\n", " gal_lib_in=\"LIB_GAL\",\n", - " gal_lib_out=\"VISTA_COSMOS_FREE\",\n", + " gal_lib_out=\"GAL_COSMOS\",\n", " mod_extinc=\"18,26,26,33,26,33,26,33\",\n", " extinc_law=\"SMC_prevot.dat,SB_calzetti.dat,SB_calzetti_bump1.dat,SB_calzetti_bump2.dat\",\n", " em_lines=\"EMP_UV\",\n", @@ -359,10 +375,9 @@ "metadata": {}, "outputs": [], "source": [ - "keymap = lp.read_config(config_file)\n", - "keymap[\"ZPHOTLIB\"] = lp.keyword(\"ZPHOTLIB\", \"VISTA_COSMOS_FREE,ALLSTAR_COSMOS,QSO_COSMOS\")\n", - "keymap[\"SPEC_OUT\"] = lp.keyword(\"SPEC_OUT\", \"save_spec\")\n", - "keymap[\"VERBOSE\"] = lp.keyword(\"VERBOSE\", \"NO\")" + "# These are the names created above with the argument gal_lib_out\n", + "config[\"ZPHOTLIB\"] = \"GAL_COSMOS,STAR_COSMOS,QSO_COSMOS\"\n", + "config[\"SPEC_OUT\"] = \"save_spec\"" ] }, { @@ -370,7 +385,8 @@ "id": "72a67aee-128e-48a4-98ec-d8dff7505480", "metadata": {}, "source": [ - "Instantiate the photo-z run with the above parameters." + "Instantiate a lephare.PhotoZ object which will manage the computation of photometric redshifts for all sources. It is instantiated based on all the config parameters. \n", + "\n" ] }, { @@ -380,7 +396,7 @@ "metadata": {}, "outputs": [], "source": [ - "photz = lp.PhotoZ(keymap)" + "photz = lp.PhotoZ(lp.all_types_to_keymap(config))" ] }, { @@ -423,10 +439,17 @@ "outputs": [], "source": [ "srclist = []\n", + "# Here, limited to the 1000 first sources.\n", + "n_obj = 1000\n", "zspec_mask = np.logical_and(zspec > 0.01, zspec < 6)\n", - "for i in np.where(zspec_mask)[0]:\n", + "# We are running on the last n_obj objects to use a different set of objects to perform\n", + "# zero-point correction to the test objects\n", + "for i in np.where(zspec_mask)[0][-n_obj:]:\n", + " # Each element of the list is an instance of the lephare.onesource class.\n", + " # This encapsulates all the information for a given source.\n", " oneObj = lp.onesource(i, photz.gridz)\n", " oneObj.readsource(str(id[i]), fluxes[i, :], efluxes[i, :], int(context[i]), zspec[i], \" \")\n", + " # lephare.PhotoZ passes the configuration parameters to each source.\n", " photz.prep_data(oneObj)\n", " srclist.append(oneObj)\n", "print(\"Sources with a spec-z: \", len(srclist))" @@ -437,7 +460,7 @@ "id": "341daf0d-c468-4954-8b54-fef495ee6983", "metadata": {}, "source": [ - "Derive the zero-points offsets. Here, this option is commented and zero-points are assumed to be know.\n" + "Derive the zero-points offsets. This corresponds to the median difference between apparent and observed magnitude in each filter. It is stored in the list, a0, which is later passed to the lephare.PhotoZ.run_photoz method. a1 is not currently used and may become defunct in future versions of lephare." ] }, { @@ -458,7 +481,7 @@ "id": "723c4be6-e822-42d5-9463-530c28c1b649", "metadata": {}, "source": [ - "Create the list of sources for which we want a photo-z. here, limited to the 100 first sources." + "Create the list of sources for which we want a photo-z. " ] }, { @@ -469,7 +492,6 @@ "outputs": [], "source": [ "photozlist = []\n", - "n_obj = 1000\n", "for i in range(n_obj):\n", " oneObj = lp.onesource(i, photz.gridz)\n", " oneObj.readsource(str(id[i]), fluxes[i, :], efluxes[i, :], int(context[i]), zspec[i], \" \")\n", @@ -480,10 +502,10 @@ }, { "cell_type": "markdown", - "id": "938e8ec8-5c9e-487c-9111-0cd99c0f2ecb", + "id": "26623c01-57f0-496a-bb2c-4ed7105ed357", "metadata": {}, "source": [ - "Create the list of sources for which we want a photo-z. here, limited to the 100 first sources." + "Run the photoz. We pass the values of the zero point calibration calculated above" ] }, { @@ -493,17 +515,40 @@ "metadata": {}, "outputs": [], "source": [ - "photz.run_photoz(photozlist[:n_obj], a0, a1)\n", + "photz.run_photoz(photozlist, a0, a1)\n", "# If adaption of the zero-points is turned off\n", "# photz.run_photoz(photozlist[:100], [],[] )" ] }, + { + "cell_type": "markdown", + "id": "1e33d0f4-1894-4cc8-a7ad-346127168bef", + "metadata": {}, + "source": [ + "### Save the parameters that have been used\n", + "\n", + "For capturing the parameters that were used in a given run it is useful to save the updated config to file. Be careful as this will not capture the overrides that were sent directly to the lephare.MagGal.run method which impact the outputs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0097b6e6-dc03-4854-9553-75814e6c214e", + "metadata": {}, + "outputs": [], + "source": [ + "# we can write the config to a file to keep a record\n", + "lp.write_para_config(lp.all_types_to_keymap(config), \"./config_file.para\")\n", + "# One can also save it as a yaml file if you prefer\n", + "lp.write_yaml_config(lp.all_types_to_keymap(config), \"./config_file.yaml\")" + ] + }, { "cell_type": "markdown", "id": "f1b12906-006a-48ae-b6ef-f9cc8bbaac5d", "metadata": {}, "source": [ - "Create output in fits\n" + "## Create output in fits\n" ] }, { @@ -513,7 +558,7 @@ "metadata": {}, "outputs": [], "source": [ - "t = photz.build_output_tables(photozlist[:n_obj], para_out=None, filename=\"outputpython.fits\")" + "t = photz.build_output_tables(photozlist[:n_obj], para_out=None, filename=\"outputphotoz.fits\")" ] }, { @@ -528,42 +573,54 @@ }, { "cell_type": "markdown", - "id": "1f895cff-fd1d-4033-ac94-5d8e616454a3", + "id": "e8969641-6110-4d8a-88cc-72aebf9e6619", "metadata": {}, "source": [ - "Check the results broadly follow a 1-1 relation" + "Create all ascii files with the output of the run" ] }, { "cell_type": "code", "execution_count": null, - "id": "e357b04d-c2ce-4065-91bf-22946e7f04db", + "id": "39ad9dea-b259-41b9-a47e-4d0155b17cd6", "metadata": {}, "outputs": [], "source": [ - "plt.scatter(t[\"ZSPEC\"], t[\"Z_BEST\"], s=0.1)\n", - "plt.xlabel(\"z spec\")\n", - "plt.ylabel(\"z phot\")" + "import time\n", + "\n", + "photz.write_outputs(photozlist[:10], int(time.time()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec02ea68-db53-4b9e-a815-96f567915fb2", + "metadata": {}, + "outputs": [], + "source": [ + "# This created the output ascii file specified in the config CAT_OUT parameter\n", + "!ls -al zphot.out" ] }, { "cell_type": "markdown", - "id": "e8969641-6110-4d8a-88cc-72aebf9e6619", + "id": "1f895cff-fd1d-4033-ac94-5d8e616454a3", "metadata": {}, "source": [ - "Create one ascii file per object to produce the best-fit template plot" + "Check the results broadly follow a 1-1 relation" ] }, { "cell_type": "code", "execution_count": null, - "id": "39ad9dea-b259-41b9-a47e-4d0155b17cd6", + "id": "e357b04d-c2ce-4065-91bf-22946e7f04db", "metadata": {}, "outputs": [], "source": [ - "import time\n", - "\n", - "photz.write_outputs(photozlist[:10], int(time.time()))" + "plt.plot([0, 6], [0, 6], c=\"r\", alpha=0.5)\n", + "plt.scatter(t[\"ZSPEC\"], t[\"Z_BEST\"], s=3)\n", + "plt.xlabel(\"z spec\")\n", + "plt.ylabel(\"z phot\")" ] }, { @@ -571,7 +628,7 @@ "id": "5192bcfe-a8ee-44b8-a59f-06c90b1e90f3", "metadata": {}, "source": [ - "Make the plot with all the file listed in save_spec" + "Make plots for individual sources with all the files listed in save_spec" ] }, { From c438c684d70d839ef9ef1f8f4d45ce72bf271197 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 16:57:30 +0100 Subject: [PATCH 28/44] Fix bug on star ext law calzetti.dat not present so changed to SB_calzetti.dat --- docs/notebooks/Detailed_run.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/notebooks/Detailed_run.ipynb b/docs/notebooks/Detailed_run.ipynb index c23a4f7..bb08d03 100644 --- a/docs/notebooks/Detailed_run.ipynb +++ b/docs/notebooks/Detailed_run.ipynb @@ -310,8 +310,8 @@ " typ=\"STAR\",\n", " lib_ascii=\"YES\",\n", " star_lib_out=\"STAR_COSMOS\",\n", - " extinc_law=\"\",\n", - " mod_extinc=\"\",\n", + " extinc_law=\"SB_calzetti.dat\",\n", + " mod_extinc=\"0,0\",\n", ")" ] }, From 05724c5e4b895936d17f375b312be027139c4169 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 17:15:17 +0100 Subject: [PATCH 29/44] Update warning regarding environment variables --- docs/getting_started.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 9e28960..3e25766 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -21,9 +21,12 @@ conda installed. # And create a kernel which has access to this environment python -m ipykernel install --user --name -.. note:: - For existing users accustomed to using the command line arguments, those should - be immediately available after pip installation. +.. warning:: + For previous users of who have set LEPHAREDIR and LEPHAREWORK + in their environment these should be unset to avoid clashing versions. + + Be aware that the structure of the repository has changed with respect to + all previous versions. In order to run LePHARE we need to download auxiliary data such as filters, SEDs, and attenuation curves which are not shipped with the code. These are explained From 8bdff0dcb391ec984939929856c0c2589dd3b557 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 17:32:06 +0100 Subject: [PATCH 30/44] Minor change as merge had conflicts --- docs/notebooks/Typical_use_case.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notebooks/Typical_use_case.ipynb b/docs/notebooks/Typical_use_case.ipynb index ff705db..fba8beb 100644 --- a/docs/notebooks/Typical_use_case.ipynb +++ b/docs/notebooks/Typical_use_case.ipynb @@ -324,7 +324,7 @@ "outputs": [], "source": [ "# Calculate the photometric redshifts\n", - "output, pdfs, zgrid = lp.process(config, input_table)" + "output, _ = lp.process(config, input_table)" ] }, { From 0153b415d877d7cdd56769663fe2bdd281f172b6 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Wed, 13 Nov 2024 17:36:00 +0100 Subject: [PATCH 31/44] Consistent naming --- docs/notebooks.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/notebooks.rst b/docs/notebooks.rst index 81b9dc3..4967361 100644 --- a/docs/notebooks.rst +++ b/docs/notebooks.rst @@ -10,8 +10,8 @@ independently following installation. .. toctree:: Minimal full run - Typical usage - Example full run + Typical use case + Detailed run Developer example: Building a list of onesources Developer example: Example of usage of magSvc Developer example: Data retrieval From e55f43e7718c7cc11019d4caf8c13318d6bc390d Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Thu, 14 Nov 2024 10:08:05 +0100 Subject: [PATCH 32/44] Remove duplicated content in the Python usage section Also deleted the seperate notebooks page as it is the core of the Python interface page which now has all teh notebooks --- docs/commandline_usage.rst | 3 +- docs/index.rst | 1 - docs/notebooks.rst | 20 ----- docs/python_usage.rst | 170 +++++++------------------------------ 4 files changed, 30 insertions(+), 164 deletions(-) delete mode 100644 docs/notebooks.rst diff --git a/docs/commandline_usage.rst b/docs/commandline_usage.rst index b992db1..67227a7 100644 --- a/docs/commandline_usage.rst +++ b/docs/commandline_usage.rst @@ -10,8 +10,7 @@ Running with the command line LePHARE consists of a set of four principle executables: -- ``filter``: read a configurable set of filters and store a representation of -them for later use. +- ``filter``: read a configurable set of filters and store a representation of them for later use. - ``sedtolib``: read a configurable set of SED, and store the results into a binary library in a common format for later use. diff --git a/docs/index.rst b/docs/index.rst index 41e7b1b..03b00a0 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -31,7 +31,6 @@ It has been completely rewritten in C++ with a Python interface. Getting Started Advanced Installation Usage with Python Interface - Example notebooks Usage with Command Line Interface Detailed documentation Keywords diff --git a/docs/notebooks.rst b/docs/notebooks.rst deleted file mode 100644 index 4967361..0000000 --- a/docs/notebooks.rst +++ /dev/null @@ -1,20 +0,0 @@ -Notebooks -========= - -This is the full set of example notebooks. They range from very simple and uninformative -to demonstrating advanced access to the low level functionality. They should all be able to run -independently following installation. - - - -.. toctree:: - - Minimal full run - Typical use case - Detailed run - Developer example: Building a list of onesources - Developer example: Example of usage of magSvc - Developer example: Data retrieval - Developer example: Testing fit of one object of the catalogue - Developer example: Example of the cosmology class - Developer example: Demonstration of SED objects diff --git a/docs/python_usage.rst b/docs/python_usage.rst index 126c479..050d7d5 100644 --- a/docs/python_usage.rst +++ b/docs/python_usage.rst @@ -4,148 +4,36 @@ Advanced Usage via Python Interface The best way to learn about the Python interface is through running the example :doc:`notebooks `. We have made an intermediate notebook to demonstrate how a new user can download -the required filters and run lephare on their own data. You can download the notebook -`here `_ +the required filters and run lephare on their own data. You can download the notebook from +`here `_ which should directly run following installation of lephare via pip. -You can also see the executed notebook with all outputs :doc:`here `. +You can also see the executed notebook with all outputs :doc:`here `. .. note:: Lephare can be used either via the Python interface or from the command line. - The use of the command line executables are generally for legacy purposes. - An example of using the command line arguments can be found `here `_. - - -Whether or not you are running via Python or the command line there are four key stages of a LePHARE run. - -Core stages of lephare -====================== - -filter -++++++ -This stage reads a configurable set of filters and store a representation of -them for later use. - -sedtolib -++++++++ -This stage reads a configurable set of SED, compute extinction corrections, and -stores the results into a binary library for later use. - -mag_gal -+++++++ -This stage uses the preceding outputs to compute expected magnitudes, applying -different rules for galaxies, stars, or QSO objects. - -zphota -++++++ -This final stage performs chisquare minimization in order to derive photometric -redshifts and other physical parameters. - - - -A complete run of lephare is typically composed of the preceeding 4 steps. However, -since these steps are often combined, we provide two convenience functions that -wrap the typical process. - -prepare -+++++++ - -This function wraps the ``filter``, ``sedtolib``, and ``mag_gal`` stages. - -process -+++++++ - -This function wraps the ``zphota`` stage. - -Environmental variables -======================= - -Lephare uses two environment variables internally - ``LEPHAREDIR`` and ``LEPHAREWORK``. -``LEPHAREDIR`` defines a local data repository directory that contains the SEDs -and other input datasets that are not modified by lephare in any way. - -``LEPHAREWORK`` defines a directory that contains the intermediate files produced -by lephare during processing. In general, the outputs of lephare should be -written to locations specified by the user. The user can specify the output location -either via the config file or as an input parameter to the python methods. - -We set default values for the environment variables using the local cache. -*Generally using the defaults is preferred.* However these defaults can be overwritten -by the user to any location. If manually overwritten, care must be taken to ensure -consistency. - - -Data directory structure -======================== - -The ``LEPHAREDIR`` data repository contains filters, seds, opacities and other -required datasets. -When using example config files, this directory structure is created automatically -behind the scenes. - -If you wish to use user specified SEDs or filters, you'll need to add those to -the default location in the data repository. -See the auxiliary data repository for examples of where to place these files: - - -The ``LEPHAREWORK`` names intermediate files based on values set in the user -specified config file. In order to track run versions, we have created a method -to produce timestamped runs that can be referred back to at a later date. -By default, the `work` directory is symlinked to the most recent run. -See for an example of usage. - - -Required inputs - filters, seds, and configuration file -======================================================= - -We do not expect a typical user to create their own filter or sed files. -Instead, they will be creating an input table and a matching config file. -The config file will specify which files are present in the input data and which -sed lists are being used to fit the data. - -By default the lephare input table takes advantage of column ordering to determine -which columns correspond to which band. - -Both the filter and sed files will be 2 column ascii tables of wavelength and flux. -For an example of well formatted input files, see the -:doc:`minimal_photoz_run notebook <../notebooks/Minimal_photoz_run>`. - -The input configuration file is extensive - for a complete list of the available -options, see the :doc:`configuration file page <../keywords>`. -As an example for further guidance, see the following in the lephare-data GitHub -repository: -https://github.com/lephare-photoz/lephare-data/blob/main/examples/COSMOS.para - - -Data retrieval tooling -====================== - -When using the default sed and filter files, we have built data retrieval -functionally to gather the required data files for a given run. - -See the following notebook for a more thorough example of data retrieval with lephare: -:doc:`Data retrieval notebook <../notebooks/Data_retrieval>` - -Intermediate files -================== - -A large number of intermediate files will be produced by lephare and stored in -the directory defined by the ``LEPHAREWORK`` environmental variable. We generally -don't expect users to interact directly with these binary files. The intermediate -files are required by the C++ code and not easily visualized or modified. - -Output files -============ - -The last stage of lephare, ``zphota``, will produce an output table. -This table will contain columns specified in a secondary configuration file, -typically named ``output.para``, that lists the requested output columns. -An example can be found here -https://github.com/lephare-photoz/lephare-data/blob/main/examples/output.para - -In general this output will contain the best estimate of the redshift alongside -other physical parameters. - -The three most basic notebooks which demonstrate the key Python functionality are -available in these notebooks: :doc:`Minimal full run <../notebooks/Minimal_photoz_run>`, -:doc:`Intermediate usage notebook <../notebooks/Intermediate_usage_notebook>`, and -:doc:`Example full run <../notebooks/Example_full_run>`. + These both have different use cases. The Python interface is newer and has greater flexibility. + +The notebooks are the best way to learn how to use the Python interface. +The `Python API `_ is useful for understanding all the individual classes and methods. +We hope that class and function doctstrings will be informative and intuitive. +Please let us know via a GitHub issue if any functionality is unclear. + +Notebooks +========= + +We explain the Python interface mainly through the following example notebooks. +They range from very simple examples largely to test the installation to +demonstrating advanced access to the low level functionality. +They should all be able to run independently following installation. + +.. toctree:: + + Minimal full run + Typical use case + Detailed run + Developer example: Building a list of onesources + Developer example: Example of usage of magSvc + Developer example: Data retrieval + Developer example: Testing fit of one object of the catalogue + Developer example: Example of the cosmology class + Developer example: Demonstration of SED objects From 928a3ec49bd517066299da4f4e699affbdf7aeb0 Mon Sep 17 00:00:00 2001 From: OlivierIlbert Date: Thu, 14 Nov 2024 13:20:43 +0100 Subject: [PATCH 33/44] Changes in the detailed documentation after Mara comments --- docs/detailed.rst | 62 +++++++++++++++++++++----------------- docs/figures/LePHARE.pptx | Bin 52741 -> 52674 bytes docs/keywords.rst | 5 ++- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/docs/detailed.rst b/docs/detailed.rst index 697bbb4..590fdd4 100644 --- a/docs/detailed.rst +++ b/docs/detailed.rst @@ -12,15 +12,15 @@ interface and/or command lines). The basic principle ^^^^^^^^^^^^^^^^^^^ -*LePHARE* is a set of ``C++`` programs to compute photometric redshifts ( :math:`z_\mathrm{phot}` ) for galaxies and AGN, and galaxy physical parameters by fitting spectral energy distributions (SEDs) to a dataset of photometric fluxes or apparent magnitudes. Stellar templates are fitted too. The set of ``C++`` programs can also be manipulated as a library and handle through python scripts or notebooks. +*LePHARE* is a set of ``C++`` programs to compute photometric redshifts ( :math:`z_\mathrm{phot}` ) for galaxies and AGN, and galaxy physical parameters by fitting spectral energy distributions (SEDs) to a dataset of photometric fluxes or apparent magnitudes. Stellar templates are fitted too. The set of ``C++`` programs can also be manipulated as a library with python. The code can be run through notebooks or scripts, but also with command lines in the Unix shell as it was the case in previous versions of LePHARE in fortran. -The photometric computation can be decomposed in four parts, as illustrated in Fig `1 <#fig:skim>`__: +The photometric computation can be decomposed in four parts, as illustrated in :ref:`Fig.1 `. - a preliminary step to read the SED from synthetic models or observed spectra and build the SED library. This corresponds to the program ``sedtolib`` in command lines, and the class ``Sedtolib`` in python. -- a preliminary step to read the input filters used in the input galaxy catalog and build the filter library. This corresponds to the program ``filter`` in command line, and the class ``Filter`` in python. +- a preliminary step to read the input filters used in the input photometric catalog and build the filter library. This corresponds to the program ``filter`` in command line, and the class ``Filter`` in python. -- a program to compute apparent magnitudes in the filter set for each template of the library, along a grid of redshift, adding dust attenuation and nebular emission lines and storing the results. This step allows the user to extract basic information relative to the filters (e.g. :math:`\lambda_{mean}`, AB-corrections, attenuation) and SEDs (e.g. k-corrections, color-color diagrams, etc.). This corresponds to the program ``mag_gal`` in command line, and the class ``MagGal`` in python. +- a program to compute apparent magnitudes in the filter set for each template of the library, along a grid of redshifts, adding dust attenuation according to one or several laws, IGM opacity and nebular emission lines and storing the results. This step allows the user to extract basic information relative to the filters (e.g. :math:`\lambda_{mean}`, AB-corrections, attenuation) and SEDs (e.g. k-corrections, color-color diagrams, etc.). This corresponds to the program ``mag_gal`` in command line, and the class ``MagGal`` in python. - The photometric redshift code based on a :math:`\chi^2` fitting method using the previously established libraries. This part can also be used to compute physical parameters. This corresponds to the program ``zphota`` in command line, and the class ``PhotoZ`` in python. @@ -28,10 +28,13 @@ When running the code using command lines in your Unix shell, these four steps n -.. image:: figures/LePHARE_skim.png +.. figure:: figures/lephare_skim.png :width: 700 - :alt: Alternative text - :name: fig:skim + :alt: Basic run + :name: fig-skim + :align: left + + Fig.1: This figure present the four basic steps to run the code with command lines. The steps 1-2-3 could be compressed in a single one using the code "prepare" in python. @@ -39,9 +42,11 @@ When running the code using command lines in your Unix shell, these four steps n Structure of the code ^^^^^^^^^^^^^^^^^^^^^ -The structure of the package is illustrated in Fig `2 <#fig:structure>`__. +The structure of the package is illustrated in :ref:`Fig.2 `. + +The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of that. If you want to know where the executables are located, try *which setolib* in your prompt. -The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of anything. However, if you decide to install the code as a developper, i.e. by cloning the code from the `lephare github repository `_, the executables will be located in the ``LEPHARE/bin/`` directory. This directory should be automatically added to your PATH. The ``C++`` source code are located in ``LEPHARE/src/lib/`` and the python scripts are in ``LEPHARE/src/lephare/``. +If you have installed the code in developper mode, i.e. by cloning the code from the `lephare github repository `_, the ``C++`` source codes are located in ``LEPHARE/src/lib/`` and the python scripts are in ``LEPHARE/src/lephare/``. Two directories are essential for the functionning of the code: @@ -53,16 +58,17 @@ Two directories are essential for the functionning of the code: These two environment variables could be set in two different ways, depending on your need: -- Let the code set these environment variables by default (no action needed on your side). In such case, the code will identify your default ``cache`` directory. ``$LEPHAREDIR`` will be set to ``cache/lephare/data/``. ``$LEPHAREWORK`` will be set to ``cache/lephare/work/`` +- Let the code set these environment variables by default (no action needed on your side). In such case, the code will identify your default ``cache`` directory. These directories are indicated in the notebook when excecuting ``import lephare as lp`` in a notebook cell. -- Set yourself the values of these variables, either definitively in the usual files depending on your shell (e.g., ``.bash_profile`` or ``.csh_envlph``) or define them everytime you run the code. Defining them everytime is useful if you want to save the intermediate libraries within a different directory for each of your run. +- Set yourself the values of these variables. ``$LEPHAREWORK`` could point to any directory you like (intermediate library will be stored inside). ``$LEPHAREDIR`` should point to the LePHARE internal data directory (see below). +` - -.. image:: figures/LePHARE_structure.png +.. figure:: figures/lephare_structure.png :width: 700 :alt: Alternative text - :name: fig:structure + :name: fig-structure + Fig.2: Structure of the *LePHARE* repository. The LePHARE internal data directory @@ -72,11 +78,11 @@ The code needs essential information to run, like the filter curves or the SED t For a question of disk space and downloading time, the internal data are not installed by default. You have different methods to populate this directory: -- When importing the *LePHARE* package in python (``import lephare as lp``), a function allows the user to download only the data needed for the run ``lp.data_retrieval.get_auxiliary_data(keymap=keymap, additional_files=["examples/COSMOS.in", "examples/output.para"])``, with ``keymap`` being the map of keywords used to configure the run. The code will check the existence of the data before downloading them again. +- When importing the *LePHARE* package in python (``import lephare as lp``), a function allows the user to download only the data needed for the run ``lp.data_retrieval.get_auxiliary_data(keymap=keymap, additional_files=["examples/COSMOS.in", "examples/output.para"])``, with ``keymap`` being the map of keywords used to configure the run. The code will check if the data are already stored before downloading them again. -- You can also retrieve all internal data available in *LePHARE* immediatly, using the previous function ``lp.data_retrieval.get_auxiliary_data(clone=False)``. You need 1.3Gb available. +- You can retrieve all internal data available in *LePHARE* immediatly, using the previous function ``lp.data_retrieval.get_auxiliary_data(clone=True)``. You need 2Gb free to download these data. -- You can also clone the data directory from `lephare-data github repository `_. In such case, ``$LEPHAREDIR`` should be set to the ``LEPHARE-data`` directory. +- You can also clone the data directory from `lephare-data github repository `_. In such case, the environment variable ``$LEPHAREDIR`` should be set to the ``LEPHARE-data`` directory path created by the cloning (not done automatically). @@ -88,7 +94,7 @@ The sub-directories in ``$LEPHAREDIR`` are the following: - ``ext/`` includes several dust attenuation curves. -- ``opa/`` contains tables with the opacity of the intergalactic medium at various redshifts. The code uses by default the Madau et al. (1995) opacity. +- ``opa/`` contains tables with the opacity of the intergalactic medium at various redshifts. The code uses by default the Madau et al. (1995) opacity. - ``vega/`` includes some spectra used for calibration (e.g. Vega to AB convertion). @@ -117,21 +123,21 @@ Running the code Configuration files ^^^^^^^^^^^^^^^^^^^ -Two configuration files are important to run the code. +Two configuration files (noted .para) allow the user to set up the properties of the template-fitting run, as well as the quantitites that the user want in output. -One configuration file set the parameters associated to the run (e.g., ``$LEPHAREDIR/example/COSMOS.para``). It defines the set of templates, the filters and all the parameters that you want to tune to get the best results. You can store your parameter file where you want (e.g., in the directory where you run the code) to keep configuration files of different runs. Configuration files must be in ASCII format, compliant with the following rules: +One configuration file set the parameters associated to the run (e.g., ``$LEPHAREDIR/example/COSMOS.para`` an example which contains all the keywords). It defines the set of templates, the filters and all the parameters that you want to tune to get the best results. You can save your parameter file where you want (e.g., in the directory where you run the code) to keep configuration files of different runsat any location. Configuration files must be in ASCII format, compliant with the following rules: 1. Only one parameter per line, with the syntax: PARAMETER_NAME value(s) 2. Comment line starts with “#”. 3. Depending on the parameter, values can be Float, Integer, or String (without quotation marks). 4. When a parameter accepts multiple values, these must be comma separated (no space). 5. When a parameter accepts a file location (as a String), the path can include environmental variables (``$HOME`` and ``$LEPHAREDIR``). -6. Some parameters are mandatory, *LePHARE++* will print out an error message if they are not set (either in the configuration file or via the command line) -7. Other parameters can be omitted (*LePHARE++* will assign a default value to them) +6. Some parameters are mandatory. *LePHARE++* will print out an error message if they are not set. +7. Other parameters can be omitted (*LePHARE++* will assign a default value to them). In the next sections, we will mark the mandatory parameters with an asterisk ("\*"). -A second configuration file (e.g., ``$LEPHAREDIR/example/output.para``) indicates which properties should be written in the output file. If not existing, all possible properties will be included in the output. +A second configuration file (e.g., ``$LEPHAREDIR/example/output.para``) indicates which properties should be written in the output file. If the output para is not mentioned explicitly, the output file will include all the parameters that LePhare compute. @@ -151,7 +157,7 @@ All the programs in the suite can be run from a Unix shell with the following sy where `program` is the name of the program (among ``filter``, ``sedtolib``, ``mag_gal``, ``zphota``), followed by a configuration file called with the ``-c`` option. -The various code options are defined in the configuration file but can also be given through additional instructions in the command line. Using such an optional list of parameters, any ``--Parameter value`` statement overrides the values in the configuration file. +The various code options are defined in the configuration file but can also be given through additional instructions in the command line. Using such an optional list of parameters, any ``--Parameter value`` statement overrides the values in the configuration file. All the parameters are listed in the section :ref:`Keywords`. An extensive example on how to run the code with command lines and including some advanced features is available in this `example `_. @@ -167,14 +173,14 @@ The ``C++`` programs can also be manipulated as a library using the python inter Classes from the *LePHARE* library can be manipulated from the python interface. Several notebooks are given in example in :doc:`notebooks `. -The `full run notebook `_ is the closest to the four steps outlined in Fig `1 <#fig:skim>`__, i.e. creating the filter library, the SED library, then build the predicted magnitudes from these filters and SEDs (for GAL/QSO/STAR), and finally running the photometric redshifts. +The `detailed run notebook `_ is the closest to the four steps outlined in Fig `1 <#fig:skim>`__, i.e. creating the filter library, the SED library, then build the predicted magnitudes from these filters and SEDs (for GAL/QSO/STAR), and finally running the photometric redshifts for a subsample of galaxies from COSMOS2020 having a spec-z. -However, we also added a function ``lp.prepare`` which first compute the full predicted magnitude library (the equivalent of combining filter, sedtolib, mag_gal together in the command lines), and then we compute the photometric redshifts with ``lp.process``. +However, we also added a function ``lp.prepare`` which first compute the full predicted magnitude library (the equivalent of combining filter, sedtolib, mag_gal together in the command lines), and then we compute the photometric redshifts with ``lp.process`` as in the example below and in this `typical run notebook `_. .. code-block:: bash # Read the config file within the working directory - config = lp.read_config("zphot.para") + config = lp.read_config("your_config.para") # Example of change in the keywords config.update( { @@ -2536,4 +2542,4 @@ Appendix C : C++ compilation flags C++ compilation makes use of a number compilation flags which can be changed to improve performance or enable compilation on unusual systems. By updating -the CMakeLists.txt file flags can be removed, added, or be updated. \ No newline at end of file +the CMakeLists.txt file flags can be removed, added, or be updated. diff --git a/docs/figures/LePHARE.pptx b/docs/figures/LePHARE.pptx index 618fe4badc750265a45cfa864e8030714fd7c688..51df894f45b6c08c779a2400d7e63b79776ae98f 100644 GIT binary patch delta 11843 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 LD%gphe_a0$NPUlq delta 11896 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 Date: Thu, 14 Nov 2024 13:26:28 +0100 Subject: [PATCH 34/44] Very minor change following Olivier's branch merge --- docs/getting_started.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 3e25766..c98765b 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -5,9 +5,9 @@ Getting Started Installation ============ -LePHARE is distributed with `pypi `_, and -thus the simplest way to install it is with pip. This depends on having -conda installed. +LePHARE is distributed with the Python Package Index `(PyPI) `_, and +thus the simplest way to install it is with pip. We also reccommend using a conda +environment to control Python version and isolate your installation: .. code-block:: bash From d41e4036f152268f7cb7e75c1b964bf0c5bfadf1 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Fri, 15 Nov 2024 10:41:24 +0100 Subject: [PATCH 35/44] Remove warning regarding version to make this the official repo When this documentation is merged we will define v0.2.0 and deprecate the GitLab version --- README.md | 2 -- docs/index.rst | 13 ++++++------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b894c63..655be29 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,6 @@ LePHARE is a code for estimating galaxy redshifts and physical parameters using The code documentation, including how to install it and to get started, can be found [here](https://lephare.readthedocs.io/). -**IMPORTANT!** The current repository is under development. If you wish to use LePHARE for science work, please download it from the [currently stable repository](https://gitlab.lam.fr/Galaxies/LEPHARE/). - # Requests and help If you need help with the code, or if you have feature requests, please use the github issue system to let us know. diff --git a/docs/index.rst b/docs/index.rst index 03b00a0..2c45ba5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -5,13 +5,6 @@ LePHARE (PHotometric Analysis for Redshift Estimation) ======================================================================================== -.. warning:: - - This is a work in progress, and should not be used by anyone at this stage. The - current LePHARE code is to be found at `https://gitlab.lam.fr/Galaxies/LEPHARE - `_. - - .. image:: https://avatars.githubusercontent.com/u/165841626?s=400&u=ff86bd4c19a9d36958cf1b47d84849dbe25c274a&v=4 :alt: LePHARE logo :align: center @@ -23,6 +16,12 @@ of photometric fluxes or apparent magnitudes. LePHARE was originally written in fortran (Arnout et al. 1999; Ilbert et al. 2006). It has been completely rewritten in C++ with a Python interface. +.. note:: + + This is the official version of LePHARE in C++/Python. It is in active development. The + deprecated version can be found `here `_ + in case you have legacy code that depends on it. + .. toctree:: :hidden: From 8552b4c08836ec80b483837ad42e4a428f1b1b99 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Fri, 15 Nov 2024 14:18:50 +0100 Subject: [PATCH 36/44] Trying to fix documentation build issue it seems that GitH hub is requireing a custom user now to prevent getting spammed. see https://github.com/readthedocs/readthedocs.org/issues/11763 --- src/lephare/data_retrieval.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lephare/data_retrieval.py b/src/lephare/data_retrieval.py index 81f7049..3790abb 100644 --- a/src/lephare/data_retrieval.py +++ b/src/lephare/data_retrieval.py @@ -87,7 +87,7 @@ def _check_registry_is_latest_version(remote_registry_url, local_registry_file): local_registry_hash = pooch.file_hash(local_registry_file, alg="sha256") remote_hash_url = os.path.splitext(remote_registry_url)[0] + "_hash.sha256" - remote_hash_response = requests.get(remote_hash_url, timeout=60) + remote_hash_response = requests.get(remote_hash_url, headers={"User-Agent": "LePHARE"}, timeout=60) remote_hash_response.raise_for_status() # Raise exceptions for non-200 status codes return remote_hash_response.text.strip() == local_registry_hash From 28265b2cba15541c006e3381e1fd68c09d72a89b Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Fri, 15 Nov 2024 14:43:43 +0100 Subject: [PATCH 37/44] Updating pooch tests to deal with new downloader It seems for docs to build we need to add a user but this broke the test so I have removed the test to see if it will tehn build --- src/lephare/data_retrieval.py | 5 ++++- tests/lephare/test_data_retrieval.py | 16 ++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/lephare/data_retrieval.py b/src/lephare/data_retrieval.py index 3790abb..9c9a242 100644 --- a/src/lephare/data_retrieval.py +++ b/src/lephare/data_retrieval.py @@ -124,7 +124,7 @@ def download_registry_from_github(url="", outfile=""): return # Download the registry file - response = requests.get(url, timeout=120) + response = requests.get(url, headers={"User-Agent": "LePHARE"}, timeout=120) response.raise_for_status() # Raise exceptions for non-200 status codes with open(outfile, "w", encoding="utf-8") as file: @@ -263,11 +263,14 @@ def download_file(retriever, file_name, ignore_registry=False): """ if ignore_registry: print(f"Downloading without registry: {file_name}...") + downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) return pooch.retrieve( url=urljoin(retriever.base_url, file_name), known_hash=None, fname=file_name, path=retriever.path, + # The following may now be required by GitHub + downloader=downloader, ) else: return retriever.fetch(file_name) diff --git a/tests/lephare/test_data_retrieval.py b/tests/lephare/test_data_retrieval.py index f051f9e..c943c23 100644 --- a/tests/lephare/test_data_retrieval.py +++ b/tests/lephare/test_data_retrieval.py @@ -113,14 +113,14 @@ def test_download_single_file(data_registry_file): mock_fetch.assert_called_once_with(file_name) -def test_download_single_file_ignore_registry(data_registry_file): - retriever = make_retriever(registry_file=data_registry_file) - file_name = "file1.txt" - with patch("pooch.retrieve", return_value="/path/to/downloaded/file1.txt") as mock_retrieve: - download_file(retriever, file_name, ignore_registry=True) - mock_retrieve.assert_any_call( - url=f"{retriever.base_url}{file_name}", known_hash=None, fname=file_name, path=retriever.path - ) +# def test_download_single_file_ignore_registry(data_registry_file): +# retriever = make_retriever(registry_file=data_registry_file) +# file_name = "file1.txt" +# with patch("pooch.retrieve", return_value="/path/to/downloaded/file1.txt") as mock_retrieve: +# download_file(retriever, file_name, ignore_registry=True) +# mock_retrieve.assert_any_call( +# url=f"{retriever.base_url}{file_name}", known_hash=None, fname=file_name, path=retriever.path +# ) @patch("lephare.data_retrieval.download_file") From 299f143c2094d2616fbe9fd0efe976c9d204be53 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Fri, 15 Nov 2024 14:59:06 +0100 Subject: [PATCH 38/44] Further tests on retrieval with user specified --- src/lephare/data_retrieval.py | 6 +++++- tests/lephare/test_data_retrieval.py | 13 ++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lephare/data_retrieval.py b/src/lephare/data_retrieval.py index 9c9a242..1926a41 100644 --- a/src/lephare/data_retrieval.py +++ b/src/lephare/data_retrieval.py @@ -273,7 +273,11 @@ def download_file(retriever, file_name, ignore_registry=False): downloader=downloader, ) else: - return retriever.fetch(file_name) + downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) + return retriever.fetch( + file_name, + downloader=downloader, + ) def download_all_files(retriever, file_names, ignore_registry=False, retry=MAX_RETRY_ATTEMPTS): diff --git a/tests/lephare/test_data_retrieval.py b/tests/lephare/test_data_retrieval.py index c943c23..8f20e89 100644 --- a/tests/lephare/test_data_retrieval.py +++ b/tests/lephare/test_data_retrieval.py @@ -10,7 +10,6 @@ _check_downloaded_files, _create_directories_from_files, download_all_files, - download_file, filter_files_by_prefix, make_default_retriever, make_retriever, @@ -105,12 +104,12 @@ def test_check_downloaded_files_empty(mock_getsize): assert not _check_downloaded_files(file_names, downloaded_files) -def test_download_single_file(data_registry_file): - retriever = make_retriever(registry_file=data_registry_file) - file_name = "file1.txt" - with patch.object(retriever, "fetch", return_value="/path/to/downloaded/file1.txt") as mock_fetch: - download_file(retriever, file_name) - mock_fetch.assert_called_once_with(file_name) +# def test_download_single_file(data_registry_file): +# retriever = make_retriever(registry_file=data_registry_file) +# file_name = "file1.txt" +# with patch.object(retriever, "fetch", return_value="/path/to/downloaded/file1.txt") as mock_fetch: +# download_file(retriever, file_name) +# mock_fetch.assert_called_once_with(file_name) # def test_download_single_file_ignore_registry(data_registry_file): From 7c1366719af576a68d8c41fdc79c6268b5341a42 Mon Sep 17 00:00:00 2001 From: Raphael Shirley Date: Fri, 15 Nov 2024 15:13:46 +0100 Subject: [PATCH 39/44] Got original tests working with new downloader specified I had to send a specific downloader to check the call --- src/lephare/data_retrieval.py | 8 ++++--- tests/lephare/test_data_retrieval.py | 36 +++++++++++++++++----------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/lephare/data_retrieval.py b/src/lephare/data_retrieval.py index 1926a41..09cdff0 100644 --- a/src/lephare/data_retrieval.py +++ b/src/lephare/data_retrieval.py @@ -244,7 +244,7 @@ def _create_directories_from_files(file_names): print(f"Created directory: {directory}") -def download_file(retriever, file_name, ignore_registry=False): +def download_file(retriever, file_name, ignore_registry=False, downloader=None): """Download a file using the retriever, optionally ignoring the registry. Parameters @@ -255,15 +255,18 @@ def download_file(retriever, file_name, ignore_registry=False): The name of the file to download. ignore_registry : bool If True, download the file without checking its hash against the registry. + downloader : pooch.HTTPDownloader + The downloader is required to set the user for building on readthedocs Returns ------- str The path to the downloaded file. """ + if downloader is None: + downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) if ignore_registry: print(f"Downloading without registry: {file_name}...") - downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) return pooch.retrieve( url=urljoin(retriever.base_url, file_name), known_hash=None, @@ -273,7 +276,6 @@ def download_file(retriever, file_name, ignore_registry=False): downloader=downloader, ) else: - downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) return retriever.fetch( file_name, downloader=downloader, diff --git a/tests/lephare/test_data_retrieval.py b/tests/lephare/test_data_retrieval.py index 8f20e89..0529418 100644 --- a/tests/lephare/test_data_retrieval.py +++ b/tests/lephare/test_data_retrieval.py @@ -2,6 +2,7 @@ from pathlib import Path from unittest.mock import mock_open, patch +import pooch import pytest from lephare.data_retrieval import ( DEFAULT_BASE_DATA_URL, @@ -10,6 +11,7 @@ _check_downloaded_files, _create_directories_from_files, download_all_files, + download_file, filter_files_by_prefix, make_default_retriever, make_retriever, @@ -104,22 +106,28 @@ def test_check_downloaded_files_empty(mock_getsize): assert not _check_downloaded_files(file_names, downloaded_files) -# def test_download_single_file(data_registry_file): -# retriever = make_retriever(registry_file=data_registry_file) -# file_name = "file1.txt" -# with patch.object(retriever, "fetch", return_value="/path/to/downloaded/file1.txt") as mock_fetch: -# download_file(retriever, file_name) -# mock_fetch.assert_called_once_with(file_name) +def test_download_single_file(data_registry_file): + retriever = make_retriever(registry_file=data_registry_file) + downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) + file_name = "file1.txt" + with patch.object(retriever, "fetch", return_value="/path/to/downloaded/file1.txt") as mock_fetch: + download_file(retriever, file_name, downloader=downloader) + mock_fetch.assert_called_once_with(file_name, downloader=downloader) -# def test_download_single_file_ignore_registry(data_registry_file): -# retriever = make_retriever(registry_file=data_registry_file) -# file_name = "file1.txt" -# with patch("pooch.retrieve", return_value="/path/to/downloaded/file1.txt") as mock_retrieve: -# download_file(retriever, file_name, ignore_registry=True) -# mock_retrieve.assert_any_call( -# url=f"{retriever.base_url}{file_name}", known_hash=None, fname=file_name, path=retriever.path -# ) +def test_download_single_file_ignore_registry(data_registry_file): + retriever = make_retriever(registry_file=data_registry_file) + file_name = "file1.txt" + downloader = pooch.HTTPDownloader(headers={"User-Agent": "LePHARE"}) + with patch("pooch.retrieve", return_value="/path/to/downloaded/file1.txt") as mock_retrieve: + download_file(retriever, file_name, ignore_registry=True, downloader=downloader) + mock_retrieve.assert_any_call( + url=f"{retriever.base_url}{file_name}", + known_hash=None, + fname=file_name, + path=retriever.path, + downloader=downloader, + ) @patch("lephare.data_retrieval.download_file") From 7339ca21a66383d77ad8b6ac9ff5ea420deeaebd Mon Sep 17 00:00:00 2001 From: OlivierIlbert Date: Thu, 21 Nov 2024 07:25:41 +0100 Subject: [PATCH 40/44] In the python usage page, point to the README rather than a specific notebook --- docs/python_usage.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python_usage.rst b/docs/python_usage.rst index 050d7d5..b4c7cc0 100644 --- a/docs/python_usage.rst +++ b/docs/python_usage.rst @@ -5,7 +5,7 @@ Advanced Usage via Python Interface The best way to learn about the Python interface is through running the example :doc:`notebooks `. We have made an intermediate notebook to demonstrate how a new user can download the required filters and run lephare on their own data. You can download the notebook from -`here `_ +`here `_ which should directly run following installation of lephare via pip. You can also see the executed notebook with all outputs :doc:`here `. From 416f717910893bf272c1607155043ad7cff40ab5 Mon Sep 17 00:00:00 2001 From: OlivierIlbert Date: Thu, 21 Nov 2024 09:03:36 +0100 Subject: [PATCH 41/44] Minor changes in the text of index and getting_started --- docs/getting_started.rst | 32 +++++++++++++++++++++++++------- docs/index.rst | 3 ++- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index c98765b..27ddc70 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -6,7 +6,14 @@ Getting Started Installation ============ LePHARE is distributed with the Python Package Index `(PyPI) `_, and -thus the simplest way to install it is with pip. We also reccommend using a conda +thus the simplest way to install it is with pip: + +.. code-block:: bash + + pip install lephare + + +We also reccommend using a conda environment to control Python version and isolate your installation: .. code-block:: bash @@ -21,6 +28,13 @@ environment to control Python version and isolate your installation: # And create a kernel which has access to this environment python -m ipykernel install --user --name +A this stage, the following Python snippet should work: + +.. code-block:: python + + import lephare as lp + + .. warning:: For previous users of who have set LEPHAREDIR and LEPHAREWORK in their environment these should be unset to avoid clashing versions. @@ -46,9 +60,10 @@ You can also get an example notebook running this code `here Date: Thu, 21 Nov 2024 11:18:01 +0100 Subject: [PATCH 42/44] slight improvements in advanced_install --- docs/advanced_install.rst | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/docs/advanced_install.rst b/docs/advanced_install.rst index 98788ee..c57267a 100644 --- a/docs/advanced_install.rst +++ b/docs/advanced_install.rst @@ -10,33 +10,39 @@ git repositories in order to allow modification of the code and auxiliary data. Auxiliary Data and the Environment Variables ******************************************** + LePHARE depends on auxiliary data sets such as spectral energy distributions, filter transmission curves, and attenuation curves. In order to keep the pip installation light these are now stored in a distinct repository called `lephare-data `_. +LePHARE uses environment variables to locate the external data and work files. These are set by default to your cache. Both can be set if preferred. The two environment variables are the following: + +* `LEPHAREDIR` is the location of the auxiliary data. +* `LEPHAREWORK` is the location of the intermediate files produced during a LePHARE run. -We have built some automatic machinery for downloading the required files -for a given config `para` file. The automatic download functionality can also be used to -download all external data. However, some users may prefer to simply clone -the entire directory: -.. code-block:: bash - - git clone https://github.com/lephare-photoz/lephare-data - # Set the LEPHAREDIR to this data location - export LEPHAREDIR=$PWD/lephare-data .. note:: - lephare uses environment variables to locate the external data and work files. - These are set by default to your cache. If you want to download the external data to a specific location you must set the environment variable `LEPHAREDIR` to its location. This must be done prior to - importing lephare in a python session. If not lephare will use the default cache + importing lephare in a python session. If not LePHARE will use the default cache location on your system. + +Some users may prefer to simply clone the entire auxiliary data directory: -In the following snippet we show how you might set the `LEPHAREDIR` to a new location -and download all the auxiliary data there: +.. code-block:: bash + + git clone https://github.com/lephare-photoz/lephare-data + # Set the LEPHAREDIR to this data location + export LEPHAREDIR=$PWD/lephare-data + + +We have also built some automatic machinery for downloading the +required files for a given config `para` file. The automatic download +functionality can also be used to download all external data. In the +following snippet we show how you might set the `LEPHAREDIR` to a new +location and download all the auxiliary data there: .. code-block:: python @@ -51,10 +57,6 @@ and download all the auxiliary data there: # Setting clone=True would use a git clone which may be faster but will only run # on an empty directory. -* `LEPHAREDIR` is the location of the auxiliary input data. -* `LEPHAREWORK` is the location of the intermediate files produced during a lephare run. - -Both can be set if preferred or left to the default location in the user cache. Developer Installation ********************** From bac19f85c557628026fcbef80b4cfaf1f267b830 Mon Sep 17 00:00:00 2001 From: OlivierIlbert Date: Fri, 22 Nov 2024 08:25:06 +0100 Subject: [PATCH 43/44] Include comments from Mara and other changes from Olivier --- docs/detailed.rst | 1073 ++++++++++++++-------------- docs/figures/LePHARE.pptx | Bin 52674 -> 52643 bytes docs/figures/LePHARE_structure.png | Bin 177745 -> 162622 bytes 3 files changed, 543 insertions(+), 530 deletions(-) diff --git a/docs/detailed.rst b/docs/detailed.rst index 590fdd4..8c038a1 100644 --- a/docs/detailed.rst +++ b/docs/detailed.rst @@ -24,11 +24,11 @@ The photometric computation can be decomposed in four parts, as illustrated in : - The photometric redshift code based on a :math:`\chi^2` fitting method using the previously established libraries. This part can also be used to compute physical parameters. This corresponds to the program ``zphota`` in command line, and the class ``PhotoZ`` in python. -When running the code using command lines in your Unix shell, these four steps need to have been run at least once (but not everytime if the libraries already exist). When running the code using the python interface, these steps could be combined or atomized in smaller steps, but the basic principle of building the magnitude libraries before computing the photometric redshifts remain the same. +When running the code using command lines in your Unix shell, these four steps need to have been run at least once (but not everytime if the libraries already exist). When running the code using the python interface, the first three steps could be combined or atomized in smaller steps, but the basic principle of building the magnitude libraries before computing the photometric redshifts remain the same. -.. figure:: figures/lephare_skim.png +.. figure:: figures/LePHARE_skim.png :width: 700 :alt: Basic run :name: fig-skim @@ -44,7 +44,7 @@ Structure of the code The structure of the package is illustrated in :ref:`Fig.2 `. -The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of that. If you want to know where the executables are located, try *which setolib* in your prompt. +The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of that. If you want to know where the executables are located, try ``which setolib` in your prompt. If you have installed the code in developper mode, i.e. by cloning the code from the `lephare github repository `_, the ``C++`` source codes are located in ``LEPHARE/src/lib/`` and the python scripts are in ``LEPHARE/src/lephare/``. @@ -61,9 +61,8 @@ These two environment variables could be set in two different ways, depending on - Let the code set these environment variables by default (no action needed on your side). In such case, the code will identify your default ``cache`` directory. These directories are indicated in the notebook when excecuting ``import lephare as lp`` in a notebook cell. - Set yourself the values of these variables. ``$LEPHAREWORK`` could point to any directory you like (intermediate library will be stored inside). ``$LEPHAREDIR`` should point to the LePHARE internal data directory (see below). -` -.. figure:: figures/lephare_structure.png +.. figure:: figures/LePHARE_structure.png :width: 700 :alt: Alternative text :name: fig-structure @@ -78,17 +77,16 @@ The code needs essential information to run, like the filter curves or the SED t For a question of disk space and downloading time, the internal data are not installed by default. You have different methods to populate this directory: -- When importing the *LePHARE* package in python (``import lephare as lp``), a function allows the user to download only the data needed for the run ``lp.data_retrieval.get_auxiliary_data(keymap=keymap, additional_files=["examples/COSMOS.in", "examples/output.para"])``, with ``keymap`` being the map of keywords used to configure the run. The code will check if the data are already stored before downloading them again. +- You can clone the full auxiliary data directory from `lephare-data github repository `_. In such case, the environment variable ``$LEPHAREDIR`` should be set to the ``LEPHARE-data`` directory path created by the cloning (not done automatically). -- You can retrieve all internal data available in *LePHARE* immediatly, using the previous function ``lp.data_retrieval.get_auxiliary_data(clone=True)``. You need 2Gb free to download these data. +- You can retrieve all auxiliary data available in *LePHARE* immediatly, using the function ``lp.data_retrieval.get_auxiliary_data(clone=True)`` after having imported lephare as lp in python. You need 2Gb free to download these data. This function allows the user to download only the data needed for the run ``lp.data_retrieval.get_auxiliary_data(keymap=keymap, additional_files=["examples/COSMOS.in", "examples/output.para"])``, with ``keymap`` being the map of keywords used to configure the run. The code will check if the data are already stored before downloading them again. -- You can also clone the data directory from `lephare-data github repository `_. In such case, the environment variable ``$LEPHAREDIR`` should be set to the ``LEPHARE-data`` directory path created by the cloning (not done automatically). The sub-directories in ``$LEPHAREDIR`` are the following: -- ``sed/`` which contains three sub-directories for galaxies ``GAL``, for Active Galaxy Nuclei ``QSO`` (named QSO for legacy reason), and for stars ``STAR``. Each of these subdirectory contains its own set of templates (the various directories should have a README file and a file named ``.list`` with a default list of templates. +- ``sed/`` which contains three sub-directories for galaxies ``GAL``, for Active Galaxy Nuclei ``QSO`` (named QSO for legacy reason), and for stars ``STAR``. Each of these subdirectory contains its own set of templates (the various directories should have a README file and a file named ``.list`` with a default list of templates). - ``filt/`` contains subdirectories with telescope/instrument/survey names corresponding to a set of filters. A large number of filters are already included in the package. However, we propose also a solution when using the python interface to download the filters from a `Filter Profile Service `_ with a much more extensive filter database. @@ -125,19 +123,20 @@ Configuration files Two configuration files (noted .para) allow the user to set up the properties of the template-fitting run, as well as the quantitites that the user want in output. -One configuration file set the parameters associated to the run (e.g., ``$LEPHAREDIR/example/COSMOS.para`` an example which contains all the keywords). It defines the set of templates, the filters and all the parameters that you want to tune to get the best results. You can save your parameter file where you want (e.g., in the directory where you run the code) to keep configuration files of different runsat any location. Configuration files must be in ASCII format, compliant with the following rules: +One configuration file set the parameters associated to the run (e.g., ``$LEPHAREDIR/example/COSMOS.para`` an example which contains all the keywords). It defines the set of templates, the filters and all the parameters that you want to tune to get the best results. You can save your parameter file where you want (e.g., in the directory where you run the code) to keep configuration files of different runs at any location. Configuration files must be in ASCII format, compliant with the following rules: 1. Only one parameter per line, with the syntax: PARAMETER_NAME value(s) 2. Comment line starts with “#”. 3. Depending on the parameter, values can be Float, Integer, or String (without quotation marks). 4. When a parameter accepts multiple values, these must be comma separated (no space). 5. When a parameter accepts a file location (as a String), the path can include environmental variables (``$HOME`` and ``$LEPHAREDIR``). -6. Some parameters are mandatory. *LePHARE++* will print out an error message if they are not set. -7. Other parameters can be omitted (*LePHARE++* will assign a default value to them). +6. Some parameters are mandatory. *LePHARE* will print out an error message if they are not set. +7. Other parameters can be omitted (*LePHARE* will assign a default value to them). In the next sections, we will mark the mandatory parameters with an asterisk ("\*"). -A second configuration file (e.g., ``$LEPHAREDIR/example/output.para``) indicates which properties should be written in the output file. If the output para is not mentioned explicitly, the output file will include all the parameters that LePhare compute. +A second configuration file (e.g., ``$LEPHAREDIR/example/output.para``) indicates which properties should be written in the output file. The output.para includes all the possible output parameters. You can comment those that are of no intersest to you. + @@ -171,7 +170,7 @@ The ``C++`` programs can also be manipulated as a library using the python inter import lephare as lp -Classes from the *LePHARE* library can be manipulated from the python interface. Several notebooks are given in example in :doc:`notebooks `. +Several notebooks are given in example in `here `_. The `detailed run notebook `_ is the closest to the four steps outlined in Fig `1 <#fig:skim>`__, i.e. creating the filter library, the SED library, then build the predicted magnitudes from these filters and SEDs (for GAL/QSO/STAR), and finally running the photometric redshifts for a subsample of galaxies from COSMOS2020 having a spec-z. @@ -201,16 +200,18 @@ However, we also added a function ``lp.prepare`` which first compute the full pr .. _models: -Build the rest-frame template library +Build the rest-frame templates library --------------------------------- Overview ^^^^^^^^ -In this first step, we generate a unique binary file from different kinds of SEDs (star/AGN/galaxy) with various original formats (ASCII, binary). The binary output file (\*.bin) is saved in the directory ``$LEPHAREWORK/lib_bin/`` with an attached doc file (\*.doc) and a file with physical information (\*.phys) for galaxies. For models with input SEDs expressed in luminosity or energy (:math:`L_{\odot}/A`,\ :math:`\nu L_{\nu}`,...), like BC03, or the FIR libraries, the SED are converted in flux (:math:`erg/s/cm^2/A`). +In this first step, we generate a unique binary file from different kinds of SEDs (star/AGN/galaxy) with various original formats (ASCII, binary). The binary output file (\*.bin) is saved in the directory ``$LEPHAREWORK/lib_bin/`` with an attached doc file (\*.doc). An associated file with physical information (\*.phys) is provided only for galaxies (not calibrated or not relevant for stars or AGN). For models with input SEDs expressed in luminosity or energy (:math:`L_{\odot}/A`,\ :math:`\nu L_{\nu}`,...), like BC03, or the FIR libraries, the SED are converted in flux (:math:`erg/s/cm^2/A`). -A set of libraries for stars, galaxies, and AGN are available in $LEPHAREDIR/sed/STAR, $LEPHAREDIR/sed/GAL, $LEPHAREDIR/sed/QSO directories and organized in different sub-folders. Each sub-folder contains a specific collection of SED files, described in a README (how those SEDs were built, etc.), and a file (usually with the suffix ``.list``) listing the relative path of the SED files to be used as input to create the libeary. For STAR and QSO and most of the galaxies, SEDs are written in ASCII, with :math:`\lambda(A)`, flux[:math:`erg/s/A/cm^2`], with increasing :math:`\lambda`. For Galaxy, in addition to empirical SEDs, output files from stellar synthesis population models (BC03) with a more complex format can also be used by adding a specific character after the file name in the SED list file. +A set of libraries for stars, galaxies, and AGN are available in $LEPHAREDIR/sed/STAR, $LEPHAREDIR/sed/GAL, $LEPHAREDIR/sed/QSO directories and organized in different sub-folders. Each sub-folder contains a specific collection of SED files, described in a README (how those SEDs were built, etc.), and a file (usually with the suffix ``.list``) listing the relative path of the SED files to be used as input to create the libeary. For STAR and QSO and most of the galaxies, SEDs are written in ASCII, with :math:`\lambda(A)`, flux[:math:`erg/s/A/cm^2`], with increasing :math:`\lambda`. For Galaxy, in addition to empirical SEDs, output files from stellar synthesis population models (BC03) with a more complex format can also be used by adding a specific character *BC03* after the file name in the SED list file. Here are two examples of lists with the +`BC03 templates `_ used in Ilbert et al. (2015) and the +`COSMOS templates `_ used in Ilbert et al. (2009) @@ -233,7 +234,7 @@ The syntax is with python ~~~~~~~~~~~ -With the python, you need to instantiate an object from the class ``Sedtolib``, and indicate the type of SEDs (GAL/QSO/STAR) when applying the fonction ``run``. +With the python, you need to instantiate an object from the class ``Sedtolib``, and indicate the type of SEDs (GAL/QSO/STAR) when applying the function ``run``. .. code-block:: python @@ -251,40 +252,37 @@ Parameter values ^^^^^^^^^^^^^^^^ -The parameter value "XXX" means either GAL or QSO or STAR. Note that SEL_AGE and AGE_RANGE are relevant only when using templates including an age (e.g. BC03). +The parameter value "XXX" means either GAL or QSO or STAR. + +-------------+--------+---------+----------------------------------+ | parameter | type | default | description | +=============+========+=========+==================================+ | XXX_SED(\*) | string | —- | Full pathname of file with the | | | | | list of selected SED files | -+-------------+--------+---------+----------------------------------+ | | (n=1) | | | +-------------+--------+---------+----------------------------------+ | XXX_LIB(\*) | string | —- | Name of the output binary | -| | | | library (with no extension) | -+-------------+--------+---------+----------------------------------+ +| | | | library (with no extension). | | | (n=1) | | Files *$XXX_LIB*.bin, | | | | | *$XXX_LIB*.doc and | | | | | *$XXX_LIB*.phys | -+-------------+--------+---------+----------------------------------+ | | | | saved in | | | | | $\ *LEPHAREWORK*/lib_bin/ | +-------------+--------+---------+----------------------------------+ | XXX_FSCALE | float | 1.0 | Flux scale to be applied to each | | | | | SED in the list | -+-------------+--------+---------+----------------------------------+ | | (n=1) | | | +-------------+--------+---------+----------------------------------+ | SEL_AGE | string | NONE | Full pathname of file with a | | | | | list of ages (Gyr) | +| | (n=1) | | to be extracted. | +| | | | Only when using templates | +| | | | including an age (e.g. BC03). | +-------------+--------+---------+----------------------------------+ -| | (n=1) | | to be extracted from BC03 | -| | | | | -+-------------+--------+---------+----------------------------------+ -| AGE_RANGE | float | —– | Range of age (Gyr) | -+-------------+--------+---------+----------------------------------+ -| | (n=2) | | | +| AGE_RANGE | float | —– | Range of age (Gyr). | +| | (n=2) | | Only when using templates | +| | | | including an age (e.g. BC03). | +-------------+--------+---------+----------------------------------+ @@ -293,9 +291,8 @@ Adding new templates ^^^^^^^^^^^^^^^^^^^^ New SEDs can be easily added to the current ones. They must be located -in the appropriate directory (GAL/STAR/QSO). If they are ASCII files -they must be in :math:`\lambda(A)`, flux[:math:`erg/s/A/cm^2`], with -increasing :math:`\lambda`. +in the appropriate directory (GAL/STAR/QSO) and we also advice to create a subdirectory. If they are ASCII files +they must be in :math:`\lambda(A)`, flux[:math:`erg/s/A/cm^2`], with increasing :math:`\lambda`. @@ -346,7 +343,8 @@ For Far-Infrared (FIR) SEDs *($LEPHAREDIR/sed/GAL)*, different SEDs are availabl - LAGACHE/: 46 FIR templates - SK06/ : different set of starburst models based on Siebenmorgen &Krugel (2006) -Note that for the first 3 libraries (CHARY-ELBAZ, DALE, LAGACHE), we have subtracted a stellar component from their SEDs to get only the dust contribution at the shortest wavelengths. + .. note:: + Note that for the first 3 libraries (CHARY-ELBAZ, DALE, LAGACHE), we have subtracted a stellar component from their SEDs to get only the dust contribution at the shortest wavelengths. To know the format of the SEDs that are used in your list, an additional character must be specified after each SED file, allowing you to mix in one list of different types of galaxy SEDs. For example, you could prepare a new list which includes: @@ -356,11 +354,11 @@ To know the format of the SEDs that are used in your list, an additional charact | COSMOS_SED/Ell1_A_0.sed | COSMOS_SED/Ell2_A_0.sed -In each list, it is possible to comment a template with #. -For ASCII SED file, no character is required. The character BC03 is used for the Bruzual and Charlot 2003 models. For the BC03 templates, the file is in ASCII for the C++ version of LePhare, to avoid the problem of portability between various systems. - -For the list with FIR SEDs, the character LW (as for Long Wavelength) is required. +In each list, it is possible to comment out a template with #. +For ASCII SED file, no character is required. The character BC03 is used for the Bruzual and Charlot 2003 models. For the BC03 templates, the files are in ASCII for the C++ version of LePhare, to avoid the problem of portability between various systems. +For the list with FIR SEDs, the character LW (as for Long Wavelength) is required, with an example for Chary and Elbaz (2001) +`templates list `_. Find physical information associated to the library ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -371,10 +369,10 @@ For the galaxy templates, an additional file is generated associated to the libr | where | Age is expressed in yr -| :math:`L_{UV}` is NUV monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{2100}^{2500} L_{\lambda} d\lambda /400 * 2300^2/c` )) +| :math:`L_{UV}` is near-ultraviolet monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{2100}^{2500} L_{\lambda} d\lambda /400 * 2300^2/c` )) | :math:`L_R` is optical r monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{5500}^{6500} L_{\lambda} d\lambda /1000 * 6000^2/c` )) -| :math:`L_K` is NIR K monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{21000}^{23000} L_{\lambda} d\lambda /2000 * 22000^2/c` )) -| :math:`L_{IR}` is the IR luminosity (Log([:math:`L_{\odot}`])) +| :math:`L_K` is near-infrared K monochromatic luminosity (Log([erg/s/Hz])) (:math:`\int_{21000}^{23000} L_{\lambda} d\lambda /2000 * 22000^2/c` )) +| :math:`L_{IR}` is the infrared luminosity (Log([:math:`L_{\odot}`])) | Mass is the stellar mass (:math:`M_{\odot}`), .i.e. the mass truly in stars (not the integral of the SFH) | SFR is the ongoing star formation rate (:math:`M_{\odot}/yr`) | Metallicity is the Gas metallicity of the galaxy @@ -383,7 +381,7 @@ For the galaxy templates, an additional file is generated associated to the libr | If not available, the parameters are set to -99. -| The IR luminosity (:math:`L_{IR}`) is derived using LW libraries. For the Infra-red libraries ( LW: Dale, Lagache, Chary-Elbaz, Siebenmorgen & Krugel) the IR luminosity is measured from 8 to 1000 microns. These luminosities may be slightly different then the ones quoted by the authors due to the different definitions of the :math:`L_{IR}` integration limit and because (at least for Dale, Lagache, and Chary-Elbaz) we have subtracted the underlying stellar component from the original SEDs. +| The IR luminosity (:math:`L_{IR}`) is derived using LW libraries (LW for Long Wavelengtgh to describe the dust emission). For the Infra-red libraries ( LW: Dale, Lagache, Chary-Elbaz, Siebenmorgen & Krugel) the IR luminosity is measured from 8 to 1000 microns. These luminosities may be slightly different then the ones quoted by the authors due to the different definitions of the :math:`L_{IR}` integration limit and because (at least for Dale, Lagache, and Chary-Elbaz) we have subtracted the underlying stellar component from the original SEDs. @@ -408,12 +406,12 @@ The goal of this step is to: - read a list of filter, corresponding to the ones used in your input catalogue; -- read each of these filters and convert them into a comman format; +- read each of these filters and convert them into a common format; -- store them in a common library in ``$LEPHAREWORK/filt/`` +- store them in a common library in ``$LEPHAREWORK/filt/``. -Several sets of filters from different telescopes are available in the directory ``$LEPHAREDIR/filt/``. You could find most of the standard filters (like the Johnson-Kron-Cousins in ``filt/jkc``). New set of filters can be added in this directory. You could also store new filters in another directory than ``$LEPHAREDIR/filt/`` using the keyword ``FILTER_REP``. +Several sets of filters from different telescopes/instruments are available in the directory ``$LEPHAREDIR/filt/``. You could find in this directory most of the standard filters (like the Johnson-Kron-Cousins in ``filt/jkc``). New set of filters can be added in this directory. You could also store new filters in another directory than ``$LEPHAREDIR/filt/`` using the keyword ``FILTER_REP``. @@ -423,17 +421,21 @@ Syntax with command lines ~~~~~~~~~~~~~~~~~~ -The program ``filter`` puts together a list of filter response curves, and applies some transformations according to the nature of the filters. The resulting file in the directory ``$LEPHAREWORK/filt/``. +The program ``filter`` puts together a list of filter response curves, and applies some transformations according to the nature of the filters as define in the configuration file. .. code-block:: bash filter -c config_file.para +The resulting file is placed in the directory ``$LEPHAREWORK/filt/``. + + + with python ~~~~~~~~~~~ -With the python, you need to instantiate an object from the class ``Filter``, and apply the function ``run``. +With the python interface, you need to instantiate an object from the class ``Filter``, and apply the function ``run``. .. code-block:: python @@ -459,14 +461,16 @@ Parameter descriptions | | | | repository | | | | | containing the | | | | | filters. | -+----------------+----------------+---------------------+--------------------+ | | (n=1) | | | | | | | | +----------------+----------------+---------------------+--------------------+ | FILTER_LIST | string | —- | filter files | | | | | separated by a | -| | | | comma. | -+----------------+----------------+---------------------+--------------------+ +| | | | comma. Keep the | +| | | | same order as in | +| | | | the input | +| | | | photometric | +| | | | catalogue. | | | Nfilt not | | | | | limited | | | +----------------+----------------+---------------------+--------------------+ @@ -475,7 +479,6 @@ Parameter descriptions | | | | type: 0= | | | | | Energy; 1= | | | | | Photon | -+----------------+----------------+---------------------+--------------------+ | | n=1 or n=Nfilt | | | +----------------+----------------+---------------------+--------------------+ | FILTER_CALIB | integer | 0 | Filter | @@ -483,14 +486,15 @@ Parameter descriptions | | | | for long | | | | | wavelengths | | | | | [0-def]. | +| | n=1 or n=Nfilt | | Could use a value | +| | | | per filter | +| | | | separated | +| | | | with coma. | +----------------+----------------+---------------------+--------------------+ -| | n=1 or n=Nfilt | | | -+----------------+----------------+---------------------+--------------------+ -| FILTER_FILE | string | filter | Name of the | +| FILTER_FILE | string | filter | Name of the output | | | | | file with all | | | | | combined | | | | | filters . | -+----------------+----------------+---------------------+--------------------+ | | (n=1) | | It is saved in | | | | | $LEPHAREWORK/filt/ | | | | | | @@ -501,7 +505,7 @@ Parameter descriptions ``FILTER_LIST``: all the filter names must be separated by a comma. We assume that all the filter files are located in the directory ``$LEPHAREDIR/filt/``, except if the keyword ``FILTER_REP`` is specified. When writing the set of filters to be used, only the pathname after the common string ``$LEPHAREDIR/filt/`` should be specified. -``TRANS_TYPE``: type of the transmission curve for each filter, separated by a comma. The number of arguments should match the number of filter but if only value is given, which will be use for all the filters. The transmissions (:math:`T_{\lambda}`) are dimensionless (in % ), however they refer either to a transmission in Energy or Photon which will slightly modify the magnitude estimates. The magnitude is : +``TRANS_TYPE``: type of the transmission curve for each filter, separated by a comma. The number of arguments should match the number of filter, unless only one is given. In that case it will be used for all filters. The transmissions (:math:`T_{\lambda}`) are dimensionless (in % ), however they refer either to a transmission in Energy or Photon which will slightly modify the magnitude estimates. The magnitude is : .. math:: mag(*) = -2.5 \log_{10} \frac{\int F_{\lambda}(*) R_{\lambda} d\lambda}{\int F_{\lambda}(Vega) R_{\lambda} d\lambda} @@ -546,8 +550,7 @@ Filters are ASCII files with the following format : Wavelengths must be in increasing order. It is better to put the lowest and highest :math:`\lambda` with Transmission=0. The units of transmission are not considered. -The header, the transmission at 0 on the edges, and the transmission sorted in lambda are set internally if not - prepared by the user. +The header, the transmission at 0 on the edges, and the transmission sorted in lambda are set internally if not prepared by the user. As an exemple : filter pippo.pb and put it in $LEPHAREDIR/filt/pippo/pippo.pb : @@ -559,7 +562,7 @@ As an exemple : filter pippo.pb and put it in $LEPHAREDIR/filt/pippo/pippo.pb : 6000 0 ======= ================================ - +The user should avoid setting a resolution that is unnecessarily high, as this could result in expensive computational time for the predicted magnitude library. Getting new filter automatically (only in python) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -585,8 +588,8 @@ The filters are stored in a single ascii file as given by ``FILTER_FILE`` and st -Others -^^^^^^ +Additionnal features +^^^^^^^^^^^^^^^^^^^^ Get information on the filters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -661,7 +664,7 @@ Extinction informations and is the default law for the galactic extinction. | % **filter_extinc** -c COSMOS.para -FILTER_FILE filter_test.dat | It returns: -| # Computing ATMOSPHERIC AND GALACTIC EXTINCTION +| # Computing ATMOSPHERIC AND GALACTIC EXTINCTIONS | # with the following options: =============================== ================= @@ -721,8 +724,7 @@ domain by E. Le Floc’h to evaluate the photometric accuracy. Some issues have to be considered : - the Vega spectrum is not defined at :math:`\lambda\ge 160\mu m`. - Thus, AB magnitudes should be used as standard when combining a large - wavelength domain. + Thus, the AB magnitude system should be used as standard when combining a large wavelength domain. - The bandpass in radio domain is very narrow and does not require to convolve through the filter. However the structure of *LePHARE* @@ -731,16 +733,16 @@ have to be considered : More important, at long wavelengths the equivalent fluxes are taken as the monochromatic flux density calculated at the effective wavelength of -the filter and for a reference spectum that would result in the same +the filter and for a reference spectrum that would result in the same energy received on the detector: .. math:: = \frac{\int F_{\nu} R_{\nu} d\nu}{\int \frac{B_{\nu}}{B_{\nu_0}} R_{\nu} d\nu} where :math:`B_\nu` is the reference spectrum and :math:`\nu_0` the -effective frequency of the filter. In LEPHARE, the flux estimates are +effective frequency of the filter. In LePHARE, the flux estimates are equivalent to consider :math:`\frac{B_{\nu}}{B_{\nu_0}}=1` (:math:`B_{\nu}=ctt`). Therefore there is a correction factor to account -for with respect to the original flux estimated by LEPHARE. This +for with respect to the original flux estimated by LePHARE. This correction is : .. math:: ^{COR} = ^{LePhare} \times \frac{\int R_{\nu} d\nu}{\int \frac{B_{\nu}}{B_{\nu_0}} R_{\nu} d\nu} @@ -813,7 +815,7 @@ correction is : :math:`B_{\nu}=BB(T=10,000K)` and :math:`\lambda_0` defined as :math:`\nu B_ {\nu}=ctt` (FILTER_CALIB=4), which seems to better reflect the current MIPS calibration. In this case, correction factors - between 3% to 7% are applied to the theoretical magnitudes. However, we also compare the correction + between 3% to 7% are applied to the magnitudes predicted from the templates. However, we also compare the correction factors when both :math:`\lambda_0` and :math:`B_{\nu}` refer to a black body at T=10,000K (FILTER_CALIB=3). In this case, the corrections become negligeable with :math:`\sim`\ 1%. @@ -823,7 +825,7 @@ correction is : at a level of 1% with respect to most of the calibration scheme considered at long wavelength and thus no correction is required. A special warning for MIPS calibration, where depending on the - calibration scheme, a correction up to 7%, may be applied. + calibration scheme, a correction up to 7%, may be applied to the predicted magnitudes when computed. @@ -872,7 +874,7 @@ with python ~~~~~~~~~~~ -You need to instantiate an object from the class ``MagGal``, and indicate the type (GAL/QSO/STAR) when applying the fonction ``run``. +You need to instantiate an object from the class ``MagGal``, and indicate the type (GAL/QSO/STAR) when applying the function ``run``. .. code-block:: python @@ -895,9 +897,8 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b | Parameters | type | default | description | +=================+======================+==========+=======================================+ | FILTER_FILE(\*) | string | —- | Name of the | -| | | | filter file | -+-----------------+----------------------+----------+---------------------------------------+ -| | (n=1) | | file must exist | +| | | | filter file. | +| | (n=1) | | File must already exist | | | | | in | | | | | $LEPHAREWORK/filt/ | +-----------------+----------------------+----------+---------------------------------------+ @@ -905,40 +906,35 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b | | | | GAL/QSO/STAR | | | | | binary library | | | | | (with no | -| | | | extension) | -+-----------------+----------------------+----------+---------------------------------------+ -| | (n=1) | | Files must exist | +| | | | extension). | +| | (n=1) | | Files must already exist | | | | | in | | | | | $LEPHAREWORK/lib_bin/ | +-----------------+----------------------+----------+---------------------------------------+ | XXX_LIB_OUT(\*) | string | —- | Name of the | | | | | magnitude binary | | | | | library (with no | -| | | | extension) | -+-----------------+----------------------+----------+---------------------------------------+ -| | (n=1) | | files | +| | | | extension). | +| | (n=1) | | Files created as | | | | | GAL[QSO]_LIB_OUT*.bin | | | | | (.doc) | -+-----------------+----------------------+----------+---------------------------------------+ -| | | | are saved in | +| | | | and saved in | | | | | $LEPHAREWORK/lib_mag/ | +-----------------+----------------------+----------+---------------------------------------+ | MAGTYPE(\*) | string | —- | Magnitude type | | | | | (AB or VEGA) | +-----------------+----------------------+----------+---------------------------------------+ -| | | | | -+-----------------+----------------------+----------+---------------------------------------+ | ZGRID_TYPE | int | 0 | 0: constant step | | | | | in redshift | -+-----------------+----------------------+----------+---------------------------------------+ -| | (n=1) | | 1: evolving step | +| | (n=1) | | | +| | | | 1: evolving step | | | | | in redshift as | | | | | :math:`dz \times (1+z)` | +-----------------+----------------------+----------+---------------------------------------+ | Z_STEP | float | 0.04,0,6 | dz,zmin,zmax: | | | | | redshift step, dz | -+-----------------+----------------------+----------+---------------------------------------+ -| | (n=3) | | the minimum | +| | | | | +| | (n=3) | | The minimum | | | | | (zmin) and the | | | | | maximum redshift | | | | | (zmax). | @@ -948,23 +944,20 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b | | | | :math:`\Lambda_0`. | | | | | Used for age | | | | | constraints. | -+-----------------+----------------------+----------+---------------------------------------+ | | (n=3) | | | +-----------------+----------------------+----------+---------------------------------------+ | EXTINC_LAW | string | NONE | Extinction laws | | | | | to be used (in | | | | | $LEPHAREDIR/ext/) | -+-----------------+----------------------+----------+---------------------------------------+ -| |(n\ :math:`\le`\ 10) | | several files | +| | (n :math:`\le` 10) | | several files | | | | | separated by | | | | | comma | +-----------------+----------------------+----------+---------------------------------------+ | MOD_EXTINC | integer | 0,0 | Range of models | | | | | for which | | | | | extinction will | -| | | | be applied | -+-----------------+----------------------+----------+---------------------------------------+ -| |(n\ :math:`\le`\ 20) | | The numbers | +| | | | be applied. | +| | (n :math:`\le` 20) | | The numbers | | | | | refer to the | | | | | models in the | | | | | $GAL_SED list | @@ -979,26 +972,25 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b | | | | values to be | | | | | applied | +-----------------+----------------------+----------+---------------------------------------+ -| |(n\ :math:`\le`\ 100) | | values separated | +| | (n :math:`\le` 100) | | values separated | | | | | by comma. | +-----------------+----------------------+----------+---------------------------------------+ | EM_LINES | string | NO | Add contribution | | | | | of emission | | | | | lines and | | | | | specify | -+-----------------+----------------------+----------+---------------------------------------+ | | (n=1) | | how to derive | | | | | them | | | | | (``EMP_UV``, | | | | | ``EMP_SFR``, | -| | | | ``PHYS``) | +| | | | ``PHYS``). Only applied to | +| | | | galaxy templates | +-----------------+----------------------+----------+---------------------------------------+ | EM_DISPERSION | float | 1 | the emission | | | | | lines can vary | | | | | by these | | | | | fractions from | | | | | the expected | -+-----------------+----------------------+----------+---------------------------------------+ | | | | value (example | | | | | 0.5,1.,1.5) | +-----------------+----------------------+----------+---------------------------------------+ @@ -1006,7 +998,6 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b | | | | emission in | | | | | templates when | | | | | missing. | -+-----------------+----------------------+----------+---------------------------------------+ | | | (n=1) | This is based on | | | | | the energy | | | | | absorbed over | @@ -1017,8 +1008,7 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b | | | | magnitudes saved | | | | | in | | | | | $LEPHAREWORK | -+-----------------+----------------------+----------+---------------------------------------+ -| | (n=1) | | called | +| | (n=1) | | and called | | | | | $GAL[QSO]_LIB_OUT.dat | +-----------------+----------------------+----------+---------------------------------------+ @@ -1026,14 +1016,18 @@ For a set of filters given by ``FILTER_FILE`` and an input SED library defined b The extinction laws and dust emission ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -A set of extinction laws are available in the directory (``$LEPHAREDIR/ext/``). Several extinction laws can be used and set up in the keyword ``EXTINC_LAW``. Each extinction law will be applied to a range of SED models specified by the keywords ``MOD_EXTINC``. The model number corresponds to the rank in the list of SEDs used in ``GAL_SED``. The number of models must be twice the number of extinction laws. The different values of reddening excess E(B-V) are given in the keyword ``EB_V`` and will apply to all extinction laws. The extinguished flux is : :math:`F_{\lambda}^e = F_{\lambda}^0\ 10^{-0.4 A_{\lambda}}= F_{\lambda}^0\ 10^{-0.4 k_{\lambda} E(B-V)}` +A set of extinction (or attenuation) laws are available in the directory (``$LEPHAREDIR/ext/``). Several extinction laws can be used at the same time and set up in the keyword ``EXTINC_LAW``. Each extinction law will be applied to a range of SED models specified by the keywords ``MOD_EXTINC``. The model number corresponds to the rank in the list of SEDs used in ``GAL_SED``. For each extinction law, two numbers needs to be provided indicating the first and last model number of a range. So, the number of models must be twice the number of extinction laws. For instance, if ``EXTINC_LAW SMC_prevot.dat,SB_calzetti.dat``, we expect four numbers for ``MOD_EXTINC 13,23,23,31`` with the first law applied to the model between 13 and 23, and the second law between 23 and 31. -If extinction is applied, a new estimate of the IR dust luminosity is computed by measuring the amount of light absorbed. Some templates don’t include dust emission. We add the possibility of having the dust emission by using ``ADD_DUSTEM YES``. In such case, we use the templates from Bethermin et al. (2012) and sum their flux contribution to the stellar template (e.g. BC03). **Don’t use this option if your templates already include dust emission**. The B12 templates are different for each redshift. However, a current limitation of the code is that an incorrect dust SED is displayed in the .spec file (while the fit is correct). Therefore, we use by default only one B12 template at :math:`z=0`. The fit will be correct if you use all templates (but not the final display). +The different values of reddening excess E(B-V) are given in the keyword ``EB_V`` and will apply to all extinction laws. The extinguished flux is : :math:`F_{\lambda}^e = F_{\lambda}^0\ 10^{-0.4 A_{\lambda}}= F_{\lambda}^0\ 10^{-0.4 k_{\lambda} E(B-V)}` + +If dust extinction is applied, a prediction of the expected IR dust luminosity is computed using energy balance. + +Some templates don’t include dust emission, as for instance BC03 (or any template extrapolated in infrared using CSP models). We add the possibility of having the dust emission by using ``ADD_DUSTEM YES`` using this energy balance principle. In such case, we use the templates from Bethermin et al. (2012) (hereafter B12) and sum their flux contribution to the stellar template (e.g. BC03). **Don’t use this option if your templates already include dust emission**. The B12 templates are different for each redshift, as given in the `B12 list `_. However, a current limitation of the code is that we can display only the first template of the list in FIR in the .spec file, while we use the correct redshifted template when we do the fit. This limitation affect only the display of the .spec file in FIR. But to avoid confusion, we limit ourself to only one B12 template in the list. You can decide to remove the comments in front of the other B12 templates and use all of them, knowing that the display could be affected (but the internal fit correct). The Emission lines ~~~~~~~~~~~~~~~~~~ -The role of nebular emission lines in medium- and even broad-band filters has been shown to be essential in several cases (Ilbert et 2009, Schearer et al. 2009, Labbe et al. 2013, Stefanon et al. 2015). Some templates already include emission lines. In this case, you could use ``EM_LINES NO`` to avoid creating additional ones. To include emission lines in the template SEDs if they don’t exist, one of the available methods must be selected through the parameter ``EM_LINES``. There are three different options: +The role of nebular emission lines is essential when using medium-bands (Ilbert et 2009), but also when using only broad-band filters (Schearer et al. 2009, Labbe et al. 2013, Stefanon et al. 2015). Some galaxy templates already include emission lines. In this case, you could use ``EM_LINES NO`` to avoid creating additional ones. To include emission lines in the template galaxy SEDs if they don’t exist, one of the available methods must be selected through the parameter ``EM_LINES``. There are three different options: - **EMP_UV** LePHARE accounts for the contribution of emission lines with a simple recipe based on the Kennicutt (1998) relations. The SFR is estimated from UV luminosity, which in turn defines the H\ :math:`\alpha` luminosity. Intensity of other lines (:math:`Ly_{\alpha}`, :math:`H_{\alpha}`, :math:`H_{\beta}`, [OII], OIII[4959] and OIII[5007]) are defined accordingly by using the flux ratios provided in Ilbert et al. (2009) and slightly adjusted since. The UV luminosity is derived directly from the SED template. Emission lines are not considered in red galaxies with :math:`(NUV-r)_{ABS}\ge 4` (rest frame, dust corrected color). This option works for any kind of input template. @@ -1047,36 +1041,27 @@ With the option ``EM_DISPERSION``, the emission lines can vary from the standard Even if emission lines have been built for the entire library, during any SED fitting run the user can decide to ignore them for a given subset of models (see ``ADD_EMLINES option``). -This option is not appropriated for the quasars samples. +This option is not appropriated for the AGN samples. For AGN, the contribution from emission lines to the flux in a given band is even stronger than for normal galaxies. Do not compute emission lines using star-formation recipes established for galaxies. The templates in QSO are empirical (e.g. Salvato et al. 2009,….) and thus the emission lines are already included in the SED. For the syntethic models of QSO included in QSO/SYNTH the emission lines are also already included. +.. _outputlib: -Output -^^^^^^ +Outputs +^^^^^^^ The binary output file (\*.bin) is saved in the directory ``$LEPHAREWORK/lib_mag/`` with an attached doc file (\*.doc). - -ASCII ouput file -~~~~~~~~~~~~~~~~ - -An output file is produces in the current directory if ``LIB_ASCII YES``. It has the same root name as the binary file with extension .dat and contains the following informations : +An output file is produced in the current directory if ``LIB_ASCII YES``. It has the same root name as the binary file with extension .dat and contains the following informations : | Model, Extinc-law, E(B-V), :math:`L_{TIR}(L_{\odot})`, Z, DMod, Age(yr), nrec, n , (mag(i),i=1,n),(kcor(i),i=1,n) -where Model is the number of models based on the original list, Extinc-law refers to the number of the extinction laws used, :math:`L_{TIR}` the new estimate of the IR luminosity, DMod is the distance modulus, nrec is a record (internal use), n the number of filters, mag(i) the magnitudes in all filters and kcor(i), the k-correction in all filters. - +where Model is the number of models based on the original list, Extinc-law refers to the number of the extinction laws used, :math:`L_{TIR}` the new estimate of the IR luminosity, DMod is the distance modulus, nrec is a record (internal use), n the number of filters, mag(i) the predicted magnitudes in all filters and kcor(i), the k-correction in all filters (see Hogg 1999 for definitions). -Sizing the library -~~~~~~~~~~~~~~~~~~ - -You must be aware that the size of the library becomes quickly huge if you do not pay attention. You can estimate its size by considering the following numbers : -| # of models x # of age x # of z steps x # of extinction law x # of EB-V -| For exemple, 10 SEDs with 60 ages, 2 extinction laws and 6 E(B-V) and 150 z steps will exceed 1,000,000 rows. +You must be aware that the size of the library becomes quickly huge if you do not pay attention. You can estimate its size by considering the following numbers : # of models x # of age x # of z steps x # of extinction law x # of EB-V. For exemple, 10 SEDs with 60 ages, 2 extinction laws and 6 E(B-V) and 150 z steps will exceed 1,000,000 rows. @@ -1106,11 +1091,11 @@ The final step performs a :math:`\chi^2`-based analysis, fitting the predicted f .. math:: \chi^2 = \sum_i [ \frac{F_{obs,i} - s F_{temp,i}}{\sigma_i}]^2 -where i refers to the band used for the analysis and :math:`s` the scaling factor that is chosen to minimize the :math:`\chi^2` values (:math:`{\it d}\chi^2/{\it d}s=0`): +where *i* refers to the band used for the analysis and :math:`s` the scaling factor that is chosen to minimize the :math:`\chi^2` values (:math:`{\it d}\chi^2/{\it d}s=0`): .. math:: s = \sum_j [ \frac{F_{obs,j} F_{temp,j}}{\sigma_j^2} ] / \sum_j [ \frac{F_{temp,j}^2}{ \sigma_j^2}] -where j refers to the band used for the scaling (j can be different from i). The photometric baseline can span a large wavelength range, as long as the templates are established accordingly. Galaxy, star, and QSO libraries can be used in the same run, but the :math:`\chi^2` minimization process is performed distinctly for each class. For a given class (e.g., galaxy SEDs) several libraries can be combined. +where *j* refers to the band used for the scaling (*j* can be different from *i*). The photometric baseline can span a large wavelength range, as long as the templates are established accordingly. Galaxy, star, and QSO libraries can be used in the same run, but the :math:`\chi^2` minimization process is performed distinctly for each class. For a given class (e.g., galaxy SEDs) several libraries can be combined. Different options are available to improve the :math:`z_\mathrm{phot}` measurement: physical priors, adaptive photometric adjustments, addition of nebular emission lines in the synthetic SEDs. If the templates include physical information (e.g. BC03), the code can output the stellar mass, star formation rate, etc., for each object. @@ -1137,13 +1122,13 @@ The program ``zphota`` is used to derive the photo-z and the physical parameters zphota -c config_file.para --CAT_IN sourcelist.in -with sourcelist.in being the input file in ascii format. +with sourcelist.in being the input file in ascii format with command lines (an advantage with the python interface is that you can use any format). With python ~~~~~~~~~~~ -You can run the photometric redshift with the function ``lp.process`` prepared to ficilitate your work, or using the class ``lp.PhotoZ``. Here are the two methods: +You can run the photometric redshift with the function ``lp.process`` prepared to facilitate your work, or using the class ``lp.PhotoZ``. Here are the two methods: .. code-block:: bash @@ -1155,6 +1140,7 @@ You can run the photometric redshift with the function ``lp.process`` prepared # Calculate the photometric redshifts output, pdfs, zgrid = lp.process(config, input_table) +The ``input_table`` is a python table with a pre-defined format (explained below). .. code-block:: python @@ -1175,41 +1161,10 @@ The ``sourcelist`` is a vector of objects of the class ``onesource`` containing Input ^^^^^ +This section describes how to manage the input file. The associated keywords are listed here. Most of them become useless when using the python interface. -Input file when using command lines -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This section describes how to manage the input file. ``CAT_IN`` specifies the location and name of the input file. The input catalogue must be an ASCII table including at least for each entry: - -- an identification number (Id); -- the apparent magnitudes (or fluxes); -- the corresponding errors. - - -The format is specified by ``CAT_FMT``, whose value must be set to ``MEME`` (“Magnitude-Error-Magnitude-Error”) to use a catalog in the format -| *Id mag1 err1 mag2 err2 ... magN errN*... -while the string ``MMEE`` (“Magnitude...Magnitude-Error...Error”) is used for catalogs written like -| *Id mag1 mag2 ... magN err1 err2 ... errN*... - -Other columns may follow the photometric baseline when the option ``CAT_TYPE`` is set to ``LONG`` (it is ``SHORT`` by default). Such extended catalog will look like: - -| *Id mag1 err1 mag2 err2 ... magN errN Context z_spec Extra1 Extra2...* - -The ``Context`` indicates which passbands can be used for the object in this row (see below), :math:`z_\mathrm{spec}` is the input redshift (can be also equal to -99), and “Extra1”, “Extra2”, etc. are the remaining columns (any kind of values) that will be read by the program as a single string and propagated in the output if required. Only ``Context`` and :math:`z_\mathrm{spec}` are compulsory in the LONG format, while Extra1, Extra2, etc. can be left empty. - -The input catalogue could include magnitudes or fluxes. To use fluxes, you must specify ``F`` for the parameter ``INP_TYPE`` and fluxes must be given in :math:`\mathrm{erg}/\mathrm{s}/\mathrm{cm}^2/\mathrm{Hz}`. -If you use magnitude in input, use ``INP_TYPE M``. In this case, The calibration system is declared by the parameter ``CAT_MAG``, which can be either ``VEGA`` or ``AB``. In any case the filters in the catalog must be the same (and in the same order) as in the SED library built with ``mag_gal``. - -For a given object, the flux in a given filter could miss (not observed or the photometric extraction failed). If the magnitude (or flux) and the associated are **both** negative, this filter will be ignored. - -If the measurement is missing because the flux is too faint to be detected, one could use an **upper-limit**. In such case, the magnitude (or flux) are positive and set to the upper-limit value while the error should be negative. The predicted magnitude will forced to be fainter than the magnitude given in the photometric catalogue. - -You can run ``zphota`` on a subsample of sources. ``CAT_LINE`` gives the range of entries which should be considered when running the code. For instance, ``CAT_LINE 1,1000`` will run the code only on the first 1000 lines. -| NOTE: commented lines are NOT considered while reading the catalogue, so this range should be intended as the number of entries, not rows. - - +----------------+----------------+----------------+----------------+ | Input catalog | | | | | | | | | @@ -1247,7 +1202,11 @@ You can run ``zphota`` on a subsample of sources. ``CAT_LINE`` gives the range o | | | | rows read in | | | | | input catalog | | | | | (starting from | - | | | | 1) | + | | | | 1). | + | | | | Read all the | + | | | | catalogue by | + | | | | default | + | | | | | +----------------+----------------+----------------+----------------+ | CAT_TYPE | string[1] | SHORT | Input catalog | | | | | format | @@ -1256,46 +1215,69 @@ You can run ``zphota`` on a subsample of sources. ``CAT_LINE`` gives the range o +----------------+----------------+----------------+----------------+ +The information needed for the fit +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Input source list when using python +We expect in input: + +- an identification number (Id); +- the apparent magnitudes (or fluxes); +- the corresponding errors. +- A ``Context`` value associated to each source indicates which passbands can be used for the object, explained in :ref:`context` +- :math:`z_\mathrm{spec}` is the input redshift (can be also equal to -99 if not defined). + +The filters in the input catalog must be the same and in the same order as in the predicted magnitude library (the one stored in $LEPHAREWORK/lib_mag). + +``Context`` and :math:`z_\mathrm{spec}` are only compulsory in the LONG format. ``Context`` could be set at 0 to consider all filters. + +For a given object, the magnitude (or flux) in a given filter could miss (not observed or the photometric extraction failed). If the magnitude (or flux) and the associated are **both** negative, this filter will be ignored (for instance, you can put -99 -99 for the flux and associated error). This is another way to ignore a band than context. + +If the measurement is missing because the flux is too faint to be detected, one could use an **upper-limit**. In such case, the magnitude (or flux) are positive and set to the upper-limit value while the error should be negative. The predicted magnitude will be forced to be fainter than the magnitude given in the photometric catalogue. We advice to use flux with appropriate uncertainties and no upper-limits, which is more correct statistically. + + +The input catalogue could include magnitudes or fluxes. To use fluxes, you must specify ``F`` for the parameter ``INP_TYPE`` and fluxes must be given in :math:`\mathrm{erg}/\mathrm{s}/\mathrm{cm}^2/\mathrm{Hz}`. +If you use magnitude in input, use ``INP_TYPE M``. In this case, The calibration system is declared by the parameter ``CAT_MAG``, which can be either ``VEGA`` or ``AB``. + + + + + +Input file when using command lines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +We expect an ascii file in input when using command lines. ``CAT_IN`` specifies the location and name of the input file. +The format of the input catalogue is specified by ``CAT_FMT``, whose value must be set to ``MEME`` (“Magnitude-Error-Magnitude-Error”) to use a catalog in the format +| *Id mag1 err1 mag2 err2 ... magN errN*... +while the string ``MMEE`` (“Magnitude...Magnitude-Error...Error”) is used for catalogs written like +| *Id mag1 mag2 ... magN err1 err2 ... errN*... -Let's start with an input file ``input.txt`` with five filters u, g, r, i, z. This file is taken in ascii as an example, but it could be in any format readable by python (which is an advantage compared to the run done with command lines). -We can also have stored the context and the spec-z in this catalogue. +Other columns may follow the photometric baseline when the option ``CAT_TYPE`` is set to ``LONG`` (it is ``SHORT`` by default). Such extended catalog will look like: +| *Id mag1 err1 mag2 err2 ... magN errN Context z_spec Extra1 Extra2...* -There is two different methods to establish the input source list and run the photo-z: +``Context`` and :math:`z_\mathrm{spec}` were already described. ``Extra1 Extra2...``, etc. are the remaining columns (any kind of values) that will be read by the program as a single string and propagated in the output if required. Only ``Context`` and :math:`z_\mathrm{spec}` are compulsory in the LONG format, while Extra1, Extra2, etc. can be left empty. -**Method 1** +You can run ``zphota`` on a subsample of sources. ``CAT_LINE`` gives the range of entries which should be considered when running the code. For instance, ``CAT_LINE 1,1000`` will run the code only on the first 1000 lines. +| NOTE: commented lines are NOT considered while reading the catalogue, so this range should be intended as the number of entries, not rows. -.. code-block:: python + - # Read a standard input file - cat = np.loadtxt("input.txt") - id = cat[:, 0] - fluxes = cat[:, 1:10:2] - efluxes = cat[:, 2:11:2] - context = cat[:, 11] - zspec = cat[:, 12] - # initiate the photo-z run - photz = lp.PhotoZ(keymap) - # Create a list of object of the class``onesource`` inialized with the information on each source - sourcelist = [] - for i in range(len(id)): - oneObj = lp.onesource(i, photz.gridz) - oneObj.readsource(str(id[i]), fluxes[i, :], efluxes[i, :], int(context[i]), zspec[i], " ") - sourcelist.append(oneObj) +Input source list when using python +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - # Run the photo-z on this source list - photz.run_photoz(sourcelist, [],[] ) -**Method 2** +Let's assume that we have an input file ``input.txt`` for a survey having five filters u, g, r, i, z. We assume that this is formated as explained in the command line case. The example assume an ascii file, but it could be in any format readable by python (which is an advantage compared to the run done with command lines). We assume that the context and the spec-z are also stored in this catalogue. + + +There is two different methods to create the input source list and run the photo-z: + + +**Method 1** .. code-block:: python @@ -1303,7 +1285,7 @@ There is two different methods to establish the input source list and run the ph cat = Table.read("input.txt", format="ascii") # You will need to set the table columns in order: - # id, flux0, err0, flux1, err1,..., context, zspec, arbitrary_string + # Id, flux0, err0, flux1, err1,..., context, zspec, arbitrary_string input_table = Table() # The id is in the first column input_table["id"] = cosmos_full[0] @@ -1318,7 +1300,33 @@ There is two different methods to establish the input source list and run the ph # Calculate the photometric redshifts using the function process output, pdfs, zgrid = lp.process(config, input_table) +**Method 2** + +.. code-block:: python + + # Read a standard input file + cat = np.loadtxt("input.txt") + id = cat[:, 0] + fluxes = cat[:, 1:10:2] + efluxes = cat[:, 2:11:2] + context = cat[:, 11] + zspec = cat[:, 12] + + # initiate the photo-z run + photz = lp.PhotoZ(keymap) + + # Create a list of object of the class``onesource`` inialized with the information on each source + sourcelist = [] + for i in range(len(id)): + oneObj = lp.onesource(i, photz.gridz) + oneObj.readsource(str(id[i]), fluxes[i, :], efluxes[i, :], int(context[i]), zspec[i], " ") + sourcelist.append(oneObj) + + # Run the photo-z on this source list + photz.run_photoz(sourcelist, [],[] ) + +.. _context: Context ~~~~~~~ @@ -1335,19 +1343,16 @@ Filter Context (:math:`2^{(i-1)}`) 1 2 4 8 16 32 64 128 One context value corresponds to a unique filter combination: + - if an object is observed in all passband but H : Context=191 - if an object is observed in UGRIZ : Context=31 - if an object is observed in GRIZK : Context=158 -If the context is absent in the input catalog, it is equivalent to use all the passbands for all the objects, so Context=255. However, the code checks the error and flux values. If both values are negative, the band is not used. +If the context is absent in the input catalog (format SHORT), or put at 0, it is equivalent to use all the passbands for all the objects. However, the code checks the error and flux values. If both values are negative, the band is not used. In practice, the context specified in the input catalog can include all the passbands where the object has been observed even the bands where it is not detected (upper-limit). -Additional options in the configuration file will allow to restrict the use of the catalog to some specific filter combinations. - -| **Note 1**: if the flux (or mag) and the associated error are negative, the filter is ignored in the fit. - -| **Note 2**: In the configuration file, some options refer to a sum of filter context: GLB_CONTEXT, FORB_CONTEXT, ADAPT_CONTEXT, MABS_CONTEXT, FIR_CONT, FIR_SCALE +Additional options in the configuration file will allow to restrict the use of the catalog to some specific filter combinations as GLB_CONTEXT, FORB_CONTEXT, ADAPT_CONTEXT, MABS_CONTEXT, FIR_CONT. They set the globally the bands to be used (GLB_CONTEXT), to be removed (FORB_CONTEXT), the ones used for the calibration of the offsets (ADAPT_CONTEXT), the ones to compute absolute magnitudes (MABS_CONTEXT) and finally the bands to be used for FIR templates (FIR_CONT). @@ -1361,16 +1366,16 @@ Parameters of the fit Input libraries ~~~~~~~~~~~~~~~ -The principle of SED-fitting is to compare observed flux with predicted ones. We can extract from this comparison the photometric redshift but also physical parameters associated to the galaxies. +The principle of SED-fitting is to compare observed flux with predicted ones. We can extract from this comparison the photometric redshift but also physical parameters associated to a given galaxy. Therefore, a fundamental input of the fit is a library containing predicted magnitudes/flux. -The name of this library should be transmitted using the keyword ``ZPHOTLIB``. The name should be a string and points to the binary file stored in ``$LEPHAREWORK/lib_mag/`` (indicate only the name of the file without extension). +The name of this :ref:`library` should be transmitted using the keyword ``ZPHOTLIB``. The name should be a string and points to the binary file stored in ``$LEPHAREWORK/lib_mag/`` (indicate only the name of the file without extension). For instance, if a file ``BC03_LIB.bin`` has been created and is stored in ``$LEPHAREWORK/lib_mag/``, you can simply use the option ``ZPHOTLIB BC03_LIB``. -Several librairies can be combined, with their name separated with coma. You can use as many libraries as you want. Moreover, you can combine libraries created with GAL/QSO/STAR templates and the code will recognize if it corresponds to a GAL, QSO, or STAR library. +Several librairies can be used consequently on the same input catalog, with their name separated with coma. You can use as many libraries as you want. Moreover, you can use simultaneusly libraries created with GAL/QSO/STAR templates and the code will recognize if it corresponds to a GAL, QSO, or STAR library. -Finally, one can modify the properties of the input library by applying emission lines to only a sub-sample of the templates and by reducing the explored range of E(B-V) and redshift. For instance ``ADD_EMLINES`` defines the range of galaxy models (from the .list file) in which the code considers the emission lines contribution. Similarly ``Z_RANGE`` and ``EBV_RANGE`` could be used to reduce the redshift and the E(B-V) coverage allowed in the fit. +Finally, one can modify the properties of the input library by considering emission lines for only a sub-sample of the templates and by limiting the explored range of E(B-V) and redshift. For instance ``ADD_EMLINES`` defines the range of galaxy models (from the .list file) in which the code considers the emission lines contribution. Similarly ``Z_RANGE`` and ``EBV_RANGE`` could be used to limit the redshift and the E(B-V) coverage allowed in the fit. @@ -1383,7 +1388,7 @@ Finally, one can modify the properties of the input library by applying emission | | | | extension) | | | | | like | | | | | XXX_LIB_OUT | -+----------------+--------------------+-----------------+-----------------+ +| | | | | | | (:math:`n \geq 1`) | | Files should | | | | | exist in | | | | | $LEPHAREWORK | @@ -1391,8 +1396,8 @@ Finally, one can modify the properties of the input library by applying emission +----------------+--------------------+-----------------+-----------------+ | ADD_EMLINES | int | 0,0 | Range of | | | | | galaxy models | -| | | | in which | -+----------------+--------------------+-----------------+-----------------+ +| | | | fo which | +| | | | | | | (n=2) | | considering | | | | | emission lines | | | | | contribution. | @@ -1400,14 +1405,14 @@ Finally, one can modify the properties of the input library by applying emission | Z_RANGE | float | 0.,99. | Z min and max | | | | | allowed in the | | | | | GALAXY library | -+----------------+--------------------+-----------------+-----------------+ +| | | | | | | (n=2) | | | +----------------+--------------------+-----------------+-----------------+ | EBV_RANGE | float | 0,9 | E(B-V) min and | | | | | max allowed in | -| | | | the GALAXY | -| | | | library | -+----------------+--------------------+-----------------+-----------------+ +| | | | the library. | +| | | | Applied to all | +| | | | attenuation laws| | | (n=2) | | | +----------------+--------------------+-----------------+-----------------+ @@ -1420,54 +1425,51 @@ Finally, one can modify the properties of the input library by applying emission Managing filters used in the fit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The choice of the filters is defined by the context value for each object. This context is given in the input catalogue. You can also force the analysis to some specific filter combination for the whole catalog. If ``GLB_CONTEXT`` is used, it supersedes the individual context. You can also reject some bands with ``FORB_CONTEXT`` keyword. This keyword is useful if you want to perform some test without a specific band. - -The empirical and stellar population synthesis libraries of galaxy SEDs only account for the stellar light. It is strongly suggested to only use filters where the stellar light is dominant. Typically we suggest to authorize only the filters with :math:`\lambda\le 5\mu m`. Longer wavelength information should be treated separately with the FIR libraries. - - -+----------------+----------------+----------------+----------------------------------+ -| **Parameters** | **Type** | **Default |**Description** | -| | | val.** | | -+================+================+================+==================================+ -| GLB_CONTEXT | integer | -1 | Forces the | -| | | | context of all | -| | | | objects for | -| | | | :math:`\chi^2` | -| | | | analysis | -+----------------+----------------+----------------+----------------------------------+ -| | (n=1) | | defined as : | -| | | | :math:`\sum_{i=0}^{nbd-1} 2^{i}` | -| | | | | -| | | | | -+----------------+----------------+----------------+----------------------------------+ -| | | | 0 means that | -| | | | all bands are | -| | | | used | -+----------------+----------------+----------------+----------------------------------+ -| | | | -1 (default) | -| | | | means that | -| | | | context per | -| | | | object is used | -+----------------+----------------+----------------+----------------------------------+ -| FORB_CONTEXT | integer | -1 | context for | -| | | | forbidden | -| | | | bands | -+----------------+----------------+----------------+----------------------------------+ -| | (n=1) | | defined as : | -| | | | :math:`\sum_{i=0}^{nbd-1} 2^{i}` | -| | | | | -| | | | | -+----------------+----------------+----------------+----------------------------------+ -| RM | float | 200 | Threshold in | -| _DISCREPENT_BD | | | chi2 to | -| | | | consider. | -+----------------+----------------+----------------+----------------------------------+ -| | | (n=1) | Remove 2 bands | -| | | | max, stop when | -| | | | below this | -| | | | chi2 | -| | | | threshold. | -+----------------+----------------+----------------+----------------------------------+ +The :ref:`context` value defines which filters to be used for the fit follwing :math:`\sum_{i=0}^{nbd-1} 2^{i}`. This context is given in the input catalogue. You can also force the analysis to some specific filter combination for the whole catalog. If ``GLB_CONTEXT`` is used, it is used in addition to the individual context. You can also reject some bands with ``FORB_CONTEXT`` keyword (for instance, if FORB_CONTEXT=3, you reject the two first bands). This keyword is useful if you want to perform some test without a specific band. + +The option ``RM_DISCREPENT_BD`` is designed to remove a band which completely differs from the rest of the SED and can't be explained by the templates. If the :math:`\chi^2` is above a threshold defined by the user, the code will remove the band contributing the most to the :math:`\chi^2`. If the value is still above the threshold, it will use a second band, then stop, even if the :math:`\chi^2` is still above the threshold. + + + ++---------------------+----------------+----------------+----------------------------------+ +| **Parameters** | **Type** | **Default |**Description** | +| | | val.** | | ++=====================+================+================+==================================+ +| GLB_CONTEXT | integer | -1 | Forces the | +| | | | context of all | +| | | | objects for | +| | | | :math:`\chi^2` | +| | (n=1) | | analysis in addition | +| | | | to the individual context | +| | | | | +| | | | | +| | | | 0 means that | +| | | | all bands are | +| | | | used | +| | | | | +| | | | -1 (default) | +| | | | means that | +| | | | context per | +| | | | object is used | ++---------------------+----------------+----------------+----------------------------------+ +| FORB_CONTEXT | integer | -1 | context for | +| | | | forbidden | +| | | | bands | +| | (n=1) | | | +| | | | | +| | | | | +| | | | | ++---------------------+----------------+----------------+----------------------------------+ +| RM_DISCREPENT_BD | float | 200 | Threshold in | +| | | | chi2 to | +| | | | consider. | +| | | | | +| | | (n=1) | Remove 2 bands | +| | | | max, stop when | +| | | | below this | +| | | | chi2 | +| | | | threshold. | ++---------------------+----------------+----------------+----------------------------------+ @@ -1477,29 +1479,26 @@ Expanding photometric uncertainties By definition the :math:`\chi^2` procedure is sensitive to the photometric errors, so it is important to provide reliable uncertainties. Users must account for a possible underestimation (when noise correlation is present in the data) or zero-point calibration uncertainties. The keywords ``ERR_FACTOR`` and ``ERR_SCALE`` allow to tune the individual errors. Note that ``ERR_FACTOR`` will not change the best photo-z solution but just the estimates of the errors, while ``ERR_SCALE`` can change the relative contribution of the bands and thus the best redshift. -+----------------+---------------------+----------------+----------------+ -| **Parameters** | **Type** | **Default |**Description** | -| | | val.** | | -+================+=====================+================+================+ -| ERR_FACTOR | float | 1.0 | Scaling factor | -| | | | to the errors | -| | | | (in flux) | -+----------------+---------------------+----------------+----------------+ -| | (n=1) | | | -| | | | | -+----------------+---------------------+----------------+----------------+ -| ERR_SCALE | float | -1. | Systematic | -| | | | errors (in | -| | | | mag) add in | -| | | | quadrature to | -| | | | the | -| | | | observations | -+----------------+---------------------+----------------+----------------+ -| |(n :math:`\le`\ 100) | | must match | -| | | | number of | -| | | | bands, not | -| | | | used otherwise | -+----------------+---------------------+----------------+----------------+ ++----------------+----------------------+----------------+----------------+ +| **Parameters** | **Type** | **Default |**Description** | +| | | val.** | | ++================+======================+================+================+ +| ERR_FACTOR | float | 1.0 | Scaling factor | +| | | | to the errors | +| | | | (in flux) | +| | (n=1) | | | ++----------------+----------------------+----------------+----------------+ +| ERR_SCALE | float | -1. | Systematic | +| | | | errors (in | +| | | | mag) add in | +| | | | quadrature to | +| | | | the | +| | | | observations | +| | (n :math:`\le`\ 100) | | must match | +| | | | number of | +| | | | bands, not | +| | | | used otherwise | ++----------------+----------------------+----------------+----------------+ Adding prior information @@ -1520,17 +1519,17 @@ A prior could be applied to avoid unrealistically bright galaxies. The keyword ` | NZ_PRIOR | integer | -1,-1 | N(z) prior as | | | | | function of I | | | | | band. | -+----------------+----------+------------------+------------------+ +| | | | | | | (n=2) | | The i-band | | | | | number should be | | | | | given in input. | -+----------------+----------+------------------+------------------+ +| | | | | | | | | The second | | | | | number indicates | | | | | which band to | | | | | use if first | | | | | undefined. | -+----------------+----------+------------------+------------------+ +| | | | | | | | | Negative value | | | | | means no prior. | +----------------+----------+------------------+------------------+ @@ -1539,7 +1538,7 @@ A prior could be applied to avoid unrealistically bright galaxies. The keyword ` | | | | acceptable for | | | | | GAL library | | | | | [0,0-def] | -+----------------+----------+------------------+------------------+ +| | | | | | | (n=2) | | 0.,0. (default) | | | | | means not used | +----------------+----------+------------------+------------------+ @@ -1548,7 +1547,7 @@ A prior could be applied to avoid unrealistically bright galaxies. The keyword ` | | | | acceptable for | | | | | QSO library | | | | | [0,0-def] | -+----------------+----------+------------------+------------------+ +| | | | | | | (n=2) | | 0.,0. (default) | | | | | means not used | +----------------+----------+------------------+------------------+ @@ -1556,7 +1555,7 @@ A prior could be applied to avoid unrealistically bright galaxies. The keyword ` | | | | for MAG_ABS (1 | | | | | to | | | | | :math:`N_{bd}`) | -+----------------+----------+------------------+------------------+ +| | | | | | | (n=1) | | 0 (default) | | | | | means not used | +----------------+----------+------------------+------------------+ @@ -1565,14 +1564,13 @@ A prior could be applied to avoid unrealistically bright galaxies. The keyword ` Adaptive method ~~~~~~~~~~~~~~~ -We provide the possibility to train the zero-points of the photometric catalogue. While this training is less sophisticated than the fortran version (which allows for a training of the colors and more), this training is sufficient for most of the applications. +We provide the possibility to train the zero-points of the photometric catalogue. While this training is less sophisticated than the fortran version (which was allowing for a training of the colors not implemented yet and used minuit). However, we consider that the current implementation is sufficient. -In order to turn on this option, use ``AUTO_ADAPT YES``. This procedure requires to have galaxies with a spec-z within the catalogue (format should be LONG with -99 when no spec-z available). This code will first fit the best-fit templates to the objects with a spec-z. Then, it will measure for each filter the systematic offset which minimizes the differences between the predicted and observed magnitudes. This procedure is applied iteratively until convergence of the systematic offset values (maximum of 10 iterations). +In order to turn on this option, use ``AUTO_ADAPT YES``. This procedure requires to have galaxies with a spec-z within the catalogue (format should be LONG with -99 when no spec-z available). This code will first fit the best-fit templates to the objects with a spec-z. Then, it will measure for each filter the systematic offset which minimizes the differences between the predicted and observed magnitudes. This procedure is applied iteratively until convergence of the systematic offset values (maximum of 10 iterations). This is done only for galaxies. So, do not use stars or AGN for the training. -You can also decide to train the zero-points with a sub-sample of the spec-z sample. Galaxies can be selected in a given apparent magnitude range (``ADAPT_BAND`` and ``ADAPT_LIM``), in a given redshift range (``ADAPT_ZBIN``), in a given model range (``ADAPT_MODBIN``). -You can decide to train only a specific sub-set of bands which are indicated using the keyword ``ADAPT_CONTEXT``. +You can also decide to train the zero-points with a sub-sample of the spec-z sample. Galaxies can be selected in a given apparent magnitude range (``ADAPT_BAND`` and ``ADAPT_LIM``), in a given redshift range (``ADAPT_ZBIN``), in a given model range (``ADAPT_MODBIN``). You can decide to train only a specific sub-set of bands which are indicated using the keyword ``ADAPT_CONTEXT``. -If the photometric catalogue contains a large number of objects, you can save times by doing the training only on a sub-catalogue with spec-z and then apply the offsets by hand to the full catalogue with ``APPLY_SYSSHIFT``. +If the photometric catalogue contains a large number of objects, you can save times by doing the training only on a sub-catalogue with spec-z and then apply the offsets by hand with ``APPLY_SYSSHIFT``. | **Note 1**: for philosophical reason, we decided that these offsets are added to the predicted magnitudes (because we don’t know if the offsets are due to the imaging, bad knowledge of the filters, bad knowledge of the templates). Therefore, if you want to apply them directly to the observed magnitude in your catalogue, you need to subtract these shifts. @@ -1589,59 +1587,54 @@ In python, you can run only the training part with: -+----------------+-----------------+----------------+----------------+ -| **Parameters** | **Type** | **Default |**Description** | -| | | val.** | | -+================+=================+================+================+ -| AUTO_ADAPT | string | NO | ZP adaptive | -| | | | method with | -| | | | spectro | -+----------------+-----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+-----------------+----------------+----------------+ -| ADAPT_BAND | integer | —– | Reference band | -| | | | for the | -| | | | selection in | -| | | | magnitude | -+----------------+-----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+-----------------+----------------+----------------+ -| ADAPT_LIM | float | 18.,24. | Mag range for | -| | | | spectro in | -| | | | reference band | -+----------------+-----------------+----------------+----------------+ -| | (:math:`n=1`) | | | -+----------------+-----------------+----------------+----------------+ -| ADAPT_CONTEXT | integer | -1 | Context for | -| | | | bands used for | -| | | | training | -+----------------+-----------------+----------------+----------------+ -| | (:math:`n=1`) | | -1 : used | -| | | | context per | -| | | | object | -+----------------+-----------------+----------------+----------------+ -| ADAPT_ZBIN | float | 0.01,6 | Redshift’s | -| | | | interval used | -| | | | for training | -+----------------+-----------------+----------------+----------------+ -| | (:math:`n=2`) | | | -+----------------+-----------------+----------------+----------------+ -| ADAPT_MODBIN | integer | 1,1000 | Model’s | -| | | | interval used | -| | | | for training | -+----------------+-----------------+----------------+----------------+ -| | (:math:`n=2`) | | | -+----------------+-----------------+----------------+----------------+ -| APPLY_SYSSHIFT | float | —– | Apply | -| | | | systematic | -| | | | shifts in each | -| | | | bands | -+----------------+-----------------+----------------+----------------+ -| |(:math:`n\le 50`)| | number of | -| | | | values must | -| | | | fit number of | -| | | | filters | -+----------------+-----------------+----------------+----------------+ ++----------------+--------------------+----------------+----------------+ +| **Parameters** | **Type** | **Default |**Description** | +| | | val.** | | ++================+====================+================+================+ +| AUTO_ADAPT | string | NO | ZP adaptive | +| | | | method done | +| | | | with galaxies | +| | | | having a spec-z| ++----------------+--------------------+----------------+----------------+ +| ADAPT_BAND | integer | —– | Reference band | +| | (:math:`n=1`) | | for the | +| | | | selection in | +| | | | magnitude | ++----------------+--------------------+----------------+----------------+ +| ADAPT_LIM | float | 18.,24. | Mag range in | +| | | | reference band | +| | | | of galaxies | +| | | | with spec-z | +| | (:math:`n=1`) | | | ++----------------+--------------------+----------------+----------------+ +| ADAPT_CONTEXT | integer | -1 | Context for | +| | | | bands used for | +| | | | training | +| | | | | +| | (:math:`n=1`) | | -1 : used | +| | | | context per | +| | | | object | ++----------------+--------------------+----------------+----------------+ +| ADAPT_ZBIN | float | 0.01,6 | Redshift’s | +| | | | interval used | +| | | | for training | +| | (:math:`n=2`) | | | ++----------------+--------------------+----------------+----------------+ +| ADAPT_MODBIN | integer | 1,1000 | Model’s | +| | | | interval used | +| | | | for training | +| | (:math:`n=2`) | | | ++----------------+--------------------+----------------+----------------+ +| APPLY_SYSSHIFT | float | —– | Apply | +| | | | systematic | +| | | | shifts in each | +| | | | bands | +| | | | | +| | (:math:`n\le 50`) | | number of | +| | | | values must | +| | | | fit number of | +| | | | filters | ++----------------+--------------------+----------------+----------------+ @@ -1649,17 +1642,17 @@ In python, you can run only the training part with: Physical parameters ^^^^^^^^^^^^^^^^^^^ -After computing the photometric redshifts, other SED fittings can be applied to derive FIR properties, absolute magnitudes or to get physical parameters. Often, the photometric redshifts are computed first, then the redshift value is fixed with option ``ZFIX YES`` and the physical parameters are computed in a second step. The reason for this two steps procedure is that the template libraries producing the best photo-z are not the same as the ones needed to compute physical parameters. However, nothing prevent you for doing the two steps together. +After computing the photometric redshifts, other templates can be used to derive FIR properties or to get physical parameters. Often, the photometric redshifts are computed first, then the redshift value is fixed with option ``ZFIX YES`` and the physical parameters are computed in a second step. The reason for this two steps procedure is that the template libraries producing the best photo-z are not the same as the ones needed to compute physical parameters. However, nothing prevent you for doing the two steps together. Absolute magnitudes ~~~~~~~~~~~~~~~~~~~ -This set of parameters allows the user to specify different methods to compute the absolute magnitudes. The absolute magnitudes are computed automatically in all the filters of FILTER_LIST. Different methods are available : +This set of parameters allows the user to specify different methods to compute the absolute magnitudes for the galaxies. The absolute magnitudes are computed automatically in all the filters of FILTER_LIST. Different methods are available : - ``MABS_METHOD=0`` : A direct method to compute the absolute magnitude in a given filter from the apparent magnitude measured in the same filter (example: :math:`B_{ABS}=B_{obs}-DM(z)-kcor(B)`). This method is extremely sensitive to k-correction and to systematic effects in the apparent magnitude measurement. This method is likely to be less accurate. -- ``MABS_METHOD=1`` : the goal of this method is to minimize the sensitivity to the templates. For example, the absolute magnitude in the filter B is computed using the observed apparent magnitude in the filter I, which is chosen to be :math:`\lambda(I)=\lambda(B)*(1+z)` at :math:`z\sim 0.7` : :math:`B_{ABS}= I_{obs} -DM(z=0.7) - (kcor(I) + (B-I)_{ABS})^{template}`. +- ``MABS_METHOD=1`` : the goal of this method is to minimize the sensitivity to the templates. For example, for a source at redshift 0.7, the absolute mag in *B* band is derived from from the observed magnitude in the *I* band because :math:`B_{ABS}= I_{obs} -DM(z=0.7) - (kcor(I) + (B-I)_{ABS})^{template}`. This method is described in the appendix of Ilbert et al. (2005). The advantage of this method to limit template dependency. Indeed, if chosen careful, the term k-correction+color doesn’t depend on the template at a given redshift. The drawback of this method is that a systematic effect in the observed band will be directly propagated to the absolute magnitude (like zero-point calibration, or a band systematically with a lower S/N). For this reason, a context associated to each filter (MABS_CONTEXT) reduces the filter set used for the observed apparent magnitudes (for instance, you don’t want to keep in the subset a filter having a large offset between observed and predicted magnitude in AUTO_ADAPT). - ``MABS_METHOD=2`` : used to measure the absolute magnitudes in all the rest-frame bands using the observed apparent magnitudes always taken in the same observed filter (given by MABS_REF). It’s not optimized but you know exactly which filter is used to compute the absolute magnitudes. As example if MABS_REF is defined as B filter and A could be any filter: :math:`A_{ABS}=B_{obs}-DM(z)- kcor(B) + (A-B)_{ABS}^{temp}` @@ -1668,120 +1661,113 @@ This set of parameters allows the user to specify different methods to compute t - ``MABS_METHOD=4`` : imposes the filter depending on the redshift. The filters are given in MABS_FILT for the corresponding redshift bins listed in MABS_ZBIN. -The predicted apparent magnitudes and absolute magnitudes can be computed in a different set of filters than the standard one. In ADDITIONAL_MAG, you can add a different name for the filter file, different than the one indicated in FILTER_FILE. New predicted apparent and absolute magnitudes (only method 3) will be computed in these additional filters. - - -+----------------+------------------------+--------------------+-----------------------------------------+ -| **Parameters** | **Type** | **Default | **Description** | -| | | val.** | | -+================+========================+====================+=========================================+ -| Fixing | | | | -| redshift | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| ZFIX | string | NO | Fixed redshift | -| | | | (as defined in | -| | | | CAT_TYPE LONG) | -| | | | and | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n=1) | | search for | -| | | | best model | -+----------------+------------------------+--------------------+-----------------------------------------+ -| EXTERNALZ_FILE | string | NONE | Use the spec-z | -| | | | from an | -| | | | external file | -| | | | (format Id,zs) | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n=1) | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| Option to | | | | -| derive the | | | | -| absolute | | | | -| magnitudes | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| MABS_METHOD | integer | 0 | Method used | -| | | | for absolute | -| | | | magnitudes in | -| | | | each filter | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n\ :math:`\le`\ 100) | | 0 (default): | -| | | | mag(filter) | -| | | | :math:`\rightarrow M_{ABS}` (filter) | -| | | | | -| | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | | | 1 : | -| | | | mag(best filter) | -| | | | :math:`\rightarrow M_{ABS}` (filter) | -| | | | | -| | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | | | 2 : | -| | | | mag(fixed filter with MABS_REF) | -| | | | :math:`\rightarrow M_{ABS}` (filter) | -| | | | | -| | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | | | 3 : | -| | | | best SED mag | -| | | | :math:`\rightarrow M_{ABS}` (filter) | -| | | | | -| | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | | | 4 : | -| | | | MABS(filter) | -| | | | derives | -| | | | according to a | -| | | | fixed filter | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | | |    in a fixed | -| | | | redshift | -| | | | interval | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | | |    as given by | -| | | | MABS_FILT and | -| | | | MABS_ZBIN | -+----------------+------------------------+--------------------+-----------------------------------------+ -| MABS_CONTEXT | integer | -1 | Context for | -| | | | the bands used | -| | | | to derive | -| | | | :math:`M_{ABS}` | -| | | | | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n\ :math:`\le`\ 100) | | -1 : used same | -| | | | context as for | -| | | | photo-z | -+----------------+------------------------+--------------------+-----------------------------------------+ -| MABS_REF | integer | 0 | Fixed filter | -| | | | (if | -| | | | MABS_METHOD=2) | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n\ :math:`\le`\ 100) | | 0 (default) | -| | | | means not used | -+----------------+------------------------+--------------------+-----------------------------------------+ -| MABS_FILT | integer | —- | List of fixed | -| | | | filters chosen | -| | | | to derive | -| | | | : | -| | | | math:`M_{ABS}` | -| | | | in all bands | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n\ :math:`\le`\ 100) | | according to | -| | | | the redshift | -| | | | bins (if | -| | | | MABS_METHOD=4) | -+----------------+------------------------+--------------------+-----------------------------------------+ -| MABS_ZBIN | float | —- | List of | -| | | | Redshift bins | -| | | | associated | -| | | | with MABS_FILT | -+----------------+------------------------+--------------------+-----------------------------------------+ -| | (n\ :math:`\le`\ 200) | | Even number of | -| | | | values (if | -| | | | MABS_METHOD=4) | -+----------------+------------------------+--------------------+-----------------------------------------+ -| ADDITIONAL_MAG | string | —- | name of file | -| | | | with filters | -+----------------+------------------------+--------------------+-----------------------------------------+ +The predicted apparent magnitudes and absolute magnitudes can be computed in a different set of filters than the standard one. In ``ADDITIONAL_MAG``, you can add a different name for the filter file, different than the one indicated in ``FILTER_FILE``. New predicted apparent and absolute magnitudes (only method 3) will be computed in these additional filters. No need to create a new library for that (so, don't run mag_gal again in command lines). + + ++----------------+---------------------------+--------------------+-----------------------------------------+ +| **Parameters** | **Type** | **Default | **Description** | +| | | val.** | | ++================+===========================+====================+=========================================+ +| Fixing | | | | +| redshift | | | | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| ZFIX | string | NO | Fixed redshift | +| | | | (as defined in | +| | | | CAT_TYPE LONG) | +| | | | and | +| | | | | +| | (n=1) | | search for | +| | | | best model | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| EXTERNALZ_FILE | string | NONE | Use the spec-z | +| | | | from an | +| | | | external file | +| | | | (format Id,zs) | +| | | | | +| | (n=1) | | | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| Option to | | | | +| derive the | | | | +| absolute | | | | +| magnitudes | | | | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| MABS_METHOD | integer | 0 | Method used | +| | | | for absolute | +| | | | magnitudes in | +| | | | each filter | +| | | | | +| | (n\ :math:`\le`\ 100) | | 0 (default): | +| | | | mag(filter) | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | +| | | | 1 : | +| | | | mag(best filter) | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | +| | | | 2 : | +| | | | mag(fixed filter with MABS_REF) | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | +| | | | 3 : | +| | | | best SED mag | +| | | | :math:`\rightarrow M_{ABS}` (filter) | +| | | | | +| | | | | +| | | | 4 : | +| | | | MABS(filter) | +| | | | derives | +| | | | according to a | +| | | | fixed filter | +| | | | in a fixed | +| | | | redshift | +| | | | interval | +| | | | as given by | +| | | | MABS_FILT and | +| | | | MABS_ZBIN | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| MABS_CONTEXT | integer | -1 | Context for | +| | | | the bands used | +| | | | to derive | +| | | | :math:`M_{ABS}` | +| | | | | +| | (n\ :math:`\le`\ 100) | | -1 : used same | +| | | | context as for | +| | | | photo-z | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| MABS_REF | integer | 0 | Fixed filter | +| | | | (if | +| | | | MABS_METHOD=2) | +| | | | | +| | (n\ :math:`\le`\ 100) | | 0 (default) | +| | | | means not used | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| MABS_FILT | integer | —- | List of fixed | +| | | | filters chosen | +| | | | to derive | +| | | | : | +| | | | math:`M_{ABS}` | +| | | | in all bands | +| | | | | +| | (n\ :math:`\le`\ 100) | | according to | +| | | | the redshift | +| | | | bins (if | +| | | | MABS_METHOD=4) | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| MABS_ZBIN | float | —- | List of | +| | | | Redshift bins | +| | | | associated | +| | | | with MABS_FILT | +| | | | | +| | (n\ :math:`\le`\ 200) | | Even number of | +| | | | values (if | +| | | | MABS_METHOD=4) | ++----------------+---------------------------+--------------------+-----------------------------------------+ +| ADDITIONAL_MAG | string | —- | name of file | +| | | | with filters | ++----------------+---------------------------+--------------------+-----------------------------------------+ @@ -1798,7 +1784,9 @@ As for the photo-z, you will find physical parameters measured at the minimum :m FIR fit ~~~~~~~ -A set of four FIR libraries are available, and can be used to characterize the FIR emission of galaxies assuming that the emission is dominated by radiation of dust component heated by star formation activity. No implementation of hot dust heated by an AGN component has been included yet ! +A set of four FIR libraries are available, and can be used to characterize the FIR emission of galaxies. No implementation of hot dust heated by an AGN component has been included yet ! + +The fit of standard templates describing the stellar emission (as BC03) is simulaneous to the fit in FIR done with the FIR libraries. If you define FIR_LIB, the code will fit a FIR template. We don't consider the energy balance in the fit. The user defined the minimal rest-frame wavelength for the FIR analysis (FIR_LMIN, default is :math:`\lambda=7\mu m`). The global FIR context (FIR_CONT) specifies the set of filters to be used. However, the final context will depend on the redshift of the source and only filters with :math:`\lambda/(1+z) \ge` FIR_LMIN will be considered. @@ -1822,7 +1810,6 @@ If only one passband is available, the FIR parameters luminosity is derived from | | | | libraries | | | | | separated by | | | | | comma | -+----------------+---------------------+----------------+--------------------------+ | | (:math:`n\le 5`) | | | | | | | | +----------------+---------------------+----------------+--------------------------+ @@ -1830,25 +1817,21 @@ If only one passband is available, the FIR parameters luminosity is derived from | | | | min for FIR | | | | | analysis (in | | | | | :math:`\mu m`) | -+----------------+---------------------+----------------+--------------------------+ | | (:math:`n=1`) | | | +----------------+---------------------+----------------+--------------------------+ | FIR_CONT | integer | -1 | Context for | | | | | bands to be | | | | | used in Far-IR | -+----------------+---------------------+----------------+--------------------------+ | | (:math:`n=1`) | | | +----------------+---------------------+----------------+--------------------------+ | FIR_FREESCALE | string | NO | Allows for | | | | | free scaling | -+----------------+---------------------+----------------+--------------------------+ | | (:math:`n= 1`) | | | +----------------+---------------------+----------------+--------------------------+ | FIR_SCALE | integer | -1 | Context for | | | | | bands to be | | | | | used for | | | | | scaling | -+----------------+---------------------+----------------+--------------------------+ | | (:math:`n= 1`) | | | +----------------+---------------------+----------------+--------------------------+ | FIR_SUBSTELLAR | string | NO | Removing | @@ -1856,34 +1839,37 @@ If only one passband is available, the FIR parameters luminosity is derived from | | | | component from | | | | | best optical | | | | | fit | -+----------------+---------------------+----------------+--------------------------+ | | (:math:`n =1`) | | | +----------------+---------------------+----------------+--------------------------+ The :math:`V_{max}` ~~~~~~~~~~~~~~~~~~~ -We compute the maximum redshift at which a galaxy can be observable -given its SED. This maximum redshift depends on how the sample is +For any kind of galaxy library, we compute the maximum redshift at which a galaxy can be observable +given its SED. The :math:`z_{max}` is computed for each galaxy and is used to compute the :math:`V_{max}` for +the luminosity function in a given reference band or stellar mass function. + +This maximum redshift depends on how the sample is selected in magnitude, at a given redshift. That’s why the user needs to -define the selection criteria of the sample. The :math:`z_{max}` is -computed for each galaxy and is used to compute the :math:`V_{max}` for -the luminosity function in a given reference band. +define the selection criteria of the sample. + +Example: if you want to compute the LF: + +* in the redshift bins 0.2-0.5, 1-1.5 LIMITS_ZBIN 0.2,0.5,1,1.5 +* in the reference band 1 LIMITS_MAPP_REF 1 +* for a sample selected in band 2 and 6 in each redshift bin, respectively LIMITS_MAPP_SEL 2,6 +* with a magnitude cut (:math:`17 \le mag \le 26`), LIMITS_MAPP_CUT 17,26,17,26 +----------------+----------------------+----------------+----------------+ | **Parameters** | **Type** | **Default | ** | | | | val.** | Description** | +================+======================+================+================+ -| | | | Additional | -| | | | Libraries | -| | | | KEYWORDS | -+----------------+----------------------+----------------+----------------+ | LIMITS_ZBIN | double | :math:`0,99` | Redshifts used | | | | | to split in N | | | | | bins, | | | | | separated by a | | | | | coma. | -+----------------+----------------------+----------------+----------------+ +| | | | | | | (:math:`n\le 100`) | | Need N+1 | | | | | values (start | | | | | with the | @@ -1892,23 +1878,23 @@ the luminosity function in a given reference band. +----------------+----------------------+----------------+----------------+ | | integer | 1 | Band in which | |LIMITS_MAPP_REF | | | the absolute | -| | | | magnitude is | +| | (:math:`n=1`) | | magnitude is | | | | | computed | -+----------------+----------------------+----------------+----------------+ -| | (:math:`n=1`) | | | +| | | | | +----------------+----------------------+----------------+----------------+ | | integer | 1 | Give the | |LIMITS_MAPP_SEL | | | selection band | | | | | in each | | | | | redshift bin. | -+----------------+----------------------+----------------+----------------+ +| | | | | | | (:math:`n \le 100`) | | Need 1 or N | | | | | values. | +----------------+----------------------+----------------+----------------+ -| | double | 90 | Magnitude cut | -|LIMITS_MAPP_CUT | | | used in each | +| | double | 90 | Apparent mag | +|LIMITS_MAPP_CUT | | | selection used | +| | | | in each | | | | | redshift bin. | -+----------------+----------------------+----------------+----------------+ +| | | | | | | (:math:`n \le 100`) | | Need 1 or N | | | | | values. | +----------------+----------------------+----------------+----------------+ @@ -1961,9 +1947,9 @@ You can also directly save in fits file. +----------------+--------------------+----------------+----------------+ | CAT_OUT | string | zphot.out | Name of the | | | | | output file | -| | | | (full path) | -+----------------+--------------------+----------------+----------------+ -| | (n=1) | | by default | +| | | | (full path). | +| | | | | +| | (n=1) | | By default | | | | | saved in | | | | | working | | | | | directory | @@ -1974,21 +1960,20 @@ You can also directly save in fits file. | | | | output | | | | | parameters | | | | | (full path) | -+----------------+--------------------+----------------+----------------+ | | (n=1) | | | | | | | | +----------------+--------------------+----------------+----------------+ | SPEC_OUT | string | NO | Output files | | | | | with | | | | | Gal/Star/QSO | -| | | | spectra (one | +| | | | spectra. One | | | | | file per | -| | | | object) | -+----------------+--------------------+----------------+----------------+ +| | | | object. | +| | | | | | | (n=1) | | (if YES: can | | | | | take a lot of | | | | | disk space !) | -+----------------+--------------------+----------------+----------------+ +| | | | | | | | | If a string | | | | | different from | | | | | NO, save files | @@ -2002,7 +1987,7 @@ You can also directly save in fits file. | | | | library (one | | | | | file per | | | | | object) | -+----------------+--------------------+----------------+----------------+ +| | | | | | | (n=1) | | (if YES: can | | | | | take a lot of | | | | | disk space !) | @@ -2047,9 +2032,14 @@ The PDF are given in the output file using the keyword ``PDZ_OUT`` for the root - ``BAY_ZG`` all the probabilities :math:`P=exp(-\chi^2/2)` at each redshift step are summed (we marginalize over the redshift). -You can obtain the redshift PDF for the QSO library with similar keyword's value ``MIN_ZQ`` and ``MIN_ZQ``. We also propose in output the PDF for several physical parameters using the BAY approach (sum of probabilities) with ``MASS``, ``SFR``, ``SSFR``, ``AGE``. +You can obtain the redshift PDF for the QSO library with similar keyword's value ``MIN_ZQ`` and ``MIN_ZQ``. LePHARE also provides in output the PDF for several physical parameters using the BAY approach (sum of probabilities) with ``MASS``, ``SFR``, ``SSFR``, ``AGE``. + +The value indicated as ``_BEST`` in the output file are obtained using the PDF computed with the ``MIN`` method. This PDF is also used to refine the photo-z ``_BEST`` solution (``Z_INTERP YES``) with a parabolic interpolation (Bevington, 1969) which allow to find an accuracy lower than the z-grid resolution. This is done for galaxies and QSo templates. + +All the values in the output file indicated as ``_MED`` and ``_MODE`` are derived using the Bayesian method (i.e. summing the probabilities for a given redshift or physical parameter value). In the case ``_MED`` , we provide the median of the PDF (the old name \_ML still works). In the case ``_MODE`` , we provide the main mode of the PDF. + +The code also searches for secondary solutions (``DZ_WIN``, ``MIN_THRES``) in the profile likelihood (but only for galaxies). The search for a secondary solution is done by imposing a minimum distance between the two peaks in the PDF (``DZ_WIN``) and a minimum value with respect to the first peak (``MIN_THRES``). -The value indicated as ``_BEST`` in the output file are obtained using the PDF computed with the ``MIN`` method. This PDF is also used to refine the photo-z ``_BEST`` solution (``Z_INTERP YES``) with a parabolic interpolation (Bevington, 1969), and to search for secondary solutions (``DZ_WIN``, ``MIN_THRES``). The search for a secondary solution is done by imposing a minimum distance between the two peaks in the PDF (``DZ_WIN``) and a minimum value with respect to the first peak (``MIN_THRES``). All the values in the output file indicated as ``_MED`` and ``_MODE`` are derived using the Bayesian method (i.e. summing the probabilities for a given redshift or physical parameter value). In the case ``_MED`` , we provide the median of the PDF (the old name \_ML still works). In the case ``_MODE`` , we provide the main mode of the PDF. +----------------+---------------------+----------------+-------------------------------+ | **Parameters** | **Type** | **Default | **Description** | @@ -2060,11 +2050,11 @@ The value indicated as ``_BEST`` in the output file are obtained using the PDF c | | | | BAY_ZG sum all | | | | | probabilities | | | | | at a given z. | -+----------------+---------------------+----------------+-------------------------------+ +| | | | | | | | | MIN_ZG takes | | | | | exp(-chi2_min/2) | | | | | at a each z. | -+----------------+---------------------+----------------+-------------------------------+ +| | | | | | | | | [BAY_ZG,BAY_ZQ,MIN_ZG,MIN_ZQ, | | | | | MASS,SFR,SSFR,AGE] | +----------------+---------------------+----------------+-------------------------------+ @@ -2072,8 +2062,8 @@ The value indicated as ``_BEST`` in the output file are obtained using the PDF c | | | | PDF output | | | | | files | | | | | [def-NONE] | -+----------------+---------------------+----------------+-------------------------------+ -| | | | add | +| | | | | +| | | | Add | | | | | automatically | | | | | an extension | | | | | [\_zgbay.prob,...] | @@ -2083,7 +2073,6 @@ The value indicated as ``_BEST`` in the output file are obtained using the PDF c | | | | between | | | | | original step | | | | | (dz) | -+----------------+---------------------+----------------+-------------------------------+ | | (n=1) | | | +----------------+---------------------+----------------+-------------------------------+ | DZ_WIN | float | 0.25 | “smoothing” | @@ -2091,7 +2080,7 @@ The value indicated as ``_BEST`` in the output file are obtained using the PDF c | | | | function for | | | | | 2nd peak | | | | | search in F(z) | -+----------------+---------------------+----------------+-------------------------------+ +| | | | | | | (n=1) | | (value between | | | | | 0 to zmax) | +----------------+---------------------+----------------+-------------------------------+ @@ -2100,7 +2089,7 @@ The value indicated as ``_BEST`` in the output file are obtained using the PDF c | | | | of 2nd peak in | | | | | normalised | | | | | F(z) | -+----------------+---------------------+----------------+-------------------------------+ +| | | | | | | (n=1) | | (value between | | | | | 0 to 1) | +----------------+---------------------+----------------+-------------------------------+ @@ -2109,12 +2098,12 @@ The value indicated as ``_BEST`` in the output file are obtained using the PDF c | | | | compute | | | | | probability | | | | | from F(z) | -+----------------+---------------------+----------------+-------------------------------+ -| |(n :math:`\le` 100) | | (even number | +| | | | | +| | (n :math:`\le` 100) | | (even number | | | | | of values), | | | | | output vectors | | | | | from 0 to 100% | -+----------------+---------------------+----------------+-------------------------------+ +| | | | | | | | | 0.-default : | | | | | not used | +----------------+---------------------+----------------+-------------------------------+ @@ -2414,9 +2403,9 @@ Appendix A : Content of LEPHARE-data +-------------------------+-------------------------------------------+ | $LEPHAREDIR/vega/ : | SEDs for reference stars: | -+-------------------------+-------------------------------------------+ +| | | | | VegaLCB.dat from Lejeune et al., (1997) | -+-------------------------+-------------------------------------------+ +| | | | | BD\ :math:`+17^{\circ}4708` from Oke & | | | Gunn, (1983) | +-------------------------+-------------------------------------------+ @@ -2425,72 +2414,96 @@ Appendix A : Content of LEPHARE-data +-------------------------+-------------------------------------------+ | $LEPHAREDIR/opa/ : | Lyman absorption files produced by | | | intergalactic medium as function | -+-------------------------+-------------------------------------------+ | | of redshift from Madau (1995). | +| | | +| | Meiskin also included. | +-------------------------+-------------------------------------------+ | $LEPHAREDIR/filt/ : | individual filter response curves sorted | | | by directories: | -+-------------------------+-------------------------------------------+ +| | | | | (ex : ./std/\*.pb, ./sdss/\*.pb, | | | ./hst/\*.pb, ...) | +-------------------------+-------------------------------------------+ | $LEPHAREDIR/sed/STAR/: | SED files for STARS sorted by | | | directories: | -+-------------------------+-------------------------------------------+ +| | | | | ./BD/\*.sed : Brown Dwarves and low mass | | | stars from Chabrier & Baraffe (2000) | -+-------------------------+-------------------------------------------+ +| | | +| | ./BD_NEW/\*.sed : a more complete | +| | Brown Dwarves library used in | +| | Kauffmann et al. 2022. | +| | | +| | | | | ./PICKLES/\*.sed: Atlas from Pickles | | | (1998) | -+-------------------------+-------------------------------------------+ +| | | | | ./WD/\*.sed : 4 White dwarves from IRAF | | | ?? | +-------------------------+-------------------------------------------+ | $LEPHAREDIR/sed/QSO/: | SED files for QSO | -+-------------------------+-------------------------------------------+ +| | | | | ./qsol.dat : composite template from | | | Cristiani (?) | -+-------------------------+-------------------------------------------+ +| | | | | ./qso-\*.dat: SEDs based on simulated | | | slope and strengthes of emission | -+-------------------------+-------------------------------------------+ +| | | | | lines (Warren ?) (see README.model_qso) | -+-------------------------+-------------------------------------------+ +| | | | | ./a\*.sed : SEDs from Eva Hatziminaoglou | | | (?) | +-------------------------+-------------------------------------------+ | $LEPHAREDIR/sed/GAL/: | SED files for GALAXY sorted by | | | directories: | -+-------------------------+-------------------------------------------+ +| | | | | CWW_KINNEY/\*.sed: observed SED by | | | Coleman etal(1980) | -+-------------------------+-------------------------------------------+ | | + 2 starburst from Kinney (1996) extended | -| | in UV and IR by GISSEL | -+-------------------------+-------------------------------------------+ -| | CE/\*.sed : 72 SEDs based on | -| | interpolation between the 4 CWW SEDS | -+-------------------------+-------------------------------------------+ -| | + 3 young star-forming galaxies from | -| | GISSEL (Arnouts et al., 1999) | -+-------------------------+-------------------------------------------+ -| | 42GISSEL/\*.sed : 42 selected SEDs from | -| | GISSEL | -+-------------------------+-------------------------------------------+ -| | Additional directories with the other SED | -| | tar-files: | -+-------------------------+-------------------------------------------+ -| | GISSEL/\*.sed : 27 theoretical SEDs | -| | including ages from GISSEL96 | -+-------------------------+-------------------------------------------+ +| | in UV and IR by BC03 | +| | | +| | CFHTLS_230506/\*.sed : | +| | optimization and interpolation | +| | of CWW_KINNEY library | +| | from Ilbert et al.(2006) | +| | | +| | CFHTLS_SED/\*.sed : | +| | optimization and interpolation | +| | of CWW_KINNEY library | +| | from Arnouts et al.(2007) | +| | | +| | COSMOS_SED/\*.sed : | +| | from Polletta 2007 and BC03 | +| | Set of templates | +| | from Ilbert et al.(2009) | +| | | +| | BC03_CHAB/: generated with BC03 | +| | with exponentially declining SFH | +| | and Chabrier 03 IMF | +| | | +| | BC03_CHAB_DELAYED/: generated with BC03 | +| | with delayed SFH | +| | and Chabrier 03 IMF | +| | | | | PEGASE2/\*.sed : SEDs including ages from | | | PEGASE2 (Fioc et al., 2000) | +| | | +| | CHARY_ELBAZ/: FIR library | +| | | +| | DALE/: FIR library | +| | | +| | LAGACHE/: FIR library | +| | | +| | MAGDIS/: FIR library | +| | | +-------------------------+-------------------------------------------+ -| | HYPERZ/\*.sed : SEDs from the HYPERZ | -| | package (Bolzonella et al., 2000) | -+-------------------------+-------------------------------------------+ -| $LEPHAREDIR/tools/ : | macros for plotting filterset | -| | (filterplot) and extracted SED (spec.sm) | +| $LEPHAREDIR/tools/ : | useful tools | +| | | +| | spec.py: plot the .spec files | +| | | +| | context.py: compute the context | +| | | +| | cat_manip_lph++.py: help preparing input | +-------------------------+-------------------------------------------+ | $LEPHAREDIR/examples/ : | extensive list of tests/commands with | | | COSMOS. | diff --git a/docs/figures/LePHARE.pptx b/docs/figures/LePHARE.pptx index 51df894f45b6c08c779a2400d7e63b79776ae98f..33efe3573a122cdeb380c61531bf56a2ac126d33 100644 GIT binary patch delta 13533 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 delta 13611 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�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

OjM+;;!o>k@3Wjb+oK=ntV* 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%0DX5OGRA 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 literal 177745 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 Date: Tue, 26 Nov 2024 17:07:11 +0100 Subject: [PATCH 44/44] Minor typo fix --- docs/detailed.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/detailed.rst b/docs/detailed.rst index 8c038a1..c8e67b6 100644 --- a/docs/detailed.rst +++ b/docs/detailed.rst @@ -44,7 +44,7 @@ Structure of the code The structure of the package is illustrated in :ref:`Fig.2 `. -The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of that. If you want to know where the executables are located, try ``which setolib` in your prompt. +The executables are stored in your default ``bin`` directory when installing the code using ``pip install``. They should be in your PATH and you shouldn't have to take care of that. If you want to know where the executables are located, try ``which setolib`` in your prompt. If you have installed the code in developper mode, i.e. by cloning the code from the `lephare github repository `_, the ``C++`` source codes are located in ``LEPHARE/src/lib/`` and the python scripts are in ``LEPHARE/src/lephare/``.