Source code for qmmd.main

import argparse
import sys
from qmmd.datasets import genExampleXYZs
from qmmd.qmcalc.genScripts import genAllScripts
from qmmd.qmcalc.tabulate import writeToExcel
from qmmd.qmcalc.unitConv import energyUnitsConversion, eyringEquation, timeUnitsConversion
from qmmd.qmcalc.jobSubmit import submit_jobs


[docs] def main(): parser = argparse.ArgumentParser(description="QMMD: Automate QM and MD for covalent drugs.") subparsers = parser.add_subparsers(dest="command", help="Sub-command to run") # init-struct (example XYZ generation) parser_init = subparsers.add_parser("init-struct", help="Generate example XYZ files") parser_init.add_argument("out_dir", type=str, help="Directory to store example XYZ files") # gen-scripts parser_gen = subparsers.add_parser("gen-scripts", help="Generate Gaussian input and HPC job scripts") parser_gen.add_argument("inp_dir", type=str, help="Directory containing molecule directories with XYZ files") parser_gen.add_argument("--verbose", action="store_true", help="Enable verbose output") # submit-jobs parser_sub = subparsers.add_parser("submit-jobs", help="Recursively submit job scripts to the scheduler") parser_sub.add_argument("target_dir", type=str, help="Directory to search for job scripts") parser_sub.add_argument("--pattern", type=str, default="*.sh", help="Filename pattern for job scripts") parser_sub.add_argument("--verbose", action="store_true", help="Enable verbose output") # tabulate parser_tab = subparsers.add_parser("tabulate", help="Tabulate Gaussian output values to Excel") parser_tab.add_argument("out_dir", type=str, help="Directory containing Gaussian output files") parser_tab.add_argument("--verbose", action="store_true", help="Enable verbose output") # unit-conv parser_conv = subparsers.add_parser("unit-conv", help="Interconvert energy and kinetic units") parser_conv.add_argument("--kcal", type=float, help="Energy in kcal/mol") parser_conv.add_argument("--kj", type=float, help="Energy in kJ/mol") parser_conv.add_argument("--verbose", action="store_true", help="Enable verbose output") args = parser.parse_args() if args.command == "init-struct": genExampleXYZs(args.out_dir) print(f"Example XYZ files generated in {args.out_dir}") elif args.command == "gen-scripts": genAllScripts(args.inp_dir, verbose=args.verbose) elif args.command == "submit-jobs": submit_jobs(args.target_dir, filename_pattern=args.pattern, verbose=args.verbose) elif args.command == "tabulate": writeToExcel(args.out_dir, verbose=args.verbose) elif args.command == "unit-conv": if args.kcal is not None or args.kj is not None: energyUnitsConversion(args.kcal, args.kj, verbose=args.verbose) else: print("Please provide either --kcal or --kj") else: parser.print_help()
if __name__ == "__main__": main()