E3SM-Project/e3sm_diags

[Bug]: `main` branch not properly renaming original variables to target derived variable key

Opened this issue · 1 comments

What happened?

rename() is not properly renaming original variable names to target derived variable keys. This bug has not been causing any issues in e3sm_diags and we don't write out files to netCDF (parameter.save_to_netcdf=False by default). This is a low priority issue and can be addressed when desired.

Technical Info

  1. rename() -- notice how it just returns whatever is passed to it (new_name)

    def rename(new_name):
    """Given the new name, just return it."""
    return new_name

  2. Example rename() reference in derived vars dictionary -- the intended behavior is to rename "rsdt" to "SOLIN"

    "SOLIN": OrderedDict(
    [
    (("rsdt",), rename),

  3. Call to rename() -- notice that a cdms2.TransientVariable is being passed to rename() here. rename() will just return that object without doing anything.

    # Get the corresponding function.
    # Ex: The func in {('PRECC', 'PRECL'): func}.
    func = self._get_func(vars_to_func_dict)
    # Call the function with the variables.
    derived_var = func(*variables)

What did you expect to happen? Are there are possible answers you came across?

rename() should update the .id of the cdms2.TransientVariable to the target key

Example:

def rename(var: cdms2.TransientVariable, target_key: str) -> cdms2.TransientVariable:
    var.id = target_key

    return var

Minimal Complete Verifiable Example (MVCE)

No response

Relevant log output

No response

Anything else we need to know?

No response

Environment

main branch and all previous versions of e3sm_diags that used rename()