Skip to content
Extraits de code Groupes Projets
cancel_experiment.py 2,38 ko
Newer Older
  • Learn to ignore specific revisions
  • import argparse
    
    
    import models.nemo.utilities.namelist
    import models.nemo.utilities.experiment
    import models.nemo.utilities.experiment_plan
    import models.nemo.utilities.argument_parser
    import models.nemo.utilities.global_information
    
    def cancel_experiment(version, configuration, name, keep_run_directories):
    
      Cancel all running and submitted legs of an experiment.
    
    Antoine Barthélemy's avatar
    Antoine Barthélemy a validé
      print('Canceling experiment "%s", in configuration "%s", in version "%s"...\n'%(name,
    
        configuration, version))
    
    
      # create the experiment object
    
      experiment = models.nemo.utilities.experiment.Experiment(version=version,
    
        configuration=configuration, name=name)
    
      experiment_plan = experiment.get_experiment_plan(for_modification=True)
    
    
      # cancel the experiment legs
    
      number_of_canceled_legs = 0
    
    
      for leg in experiment_plan.legs:
        if leg.status in (
    
          models.nemo.utilities.experiment_plan.EXPERIMENT_LEG_STATUS_SUBMITTED,
          models.nemo.utilities.experiment_plan.EXPERIMENT_LEG_STATUS_RUNNING,
        ):
    
          leg.cancel(delete_run_directory=(not keep_run_directories))
    
          number_of_canceled_legs += 1
    
      if number_of_canceled_legs > 0:
    
      # write the updated experiment plan
      experiment_plan.rewrite()
    
    
    
    #################
    # main function #
    #################
    
    def main():
    
      parser = argparse.ArgumentParser(description=cancel_experiment.__doc__,
        formatter_class=argparse.RawTextHelpFormatter)
    
      models.nemo.utilities.argument_parser.add_argument_version(parser=parser, required=False)
      models.nemo.utilities.argument_parser.add_argument_configuration(parser=parser, required=False)
      models.nemo.utilities.argument_parser.add_argument_name(parser=parser)
    
    Antoine Barthélemy's avatar
    Antoine Barthélemy a validé
        '-krd', '--keep_run_directories',
    
        help='keep the leg run directories upon cancellation\n(default: False)',
    
      arguments = vars(parser.parse_args())
    
    
        arguments['version'], arguments['configuration'] = (
    
          models.nemo.utilities.global_information.get_version_and_configuration(
    
          tentative_version=arguments['version'], tentative_configuration=arguments['configuration']))
    
      except utilities.generic.ClimateToolboxException as e:
    
        cancel_experiment(**arguments)
    
      except utilities.generic.ClimateToolboxException as e: