@@ -189,8 +189,18 @@ def __init__( # noqa: PLR0913
189189 self .num_recalibration_experiments = 0
190190 self .recalibration_ratio = recalibration_ratio
191191
192- self .sample_transformation_function = sample_transformation_function
193- self .model_evaluation_function = model_evaluation_function
192+ self .sample_transformation_function = uq_utilities .Ensure2DOutputShape (
193+ sample_transformation_function ,
194+ expected_dim = self .input_dimension ,
195+ label = 'sample_transformation_function' ,
196+ )
197+
198+ self .model_evaluation_function = uq_utilities .Ensure2DOutputShape (
199+ model_evaluation_function ,
200+ expected_dim = self .output_dimension ,
201+ label = 'model_evaluation_function' ,
202+ )
203+
194204 self .run_type = run_type
195205 self .parallel_pool = uq_utilities .get_parallel_pool_instance (run_type )
196206 self .parallel_evaluation_function = self .parallel_pool .pool .starmap # type: ignore
@@ -267,7 +277,14 @@ def _evaluate_in_parallel(
267277 outputs = np .atleast_2d (
268278 list (self .parallel_evaluation_function (func , iterable ))
269279 )
270- return outputs # noqa: RET504
280+ # Fix scalar outputs → (n, 1)
281+ if outputs .ndim == 1 :
282+ outputs = outputs .reshape (- 1 , 1 )
283+
284+ # Fix shape (n, 1, d) → (n, d)
285+ elif outputs .ndim == 3 and outputs .shape [1 ] == 1 : # noqa: PLR2004
286+ outputs = np .squeeze (outputs , axis = 1 )
287+ return outputs
271288
272289 def _perform_space_filling_doe (self , n_samples ):
273290 """
@@ -302,7 +319,7 @@ def _get_initial_training_set(self, n_samples):
302319 self ._perform_space_filling_doe (n_samples )
303320 )
304321 self .loginfo (
305- f'Generated { inputs .shape [0 ]} samples for initial training set.'
322+ f'Generated { inputs .shape [0 ]} samples for initial training set. Evaluating the model at these samples. '
306323 )
307324 outputs = self ._evaluate_in_parallel (self .model_evaluation_function , inputs )
308325 return inputs , outputs
0 commit comments