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

645 lines
No EOL
81 KiB
HTML

<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>selfisys.setup_model &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.setup_model</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.setup_model</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;</span>
<span class="sd">Set up parameters related to the grid and the fiducial power spectrum.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">os.path</span>
<span class="kn">import</span> <span class="nn">gc</span>
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">NamedTuple</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">h5py</span> <span class="kn">import</span> <span class="n">File</span>
<span class="kn">from</span> <span class="nn">pysbmy.power</span> <span class="kn">import</span> <span class="n">PowerSpectrum</span><span class="p">,</span> <span class="n">FourierGrid</span><span class="p">,</span> <span class="n">get_Pk</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.logger</span> <span class="kn">import</span> <span class="n">getCustomLogger</span>
<span class="kn">from</span> <span class="nn">selfisys.utils.tools</span> <span class="kn">import</span> <span class="n">get_k_max</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">getCustomLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<div class="viewcode-block" id="ModelSetup">
<a class="viewcode-back" href="../../selfisys.setup_model.html#selfisys.setup_model.ModelSetup">[docs]</a>
<span class="k">class</span> <span class="nc">ModelSetup</span><span class="p">(</span><span class="n">NamedTuple</span><span class="p">):</span>
<span class="n">size</span><span class="p">:</span> <span class="nb">int</span>
<span class="n">L</span><span class="p">:</span> <span class="nb">float</span>
<span class="n">P</span><span class="p">:</span> <span class="nb">int</span>
<span class="n">S</span><span class="p">:</span> <span class="nb">int</span>
<span class="n">G_sim_path</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">G_ss_path</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">Pbins_bnd</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span>
<span class="n">Pbins</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span>
<span class="n">k_s</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span>
<span class="n">P_ss_obj_path</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">P_0</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span>
<span class="n">planck_Pk</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span></div>
<div class="viewcode-block" id="setup_model">
<a class="viewcode-back" href="../../selfisys.setup_model.html#selfisys.setup_model.setup_model">[docs]</a>
<span class="k">def</span> <span class="nf">setup_model</span><span class="p">(</span>
<span class="n">workdir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">params_planck</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
<span class="n">params_P0</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
<span class="n">size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">256</span><span class="p">,</span>
<span class="n">L</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">3600.0</span><span class="p">,</span>
<span class="n">S</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
<span class="n">N_exact</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">8</span><span class="p">,</span>
<span class="n">Pinit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span><span class="p">,</span>
<span class="n">trim_threshold</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
<span class="n">minval</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">maxval</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">force</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="p">)</span> <span class="o">-&gt;</span> <span class="n">ModelSetup</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set up the model by computing or loading necessary grids and</span>
<span class="sd"> parameters.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> workdir : str</span>
<span class="sd"> Directory where the results will be stored.</span>
<span class="sd"> params_planck : dict</span>
<span class="sd"> Parameters for the Planck 2018 cosmology.</span>
<span class="sd"> params_P0 : dict</span>
<span class="sd"> Parameters for the normalisation power spectrum.</span>
<span class="sd"> size : int</span>
<span class="sd"> Number of elements in each direction of the box.</span>
<span class="sd"> L : float</span>
<span class="sd"> Comoving length of the box in Mpc/h.</span>
<span class="sd"> S : int</span>
<span class="sd"> Number of support wavenumbers for the input power spectra.</span>
<span class="sd"> N_exact : int</span>
<span class="sd"> Number of support wavenumbers matching the Fourier grid.</span>
<span class="sd"> Pinit : int</span>
<span class="sd"> Maximum number of bins for the summaries.</span>
<span class="sd"> trim_threshold : int</span>
<span class="sd"> Minimum number of modes required per bin.</span>
<span class="sd"> minval : float, optional</span>
<span class="sd"> Minimum k value for the summaries.</span>
<span class="sd"> maxval : float, optional</span>
<span class="sd"> Maximum k value for the summaries.</span>
<span class="sd"> force : bool</span>
<span class="sd"> If True, forces recomputation of the inputs.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> ModelSetup</span>
<span class="sd"> A named tuple containing:</span>
<span class="sd"> - size (int): Number of elements in each direction of the box.</span>
<span class="sd"> - L (float): Comoving length of the box in Mpc/h.</span>
<span class="sd"> - P (int): Number of bins for the summaries.</span>
<span class="sd"> - S (int): Number of support wavenumbers for input powerspectra.</span>
<span class="sd"> - G_sim_path (str): Path to the full Fourier grid file.</span>
<span class="sd"> - G_ss_path (str): Path to the Fourier grid for summaries file.</span>
<span class="sd"> - Pbins_bnd (np.ndarray): Boundaries of summary bins.</span>
<span class="sd"> - Pbins (np.ndarray): Centres of the bins for the summaries.</span>
<span class="sd"> - k_s (np.ndarray): Support wavenumbers for input power spectra.</span>
<span class="sd"> - P_ss_obj_path (str): Path to the summary power spectrum file.</span>
<span class="sd"> - P_0 (np.ndarray): Normalisation power spectrum values.</span>
<span class="sd"> - planck_Pk (np.ndarray): Planck 2018 power spectrum values.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># Check input parameters</span>
<span class="k">if</span> <span class="n">N_exact</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">N_exact</span> <span class="o">&gt;</span> <span class="n">S</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Parameter &#39;N_exact&#39; must be between 0 and &#39;S&#39;.&quot;</span><span class="p">)</span>
<span class="c1"># Define file paths</span>
<span class="n">G_sim_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;G_sim.h5&quot;</span><span class="p">)</span>
<span class="n">k_s_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;k_s.npy&quot;</span><span class="p">)</span>
<span class="n">G_ss_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;G_ss.h5&quot;</span><span class="p">)</span>
<span class="n">P_ss_obj_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;P_ss_obj.h5&quot;</span><span class="p">)</span>
<span class="n">P_0_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;P_0.npy&quot;</span><span class="p">)</span>
<span class="n">theta_planck_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;theta_planck.npy&quot;</span><span class="p">)</span>
<span class="n">Pbins_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;Pbins.npy&quot;</span><span class="p">)</span>
<span class="n">Pbins_bnd_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;Pbins_bnd.npy&quot;</span><span class="p">)</span>
<span class="c1"># Compute or load the full Fourier grid</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="n">G_sim_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Computing Fourier grid...&quot;</span><span class="p">)</span>
<span class="n">G_sim</span> <span class="o">=</span> <span class="n">FourierGrid</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">L</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
<span class="n">G_sim</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">G_sim_path</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Computing Fourier grid done.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading Fourier grid.&quot;</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="n">G_sim_path</span><span class="p">)</span>
<span class="c1"># Determine minimum and maximum k values</span>
<span class="k">if</span> <span class="n">minval</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">minval</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="p">[</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">])</span>
<span class="k">if</span> <span class="n">maxval</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">maxval</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">size</span> <span class="o">/</span> <span class="n">L</span> <span class="c1"># 1D Nyquist frequency</span>
<span class="c1"># Compute or load support wavenumbers for the input power spectrum</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="n">k_s_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">diagnostic</span><span class="p">(</span><span class="s2">&quot;Computing input power spectrum support wavenumbers...&quot;</span><span class="p">)</span>
<span class="n">k_s</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">S</span><span class="p">)</span>
<span class="n">sorted_knorms</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">G_sim</span><span class="o">.</span><span class="n">k_modes</span><span class="o">.</span><span class="n">flatten</span><span class="p">())</span>
<span class="n">unique_indices</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">sorted_knorms</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="n">return_index</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">sorted_knorms_corrected</span> <span class="o">=</span> <span class="n">sorted_knorms</span><span class="p">[</span><span class="n">unique_indices</span><span class="p">]</span>
<span class="n">k_s</span><span class="p">[:</span><span class="n">N_exact</span><span class="p">]</span> <span class="o">=</span> <span class="n">sorted_knorms_corrected</span><span class="p">[</span><span class="mi">1</span> <span class="p">:</span> <span class="n">N_exact</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
<span class="n">k_s_max</span> <span class="o">=</span> <span class="n">get_k_max</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
<span class="n">k_s</span><span class="p">[</span><span class="n">N_exact</span><span class="p">:]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">logspace</span><span class="p">(</span>
<span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">sorted_knorms_corrected</span><span class="p">[</span><span class="n">N_exact</span><span class="p">]),</span>
<span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">k_s_max</span><span class="p">),</span>
<span class="n">S</span> <span class="o">-</span> <span class="n">N_exact</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
<span class="p">)[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">k_s_path</span><span class="p">,</span> <span class="n">k_s</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">diagnostic</span><span class="p">(</span><span class="s2">&quot;Computing input power spectrum support wavenumbers done.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">diagnostic</span><span class="p">(</span><span class="s2">&quot;Loading input power spectrum support wavenumbers.&quot;</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">k_s</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="n">k_s_path</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="ne">FileNotFoundError</span><span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to load k_s from </span><span class="si">{</span><span class="n">k_s_path</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">raise</span>
<span class="c1"># Initialise Pbins</span>
<span class="n">Pbins_left_bnds_init</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">logspace</span><span class="p">(</span>
<span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">minval</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">maxval</span><span class="p">),</span> <span class="n">Pinit</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span>
<span class="p">)</span>
<span class="n">Pbins_left_bnds_init</span> <span class="o">=</span> <span class="n">Pbins_left_bnds_init</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="c1"># Compute or load Fourier grid for the summaries</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="n">G_ss_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">G_ss</span> <span class="o">=</span> <span class="n">FourierGrid</span><span class="p">(</span>
<span class="n">L</span><span class="p">,</span>
<span class="n">L</span><span class="p">,</span>
<span class="n">L</span><span class="p">,</span>
<span class="n">size</span><span class="p">,</span>
<span class="n">size</span><span class="p">,</span>
<span class="n">size</span><span class="p">,</span>
<span class="n">k_modes</span><span class="o">=</span><span class="n">Pbins_left_bnds_init</span><span class="p">,</span>
<span class="n">kmax</span><span class="o">=</span><span class="n">maxval</span><span class="p">,</span>
<span class="n">trim_bins</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">trim_threshold</span><span class="o">=</span><span class="n">trim_threshold</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">G_ss</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">G_ss_path</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">G_ss</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="n">G_ss_path</span><span class="p">)</span>
<span class="n">P</span> <span class="o">=</span> <span class="n">G_ss</span><span class="o">.</span><span class="n">NUM_MODES</span>
<span class="c1"># Compute or load Pbins and Pbins_bnd</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="n">Pbins_path</span><span class="p">)</span> <span class="ow">or</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">Pbins_bnd_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">k_ss_max_offset</span> <span class="o">=</span> <span class="n">Pbins_left_bnds_init</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">Pbins_left_bnds_init</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
<span class="n">logger</span><span class="o">.</span><span class="n">diagnostic</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;k_ss_max_offset: </span><span class="si">{</span><span class="n">k_ss_max_offset</span><span class="si">:</span><span class="s2">.5f</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">Pbins_bnd</span> <span class="o">=</span> <span class="n">G_ss</span><span class="o">.</span><span class="n">k_modes</span>
<span class="n">Pbins_bnd</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">Pbins_bnd</span><span class="p">,</span> <span class="p">[</span><span class="n">Pbins_bnd</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">k_ss_max_offset</span><span class="p">]])</span>
<span class="n">Pbins</span> <span class="o">=</span> <span class="p">(</span><span class="n">Pbins_bnd</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="n">Pbins_bnd</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">/</span> <span class="mi">2</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">Pbins_path</span><span class="p">,</span> <span class="n">Pbins</span><span class="p">)</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">Pbins_bnd_path</span><span class="p">,</span> <span class="n">Pbins_bnd</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">Pbins</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="n">Pbins_path</span><span class="p">)</span>
<span class="n">Pbins_bnd</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="n">Pbins_bnd_path</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="ne">FileNotFoundError</span><span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to load Pbins or Pbins_bnd: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">raise</span>
<span class="c1"># Compute or load BBKS spectrum for normalisation</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="n">P_0_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">P_0</span> <span class="o">=</span> <span class="n">get_Pk</span><span class="p">(</span><span class="n">k_s</span><span class="p">,</span> <span class="n">params_P0</span><span class="p">)</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">P_0_path</span><span class="p">,</span> <span class="n">P_0</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">P_0</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="n">P_0_path</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="ne">FileNotFoundError</span><span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to load P_0 from </span><span class="si">{</span><span class="n">P_0_path</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">raise</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="n">P_ss_obj_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">P_0_ss</span> <span class="o">=</span> <span class="n">get_Pk</span><span class="p">(</span><span class="n">G_ss</span><span class="o">.</span><span class="n">k_modes</span><span class="p">,</span> <span class="n">params_P0</span><span class="p">)</span>
<span class="n">P_ss_obj</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_ss</span><span class="p">,</span> <span class="n">powerspectrum</span><span class="o">=</span><span class="n">P_0_ss</span><span class="p">,</span> <span class="n">cosmo</span><span class="o">=</span><span class="n">params_P0</span><span class="p">)</span>
<span class="n">P_ss_obj</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">P_ss_obj_path</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">P_ss_obj</span> <span class="o">=</span> <span class="n">PowerSpectrum</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">P_ss_obj_path</span><span class="p">)</span>
<span class="c1"># Compute or load Planck power spectrum</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="n">theta_planck_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">planck_Pk</span> <span class="o">=</span> <span class="n">get_Pk</span><span class="p">(</span><span class="n">k_s</span><span class="p">,</span> <span class="n">params_planck</span><span class="p">)</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">theta_planck_path</span><span class="p">,</span> <span class="n">planck_Pk</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">planck_Pk</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="n">theta_planck_path</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="ne">FileNotFoundError</span><span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to load theta_planck from </span><span class="si">{</span><span class="n">theta_planck_path</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">raise</span>
<span class="c1"># Clean up</span>
<span class="k">del</span> <span class="n">G_sim</span><span class="p">,</span> <span class="n">G_ss</span><span class="p">,</span> <span class="n">P_ss_obj</span><span class="p">,</span> <span class="n">Pbins_left_bnds_init</span>
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span>
<span class="k">return</span> <span class="n">ModelSetup</span><span class="p">(</span>
<span class="n">size</span><span class="p">,</span>
<span class="n">L</span><span class="p">,</span>
<span class="n">P</span><span class="p">,</span>
<span class="n">S</span><span class="p">,</span>
<span class="n">G_sim_path</span><span class="p">,</span>
<span class="n">G_ss_path</span><span class="p">,</span>
<span class="n">Pbins_bnd</span><span class="p">,</span>
<span class="n">Pbins</span><span class="p">,</span>
<span class="n">k_s</span><span class="p">,</span>
<span class="n">P_ss_obj_path</span><span class="p">,</span>
<span class="n">P_0</span><span class="p">,</span>
<span class="n">planck_Pk</span><span class="p">,</span>
<span class="p">)</span></div>
<div class="viewcode-block" id="compute_alpha_cv">
<a class="viewcode-back" href="../../selfisys.setup_model.html#selfisys.setup_model.compute_alpha_cv">[docs]</a>
<span class="k">def</span> <span class="nf">compute_alpha_cv</span><span class="p">(</span>
<span class="n">workdir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">k_s</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</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">window_fct_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">force</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="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Compute the cosmic variance parameter alpha_cv.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> workdir : str</span>
<span class="sd"> Directory where the results will be stored.</span>
<span class="sd"> k_s : np.ndarray</span>
<span class="sd"> Support wavenumbers.</span>
<span class="sd"> size : int</span>
<span class="sd"> Number of elements in each direction of the box.</span>
<span class="sd"> L : float</span>
<span class="sd"> Comoving length of the box in Mpc/h.</span>
<span class="sd"> window_fct_path : str, optional</span>
<span class="sd"> Path to the window function file.</span>
<span class="sd"> force : bool</span>
<span class="sd"> If True, forces recomputation of the inputs.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="kn">import</span> <span class="n">curve_fit</span>
<span class="n">alpha_cv_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;alpha_cv.npy&quot;</span><span class="p">)</span>
<span class="n">alpha_cv_eff_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">workdir</span><span class="p">,</span> <span class="s2">&quot;alpha_cv_eff.npy&quot;</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="n">alpha_cv_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">force</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Computing cosmic variance alpha_cv...&quot;</span><span class="p">)</span>
<span class="n">k_s_bnd</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">k_s</span><span class="p">,</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">inf</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="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">workdir</span><span class="p">,</span> <span class="s2">&quot;G_sim.h5&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">k_modes</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span>
<span class="n">knorms</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">G_sim</span><span class="p">)</span>
<span class="n">Nks</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">histogram</span><span class="p">(</span><span class="n">knorms</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="n">k_s_bnd</span><span class="p">)</span>
<span class="k">del</span> <span class="n">knorms</span><span class="p">,</span> <span class="n">G_sim</span>
<span class="n">nyquist_frequency</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">size</span> <span class="o">/</span> <span class="n">L</span>
<span class="n">idx_nyquist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">searchsorted</span><span class="p">(</span><span class="n">k_s</span><span class="p">,</span> <span class="n">nyquist_frequency</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">cubic_func</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">a</span><span class="p">):</span>
<span class="k">return</span> <span class="n">a</span> <span class="o">*</span> <span class="n">x</span><span class="o">**</span><span class="mi">3</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">popt</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">curve_fit</span><span class="p">(</span><span class="n">cubic_func</span><span class="p">,</span> <span class="n">k_s</span><span class="p">[:</span><span class="n">idx_nyquist</span><span class="p">],</span> <span class="n">Nks</span><span class="p">[:</span><span class="n">idx_nyquist</span><span class="p">])</span>
<span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Curve fitting failed: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">raise</span>
<span class="n">alpha_cv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">popt</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">alpha_cv_path</span><span class="p">,</span> <span class="n">alpha_cv</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Computing cosmic variance alpha_cv done. alpha_cv = </span><span class="si">{</span><span class="n">alpha_cv</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">window_fct_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># Compute alpha_cv with approximate correction for the effective volume</span>
<span class="n">nnz</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">with</span> <span class="n">File</span><span class="p">(</span><span class="n">window_fct_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="k">for</span> <span class="n">ipop</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</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;select_fct&quot;</span><span class="p">][:][</span><span class="n">ipop</span><span class="p">]</span>
<span class="n">nnz</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">mask</span><span class="p">)</span>
<span class="n">nnz_size</span> <span class="o">=</span> <span class="n">nnz</span> <span class="o">**</span> <span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mf">3.0</span><span class="p">)</span> <span class="c1"># Side length of a cube containing nnz voxels</span>
<span class="n">eff_L</span> <span class="o">=</span> <span class="n">nnz_size</span> <span class="o">*</span> <span class="n">L</span> <span class="o">/</span> <span class="n">size</span>
<span class="n">alpha_cv_eff</span> <span class="o">=</span> <span class="n">alpha_cv</span> <span class="o">*</span> <span class="p">(</span><span class="n">L</span> <span class="o">/</span> <span class="n">eff_L</span><span class="p">)</span> <span class="o">**</span> <span class="mf">1.5</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Effective length: </span><span class="si">{</span><span class="n">eff_L</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1e-3</span><span class="si">}</span><span class="s2"> Gpc/h&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Effective volume: </span><span class="si">{</span><span class="p">(</span><span class="n">eff_L</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1e-3</span><span class="p">)</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mi">3</span><span class="si">}</span><span class="s2"> (Gpc/h)^3&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;alpha_cv_eff = </span><span class="si">{</span><span class="n">alpha_cv_eff</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">np</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">alpha_cv_eff_path</span><span class="p">,</span> <span class="n">alpha_cv_eff</span><span class="p">)</span>
<span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#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>