MCPcopy
hub / github.com/pydata/xarray / _get_virtual_variable

Function _get_virtual_variable

xarray/core/dataset_utils.py:57–91  ·  view source on GitHub ↗

Get a virtual variable (e.g., 'time.year') from a dict of xarray.Variable objects (if possible)

(
    variables, key: Hashable, dim_sizes: Mapping | None = None
)

Source from the content-addressed store, hash-verified

55
56
57def _get_virtual_variable(
58 variables, key: Hashable, dim_sizes: Mapping | None = None
59) -> tuple[Hashable, Hashable, Variable]:
60 """Get a virtual variable (e.g., 'time.year') from a dict of xarray.Variable
61 objects (if possible)
62
63 """
64 from xarray.core.dataarray import DataArray
65
66 if dim_sizes is None:
67 dim_sizes = {}
68
69 if key in dim_sizes:
70 data = pd.RangeIndex(dim_sizes[key], name=key)
71 variable = IndexVariable((key,), data, fastpath=True)
72 return key, key, variable
73
74 if not isinstance(key, str):
75 raise KeyError(key)
76
77 split_key = key.split(".", 1)
78 if len(split_key) != 2:
79 raise KeyError(key)
80
81 ref_name, var_name = split_key
82 ref_var = variables[ref_name]
83
84 if _contains_datetime_like_objects(ref_var):
85 ref_var = DataArray(ref_var)
86 data = getattr(ref_var.dt, var_name).data
87 else:
88 data = getattr(ref_var, var_name).data
89 virtual_var = Variable(ref_var.dims, data)
90
91 return ref_name, var_name, virtual_var

Callers 4

_copy_listedMethod · 0.90
_construct_dataarrayMethod · 0.90
_get_stack_indexMethod · 0.90
_getitem_coordMethod · 0.90

Calls 5

IndexVariableClass · 0.90
DataArrayClass · 0.90
VariableClass · 0.90
splitMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…