Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
This processes an argument list with an arbitrary number of arguments that
may or may not be comma-delimited (with any number of spaces)
"""
# If the argument list is not set, just return None
if arglist is None:
return None
# Otherwise, process the arguments
processed_args = []
for arg in arglist:
# Delete any spaces, split on commas, and add this to processed arg list
for arg in arg.replace(' ', '').split(','):
if not arg: continue
try:
processed_args.append(argtype(arg))
except ValueError:
raise AmberError('Expected type %s for argument. Got %s' %
(argtype.__name__, arg))
return processed_args
# Process the arguments that take multiple args
resstates = process_arglist(opt.resstates, int)
resnums = process_arglist(opt.resnums, int)
notresnums = process_arglist(opt.notresnums, int)
resnames = process_arglist(opt.resnames, str)
notresnames = process_arglist(opt.notresnames, str)
if not opt.igb in (1, 2, 5, 7, 8):
raise AmberError('-igb must be 1, 2, 5, 7, or 8!')
if resnums is not None and notresnums is not None:
raise AmberError('Cannot specify -resnums and -notresnums together')
if resnames is not None and notresnames is not None:
raise AmberError('Cannot specify -resnames and -notresnames together')
if opt.intdiel != 1 and opt.intdiel != 2:
raise AmberError('-intdiel must be either 1 or 2 currently')
# Set the list of residue names we will be willing to titrate
titratable_residues = []
if notresnames is not None:
for resname in residues.titratable_residues:
if resname in notresnames: continue
titratable_residues.append(resname)
elif resnames is not None:
for resname in resnames:
if not resname in residues.titratable_residues:
raise AmberError('%s is not a titratable residue!' % resname)
titratable_residues.append(resname)
else:
# Load the topology file
parm = AmberParm(opt.prmtop)
# Replace an un-set notresnums with an empty list so we get __contains__()
if notresnums is None:
notresnums = []
# If we have a list of residue numbers, check that they're all titratable
if resnums is not None:
for resnum in resnums:
if resnum > parm.ptr('nres'):
raise AmberError('%s only has %d residues. (%d chosen)' %
(parm, parm.ptr('nres'), resnum))
if resnum <= 0:
raise AmberError('Cannot select negative residue numbers.')
resname = parm.parm_data['RESIDUE_LABEL'][resnum-1]
if not resname in titratable_residues:
raise AmberError('Residue number %s [%s] is not titratable'
% (resnum, resname))
else:
# Select every residue except those in notresnums
resnums = []
for resnum in range(1, parm.ptr('nres') + 1):
if resnum in notresnums: continue
resnums.append(resnum)
solvated = False
first_solvent = 0
if 'WAT' in parm.parm_data['RESIDUE_LABEL']:
solvated = True
for i, res in enumerate(parm.parm_data['RESIDUE_LABEL']):
# Load the topology file
parm = AmberParm(opt.prmtop)
# Replace an un-set notresnums with an empty list so we get __contains__()
if notresnums is None:
notresnums = []
# If we have a list of residue numbers, check that they're all titratable
if resnums is not None:
for resnum in resnums:
if resnum > parm.ptr('nres'):
raise AmberError('%s only has %d residues. (%d chosen)' %
(parm, parm.ptr('nres'), resnum))
if resnum <= 0:
raise AmberError('Cannot select negative residue numbers.')
resname = parm.parm_data['RESIDUE_LABEL'][resnum-1]
if not resname in titratable_residues:
raise AmberError('Residue number %s [%s] is not titratable'
% (resnum, resname))
else:
# Select every residue except those in notresnums
resnums = []
for resnum in range(1, parm.ptr('nres') + 1):
if resnum in notresnums: continue
resnums.append(resnum)
solvated = False
first_solvent = 0
if 'WAT' in parm.parm_data['RESIDUE_LABEL']:
solvated = True
for i, res in enumerate(parm.parm_data['RESIDUE_LABEL']):
def main(opt):
# Check all of the arguments
if not os.path.exists(opt.prmtop):
raise AmberError('prmtop file (%s) is missing' % opt.prmtop)
# Process the arguments that take multiple args
resstates = process_arglist(opt.resstates, int)
resnums = process_arglist(opt.resnums, int)
notresnums = process_arglist(opt.notresnums, int)
resnames = process_arglist(opt.resnames, str)
notresnames = process_arglist(opt.notresnames, str)
minpka = opt.minpka
maxpka = opt.maxpka
if not opt.igb in (1, 2, 5, 7, 8):
raise AmberError('-igb must be 1, 2, 5, 7, or 8!')
if resnums is not None and notresnums is not None:
raise AmberError('Cannot specify -resnums and -notresnums together')
if resnames is not None and notresnames is not None:
raise AmberError('Cannot specify -resnames and -notresnames together')
if opt.intdiel != 1 and opt.intdiel != 2:
raise AmberError('-intdiel must be either 1 or 2 currently')
# Print warning about old format
if opt.oldfmt:
sys.stderr.write('Warning: The old format of the CPIN file can only be used for simulations with temp0=300.0!\n'
' You should use the new format for simulations with temperatures other than 300.0 Kelvins\n')
# Set the list of residue names we will be willing to titrate
def main(opt):
# Check all of the arguments
if not os.path.exists(opt.prmtop):
raise AmberError('prmtop file (%s) is missing' % opt.prmtop)
# Process the arguments that take multiple args
resstates = process_arglist(opt.resstates, int)
resnums = process_arglist(opt.resnums, int)
notresnums = process_arglist(opt.notresnums, int)
resnames = process_arglist(opt.resnames, str)
notresnames = process_arglist(opt.notresnames, str)
if not opt.igb in (1, 2, 5, 7, 8):
raise AmberError('-igb must be 1, 2, 5, 7, or 8!')
if resnums is not None and notresnums is not None:
raise AmberError('Cannot specify -resnums and -notresnums together')
if resnames is not None and notresnames is not None:
raise AmberError('Cannot specify -resnames and -notresnames together')
if opt.intdiel != 1 and opt.intdiel != 2:
raise AmberError('-intdiel must be either 1 or 2 currently')
# Set the list of residue names we will be willing to titrate
titratable_residues = []
if notresnames is not None:
for resname in residues.titratable_residues:
if resname in notresnames: continue
titratable_residues.append(resname)
solvent_ions = ['WAT', 'Na+', 'Br-', 'Cl-', 'Cs+', 'F-', 'I-', 'K+', 'Li+',
'Mg+', 'Rb+', 'CIO', 'IB', 'MG2']
# Filter titratable residues based on min and max pKa
new_reslist = []
for res in titratable_residues:
if getattr(residues, res).pKa < minpka: continue
if getattr(residues, res).pKa > maxpka: continue
new_reslist.append(res)
titratable_residues = new_reslist
del new_reslist
# Make sure we still have a couple residues
if len(titratable_residues) == 0:
raise AmberError('No titratable residues fit your criteria!')
# Load the topology file
parm = AmberParm(opt.prmtop)
# Replace an un-set notresnums with an empty list so we get __contains__()
if notresnums is None:
notresnums = []
# If we have a list of residue numbers, check that they're all titratable
if resnums is not None:
for resnum in resnums:
if resnum > parm.ptr('nres'):
raise AmberError('%s only has %d residues. (%d chosen)' %
(parm, parm.ptr('nres'), resnum))
if resnum <= 0:
raise AmberError('Cannot select negative residue numbers.')
resstates = process_arglist(opt.resstates, int)
resnums = process_arglist(opt.resnums, int)
notresnums = process_arglist(opt.notresnums, int)
resnames = process_arglist(opt.resnames, str)
notresnames = process_arglist(opt.notresnames, str)
mineo = opt.mineo
maxeo = opt.maxeo
if not opt.igb in (1, 2, 5, 7, 8):
raise AmberError('-igb must be 1, 2, 5, 7, or 8!')
if resnums is not None and notresnums is not None:
raise AmberError('Cannot specify -resnums and -notresnums together')
if resnames is not None and notresnames is not None:
raise AmberError('Cannot specify -resnames and -notresnames together')
if opt.intdiel != 1 and opt.intdiel != 2:
raise AmberError('-intdiel must be either 1 or 2 currently')
# Set the list of residue names we will be willing to titrate
titratable_residues = []
if notresnames is not None:
for resname in residues.titratable_residues:
if resname in notresnames: continue
titratable_residues.append(resname)
elif resnames is not None:
for resname in resnames:
if not resname in residues.titratable_residues:
raise AmberError('%s is not a titratable residue!' % resname)
elif not getattr(residues, resname).typ == "redox":
raise AmberError('%s is not a redox-active titratable residue!' % resname)
# Check all of the arguments
if not os.path.exists(opt.prmtop):
raise AmberError('prmtop file (%s) is missing' % opt.prmtop)
# Process the arguments that take multiple args
resstates = process_arglist(opt.resstates, int)
resnums = process_arglist(opt.resnums, int)
notresnums = process_arglist(opt.notresnums, int)
resnames = process_arglist(opt.resnames, str)
notresnames = process_arglist(opt.notresnames, str)
if not opt.igb in (1, 2, 5, 7, 8):
raise AmberError('-igb must be 1, 2, 5, 7, or 8!')
if resnums is not None and notresnums is not None:
raise AmberError('Cannot specify -resnums and -notresnums together')
if resnames is not None and notresnames is not None:
raise AmberError('Cannot specify -resnames and -notresnames together')
if opt.intdiel != 1 and opt.intdiel != 2:
raise AmberError('-intdiel must be either 1 or 2 currently')
# Set the list of residue names we will be willing to titrate
titratable_residues = []
if notresnames is not None:
for resname in residues.titratable_residues:
if resname in notresnames: continue
titratable_residues.append(resname)
elif resnames is not None:
for resname in resnames:
if not resname in residues.titratable_residues: