1
1
using DimensionalData
2
- import DimensionalData: DimArray
2
+ import DimensionalData: DimArray, dims
3
3
import DimensionalData. Lookups: NoLookup
4
4
5
+ function get_xarray_dims (x; transpose= false )
6
+ dim_names = tuple (Symbol .(collect (x. dims))... )
7
+ dim_names = transpose ? reverse (dim_names) : dim_names
8
+ coord_names = Symbol .(collect (x. coords. keys ()))
9
+ lookups_values = map (dim_names) do dim
10
+ if dim in coord_names
11
+ coord_py = getproperty (x, dim). data
12
+ coord_type = string (coord_py. dtype. name)
13
+ coord = coord_type == " datetime64[ns]" ? pyconvert_time (coord_py) : PyArray (coord_py; copy= false )
14
+ Dim {dim} (coord)
15
+ else
16
+ Dim {dim} (NoLookup ())
17
+ end
18
+ end
19
+ return lookups_values
20
+ end
21
+
22
+ DimensionalData. dims (v:: TplotVariable ) = Tuple (get_xarray_dims (v. py))
23
+
5
24
function DimensionalData. DimArray (var:: TplotVariable ; kwargs... )
6
25
pyconvert_dataarray (var. py; kwargs... )
7
26
end
@@ -18,22 +37,9 @@ function pyconvert_dataarray(x; transpose=false)
18
37
data_npy = transpose ? x. data. T : x. data
19
38
data = PyArray (data_npy; copy= false )
20
39
21
- dim_names = tuple (Symbol .(collect (x. dims))... )
22
- dim_names = transpose ? reverse (dim_names) : dim_names
23
- coord_names = Symbol .(collect (x. coords. keys ()))
24
- lookups_values = map (dim_names) do dim
25
- if dim in coord_names
26
- coord_py = getproperty (x, dim). data
27
- coord_type = string (coord_py. dtype. name)
28
- coord_type == " datetime64[ns]" ? pyconvert_time (coord_py) : PyArray (coord_py; copy= false )
29
- else
30
- NoLookup ()
31
- end
32
- end
33
-
34
- lookups = NamedTuple {dim_names} (lookups_values)
40
+ dims = get_xarray_dims (x; transpose)
35
41
metadata = pyconvert (Dict{Any,Any}, x. attrs)
36
42
array_name = pyis (x. name, pybuiltins. None) ? nothing : string (x. name)
37
43
38
- return DimArray (data, lookups ; name= array_name, metadata)
44
+ return DimArray (data, dims ; name= array_name, metadata)
39
45
end
0 commit comments