Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def leap(self, read_prmtop=False, count_mols=False, name=None, delcheck=False):
if not os.path.exists(self.leapcmd):
LinkFile(self.absleap, self.leapcmd)
pdb = os.path.basename(self.abspdb)
if not os.path.exists(pdb):
LinkFile(self.abspdb, pdb)
# Link over "static" mol2 and frcmod files from target folder
# print(self.absmol2, self.absfrcmod)
for mol2 in self.absmol2:
if not os.path.exists(os.path.split(mol2)[-1]):
LinkFile(mol2, os.path.split(mol2)[-1])
for frcmod in self.absfrcmod:
if not os.path.exists(os.path.split(frcmod)[-1]):
LinkFile(frcmod, os.path.split(frcmod)[-1])
if name is None: name = self.name
write_leap(self.leapcmd, mol2=self.mol2, frcmod=self.frcmod, pdb=pdb, prefix=name, spath=self.spath, delcheck=delcheck)
self.callamber("tleap -f %s_" % self.leapcmd)
if read_prmtop:
prmtop = PrmtopLoader('%s.prmtop' % name)
na = prmtop.getNumAtoms()
self.natoms = na
self.AtomLists['Charge'] = prmtop.getCharges()
self.AtomLists['Name'] = prmtop.getAtomNames()
self.AtomLists['Mass'] = prmtop.getMasses()
self.AtomLists['ResidueNumber'] = [prmtop.getResidueNumber(i) for i in range(na)]
self.AtomLists['ResidueName'] = [prmtop.getResidueLabel(i) for i in range(na)]
# AMBER virtual sites don't have to have mass zero; this is my
# best guess at figuring out where they are.
self.AtomMask = [self.AtomLists['Mass'][i] >= 1.0 or self.AtomLists['Name'][i] != 'LP' for i in range(na)]
if self.pbc != prmtop.getIfBox():
def submit_jobs(self, mvals, AGrad=False, AHess=False):
n=0
id_string = "%s_%i-%i" % (self.name, Counter(), n)
while os.path.exists('%s.out' % id_string):
n+=1
id_string = "%s_%i-%i" % (self.name, Counter(), n)
with open('forcebalance.p','w') as f: forcebalance.nifty.lp_dump((mvals, AGrad, AHess, id_string, self.r_options, self.r_tgt_opts, self.FF),f)
forcebalance.nifty.LinkFile(os.path.join(os.path.split(__file__)[0],"data","rtarget.py"),"rtarget.py")
forcebalance.nifty.LinkFile(os.path.join(self.root,"temp", self.name, "target.tar.bz2"),"%s.tar.bz2" % self.name)
wq = getWorkQueue()
logger.info("Sending target '%s' to work queue for remote evaluation\n" % self.name)
# input:
# forcebalance.p: pickled mvals, options, and forcefield
# rtarget.py: remote target evaluation script
# target.tar.bz2: tarred target
# output:
# objective.p: pickled objective function dictionary
# indicate.log: results of target.indicate() written to file
forcebalance.nifty.queue_up(wq, "python rtarget.py > %s.out 2>&1" % id_string,
["forcebalance.p", "rtarget.py", "%s.tar.bz2" % self.name],
['objective_%s.p' % id_string, 'indicate_%s.log' % id_string, '%s.out' % id_string],
tgt=self)
def leap(self, read_prmtop=False, count_mols=False, name=None, delcheck=False):
if not os.path.exists(self.leapcmd):
LinkFile(self.absleap, self.leapcmd)
pdb = os.path.basename(self.abspdb)
if not os.path.exists(pdb):
LinkFile(self.abspdb, pdb)
# Link over "static" mol2 and frcmod files from target folder
# print(self.absmol2, self.absfrcmod)
for mol2 in self.absmol2:
if not os.path.exists(os.path.split(mol2)[-1]):
LinkFile(mol2, os.path.split(mol2)[-1])
for frcmod in self.absfrcmod:
if not os.path.exists(os.path.split(frcmod)[-1]):
LinkFile(frcmod, os.path.split(frcmod)[-1])
if name is None: name = self.name
write_leap(self.leapcmd, mol2=self.mol2, frcmod=self.frcmod, pdb=pdb, prefix=name, spath=self.spath, delcheck=delcheck)
self.callamber("tleap -f %s_" % self.leapcmd)
if read_prmtop:
prmtop = PrmtopLoader('%s.prmtop' % name)
# Enforce implicit solvent in the liquid simulation.
# We need to be more careful with this when running explicit solvent.
eng_opts['implicit_solvent'] = liq
eng_opts['coords'] = os.path.basename(self.molecules[label])
if not os.path.exists(sdnm):
os.makedirs(sdnm)
os.chdir(sdnm)
if not os.path.exists('md_result.p'):
# Link in a bunch of files... what were these again?
link_dir_contents(os.path.join(self.root,self.rundir),os.getcwd())
# Link in the scripts required to run the simulation
for f in self.scripts:
LinkFile(os.path.join(os.path.split(__file__)[0],"data",f),os.path.join(os.getcwd(),f))
# Link in the coordinate file.
LinkFile(self.molecules[label], './%s' % os.path.basename(self.molecules[label]))
# Store names of previous trajectory files.
self.last_traj += [os.path.join(os.getcwd(), i) for i in self.extra_output]
# Write target, engine and simulation options to disk.
lp_dump((self.OptionDict, eng_opts, md_opts), 'simulation.p')
# Execute the script for running molecular dynamics.
cmdstr = '%s python md_ism_hfe.py %s' % (self.prefix, "-g" if AGrad else "")
if wq is None:
logger.info("Running condensed phase simulation locally.\n")
logger.info("You may tail -f %s/npt.out in another terminal window\n" % os.getcwd())
_exec(cmdstr, copy_stderr=True, outfnm='md.out')
else:
queue_up(wq, command = cmdstr+' &> md.out', tag='%s:%s/%s' % (self.name, label, "liq" if liq else "gas"),
input_files = self.scripts + ['simulation.p', 'forcefield.p', os.path.basename(self.molecules[label])],
output_files = ['md_result.p', 'md.out'] + self.extra_output, tgt=self, verbose=False, print_time=3600)
os.chdir('..')
def leap(self, read_prmtop=False, count_mols=False, name=None, delcheck=False):
if not os.path.exists(self.leapcmd):
LinkFile(self.absleap, self.leapcmd)
pdb = os.path.basename(self.abspdb)
if not os.path.exists(pdb):
LinkFile(self.abspdb, pdb)
# Link over "static" mol2 and frcmod files from target folder
# print(self.absmol2, self.absfrcmod)
for mol2 in self.absmol2:
if not os.path.exists(os.path.split(mol2)[-1]):
LinkFile(mol2, os.path.split(mol2)[-1])
for frcmod in self.absfrcmod:
if not os.path.exists(os.path.split(frcmod)[-1]):
LinkFile(frcmod, os.path.split(frcmod)[-1])
if name is None: name = self.name
write_leap(self.leapcmd, mol2=self.mol2, frcmod=self.frcmod, pdb=pdb, prefix=name, spath=self.spath, delcheck=delcheck)
self.callamber("tleap -f %s_" % self.leapcmd)
if read_prmtop:
prmtop = PrmtopLoader('%s.prmtop' % name)
na = prmtop.getNumAtoms()
self.natoms = na
self.AtomLists['Charge'] = prmtop.getCharges()
self.AtomLists['Name'] = prmtop.getAtomNames()
self.AtomLists['Mass'] = prmtop.getMasses()
self.AtomLists['ResidueNumber'] = [prmtop.getResidueNumber(i) for i in range(na)]
self.AtomLists['ResidueName'] = [prmtop.getResidueLabel(i) for i in range(na)]
# AMBER virtual sites don't have to have mass zero; this is my
def prepare_temp_directory(self, options, tgt_opts):
os.environ["GMX_NO_SOLV_OPT"] = "TRUE"
os.environ["GMX_NO_ALLVSALL"] = "TRUE"
abstempdir = os.path.join(self.root,self.tempdir)
if options['gmxpath'] == None or options['gmxsuffix'] == None:
warn_press_key('Please set the options gmxpath and gmxsuffix in the input file!')
if not os.path.exists(os.path.join(options['gmxpath'],"mdrun"+options['gmxsuffix'])):
warn_press_key('The mdrun executable pointed to by %s doesn\'t exist! (Check gmxpath and gmxsuffix)' % os.path.join(options['gmxpath'],"mdrun"+options['gmxsuffix']))
# Link the necessary programs into the temporary directory
LinkFile(os.path.join(options['gmxpath'],"mdrun"+options['gmxsuffix']),os.path.join(abstempdir,"mdrun"))
LinkFile(os.path.join(options['gmxpath'],"grompp"+options['gmxsuffix']),os.path.join(abstempdir,"grompp"))
LinkFile(os.path.join(options['gmxpath'],"trjconv"+options['gmxsuffix']),os.path.join(abstempdir,"trjconv"))
# Link the run files
LinkFile(os.path.join(self.root,self.tgtdir,"conf.gro"),os.path.join(abstempdir,"conf.gro"))
LinkFile(os.path.join(self.root,self.tgtdir,"grompp.mdp"),os.path.join(abstempdir,"grompp.mdp"))
LinkFile(os.path.join(self.root,self.tgtdir,"topol.top"),os.path.join(abstempdir,"topol.top"))
"""
# Set up and run the simulation chain on all points.
for pt in self.points:
# Create subdir
try:
os.makedirs(str(pt.idnr))
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
# Goto subdir
os.chdir(str(pt.idnr))
# Link dir contents from target subdir to current temp directory.
for f in self.scripts:
LinkFile(os.path.join(self.root, self.tempdir, f),
os.path.join(os.getcwd(), f))
link_dir_contents(os.path.join(self.root, self.tgtdir,
str(pt.idnr)), os.getcwd())
# Dump the force field to a pickle file
lp_dump((self.FF, mvals, self.OptionDict, AGrad), 'forcebalance.p')
# Run the simulation chain for point.
cmdstr = ("%s python md_chain.py " % self.mdpfx +
" ".join(self.quantities) + " " +
"--engine %s " % self.engname +
"--length %d " % self.n_sim_chain +
"--name %s " % self.simpfx +
"--temperature %f " % pt.temperature +
"--pressure %f " % pt.pressure +