예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
   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))
예제 #5
0
            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:
예제 #6
0
 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)
예제 #7
0
    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))
예제 #8
0
      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()