Skip to content

output module

Module to get output variables

get_output_variables(model)

Retrieve output variable definitions and metadata for a given simulation model.

Parameters:

Name Type Description Default
model str

Name of the simulation model (e.g., a WOFOST variant).

required

Returns:

Type Description
list[dict]

A list of dictionaries, each describing an output variable. Each dictionary contains the following keys:

Source code in cropengine/output.py
def get_output_variables(model: str) -> list[dict]:
    """
    Retrieve output variable definitions and metadata for a given simulation model.

    Args:
        model (str): Name of the simulation model (e.g., a WOFOST variant).

    Returns:
        list[dict]: A list of dictionaries, each describing an output variable.
        Each dictionary contains the following keys:
    """

    try:
        with pkg_resources.files(configs).joinpath("output.yaml").open("r") as f:
            full_config = yaml.safe_load(f)
    except Exception as e:
        raise RuntimeError(f"Failed to load output.yaml: {e}")

    if model.lower().startswith("wofost"):
        config = full_config["wofost"]

    # Get the output variable
    if model in config["model_mapping"]:
        profile_name = config["model_mapping"][model]
        variable_names = config["profiles"][profile_name]["variables"]

        variable_defs = []

        # Build the Metadata List
        for var in variable_names:
            meta = {
                "variable": var,
                "description": config["output_vars"][var]["description"],
                "unit": config["output_vars"][var]["unit"],
                "type": config["output_vars"][var]["type"],
            }
            variable_defs.append(meta)

    return variable_defs