Option("Q", "queue", "choice", "queue for scheduling", choices=["auto",]+sorted(load_queues())), Option("N", "nodes", "int", "number of computing cluster nodes", default=2, min_value=1), Option("P", "ppn", "int", "number of processors per node", default=8, min_value=1), Option("W", "walltime", "float", "job-walltime in hours", default=1.0, min_value=0.1), Option("M", "email", "str", "email-address for notifications"), Option("D", "dryrun", "bool", "Only generates job-file, but does not submit it", default=False), Option("S", "subdivide", "int", "number of parallel zgf_mdrun processes started within the job", min_value=1, default=1), ]) sys.modules[__name__].__doc__ += options_desc.epytext() # for epydoc # reuse some options from zgf_mdrun FORWARDED_ZGF_MDRUN_OPTIONS = ("seq", "npme", "reprod", "pd", "convtest", "auto-refines") for x in FORWARDED_ZGF_MDRUN_OPTIONS: options_desc.append(zgf_mdrun.options_desc[x]) def is_applicable(): pool = Pool() return(len(pool.where("state=='mdrun-able'")) > 0) #=============================================================================== def main(): options = options_desc.parse_args(sys.argv)[0] assert(options.nodes % options.subdivide == 0) joblines = ["#!/bin/bash"] joblines += ["#PBS -N zgf_job", "#PBS -j oe",] if(options.email):
import zgf_solvate_nodes import zgf_grompp #=============================================================================== options_desc = OptionsList([ Option("p", "np", "int", "Number of positive ions", default=0, min_value=0), Option("P", "pname", "str", "Name of the positive ion", default="NA"), Option("n", "nn", "int", "Number of negative ions", default=0, min_value=0), Option("N", "nname", "str", "Name of the negative ion", default="CL"), Option("s", "random-seed", "str", "Seed for random number generator", default="1993"), ]) # reuse option from zgf_solvate_nodes options_desc.append(zgf_solvate_nodes.options_desc["grompp"]) sys.modules[__name__].__doc__ += options_desc.epytext() # for epydoc def is_applicable(): pool = Pool() return(len(pool.where("state == 'em-mdrun-able'")) > 0) #=============================================================================== def main(): options = options_desc.parse_args(sys.argv)[0] pool = Pool() needy_nodes = pool.where("state == 'em-mdrun-able'") assert(len(needy_nodes) == len(needy_nodes.multilock())) # make sure we lock ALL nodes
"bool", "refine all not-converged nodes", default=False), Option("e", "extend-all", "bool", "extend all not-converged nodes", default=False), ]) # reuse some options from zgf_create_nodes FORWARDED_ZGF_CREATE_NODES_OPTIONS = ("numnodes", "methodnodes", "methodalphas", "methodphifit", "random-seed") for x in FORWARDED_ZGF_CREATE_NODES_OPTIONS: options_desc.append(copy( zgf_create_nodes.options_desc[x])) # need copy to safely ... options_desc["numnodes"].default = 2 # ... change default values sys.modules[__name__].__doc__ += options_desc.epytext() # for epydoc def is_applicable(): pool = Pool() return (len(pool.where("isa_partition and is_sampled")) > 0) #=============================================================================== # This method is also called from zgf_mdrun def main(argv=None): if (argv == None): argv = sys.argv
Option("S", "subdivide", "int", "number of parallel zgf_mdrun processes started within the job", min_value=1, default=1), Option("A", "account", "str", "account to be debited"), ]) sys.modules[__name__].__doc__ += options_desc.epytext() # for epydoc # reuse some options from zgf_mdrun FORWARDED_ZGF_MDRUN_OPTIONS = ("seq", "npme", "reprod", "pd", "convtest", "auto-refines", "multistart") for x in FORWARDED_ZGF_MDRUN_OPTIONS: options_desc.append(zgf_mdrun.options_desc[x]) def is_applicable(): pool = Pool() return (len( pool.where( "state in ('em-mdrun-able', 'mdrun-able', 'rerun-able-converged', 'rerun-able-not-converged')" )) > 0) #=============================================================================== def main(): options = options_desc.parse_args(sys.argv)[0] assert (options.nodes % options.subdivide == 0)
import zgf_setup_nodes import zgf_grompp import zgf_cleanup from copy import copy import sys options_desc = OptionsList([ Option("r", "refine-all", "bool", "refine all not-converged nodes", default=False), Option("e", "extend-all", "bool", "extend all not-converged nodes", default=False), ]) # reuse some options from zgf_create_nodes FORWARDED_ZGF_CREATE_NODES_OPTIONS = ("numnodes", "methodnodes", "methodalphas", "methodphifit", "random-seed") for x in FORWARDED_ZGF_CREATE_NODES_OPTIONS: options_desc.append(copy(zgf_create_nodes.options_desc[x])) # need copy to safely ... options_desc["numnodes"].default = 2 # ... change default values sys.modules[__name__].__doc__ += options_desc.epytext() # for epydoc def is_applicable(): pool = Pool() return(len(pool.where("isa_partition and is_sampled")) > 0) #=============================================================================== # This method is also called from zgf_mdrun def main(argv=None): if(argv==None): argv = sys.argv options = options_desc.parse_args(argv)[0]
options_desc = OptionsList([ Option("p", "np", "int", "Number of positive ions", default=0, min_value=0), Option("P", "pname", "str", "Name of the positive ion", default="NA"), Option("n", "nn", "int", "Number of negative ions", default=0, min_value=0), Option("N", "nname", "str", "Name of the negative ion", default="CL"), Option("s", "random-seed", "str", "Seed for random number generator", default="1993"), ]) # reuse option from zgf_solvate_nodes options_desc.append(zgf_solvate_nodes.options_desc["grompp"]) sys.modules[__name__].__doc__ += options_desc.epytext() # for epydoc def is_applicable(): pool = Pool() return (len(pool.where("state == 'em-mdrun-able'")) > 0) #=============================================================================== def main(): options = options_desc.parse_args(sys.argv)[0] pool = Pool() needy_nodes = pool.where("state == 'em-mdrun-able'")