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

Function to_iris

xarray/convert.py:81–118  ·  view source on GitHub ↗

Convert a DataArray into an Iris Cube

(dataarray)

Source from the content-addressed store, hash-verified

79
80# TODO: Add converting bounds from xarray to Iris and back
81def to_iris(dataarray):
82 """Convert a DataArray into an Iris Cube"""
83 # Iris not a hard dependency
84 import iris
85 from iris.fileformats.netcdf import parse_cell_methods
86
87 dim_coords = []
88 aux_coords = []
89
90 for coord_name in dataarray.coords:
91 coord = encode(dataarray.coords[coord_name])
92 coord_args = _get_iris_args(coord.attrs)
93 coord_args["var_name"] = coord_name
94 axis = None
95 if coord.dims:
96 axis = dataarray.get_axis_num(coord.dims)
97 if coord_name in dataarray.dims:
98 try:
99 iris_coord = iris.coords.DimCoord(coord.values, **coord_args)
100 dim_coords.append((iris_coord, axis))
101 except ValueError:
102 iris_coord = iris.coords.AuxCoord(coord.values, **coord_args)
103 aux_coords.append((iris_coord, axis))
104 else:
105 iris_coord = iris.coords.AuxCoord(coord.values, **coord_args)
106 aux_coords.append((iris_coord, axis))
107
108 args = _get_iris_args(dataarray.attrs)
109 args["var_name"] = dataarray.name
110 args["dim_coords_and_dims"] = dim_coords
111 args["aux_coords_and_dims"] = aux_coords
112 if "cell_methods" in dataarray.attrs:
113 args["cell_methods"] = parse_cell_methods(dataarray.attrs["cell_methods"])
114
115 masked_data = duck_array_ops.masked_invalid(dataarray.data)
116 cube = iris.cube.Cube(masked_data, **args)
117
118 return cube
119
120
121def _iris_obj_to_attrs(obj):

Callers 1

to_irisMethod · 0.90

Calls 3

encodeFunction · 0.85
_get_iris_argsFunction · 0.85
get_axis_numMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…