def __init__(self, amber_sys, num_steps=1000, igb=5, restrained=True, rst_wt=10.0, rst_mask='@CA,C,O,N'): """ Sets up a minimization input file """ # Type checking if type(num_steps).__name__ != 'int': raise TypeError('num_steps must be an integer!') if type(igb).__name__ != 'int': raise TypeError('igb must be an integer!') # Create the mdin instance self.mdin = mdin(self.program) # Set up periodic/non-periodic settings if amber_sys.periodic(): self.mdin.change('cntrl', 'ntb', 1) else: self.mdin.change('cntrl', 'ntb', 0) if not igb in [1, 2, 5, 7, 8]: raise ValueError('For non-periodic systems, igb must be ' + '1, 2, 5, 7, or 8') self.mdin.change('cntrl', 'igb', igb) self.mdin.change('cntrl', 'cut', 1000.0) self.mdin.change('cntrl', 'imin', 1) self.mdin.change('cntrl', 'maxcyc', num_steps) self.mdin.change('cntrl', 'ntr', int(restrained)) if restrained: self.mdin.change('cntrl', 'restraint_wt', rst_wt) self.mdin.change('cntrl', 'restraintmask', rst_mask)
def __init__(self, amber_sys, nstlim=1000, igb=5, restrained=False, rst_wt=2.0, rst_mask='@CA,C,O,N', temp0=300.0, thermostat='langevin', thermostat_param=5.0, barostat=None, barostat_param=5.0, ntpr=1000, ntwr=10000, ntwx=1000, restart=True, dt=0.002): # Create the mdin instance self.mdin = mdin(self.program) # Do we have velocities? if restart: self.mdin.change('cntrl', 'ntx', 5) self.mdin.change('cntrl', 'irest', 1) # Set up periodic/non-periodic settings if amber_sys.periodic(): if barostat.lower() == 'berendsen': self.mdin.change('cntrl', 'ntb', 2) self.mdin.change('cntrl', 'ntp', 1) self.mdin.change('cntrl', 'taup', barostat_param) elif barostat.lower() == 'none': pass elif barostat: raise ValueError('barostat must be "berendsen" or None/False') else: self.mdin.change('cntrl', 'ntb', 1) else: # Type-check igb if type(igb).__name__ != 'int': raise TypeError('igb must be an integer!') self.mdin.change('cntrl', 'ntb', 0) if not igb in [1, 2, 5, 7, 8]: raise ValueError('For non-periodic systems, igb must be ' + '1, 2, 5, 7, or 8') self.mdin.change('cntrl', 'igb', igb) self.mdin.change('cntrl', 'cut', 1000.0) self.mdin.change('cntrl', 'ioutfm', 1) # always NetCDF! self.mdin.change('cntrl', 'ntr', int(restrained)) self.mdin.change('cntrl', 'ig', -1) self.mdin.change('cntrl', 'ntc', 2) self.mdin.change('cntrl', 'ntf', 2) self.mdin.change('cntrl', 'ntpr', ntpr) self.mdin.change('cntrl', 'ntwx', ntwx) self.mdin.change('cntrl', 'ntwr', ntwr) self.mdin.change('cntrl', 'nstlim', nstlim) self.mdin.change('cntrl', 'dt', dt) if thermostat.lower() == 'langevin': self.mdin.change('cntrl', 'ntt', 3) self.mdin.change('cntrl', 'gamma_ln', thermostat_param) elif thermostat.lower() == 'berendsen': self.mdin.change('cntrl', 'ntt', 1) self.mdin.change('cntrl', 'tautp', thermostat_param) else: raise ValueError('thermostat must be langevin or berendsen!') if restrained: self.mdin.change('cntrl', 'restraint_wt', rst_wt) self.mdin.change('cntrl', 'restraintmask', rst_mask)
def __init__(self, amber_sys, nstlim=1000, igb=5, restrained=True, rst_wt=2.0, rst_mask='@CA,C,O,N', temp0=300.0, tempi=10.0, slow=False, thermostat='langevin', thermostat_param=5.0, ntpr=1000, ntwx=1000, ntwr=10000, dt=0.002): """ Sets up a heating input file """ # Type checking if type(nstlim).__name__ != 'int': raise TypeError('nstlim must be an integer!') # Create the mdin instance self.mdin = mdin(self.program) # Set up periodic/non-periodic settings if amber_sys.periodic(): self.mdin.change('cntrl', 'ntb', 1) else: # Type-check igb if type(igb).__name__ != 'int': raise TypeError('igb must be an integer!') self.mdin.change('cntrl', 'ntb', 0) if not igb in [1, 2, 5, 7, 8]: raise ValueError('For non-periodic systems, igb must be ' + '1, 2, 5, 7, or 8') self.mdin.change('cntrl', 'igb', igb) self.mdin.change('cntrl', 'cut', 1000.0) self.mdin.change('cntrl', 'ioutfm', 1) # always NetCDF! if not slow: self.mdin.change('cntrl', 'tempi', tempi) self.mdin.change('cntrl', 'temp0', temp0) self.mdin.change('cntrl', 'ntr', int(restrained)) self.mdin.change('cntrl', 'ig', -1) self.mdin.change('cntrl', 'ntc', 2) self.mdin.change('cntrl', 'ntf', 2) self.mdin.change('cntrl', 'ntpr', ntpr) self.mdin.change('cntrl', 'ntwx', ntwx) self.mdin.change('cntrl', 'ntwr', ntwr) self.mdin.change('cntrl', 'nstlim', nstlim) self.mdin.change('cntrl', 'dt', dt) if thermostat.lower() == 'langevin': self.mdin.change('cntrl', 'ntt', 3) self.mdin.change('cntrl', 'gamma_ln', thermostat_param) elif thermostat.lower() == 'berendsen': self.mdin.change('cntrl', 'ntt', 1) self.mdin.change('cntrl', 'tautp', thermostat_param) else: raise ValueError('thermostat must be langevin or berendsen!') if restrained: self.mdin.change('cntrl', 'restraint_wt', rst_wt) self.mdin.change('cntrl', 'restraintmask', rst_mask) if slow: self.mdin.add_lines("&wt\n TYPE='TEMP0', ISTEP1=0, ISTEP2=%d" % ((nstlim * 2) // 3)) self.mdin.add_lines((" VALUE1=%.2f, VALUE2=%.2f,\n/\n" + "&wt TYPE='END' /") % (tempi, temp0))
print >> sys.stderr, 'Error: Unrecognized input option %s!' % sys.argv[ i] usage() i += 1 except IndexError: print >> sys.stderr, 'Error: Expecting more command line arguments!' usage() except ValueError: print >> sys.stderr, 'Error: Unexpected data types obtained (i.e. float, int, etc.)' usage() FACTOR *= pH # put the pH in the factor # Variable declaration pmemd_input = mdin('pmemd') # we're creating a pmemd input file pmemd_energy = mdin('pmemd') # we're creating another pmemd input file parm = amberParm(prmtop) resstates = [] chrgdat = [] protcnt = [] num_states = [] first_state = [] first_charge = [] first_atom = [] num_atoms = [] statene = [] trescnt = 0 # Check for errors and parse CPIN file. if not parm.exists:
def __init__(self, amber_sys, nstlim=1000, igb=5, restrained=True, rst_wt=2.0, rst_mask='@CA,C,O,N', temp0=300.0, tempi=10.0, slow=False, thermostat='langevin', thermostat_param=5.0, ntpr=1000, ntwx=1000, ntwr=10000, dt=0.002): """ Sets up a heating input file """ # Type checking if type(nstlim).__name__ != 'int': raise TypeError('nstlim must be an integer!') # Create the mdin instance self.mdin = mdin(self.program) # Set up periodic/non-periodic settings if amber_sys.periodic(): self.mdin.change('cntrl', 'ntb', 1) else: # Type-check igb if type(igb).__name__ != 'int': raise TypeError('igb must be an integer!') self.mdin.change('cntrl', 'ntb', 0) if not igb in [1, 2, 5, 7, 8]: raise ValueError('For non-periodic systems, igb must be ' + '1, 2, 5, 7, or 8') self.mdin.change('cntrl', 'igb', igb) self.mdin.change('cntrl', 'cut', 1000.0) self.mdin.change('cntrl', 'ioutfm', 1) # always NetCDF! if not slow: self.mdin.change('cntrl', 'tempi', tempi) self.mdin.change('cntrl', 'temp0', temp0) self.mdin.change('cntrl', 'ntr', int(restrained)) self.mdin.change('cntrl', 'ig', -1) self.mdin.change('cntrl', 'ntc', 2) self.mdin.change('cntrl', 'ntf', 2) self.mdin.change('cntrl', 'ntpr', ntpr) self.mdin.change('cntrl', 'ntwx', ntwx) self.mdin.change('cntrl', 'ntwr', ntwr) self.mdin.change('cntrl', 'nstlim', nstlim) self.mdin.change('cntrl', 'dt', dt) if thermostat.lower() == 'langevin': self.mdin.change('cntrl', 'ntt', 3) self.mdin.change('cntrl', 'gamma_ln', thermostat_param) elif thermostat.lower() == 'berendsen': self.mdin.change('cntrl', 'ntt', 1) self.mdin.change('cntrl', 'tautp', thermostat_param) else: raise ValueError('thermostat must be langevin or berendsen!') if restrained: self.mdin.change('cntrl', 'restraint_wt', rst_wt) self.mdin.change('cntrl', 'restraintmask', rst_mask) if slow: self.mdin.add_lines("&wt\n TYPE='TEMP0', ISTEP1=0, ISTEP2=%d" % ((nstlim * 2) // 3)) self.mdin.add_lines( (" VALUE1=%.2f, VALUE2=%.2f,\n/\n" + "&wt TYPE='END' /") % (tempi, temp0))
script = open(scriptname, 'w') break except IOError: print "Could not open file", scriptname, "for writing." sys.stdout.write("Alternative script file name: ") scriptname = sys.stdin.readline().rstrip('\r\n') # Print out the shebang. script.write("#!/bin/sh\n\n") query_parallel() # Close the script file and give it rwxr-xr-x permissions script.close() os.chmod(scriptname, 0755) # Create a new mdin object appropriate for sander mdin_contents = mdin("sander") # Set the mdin simulation title sys.stdout.write("Simulation title: ") mdin_contents.title = sys.stdin.readline().rstrip('\r\n') # Write the mdin file mdin_contents.write(mdin_name) # End the program finished()