functions.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import os
  2. import re
  3. import argparse
  4. # Natural sort
  5. def natural_key(string_):
  6. return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]
  7. # Return absolute path from relative or absolute path
  8. def abs_path(path):
  9. abs_path = os.path.abspath(path)
  10. return abs_path
  11. # Sanitize user input paths
  12. def san_path(path):
  13. san_path = os.path.normpath(path)
  14. return san_path
  15. # Argument parser for run_simulations.py
  16. def sim_parser(defaults):
  17. # Use default settings from run_simulation.py to generate argument parser
  18. parser = argparse.ArgumentParser()
  19. for _arg, _val in defaults.items():
  20. parser.add_argument(f'--{_arg}', type=type(_val[0]), default=_val[0], help=_val[1])
  21. args_dict = vars(parser.parse_args())
  22. return args_dict
  23. # Argument parser for run_analysis.py
  24. def analysis_parser():
  25. parser = argparse.ArgumentParser()
  26. parser.add_argument('--steps', type=int,
  27. help='Number of timesteps to run the simulation')
  28. parser.add_argument('--jobs_path', type=str, nargs='+', action='append',
  29. help='Directory path containing the jobs to be run')
  30. parser.add_argument('--namd_params', type=str,
  31. help='Optional parameters to send to namd')
  32. parser.add_argument('--ffs_path', type=str,
  33. help='Location of the forcefield files')
  34. parser.add_argument('--namd2_bin', type=str,
  35. help='Location of the namd2 executable')
  36. args = parser.parse_args()
  37. return args