update_ensemble_experiment.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import os
  2. import sys
  3. # check the python version
  4. if float(sys.version[:3]) <= 3.6:
  5. print("This script require Python 3.6 !")
  6. print("Try:")
  7. print("\n\tmodule load python3\n\n")
  8. print("and restart this script again.")
  9. print("Aborting...")
  10. sys.exit(1)
  11. if len(sys.argv) < 4:
  12. print('Bad arguments:', sys.argv)
  13. print('Usage:')
  14. print('\n\t python3 update_ensemble_experiment.py where experiment ensemble_size run_folder_name\n')
  15. print('Arguments:\n')
  16. print('\twhere :\t\t\tWhere the experiment ensemble folders are located.')
  17. print('\texperiment :\t\tName of the experiment.')
  18. print('\tensemble_size :\t\tSize of the ensemble.')
  19. print('\trun_folder_name :\t\tOptional. Addtional name added to the "run_" folder name in plasim folder. Used to selected experiment executable. If not provide, assumes run folder is "run".')
  20. sys.exit(0)
  21. home_dir = os.getenv("HOME")
  22. scratch_dir = os.getenv("SCRATCH")
  23. plasim_dir = home_dir + "/models/PLASIM/"
  24. where = sys.argv[1]
  25. experiment = sys.argv[2]
  26. ensemble_size = int(sys.argv[3])
  27. run_folder = plasim_dir+"plasim/run"
  28. if len(sys.argv) == 5:
  29. run_folder_ext = sys.argv[4]
  30. run_folder += '_'+run_folder_ext
  31. if not os.path.isdir(run_folder):
  32. print("PLASIM run directory missing!")
  33. print("Run "+plasim_dir+"/most.x first.")
  34. print("Aborting...")
  35. sys.exit(1)
  36. # Check if the experiment folder exists
  37. experiment_folder = where+"/"+experiment+"/"
  38. if not os.path.isdir(experiment_folder):
  39. print("Experiment folder not found!")
  40. print("Aborting...")
  41. sys.exit(1)
  42. print('Updating the ensemble folders namelists...')
  43. for i in range(1, ensemble_size+1):
  44. member_number = str(i).rjust(2, '0')
  45. ensemble_member_folder = experiment_folder+'run_'+experiment+'_'+member_number
  46. os.system('cp -r '+run_folder+'/*_namelist '+ensemble_member_folder)
  47. print('Experiment ensemble updated and available in the folder:')
  48. print(experiment_folder)