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