TUTORIAL: Study objective B1 (uncertainty)
Before starting…
Set workspace
Run set_workspace(...) before any later function call. It sets the active workspace root for the current Python session, creates or reuses the workspace, imports package prerequisites under data_raw/, and records setup guidance in data_raw/summary.log.
[ ]:
from pyaesa import set_workspace
# Windows example; update this path before running.
set_workspace(r"C:\Users\username\Documents\aesa_workspace")
# macOS example; update this path before running.
# set_workspace("/Users/username/Documents/aesa_workspace")
Run prerequisites
Functional units and selectors
The example in this tutorial uses the functional unit L2.c.b with the following selectors: one producing sector s_p="Paper" and one consuming region r_c="FR".
Use tutorials/study_objectives/1_functional_units_and_allocation_methods.md to choose the FU and required selectors. Use methodological_notes/methodological_note__asocc_fus_allocation_methods.pdf for detailed FU definitions and mathematical expressions.
[ ]:
project_name_ = "SO_B1_demo_paper_fr"
source_ = "exiobase_3102_ixi"
fu_code_ = "L2.c.b"
study_period_ = range(2010, 2021)
s_p_ = ["Paper"]
r_c_ = ["FR"]
lcia_method_ = "pb_lcia"
Basic features of the uncertainty function
In a nutshell
The function takes necessary inputs, for two main purposes:
inputs for the deterministic function
base_asocc_args, including public scope arguments such asproject_name,source,years,lcia_method,fu_code, the relevant selectors (heres_pandr_c) for the selected functional unit, and allocation method and enacting metric settings through nested keys.inputs for the configuration of uncertainty analysis (Monte Carlo) through
uncertainty_config. The aSoCC uncertainty source list containslcia_uncertainty,projection_uncertainty,reference_year_uncertainty,inter_mrio_uncertainty, andinter_method_uncertainty, plusmc_parametersfor the Monte Carlo run policy andsobol_parametersfor Sobol analysis. By default,projection_uncertainty,reference_year_uncertainty, andinter_method_uncertaintyare active;lcia_uncertaintyandinter_mrio_uncertaintyare inactive because they require user provided elements (sector_cov_mappingwhere needed, or an alternate disaggregated aSoCC source).
The list of uncertainty sources and their mathematical expressions are documented in methodological_notes/methodological_note__acc_uncertainty_sources.pdf.
The uncertainty output folder contains:
Monte Carlo run values, summary statistics, and Sobol variance decomposition outputs for uncertainty source contributions when requested. Sobol analysis writes
README_sobol.txtwith the results for interpretation.results/README.txtexplains the public row identity tables, run value fragments, run interval indexes, summary tables, source method logs, and compact CSV or Parquet reading contract.Figures are rendered by default (
figures=True). Usefigures=Falseto skip them;figure_formatcontrols the file format and resolution.figure_optionscan restrict figure families.log files, including uncertainty source parameter logs.
Basic features also involve:
MRIO aggregation and disaggregation of sectors and/or regions: use the
agg_sec,agg_reg, andagg_versionparameters. The MRIO aggregation folder includes packagedagg_reg_eu27.csvandagg_reg_world.csvexamples; inspect them indata_raw/mrio/<source>/aggregation/and followREADME_aggregation.txtbefore writing a custom MRIO aggregation and disaggregation mapping CSV.allocation methods: by default, pyaesa runs all allocation methods available for the selected FU. If a study uses a smaller method set, justify that normative choice and use
method_plan,l1_methods,one_step_methods,two_step_methods, andl1_l2_pairs. Available methods per FU are listed in tutorials/study_objectives/1_functional_units_and_allocation_methods.md; definitions and mathematical expressions are in methodological_notes/methodological_note__asocc_fus_allocation_methods.pdf.overwriting of existing values: use the
refreshparameter.
Public argument checklist
The table lists all arguments; the same definitions are available in the function docstring.
Green items = default if omitted.
Orange items = optional feature skipped if omitted.
Do not write green or orange items when that behavior is intended.
uncertainty_asocc(…) arguments
Argument | Description |
|---|---|
base_asocc_args | Deterministic aSoCC selector envelope. Write nested arguments as base_asocc_args={“project_name”: “…”, “source”: “…”, “fu_code”: “…”}. Nested keys: • project_name: Required project name used to build <repo>/<project_name>. • source: MRIO source key (“exiobase_396_ixi”, “exiobase_396_pxp”, “exiobase_3102_ixi”, “exiobase_3102_pxp”, or “oecd_v2025”), or “iso3” for ISO3 only mode (L1 EG/PR(GDPcap) only). • agg_reg: If True, reclassify MRIO regions with the agg_reg_<agg_version>.csv MRIO aggregation and disaggregation mapping. The mapping can keep native labels, aggregate several native regions into one target label, or disaggregate one native region across several target labels when a weight column is provided. Default False keeps native source regions. • agg_sec: If True, reclassify MRIO sectors with the agg_sec_<agg_version>.csv MRIO aggregation and disaggregation mapping. The mapping can keep native labels, aggregate several native sectors into one target label, or disaggregate one native sector across several target labels when a weight column is provided. Default False keeps native source sectors. • agg_version: Name token used to resolve the matching agg_reg_<agg_version>.csv and/or agg_sec_<agg_version>.csv MRIO aggregation and disaggregation mapping files in data_raw/mrio/<source>/aggregation. Required when agg_reg or agg_sec is True. Defaults to an empty string for native source classification. Use the same token in downstream calls that should reuse the processed classification. If a mapping file has a weight column, weights must sum to 1 for each original label. • years: Studied years. Accepts a single year, list, or range. If omitted, all available MRIO years for the selected source and agg_version are used. • fu_code: Required functional unit code (for example “L1.a”, “L2.c.b”). See data_raw/methodological_notes/methodological_note__asocc_fus_allocation_methods.pdf for all available functional unit codes and the system boundaries each represents. • s_p: Producing sector filter(s), single string or list. If this is a required axis for fu_code and the argument is omitted, the run expands to all valid producing sectors. To identify valid sector names, see the first column of the relevant data_raw/mrio/…/aggregation/…/agg_sec_template.csv file. For EXIOBASE sector definitions, see data_raw/mrio/exiobase_3/sector_classification.xlsx; EXIOBASE ixi and pxp use different sector lists. • r_p: Producing region filter(s), single string or list. If this is a required axis for fu_code and the argument is omitted, the run expands to all valid producing regions. To identify valid region names, see the first column of the relevant data_raw/mrio/…/aggregation/agg_reg_template.csv file. • r_c: Consuming region filter(s), single string or list. If this is a required axis for fu_code and the argument is omitted, the run expands to all valid consuming regions. To identify valid region names, see the first column of the relevant data_raw/mrio/…/aggregation/agg_reg_template.csv file. • r_f: Final demand region filter(s), single string or list. If this is a required axis for fu_code and the argument is omitted, the run expands to all valid final demand regions. To identify valid region names, see the first column of the relevant data_raw/mrio/…/aggregation/agg_reg_template.csv file. • group_indices: Whether multiple selected region or sector filter values are kept as separate result rows or summed into one result row after the function calculation has been performed. • False (default): keep selected values as independent rows. • True: sum selected values into one result row. The function refuses to run when group_indices=True is used with L2.a.b, L2.b.b, or L2.c.b because summing output rows for CBA total demand boundaries can double count. For these functional units, change the upstream MRIO aggregation and disaggregation scope with agg_reg, agg_sec, and agg_version before running the study. • method_plan: method_plan defaults to “default” and accepts “default”, “one_step”, “two_steps”, “pairs”, or “one_step_pairs”. When omitted, all pyaesa allocation methods available for the selected fu_code are applied. See data_raw/methodological_notes/methodological_note__asocc_fus_allocation_methods.pdf for the allocation methods available per functional unit, including definitions and mathematical expressions. • l1_methods: Optional L1 subset. Omit it to keep all L1 methods allowed by method_plan. In “default”, this filters only L1 weights used by two step methods. In “two_steps”, it filters the two step cartesian L1 side. • one_step_methods: Optional one step L2 subset. Omit it to keep all one step methods allowed by method_plan. • two_step_methods: Optional two step L2 subset. Omit it to keep all two step L2 methods allowed by method_plan. • l1_l2_pairs: Explicit pair list formatted as “L1METHOD::L2METHOD”. Omit it unless method_plan is “pairs” or “one_step_pairs”. • l1_reg_aggreg: L1 aggregation mode for methods where timing matters (PR(GDPcap), PR-HR(Ecap) and AR(Ecap)). “pre” aggregates regions before L1 computation. “post” (default) computes on original regions, then aggregates. • lcia_method: LCIA method(s) selected for LCIA based allocation methods (acquired rights (AR) methods at L1 and L2 and historical responsibility (PR-HR) at L1). Options are for example “pb_lcia” or [“pb_lcia”, “gwp100_lcia”]. None skips LCIA characterization and excludes LCIA based allocation methods. Defaults to None. pyaesa currently supports LCIA based allocation methods only for EXIOBASE sources. To add a custom LCIA method with which run process_mrio(…), follow README_add_custom_lcia_characterization_matrices.txt in data_raw/mrio/exiobase_3/lcia/characterization_factors_matrices/ and pass the custom method file stem here. • reference_years: Acquired rights (AR) methods reference year selector. Accepts a single year, list, or range. If omitted, AR routes use all historical years in the studied range up to the source registry historical cutoff. For EXIOBASE 3.10.2 and OECD ICIO v2025, the cutoff is 2022; other supported MRIO sources use their own registry cutoff. • ssp_scenario: SSP scenario name or list. Defaults to [“SSP1”, “SSP2”, “SSP3”, “SSP4”, “SSP5”] and is applied when scenario dependent inputs are required. • projection_mode: Projection policy for post historical years of L2 utilitarian (UT) methods (MRIO economic enacting metrics). Defaults to “regression”. “regression” projects UT inputs for future years. “historical_reuse” reuses historical UT structures. • reg_window: Historical regression fit window for regression mode. Provide it as range(start_year, end_year + 1) or as an explicit list of consecutive years in fit window order. When omitted, the source registry supplies the default fit window from the modeled year minimum through the source historical cutoff. For EXIOBASE 3.10.2 and OECD ICIO v2025, this resolves to 1995 to 2022; other supported MRIO sources use their own registry window. • l2_reuse_years: Historical L2 reuse year selector used by all UT historical reuse routes. In projection_mode=”historical_reuse” it applies to all UT methods; in projection_mode=”regression” it applies to adjusted UT routes (UT(FDa), UT(GVAa)), which always use historical reuse as regression is not supported (would require regression on full MRIO). If omitted, defaults to reg_window when required. |
uncertainty_config | Monte Carlo configuration dictionary. The default signature activates projection, reference year, and inter-method uncertainty. LCIA uncertainty is inactive by default because L2 LCIA rows require sector_cov_mapping: keys are output s_p labels and values are sector CoV codes from sec_cbca_covs.csv. Inter-MRIO uncertainty is inactive by default because it requires an alternate published disaggregated aSoCC source. Source blocks use an active boolean; write active=False to disable a default active source. See data_raw/methodological_notes/methodological_note__acc_uncertainty_sources.pdf for uncertainty source definitions and mathematical expressions. Accepted keys: • mc_parameters: optional dictionary with convergence and fixed mode blocks. Exactly one mode must be active. Nested mode blocks: • convergence: convergence mode block. This is the default active mode. Nested keys: • active: Whether convergence mode is active. • max_runs: Maximum number of Monte Carlo runs allowed before stopping. • rtol: Relative tolerance used to decide whether monitored summary statistics have converged. • stable_runs: Number of consecutive accepted runs that must remain within tolerance before the run stops. • convergence_statistics: Statistic monitored for convergence. Monte Carlo convergence is mean only and defaults to [“mean”]. • fixed: fixed run count mode block. Nested keys: • active: Whether fixed mode is active. • n_runs: Exact number of Monte Carlo runs. • lcia_uncertainty: optional LCIA source block. It defaults to {“active”: False, “sector_cov_mapping”: {}}. Country level LCIA CoVs are resolved automatically. L2 sector resolved LCIA rows require sector_cov_mapping to map output s_p labels to sector CoV codes from sec_cbca_covs.csv, for example {“active”: True, “sector_cov_mapping”: {“Paper”: “Paper”}}. Carbon consumption based accounts coefficients of variation (CoV) files are available under data_raw/mrio/exiobase_3/lcia/carbon_accounts_covs/. Users can inspect sec_cbca_covs.csv for sector CoV codes before choosing sector_cov_mapping values. Nested keys: • active: Whether LCIA uncertainty is active. • sector_cov_mapping: Mapping from output s_p labels to sector CoV codes from sec_cbca_covs.csv. • projection_uncertainty: optional source block. It defaults to {“active”: True}. For prospective rows using L2 historical reuse, each Monte Carlo run samples one L2 reuse year uniformly from the deterministic l2_reuse_years candidates requested for the years where reuse applies. Nested key: • active: Whether projection uncertainty is active. • reference_year_uncertainty: optional source block. It defaults to {“active”: True}. For acquired rights (AR) routes, each Monte Carlo run samples uniformly among requested reference years admissible for the studied year (reference_year <= year). The same sampled reference year is shared across the run when admissible; years for which it is not admissible resample among their admissible reference years. Nested key: • active: Whether reference year uncertainty is active. • inter_mrio_uncertainty: optional source block. To activate it, write {“active”: True, “alternate_source”: “<disaggregated label>”}, for example {“active”: True, “alternate_source”: “oecd_electricity”}. It applies continuous uniform interpolation between the main MRIO source and an alternate published disaggregated aSoCC source created by disaggregate_asocc(…). It applies only to non LCIA methods. Nested keys: • active: Whether inter-MRIO uncertainty is active. • alternate_source: Published disaggregated aSoCC source label used as the alternate MRIO source. • inter_method_uncertainty: optional source block. It defaults to {“active”: True, “mode”: “equal_weight”}. Each Monte Carlo run samples one method leaf among the selected deterministic and external methods. Equal weight mode writes the tree CSV, README_inter_method_weights.txt, and rendered probability tree under the run folder figures/inter_method_tree/. To prepare custom weights before running uncertainty, use write_asocc_weight_template(…); it writes equal_weights.csv, README_inter_method_weights.txt, and probability_tree__equal_weights.<ext> under B1_asocc/preview_inter_method_weights/. Use preview_asocc_weight_tree(…) to validate and render a custom probability tree before using {“mode”: “custom”, “version_name”: “…”}. Nested keys: • active: Whether inter-method uncertainty is active. • mode: Inter-method sampling mode. Accepted values are “equal_weight” and “custom”. • version_name: Custom weight version used when mode=”custom”. |
sobol_parameters | Sobol sensitivity settings. Sobol analysis estimates the contribution of active uncertainty sources to output variance and writes README_sobol.txt under results/sobol/ for interpretation. The default has active=False and writes no Sobol artifacts. To run Sobol, set active=True. With the default mode blocks, enabled Sobol uses convergence mode. To run a fixed Sobol design, set fixed.active=True and convergence.active=False. Sobol base sizes must be powers of two. Nested keys: • active: Whether Sobol sensitivity analysis is active. • convergence: convergence mode block. When Sobol is active, exactly one of convergence or fixed is active. Nested keys: • active: Whether convergence mode is active. • max_base_samples: Maximum Sobol base size. • rtol: Relative tolerance for monitored S1 and ST indices. • fixed: fixed Sobol base size mode block. Nested keys: • active: Whether fixed mode is active. • n_base_samples: Exact Sobol base size. • sobol_years: Studied output years evaluated by Sobol. When omitted, Sobol evaluates only the first and last studied years in the requested studied year set. |
external_method | Optional external aSoCC method selector. Use {“l1_methods”: […]} for L1 functional units. For L2 functional units use {“one_step_methods”: […]} and/or {“l1_l2_pairs”: [“<l1_method>::<l2_method>”, …]}. Omit this argument or pass None when using only native pyaesa deterministic aSoCC methods. Use prepare_external_inputs(…) to import the external aSoCC runnable CSV examples and README_external_asocc_templates.txt, then follow that README for external method names, selector syntax, and deterministic or Monte Carlo external aSoCC CSV preparation. |
output_format | Public uncertainty table format, either “csv_compact” or “parquet”. Defaults to “csv_compact”. |
figures | Whether to render figures. Default is True. |
figure_format | Figure render settings mapping. Defaults to {“format”: “png”, “dpi”: 500}. Nested keys: • format: Figure file format. Accepted values are “png”, “pdf”, and “svg”. • dpi: Positive integer figure resolution used for raster outputs. |
figure_options | Figure product selector mapping. Defaults to {“per_method”: True, “multi_method”: True, “inter_method”: True}. Nested keys: • per_method: Whether to render method specific figures, with one separate figure for each allocation method. • multi_method: Whether to render cross method comparison figures, with multiple allocation methods shown in the same figure. • inter_method: Whether to render inter-method uncertainty figures. These figures use the same method specific layout as per_method, but represent uncertainty induced by the inter-method uncertainty setting rather than comparing individual allocation methods. This option is ignored when inter method uncertainty is inactive. |
refresh | If True, refresh both the resolved deterministic aSoCC prerequisite and the resolved aSoCC Monte Carlo outputs for this uncertainty request. The deterministic refresh removes the source and version deterministic output scope described for deterministic_asocc(…). The Monte Carlo refresh removes matching run folders for the current request under the adjacent monte_carlo root. External aSoCC inputs, processed MRIO inputs, processed population and GDP, raw downloads, and downstream aCC or ASR outputs are not refreshed. Defaults to False. |
aSoCC Monte Carlo with LCIA uncertainty in default convergence mode
[ ]:
from pyaesa import uncertainty_asocc
uncertainty_asocc(
base_asocc_args={
"project_name": project_name_,
"source": source_,
"years": study_period_,
"fu_code": fu_code_,
"s_p": s_p_,
"r_c": r_c_,
"lcia_method": lcia_method_,
},
uncertainty_config={
# mc_parameters is omitted, so Monte Carlo uses convergence mode defaults.
# To change convergence tolerance or maximum run count, add for example:
# "mc_parameters": {"convergence": {"rtol": 0.02, "max_runs": 100000}},
"lcia_uncertainty": {
"sector_cov_mapping": {"Paper": "Paper"},
},
},
refresh=True,
)
aSoCC Monte Carlo with fixed mode
[ ]:
uncertainty_asocc(
base_asocc_args={
"project_name": f"{project_name_}_fixed",
"source": source_,
"years": study_period_,
"fu_code": fu_code_,
"s_p": s_p_,
"r_c": r_c_,
"lcia_method": lcia_method_,
},
uncertainty_config={
"mc_parameters": {
"fixed": {"active": True, "n_runs": 1000},
"convergence": {"active": False},
},
"lcia_uncertainty": {
"sector_cov_mapping": {"Paper": "Paper"},
},
},
refresh=True,
)
What to do next
Beginners
If you are a new user in the process of discovering pyaesa, it is recommend that you first discover all study objectives with the basic features available. Have a look at the other notebooks available at tutorials/study_objectives/0_study_objectives.md
Experts
If you are already familiar with pyaesa and if you want to discover advanced features available, check out examples in the next section of this tutorial !
Advanced features
Advanced features currently available include:
LCIA uncertainty CoVs for MRIO
agg_*andgroup_indiceshandlinginter-method uncertainty with external aSoCC methods
inter-method uncertainty with custom weights
inter-MRIO uncertainty
projection uncertainty
reference year uncertainty
changing convergence tolerance
Sobol sensitivity analysis
LCIA uncertainty CoVs for MRIO agg_* and group_indices handling
When lcia_uncertainty is active with aggregated regions, use the packaged agg_reg_eu27.csv or agg_reg_world.csv examples by setting agg_reg=True and agg_version="eu27" or "world". Matching reg_cbca_covs_agg_eu27.csv and reg_cbca_covs_agg_world.csv files are provided in data_raw/mrio/exiobase_3/lcia/carbon_accounts_covs/. Sector resolved rows still use sector_cov_mapping, with output sector labels as keys and sec_cbca_covs.csv codes as values.
For LCIA uncertainty on group_indices outputs, prepare CoV files whose region and sector labels match the combined labels written by the selected public result scope. Packaged workspace templates include matching CoV files for EU27 and World region aggregation.
Inter-method uncertainty with external aSoCC methods
External aSoCC methods can participate in inter-method uncertainty after their rows have been staged. The package ships working external aSoCC examples for tests, the same way it ships working external LCA examples; import those runnable examples with tutorials/optional_workflows/external_asocc_lca_input_staging.ipynb. That optional workflow writes README_external_asocc_templates.txt under
B1_asocc/external_asocc/templates/ with method names, filename syntax, and deterministic or Monte Carlo row preparation rules. Use external_method to add the staged external methods to the selected method universe, and keep inter_method_uncertainty active so Monte Carlo draws sample among native and external method leaves.
[ ]:
uncertainty_asocc(
base_asocc_args={
"project_name": f"{project_name_}_external_methods",
"source": source_,
"years": study_period_,
"fu_code": fu_code_,
"s_p": s_p_,
"r_c": r_c_,
"lcia_method": lcia_method_,
},
uncertainty_config={
"mc_parameters": {
"fixed": {"active": True, "n_runs": 1000},
"convergence": {"active": False},
},
},
external_method={
"one_step_methods": ["CO(S)"],
"l1_l2_pairs": ["AR(E)::UT(S)"],
},
)
Inter-method uncertainty with custom weights between allocation methods
Inter-method custom weights are prepared with write_asocc_weight_template(...) and documented in README_inter_method_weights.txt.
Inter-MRIO uncertainty
Inter-MRIO uncertainty is inactive by default because it requires an alternate published disaggregated aSoCC source. Prepare that source with tutorials/optional_workflows/disaggregate_asocc_mrio_sectors.ipynb, then pass its published label as alternate_source. The electricity case study in that optional workflow writes oecd_electricity.
This uncertainty source applies only to non LCIA allocation methods. It samples a continuous interpolation between the main MRIO source and the alternate published disaggregated source.
[ ]:
inter_mrio_uncertainty_config = {
"inter_mrio_uncertainty": {
"alternate_source": "oecd_electricity",
},
}
Projection uncertainty and reference year uncertainty
projection_uncertainty and reference_year_uncertainty are active by default. When their default behavior is sufficient, the corresponding arguments do not need to be written.
projection_uncertainty applies to prospective rows that use L2 historical reuse. Each Monte Carlo run samples one reuse year from the deterministic l2_reuse_years candidates where reuse applies.
reference_year_uncertainty applies to acquired rights (AR) routes. Each Monte Carlo run samples among requested reference years admissible for the studied year (reference_year <= year).
[ ]:
uncertainty_asocc(
base_asocc_args={
"project_name": f"{project_name_}_projection_reference_year",
"source": source_,
"years": range(2020, 2031),
"fu_code": fu_code_,
"s_p": s_p_,
"r_c": r_c_,
"lcia_method": lcia_method_,
"method_plan": "pairs",
"l1_l2_pairs": ["AR(Ecap^{CBA_FD})::UT(FDa)"],
# If omitted, AR routes use all admissible historical reference years.
"reference_years": range(2010, 2020),
# If omitted, projection_mode defaults to "regression".
"projection_mode": "historical_reuse",
# If omitted when reuse is required, l2_reuse_years defaults to
# reg_window. L2.*.b two step routes always use L2 reuse years.
"l2_reuse_years": range(2015, 2020),
"ssp_scenario": ["SSP1", "SSP2"],
},
uncertainty_config={
"mc_parameters": {
"fixed": {"active": True, "n_runs": 1000},
"convergence": {"active": False},
},
"inter_method_uncertainty": {"active": False},
},
)
Changing convergence tolerance or maximum runs
The default convergence examples above omit mc_parameters. To change convergence controls, add "mc_parameters": {"convergence": {"rtol": 0.02, "max_runs": 100000}} under uncertainty_config. Omit nested values that should keep their defaults.
Sobol sensitivity analysis
Use sobol_parameters when Sobol variance decomposition is required. The argument checklist above gives the available mode fields and output year selector.
The example below keeps ordinary Monte Carlo and Sobol in fixed mode to make tutorial runtime predictable; the fixed Monte Carlo run count is not a Sobol convergence setting.
[ ]:
uncertainty_asocc(
base_asocc_args={
"project_name": f"{project_name_}_sobol",
"source": source_,
"years": study_period_,
"fu_code": fu_code_,
"s_p": s_p_,
"r_c": r_c_,
"lcia_method": lcia_method_,
},
uncertainty_config={
"mc_parameters": {
"fixed": {"active": True, "n_runs": 1000},
"convergence": {"active": False},
},
"lcia_uncertainty": {
"sector_cov_mapping": {"Paper": "Paper"},
},
},
sobol_parameters={
"active": True,
# For Sobol convergence with the default rtol, keep only "active": True.
# To set another convergence rtol, replace fixed mode with:
# "convergence": {"rtol": 0.02},
"fixed": {"active": True, "n_base_samples": 128},
"convergence": {"active": False},
},
)