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

1848 lines
No EOL
202 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>selfisys.hiddenbox &mdash; SelfiSys /Users/hoellinger/Library/CloudStorage/Dropbox/travail/these/science/code/SELFI/selfisys/src/ documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=75025241"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home">
SelfiSys
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">API Documentation</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.hiddenbox.html">hiddenbox</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox"><code class="docutils literal notranslate"><span class="pre">HiddenBox</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.Npop"><code class="docutils literal notranslate"><span class="pre">HiddenBox.Npop</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.Ntimesteps"><code class="docutils literal notranslate"><span class="pre">HiddenBox.Ntimesteps</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.Psingle"><code class="docutils literal notranslate"><span class="pre">HiddenBox.Psingle</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.compute_pool"><code class="docutils literal notranslate"><span class="pre">HiddenBox.compute_pool()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.evaluate"><code class="docutils literal notranslate"><span class="pre">HiddenBox.evaluate()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.force_neglect_lightcone"><code class="docutils literal notranslate"><span class="pre">HiddenBox.force_neglect_lightcone</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.force_recompute_mocks"><code class="docutils literal notranslate"><span class="pre">HiddenBox.force_recompute_mocks</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.gravity_on"><code class="docutils literal notranslate"><span class="pre">HiddenBox.gravity_on</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.load_pool"><code class="docutils literal notranslate"><span class="pre">HiddenBox.load_pool()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.make_data"><code class="docutils literal notranslate"><span class="pre">HiddenBox.make_data()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.modified_selfi"><code class="docutils literal notranslate"><span class="pre">HiddenBox.modified_selfi</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.prefix_mocks"><code class="docutils literal notranslate"><span class="pre">HiddenBox.prefix_mocks</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.reset_survey"><code class="docutils literal notranslate"><span class="pre">HiddenBox.reset_survey()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.setup_only"><code class="docutils literal notranslate"><span class="pre">HiddenBox.setup_only</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.switch_recompute_pool"><code class="docutils literal notranslate"><span class="pre">HiddenBox.switch_recompute_pool()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.switch_setup"><code class="docutils literal notranslate"><span class="pre">HiddenBox.switch_setup()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.update"><code class="docutils literal notranslate"><span class="pre">HiddenBox.update()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.normalise_hb.html">normalise_hb</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.normalise_hb.html#selfisys.normalise_hb.define_normalisation"><code class="docutils literal notranslate"><span class="pre">define_normalisation()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.normalise_hb.html#selfisys.normalise_hb.worker_normalisation"><code class="docutils literal notranslate"><span class="pre">worker_normalisation()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.normalise_hb.html#selfisys.normalise_hb.worker_normalisation_public"><code class="docutils literal notranslate"><span class="pre">worker_normalisation_public()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.normalise_hb.html#selfisys.normalise_hb.worker_normalisation_wrapper"><code class="docutils literal notranslate"><span class="pre">worker_normalisation_wrapper()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.prior.html">prior</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.get_summary"><code class="docutils literal notranslate"><span class="pre">get_summary()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.logposterior_hyperparameters_parallel"><code class="docutils literal notranslate"><span class="pre">logposterior_hyperparameters_parallel()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.perform_prior_optimisation_and_plot"><code class="docutils literal notranslate"><span class="pre">perform_prior_optimisation_and_plot()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior"><code class="docutils literal notranslate"><span class="pre">planck_prior</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.mean"><code class="docutils literal notranslate"><span class="pre">planck_prior.mean</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.covariance"><code class="docutils literal notranslate"><span class="pre">planck_prior.covariance</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.inv_covariance"><code class="docutils literal notranslate"><span class="pre">planck_prior.inv_covariance</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.Nbin_max"><code class="docutils literal notranslate"><span class="pre">planck_prior.Nbin_max</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.Nbin_min"><code class="docutils literal notranslate"><span class="pre">planck_prior.Nbin_min</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.compute"><code class="docutils literal notranslate"><span class="pre">planck_prior.compute()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.load"><code class="docutils literal notranslate"><span class="pre">planck_prior.load()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.logpdf"><code class="docutils literal notranslate"><span class="pre">planck_prior.logpdf()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.sample"><code class="docutils literal notranslate"><span class="pre">planck_prior.sample()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.planck_prior.save"><code class="docutils literal notranslate"><span class="pre">planck_prior.save()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.prior.html#selfisys.prior.worker_class"><code class="docutils literal notranslate"><span class="pre">worker_class()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.selection_functions.html">selection_functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection"><code class="docutils literal notranslate"><span class="pre">LognormalSelection</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.init_selection"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.init_selection()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.lognormals_z_to_x"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.lognormals_z_to_x()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.multiple_lognormal"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.multiple_lognormal()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.multiple_lognormal_z"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.multiple_lognormal_z()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.one_lognormal"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.one_lognormal()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.one_lognormal_z"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.one_lognormal_z()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.selection_functions.html#selfisys.selection_functions.LognormalSelection.r_grid"><code class="docutils literal notranslate"><span class="pre">LognormalSelection.r_grid()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.selfi_interface.html">selfi_interface</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.selfi_interface.html#selfisys.selfi_interface.PrintMessage"><code class="docutils literal notranslate"><span class="pre">PrintMessage()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.selfi_interface.html#selfisys.selfi_interface.indent"><code class="docutils literal notranslate"><span class="pre">indent()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.selfi_interface.html#selfisys.selfi_interface.unindent"><code class="docutils literal notranslate"><span class="pre">unindent()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.sbmy_interface.html">sbmy_interface</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.compute_Phi"><code class="docutils literal notranslate"><span class="pre">compute_Phi()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.generate_white_noise_Field"><code class="docutils literal notranslate"><span class="pre">generate_white_noise_Field()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.get_power_spectrum_from_cosmo"><code class="docutils literal notranslate"><span class="pre">get_power_spectrum_from_cosmo()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.handle_time_stepping"><code class="docutils literal notranslate"><span class="pre">handle_time_stepping()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.sbmy_interface.html#selfisys.sbmy_interface.setup_sbmy_parfiles"><code class="docutils literal notranslate"><span class="pre">setup_sbmy_parfiles()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.grf.html">grf</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.grf.html#selfisys.grf.primordial_grf"><code class="docutils literal notranslate"><span class="pre">primordial_grf()</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../selfisys.utils.html">selfisys.utils package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.examples_utils">selfisys.utils.examples_utils module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.examples_utils.clear_large_plot"><code class="docutils literal notranslate"><span class="pre">clear_large_plot()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.logger">selfisys.utils.logger module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.CustomLogger"><code class="docutils literal notranslate"><span class="pre">CustomLogger</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.CustomLogger.diagnostic"><code class="docutils literal notranslate"><span class="pre">CustomLogger.diagnostic()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.CustomLoggerHandler"><code class="docutils literal notranslate"><span class="pre">CustomLoggerHandler</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.CustomLoggerHandler.emit"><code class="docutils literal notranslate"><span class="pre">CustomLoggerHandler.emit()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.INDENT"><code class="docutils literal notranslate"><span class="pre">INDENT()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.PrintDiagnostic"><code class="docutils literal notranslate"><span class="pre">PrintDiagnostic()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.PrintError"><code class="docutils literal notranslate"><span class="pre">PrintError()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.PrintInfo"><code class="docutils literal notranslate"><span class="pre">PrintInfo()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.PrintLeftType"><code class="docutils literal notranslate"><span class="pre">PrintLeftType()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.PrintWarning"><code class="docutils literal notranslate"><span class="pre">PrintWarning()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.UNINDENT"><code class="docutils literal notranslate"><span class="pre">UNINDENT()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.logger.getCustomLogger"><code class="docutils literal notranslate"><span class="pre">getCustomLogger()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.low_level">selfisys.utils.low_level module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.low_level.stderr_redirector"><code class="docutils literal notranslate"><span class="pre">stderr_redirector()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.low_level.stdout_redirector"><code class="docutils literal notranslate"><span class="pre">stdout_redirector()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.parser">selfisys.utils.parser module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.bool_sh"><code class="docutils literal notranslate"><span class="pre">bool_sh()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.check_files_exist"><code class="docutils literal notranslate"><span class="pre">check_files_exist()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.intNone"><code class="docutils literal notranslate"><span class="pre">intNone()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.joinstrs"><code class="docutils literal notranslate"><span class="pre">joinstrs()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.joinstrs_only"><code class="docutils literal notranslate"><span class="pre">joinstrs_only()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.none_or_bool_or_str"><code class="docutils literal notranslate"><span class="pre">none_or_bool_or_str()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.parser.safe_npload"><code class="docutils literal notranslate"><span class="pre">safe_npload()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.path_utils">selfisys.utils.path_utils module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.path_utils.file_names_evaluate"><code class="docutils literal notranslate"><span class="pre">file_names_evaluate()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.path_utils.get_file_names"><code class="docutils literal notranslate"><span class="pre">get_file_names()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.plot_examples">selfisys.utils.plot_examples module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_examples.plot_comoving_distance_redshift"><code class="docutils literal notranslate"><span class="pre">plot_comoving_distance_redshift()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_examples.plot_galaxy_field_slice"><code class="docutils literal notranslate"><span class="pre">plot_galaxy_field_slice()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_examples.plot_power_spectrum"><code class="docutils literal notranslate"><span class="pre">plot_power_spectrum()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_examples.plot_selection_functions_def_in_z"><code class="docutils literal notranslate"><span class="pre">plot_selection_functions_def_in_z()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_examples.redshift_distance_conversion"><code class="docutils literal notranslate"><span class="pre">redshift_distance_conversion()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_examples.relative_error_analysis"><code class="docutils literal notranslate"><span class="pre">relative_error_analysis()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.plot_params">selfisys.utils.plot_params module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11</span></code></a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11.get_offset"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11.get_offset()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11.set_scientific"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11.set_scientific()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.ScalarFormatterForceFormat_11.set_useOffset"><code class="docutils literal notranslate"><span class="pre">ScalarFormatterForceFormat_11.set_useOffset()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.create_all_colormaps"><code class="docutils literal notranslate"><span class="pre">create_all_colormaps()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.create_colormap"><code class="docutils literal notranslate"><span class="pre">create_colormap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.dynamic_text_scaling"><code class="docutils literal notranslate"><span class="pre">dynamic_text_scaling()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.get_contours"><code class="docutils literal notranslate"><span class="pre">get_contours()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.reset_plotting"><code class="docutils literal notranslate"><span class="pre">reset_plotting()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_params.setup_plotting"><code class="docutils literal notranslate"><span class="pre">setup_plotting()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.plot_utils">selfisys.utils.plot_utils module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_C"><code class="docutils literal notranslate"><span class="pre">plot_C()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_fisher"><code class="docutils literal notranslate"><span class="pre">plot_fisher()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_gradients"><code class="docutils literal notranslate"><span class="pre">plot_gradients()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_histogram"><code class="docutils literal notranslate"><span class="pre">plot_histogram()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_mocks"><code class="docutils literal notranslate"><span class="pre">plot_mocks()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_mocks_compact"><code class="docutils literal notranslate"><span class="pre">plot_mocks_compact()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_observations"><code class="docutils literal notranslate"><span class="pre">plot_observations()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_prior_and_posterior_covariances"><code class="docutils literal notranslate"><span class="pre">plot_prior_and_posterior_covariances()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_reconstruction"><code class="docutils literal notranslate"><span class="pre">plot_reconstruction()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plot_selection_functions"><code class="docutils literal notranslate"><span class="pre">plot_selection_functions()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.plot_utils.plotly_3d"><code class="docutils literal notranslate"><span class="pre">plotly_3d()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.timestepping">selfisys.utils.timestepping module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.timestepping.merge_nTS"><code class="docutils literal notranslate"><span class="pre">merge_nTS()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.tools">selfisys.utils.tools module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.cosmo_vector_to_Simbelmyne_dict"><code class="docutils literal notranslate"><span class="pre">cosmo_vector_to_Simbelmyne_dict()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.cosmo_vector_to_class_dict"><code class="docutils literal notranslate"><span class="pre">cosmo_vector_to_class_dict()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.custom_stat"><code class="docutils literal notranslate"><span class="pre">custom_stat()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.fisher_rao"><code class="docutils literal notranslate"><span class="pre">fisher_rao()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.get_k_max"><code class="docutils literal notranslate"><span class="pre">get_k_max()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.get_summary"><code class="docutils literal notranslate"><span class="pre">get_summary()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.none_or_bool_or_str"><code class="docutils literal notranslate"><span class="pre">none_or_bool_or_str()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.params_ids_to_Simbelmyne_dict"><code class="docutils literal notranslate"><span class="pre">params_ids_to_Simbelmyne_dict()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.sample_omega_from_prior"><code class="docutils literal notranslate"><span class="pre">sample_omega_from_prior()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.tools.summary_to_score"><code class="docutils literal notranslate"><span class="pre">summary_to_score()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils.workers">selfisys.utils.workers module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.workers.Simbelmyne_worker"><code class="docutils literal notranslate"><span class="pre">Simbelmyne_worker()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.workers.evaluate_gradient_of_Symbelmyne"><code class="docutils literal notranslate"><span class="pre">evaluate_gradient_of_Symbelmyne()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../../selfisys.utils.html#selfisys.utils.workers.worker_gradient_Symbelmyne"><code class="docutils literal notranslate"><span class="pre">worker_gradient_Symbelmyne()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../selfisys.utils.html#module-selfisys.utils">Module contents</a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Contribute</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../CONTRIBUTING.html">Contributing to SelfiSys</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../CONTRIBUTING.html#reporting-issues">Reporting Issues</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../CONTRIBUTING.html#submitting-contributions">Submitting Contributions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../CONTRIBUTING.html#style-guidelines">Style Guidelines</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../CONTRIBUTING.html#python-code">Python code</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../CONTRIBUTING.html#jupyter-notebooks">Jupyter Notebooks</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../CONTRIBUTING.html#questions">Questions?</a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">References</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../REFERENCES.html">References</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">SelfiSys</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">Module code</a></li>
<li class="breadcrumb-item active">selfisys.hiddenbox</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.hiddenbox</h1><div class="highlight"><pre>
<span></span><span class="ch">#!/usr/bin/env python3</span>
<span class="c1"># ----------------------------------------------------------------------</span>
<span class="c1"># Copyright (C) 2024 Tristan Hoellinger</span>
<span class="c1"># Distributed under the GNU General Public License v3.0 (GPLv3).</span>
<span class="c1"># See the LICENSE file in the root directory for details.</span>
<span class="c1"># SPDX-License-Identifier: GPL-3.0-or-later</span>
<span class="c1"># ----------------------------------------------------------------------</span>
<span class="n">__author__</span> <span class="o">=</span> <span class="s2">&quot;Tristan Hoellinger&quot;</span>
<span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;0.1.0&quot;</span>
<span class="n">__date__</span> <span class="o">=</span> <span class="s2">&quot;2024&quot;</span>
<span class="n">__license__</span> <span class="o">=</span> <span class="s2">&quot;GPLv3&quot;</span>
<span class="sd">&quot;&quot;&quot;This module provides the HiddenBox class, which is used to define</span>
<span class="sd">standalone stochastic forward models of large-scale spectroscopic</span>
<span class="sd">galaxy surveys.</span>
<span class="sd">The HiddenBox class is compatible with the pySELFI package.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">from</span> <span class="nn">gc</span> <span class="kn">import</span> <span class="n">collect</span>
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span>
<span class="kn">import</span> <span class="nn">h5py</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">selfisys.global_parameters</span> <span class="kn">import</span> <span class="n">DEFAULT_VERBOSE_LEVEL</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.parser</span> <span class="kn">import</span> <span class="n">joinstrs_only</span>
<div class="viewcode-block" id="HiddenBox">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox">[docs]</a>
<span class="k">class</span> <span class="nc">HiddenBox</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;This class represents custom forward data model of large-scale</span>
<span class="sd"> spectroscopic galaxy surveys.&quot;&quot;&quot;</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">k_s</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span>
<span class="n">P_ss_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">Pbins_bnd</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span>
<span class="n">theta2P</span><span class="p">:</span> <span class="n">Callable</span><span class="p">,</span>
<span class="n">P</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
<span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
<span class="n">L</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
<span class="n">G_sim_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">G_ss_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">Np0</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
<span class="n">Npm0</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
<span class="n">fsimdir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">noise_std</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">radial_selection</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">selection_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">observed_density</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">linear_bias</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">norm_csts</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">survey_mask_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">local_mask_prefix</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">sim_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">eff_redshifts</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">TimeSteps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">TimeStepDistribution</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">fixnoise</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<span class="n">seednorm</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">save_frequency</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">reset</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<span class="n">verbosity</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">DEFAULT_VERBOSE_LEVEL</span><span class="p">,</span>
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Initialise the HiddenBox.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> k_s : array-like</span>
<span class="sd"> Vector of input support wavenumbers.</span>
<span class="sd"> P_ss_path : str</span>
<span class="sd"> Path to the spectrum used to normalise the outputs.</span>
<span class="sd"> Pbins_bnd : array-like</span>
<span class="sd"> Vector of bin boundaries for the summary statistics.</span>
<span class="sd"> theta2P : Callable</span>
<span class="sd"> Function to convert theta vectors to initial power spectra.</span>
<span class="sd"> P : int</span>
<span class="sd"> Dimension of the output summary statistics.</span>
<span class="sd"> size : int</span>
<span class="sd"> Side length of the simulation box in voxels.</span>
<span class="sd"> L : float</span>
<span class="sd"> Side length of the simulation box in Mpc/h.</span>
<span class="sd"> G_sim_path : str</span>
<span class="sd"> Path to the simulation grid.</span>
<span class="sd"> G_ss_path : str</span>
<span class="sd"> Path to the summary grid.</span>
<span class="sd"> Np0 : int</span>
<span class="sd"> Number of dark matter particles per spatial dimension.</span>
<span class="sd"> Npm0 : int</span>
<span class="sd"> Side length of the particle-mesh grid in voxels.</span>
<span class="sd"> fsimdir : str</span>
<span class="sd"> Output directory.</span>
<span class="sd"> noise_std : float, optional</span>
<span class="sd"> Standard deviation for the Gaussian noise. Default is</span>
<span class="sd"> `None`.</span>
<span class="sd"> radial_selection : str, optional</span>
<span class="sd"> Type of radial selection mask. Default is `None`,</span>
<span class="sd"> corresponding to no radial selection.</span>
<span class="sd"> Available options:</span>
<span class="sd"> - &#39;multiple_lognormal&#39;: Use multiple log-normal radial</span>
<span class="sd"> selection functions.</span>
<span class="sd"> selection_params : list, optional</span>
<span class="sd"> List of parameters for the radial selection mask, for each</span>
<span class="sd"> population. Default is `None`.</span>
<span class="sd"> For the &#39;multiple_lognormal&#39; radial selection,</span>
<span class="sd"> `selection_params` is a shape `(3, N_pop)` array comprising</span>
<span class="sd"> the three following parameters for each population:</span>
<span class="sd"> - selection_std : (float)</span>
<span class="sd"> Standard deviation of the distribution, e.g.,</span>
<span class="sd"> constant × (1 + z).</span>
<span class="sd"> - selection_mean : (float)</span>
<span class="sd"> Mean of the distribution in Gpc/h.</span>
<span class="sd"> - selection_rescale : (float, optional)</span>
<span class="sd"> Individually rescale the distributions by the given</span>
<span class="sd"> value. If `None`, the global maximum is normalised to</span>
<span class="sd"> `1`.</span>
<span class="sd"> observed_density : float, optional</span>
<span class="sd"> Mean galaxy density. Default is `None`.</span>
<span class="sd"> linear_bias : float or list of float, optional</span>
<span class="sd"> First-order linear galaxy biases. If `None`, use the dark</span>
<span class="sd"> matter density to compute the summaries. Default is `None`.</span>
<span class="sd"> norm_csts : float or list of float, optional</span>
<span class="sd"> If not `None`, normalise the output of the hidden box</span>
<span class="sd"> accordingly.</span>
<span class="sd"> For `radial_selection == &#39;multiple_lognormal&#39;`, `norm_csts`</span>
<span class="sd"> must be a list of `N_pop` values. Default is `None`.</span>
<span class="sd"> survey_mask_path : str, optional</span>
<span class="sd"> If not `None`, apply the corresponding survey mask to the</span>
<span class="sd"> observed field. Default is `None`.</span>
<span class="sd"> local_mask_prefix : str, optional</span>
<span class="sd"> Prefix for the local copy of the survey mask. If `None`, use</span>
<span class="sd"> the default name. Default is `None`.</span>
<span class="sd"> sim_params : str, optional</span>
<span class="sd"> Set of simulation parameters to be used for Simbelmynë.</span>
<span class="sd"> Check `setup_sbmy_parfiles` in `selfisys.sbmy_parser` for</span>
<span class="sd"> details. Default is `None`.</span>
<span class="sd"> eff_redshifts : list, optional</span>
<span class="sd"> Effective redshifts for the time steps. Default is `None`.</span>
<span class="sd"> TimeSteps : list, optional</span>
<span class="sd"> Number of time steps to reach the corresponding effective</span>
<span class="sd"> redshifts. Default is `None`.</span>
<span class="sd"> TimeStepDistribution : str, optional</span>
<span class="sd"> Path to the Simbelmynë time step distribution file. Default</span>
<span class="sd"> is `None`.</span>
<span class="sd"> seedphase : int, optional</span>
<span class="sd"> Seed to generate the initial white noise realisation.</span>
<span class="sd"> Default is `None`.</span>
<span class="sd"> seednoise : int, optional</span>
<span class="sd"> Initial state of the RNG to generate the noise sequence. If</span>
<span class="sd"> `fixnoise` is True, the seed used in `compute_pool` is</span>
<span class="sd"> always `seednoise`. If `fixnoise` is False, it is</span>
<span class="sd"> `seednoise + i` for realisation `i`. Default is `None`.</span>
<span class="sd"> fixnoise : bool, optional</span>
<span class="sd"> Whether to fix the noise realisation. If `True`, always use</span>
<span class="sd"> `seednoise`. Default is `False`.</span>
<span class="sd"> seednorm : int, optional</span>
<span class="sd"> Seed used for normalisation. Default is `None`.</span>
<span class="sd"> save_frequency : int, optional</span>
<span class="sd"> Save the outputs of the hidden box to disk every</span>
<span class="sd"> `save_frequency` evaluations. Default is `None`.</span>
<span class="sd"> reset : bool, optional</span>
<span class="sd"> Whether to always force reset the survey box when the hidden</span>
<span class="sd"> `HiddenBox` object is instantiated. Default is `False`.</span>
<span class="sd"> verbosity : int, optional</span>
<span class="sd"> Verbosity level of the hidden box. `0` is silent, `1` is</span>
<span class="sd"> minimal, `2` is verbose. Default is `DEFAULT_VERBOSE_LEVEL`.</span>
<span class="sd"> **kwargs</span>
<span class="sd"> Additional optional keyword arguments.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># Mandatory attributes</span>
<span class="bp">self</span><span class="o">.</span><span class="n">k_s</span> <span class="o">=</span> <span class="n">k_s</span>
<span class="bp">self</span><span class="o">.</span><span class="n">P_ss_path</span> <span class="o">=</span> <span class="n">P_ss_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Pbins_bnd</span> <span class="o">=</span> <span class="n">Pbins_bnd</span>
<span class="bp">self</span><span class="o">.</span><span class="n">theta2P</span> <span class="o">=</span> <span class="n">theta2P</span>
<span class="bp">self</span><span class="o">.</span><span class="n">P</span> <span class="o">=</span> <span class="n">P</span>
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span>
<span class="bp">self</span><span class="o">.</span><span class="n">L</span> <span class="o">=</span> <span class="n">L</span>
<span class="bp">self</span><span class="o">.</span><span class="n">G_sim_path</span> <span class="o">=</span> <span class="n">G_sim_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">G_ss_path</span> <span class="o">=</span> <span class="n">G_ss_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Np0</span> <span class="o">=</span> <span class="n">Np0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Npm0</span> <span class="o">=</span> <span class="n">Npm0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span> <span class="o">=</span> <span class="n">fsimdir</span>
<span class="c1"># Optional attributes</span>
<span class="bp">self</span><span class="o">.</span><span class="n">noise_std</span> <span class="o">=</span> <span class="n">noise_std</span>
<span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span> <span class="o">=</span> <span class="n">radial_selection</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selection_params</span> <span class="o">=</span> <span class="n">selection_params</span>
<span class="bp">self</span><span class="o">.</span><span class="n">observed_density</span> <span class="o">=</span> <span class="n">observed_density</span>
<span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span> <span class="o">=</span> <span class="n">linear_bias</span>
<span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span> <span class="o">=</span> <span class="n">norm_csts</span>
<span class="bp">self</span><span class="o">.</span><span class="n">survey_mask_path</span> <span class="o">=</span> <span class="n">survey_mask_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local_mask_prefix</span> <span class="o">=</span> <span class="n">local_mask_prefix</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span> <span class="o">=</span> <span class="n">sim_params</span>
<span class="bp">self</span><span class="o">.</span><span class="n">eff_redshifts</span> <span class="o">=</span> <span class="n">eff_redshifts</span>
<span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span> <span class="o">=</span> <span class="n">TimeSteps</span>
<span class="bp">self</span><span class="o">.</span><span class="n">TimeStepDistribution</span> <span class="o">=</span> <span class="n">TimeStepDistribution</span>
<span class="bp">self</span><span class="o">.</span><span class="n">seedphase</span> <span class="o">=</span> <span class="n">seedphase</span>
<span class="bp">self</span><span class="o">.</span><span class="n">seednoise</span> <span class="o">=</span> <span class="n">seednoise</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fixnoise</span> <span class="o">=</span> <span class="n">fixnoise</span>
<span class="bp">self</span><span class="o">.</span><span class="n">seednorm</span> <span class="o">=</span> <span class="n">seednorm</span>
<span class="bp">self</span><span class="o">.</span><span class="n">save_frequency</span> <span class="o">=</span> <span class="n">save_frequency</span>
<span class="bp">self</span><span class="o">.</span><span class="n">reset</span> <span class="o">=</span> <span class="n">reset</span>
<span class="bp">self</span><span class="o">.</span><span class="n">verbosity</span> <span class="o">=</span> <span class="n">verbosity</span>
<span class="c1"># Additional attributes from kwargs</span>
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="c1"># Compute default values</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_set_defaults</span><span class="p">()</span>
<span class="c1"># Create the window function W(n, r) = C(n) * R(r)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_init_survey_mask</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_init_radial_selection</span><span class="p">()</span>
<div class="viewcode-block" id="HiddenBox.reset_survey">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.reset_survey">[docs]</a>
<span class="k">def</span> <span class="nf">reset_survey</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Re-initialise the survey mask C(n) and radial selection</span>
<span class="sd"> function R(r).</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_init_survey_mask</span><span class="p">(</span><span class="n">reset</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_init_radial_selection</span><span class="p">(</span><span class="n">reset</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
<div class="viewcode-block" id="HiddenBox.update">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.update">[docs]</a>
<span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Updates the given parameter(s) of the hidden box with the</span>
<span class="sd"> given value(s).</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> **kwargs : dict</span>
<span class="sd"> dictionary of parameters to update</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="HiddenBox.make_data">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.make_data">[docs]</a>
<span class="k">def</span> <span class="nf">make_data</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">cosmo</span><span class="p">,</span>
<span class="nb">id</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">force_powerspectrum</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_cosmo</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_phase</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">d</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
<span class="n">remove_sbmy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">verbosity</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">RSDs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">prefix_mocks</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">&quot;&quot;&quot;Generate simulated data based on the given cosmological</span>
<span class="sd"> parameters.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> cosmo : dict</span>
<span class="sd"> Cosmological and infrastructure parameters.</span>
<span class="sd"> id : int or str, optional</span>
<span class="sd"> Identifier used as a suffix in the file names. Default is</span>
<span class="sd"> `0`.</span>
<span class="sd"> seedphase : int or list of int</span>
<span class="sd"> Seed to generate the initial white noise in Fourier space.</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the noise realisation.</span>
<span class="sd"> force_powerspectrum : bool, optional</span>
<span class="sd"> Force recomputing the input spectrum. Default is `False`.</span>
<span class="sd"> force_parfiles : bool, optional</span>
<span class="sd"> Force recomputing the parameter files. Default is `False`.</span>
<span class="sd"> force_sim : bool, optional</span>
<span class="sd"> Force recomputing the simulation. Default is `False`.</span>
<span class="sd"> force_cosmo : bool, optional</span>
<span class="sd"> Force recomputing the cosmological parameters. Default is</span>
<span class="sd"> `False`.</span>
<span class="sd"> force_phase : bool, optional</span>
<span class="sd"> Force recomputing the initial phase. Default is `False`.</span>
<span class="sd"> d : int, optional</span>
<span class="sd"> Direction in the parameter space. Default is `-1`.</span>
<span class="sd"> remove_sbmy : bool, optional</span>
<span class="sd"> Whether to remove most Simbelmynë output files after use for</span>
<span class="sd"> disk space management. Default is `True`.</span>
<span class="sd"> verbosity : int, optional</span>
<span class="sd"> Verbosity level. If `None`, use self.verbosity. Default is</span>
<span class="sd"> `None`.</span>
<span class="sd"> return_g : bool, optional</span>
<span class="sd"> Whether to return the full field alongside the summary.</span>
<span class="sd"> Default is `False`.</span>
<span class="sd"> RSDs : bool, optional</span>
<span class="sd"> Whether to compute the redshift-space distortions. Default</span>
<span class="sd"> is `True`.</span>
<span class="sd"> prefix_mocks : str, optional</span>
<span class="sd"> Prefix for the mock data. If None, use self.prefix_mocks.</span>
<span class="sd"> Default is `None`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> Phi : ndarray</span>
<span class="sd"> Vector of summary statistics.</span>
<span class="sd"> g : ndarray or list of ndarray or None</span>
<span class="sd"> Observed field(s) if return_g is `True`; otherwise `None`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.path_utils</span> <span class="kn">import</span> <span class="n">get_file_names</span>
<span class="kn">from</span> <span class="nn">selfisys.sbmy_interface</span> <span class="kn">import</span> <span class="n">get_power_spectrum_from_cosmo</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Making mock data...&quot;</span><span class="p">,</span> <span class="n">verbosity</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="p">()</span>
<span class="n">names</span> <span class="o">=</span> <span class="n">get_file_names</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span><span class="p">,</span>
<span class="nb">id</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span><span class="p">,</span>
<span class="n">prefix_mocks</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix_mocks</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">,</span>
<span class="n">return_g</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># Save cosmological parameters</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_save_cosmo</span><span class="p">(</span><span class="n">cosmo</span><span class="p">,</span> <span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_cosmo&quot;</span><span class="p">],</span> <span class="n">force_cosmo</span><span class="p">)</span>
<span class="c1"># Generate the input initial matter power spectrum</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Computing initial power spectrum...&quot;</span><span class="p">,</span> <span class="n">verbosity</span><span class="p">)</span>
<span class="n">get_power_spectrum_from_cosmo</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">L</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="n">cosmo</span><span class="p">,</span> <span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_power_spectrum&quot;</span><span class="p">],</span> <span class="n">force_powerspectrum</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Computing initial power spectrum done.&quot;</span><span class="p">,</span> <span class="n">verbosity</span><span class="p">)</span>
<span class="c1"># Generate the simulated galaxy survey data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Running the forward model...&quot;</span><span class="p">,</span> <span class="n">verbosity</span><span class="p">)</span>
<span class="n">Phi</span><span class="p">,</span> <span class="n">g</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_aux_hiddenbox</span><span class="p">(</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">names</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="o">=</span><span class="n">force_parfiles</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="n">force_sim</span><span class="p">,</span>
<span class="n">force_phase</span><span class="o">=</span><span class="n">force_phase</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="n">return_g</span><span class="p">,</span>
<span class="n">RSDs</span><span class="o">=</span><span class="n">RSDs</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Running the forward model done.&quot;</span><span class="p">,</span> <span class="n">verbosity</span><span class="p">)</span>
<span class="k">if</span> <span class="n">remove_sbmy</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_outputinitialdensity&quot;</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_unindent</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Making mock data done.&quot;</span><span class="p">,</span> <span class="n">verbosity</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span><span class="n">Phi</span><span class="p">,</span> <span class="n">g</span><span class="p">)</span> <span class="k">if</span> <span class="n">return_g</span> <span class="k">else</span> <span class="n">Phi</span></div>
<div class="viewcode-block" id="HiddenBox.evaluate">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.evaluate">[docs]</a>
<span class="k">def</span> <span class="nf">evaluate</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">d</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">N</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">force_powerspectrum</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">remove_sbmy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">theta_is_p</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">simspath</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">check_output</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">RSDs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">abc</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">cosmo_vect</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">&quot;&quot;&quot;Evaluate the hidden box for a given input power spectrum.</span>
<span class="sd"> The result is deterministic (the phase is fixed), except as it</span>
<span class="sd"> is modified by nuisance parameters if any.</span>
<span class="sd"> This routine is used by `pySELFI` to compute the gradient of the</span>
<span class="sd"> hidden box with respect to the power spectrum, and by ABC-PMC to</span>
<span class="sd"> evaluate the forward model.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> theta : ndarray</span>
<span class="sd"> Power spectrum values at the support wavenumbers.</span>
<span class="sd"> d : int</span>
<span class="sd"> Direction in parameter space, from `0` to `S`.</span>
<span class="sd"> seedphase : int or list of int</span>
<span class="sd"> Seed to generate the initial white noise in Fourier space.</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the noise realisation.</span>
<span class="sd"> i : int, optional</span>
<span class="sd"> Current evaluation index of the hidden box. Default is `0`.</span>
<span class="sd"> N : int, optional</span>
<span class="sd"> Total number of evaluations of the hidden box. Default is</span>
<span class="sd"> `0`.</span>
<span class="sd"> force_powerspectrum : bool, optional</span>
<span class="sd"> If `True`, force recomputation of the power spectrum at the</span>
<span class="sd"> values of the Fourier grid. Default is `False`.</span>
<span class="sd"> force_parfiles : bool, optional</span>
<span class="sd"> If `True`, overwrite existing parameter files. Default is</span>
<span class="sd"> `False`.</span>
<span class="sd"> force_sim : bool, optional</span>
<span class="sd"> If `True`, rerun the simulation even if the output density</span>
<span class="sd"> already exists. Default is `False`.</span>
<span class="sd"> remove_sbmy : bool, optional</span>
<span class="sd"> If `True`, remove Simbelmynë output files from disk. Default</span>
<span class="sd"> is `False`.</span>
<span class="sd"> theta_is_p : bool, optional</span>
<span class="sd"> Set to `True` if `theta` is already an unnormalised power</span>
<span class="sd"> spectrum. Default is `False`.</span>
<span class="sd"> simspath : str, optional</span>
<span class="sd"> Path to the simulations directory. Default is `None`.</span>
<span class="sd"> check_output : bool, optional</span>
<span class="sd"> If `True`, check the integrity of the output file and</span>
<span class="sd"> recompute if corrupted. Default is `False`.</span>
<span class="sd"> RSDs : bool, optional</span>
<span class="sd"> Whether to compute redshift-space distortions. Default is</span>
<span class="sd"> `True`.</span>
<span class="sd"> abc : bool or str, optional</span>
<span class="sd"> If not False, remove most output files after evaluation.</span>
<span class="sd"> Default is `False`.</span>
<span class="sd"> cosmo_vect : ndarray, optional</span>
<span class="sd"> Cosmological parameters. Required if `abc` is `True`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> Phi : ndarray</span>
<span class="sd"> Vector of summary statistics.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.path_utils</span> <span class="kn">import</span> <span class="n">file_names_evaluate</span>
<span class="k">if</span> <span class="n">abc</span> <span class="ow">and</span> <span class="n">cosmo_vect</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;cosmo_vect must be provided when using ABC.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">abc</span> <span class="ow">and</span> <span class="n">cosmo_vect</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;cosmo_vect must not be provided when not using ABC.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">theta_is_p</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span>
<span class="mi">1</span><span class="p">,</span>
<span class="sa">f</span><span class="s2">&quot;Direction </span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">. Evaluating hidden box (index </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">N</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)...&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="p">()</span>
<span class="n">simdir</span> <span class="o">=</span> <span class="n">simspath</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span>
<span class="n">simdir_d</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">simdir</span><span class="p">,</span> <span class="n">joinstrs_only</span><span class="p">([</span><span class="s2">&quot;pool/&quot;</span><span class="p">,</span> <span class="n">abc</span><span class="p">,</span> <span class="s2">&quot;d&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">d</span><span class="p">)]))</span>
<span class="c1"># Get the file names for the current evaluation</span>
<span class="n">names</span> <span class="o">=</span> <span class="n">file_names_evaluate</span><span class="p">(</span>
<span class="n">simdir</span><span class="p">,</span>
<span class="n">simdir_d</span><span class="p">,</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">i</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">prefix_mocks</span><span class="p">,</span>
<span class="n">abc</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">fname_power_spectrum</span> <span class="o">=</span> <span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_power_spectrum&quot;</span><span class="p">]</span>
<span class="n">fname_simparfile</span> <span class="o">=</span> <span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_simparfile&quot;</span><span class="p">]</span>
<span class="n">fname_whitenoise</span> <span class="o">=</span> <span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_whitenoise&quot;</span><span class="p">]</span>
<span class="n">fname_outputinitialdensity</span> <span class="o">=</span> <span class="n">names</span><span class="p">[</span><span class="s2">&quot;fname_outputinitialdensity&quot;</span><span class="p">]</span>
<span class="c1"># Interpolate the power spectrum values over the Fourier grid</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Interpolating spectrum over the Fourier grid...&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_power_spectrum_from_theta</span><span class="p">(</span>
<span class="n">theta</span><span class="p">,</span> <span class="n">fname_power_spectrum</span><span class="p">,</span> <span class="n">theta_is_p</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="n">force_powerspectrum</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Interpolating spectrum over the Fourier grid done.&quot;</span><span class="p">)</span>
<span class="c1"># Compute the simulated data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Generating observed summary...&quot;</span><span class="p">)</span>
<span class="n">Phi</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_aux_hiddenbox</span><span class="p">(</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">names</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="n">force_sim</span><span class="p">,</span>
<span class="n">force_phase</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">check_output</span><span class="o">=</span><span class="n">check_output</span><span class="p">,</span>
<span class="n">RSDs</span><span class="o">=</span><span class="n">RSDs</span><span class="p">,</span>
<span class="n">sample</span><span class="o">=</span><span class="n">cosmo_vect</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Generating observed summary done.&quot;</span><span class="p">)</span>
<span class="c1"># Clean up the output files</span>
<span class="k">if</span> <span class="n">remove_sbmy</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">fname_outputinitialdensity</span><span class="p">)</span>
<span class="k">if</span> <span class="n">abc</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">fname_power_spectrum</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">fname_simparfile</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">fname_whitenoise</span><span class="p">)</span>
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">simdir_d</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="n">f</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;output_realdensity_d</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">_p</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">simdir_d</span><span class="p">,</span> <span class="n">f</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">f</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;output_realdensity_d</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">_p</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">simdir_d</span><span class="p">,</span> <span class="n">f</span><span class="p">))</span>
<span class="k">if</span> <span class="n">f</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;output_density_d</span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">_p</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">simdir_d</span><span class="p">,</span> <span class="n">f</span><span class="p">))</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_clean_output</span><span class="p">(</span><span class="n">fname_outputinitialdensity</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">theta_is_p</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_unindent</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span>
<span class="mi">1</span><span class="p">,</span>
<span class="sa">f</span><span class="s2">&quot;Direction </span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">. Evaluation done (index </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">N</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">).&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="k">return</span> <span class="n">Phi</span></div>
<div class="viewcode-block" id="HiddenBox.switch_recompute_pool">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.switch_recompute_pool">[docs]</a>
<span class="k">def</span> <span class="nf">switch_recompute_pool</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix_mocks</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Toggle recomputation of the pool for future `compute_pool`</span>
<span class="sd"> calls.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> prefix_mocks : str, optional</span>
<span class="sd"> Prefix for the future simulation files. Default is `None`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_force_recompute_mocks</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_recompute_mocks</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_prefix_mocks</span> <span class="o">=</span> <span class="n">prefix_mocks</span> <span class="k">if</span> <span class="n">prefix_mocks</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="HiddenBox.switch_setup">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.switch_setup">[docs]</a>
<span class="k">def</span> <span class="nf">switch_setup</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Toggle the setup-only mode.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_setup_only</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">setup_only</span></div>
<div class="viewcode-block" id="HiddenBox.compute_pool">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.compute_pool">[docs]</a>
<span class="k">def</span> <span class="nf">compute_pool</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">d</span><span class="p">,</span>
<span class="n">pool_fname</span><span class="p">,</span>
<span class="n">N</span><span class="p">,</span>
<span class="n">index</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">force_powerspectrum</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">remove_sbmy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">theta_is_p</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">simspath</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">bar</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute a pool of realisations of the hidden box compatible</span>
<span class="sd"> with `pySELFI`.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> theta : ndarray</span>
<span class="sd"> Power spectrum values at the support wavenumbers.</span>
<span class="sd"> d : int</span>
<span class="sd"> Direction in parameter space, from 0 to S.</span>
<span class="sd"> pool_fname : str</span>
<span class="sd"> Filename for the pool.</span>
<span class="sd"> N : int</span>
<span class="sd"> Number of realisations required at the given direction.</span>
<span class="sd"> index : int, optional</span>
<span class="sd"> Index of a single simulation to run. Default is `None`.</span>
<span class="sd"> force_powerspectrum : bool, optional</span>
<span class="sd"> If True, force recomputation of the power spectrum. Default</span>
<span class="sd"> is `False`.</span>
<span class="sd"> force_parfiles : bool, optional</span>
<span class="sd"> If True, overwrite existing parameter files. Default is</span>
<span class="sd"> `False`.</span>
<span class="sd"> force_sim : bool, optional</span>
<span class="sd"> If True, rerun the simulation even if the output density</span>
<span class="sd"> already exists. Default is `False`.</span>
<span class="sd"> remove_sbmy : bool, optional</span>
<span class="sd"> If True, remove Simbelmynë output files from disk. Default</span>
<span class="sd"> is `False`.</span>
<span class="sd"> theta_is_p : bool, optional</span>
<span class="sd"> Set to True when `theta` is already an unnormalised power</span>
<span class="sd"> spectrum. Default is `False`.</span>
<span class="sd"> simspath : str, optional</span>
<span class="sd"> Path indicating where to store the simulations. Default is</span>
<span class="sd"> `None`.</span>
<span class="sd"> bar : bool, optional</span>
<span class="sd"> If True, display a progress bar. Default is `False`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> p : Pool</span>
<span class="sd"> Simulation pool object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">tqdm.auto</span> <span class="k">as</span> <span class="nn">tqdm</span>
<span class="kn">from</span> <span class="nn">pyselfi.pool</span> <span class="kn">import</span> <span class="n">pool</span> <span class="k">as</span> <span class="n">Pool</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Computing a pool of realisations of the hidden box...&quot;</span><span class="p">)</span>
<span class="n">pool_fname</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pool_fname</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_recompute_mocks</span><span class="p">:</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">pool_fname</span><span class="p">):</span>
<span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">pool_fname</span><span class="p">)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">Pool</span><span class="p">(</span><span class="n">pool_fname</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">retro</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">ids</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">))</span> <span class="k">if</span> <span class="n">index</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[</span><span class="n">index</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">worker</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
<span class="n">this_seedphase</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_current_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__global_seedphase</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="n">this_seednoise</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_current_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__global_seednoise</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fixnoise</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="n">Phi</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span>
<span class="n">theta</span><span class="p">,</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">this_seedphase</span><span class="p">,</span>
<span class="n">this_seednoise</span><span class="p">,</span>
<span class="n">i</span><span class="o">=</span><span class="n">i</span><span class="p">,</span>
<span class="n">N</span><span class="o">=</span><span class="n">N</span><span class="p">,</span>
<span class="n">force_powerspectrum</span><span class="o">=</span><span class="n">force_powerspectrum</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="o">=</span><span class="n">force_parfiles</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="n">force_sim</span><span class="p">,</span>
<span class="n">remove_sbmy</span><span class="o">=</span><span class="n">remove_sbmy</span><span class="p">,</span>
<span class="n">theta_is_p</span><span class="o">=</span><span class="n">theta_is_p</span><span class="p">,</span>
<span class="n">simspath</span><span class="o">=</span><span class="n">simspath</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">add_sim</span><span class="p">(</span><span class="n">Phi</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="n">iterator</span> <span class="o">=</span> <span class="n">tqdm</span><span class="o">.</span><span class="n">tqdm</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Direction </span><span class="si">{</span><span class="n">d</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="n">bar</span> <span class="k">else</span> <span class="n">ids</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">iterator</span><span class="p">:</span>
<span class="n">worker</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="k">if</span> <span class="n">index</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">p</span><span class="o">.</span><span class="n">load_sims</span><span class="p">()</span>
<span class="n">p</span><span class="o">.</span><span class="n">save_all</span><span class="p">()</span>
<span class="k">return</span> <span class="n">p</span></div>
<div class="viewcode-block" id="HiddenBox.load_pool">
<a class="viewcode-back" href="../../selfisys.hiddenbox.html#selfisys.hiddenbox.HiddenBox.load_pool">[docs]</a>
<span class="k">def</span> <span class="nf">load_pool</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pool_fname</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Load a pool of realisations of the hidden box.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> pool_fname : str</span>
<span class="sd"> Filename of the pool to load.</span>
<span class="sd"> N : int</span>
<span class="sd"> Number of realisations in the pool.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> p : Pool</span>
<span class="sd"> Simulation pool object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">pyselfi.pool</span> <span class="kn">import</span> <span class="n">pool</span> <span class="k">as</span> <span class="n">Pool</span>
<span class="n">pool_fname</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pool_fname</span><span class="p">)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">Pool</span><span class="p">(</span><span class="n">pool_fname</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">retro</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">load_sims</span><span class="p">()</span>
<span class="n">p</span><span class="o">.</span><span class="n">save_all</span><span class="p">()</span>
<span class="k">return</span> <span class="n">p</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">Npop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Number of populations.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Npop</span>
<span class="nd">@Npop</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">Npop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute the number of populations.&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span> <span class="o">==</span> <span class="s2">&quot;multiple_lognormal&quot;</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">selection_params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Npop</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selection_params</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span><span class="p">)</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Npop</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Length of linear_bias must match the number of populations.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span><span class="p">)</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Npop</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Length of norm_csts must match the number of populations.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Selection parameters are required for multiple_lognormal radial selection.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Npop</span> <span class="o">=</span> <span class="mi">1</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">gravity_on</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Whether gravity is enabled.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_gravity_on</span>
<span class="nd">@gravity_on</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">gravity_on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute and set the gravity status.&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_gravity_on</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;nograv&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_gravity_on</span> <span class="o">=</span> <span class="kc">True</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">Ntimesteps</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Number of time steps.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Ntimesteps</span>
<span class="nd">@Ntimesteps</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">Ntimesteps</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute and set the number of time steps.&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;splitLPT&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Ntimesteps</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">eff_redshifts</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;split&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Ntimesteps</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TimeStepDistribution</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;nograv&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Ntimesteps</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Ntimesteps</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Ntimesteps</span> <span class="o">=</span> <span class="kc">None</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">force_recompute_mocks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Whether to force recomputation of mocks.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_force_recompute_mocks</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">setup_only</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Whether to only set up the hidden box.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_setup_only</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">prefix_mocks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Prefix for the mocks.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefix_mocks</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">modified_selfi</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Whether to use the modified selfi.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_modified_selfi</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">force_neglect_lightcone</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Whether to force neglecting the lightcone.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_force_neglect_lightcone</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">Psingle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Number of summary statistics for each population.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_Psingle</span>
<span class="nd">@Psingle</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">Psingle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Dimension of the summary statistics for a single population,</span>
<span class="sd"> if relevant.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span> <span class="o">==</span> <span class="s2">&quot;multiple_lognormal&quot;</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Psingle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">P</span> <span class="o">//</span> <span class="bp">self</span><span class="o">.</span><span class="n">Npop</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_Psingle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">P</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">__global_seedphase</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seedphase</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">__global_seednoise</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seednoise</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">__global_seednorm</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Global seed for the normalisation constants.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seednorm</span>
<span class="k">def</span> <span class="nf">_set_defaults</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Set default values and ensure consistency of the hidden box</span>
<span class="sd"> configuration.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;modeldir&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">modeldir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_force_recompute_mocks</span> <span class="o">=</span> <span class="kc">False</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_setup_only</span> <span class="o">=</span> <span class="kc">False</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_prefix_mocks</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_modified_selfi</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_force_neglect_lightcone</span> <span class="o">=</span> <span class="kc">False</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">k_s</span><span class="p">)</span>
<span class="c1"># The following attributes are set by the setters</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Ntimesteps</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Npop</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span><span class="p">)</span> <span class="ow">or</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Psingle</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_init_survey_mask</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reset</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Initialise the survey mask and save it to disk in binary</span>
<span class="sd"> format.</span>
<span class="sd"> The survey mask C(n) represents the angular selection function</span>
<span class="sd"> of the survey.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_mask_prefix</span><span class="p">:</span>
<span class="n">mask_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">local_mask_prefix</span><span class="si">}</span><span class="s2">_survey_mask_binary.h5&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">mask_filename</span> <span class="o">=</span> <span class="s2">&quot;survey_mask_binary.h5&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local_mask_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modeldir</span><span class="p">,</span> <span class="n">mask_filename</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_mask_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">reset</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">survey_mask_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">survey_mask</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">survey_mask_path</span><span class="p">)</span>
<span class="n">survey_mask_binary</span> <span class="o">=</span> <span class="p">(</span><span class="n">survey_mask</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
<span class="k">del</span> <span class="n">survey_mask</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">survey_mask_binary</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">]</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">int</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="bp">self</span><span class="o">.</span><span class="n">local_mask_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">f</span><span class="o">.</span><span class="n">create_dataset</span><span class="p">(</span><span class="s2">&quot;survey_mask_binary&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">survey_mask_binary</span><span class="p">)</span>
<span class="k">del</span> <span class="n">survey_mask_binary</span>
<span class="n">collect</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_init_radial_selection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reset</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Initialise the radial selection function R(r) and save it to</span>
<span class="sd"> disk.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span> <span class="o">==</span> <span class="s2">&quot;multiple_lognormal&quot;</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">selfisys.selection_functions</span> <span class="kn">import</span> <span class="n">LognormalSelection</span>
<span class="c1"># Set the normalisation constants</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">Npop</span>
<span class="c1"># Initialise the radial selection functions</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_mask_prefix</span><span class="p">:</span>
<span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">local_mask_prefix</span><span class="si">}</span><span class="s2">_select_fct.h5&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">filename</span> <span class="o">=</span> <span class="s2">&quot;select_fct.h5&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local_select_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modeldir</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
<span class="n">LogNorm</span> <span class="o">=</span> <span class="n">LognormalSelection</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">L</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selection_params</span><span class="p">,</span>
<span class="n">survey_mask_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">survey_mask_path</span><span class="p">,</span>
<span class="n">local_select_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_select_path</span><span class="p">,</span>
<span class="n">size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">LogNorm</span><span class="o">.</span><span class="n">init_selection</span><span class="p">(</span><span class="n">reset</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">reset</span> <span class="ow">or</span> <span class="n">reset</span><span class="p">)</span>
<span class="k">del</span> <span class="n">LogNorm</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span> <span class="o">=</span> <span class="mf">1.0</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Unknown or unimplemented selection function: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="p">)</span>
<span class="k">def</span> <span class="nf">_PrintMessage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">required_verbosity</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">verbosity</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Print a message to standard output using PrintMessage from</span>
<span class="sd"> pyselfi.utils.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.selfi_interface</span> <span class="kn">import</span> <span class="n">PrintMessage</span>
<span class="n">PrintMessage</span><span class="p">(</span><span class="n">required_verbosity</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">verbosity</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">verbosity</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_indent</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Indents the standard output using INDENT from</span>
<span class="sd"> pyselfi.utils.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.selfi_interface</span> <span class="kn">import</span> <span class="n">indent</span>
<span class="n">indent</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_unindent</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Unindents the standard output using UNINDENT from</span>
<span class="sd"> pyselfi.utils.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.selfi_interface</span> <span class="kn">import</span> <span class="n">unindent</span>
<span class="n">unindent</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_save_cosmo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cosmo</span><span class="p">,</span> <span class="n">fname_cosmo</span><span class="p">,</span> <span class="n">force_cosmo</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Save cosmological parameters in JSON format.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> cosmo : dict</span>
<span class="sd"> Cosmological parameters (and infrastructure parameters) to</span>
<span class="sd"> be saved.</span>
<span class="sd"> fname_cosmo : str</span>
<span class="sd"> Name of the output JSON file.</span>
<span class="sd"> force_cosmo : bool, optional</span>
<span class="sd"> If True, overwrite the file if it already exists. Default is</span>
<span class="sd"> `False`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">os.path</span> <span class="kn">import</span> <span class="n">exists</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">exists</span><span class="p">(</span><span class="n">fname_cosmo</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force_cosmo</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">json</span> <span class="kn">import</span> <span class="n">dump</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">fname_cosmo</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
<span class="n">dump</span><span class="p">(</span><span class="n">cosmo</span><span class="p">,</span> <span class="n">fp</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_add_noise</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">seednoise</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Add noise to a realisation in physical space.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> g : ndarray</span>
<span class="sd"> Field to which the noise is added (modified in place).</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the noise realisation.</span>
<span class="sd"> field : ndarray, optional</span>
<span class="sd"> Selection function to apply to the input field. Default is</span>
<span class="sd"> `None`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">noise_std</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">random</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">,</span> <span class="n">ones_like</span>
<span class="kn">from</span> <span class="nn">h5py</span> <span class="kn">import</span> <span class="n">File</span>
<span class="k">if</span> <span class="n">seednoise</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">rng</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">default_rng</span><span class="p">(</span><span class="n">seednoise</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Seednoise must be provided and cannot be None.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">field</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">field</span> <span class="o">=</span> <span class="n">ones_like</span><span class="p">(</span><span class="n">g</span><span class="p">)</span>
<span class="n">N</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">observed_density</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">observed_density</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="mf">1.0</span>
<span class="n">noise</span> <span class="o">=</span> <span class="n">rng</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span>
<span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">),</span>
<span class="n">scale</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">noise_std</span> <span class="o">*</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">N</span> <span class="o">*</span> <span class="n">field</span><span class="p">),</span>
<span class="p">)</span>
<span class="k">with</span> <span class="n">File</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_mask_path</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">mask</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="s2">&quot;survey_mask_binary&quot;</span><span class="p">][:]</span>
<span class="n">noise</span> <span class="o">*=</span> <span class="n">mask</span>
<span class="n">g</span> <span class="o">+=</span> <span class="n">noise</span>
<span class="k">del</span> <span class="n">noise</span>
<span class="n">collect</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_get_density_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delta_g_dm</span><span class="p">,</span> <span class="n">bias</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Apply galaxy bias to a dark matter overdensity field.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> delta_g_dm : ndarray</span>
<span class="sd"> Dark matter density contrast in physical space.</span>
<span class="sd"> bias : float</span>
<span class="sd"> Linear bias factor.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> delta_g : ndarray</span>
<span class="sd"> Galaxy density or overdensity field.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">bias</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">bias</span> <span class="o">=</span> <span class="mf">1.0</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bias</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Bias must be a float.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">observed_density</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">delta_g</span> <span class="o">=</span> <span class="n">bias</span> <span class="o">*</span> <span class="n">delta_g_dm</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">delta_g</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">observed_density</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">bias</span> <span class="o">*</span> <span class="n">delta_g_dm</span><span class="p">)</span>
<span class="k">return</span> <span class="n">delta_g</span>
<span class="k">def</span> <span class="nf">_repaint_and_get_Phi</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">g_obj</span><span class="p">,</span>
<span class="n">norm</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">bias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">field</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Repaint a realisation in physical space and compute its</span>
<span class="sd"> summary statistics.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> g_obj : Field</span>
<span class="sd"> Input field object.</span>
<span class="sd"> norm : ndarray</span>
<span class="sd"> Normalisation constants for the summary statistics.</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the noise realisation.</span>
<span class="sd"> bias : float, optional</span>
<span class="sd"> Bias to apply to the input field. Default is `None`.</span>
<span class="sd"> field : ndarray, optional</span>
<span class="sd"> Selection function. Reused as output to save memory</span>
<span class="sd"> allocations. Default is `None`.</span>
<span class="sd"> return_g : bool, optional</span>
<span class="sd"> If True, returns the full field. Default is `False`.</span>
<span class="sd"> AliasingCorr : bool, optional</span>
<span class="sd"> Whether to apply aliasing correction. Default is `True`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> Phi : ndarray</span>
<span class="sd"> Vector of summary statistics.</span>
<span class="sd"> delta_g : ndarray or None</span>
<span class="sd"> Realisation in physical space if return_g is True; None</span>
<span class="sd"> otherwise.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">copy</span>
<span class="kn">from</span> <span class="nn">selfisys.sbmy_interface</span> <span class="kn">import</span> <span class="n">compute_Phi</span>
<span class="k">if</span> <span class="n">bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bias</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Bias must be a float.&quot;</span><span class="p">)</span>
<span class="n">g_obj_local</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">g_obj</span><span class="p">)</span>
<span class="n">g_obj_local</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_density_field</span><span class="p">(</span><span class="n">g_obj_local</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span>
<span class="k">if</span> <span class="n">field</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">g_obj_local</span><span class="o">.</span><span class="n">data</span> <span class="o">*=</span> <span class="n">field</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_add_noise</span><span class="p">(</span><span class="n">g_obj_local</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">seednoise</span><span class="o">=</span><span class="n">seednoise</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">)</span>
<span class="n">Phi</span> <span class="o">=</span> <span class="n">compute_Phi</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">G_ss_path</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">P_ss_path</span><span class="p">,</span>
<span class="n">g_obj_local</span><span class="p">,</span>
<span class="n">norm</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">verbosity</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">delta_g</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">g_obj_local</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="k">if</span> <span class="n">return_g</span> <span class="k">else</span> <span class="kc">None</span>
<span class="k">del</span> <span class="n">g_obj_local</span>
<span class="n">collect</span><span class="p">()</span>
<span class="k">return</span> <span class="n">Phi</span><span class="p">,</span> <span class="n">delta_g</span>
<span class="k">def</span> <span class="nf">_apply_selection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fnames_outputdensity</span><span class="p">,</span> <span class="n">seednoise</span><span class="p">,</span> <span class="n">return_g</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">AliasingCorr</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Apply the selection function to a realisation in physical</span>
<span class="sd"> space.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> fnames_outputdensity : list of str</span>
<span class="sd"> Filenames of the output density fields.</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the noise realisation.</span>
<span class="sd"> return_g : bool, optional</span>
<span class="sd"> If True, returns the full field(s). Default is `False`.</span>
<span class="sd"> AliasingCorr : bool, optional</span>
<span class="sd"> Whether to apply aliasing correction. Default is `True`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> Phi_tot : ndarray</span>
<span class="sd"> Concatenated summary statistics for each population.</span>
<span class="sd"> gs : list of ndarray or None</span>
<span class="sd"> List of full fields in physical space if return_g is True;</span>
<span class="sd"> None otherwise.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">pysbmy.field</span> <span class="kn">import</span> <span class="n">read_basefield</span>
<span class="n">split</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;split&quot;</span><span class="p">,</span> <span class="s2">&quot;custom&quot;</span><span class="p">])</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">split</span><span class="p">:</span>
<span class="n">g_obj</span> <span class="o">=</span> <span class="n">read_basefield</span><span class="p">(</span><span class="n">fnames_outputdensity</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_neglect_lightcone</span><span class="p">:</span>
<span class="n">g_obj</span> <span class="o">=</span> <span class="n">read_basefield</span><span class="p">(</span><span class="n">fnames_outputdensity</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">radial_selection</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">Phi_tot</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">gs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">ifct</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Npop</span><span class="p">):</span>
<span class="k">if</span> <span class="n">split</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_neglect_lightcone</span><span class="p">:</span>
<span class="n">g_obj</span> <span class="o">=</span> <span class="n">read_basefield</span><span class="p">(</span><span class="n">fnames_outputdensity</span><span class="p">[</span><span class="n">ifct</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="bp">self</span><span class="o">.</span><span class="n">local_select_path</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">field</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="s2">&quot;select_fct&quot;</span><span class="p">][</span><span class="n">ifct</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span>
<span class="n">bias</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span><span class="p">[</span><span class="n">ifct</span><span class="p">])</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span>
<span class="n">Phi</span><span class="p">,</span> <span class="n">g_out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_repaint_and_get_Phi</span><span class="p">(</span>
<span class="n">g_obj</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span><span class="p">[</span><span class="n">ifct</span><span class="p">],</span>
<span class="n">seednoise</span><span class="o">=</span><span class="n">seednoise</span><span class="p">,</span>
<span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span>
<span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="n">return_g</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="o">=</span><span class="n">AliasingCorr</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">Phi_tot</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">([</span><span class="n">Phi_tot</span><span class="p">,</span> <span class="n">Phi</span><span class="p">])</span>
<span class="k">if</span> <span class="n">return_g</span><span class="p">:</span>
<span class="n">gs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">g_out</span><span class="p">)</span>
<span class="k">del</span> <span class="n">g_out</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">Phi_tot</span><span class="p">,</span> <span class="n">gs</span> <span class="k">if</span> <span class="n">return_g</span> <span class="k">else</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">h5py</span> <span class="kn">import</span> <span class="n">File</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_mask_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">with</span> <span class="n">File</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_mask_path</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">field</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="s2">&quot;survey_mask_binary&quot;</span><span class="p">][:]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">field</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">split</span><span class="p">:</span>
<span class="n">bias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span>
<span class="n">Phi_tot</span><span class="p">,</span> <span class="n">delta_g</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_repaint_and_get_Phi</span><span class="p">(</span>
<span class="n">g_obj</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span><span class="p">,</span>
<span class="n">seednoise</span><span class="o">=</span><span class="n">seednoise</span><span class="p">,</span>
<span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span>
<span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="n">return_g</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="o">=</span><span class="n">AliasingCorr</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">(</span><span class="n">Phi_tot</span><span class="p">,</span> <span class="p">[</span><span class="n">delta_g</span><span class="p">])</span> <span class="k">if</span> <span class="n">return_g</span> <span class="k">else</span> <span class="p">(</span><span class="n">Phi_tot</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">Phi_tot</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">gs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">ifct</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span><span class="p">)):</span>
<span class="n">bias</span> <span class="o">=</span> <span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span>
<span class="k">else</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span><span class="p">[</span><span class="n">ifct</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">linear_bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">g_obj</span> <span class="o">=</span> <span class="n">read_basefield</span><span class="p">(</span><span class="n">fnames_outputdensity</span><span class="p">[</span><span class="n">ifct</span><span class="p">])</span>
<span class="n">Phi</span><span class="p">,</span> <span class="n">g_out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_repaint_and_get_Phi</span><span class="p">(</span>
<span class="n">g_obj</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">norm_csts</span><span class="p">,</span>
<span class="n">seednoise</span><span class="o">=</span><span class="n">seednoise</span><span class="p">,</span>
<span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span>
<span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="n">return_g</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="o">=</span><span class="n">AliasingCorr</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">Phi_tot</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">([</span><span class="n">Phi_tot</span><span class="p">,</span> <span class="n">Phi</span><span class="p">])</span>
<span class="k">if</span> <span class="n">return_g</span><span class="p">:</span>
<span class="n">gs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">g_out</span><span class="p">)</span>
<span class="k">del</span> <span class="n">g_out</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">Phi_tot</span><span class="p">,</span> <span class="n">gs</span> <span class="k">if</span> <span class="n">return_g</span> <span class="k">else</span> <span class="kc">None</span>
<span class="k">del</span> <span class="n">field</span><span class="p">,</span> <span class="n">g_obj</span>
<span class="n">collect</span><span class="p">()</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">_setup_parfiles</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">cosmology</span><span class="p">,</span>
<span class="n">file_names</span><span class="p">,</span>
<span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Sets up Simbelmynë parameter file given the necessary inputs</span>
<span class="sd"> (please refer to the Simbelmynë documentation for more details).</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> d : int</span>
<span class="sd"> index giving the direction in parameter space:</span>
<span class="sd"> -1 for mock data, 0 for the expansion point, or from 1 to S</span>
<span class="sd"> cosmology : array, double, dimension=5</span>
<span class="sd"> cosmological parameters</span>
<span class="sd"> file_names : dict</span>
<span class="sd"> Dictionary containing the names of the input and output</span>
<span class="sd"> files.</span>
<span class="sd"> force : bool, optional, default=False</span>
<span class="sd"> overwrite if files already exists?</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.sbmy_interface</span> <span class="kn">import</span> <span class="n">setup_sbmy_parfiles</span>
<span class="n">hiddenbox_params</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;Npop&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">Npop</span><span class="p">,</span>
<span class="s2">&quot;TimeSteps&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">TimeSteps</span><span class="p">,</span>
<span class="s2">&quot;eff_redshifts&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">eff_redshifts</span><span class="p">,</span>
<span class="s2">&quot;sim_params&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="p">,</span>
<span class="s2">&quot;Ntimesteps&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">Ntimesteps</span><span class="p">,</span>
<span class="s2">&quot;TimeStepDistribution&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">TimeStepDistribution</span><span class="p">,</span>
<span class="s2">&quot;modified_selfi&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">modified_selfi</span><span class="p">,</span>
<span class="s2">&quot;Np0&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">Np0</span><span class="p">,</span>
<span class="s2">&quot;Npm0&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">Npm0</span><span class="p">,</span>
<span class="s2">&quot;size&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span>
<span class="s2">&quot;L&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">L</span><span class="p">,</span>
<span class="s2">&quot;fsimdir&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span><span class="p">,</span>
<span class="p">}</span>
<span class="n">setup_sbmy_parfiles</span><span class="p">(</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">cosmology</span><span class="p">,</span>
<span class="n">file_names</span><span class="p">,</span>
<span class="n">hiddenbox_params</span><span class="p">,</span>
<span class="n">force</span><span class="p">,</span>
<span class="p">)</span>
<span class="k">def</span> <span class="nf">_run_sim</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">fname_simparfile</span><span class="p">,</span>
<span class="n">fname_simlogs</span><span class="p">,</span>
<span class="n">fnames_outputdensity</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">check_output</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Run a simulation with Simbelmynë.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> fname_simparfile : str</span>
<span class="sd"> Name of the input parameter file.</span>
<span class="sd"> fname_simlogs : str</span>
<span class="sd"> Name of the output Simbelmynë logs.</span>
<span class="sd"> fnames_outputdensity : list of str</span>
<span class="sd"> Names of the output density fields to be written.</span>
<span class="sd"> force_sim : bool, optional</span>
<span class="sd"> If True, force recomputation if output density already</span>
<span class="sd"> exists.</span>
<span class="sd"> Default is `False`.</span>
<span class="sd"> check_output : bool, optional</span>
<span class="sd"> If True, check the integrity of the output files and</span>
<span class="sd"> recompute if corrupted. Default is `False`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">glob</span> <span class="kn">import</span> <span class="n">glob</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.parser</span> <span class="kn">import</span> <span class="n">check_files_exist</span>
<span class="n">split</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_params</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;split&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">check_files_exist</span><span class="p">(</span><span class="n">fnames_outputdensity</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force_sim</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">pysbmy</span> <span class="kn">import</span> <span class="n">pySbmy</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">split</span><span class="p">:</span>
<span class="n">pySbmy</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">fname_simparfile</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">Npop</span><span class="si">}</span><span class="s2">.sbmy&quot;</span><span class="p">,</span> <span class="n">fname_simlogs</span><span class="p">)</span>
<span class="k">else</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="bp">self</span><span class="o">.</span><span class="n">Ntimesteps</span><span class="p">):</span>
<span class="n">pySbmy</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">fname_simparfile</span><span class="si">}</span><span class="s2">_pop</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">.sbmy&quot;</span><span class="p">,</span> <span class="n">fname_simlogs</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">check_output</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">pysbmy.field</span> <span class="kn">import</span> <span class="n">read_basefield</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">fname</span> <span class="ow">in</span> <span class="n">fnames_outputdensity</span><span class="p">:</span>
<span class="n">g</span> <span class="o">=</span> <span class="n">read_basefield</span><span class="p">(</span><span class="n">fname</span><span class="p">)</span>
<span class="k">del</span> <span class="n">g</span>
<span class="n">collect</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">pysbmy</span> <span class="kn">import</span> <span class="n">pySbmy</span>
<span class="k">for</span> <span class="n">fname</span> <span class="ow">in</span> <span class="n">fnames_outputdensity</span><span class="p">:</span>
<span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">fname</span><span class="p">)</span>
<span class="n">pySbmy</span><span class="p">(</span><span class="n">fname_simparfile</span><span class="p">,</span> <span class="n">fname_simlogs</span><span class="p">)</span>
<span class="c1"># Workaround to remove unwanted Simbelmynë outputs from disk</span>
<span class="n">temp_files</span> <span class="o">=</span> <span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">,</span> <span class="s2">&quot;cola_kick_*.h5&quot;</span><span class="p">))</span>
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">temp_files</span><span class="p">:</span>
<span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
<span class="k">if</span> <span class="n">split</span><span class="p">:</span>
<span class="n">temp_files</span> <span class="o">=</span> <span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">,</span> <span class="s2">&quot;cola_snapshot_*.h5&quot;</span><span class="p">))</span>
<span class="n">temp_files</span> <span class="o">+=</span> <span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fsimdir</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">,</span> <span class="s2">&quot;lpt_psi*.h5&quot;</span><span class="p">))</span>
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">temp_files</span><span class="p">:</span>
<span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_compute_mocks</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">fnames_input</span><span class="p">,</span>
<span class="n">fname_mocks</span><span class="p">,</span>
<span class="n">return_g</span><span class="p">,</span>
<span class="n">fname_g</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Apply galaxy bias, observational effects, and compute the</span>
<span class="sd"> summary statistics.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the noise realisation.</span>
<span class="sd"> fnames_input : list of str</span>
<span class="sd"> Filenames of the input density fields.</span>
<span class="sd"> fname_mocks : str</span>
<span class="sd"> Filename to save the computed summary statistics.</span>
<span class="sd"> return_g : bool</span>
<span class="sd"> If True, return the observed field(s).</span>
<span class="sd"> fname_g : str, optional</span>
<span class="sd"> Filename to save the observed field(s) if return_g is True.</span>
<span class="sd"> AliasingCorr : bool, optional</span>
<span class="sd"> Whether to apply aliasing correction. Default is `True`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> Phi : ndarray</span>
<span class="sd"> Vector of summary statistics.</span>
<span class="sd"> g_out : ndarray or list of ndarray or None</span>
<span class="sd"> Observed field(s) if return_g is True; otherwise None.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">return_g</span> <span class="ow">and</span> <span class="n">fname_g</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Filename for the observed field must be provided.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fname_mocks</span><span class="p">))</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_recompute_mocks</span><span class="p">:</span>
<span class="n">Phi</span><span class="p">,</span> <span class="n">g_out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_apply_selection</span><span class="p">(</span>
<span class="n">fnames_input</span><span class="p">,</span>
<span class="n">seednoise</span><span class="o">=</span><span class="n">seednoise</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="n">return_g</span><span class="p">,</span>
<span class="n">AliasingCorr</span><span class="o">=</span><span class="n">AliasingCorr</span><span class="p">,</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_mocks</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">f</span><span class="o">.</span><span class="n">create_dataset</span><span class="p">(</span><span class="s2">&quot;Phi&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">Phi</span><span class="p">)</span>
<span class="k">if</span> <span class="n">return_g</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_g</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">f</span><span class="o">.</span><span class="n">create_dataset</span><span class="p">(</span><span class="s2">&quot;g&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">g_out</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_PrintMessage</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;Using existing mock file: </span><span class="si">{</span><span class="n">fname_mocks</span><span class="si">}</span><span class="s2">&quot;</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_mocks</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">Phi</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="s2">&quot;Phi&quot;</span><span class="p">][:]</span>
<span class="k">if</span> <span class="n">return_g</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_g</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">g_out</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="s2">&quot;g&quot;</span><span class="p">][:]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">g_out</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">Phi</span><span class="p">,</span> <span class="n">g_out</span>
<span class="k">def</span> <span class="nf">_sample_omega</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">seed</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Sample cosmological parameters from the prior.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> seed : int or list of int</span>
<span class="sd"> Seed for the random number generator.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> omega_sample : ndarray</span>
<span class="sd"> Sampled cosmological parameters.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.tools</span> <span class="kn">import</span> <span class="n">sample_omega_from_prior</span>
<span class="kn">from</span> <span class="nn">selfisys.global_parameters</span> <span class="kn">import</span> <span class="n">planck_mean</span><span class="p">,</span> <span class="n">planck_cov</span>
<span class="n">ids</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">planck_mean</span><span class="p">)))</span>
<span class="k">return</span> <span class="n">sample_omega_from_prior</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">planck_mean</span><span class="p">,</span> <span class="n">planck_cov</span><span class="p">,</span> <span class="n">ids</span><span class="p">,</span> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">_aux_hiddenbox</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">seednoise</span><span class="p">,</span>
<span class="n">file_names</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_sim</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">force_phase</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">return_g</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">check_output</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">RSDs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">sample</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">&quot;&quot;&quot;Generate observations from the input initial matter power</span>
<span class="sd"> spectrum.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> d : int</span>
<span class="sd"> Index indicating the direction in parameter space (-1 for</span>
<span class="sd"> mock data, 0 for the expansion point, or from 1 to S for the</span>
<span class="sd"> gradient directions).</span>
<span class="sd"> seedphase : int or list of int</span>
<span class="sd"> Seed to generate the initial white noise in Fourier space.</span>
<span class="sd"> seednoise : int or list of int</span>
<span class="sd"> Seed to generate the observational noise realisation.</span>
<span class="sd"> file_names : dict</span>
<span class="sd"> Dictionary containing the names of the input and output</span>
<span class="sd"> files.</span>
<span class="sd"> force_parfiles : bool, optional</span>
<span class="sd"> If True, force recomputation of the parameter files. Default</span>
<span class="sd"> is `False`.</span>
<span class="sd"> force_sim : bool, optional</span>
<span class="sd"> If True, force recomputation of the simulation. Default is</span>
<span class="sd"> `False`.</span>
<span class="sd"> force_phase : bool, optional</span>
<span class="sd"> If True, force recomputation of the phase. Default is</span>
<span class="sd"> `False`.</span>
<span class="sd"> return_g : bool, optional</span>
<span class="sd"> If True, return the full realisation in physical space.</span>
<span class="sd"> Default is `False`.</span>
<span class="sd"> check_output : bool, optional</span>
<span class="sd"> If True, check the integrity of the output file and</span>
<span class="sd"> recompute if corrupted. Default is `False`.</span>
<span class="sd"> RSDs : bool, optional</span>
<span class="sd"> If True, include redshift-space distortions. Default is</span>
<span class="sd"> `True`.</span>
<span class="sd"> sample : ndarray, optional</span>
<span class="sd"> Cosmological parameters sample. If `None`, sample from the</span>
<span class="sd"> prior. Default is `None`.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> result : tuple</span>
<span class="sd"> A tuple containing:</span>
<span class="sd"> - Phi : (ndarray)</span>
<span class="sd"> Summary statistics for each population, concatenated.</span>
<span class="sd"> - g : (ndarray or list of ndarray or None)</span>
<span class="sd"> List of observed fields if return_g is True; None</span>
<span class="sd"> otherwise.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">fname_power_spectrum</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_power_spectrum&quot;</span><span class="p">]</span>
<span class="n">fname_simparfile</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_simparfile&quot;</span><span class="p">]</span>
<span class="n">fname_whitenoise</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_whitenoise&quot;</span><span class="p">]</span>
<span class="n">seedname_whitenoise</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;seedname_whitenoise&quot;</span><span class="p">]</span>
<span class="n">fname_outputinitialdensity</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_outputinitialdensity&quot;</span><span class="p">]</span>
<span class="n">fnames_outputrealspacedensity</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fnames_outputrealspacedensity&quot;</span><span class="p">]</span>
<span class="n">fnames_outputdensity</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fnames_outputdensity&quot;</span><span class="p">]</span>
<span class="n">fname_simlogs</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_simlogs&quot;</span><span class="p">]</span>
<span class="n">fname_mocks</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_mocks&quot;</span><span class="p">]</span>
<span class="n">fname_g</span> <span class="o">=</span> <span class="n">file_names</span><span class="p">[</span><span class="s2">&quot;fname_g&quot;</span><span class="p">]</span> <span class="k">if</span> <span class="n">return_g</span> <span class="k">else</span> <span class="kc">None</span>
<span class="n">sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sample_omega</span><span class="p">(</span><span class="n">seedphase</span><span class="p">)</span> <span class="k">if</span> <span class="n">sample</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sample</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">selfisys.sbmy_interface</span> <span class="kn">import</span> <span class="n">generate_white_noise_Field</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_setup_parfiles</span><span class="p">(</span>
<span class="n">d</span><span class="p">,</span>
<span class="n">sample</span><span class="p">,</span>
<span class="n">file_names</span><span class="p">,</span>
<span class="n">force_parfiles</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">generate_white_noise_Field</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">L</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">fname_whitenoise</span><span class="p">,</span>
<span class="n">seedname_whitenoise</span><span class="p">,</span>
<span class="n">force_phase</span><span class="p">,</span>
<span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">setup_only</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">gravity_on</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_run_sim</span><span class="p">(</span>
<span class="n">fname_simparfile</span><span class="p">,</span>
<span class="n">fname_simlogs</span><span class="p">,</span>
<span class="n">fnames_outputdensity</span><span class="p">,</span>
<span class="n">force_sim</span><span class="p">,</span>
<span class="n">check_output</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">fnames</span> <span class="o">=</span> <span class="n">fnames_outputdensity</span> <span class="k">if</span> <span class="n">RSDs</span> <span class="k">else</span> <span class="n">fnames_outputrealspacedensity</span>
<span class="k">else</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">selfisys.grf</span> <span class="kn">import</span> <span class="n">primordial_grf</span>
<span class="n">primordial_grf</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">L</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span>
<span class="n">seedphase</span><span class="p">,</span>
<span class="n">fname_power_spectrum</span><span class="p">,</span>
<span class="n">fname_outputinitialdensity</span><span class="p">,</span>
<span class="n">force_sim</span><span class="p">,</span>
<span class="kc">False</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">verbosity</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">fnames</span> <span class="o">=</span> <span class="p">[</span><span class="n">fname_outputinitialdensity</span><span class="p">]</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_mocks</span><span class="p">(</span><span class="n">seednoise</span><span class="p">,</span> <span class="n">fnames</span><span class="p">,</span> <span class="n">fname_mocks</span><span class="p">,</span> <span class="n">return_g</span><span class="p">,</span> <span class="n">fname_g</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[]</span> <span class="c1"># lists are mandatory for compatibility</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">_power_spectrum_from_theta</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">fname_power_spectrum</span><span class="p">,</span> <span class="n">theta_is_p</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">False</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute the power spectrum values using spline interpolation.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> theta : ndarray</span>
<span class="sd"> Vector of power spectrum values at the support wavenumbers.</span>
<span class="sd"> fname_power_spectrum : str</span>
<span class="sd"> Name of the input/output power spectrum file.</span>
<span class="sd"> theta_is_p : bool, optional</span>
<span class="sd"> If True, theta is already an unnormalised power spectrum.</span>
<span class="sd"> Default is `False`.</span>
<span class="sd"> force : bool, optional</span>
<span class="sd"> If True, force recomputation. Default is `False`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">pysbmy.power</span> <span class="kn">import</span> <span class="n">PowerSpectrum</span>
<span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fname_power_spectrum</span><span class="p">))</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">scipy.interpolate</span> <span class="kn">import</span> <span class="n">InterpolatedUnivariateSpline</span>
<span class="kn">from</span> <span class="nn">pysbmy.power</span> <span class="kn">import</span> <span class="n">FourierGrid</span>
<span class="n">PP</span> <span class="o">=</span> <span class="n">theta</span> <span class="k">if</span> <span class="n">theta_is_p</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">theta2P</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span>
<span class="n">Spline</span> <span class="o">=</span> <span class="n">InterpolatedUnivariateSpline</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">k_s</span><span class="p">,</span> <span class="n">PP</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">G_sim</span> <span class="o">=</span> <span class="n">FourierGrid</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">G_sim_path</span><span class="p">)</span>
<span class="n">power_spectrum</span> <span class="o">=</span> <span class="n">Spline</span><span class="p">(</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="p">)</span>
<span class="n">power_spectrum</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
<span class="n">P</span> <span class="o">=</span> <span class="n">PowerSpectrum</span><span class="o">.</span><span class="n">from_FourierGrid</span><span class="p">(</span><span class="n">G_sim</span><span class="p">,</span> <span class="n">powerspectrum</span><span class="o">=</span><span class="n">power_spectrum</span><span class="p">)</span>
<span class="n">P</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">fname_power_spectrum</span><span class="p">)</span>
<span class="k">del</span> <span class="n">G_sim</span>
<span class="n">collect</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_clean_output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fname_output</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Remove a file from disk if it exists.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> fname_output : str</span>
<span class="sd"> Name of the file to remove.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">fname_output</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fname_output</span><span class="p">):</span>
<span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">fname_output</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_current_seed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent_seed</span><span class="p">,</span> <span class="n">fixed_seed</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Return the current seed for the i-th realisation.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> parent_seed : int or list of int</span>
<span class="sd"> The parent seed.</span>
<span class="sd"> fixed_seed : bool</span>
<span class="sd"> If True, use the parent seed directly.</span>
<span class="sd"> i : int</span>
<span class="sd"> Index of the current realisation.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> this_seed : int or list of int</span>
<span class="sd"> The seed for the current realisation.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">fixed_seed</span><span class="p">:</span>
<span class="n">this_seed</span> <span class="o">=</span> <span class="n">parent_seed</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">this_seed</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">parent_seed</span><span class="p">]</span>
<span class="k">return</span> <span class="n">this_seed</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, Tristan Hoellinger.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>