@@ -90,6 +90,8 @@ def abs_bound_codec(
9090 data_max : Optional [float ] = None ,
9191 data_abs_min : Optional [float ] = None ,
9292 data_abs_max : Optional [float ] = None ,
93+ data_min_2d : Optional [np .ndarray ] = None ,
94+ data_max_2d : Optional [np .ndarray ] = None ,
9395 ) -> Codec :
9496 """Create a codec with an absolute error bound."""
9597 pass
@@ -104,6 +106,8 @@ def rel_bound_codec(
104106 data_max : Optional [float ] = None ,
105107 data_abs_min : Optional [float ] = None ,
106108 data_abs_max : Optional [float ] = None ,
109+ data_min_2d : Optional [np .ndarray ] = None ,
110+ data_max_2d : Optional [np .ndarray ] = None ,
107111 ) -> Codec :
108112 """Create a codec with a relative error bound."""
109113 pass
@@ -116,6 +120,8 @@ def build(
116120 data_abs_max : dict [VariableName , float ],
117121 data_min : dict [VariableName , float ],
118122 data_max : dict [VariableName , float ],
123+ data_min_2d : dict [VariableName , np .ndarray ],
124+ data_max_2d : dict [VariableName , np .ndarray ],
119125 error_bounds : list [dict [VariableName , ErrorBound ]],
120126 ) -> dict [VariantName , list [NamedPerVariableCodec ]]:
121127 """
@@ -139,6 +145,12 @@ def build(
139145 Dict mapping from variable name to minimum value for the variable.
140146 data_max : dict[VariableName, float]
141147 Dict mapping from variable name to maximum value for the variable.
148+ data_min_2d : dict[VariableName, np.ndarray]
149+ Dict mapping from variable name to per-lat-lon-slice minimum value for the
150+ variable.
151+ data_max_2d : dict[VariableName, np.ndarray]
152+ Dict mapping from variable name to per-lat-lon-slice maximum value for the
153+ variable.
142154 error_bounds: list[ErrorBound]
143155 List of error bounds to use for the compressor.
144156
@@ -173,6 +185,8 @@ def build(
173185 data_max = data_max [var ],
174186 data_abs_min = data_abs_min [var ],
175187 data_abs_max = data_abs_max [var ],
188+ data_min_2d = data_min_2d [var ],
189+ data_max_2d = data_max_2d [var ],
176190 )
177191 elif eb .rel_error is not None and cls .has_rel_error_impl :
178192 new_codecs [var ] = partial (
@@ -183,6 +197,8 @@ def build(
183197 data_max = data_max [var ],
184198 data_abs_min = data_abs_min [var ],
185199 data_abs_max = data_abs_max [var ],
200+ data_min_2d = data_min_2d [var ],
201+ data_max_2d = data_max_2d [var ],
186202 )
187203 else :
188204 # This should never happen as we have already transformed the error bounds.
0 commit comments