mirror of
https://github.com/hoellin/selfisys_public.git
synced 2025-06-07 00:21:12 +00:00
1028 lines
No EOL
116 KiB
HTML
1028 lines
No EOL
116 KiB
HTML
|
|
|
|
<!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.prior — 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.prior</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.prior</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">"Tristan Hoellinger"</span>
|
|
<span class="n">__version__</span> <span class="o">=</span> <span class="s2">"0.1.0"</span>
|
|
<span class="n">__date__</span> <span class="o">=</span> <span class="s2">"2024"</span>
|
|
<span class="n">__license__</span> <span class="o">=</span> <span class="s2">"GPLv3"</span>
|
|
|
|
<span class="sd">"""</span>
|
|
<span class="sd">Priors for the SelfiSys pipeline. This module provides:</span>
|
|
<span class="sd">- a Planck2018-based prior class (`planck_prior`) compatible with</span>
|
|
<span class="sd">pySelfi, adapted for the logic of the SelfiSys pipeline;</span>
|
|
<span class="sd">- wrappers for the selfi2019 prior from [leclercq2019primordial].</span>
|
|
|
|
|
|
<span class="sd">Raises</span>
|
|
<span class="sd">------</span>
|
|
<span class="sd">OSError</span>
|
|
<span class="sd"> If file or directory paths are inaccessible.</span>
|
|
<span class="sd">RuntimeError</span>
|
|
<span class="sd"> If unexpected HPC or multi-processing errors arise.</span>
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">gc</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">selfisys.utils.logger</span> <span class="kn">import</span> <span class="n">getCustomLogger</span>
|
|
|
|
<span class="n">logger</span> <span class="o">=</span> <span class="n">getCustomLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
|
|
|
|
|
|
<div class="viewcode-block" id="get_summary">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.get_summary">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">get_summary</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">bins</span><span class="p">,</span> <span class="n">normalisation</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">kmax</span><span class="o">=</span><span class="mf">1.4</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Compute a power-spectrum summary for given cosmological parameters.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> x : array-like</span>
|
|
<span class="sd"> Cosmological parameters [h, Omega_b, Omega_m, n_s, sigma_8].</span>
|
|
<span class="sd"> bins : array-like</span>
|
|
<span class="sd"> Wavenumber bins.</span>
|
|
<span class="sd"> normalisation : float or None, optional</span>
|
|
<span class="sd"> Normalisation constant to scale the resulting spectrum.</span>
|
|
<span class="sd"> kmax : float, optional</span>
|
|
<span class="sd"> Maximum wavenumber for get_Pk.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> theta : ndarray</span>
|
|
<span class="sd"> The computed power-spectrum values, optionally normalised.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> RuntimeError</span>
|
|
<span class="sd"> If the power-spectrum computation fails unexpectedly.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">array</span>
|
|
<span class="kn">from</span> <span class="nn">pysbmy.power</span> <span class="kn">import</span> <span class="n">get_Pk</span>
|
|
<span class="kn">from</span> <span class="nn">selfisys.utils.tools</span> <span class="kn">import</span> <span class="n">cosmo_vector_to_Simbelmyne_dict</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">theta</span> <span class="o">=</span> <span class="n">get_Pk</span><span class="p">(</span><span class="n">bins</span><span class="p">,</span> <span class="n">cosmo_vector_to_Simbelmyne_dict</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">kmax</span><span class="o">=</span><span class="n">kmax</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="n">normalisation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">theta</span> <span class="o">/=</span> <span class="n">normalisation</span>
|
|
<span class="k">return</span> <span class="n">array</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s2">"Unexpected error in get_summary: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Failed to compute power spectrum summary."</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
|
|
|
|
|
|
|
|
<div class="viewcode-block" id="worker_class">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.worker_class">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">worker_class</span><span class="p">(</span><span class="n">params</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Worker function to compute power spectra with CLASS, compatible with</span>
|
|
<span class="sd"> Python multiprocessing.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> params : tuple</span>
|
|
<span class="sd"> (x, bins, normalisation, kmax) where x is an array-like of</span>
|
|
<span class="sd"> cosmological parameters, bins is the wavenumber array,</span>
|
|
<span class="sd"> normalisation is a float or None, and kmax is a float.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> theta : ndarray</span>
|
|
<span class="sd"> Power-spectrum summary from `get_summary`.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">x</span><span class="p">,</span> <span class="n">bins</span><span class="p">,</span> <span class="n">normalisation</span><span class="p">,</span> <span class="n">kmax</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">return</span> <span class="n">get_summary</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">bins</span><span class="p">,</span> <span class="n">normalisation</span><span class="p">,</span> <span class="n">kmax</span><span class="p">)</span></div>
|
|
|
|
|
|
|
|
<div class="viewcode-block" id="planck_prior">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.planck_prior">[docs]</a>
|
|
<span class="k">class</span> <span class="nc">planck_prior</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Custom prior for the SelfiSys pipeline. This is the prior used in</span>
|
|
<span class="sd"> [hoellinger2024diagnosing], based on the Planck 2018 cosmological</span>
|
|
<span class="sd"> parameters.</span>
|
|
|
|
<span class="sd"> This class provides methods to compute a power-spectrum prior from a</span>
|
|
<span class="sd"> prior distribution of cosmological parameters, using a Gaussian fit.</span>
|
|
<span class="sd"> See equation (7) in [hoellinger2024diagnosing].</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> Omega_mean : array-like</span>
|
|
<span class="sd"> Mean of the prior distribution on cosmological parameters.</span>
|
|
<span class="sd"> Omega_cov : array-like</span>
|
|
<span class="sd"> Covariance matrix of the prior distribution on cosmological</span>
|
|
<span class="sd"> parameters.</span>
|
|
<span class="sd"> bins : array-like</span>
|
|
<span class="sd"> Wavenumbers where the power spectrum is evaluated.</span>
|
|
<span class="sd"> normalisation : float or None</span>
|
|
<span class="sd"> If not None, divide the power spectra by the normalisation.</span>
|
|
<span class="sd"> kmax : float</span>
|
|
<span class="sd"> Maximum wavenumber for computations.</span>
|
|
<span class="sd"> nsamples : int, optional</span>
|
|
<span class="sd"> Number of samples drawn from the prior on the cosmological</span>
|
|
<span class="sd"> parameters. Default is 10,000.</span>
|
|
<span class="sd"> nthreads : int, optional</span>
|
|
<span class="sd"> Number of CPU threads for parallel tasks. Default is -1, that</span>
|
|
<span class="sd"> is, auto-detect the number of available threads.</span>
|
|
<span class="sd"> EPS_K : float, optional</span>
|
|
<span class="sd"> Regularisation parameter for covariance inversion. Default 1e-7.</span>
|
|
<span class="sd"> EPS_residual : float, optional</span>
|
|
<span class="sd"> Additional cutoff for matrix inversion. Default 1e-3.</span>
|
|
<span class="sd"> filename : str or None, optional</span>
|
|
<span class="sd"> Path to a .npy file to store or load precomputed power spectra.</span>
|
|
|
|
<span class="sd"> Attributes</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> mean : ndarray</span>
|
|
<span class="sd"> Mean of the computed power spectra.</span>
|
|
<span class="sd"> covariance : ndarray</span>
|
|
<span class="sd"> Covariance matrix of the computed power spectra.</span>
|
|
<span class="sd"> inv_covariance : ndarray</span>
|
|
<span class="sd"> Inverse of the covariance matrix.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> OSError</span>
|
|
<span class="sd"> If file reading or writing fails.</span>
|
|
<span class="sd"> RuntimeError</span>
|
|
<span class="sd"> For unexpected HPC or multi-processing errors.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">Omega_mean</span><span class="p">,</span>
|
|
<span class="n">Omega_cov</span><span class="p">,</span>
|
|
<span class="n">bins</span><span class="p">,</span>
|
|
<span class="n">normalisation</span><span class="p">,</span>
|
|
<span class="n">kmax</span><span class="p">,</span>
|
|
<span class="n">nsamples</span><span class="o">=</span><span class="mi">10000</span><span class="p">,</span>
|
|
<span class="n">nthreads</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">EPS_K</span><span class="o">=</span><span class="mf">1e-7</span><span class="p">,</span>
|
|
<span class="n">EPS_residual</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">,</span>
|
|
<span class="n">filename</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">where</span>
|
|
<span class="kn">from</span> <span class="nn">multiprocessing</span> <span class="kn">import</span> <span class="n">cpu_count</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">Omega_mean</span> <span class="o">=</span> <span class="n">Omega_mean</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">Omega_cov</span> <span class="o">=</span> <span class="n">Omega_cov</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">bins</span> <span class="o">=</span> <span class="n">bins</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">normalisation</span> <span class="o">=</span> <span class="n">normalisation</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">kmax</span> <span class="o">=</span> <span class="n">kmax</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">nsamples</span> <span class="o">=</span> <span class="n">nsamples</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">EPS_K</span> <span class="o">=</span> <span class="n">EPS_K</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">EPS_residual</span> <span class="o">=</span> <span class="n">EPS_residual</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">filename</span>
|
|
|
|
<span class="k">if</span> <span class="n">nthreads</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
<span class="c1"># Use #CPU - 1 or fallback to 1 if a single CPU is available</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">nthreads</span> <span class="o">=</span> <span class="n">cpu_count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span> <span class="ow">or</span> <span class="mi">1</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">nthreads</span> <span class="o">=</span> <span class="n">nthreads</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_Nbin_min</span> <span class="o">=</span> <span class="n">where</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bins</span> <span class="o">>=</span> <span class="mf">0.01</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_Nbin_max</span> <span class="o">=</span> <span class="n">where</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bins</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">kmax</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">max</span><span class="p">()</span> <span class="o">+</span> <span class="mi">1</span>
|
|
|
|
<span class="c1"># Attributes set after compute()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">covariance</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">inv_covariance</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">thetas</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span> <span class="nf">Nbin_min</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k_min</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Index of the minimal wavenumber given k_min."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Nbin_min</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span> <span class="nf">Nbin_max</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k_min</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Index of the maximal wavenumber given self.kmax."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Nbin_max</span>
|
|
|
|
<div class="viewcode-block" id="planck_prior.compute">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.planck_prior.compute">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">compute</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Compute the prior (mean, covariance, and inverse covariance).</span>
|
|
|
|
<span class="sd"> If `self.filename` exists, tries to load the prior. Otherwise,</span>
|
|
<span class="sd"> samples from the prior distribution on cosmological parameters</span>
|
|
<span class="sd"> and evaluates the power spectra in parallel.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> OSError</span>
|
|
<span class="sd"> If self.filename is not writable/accessible.</span>
|
|
<span class="sd"> RuntimeError</span>
|
|
<span class="sd"> If multi-processing or power-spectra computations fail.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">os.path</span> <span class="kn">import</span> <span class="n">exists</span>
|
|
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="ow">and</span> <span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">):</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Loading precomputed thetas from </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">thetas</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">time</span>
|
|
<span class="kn">from</span> <span class="nn">multiprocessing</span> <span class="kn">import</span> <span class="n">Pool</span>
|
|
<span class="kn">import</span> <span class="nn">tqdm.auto</span> <span class="k">as</span> <span class="nn">tqdm</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Sampling </span><span class="si">%d</span><span class="s2"> cosmological parameter sets..."</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">nsamples</span><span class="p">)</span>
|
|
<span class="n">OO</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">multivariate_normal</span><span class="p">(</span>
|
|
<span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Omega_mean</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Omega_cov</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">nsamples</span>
|
|
<span class="p">)</span>
|
|
<span class="n">eps</span> <span class="o">=</span> <span class="mf">1e-5</span>
|
|
<span class="n">OO</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">OO</span><span class="p">,</span> <span class="n">eps</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">eps</span><span class="p">)</span>
|
|
|
|
<span class="n">liste</span> <span class="o">=</span> <span class="p">[(</span><span class="n">o</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bins</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalisation</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">kmax</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">OO</span><span class="p">]</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
|
|
<span class="s2">"Computing prior power spectra in parallel using </span><span class="si">%d</span><span class="s2"> threads..."</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">nthreads</span>
|
|
<span class="p">)</span>
|
|
<span class="n">start</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
|
<span class="k">with</span> <span class="n">Pool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nthreads</span><span class="p">)</span> <span class="k">as</span> <span class="n">pool</span><span class="p">:</span>
|
|
<span class="n">thetas</span> <span class="o">=</span> <span class="p">[]</span>
|
|
<span class="k">for</span> <span class="n">theta</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="o">.</span><span class="n">tqdm</span><span class="p">(</span><span class="n">pool</span><span class="o">.</span><span class="n">imap</span><span class="p">(</span><span class="n">worker_class</span><span class="p">,</span> <span class="n">liste</span><span class="p">),</span> <span class="n">total</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">liste</span><span class="p">)):</span>
|
|
<span class="n">thetas</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span>
|
|
<span class="n">thetas</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">thetas</span><span class="p">)</span>
|
|
<span class="n">end</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Done computing power spectra in </span><span class="si">%.2f</span><span class="s2"> seconds."</span><span class="p">,</span> <span class="n">end</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">thetas</span> <span class="o">=</span> <span class="n">thetas</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Saving thetas to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
|
|
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">,</span> <span class="n">thetas</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Compute stats</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">thetas</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">covariance</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cov</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">thetas</span><span class="o">.</span><span class="n">T</span><span class="p">)</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Regularising and inverting the prior covariance matrix."</span><span class="p">)</span>
|
|
<span class="kn">from</span> <span class="nn">pyselfi.utils</span> <span class="kn">import</span> <span class="n">regular_inv</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">inv_covariance</span> <span class="o">=</span> <span class="n">regular_inv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">covariance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EPS_K</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EPS_residual</span><span class="p">)</span>
|
|
|
|
<span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"File I/O error: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s2">"Error during prior computation: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"planck_prior computation failed."</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="planck_prior.logpdf">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.planck_prior.logpdf">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">logpdf</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">,</span> <span class="n">theta_mean</span><span class="p">,</span> <span class="n">theta_covariance</span><span class="p">,</span> <span class="n">theta_icov</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Return the log prior probability at a given point in parameter</span>
|
|
<span class="sd"> space.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> theta : ndarray</span>
|
|
<span class="sd"> Evaluation point in parameter space.</span>
|
|
<span class="sd"> theta_mean : ndarray</span>
|
|
<span class="sd"> Prior mean vector.</span>
|
|
<span class="sd"> theta_covariance : ndarray</span>
|
|
<span class="sd"> Prior covariance matrix.</span>
|
|
<span class="sd"> theta_icov : ndarray</span>
|
|
<span class="sd"> Inverse of the prior covariance matrix.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> float</span>
|
|
<span class="sd"> Log prior probability value.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
|
|
<span class="n">diff</span> <span class="o">=</span> <span class="n">theta</span> <span class="o">-</span> <span class="n">theta_mean</span>
|
|
<span class="n">val</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.5</span> <span class="o">*</span> <span class="n">diff</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">theta_icov</span><span class="p">)</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">diff</span><span class="p">)</span>
|
|
<span class="n">val</span> <span class="o">-=</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">slogdet</span><span class="p">(</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">theta_covariance</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="n">val</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="planck_prior.sample">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.planck_prior.sample">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">seedsample</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a random sample from the prior distribution.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> seedsample : int, optional</span>
|
|
<span class="sd"> Seed for the random number generator.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> ndarray</span>
|
|
<span class="sd"> A single sample from the prior distribution.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">numpy.random</span> <span class="kn">import</span> <span class="n">seed</span><span class="p">,</span> <span class="n">multivariate_normal</span>
|
|
|
|
<span class="k">if</span> <span class="n">seedsample</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">seed</span><span class="p">(</span><span class="n">seedsample</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">multivariate_normal</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mean</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">covariance</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="planck_prior.save">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.planck_prior.save">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fname</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Save the prior to an output file.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> fname : str</span>
|
|
<span class="sd"> Output HDF5 filename to store the prior data.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> OSError</span>
|
|
<span class="sd"> If the file cannot be accessed or written.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">import</span> <span class="nn">h5py</span>
|
|
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">c_double</span>
|
|
<span class="kn">from</span> <span class="nn">pyselfi.utils</span> <span class="kn">import</span> <span class="n">PrintMessage</span><span class="p">,</span> <span class="n">save_replace_dataset</span><span class="p">,</span> <span class="n">save_replace_attr</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">PrintMessage</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Writing prior in data file '</span><span class="si">{</span><span class="n">fname</span><span class="si">}</span><span class="s2">'..."</span><span class="p">)</span>
|
|
<span class="k">with</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="n">fname</span><span class="p">,</span> <span class="s2">"r+"</span><span class="p">)</span> <span class="k">as</span> <span class="n">hf</span><span class="p">:</span>
|
|
|
|
<span class="k">def</span> <span class="nf">save_to_hf</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="n">save_replace_dataset</span><span class="p">(</span><span class="n">hf</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"/prior/</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Hyperparameters</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"thetas"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">thetas</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"Omega_mean"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Omega_mean</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,))</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"Omega_cov"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Omega_cov</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"bins"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bins</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,))</span>
|
|
|
|
<span class="n">save_replace_attr</span><span class="p">(</span><span class="n">hf</span><span class="p">,</span> <span class="s2">"/prior/normalisation"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalisation</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
<span class="n">save_replace_attr</span><span class="p">(</span><span class="n">hf</span><span class="p">,</span> <span class="s2">"/prior/kmax"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">kmax</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Mandatory attributes</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"mean"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mean</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,))</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"covariance"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">covariance</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
|
<span class="n">save_to_hf</span><span class="p">(</span><span class="s2">"inv_covariance"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inv_covariance</span><span class="p">,</span> <span class="n">maxshape</span><span class="o">=</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
|
|
|
<span class="n">PrintMessage</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Writing prior in data file '</span><span class="si">{</span><span class="n">fname</span><span class="si">}</span><span class="s2">' done."</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Failed to save prior to '</span><span class="si">%s</span><span class="s2">': </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">fname</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="planck_prior.load">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.planck_prior.load">[docs]</a>
|
|
<span class="nd">@classmethod</span>
|
|
<span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">fname</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Load the prior from input file.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> fname : str</span>
|
|
<span class="sd"> Input HDF5 filename.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> prior</span>
|
|
<span class="sd"> The prior object.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> OSError</span>
|
|
<span class="sd"> If the file cannot be read or is invalid.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">h5py</span> <span class="kn">import</span> <span class="n">File</span>
|
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">array</span>
|
|
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">c_double</span>
|
|
<span class="kn">from</span> <span class="nn">pyselfi.utils</span> <span class="kn">import</span> <span class="n">PrintMessage</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">PrintMessage</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Reading prior in data file '</span><span class="si">{</span><span class="n">fname</span><span class="si">}</span><span class="s2">'..."</span><span class="p">)</span>
|
|
<span class="k">with</span> <span class="n">File</span><span class="p">(</span><span class="n">fname</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">hf</span><span class="p">:</span>
|
|
<span class="c1"># Load constructor parameters</span>
|
|
<span class="n">Omega_mean</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">hf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/prior/Omega_mean"</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
<span class="n">Omega_cov</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">hf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/prior/Omega_cov"</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
<span class="n">bins</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">hf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/prior/bins"</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
<span class="n">normalisation</span> <span class="o">=</span> <span class="n">hf</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"/prior/normalisation"</span><span class="p">]</span>
|
|
<span class="n">kmax</span> <span class="o">=</span> <span class="n">hf</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"/prior/kmax"</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Instantiate class</span>
|
|
<span class="n">prior</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span><span class="n">Omega_mean</span><span class="p">,</span> <span class="n">Omega_cov</span><span class="p">,</span> <span class="n">bins</span><span class="p">,</span> <span class="n">normalisation</span><span class="p">,</span> <span class="n">kmax</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Load mandatory arrays</span>
|
|
<span class="n">prior</span><span class="o">.</span><span class="n">mean</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">hf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prior/mean"</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
<span class="n">prior</span><span class="o">.</span><span class="n">covariance</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">hf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/prior/covariance"</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
<span class="n">prior</span><span class="o">.</span><span class="n">inv_covariance</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">hf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/prior/inv_covariance"</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">c_double</span><span class="p">)</span>
|
|
|
|
<span class="n">PrintMessage</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Reading prior in data file '</span><span class="si">{</span><span class="n">fname</span><span class="si">}</span><span class="s2">' done."</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">prior</span>
|
|
<span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Failed to read prior from '</span><span class="si">%s</span><span class="s2">': </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">fname</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="viewcode-block" id="logposterior_hyperparameters_parallel">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.logposterior_hyperparameters_parallel">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">logposterior_hyperparameters_parallel</span><span class="p">(</span>
|
|
<span class="n">selfi</span><span class="p">,</span>
|
|
<span class="n">theta_fiducial</span><span class="p">,</span>
|
|
<span class="n">Nbin_min</span><span class="p">,</span>
|
|
<span class="n">Nbin_max</span><span class="p">,</span>
|
|
<span class="n">theta_norm</span><span class="p">,</span>
|
|
<span class="n">k_corr</span><span class="p">,</span>
|
|
<span class="n">alpha_cv</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Compute the log-posterior for the hyperparameters of the prior from</span>
|
|
<span class="sd"> [leclercq2019primordial], for use within the SelfiSys pipeline.</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> selfi : object</span>
|
|
<span class="sd"> The selfi object.</span>
|
|
<span class="sd"> theta_fiducial : ndarray</span>
|
|
<span class="sd"> Fiducial spectrum.</span>
|
|
<span class="sd"> Nbin_min : int</span>
|
|
<span class="sd"> Minimum bin index for the wavenumber range.</span>
|
|
<span class="sd"> Nbin_max : int</span>
|
|
<span class="sd"> Maximum bin index for the wavenumber range.</span>
|
|
<span class="sd"> theta_norm : float</span>
|
|
<span class="sd"> Hyperparameter controlling the overall uncertainty.</span>
|
|
<span class="sd"> k_corr : float</span>
|
|
<span class="sd"> Hyperparameter controlling correlation scale.</span>
|
|
<span class="sd"> alpha_cv : float</span>
|
|
<span class="sd"> Cosmic variance strength.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> float</span>
|
|
<span class="sd"> The log-posterior value for the given hyperparameters.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> RuntimeError</span>
|
|
<span class="sd"> If the log-posterior computation fails unexpectedly.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">selfi</span><span class="o">.</span><span class="n">logposterior_hyperparameters</span><span class="p">(</span>
|
|
<span class="n">theta_fiducial</span><span class="p">,</span> <span class="n">Nbin_min</span><span class="p">,</span> <span class="n">Nbin_max</span><span class="p">,</span> <span class="n">theta_norm</span><span class="p">,</span> <span class="n">k_corr</span><span class="p">,</span> <span class="n">alpha_cv</span>
|
|
<span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s2">"Unexpected error in logposterior_hyperparameters_parallel: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"logposterior_hyperparameters_parallel failed."</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
|
|
|
|
|
|
|
|
<div class="viewcode-block" id="perform_prior_optimisation_and_plot">
|
|
<a class="viewcode-back" href="../../selfisys.prior.html#selfisys.prior.perform_prior_optimisation_and_plot">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">perform_prior_optimisation_and_plot</span><span class="p">(</span>
|
|
<span class="n">selfi</span><span class="p">,</span>
|
|
<span class="n">theta_fiducial</span><span class="p">,</span>
|
|
<span class="n">theta_norm_mean</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
|
|
<span class="n">theta_norm_std</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span>
|
|
<span class="n">k_corr_mean</span><span class="o">=</span><span class="mf">0.020</span><span class="p">,</span>
|
|
<span class="n">k_corr_std</span><span class="o">=</span><span class="mf">0.015</span><span class="p">,</span>
|
|
<span class="n">k_opt_min</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
|
|
<span class="n">k_opt_max</span><span class="o">=</span><span class="mf">1.4</span><span class="p">,</span>
|
|
<span class="n">theta_norm_min</span><span class="o">=</span><span class="mf">0.04</span><span class="p">,</span>
|
|
<span class="n">theta_norm_max</span><span class="o">=</span><span class="mf">0.12</span><span class="p">,</span>
|
|
<span class="n">k_corr_min</span><span class="o">=</span><span class="mf">0.012</span><span class="p">,</span>
|
|
<span class="n">k_corr_max</span><span class="o">=</span><span class="mf">0.02</span><span class="p">,</span>
|
|
<span class="n">meshsize</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span>
|
|
<span class="n">Nbin_min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">Nbin_max</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
<span class="n">theta_norm</span><span class="o">=</span><span class="mf">0.05</span><span class="p">,</span>
|
|
<span class="n">k_corr</span><span class="o">=</span><span class="mf">0.015</span><span class="p">,</span>
|
|
<span class="n">alpha_cv</span><span class="o">=</span><span class="mf">0.00065</span><span class="p">,</span>
|
|
<span class="n">plot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
<span class="n">savepath</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Optimise the hyperparameters for the selfi2019 prior (from</span>
|
|
<span class="sd"> [leclercq2019primordial]).</span>
|
|
|
|
<span class="sd"> Parameters</span>
|
|
<span class="sd"> ----------</span>
|
|
<span class="sd"> selfi : object</span>
|
|
<span class="sd"> The selfi object.</span>
|
|
<span class="sd"> theta_fiducial : ndarray</span>
|
|
<span class="sd"> Fiducial spectrum.</span>
|
|
<span class="sd"> theta_norm_mean : float, optional</span>
|
|
<span class="sd"> Mean of the Gaussian hyperprior on theta_norm. Default 0.1.</span>
|
|
<span class="sd"> theta_norm_std : float, optional</span>
|
|
<span class="sd"> Standard deviation of the hyperprior on theta_norm. Default 0.3.</span>
|
|
<span class="sd"> k_corr_mean : float, optional</span>
|
|
<span class="sd"> Mean of the Gaussian hyperprior on k_corr. Default 0.020.</span>
|
|
<span class="sd"> k_corr_std : float, optional</span>
|
|
<span class="sd"> Standard deviation of the hyperprior on k_corr. Default 0.015.</span>
|
|
<span class="sd"> k_opt_min : float, optional</span>
|
|
<span class="sd"> Minimum wavenumber for the prior optimisation. Default 0.0.</span>
|
|
<span class="sd"> k_opt_max : float, optional</span>
|
|
<span class="sd"> Maximum wavenumber for the prior optimisation. Default 1.4.</span>
|
|
<span class="sd"> theta_norm_min : float, optional</span>
|
|
<span class="sd"> Lower bound for theta_norm in the mesh. Default 0.04.</span>
|
|
<span class="sd"> theta_norm_max : float, optional</span>
|
|
<span class="sd"> Upper bound for theta_norm in the mesh. Default 0.12.</span>
|
|
<span class="sd"> k_corr_min : float, optional</span>
|
|
<span class="sd"> Lower bound for k_corr in the mesh. Default 0.012.</span>
|
|
<span class="sd"> k_corr_max : float, optional</span>
|
|
<span class="sd"> Upper bound for k_corr in the mesh. Default 0.02.</span>
|
|
<span class="sd"> meshsize : int, optional</span>
|
|
<span class="sd"> Number of points in each dimension of the plot mesh. Default 30.</span>
|
|
<span class="sd"> Nbin_min : int, optional</span>
|
|
<span class="sd"> Minimum bin index for restricting the prior. Default 0.</span>
|
|
<span class="sd"> Nbin_max : int, optional</span>
|
|
<span class="sd"> Maximum bin index for restricting the prior. Default 100.</span>
|
|
<span class="sd"> theta_norm : float, optional</span>
|
|
<span class="sd"> Initial or default guess of theta_norm. Default 0.05.</span>
|
|
<span class="sd"> k_corr : float, optional</span>
|
|
<span class="sd"> Initial or default guess of k_corr. Default 0.015.</span>
|
|
<span class="sd"> alpha_cv : float, optional</span>
|
|
<span class="sd"> Cosmic variance term or similar. Default 0.00065.</span>
|
|
<span class="sd"> plot : bool, optional</span>
|
|
<span class="sd"> If True, generate and show/save a 2D contour plot. Default True.</span>
|
|
<span class="sd"> savepath : str, optional</span>
|
|
<span class="sd"> File path to save the plot. If None, the plot is displayed.</span>
|
|
|
|
<span class="sd"> Returns</span>
|
|
<span class="sd"> -------</span>
|
|
<span class="sd"> tuple</span>
|
|
<span class="sd"> (theta_norm, k_corr) after optimisation.</span>
|
|
|
|
<span class="sd"> Raises</span>
|
|
<span class="sd"> ------</span>
|
|
<span class="sd"> OSError</span>
|
|
<span class="sd"> If file operations fail during saving the prior or posterior.</span>
|
|
<span class="sd"> RuntimeError</span>
|
|
<span class="sd"> If the optimisation fails unexpectedly.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">plot</span><span class="p">:</span>
|
|
<span class="kn">from</span> <span class="nn">selfisys.utils.plot_utils</span> <span class="kn">import</span> <span class="n">get_contours</span>
|
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">meshgrid</span><span class="p">,</span> <span class="n">linspace</span><span class="p">,</span> <span class="n">zeros</span><span class="p">,</span> <span class="n">exp</span><span class="p">,</span> <span class="n">array</span>
|
|
<span class="kn">from</span> <span class="nn">joblib</span> <span class="kn">import</span> <span class="n">Parallel</span><span class="p">,</span> <span class="n">delayed</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Preparing the hyperparameter grid for plotting (meshsize=</span><span class="si">%d</span><span class="s2">)."</span><span class="p">,</span> <span class="n">meshsize</span><span class="p">)</span>
|
|
|
|
<span class="n">X0</span><span class="p">,</span> <span class="n">Y0</span> <span class="o">=</span> <span class="n">meshgrid</span><span class="p">(</span>
|
|
<span class="n">linspace</span><span class="p">(</span><span class="n">theta_norm_min</span><span class="p">,</span> <span class="n">theta_norm_max</span><span class="p">,</span> <span class="n">meshsize</span><span class="p">),</span>
|
|
<span class="n">linspace</span><span class="p">(</span><span class="n">k_corr_min</span><span class="p">,</span> <span class="n">k_corr_max</span><span class="p">,</span> <span class="n">meshsize</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="n">Z</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="n">meshsize</span><span class="p">,</span> <span class="n">meshsize</span><span class="p">))</span>
|
|
|
|
<span class="c1"># Evaluate log-posterior on the grid in parallel</span>
|
|
<span class="n">Z</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span>
|
|
<span class="n">Parallel</span><span class="p">(</span><span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">)(</span>
|
|
<span class="n">delayed</span><span class="p">(</span><span class="n">logposterior_hyperparameters_parallel</span><span class="p">)(</span>
|
|
<span class="n">selfi</span><span class="p">,</span>
|
|
<span class="n">theta_fiducial</span><span class="p">,</span>
|
|
<span class="n">Nbin_min</span><span class="p">,</span>
|
|
<span class="n">Nbin_max</span><span class="p">,</span>
|
|
<span class="n">X0</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">],</span>
|
|
<span class="n">Y0</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">],</span>
|
|
<span class="n">alpha_cv</span><span class="p">,</span>
|
|
<span class="p">)</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="n">meshsize</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">meshsize</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">meshsize</span><span class="p">,</span> <span class="n">meshsize</span><span class="p">)</span>
|
|
<span class="n">Z</span> <span class="o">-=</span> <span class="n">Z</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
|
|
<span class="n">Z</span> <span class="o">=</span> <span class="n">exp</span><span class="p">(</span><span class="n">Z</span><span class="p">)</span>
|
|
|
|
<span class="n">Z_contours</span> <span class="o">=</span> <span class="n">get_contours</span><span class="p">(</span><span class="n">Z</span><span class="p">,</span> <span class="n">meshsize</span><span class="p">)</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Grid evaluations complete."</span><span class="p">)</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Performing the prior hyperparameter optimisation..."</span><span class="p">)</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">theta_norm</span> <span class="o">=</span> <span class="n">theta_norm</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">k_corr</span> <span class="o">=</span> <span class="n">k_corr</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">alpha_cv</span> <span class="o">=</span> <span class="n">alpha_cv</span>
|
|
|
|
<span class="c1"># Perform the prior optimisation</span>
|
|
<span class="n">x0</span> <span class="o">=</span> <span class="p">[</span><span class="n">theta_norm</span><span class="p">,</span> <span class="n">k_corr</span><span class="p">]</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">optimize_prior</span><span class="p">(</span>
|
|
<span class="n">theta_fiducial</span><span class="p">,</span>
|
|
<span class="n">k_opt_min</span><span class="p">,</span>
|
|
<span class="n">k_opt_max</span><span class="p">,</span>
|
|
<span class="n">x0</span><span class="o">=</span><span class="n">x0</span><span class="p">,</span>
|
|
<span class="n">theta_norm_min</span><span class="o">=</span><span class="n">theta_norm_min</span><span class="p">,</span>
|
|
<span class="n">theta_norm_max</span><span class="o">=</span><span class="n">theta_norm_max</span><span class="p">,</span>
|
|
<span class="n">theta_norm_mean</span><span class="o">=</span><span class="n">theta_norm_mean</span><span class="p">,</span>
|
|
<span class="n">theta_norm_std</span><span class="o">=</span><span class="n">theta_norm_std</span><span class="p">,</span>
|
|
<span class="n">k_corr_min</span><span class="o">=</span><span class="n">k_corr_min</span><span class="p">,</span>
|
|
<span class="n">k_corr_max</span><span class="o">=</span><span class="n">k_corr_max</span><span class="p">,</span>
|
|
<span class="n">k_corr_mean</span><span class="o">=</span><span class="n">k_corr_mean</span><span class="p">,</span>
|
|
<span class="n">k_corr_std</span><span class="o">=</span><span class="n">k_corr_std</span><span class="p">,</span>
|
|
<span class="n">options</span><span class="o">=</span><span class="p">{</span>
|
|
<span class="s2">"maxiter"</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span>
|
|
<span class="s2">"ftol"</span><span class="p">:</span> <span class="mf">1e-10</span><span class="p">,</span>
|
|
<span class="s2">"gtol"</span><span class="p">:</span> <span class="mf">1e-10</span><span class="p">,</span>
|
|
<span class="s2">"eps"</span><span class="p">:</span> <span class="mf">1e-6</span><span class="p">,</span>
|
|
<span class="s2">"disp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Saving prior and posterior after optimisation."</span><span class="p">)</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">save_prior</span><span class="p">()</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">save_posterior</span><span class="p">()</span>
|
|
|
|
<span class="n">theta_norm</span> <span class="o">=</span> <span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">theta_norm</span>
|
|
<span class="n">k_corr</span> <span class="o">=</span> <span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">k_corr</span>
|
|
|
|
<span class="n">prior_theta_mean</span><span class="p">,</span> <span class="n">prior_theta_covariance</span> <span class="o">=</span> <span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">mean</span><span class="p">,</span> <span class="n">selfi</span><span class="o">.</span><span class="n">prior</span><span class="o">.</span><span class="n">covariance</span>
|
|
<span class="n">prior_theta_mean</span> <span class="o">=</span> <span class="n">prior_theta_mean</span><span class="p">[</span><span class="n">Nbin_min</span><span class="p">:</span><span class="n">Nbin_max</span><span class="p">]</span>
|
|
<span class="n">prior_theta_covariance</span> <span class="o">=</span> <span class="n">prior_theta_covariance</span><span class="p">[</span><span class="n">Nbin_min</span><span class="p">:</span><span class="n">Nbin_max</span><span class="p">,</span> <span class="n">Nbin_min</span><span class="p">:</span><span class="n">Nbin_max</span><span class="p">]</span>
|
|
|
|
<span class="n">posterior_theta_mean</span><span class="p">,</span> <span class="n">posterior_theta_covariance</span><span class="p">,</span> <span class="n">posterior_theta_icov</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">selfi</span><span class="o">.</span><span class="n">restrict_posterior</span><span class="p">(</span><span class="n">Nbin_min</span><span class="p">,</span> <span class="n">Nbin_max</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Optimised hyperparameters: theta_norm=</span><span class="si">%.5f</span><span class="s2">, k_corr=</span><span class="si">%.5f</span><span class="s2">"</span><span class="p">,</span> <span class="n">theta_norm</span><span class="p">,</span> <span class="n">k_corr</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">plot</span><span class="p">:</span>
|
|
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</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">5</span><span class="p">))</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_ticks_position</span><span class="p">(</span><span class="s2">"both"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_ticks_position</span><span class="p">(</span><span class="s2">"both"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_tick_params</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">"both"</span><span class="p">,</span> <span class="n">direction</span><span class="o">=</span><span class="s2">"in"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_tick_params</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">"major"</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">labelsize</span><span class="o">=</span><span class="mi">17</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_tick_params</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">"minor"</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_tick_params</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">"both"</span><span class="p">,</span> <span class="n">direction</span><span class="o">=</span><span class="s2">"in"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_tick_params</span><span class="p">(</span><span class="n">which</span><span class="o">=</span><span class="s2">"major"</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">labelsize</span><span class="o">=</span><span class="mi">17</span><span class="p">)</span>
|
|
|
|
<span class="n">pcm</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">pcolormesh</span><span class="p">(</span><span class="n">X0</span><span class="p">,</span> <span class="n">Y0</span><span class="p">,</span> <span class="n">Z</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s2">"Greys"</span><span class="p">,</span> <span class="n">shading</span><span class="o">=</span><span class="s2">"gouraud"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">linestyle</span><span class="o">=</span><span class="s2">":"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">contour</span><span class="p">(</span>
|
|
<span class="n">Z</span><span class="p">,</span>
|
|
<span class="n">Z_contours</span><span class="p">,</span>
|
|
<span class="n">extent</span><span class="o">=</span><span class="p">[</span><span class="n">theta_norm_min</span><span class="p">,</span> <span class="n">theta_norm_max</span><span class="p">,</span> <span class="n">k_corr_min</span><span class="p">,</span> <span class="n">k_corr_max</span><span class="p">],</span>
|
|
<span class="n">colors</span><span class="o">=</span><span class="s2">"C9"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
|
|
<span class="p">[</span><span class="n">x0</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x0</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
|
<span class="p">[</span><span class="n">k_corr_min</span><span class="p">,</span> <span class="n">k_corr_max</span><span class="p">],</span>
|
|
<span class="n">color</span><span class="o">=</span><span class="s2">"C3"</span><span class="p">,</span>
|
|
<span class="n">linestyle</span><span class="o">=</span><span class="s2">":"</span><span class="p">,</span>
|
|
<span class="n">label</span><span class="o">=</span><span class="s2">"Before optimisation"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="n">theta_norm_min</span><span class="p">,</span> <span class="n">theta_norm_max</span><span class="p">],</span> <span class="p">[</span><span class="n">x0</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x0</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">color</span><span class="o">=</span><span class="s2">"C3"</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">":"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
|
|
<span class="p">[</span><span class="n">theta_norm</span><span class="p">,</span> <span class="n">theta_norm</span><span class="p">],</span>
|
|
<span class="p">[</span><span class="n">k_corr_min</span><span class="p">,</span> <span class="n">k_corr_max</span><span class="p">],</span>
|
|
<span class="n">linestyle</span><span class="o">=</span><span class="s2">"--"</span><span class="p">,</span>
|
|
<span class="n">color</span><span class="o">=</span><span class="s2">"C3"</span><span class="p">,</span>
|
|
<span class="n">label</span><span class="o">=</span><span class="s2">"After optimisation"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="n">theta_norm_min</span><span class="p">,</span> <span class="n">theta_norm_max</span><span class="p">],</span> <span class="p">[</span><span class="n">k_corr</span><span class="p">,</span> <span class="n">k_corr</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">"--"</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"C3"</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">"$\theta_\mathrm</span><span class="si">{norm}</span><span class="s2">$"</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">19</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">"$k_\mathrm</span><span class="si">{corr}</span><span class="s2">$ [$h$/Mpc]"</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">19</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
|
|
|
<span class="k">if</span> <span class="n">savepath</span> <span class="ow">is</span> <span class="kc">None</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">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">savepath</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">"tight"</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="nb">format</span><span class="o">=</span><span class="s2">"png"</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="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">savepath</span><span class="p">[:</span><span class="o">-</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">".pdf"</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s2">"tight"</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="nb">format</span><span class="o">=</span><span class="s2">"pdf"</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="n">fig</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">theta_norm</span><span class="p">,</span> <span class="n">k_corr</span>
|
|
|
|
<span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"File access or I/O error: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s2">"Unexpected error in perform_prior_optimisation_and_plot: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"perform_prior_optimisation_and_plot failed."</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
|
|
|
|
</pre></div>
|
|
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>© 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> |