@@ -144,21 +144,29 @@ def _get_domain_mask(dname: str) -> np.ndarray:
144144
145145 # add volumetric functions
146146 for f in volume_functions :
147- func_data = f .evaluate (variable_bindings = bindings ).reshape ((num_z , num_y , num_x ))
147+ evaluated_data = f .evaluate (variable_bindings = bindings )
148+ is_pre_sized : bool = evaluated_data .shape == (num_z , num_y , num_x )
149+ if evaluated_data .shape == (): # scalar value
150+ func_data = np .zeros ((num_z , num_y , num_x ), dtype = evaluated_data .dtype )
151+ func_data .fill (evaluated_data .min ()) # min of a scalar value is the value itself.
152+ else :
153+ func_data = evaluated_data if is_pre_sized else evaluated_data .reshape ((num_z , num_y , num_x ))
148154 z1 [t , c , :, :, :] = func_data
149- domain_name = f .name .split ("::" )[0 ]
150- function_name = f .name .split ("::" )[1 ]
155+ name_parts = f .name .split ("::" )
156+ if len (name_parts ) > 2 :
157+ raise ValueError (f"Volume function name `{ f .name } ` is not in the expected format" )
158+ domain_half : str = f .name .split ("::" )[0 ] if len (name_parts ) == 2 else ""
159+ name_half : str = f .name .split ("::" )[- 1 ]
151160 if t == 0 :
152161 channel_metadata .append ({
153162 "index" : c ,
154- "label" : function_name ,
155- "domain_name" : domain_name ,
163+ "label" : name_half ,
164+ "domain_name" : domain_half ,
156165 "min_values" : [],
157166 "max_values" : [],
158167 "mean_values" : [],
159168 })
160- domain_mask = _get_domain_mask (domain_name )
161- masked = func_data [domain_mask ]
169+ masked = func_data if len (domain_half ) == 0 else func_data [_get_domain_mask (domain_half )]
162170 channel_metadata [c ]["min_values" ].append (float (np .min (masked )))
163171 channel_metadata [c ]["max_values" ].append (float (np .max (masked )))
164172 channel_metadata [c ]["mean_values" ].append (float (np .mean (masked )))
0 commit comments