1616from xarray import Dataset
1717
1818from ..algorithms .codec import Decode
19- from ..algorithms .codec import Encode
2019from ..algorithms .randomize import Randomize
2120from ..generators import DefaultGenerator
2221from ..interface .logging import Logging
@@ -37,26 +36,13 @@ def _hash(name: str) -> int:
3736
3837
3938def _decode (
40- x : da .Array , a : dict [str :Any ], dtype : np .dtype = np .single
39+ x : da .Array , a : dict [str :Any ], dtype : np .dtype = np .double
4140) -> da .Array :
4241 f = Decode (dtype , x .ndim )
4342 y = f .apply_to (
4443 x ,
4544 add_offset = a .get ("add_offset" , None ),
46- scale_factor = a .get ("add_offset" , None ),
47- fill_value = a .get ("_FillValue" , None ),
48- valid_min = a .get ("valid_min" , None ),
49- valid_max = a .get ("valid_max" , None ),
50- )
51- return y
52-
53-
54- def _encode (x : da .Array , a : dict [str :Any ], dtype : np .dtype ) -> da .Array :
55- f = Encode (dtype , x .ndim )
56- y = f .apply_to (
57- x ,
58- add_offset = a .get ("add_offset" , None ),
59- scale_factor = a .get ("add_offset" , None ),
45+ scale_factor = a .get ("scale_factor" , None ),
6046 fill_value = a .get ("_FillValue" , None ),
6147 valid_min = a .get ("valid_min" , None ),
6248 valid_max = a .get ("valid_max" , None ),
@@ -95,20 +81,18 @@ def run(self, source: Dataset) -> Dataset: # noqa: D102
9581 "tracking_id" ,
9682 source .attrs .get ("uuid" , self ._args .source_file .stem ),
9783 )
98- target = Dataset (
84+ target : Dataset = Dataset (
9985 data_vars = source .data_vars ,
10086 coords = source .coords ,
10187 attrs = source .attrs ,
10288 )
10389 config : dict [str : dict [str :Any ]] = self .config .get (
104- self ._args .product_type , {}
90+ self ._args .source_type , {}
10591 )
10692 for v , x in target .data_vars .items ():
107- if v not in config :
93+ if v not in config or self . _args . selector == 0 :
10894 continue
109-
11095 get_logger ().info (f"starting graph for variable: { v } " )
111-
11296 a : dict [str :Any ] = config [v ]
11397 f = Randomize (
11498 m = x .ndim ,
@@ -144,31 +128,24 @@ def run(self, source: Dataset) -> Dataset: # noqa: D102
144128 _decode (b .data , b .attrs ),
145129 clip = a .get ("clip" , None ),
146130 )
147-
131+ if get_logger ().is_enabled (Logging .DEBUG ):
132+ get_logger ().debug (f"min: { da .nanmin (z ).compute () :.3f} " )
133+ get_logger ().debug (f"max: { da .nanmax (z ).compute () :.3f} " )
134+ get_logger ().debug (f"mean: { da .nanmean (z ).compute () :.3f} " )
135+ get_logger ().debug (f"std: { da .nanstd (z ).compute () :.3f} " )
148136 target [v ] = DataArray (
149- data = _encode (
150- z ,
151- x .attrs ,
152- x .dtype ,
153- ),
154- coords = x .coords ,
155- dims = x .dims ,
156- attrs = x .attrs ,
137+ data = z , coords = x .coords , dims = x .dims , attrs = x .attrs
138+ )
139+ # target[v].attrs.pop("valid_min", None)
140+ # target[v].attrs.pop("valid_max", None)
141+ target [v ].attrs ["dtype" ] = x .dtype
142+ target [v ].attrs ["actual_range" ] = np .array (
143+ [
144+ da .nanmin (z ).compute (),
145+ da .nanmax (z ).compute (),
146+ ],
147+ dtype = z .dtype ,
157148 )
158- if "actual_range" in target [v ].attrs :
159- target [v ].attrs ["actual_range" ] = np .array (
160- [
161- da .nanmin (z ).compute (),
162- da .nanmax (z ).compute (),
163- ],
164- dtype = x .dtype ,
165- )
166-
167- if get_logger ().is_enabled (Logging .DEBUG ):
168- get_logger ().debug (f"min: { da .nanmin (z ).compute () :.6f} " )
169- get_logger ().debug (f"max: { da .nanmax (z ).compute () :.6f} " )
170- get_logger ().debug (f"mean: { da .nanmean (z ).compute () :.6f} " )
171- get_logger ().debug (f"std: { da .nanstd (z ).compute () :.6f} " )
172149 get_logger ().info (f"finished graph for variable: { v } " )
173150 return target
174151
0 commit comments