Source code for pycif.plugins.models.satwetch4.ini_mapper

import datetime
import numpy as np
from logging import info

from ....utils.classes.setup import Setup
from ....utils.classes.domains import Domain

from ....utils.check.errclass import PluginError


[docs] def ini_mapper(model, general_mapper={}, backup_comps={}, transforms_order=[], ref_transform="", transform_name="", all_transforms=None, **kwargs): """Build the data-flow mapper for the SatWetCH4 bottom-up emission model. Declares: * **Inputs** — soil temperature, inundated fraction, labile carbon, and model parameters (``k``, ``Q10``) at the model's configured input resolution. * **Outputs** — CH₄ wetland flux per time step. Args: model: SatWetCH4 plugin instance with all date arrays set. general_mapper (dict): unused. backup_comps (dict): unused. transforms_order (list): unused. ref_transform (str): unused. transform_name (str): unused. all_transforms: unused. **kwargs: unused. Returns: dict: mapper with ``inputs``, ``outputs``, and ``outputs2inputs``. """ input_intervals = { ddi: np.append( model.input_dates[ddi][:-1, np.newaxis], model.input_dates[ddi][1:, np.newaxis], axis=1) for ddi in model.input_dates} mapper = dict() default_input_dict = { "input_dates": input_intervals, "force_dump": True, "domain": model.domain, "sampled": False, "sparse_data": False } mapper['inputs'] = { **{("meteo", comp): default_input_dict for comp in ["soil_temperature", "inundated_fraction", "C_labile"]}, **{("satwetch4_model_param", comp): default_input_dict for comp in ["k", "q10"]}, } mapper["outputs"] = { ("flux", "CH4_wetlands"): { "input_dates": input_intervals, "force_loadout": True, "domain": model.domain, "sampled": False, "sparse_data": False } } info("The model was initialized with the following mapper sw:") info("\nInputs:\n\n") for key in mapper["inputs"]: info(f"\t{key}: \t {mapper['inputs'][key]}\n") info("\n\n\nOutputs:\n\n") for key in mapper["outputs"]: info(f"\t{key}: \t {mapper['outputs'][key]}\n") return mapper