class ClimateDriversForFire(ESMValToolDiagnostic):
"""
Calculate diagnostics regarding climate drivers for fire.
"""
name = "Climate drivers for fire"
slug = "climate-drivers-for-fire"
base_recipe = "ref/recipe_ref_fire.yml"
data_requirements = (
DataRequirement(
source_type=SourceDatasetType.CMIP6,
filters=(
FacetFilter(
{
"variable_id": ("hurs", "pr", "tas", "tasmax"),
"experiment_id": "historical",
"table_id": "Amon",
}
),
FacetFilter(
{
"variable_id": ("cVeg", "treeFrac"),
"experiment_id": "historical",
"table_id": "Lmon",
}
),
FacetFilter(
{
"variable_id": "vegFrac",
"experiment_id": "historical",
"table_id": "Emon",
}
),
),
group_by=("source_id", "member_id", "grid_label"),
constraints=(
RequireTimerange(
group_by=("instance_id",),
start=PartialDateTime(2013, 1),
end=PartialDateTime(2014, 12),
),
AddSupplementaryDataset.from_defaults("sftlf", SourceDatasetType.CMIP6),
RequireFacets(
"variable_id",
(
"cVeg",
"hurs",
"pr",
"tas",
"tasmax",
"sftlf",
"treeFrac",
"vegFrac",
),
),
),
),
)
facets = ()
@staticmethod
def update_recipe(
recipe: Recipe,
input_files: dict[SourceDatasetType, pandas.DataFrame],
) -> None:
"""Update the recipe."""
recipe_variables = dataframe_to_recipe(input_files[SourceDatasetType.CMIP6])
dataset = recipe_variables["cVeg"]["additional_datasets"][0]
dataset.pop("mip")
dataset.pop("timerange")
dataset["start_year"] = 2013
dataset["end_year"] = 2014
recipe["datasets"] = [dataset]
recipe["diagnostics"]["fire_evaluation"]["scripts"]["fire_evaluation"]["remove_confire_files"] = True