selfisys_public/docs/_modules/selfisys/utils/plot_examples.html
2025-01-10 17:03:16 +01:00

942 lines
No EOL
135 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>selfisys.utils.plot_examples &mdash; SelfiSys /Users/hoellinger/Library/CloudStorage/Dropbox/travail/these/science/code/SELFI/selfisys/src/ documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../../_static/documentation_options.js?v=75025241"></script>
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home">
SelfiSys
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">API Documentation</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.hiddenbox.html">hiddenbox</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox"><code class="docutils literal notranslate"><span class="pre">HiddenBox</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.Npop"><code class="docutils literal notranslate"><span class="pre">HiddenBox.Npop</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.Ntimesteps"><code class="docutils literal notranslate"><span class="pre">HiddenBox.Ntimesteps</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.Psingle"><code class="docutils literal notranslate"><span class="pre">HiddenBox.Psingle</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.compute_pool"><code class="docutils literal notranslate"><span class="pre">HiddenBox.compute_pool()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.evaluate"><code class="docutils literal notranslate"><span class="pre">HiddenBox.evaluate()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.force_neglect_lightcone"><code class="docutils literal notranslate"><span class="pre">HiddenBox.force_neglect_lightcone</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.force_recompute_mocks"><code class="docutils literal notranslate"><span class="pre">HiddenBox.force_recompute_mocks</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.gravity_on"><code class="docutils literal notranslate"><span class="pre">HiddenBox.gravity_on</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.load_pool"><code class="docutils literal notranslate"><span class="pre">HiddenBox.load_pool()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.make_data"><code class="docutils literal notranslate"><span class="pre">HiddenBox.make_data()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.modified_selfi"><code class="docutils literal notranslate"><span class="pre">HiddenBox.modified_selfi</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.prefix_mocks"><code class="docutils literal notranslate"><span class="pre">HiddenBox.prefix_mocks</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.reset_survey"><code class="docutils literal notranslate"><span class="pre">HiddenBox.reset_survey()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.setup_only"><code class="docutils literal notranslate"><span class="pre">HiddenBox.setup_only</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.switch_recompute_pool"><code class="docutils literal notranslate"><span class="pre">HiddenBox.switch_recompute_pool()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.switch_setup"><code class="docutils literal notranslate"><span class="pre">HiddenBox.switch_setup()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.update"><code class="docutils literal notranslate"><span class="pre">HiddenBox.update()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.normalise_hb.html">normalise_hb</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.normalise_hb.html#selfisys.normalise_hb.define_normalisation"><code class="docutils literal notranslate"><span class="pre">define_normalisation()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.normalise_hb.html#selfisys.normalise_hb.worker_normalisation"><code class="docutils literal notranslate"><span class="pre">worker_normalisation()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.normalise_hb.html#selfisys.normalise_hb.worker_normalisation_public"><code class="docutils literal notranslate"><span class="pre">worker_normalisation_public()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.normalise_hb.html#selfisys.normalise_hb.worker_normalisation_wrapper"><code class="docutils literal notranslate"><span class="pre">worker_normalisation_wrapper()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.prior.html">prior</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.get_summary"><code class="docutils literal notranslate"><span class="pre">get_summary()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.logposterior_hyperparameters_parallel"><code class="docutils literal notranslate"><span class="pre">logposterior_hyperparameters_parallel()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.perform_prior_optimisation_and_plot"><code class="docutils literal notranslate"><span class="pre">perform_prior_optimisation_and_plot()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior"><code class="docutils literal notranslate"><span class="pre">planck_prior</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.mean"><code class="docutils literal notranslate"><span class="pre">planck_prior.mean</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.covariance"><code class="docutils literal notranslate"><span class="pre">planck_prior.covariance</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.inv_covariance"><code class="docutils literal notranslate"><span class="pre">planck_prior.inv_covariance</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.Nbin_max"><code class="docutils literal notranslate"><span class="pre">planck_prior.Nbin_max</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.Nbin_min"><code class="docutils literal notranslate"><span class="pre">planck_prior.Nbin_min</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.compute"><code class="docutils literal notranslate"><span class="pre">planck_prior.compute()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.load"><code class="docutils literal notranslate"><span class="pre">planck_prior.load()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.logpdf"><code class="docutils literal notranslate"><span class="pre">planck_prior.logpdf()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.sample"><code class="docutils literal notranslate"><span class="pre">planck_prior.sample()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.planck_prior.save"><code class="docutils literal notranslate"><span class="pre">planck_prior.save()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.prior.html#selfisys.prior.worker_class"><code class="docutils literal notranslate"><span class="pre">worker_class()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.selection_functions.html">selection_functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection"><code class="docutils literal notranslate"><span class="pre">LognormalSelection</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.init_selection"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.init_selection()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.lognormals_z_to_x"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.lognormals_z_to_x()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.multiple_lognormal"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.multiple_lognormal()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.multiple_lognormal_z"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.multiple_lognormal_z()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.one_lognormal"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.one_lognormal()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.one_lognormal_z"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.one_lognormal_z()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.r_grid"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.r_grid()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.selfi_interface.html">selfi_interface</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.selfi_interface.html#selfisys.selfi_interface.PrintMessage"><code class="docutils literal notranslate"><span class="pre">PrintMessage()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.selfi_interface.html#selfisys.selfi_interface.indent"><code class="docutils literal notranslate"><span class="pre">indent()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.selfi_interface.html#selfisys.selfi_interface.unindent"><code class="docutils literal notranslate"><span class="pre">unindent()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.sbmy_interface.html">sbmy_interface</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.compute_Phi"><code class="docutils literal notranslate"><span class="pre">compute_Phi()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.generate_white_noise_Field"><code class="docutils literal notranslate"><span class="pre">generate_white_noise_Field()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.get_power_spectrum_from_cosmo"><code class="docutils literal notranslate"><span class="pre">get_power_spectrum_from_cosmo()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.handle_time_stepping"><code class="docutils literal notranslate"><span class="pre">handle_time_stepping()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.setup_sbmy_parfiles"><code class="docutils literal notranslate"><span class="pre">setup_sbmy_parfiles()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.grf.html">grf</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.grf.html#selfisys.grf.primordial_grf"><code class="docutils literal notranslate"><span class="pre">primordial_grf()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../selfisys.utils.html">selfisys.utils package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.examples_utils">selfisys.utils.examples_utils module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.examples_utils.clear_large_plot"><code class="docutils literal notranslate"><span class="pre">clear_large_plot()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.logger">selfisys.utils.logger module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.CustomLogger"><code class="docutils literal notranslate"><span class="pre">CustomLogger</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.CustomLogger.diagnostic"><code class="docutils literal notranslate"><span class="pre">CustomLogger.diagnostic()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.CustomLoggerHandler"><code class="docutils literal notranslate"><span class="pre">CustomLoggerHandler</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.CustomLoggerHandler.emit"><code class="docutils literal notranslate"><span class="pre">CustomLoggerHandler.emit()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.INDENT"><code class="docutils literal notranslate"><span class="pre">INDENT()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.PrintDiagnostic"><code class="docutils literal notranslate"><span class="pre">PrintDiagnostic()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.PrintError"><code class="docutils literal notranslate"><span class="pre">PrintError()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.PrintInfo"><code class="docutils literal notranslate"><span class="pre">PrintInfo()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.PrintLeftType"><code class="docutils literal notranslate"><span class="pre">PrintLeftType()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.PrintWarning"><code class="docutils literal notranslate"><span class="pre">PrintWarning()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.UNINDENT"><code class="docutils literal notranslate"><span class="pre">UNINDENT()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.logger.getCustomLogger"><code class="docutils literal notranslate"><span class="pre">getCustomLogger()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.low_level">selfisys.utils.low_level module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.low_level.stderr_redirector"><code class="docutils literal notranslate"><span class="pre">stderr_redirector()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.low_level.stdout_redirector"><code class="docutils literal notranslate"><span class="pre">stdout_redirector()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.parser">selfisys.utils.parser module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.bool_sh"><code class="docutils literal notranslate"><span class="pre">bool_sh()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.check_files_exist"><code class="docutils literal notranslate"><span class="pre">check_files_exist()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.intNone"><code class="docutils literal notranslate"><span class="pre">intNone()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.joinstrs"><code class="docutils literal notranslate"><span class="pre">joinstrs()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.joinstrs_only"><code class="docutils literal notranslate"><span class="pre">joinstrs_only()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.none_or_bool_or_str"><code class="docutils literal notranslate"><span class="pre">none_or_bool_or_str()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.parser.safe_npload"><code class="docutils literal notranslate"><span class="pre">safe_npload()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.path_utils">selfisys.utils.path_utils module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.path_utils.file_names_evaluate"><code class="docutils literal notranslate"><span class="pre">file_names_evaluate()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.path_utils.get_file_names"><code class="docutils literal notranslate"><span class="pre">get_file_names()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.plot_examples">selfisys.utils.plot_examples module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_comoving_distance_redshift"><code class="docutils literal notranslate"><span class="pre">plot_comoving_distance_redshift()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_galaxy_field_slice"><code class="docutils literal notranslate"><span class="pre">plot_galaxy_field_slice()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_power_spectrum"><code class="docutils literal notranslate"><span class="pre">plot_power_spectrum()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_selection_functions_def_in_z"><code class="docutils literal notranslate"><span class="pre">plot_selection_functions_def_in_z()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.redshift_distance_conversion"><code class="docutils literal notranslate"><span class="pre">redshift_distance_conversion()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.relative_error_analysis"><code class="docutils literal notranslate"><span class="pre">relative_error_analysis()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.plot_params">selfisys.utils.plot_params module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11.get_offset"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11.get_offset()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11.set_scientific"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11.set_scientific()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11.set_useOffset"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11.set_useOffset()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.create_all_colormaps"><code class="docutils literal notranslate"><span class="pre">create_all_colormaps()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.create_colormap"><code class="docutils literal notranslate"><span class="pre">create_colormap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.dynamic_text_scaling"><code class="docutils literal notranslate"><span class="pre">dynamic_text_scaling()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.get_contours"><code class="docutils literal notranslate"><span class="pre">get_contours()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.reset_plotting"><code class="docutils literal notranslate"><span class="pre">reset_plotting()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_params.setup_plotting"><code class="docutils literal notranslate"><span class="pre">setup_plotting()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.plot_utils">selfisys.utils.plot_utils module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_C"><code class="docutils literal notranslate"><span class="pre">plot_C()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_fisher"><code class="docutils literal notranslate"><span class="pre">plot_fisher()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_gradients"><code class="docutils literal notranslate"><span class="pre">plot_gradients()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_histogram"><code class="docutils literal notranslate"><span class="pre">plot_histogram()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_mocks"><code class="docutils literal notranslate"><span class="pre">plot_mocks()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_mocks_compact"><code class="docutils literal notranslate"><span class="pre">plot_mocks_compact()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_observations"><code class="docutils literal notranslate"><span class="pre">plot_observations()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_prior_and_posterior_covariances"><code class="docutils literal notranslate"><span class="pre">plot_prior_and_posterior_covariances()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_reconstruction"><code class="docutils literal notranslate"><span class="pre">plot_reconstruction()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plot_selection_functions"><code class="docutils literal notranslate"><span class="pre">plot_selection_functions()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.plot_utils.plotly_3d"><code class="docutils literal notranslate"><span class="pre">plotly_3d()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.timestepping">selfisys.utils.timestepping module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.timestepping.merge_nTS"><code class="docutils literal notranslate"><span class="pre">merge_nTS()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.tools">selfisys.utils.tools module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.cosmo_vector_to_Simbelmyne_dict"><code class="docutils literal notranslate"><span class="pre">cosmo_vector_to_Simbelmyne_dict()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.cosmo_vector_to_class_dict"><code class="docutils literal notranslate"><span class="pre">cosmo_vector_to_class_dict()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.custom_stat"><code class="docutils literal notranslate"><span class="pre">custom_stat()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.fisher_rao"><code class="docutils literal notranslate"><span class="pre">fisher_rao()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.get_k_max"><code class="docutils literal notranslate"><span class="pre">get_k_max()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.get_summary"><code class="docutils literal notranslate"><span class="pre">get_summary()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.none_or_bool_or_str"><code class="docutils literal notranslate"><span class="pre">none_or_bool_or_str()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.params_ids_to_Simbelmyne_dict"><code class="docutils literal notranslate"><span class="pre">params_ids_to_Simbelmyne_dict()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.sample_omega_from_prior"><code class="docutils literal notranslate"><span class="pre">sample_omega_from_prior()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.tools.summary_to_score"><code class="docutils literal notranslate"><span class="pre">summary_to_score()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils.workers">selfisys.utils.workers module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.workers.Simbelmyne_worker"><code class="docutils literal notranslate"><span class="pre">Simbelmyne_worker()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.workers.evaluate_gradient_of_Symbelmyne"><code class="docutils literal notranslate"><span class="pre">evaluate_gradient_of_Symbelmyne()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../selfisys.utils.html#selfisys.utils.workers.worker_gradient_Symbelmyne"><code class="docutils literal notranslate"><span class="pre">worker_gradient_Symbelmyne()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../selfisys.utils.html#module-selfisys.utils">Module contents</a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Contribute</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../CONTRIBUTING.html">Contributing to SelfiSys</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../../CONTRIBUTING.html#reporting-issues">Reporting Issues</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../CONTRIBUTING.html#submitting-contributions">Submitting Contributions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../CONTRIBUTING.html#style-guidelines">Style Guidelines</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../../CONTRIBUTING.html#python-code">Python code</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../CONTRIBUTING.html#jupyter-notebooks">Jupyter Notebooks</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../CONTRIBUTING.html#questions">Questions?</a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">References</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../REFERENCES.html">References</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">SelfiSys</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
<li class="breadcrumb-item active">selfisys.utils.plot_examples</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for selfisys.utils.plot_examples</h1><div class="highlight"><pre>
<span></span><span class="ch">#!/usr/bin/env python3</span>
<span class="c1"># ----------------------------------------------------------------------</span>
<span class="c1"># Copyright (C) 2024 Tristan Hoellinger</span>
<span class="c1"># Distributed under the GNU General Public License v3.0 (GPLv3).</span>
<span class="c1"># See the LICENSE file in the root directory for details.</span>
<span class="c1"># SPDX-License-Identifier: GPL-3.0-or-later</span>
<span class="c1"># ----------------------------------------------------------------------</span>
<span class="n">__author__</span> <span class="o">=</span> <span class="s2">&quot;Tristan Hoellinger&quot;</span>
<span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;0.1.0&quot;</span>
<span class="n">__date__</span> <span class="o">=</span> <span class="s2">&quot;2024&quot;</span>
<span class="n">__license__</span> <span class="o">=</span> <span class="s2">&quot;GPLv3&quot;</span>
<span class="sd">&quot;&quot;&quot;Visualisation utilities for the exploratory examples in SelfiSys.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.plot_params</span> <span class="kn">import</span> <span class="o">*</span>
<span class="c1"># Configure global plotting settings</span>
<span class="n">setup_plotting</span><span class="p">()</span>
<div class="viewcode-block" id="plot_power_spectrum">
<a class="viewcode-back" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_power_spectrum">[docs]</a>
<span class="k">def</span> <span class="nf">plot_power_spectrum</span><span class="p">(</span>
<span class="n">G_sim</span><span class="p">,</span> <span class="n">true_P</span><span class="p">,</span> <span class="n">k_s</span><span class="p">,</span> <span class="n">planck_Pk</span><span class="p">,</span> <span class="n">Pbins</span><span class="p">,</span> <span class="n">Pbins_bnd</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">wd</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">display</span><span class="o">=</span><span class="kc">True</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Plot a power spectrum over Fourier modes, its linear interpolation</span>
<span class="sd"> over specified support points, and a given binning for comparison.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> G_sim : pysbmy.power.FourierGrid</span>
<span class="sd"> Fourier grid object containing the `k_modes` attribute.</span>
<span class="sd"> true_P : pysbmy.power.PowerSpectrum</span>
<span class="sd"> Power spectrum object containing the `powerspectrum` attribute.</span>
<span class="sd"> k_s : array-like</span>
<span class="sd"> Support points in k-space.</span>
<span class="sd"> planck_Pk : array-like</span>
<span class="sd"> Power spectrum values at the support points.</span>
<span class="sd"> Pbins : array-like</span>
<span class="sd"> Centres of the Φ bins in k-space.</span>
<span class="sd"> Pbins_bnd : array-like</span>
<span class="sd"> Boundaries of the Φ bins in k-space.</span>
<span class="sd"> size : float</span>
<span class="sd"> Box size in number of grid cells.</span>
<span class="sd"> L : float</span>
<span class="sd"> Box length in Mpc/h.</span>
<span class="sd"> wd : str</span>
<span class="sd"> Working directory path for saving the figure.</span>
<span class="sd"> title : str, optional</span>
<span class="sd"> Title for the figure. Default is None.</span>
<span class="sd"> display : bool, optional</span>
<span class="sd"> Whether to display the figure. Default is True.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.logger</span> <span class="kn">import</span> <span class="n">PrintInfo</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="c1"># Plot power spectrum data</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="p">,</span> <span class="n">true_P</span><span class="o">.</span><span class="n">powerspectrum</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$P(k)$ (over all modes)&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">k_s</span><span class="p">,</span> <span class="n">planck_Pk</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$P(k)$ (binnedlinear interpolation)&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">)</span>
<span class="c1"># Configure axes</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$k\,[h/\mathrm</span><span class="si">{Mpc}</span><span class="s2">]$&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$[{\rm Mpc}/h]^3$&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xscale</span><span class="p">(</span><span class="s2">&quot;log&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">yscale</span><span class="p">(</span><span class="s2">&quot;log&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">k_s</span><span class="o">.</span><span class="n">min</span><span class="p">()</span> <span class="o">-</span> <span class="mf">2e-4</span><span class="p">,</span> <span class="mf">1e-4</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span> <span class="n">k_s</span><span class="o">.</span><span class="n">max</span><span class="p">())</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="mf">1e1</span><span class="p">,</span> <span class="mf">1e5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="s2">&quot;y&quot;</span><span class="p">)</span>
<span class="c1"># Plot vertical lines for support points and binning</span>
<span class="n">plt</span><span class="o">.</span><span class="n">vlines</span><span class="p">(</span><span class="n">k_s</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">ymin</span><span class="o">=</span><span class="mf">1e1</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="mf">1e5</span><span class="p">,</span> <span class="n">colors</span><span class="o">=</span><span class="s2">&quot;green&quot;</span><span class="p">,</span> <span class="n">linestyles</span><span class="o">=</span><span class="s2">&quot;dotted&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.6</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">k_s</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;green&quot;</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dotted&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\boldsymbol{\uptheta}$ support points&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">vlines</span><span class="p">(</span>
<span class="n">Pbins</span><span class="p">,</span>
<span class="n">ymin</span><span class="o">=</span><span class="mf">1e1</span><span class="p">,</span>
<span class="n">ymax</span><span class="o">=</span><span class="mf">5e2</span><span class="p">,</span>
<span class="n">colors</span><span class="o">=</span><span class="s2">&quot;red&quot;</span><span class="p">,</span>
<span class="n">linestyles</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\boldsymbol{\Phi}$ bin centres&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">vlines</span><span class="p">(</span>
<span class="n">Pbins_bnd</span><span class="p">,</span>
<span class="n">ymin</span><span class="o">=</span><span class="mf">1e1</span><span class="p">,</span>
<span class="n">ymax</span><span class="o">=</span><span class="mf">1e2</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">colors</span><span class="o">=</span><span class="s2">&quot;blue&quot;</span><span class="p">,</span>
<span class="n">linestyles</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\boldsymbol{\Phi}$ bin boundaries&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Plot the Nyquist frequency</span>
<span class="n">nyquist_freq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">size</span> <span class="o">/</span> <span class="n">L</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">nyquist_freq</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">6.0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Nyquist&quot;</span>
<span class="p">)</span>
<span class="c1"># Add legend, optional title, and save the figure</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;upper center&quot;</span><span class="p">,</span> <span class="n">bbox_to_anchor</span><span class="o">=</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.2</span><span class="p">),</span> <span class="n">ncol</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="k">if</span> <span class="n">title</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
<span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">wd</span><span class="p">,</span> <span class="s2">&quot;Figures&quot;</span><span class="p">)</span>
<span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">output_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;summary.pdf&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">output_path</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">)</span>
<span class="n">PrintInfo</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Figure saved to: </span><span class="si">{</span><span class="n">output_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">display</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
<div class="viewcode-block" id="relative_error_analysis">
<a class="viewcode-back" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.relative_error_analysis">[docs]</a>
<span class="k">def</span> <span class="nf">relative_error_analysis</span><span class="p">(</span>
<span class="n">G_sim</span><span class="p">,</span> <span class="n">true_P</span><span class="p">,</span> <span class="n">k_s</span><span class="p">,</span> <span class="n">planck_Pk</span><span class="p">,</span> <span class="n">Pbins</span><span class="p">,</span> <span class="n">Pbins_bnd</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">wd</span><span class="p">,</span> <span class="n">display</span><span class="o">=</span><span class="kc">True</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Compute and plot the relative error between the interpolated and</span>
<span class="sd"> true power spectra.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> G_sim : pysbmy.power.FourierGrid</span>
<span class="sd"> Fourier grid object containing the `k_modes` attribute.</span>
<span class="sd"> true_P : pysbmy.power.PowerSpectrum</span>
<span class="sd"> Power spectrum object containing the `powerspectrum` attribute.</span>
<span class="sd"> k_s : array-like</span>
<span class="sd"> Support points in k-space.</span>
<span class="sd"> planck_Pk : array-like</span>
<span class="sd"> Power spectrum values at the support points.</span>
<span class="sd"> Pbins : array-like</span>
<span class="sd"> Centres of the Φ bins in k-space.</span>
<span class="sd"> Pbins_bnd : array-like</span>
<span class="sd"> Boundaries of the Φ bins in k-space.</span>
<span class="sd"> size : float</span>
<span class="sd"> Box size in number of grid cells.</span>
<span class="sd"> L : float</span>
<span class="sd"> Box length in Mpc/h.</span>
<span class="sd"> wd : str</span>
<span class="sd"> Working directory path for saving the figure.</span>
<span class="sd"> display : bool, optional</span>
<span class="sd"> Whether to display the figure. Default is True.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">from</span> <span class="nn">scipy.interpolate</span> <span class="kn">import</span> <span class="n">InterpolatedUnivariateSpline</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.logger</span> <span class="kn">import</span> <span class="n">PrintInfo</span>
<span class="c1"># Interpolate the power spectrum</span>
<span class="n">spline</span> <span class="o">=</span> <span class="n">InterpolatedUnivariateSpline</span><span class="p">(</span><span class="n">k_s</span><span class="p">,</span> <span class="n">planck_Pk</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">rec_Pk</span> <span class="o">=</span> <span class="n">spline</span><span class="p">(</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
<span class="n">true_spectrum</span> <span class="o">=</span> <span class="n">true_P</span><span class="o">.</span><span class="n">powerspectrum</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">xx</span> <span class="o">=</span> <span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="c1"># Compute relative errors</span>
<span class="n">rel_err</span> <span class="o">=</span> <span class="p">(</span><span class="n">rec_Pk</span> <span class="o">-</span> <span class="n">true_spectrum</span><span class="p">)</span> <span class="o">/</span> <span class="n">true_spectrum</span>
<span class="n">indices_all</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
<span class="n">indices_nyquist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">((</span><span class="n">xx</span> <span class="o">&gt;=</span> <span class="n">k_s</span><span class="o">.</span><span class="n">min</span><span class="p">())</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">xx</span> <span class="o">&lt;=</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">size</span> <span class="o">/</span> <span class="n">L</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">indices_k2e1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">xx</span> <span class="o">&lt;=</span> <span class="mf">2e-1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">max_relerr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">rel_err</span><span class="p">[</span><span class="n">indices_all</span><span class="p">]))</span>
<span class="n">max_relerr_nyquist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">rel_err</span><span class="p">[</span><span class="n">indices_nyquist</span><span class="p">]))</span>
<span class="n">max_relerr_2e1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">rel_err</span><span class="p">[</span><span class="n">indices_k2e1</span><span class="p">]))</span>
<span class="c1"># Create the figure</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
<span class="n">xx</span><span class="p">,</span>
<span class="n">rel_err</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\left(P_\textrm</span><span class="si">{interp}</span><span class="s2">-P_{\mathrm</span><span class="si">{true}</span><span class="s2">}\right)/P_{\mathrm</span><span class="si">{true}</span><span class="s2">}$&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$k\,[h/\mathrm</span><span class="si">{Mpc}</span><span class="s2">]$&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;Relative error&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xscale</span><span class="p">(</span><span class="s2">&quot;log&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">k_s</span><span class="o">.</span><span class="n">min</span><span class="p">()</span> <span class="o">-</span> <span class="mf">2e-4</span><span class="p">,</span> <span class="mf">1e-4</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span> <span class="n">k_s</span><span class="o">.</span><span class="n">max</span><span class="p">())</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="s2">&quot;y&quot;</span><span class="p">)</span>
<span class="c1"># Vertical lines for binning and support points</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">x</span><span class="o">=</span><span class="n">Pbins</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;red&quot;</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\boldsymbol\Phi$ bin centres&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">Pbins</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;red&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">Pbins</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">k</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">6.0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;red&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">k_s</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">k</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;green&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dotted&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.6</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">x</span><span class="o">=</span><span class="n">k_s</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;green&quot;</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dotted&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\boldsymbol\uptheta$ support points&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">x</span><span class="o">=</span><span class="n">Pbins_bnd</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
<span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">3.0</span><span class="p">,</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;blue&quot;</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;$\boldsymbol\Phi$ bin boundaries&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">Pbins_bnd</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">3.0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;blue&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">Pbins_bnd</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">k</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">12.0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;blue&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;dashed&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="c1"># Nyquist and fundamental frequencies</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">x</span><span class="o">=</span><span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="n">L</span><span class="p">,</span>
<span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">6.0</span><span class="p">,</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="s2">&quot;Fundamental mode&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">x</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">size</span> <span class="o">/</span> <span class="n">L</span><span class="p">,</span>
<span class="n">ymax</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">6.0</span><span class="p">,</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="s2">&quot;Nyquist&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Add title, legend, and save the figure</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;upper center&quot;</span><span class="p">,</span> <span class="n">bbox_to_anchor</span><span class="o">=</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.2</span><span class="p">),</span> <span class="n">ncol</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span>
<span class="s2">&quot;Relative error between interpolated and true Planck 2018 power spectrum</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="sa">f</span><span class="s2">&quot;over the </span><span class="si">{</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="o">.</span><span class="n">size</span><span class="si">}</span><span class="s2"> modes of the Fourier grid (max: </span><span class="si">{</span><span class="n">max_relerr</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">100</span><span class="si">:</span><span class="s2">.3f</span><span class="si">}</span><span class="se">\\</span><span class="s2">%)&quot;</span>
<span class="p">)</span>
<span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">wd</span><span class="p">,</span> <span class="s2">&quot;Figures&quot;</span><span class="p">)</span>
<span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">output_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;summary_relerr.pdf&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">output_path</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">)</span>
<span class="n">PrintInfo</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Figure saved to: </span><span class="si">{</span><span class="n">output_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="c1"># Print summary of relative errors</span>
<span class="n">PrintInfo</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Max relative error over all support points: </span><span class="si">{</span><span class="n">max_relerr</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">100</span><span class="si">:</span><span class="s2">.3f</span><span class="si">}</span><span class="s2">%&quot;</span><span class="p">)</span>
<span class="n">PrintInfo</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Max relative error up to 1D Nyquist frequency: </span><span class="si">{</span><span class="n">max_relerr_nyquist</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">100</span><span class="si">:</span><span class="s2">.3f</span><span class="si">}</span><span class="s2">%&quot;</span><span class="p">)</span>
<span class="n">PrintInfo</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Max relative error up to k = 2e-1: </span><span class="si">{</span><span class="n">max_relerr_2e1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">100</span><span class="si">:</span><span class="s2">.3f</span><span class="si">}</span><span class="s2">%&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">display</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
<div class="viewcode-block" id="plot_comoving_distance_redshift">
<a class="viewcode-back" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_comoving_distance_redshift">[docs]</a>
<span class="k">def</span> <span class="nf">plot_comoving_distance_redshift</span><span class="p">(</span>
<span class="n">zz</span><span class="p">,</span> <span class="n">cosmo</span><span class="p">,</span> <span class="n">means_com</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">Lcorner</span><span class="p">,</span> <span class="n">wd</span><span class="p">,</span> <span class="n">colours_list</span><span class="o">=</span><span class="n">COLOUR_LIST</span><span class="p">,</span> <span class="n">display</span><span class="o">=</span><span class="kc">True</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Plot comoving distance as a function of redshift, highlighting key</span>
<span class="sd"> scales.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> zz : array-like</span>
<span class="sd"> Redshift range for the plot.</span>
<span class="sd"> cosmo : astropy.cosmology object</span>
<span class="sd"> Cosmology instance for calculating comoving distances.</span>
<span class="sd"> means_com : array-like</span>
<span class="sd"> Mean comoving distances of selection functions.</span>
<span class="sd"> L : float</span>
<span class="sd"> Box side length in Gpc/h.</span>
<span class="sd"> Lcorner : float</span>
<span class="sd"> Diagonal of the box (sqrt(3) * L) in Gpc/h.</span>
<span class="sd"> wd : str</span>
<span class="sd"> Working directory for saving figures.</span>
<span class="sd"> colours_list : list</span>
<span class="sd"> List of colours for selection function annotations.</span>
<span class="sd"> display : bool, optional</span>
<span class="sd"> Whether to display the figure. Default is True.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">cosmo</span><span class="o">.</span><span class="n">comoving_distance</span><span class="p">(</span><span class="n">zz</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1e3</span> <span class="c1"># Convert to Gpc/h</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mf">5.2</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">zz</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Comoving distance&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span>
<span class="n">L</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">rf</span><span class="s2">&quot;$L = </span><span class="si">{</span><span class="n">L</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">\textrm</span><span class="se">{{</span><span class="s2"> Gpc</span><span class="se">}}</span><span class="s2">/h$&quot;</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span>
<span class="n">Lcorner</span><span class="p">,</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">rf</span><span class="s2">&quot;$L_\textrm</span><span class="se">{{</span><span class="s2">corner</span><span class="se">}}</span><span class="s2"> = </span><span class="si">{</span><span class="n">Lcorner</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">\textrm</span><span class="se">{{</span><span class="s2"> Gpc</span><span class="se">}}</span><span class="s2">/h$&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Annotate key redshifts</span>
<span class="n">d_np</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">value</span>
<span class="n">z_L</span> <span class="o">=</span> <span class="n">zz</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">d_np</span> <span class="o">-</span> <span class="n">L</span><span class="p">))]</span>
<span class="n">z_corner</span> <span class="o">=</span> <span class="n">zz</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">d_np</span> <span class="o">-</span> <span class="n">Lcorner</span><span class="p">))]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">z_L</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">z_corner</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">z_L</span><span class="p">,</span> <span class="mf">1.07</span> <span class="o">*</span> <span class="n">d_np</span><span class="o">.</span><span class="n">max</span><span class="p">(),</span> <span class="sa">rf</span><span class="s2">&quot;$z(L) = </span><span class="si">{</span><span class="n">z_L</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">$&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_TINY</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="n">z_corner</span><span class="p">,</span>
<span class="mf">1.07</span> <span class="o">*</span> <span class="n">d_np</span><span class="o">.</span><span class="n">max</span><span class="p">(),</span>
<span class="sa">rf</span><span class="s2">&quot;$z(\sqrt</span><span class="se">{{</span><span class="s2">3</span><span class="se">}}</span><span class="s2">\,L) = </span><span class="si">{</span><span class="n">z_corner</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">$&quot;</span><span class="p">,</span>
<span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_TINY</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Annotate the selection functions&#39; means</span>
<span class="n">z_means</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">zz</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">d_np</span> <span class="o">-</span> <span class="n">m</span><span class="p">))]</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="n">means_com</span><span class="p">])</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">z_mean</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">z_means</span><span class="p">):</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">z_mean</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="n">z_mean</span> <span class="o">-</span> <span class="mf">0.07</span><span class="p">,</span>
<span class="n">L</span> <span class="o">+</span> <span class="mf">0.2</span><span class="p">,</span>
<span class="sa">rf</span><span class="s2">&quot;$z(\mu_</span><span class="se">{{</span><span class="si">{</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="si">}</span><span class="se">}}</span><span class="s2"> = </span><span class="si">{</span><span class="n">means_com</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">) = </span><span class="si">{</span><span class="n">z_mean</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">$&quot;</span><span class="p">,</span>
<span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_TINY</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">rotation</span><span class="o">=</span><span class="mi">90</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Add labels, legend, and save the figure</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;Redshift $z$&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;Comoving distance [Gpc$/h$]&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;gray&quot;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">selection_functions_z.pdf&quot;</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">selection_functions_z.png&quot;</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">transparent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">if</span> <span class="n">display</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
<div class="viewcode-block" id="redshift_distance_conversion">
<a class="viewcode-back" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.redshift_distance_conversion">[docs]</a>
<span class="k">def</span> <span class="nf">redshift_distance_conversion</span><span class="p">(</span>
<span class="n">zz</span><span class="p">,</span> <span class="n">cosmo</span><span class="p">,</span> <span class="n">means_com</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">Lcorner</span><span class="p">,</span> <span class="n">xx</span><span class="p">,</span> <span class="n">wd</span><span class="p">,</span> <span class="n">colours_list</span><span class="o">=</span><span class="n">COLOUR_LIST</span><span class="p">,</span> <span class="n">display</span><span class="o">=</span><span class="kc">True</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Plot the conversion between comoving distance and redshift; return</span>
<span class="sd"> the redshifts corresponding to the selection functions&#39; means.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> zz : array-like</span>
<span class="sd"> Redshift range for the plot.</span>
<span class="sd"> cosmo : astropy.cosmology object</span>
<span class="sd"> Cosmology instance for calculating comoving distances.</span>
<span class="sd"> means_com : array-like</span>
<span class="sd"> Mean comoving distances of selection functions.</span>
<span class="sd"> L : float</span>
<span class="sd"> Box side length in Gpc/h.</span>
<span class="sd"> Lcorner : float</span>
<span class="sd"> Diagonal of the box (sqrt(3) * L) in Gpc/h.</span>
<span class="sd"> xx : array-like</span>
<span class="sd"> Comoving distances at which to compute redshift.</span>
<span class="sd"> wd : str</span>
<span class="sd"> Working directory for saving figures.</span>
<span class="sd"> colours_list : list</span>
<span class="sd"> List of colours for selection function annotations.</span>
<span class="sd"> display : bool, optional</span>
<span class="sd"> Whether to display the figure. Default is True.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> spline : scipy.interpolate.UnivariateSpline</span>
<span class="sd"> Linear interpolator to convert comoving distances to redshifts.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">scipy.interpolate</span> <span class="kn">import</span> <span class="n">UnivariateSpline</span>
<span class="c1"># Convert comoving distances to redshifts using a linear interpolation</span>
<span class="n">d_np</span> <span class="o">=</span> <span class="p">(</span><span class="n">cosmo</span><span class="o">.</span><span class="n">comoving_distance</span><span class="p">(</span><span class="n">zz</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1e3</span><span class="p">)</span><span class="o">.</span><span class="n">value</span> <span class="c1"># Gpc/h</span>
<span class="n">spline</span> <span class="o">=</span> <span class="n">UnivariateSpline</span><span class="p">(</span><span class="n">d_np</span><span class="p">,</span> <span class="n">zz</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">z_x</span> <span class="o">=</span> <span class="n">spline</span><span class="p">(</span><span class="n">xx</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xx</span><span class="p">,</span> <span class="n">z_x</span><span class="p">)</span>
<span class="c1"># Annotate key scales</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">L</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">rf</span><span class="s2">&quot;$L = </span><span class="si">{</span><span class="n">L</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">\textrm</span><span class="se">{{</span><span class="s2"> Gpc</span><span class="se">}}</span><span class="s2">/h$&quot;</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">spline</span><span class="p">(</span><span class="n">L</span><span class="p">),</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">Lcorner</span><span class="p">,</span>
<span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">rf</span><span class="s2">&quot;$L_\textrm</span><span class="se">{{</span><span class="s2">corner</span><span class="se">}}</span><span class="s2"> = </span><span class="si">{</span><span class="n">Lcorner</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">\textrm</span><span class="se">{{</span><span class="s2"> Gpc</span><span class="se">}}</span><span class="s2">/h$&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">spline</span><span class="p">(</span><span class="n">Lcorner</span><span class="p">),</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">L</span> <span class="o">+</span> <span class="mf">0.08</span><span class="p">,</span> <span class="n">spline</span><span class="p">(</span><span class="n">L</span><span class="p">)</span> <span class="o">-</span> <span class="mf">0.14</span><span class="p">,</span> <span class="sa">rf</span><span class="s2">&quot;$z(L) = </span><span class="si">{</span><span class="n">spline</span><span class="p">(</span><span class="n">L</span><span class="p">)</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">$&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_TINY</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="n">Lcorner</span> <span class="o">-</span> <span class="mf">1.2</span><span class="p">,</span>
<span class="n">spline</span><span class="p">(</span><span class="n">Lcorner</span><span class="p">)</span> <span class="o">-</span> <span class="mf">0.17</span><span class="p">,</span>
<span class="sa">rf</span><span class="s2">&quot;$z(\sqrt</span><span class="se">{{</span><span class="s2">3</span><span class="se">}}</span><span class="s2">\,L) = </span><span class="si">{</span><span class="n">spline</span><span class="p">(</span><span class="n">Lcorner</span><span class="p">)</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">$&quot;</span><span class="p">,</span>
<span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_TINY</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Annotate the selection functions&#39; means</span>
<span class="n">z_means</span> <span class="o">=</span> <span class="n">spline</span><span class="p">(</span><span class="n">means_com</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">z_mean</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">z_means</span><span class="p">):</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">means_com</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axhline</span><span class="p">(</span><span class="n">z_mean</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="n">L</span> <span class="o">+</span> <span class="mf">0.08</span><span class="p">,</span>
<span class="n">z_mean</span> <span class="o">-</span> <span class="mf">0.14</span><span class="p">,</span>
<span class="sa">rf</span><span class="s2">&quot;$z(\mu_</span><span class="se">{{</span><span class="si">{</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="si">}</span><span class="se">}}</span><span class="s2"> = </span><span class="si">{</span><span class="n">means_com</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">) = </span><span class="si">{</span><span class="n">z_mean</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">$&quot;</span><span class="p">,</span>
<span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_TINY</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Add labels, legend, and save the figure</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;Comoving distance [Gpc$/h$]&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;Redshift $z$&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;gray&quot;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">redshift_distance_conversion.pdf&quot;</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
<span class="k">if</span> <span class="n">display</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">return</span> <span class="n">spline</span></div>
<div class="viewcode-block" id="plot_selection_functions_def_in_z">
<a class="viewcode-back" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_selection_functions_def_in_z">[docs]</a>
<span class="k">def</span> <span class="nf">plot_selection_functions_def_in_z</span><span class="p">(</span>
<span class="n">xx_of_zs</span><span class="p">,</span>
<span class="n">res</span><span class="p">,</span>
<span class="n">res_mis</span><span class="p">,</span>
<span class="n">z_means</span><span class="p">,</span>
<span class="n">cosmo</span><span class="p">,</span>
<span class="n">L</span><span class="p">,</span>
<span class="n">stds_z</span><span class="p">,</span>
<span class="n">wd</span><span class="p">,</span>
<span class="n">display</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Plot radial lognormal (in redshift) selection functions against</span>
<span class="sd"> comoving distances.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> xx_of_zs : array-like</span>
<span class="sd"> Comoving distances mapped from redshift.</span>
<span class="sd"> res : list of array-like</span>
<span class="sd"> Selection functions for the well-specified model.</span>
<span class="sd"> res_mis : list of array-like</span>
<span class="sd"> Selection functions for the mis-specified model.</span>
<span class="sd"> z_means : array-like</span>
<span class="sd"> Mean redshifts of every galaxy population.</span>
<span class="sd"> cosmo : object</span>
<span class="sd"> Cosmology object.</span>
<span class="sd"> L : float</span>
<span class="sd"> Box side length in comoving distance units.</span>
<span class="sd"> stds_z : array-like</span>
<span class="sd"> Standard deviations of redshift distributions.</span>
<span class="sd"> wd : str</span>
<span class="sd"> Working directory for saving figures.</span>
<span class="sd"> display : bool, optional</span>
<span class="sd"> Whether to display the figure. Default is True.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">matplotlib.ticker</span> <span class="kn">import</span> <span class="n">FormatStrFormatter</span>
<span class="n">colours_list</span> <span class="o">=</span> <span class="n">COLOUR_LIST</span><span class="p">[:</span> <span class="nb">len</span><span class="p">(</span><span class="n">res</span><span class="p">)]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="c1"># Plot well-specified selection functions</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res</span><span class="p">):</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xx_of_zs</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xx_of_zs</span><span class="p">,</span> <span class="n">res</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Model A&quot;</span><span class="p">)</span>
<span class="c1"># Plot mis-specified selection functions</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">r_mis</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">res_mis</span><span class="p">):</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xx_of_zs</span><span class="p">,</span> <span class="n">r_mis</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xx_of_zs</span><span class="p">,</span> <span class="n">res_mis</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Model B&quot;</span><span class="p">)</span>
<span class="c1"># Define x-ticks and labels</span>
<span class="n">xticks</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">*</span> <span class="n">L</span><span class="p">]</span>
<span class="n">xtick_labels</span> <span class="o">=</span> <span class="p">[</span><span class="sa">r</span><span class="s2">&quot;$0$&quot;</span><span class="p">,</span> <span class="sa">r</span><span class="s2">&quot;$\sqrt 3\,L \simeq </span><span class="si">{:.2f}</span><span class="s2">$&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">*</span> <span class="n">L</span><span class="p">)]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="c1"># Annotate populations</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">mean</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">z_means</span><span class="p">):</span>
<span class="n">std</span> <span class="o">=</span> <span class="n">stds_z</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">mu</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">mean</span><span class="o">**</span><span class="mi">2</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">mean</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">std</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
<span class="n">sig2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">std</span><span class="o">**</span><span class="mi">2</span> <span class="o">/</span> <span class="n">mean</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="n">mode</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">mu</span> <span class="o">-</span> <span class="n">sig2</span><span class="p">)</span>
<span class="n">dmode</span> <span class="o">=</span> <span class="n">cosmo</span><span class="o">.</span><span class="n">comoving_distance</span><span class="p">(</span><span class="n">mode</span><span class="p">)</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="mf">1e3</span>
<span class="n">dmean</span> <span class="o">=</span> <span class="n">cosmo</span><span class="o">.</span><span class="n">comoving_distance</span><span class="p">(</span><span class="n">mean</span><span class="p">)</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="mf">1e3</span>
<span class="n">xticks</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="n">dmean</span><span class="p">])</span>
<span class="n">xtick_labels</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">dmean</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">dmean</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-.&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">dmode</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span>
<span class="n">mode</span><span class="p">,</span>
<span class="n">color</span><span class="o">=</span><span class="n">colours_list</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
<span class="n">alpha</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Population </span><span class="si">{</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Configure axes, labels, ticks, legend</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$r\,[{\rm Gpc}/h]$&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_LARGE</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$R_i(r)$&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_LARGE</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xticks</span><span class="p">(</span><span class="n">xticks</span><span class="p">,</span> <span class="n">xtick_labels</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <span class="n">which</span><span class="o">=</span><span class="s2">&quot;major&quot;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">labelsize</span><span class="o">=</span><span class="n">GLOBAL_FS_SMALL</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s2">&quot;y&quot;</span><span class="p">,</span> <span class="n">which</span><span class="o">=</span><span class="s2">&quot;major&quot;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">labelsize</span><span class="o">=</span><span class="n">GLOBAL_FS_SMALL</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="s2">&quot;both&quot;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">0.4</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;gray&quot;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">maxs</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">res</span><span class="p">]</span>
<span class="n">yticks</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">maxs</span>
<span class="n">plt</span><span class="o">.</span><span class="n">yticks</span><span class="p">(</span><span class="n">yticks</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">gca</span><span class="p">()</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_major_formatter</span><span class="p">(</span><span class="n">FormatStrFormatter</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%.2f</span><span class="s2">&quot;</span><span class="p">))</span>
<span class="n">legend</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">frameon</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">loc</span><span class="o">=</span><span class="s2">&quot;upper right&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">GLOBAL_FS_LARGE</span><span class="p">)</span>
<span class="n">legend</span><span class="o">.</span><span class="n">get_frame</span><span class="p">()</span><span class="o">.</span><span class="n">set_edgecolor</span><span class="p">(</span><span class="s2">&quot;white&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">lh</span> <span class="ow">in</span> <span class="n">legend</span><span class="o">.</span><span class="n">legend_handles</span><span class="p">:</span>
<span class="n">lh</span><span class="o">.</span><span class="n">set_alpha</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">selection_functions_com.pdf&quot;</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
<span class="k">if</span> <span class="n">display</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
<div class="viewcode-block" id="plot_galaxy_field_slice">
<a class="viewcode-back" href="../../../selfisys.utils.html#selfisys.utils.plot_examples.plot_galaxy_field_slice">[docs]</a>
<span class="k">def</span> <span class="nf">plot_galaxy_field_slice</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">wd</span><span class="p">,</span> <span class="n">id_obs</span><span class="p">,</span> <span class="n">limits</span><span class="o">=</span><span class="s2">&quot;minmax&quot;</span><span class="p">,</span> <span class="n">display</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Plot a 2D slice of the observed field.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> g : ndarray</span>
<span class="sd"> 2D array representing the observed field slice.</span>
<span class="sd"> size : int</span>
<span class="sd"> Number of grid points along each axis.</span>
<span class="sd"> L : float</span>
<span class="sd"> Size of the simulation box (in Mpc/h).</span>
<span class="sd"> wd : str</span>
<span class="sd"> Working directory for saving output files.</span>
<span class="sd"> id_obs : int or str</span>
<span class="sd"> Identifier for the observation, used in file naming.</span>
<span class="sd"> limits : str, optional</span>
<span class="sd"> Colormap scaling method. Options: &#39;minmax&#39;, &#39;truncate&#39;, &#39;max&#39;.</span>
<span class="sd"> display : bool, optional</span>
<span class="sd"> Whether to display the figure. Default is True.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">mpl_toolkits.axes_grid1</span> <span class="kn">import</span> <span class="n">make_axes_locatable</span>
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">colors</span>
<span class="c1"># Define colormap and set scaling limits</span>
<span class="n">GalaxyMap</span> <span class="o">=</span> <span class="n">create_colormap</span><span class="p">(</span><span class="s2">&quot;GalaxyMap&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">limits</span> <span class="o">==</span> <span class="s2">&quot;max&quot;</span><span class="p">:</span>
<span class="n">maxcol</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">g</span><span class="p">))</span>
<span class="n">mincol</span> <span class="o">=</span> <span class="o">-</span><span class="n">maxcol</span>
<span class="n">cmap</span> <span class="o">=</span> <span class="n">GalaxyMap</span>
<span class="k">elif</span> <span class="n">limits</span> <span class="o">==</span> <span class="s2">&quot;truncate&quot;</span><span class="p">:</span>
<span class="n">maxcol</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="o">-</span><span class="n">g</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">g</span><span class="p">)])</span>
<span class="n">mincol</span> <span class="o">=</span> <span class="o">-</span><span class="n">maxcol</span>
<span class="n">cmap</span> <span class="o">=</span> <span class="s2">&quot;PiYG&quot;</span>
<span class="k">elif</span> <span class="n">limits</span> <span class="o">==</span> <span class="s2">&quot;minmax&quot;</span><span class="p">:</span>
<span class="n">maxcol</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">g</span><span class="p">)</span>
<span class="n">mincol</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">g</span><span class="p">)</span>
<span class="n">cmap</span> <span class="o">=</span> <span class="n">GalaxyMap</span>
<span class="n">divnorm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">TwoSlopeNorm</span><span class="p">(</span><span class="n">vmin</span><span class="o">=</span><span class="n">mincol</span><span class="p">,</span> <span class="n">vcenter</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="n">maxcol</span><span class="p">)</span>
<span class="c1"># Plot</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">im</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">norm</span><span class="o">=</span><span class="n">divnorm</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">cmap</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">invert_yaxis</span><span class="p">()</span> <span class="c1"># Place origin at bottom-left</span>
<span class="n">ax</span><span class="o">.</span><span class="n">spines</span><span class="p">[[</span><span class="s2">&quot;top&quot;</span><span class="p">,</span> <span class="s2">&quot;right&quot;</span><span class="p">,</span> <span class="s2">&quot;left&quot;</span><span class="p">,</span> <span class="s2">&quot;bottom&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
<span class="n">divider</span> <span class="o">=</span> <span class="n">make_axes_locatable</span><span class="p">(</span><span class="n">ax</span><span class="p">)</span>
<span class="n">cax</span> <span class="o">=</span> <span class="n">divider</span><span class="o">.</span><span class="n">append_axes</span><span class="p">(</span><span class="s2">&quot;right&quot;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="s2">&quot;5%&quot;</span><span class="p">,</span> <span class="n">pad</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>
<span class="n">cbar</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">im</span><span class="p">,</span> <span class="n">cax</span><span class="o">=</span><span class="n">cax</span><span class="p">)</span>
<span class="n">cbar</span><span class="o">.</span><span class="n">outline</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
<span class="n">ticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">mincol</span><span class="p">,</span> <span class="n">mincol</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">maxcol</span> <span class="o">/</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">maxcol</span> <span class="o">/</span> <span class="mi">3</span><span class="p">,</span> <span class="n">maxcol</span><span class="p">]</span>
<span class="n">cbar</span><span class="o">.</span><span class="n">set_ticks</span><span class="p">(</span><span class="n">ticks</span><span class="p">)</span>
<span class="n">cbar</span><span class="o">.</span><span class="n">set_ticklabels</span><span class="p">([</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">x</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">ticks</span><span class="p">],</span> <span class="n">size</span><span class="o">=</span><span class="n">GLOBAL_FS_SMALL</span><span class="p">)</span>
<span class="n">cbar</span><span class="o">.</span><span class="n">set_label</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$\delta_\textrm</span><span class="si">{g}</span><span class="s2">$&quot;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">GLOBAL_FS</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xticks</span><span class="p">(</span>
<span class="p">[</span><span class="n">size</span> <span class="o">*</span> <span class="n">i</span> <span class="o">/</span> <span class="mf">4.0</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)],</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">L</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1e-3</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">4</span><span class="si">:</span><span class="s2">.1f</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)]</span>
<span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_yticks</span><span class="p">(</span>
<span class="p">[</span><span class="n">size</span> <span class="o">*</span> <span class="n">i</span> <span class="o">/</span> <span class="mf">4.0</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)],</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">L</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1e-3</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">4</span><span class="si">:</span><span class="s2">.1f</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)]</span>
<span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;Gpc/$h$&quot;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">GLOBAL_FS</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;Gpc/$h$&quot;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">GLOBAL_FS</span><span class="p">)</span>
<span class="c1"># Save or display</span>
<span class="k">if</span> <span class="n">display</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">Figures/g_</span><span class="si">{</span><span class="n">id_obs</span><span class="si">}</span><span class="s2">.png&quot;</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">Figures/g_</span><span class="si">{</span><span class="n">id_obs</span><span class="si">}</span><span class="s2">.pdf&quot;</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">&quot;tight&quot;</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, Tristan Hoellinger.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>