@@ -138,7 +138,7 @@ def set_workload_context(self, workload_context):
138
138
139
139
self ._set_context (self ._contexts .workload , workload_context )
140
140
141
- def set_experiment_context (self , experiment_context ):
141
+ def set_experiment_context (self , experiment_context , die_on_validate_error = True ):
142
142
"""Set up current experiment context"""
143
143
144
144
try :
@@ -148,7 +148,7 @@ def set_experiment_context(self, experiment_context):
148
148
raise RambleVariableDefinitionError (f"In experiment { namespace } : { e } " )
149
149
150
150
self ._set_context (self ._contexts .experiment , experiment_context )
151
- self ._ingest_experiments ()
151
+ self ._ingest_experiments (die_on_validate_error = die_on_validate_error )
152
152
153
153
@property
154
154
def application_namespace (self ):
@@ -253,7 +253,15 @@ def _compute_mpi_vars(self, expander, variables):
253
253
if not n_threads :
254
254
variables [self .keywords .n_threads ] = 1
255
255
256
- def _prepare_experiment (self , exp_template_name , variables , context , repeats ):
256
+ def _prepare_experiment (
257
+ self ,
258
+ exp_template_name ,
259
+ variables ,
260
+ context ,
261
+ repeats ,
262
+ die_on_validate_error = True ,
263
+ warn_validation = True ,
264
+ ):
257
265
"""Prepare an experiment instance
258
266
259
267
Create an experiment instance based on the input variables, context,
@@ -268,6 +276,7 @@ def _prepare_experiment(self, exp_template_name, variables, context, repeats):
268
276
Returns:
269
277
(Application): Instance of an application class for this experiment
270
278
"""
279
+
271
280
experiment_suffix = ""
272
281
# After generating the base experiment, append the index to repeat experiments
273
282
if repeats .repeat_index :
@@ -348,14 +357,9 @@ def _prepare_experiment(self, exp_template_name, variables, context, repeats):
348
357
app_inst .add_expand_vars (self ._workspace )
349
358
app_inst .read_status ()
350
359
351
- try :
352
- app_inst .validate_experiment ()
353
- except ramble .keywords .RambleKeywordError as e :
354
- raise RambleVariableDefinitionError (str (e ))
355
-
356
360
return app_inst
357
361
358
- def _ingest_experiments (self ):
362
+ def _ingest_experiments (self , die_on_validate_error = True ):
359
363
"""Ingest experiments based on the current context.
360
364
361
365
Merge all contexts, and render individual experiments. Track these
@@ -463,7 +467,12 @@ def _ingest_experiments(self):
463
467
tracking_group , exclude_where = exclude_where , ignore_used = False , fatal = False
464
468
):
465
469
app_inst = self ._prepare_experiment (
466
- experiment_template_name , tracking_vars , final_context , repeats
470
+ experiment_template_name ,
471
+ tracking_vars ,
472
+ final_context ,
473
+ repeats ,
474
+ warn_validation = False ,
475
+ die_on_validate_error = die_on_validate_error ,
467
476
)
468
477
469
478
final_exp_name = app_inst .expander .expand_var_name (self .keywords .experiment_namespace )
@@ -477,7 +486,12 @@ def _ingest_experiments(self):
477
486
render_group , exclude_where = exclude_where
478
487
):
479
488
app_inst = self ._prepare_experiment (
480
- experiment_template_name , experiment_vars , final_context , repeats
489
+ experiment_template_name ,
490
+ experiment_vars ,
491
+ final_context ,
492
+ repeats ,
493
+ warn_validation = False ,
494
+ die_on_validate_error = die_on_validate_error ,
481
495
)
482
496
483
497
final_exp_name = app_inst .expander .expand_var_name (self .keywords .experiment_name )
@@ -526,11 +540,15 @@ def _ingest_experiments(self):
526
540
logger .die (f"Experiment { final_exp_namespace } is not unique." )
527
541
528
542
try :
529
- self .keywords .check_required_keys (experiment_vars )
530
- except ramble .keywords .RambleKeywordError as e :
531
- raise RambleVariableDefinitionError (
532
- f"In experiment { final_exp_namespace } : { e } "
543
+ app_inst .validate_experiment (
544
+ warn_validation = True , die_on_validate_error = die_on_validate_error
533
545
)
546
+ except ramble .keywords .RambleKeywordError as e :
547
+ if die_on_validate_error :
548
+ raise RambleVariableDefinitionError (
549
+ f"In experiment { final_exp_namespace } : { e } "
550
+ )
551
+ pass
534
552
535
553
rendered_experiments .add (final_exp_namespace )
536
554
self .experiments [final_exp_namespace ] = app_inst
0 commit comments