def usage(): """ Display the usage information for this script """ size = psize.Psize() usage = "\n" usage = usage + "Use this script to generate new APBS input files or split an existing\n" usage = usage + "parallel input file into multiple async files.\n\n" usage = usage + "Usage: inputgen.py [opts] <filename>\n" usage = usage + "Optional Arguments:\n" usage = usage + " --help : Display this text\n" usage = usage + " --split : Split an existing parallel input file to multiple\n" usage = usage + " async input files.\n" usage = usage + " --potdx : Create an input to compute an electrostatic potential map.\n" usage = usage + " --method=<value> : Force output file to write a specific APBS ELEC\n" usage = usage + " method. Options are para (parallel), auto\n" usage = usage + " (automatic), manual (manual), or async (asynchronous).\n" usage = usage + " solve. async will result in multiple input files.\n" usage = usage + " --cfac=<value> : Factor by which to expand molecular dimensions to\n" usage = usage + " get coarse grid dimensions.\n" usage = usage + " [default = %g]\n" % size.getConstant( "cfac") usage = usage + " --fadd=<value> : Amount to add to molecular dimensions to get fine\n" usage = usage + " grid dimensions.\n" usage = usage + " [default = %g]\n" % size.getConstant( "fadd") usage = usage + " --space=<value> : Desired fine mesh resolution\n" usage = usage + " [default = %g]\n" % size.getConstant( "space") usage = usage + " --gmemfac=<value> : Number of bytes per grid point required\n" usage = usage + " for sequential MG calculation\n" usage = usage + " [default = %g]\n" % size.getConstant( "gmemfac") usage = usage + " --gmemceil=<value> : Max MB allowed for sequential MG\n" usage = usage + " calculation. Adjust this to force the\n" usage = usage + " script to perform faster calculations (which\n" usage = usage + " require more parallelism).\n" usage = usage + " [default = %g]\n" % size.getConstant( "gmemceil") usage = usage + " --ofrac=<value> : Overlap factor between mesh partitions\n" usage = usage + " [default = %g]\n" % size.getConstant( "ofrac") usage = usage + " --redfac=<value> : The maximum factor by which a domain\n" usage = usage + " dimension can be reduced during focusing\n" usage = usage + " [default = %g]\n" % size.getConstant( "redfac") usage = usage + " --istrng=<value> : Ionic strength (M). Na+ anc Cl- ions will be used\n" sys.stderr.write(usage) sys.exit(2)
def usage(): """ Display the usage information for this script """ size = psize.Psize() usage = "\n" usage = usage + "Use this script to generate new APBS input files or split an existing\n" usage = usage + "parallel input file into multiple async files.\n\n" usage = usage + "Usage: inputgen.py [opts] <filename>\n" usage = usage + "Optional Arguments:\n" usage = usage + " --help : Display this text\n" usage = usage + " --split : Split an existing parallel input file to multiple\n" usage = usage + " async input files.\n" usage = usage + " --METHOD=<value> : Force output file to write a specific APBS ELEC\n" usage = usage + " method. Options are para (parallel), auto\n" usage = usage + " (automatic), manual (manual), or async (asynchronous).\n" usage = usage + " solve. async will result in multiple input files.\n" usage = usage + " --CFAC=<value> : Factor by which to expand molecular dimensions to\n" usage = usage + " get coarse grid dimensions.\n" usage = usage + " [default = %g]\n" % size.getConstant( "CFAC") usage = usage + " --FADD=<value> : Amount to add to molecular dimensions to get fine\n" usage = usage + " grid dimensions.\n" usage = usage + " [default = %g]\n" % size.getConstant( "FADD") usage = usage + " --SPACE=<value> : Desired fine mesh resolution\n" usage = usage + " [default = %g]\n" % size.getConstant( "SPACE") usage = usage + " --GMEMFAC=<value> : Number of bytes per grid point required\n" usage = usage + " for sequential MG calculation\n" usage = usage + " [default = %g]\n" % size.getConstant( "GMEMFAC") usage = usage + " --GMEMCEIL=<value> : Max MB allowed for sequential MG\n" usage = usage + " calculation. Adjust this to force the\n" usage = usage + " script to perform faster calculations (which\n" usage = usage + " require more parallelism).\n" usage = usage + " [default = %g]\n" % size.getConstant( "GMEMCEIL") usage = usage + " --OFAC=<value> : Overlap factor between mesh partitions\n" usage = usage + " [default = %g]\n" % size.getConstant( "OFAC") usage = usage + " --REDFAC=<value> : The maximum factor by which a domain\n" usage = usage + " dimension can be reduced during focusing\n" usage = usage + " [default = %g]\n" % size.getConstant( "REDFAC") sys.stderr.write(usage) sys.exit(2)
] try: opts, args = getopt.getopt(sys.argv[1:], shortOptList, longOptList) except getopt.GetoptError, details: sys.stderr.write("Option error (%s)!\n" % details) usage() if len(args) != 1: sys.stderr.write("Invalid argument list!\n") usage() else: filename = args[0] method = "" size = psize.Psize() async = 0 split = 0 for o, a in opts: if o == "--help": usage() if o == "--split": split = 1 if o == "--method": if a == "para": sys.stdout.write("Forcing a parallel calculation\n") method = "mg-para" elif a == "auto": sys.stdout.write("Forcing a sequential calculation\n") method = "mg-auto" elif a == "async":
def main(): """ Main """ import getopt filename = "" short_opt_list = "" long_opt_list = [ "help", "split", "potdx", "method=", "cfac=", "space=", "gmemceil=", "gmemfac=", "ofrac=", "redfac=", "istrng=", "fadd=" ] try: opts, args = getopt.getopt(sys.argv[1:], short_opt_list, long_opt_list) except getopt.GetoptError as err: sys.stderr.write("Option error (%s)!\n" % err) usage() if len(args) != 1: sys.stderr.write("Invalid argument list!\n") usage() else: filename = args[0] method = "" size = psize.Psize() async_val = 0 split = 0 istrng = 0 potdx = 0 for opt, arg in opts: if opt == "--help": usage() if opt == "--split": split = 1 if opt == "--potdx": potdx = 1 if opt == "--method": if arg == "para": sys.stdout.write("Forcing a parallel calculation\n") method = "mg-para" elif arg == "auto": sys.stdout.write("Forcing a sequential calculation\n") method = "mg-auto" elif arg == "async": sys.stdout.write("Forcing an asynchronous calculation\n") method = "mg-para" async_val = 1 elif arg == "manual": sys.stdout.write("Forcing a manual calculation\n") method = "mg-manual" else: sys.stdout.write("Incorrect method argument: %s\n" % arg) sys.stdout.write("Defaulting to memory dependent result\n") if opt == "--cfac": size.setConstant("cfac", float(arg)) if opt == "--space": size.setConstant("space", float(arg)) if opt == "--gmemfac": size.setConstant("gmemfac", int(arg)) if opt == "--gmemceil": size.setConstant("gmemceil", int(arg)) if opt == "--ofrac": size.setConstant("ofrac", float(arg)) if opt == "--redfac": size.setConstant("redfac", float(arg)) if opt == "--fadd": size.setConstant("fadd", int(arg)) if opt == "--istrng": istrng = float(arg) if split == 1: split_input(filename) else: size.runPsize(filename) data = Input(filename, size, method, async_val, istrng, potdx) data.print_input_files()