def run(self): """ runs a gromacs-mdrun with the current atom-configuration """ # clean up gromacs backups if self.clean: do_clean('#*') subcmd = 'mdrun' command = [subcmd] if self.do_qmmm: command += [ '-s', self.label + '.tpr', '-o', self.label + '.trr', '-e', self.label + '.edr', '-g', self.label + '.log', '-rerun', self.label + '.g96', self.params_runs.get('extra_mdrun_parameters', ''), '> QMMM.log 2>&1' ] command = ' '.join(command) self._execute_gromacs(command) else: command += [ '-s', self.label + '.tpr', '-o', self.label + '.trr', '-e', self.label + '.edr', '-g', self.label + '.log', '-c', self.label + '.g96', self.params_runs.get('extra_mdrun_parameters', ''), '> MM.log 2>&1' ] command = ' '.join(command) self._execute_gromacs(command) atoms = read_gromos(self.label + '.g96') self.atoms = atoms.copy()
def generate_topology_and_g96file(self): """ from coordinates (self.label.+'pdb') and gromacs run input file (self.label + '.mdp) generate topology (self.label+'top') and structure file in .g96 format (self.label + '.g96') """ from ase.io.gromos import read_gromos #generate structure and topology files # In case of predefinded topology file this is not done command = 'pdb2gmx' + ' ' os.system(command + \ ' -f ' + self.params_runs.get('init_structure') + \ ' -o ' + self.label + '.g96' + \ ' -p ' + self.label + '.top' + \ ' -ff ' + self.params_runs.get('force_field') + \ ' -water ' + self.params_runs.get('water') + \ ' ' + \ self.params_runs.get('extra_pdb2gmx_parameters') +\ ' > /dev/null 2>&1') # ' > debug.log 2>&1') # print command + \ # ' -f ' + self.params_runs.get('init_structure') + \ # ' -o ' + self.label+'.g96' + \ # ' -p ' + self.label+'.top' + \ # ' -ff ' + self.params_runs.get('force_field') + \ # ' -water ' + self.params_runs.get('water') + \ # ' ' + self.params_runs.get('extra_pdb2gmx_parameters') +\ # ' > /dev/null 2>&1' atoms = read_gromos(self.label + '.g96') self.atoms = atoms.copy()
def run(self): """ runs a 0-step gromacs-mdrun with the current atom-configuration """ delnames = glob.glob('#*') try: for delname in delnames: os.remove(delname) except: pass command = self.get_command() if self.doing_qmmm: os.system(command \ + ' -s ' + self.base_filename + '.tpr' \ + ' -o ' + self.base_filename + '.trr ' \ + ' -e ' + self.base_filename + '.edr ' \ + ' -g ' + self.base_filename + '.log -ffout ' \ + ' -rerun ' + self.structure_file \ + ' ' + self.extra_mdrun_parameters \ + ' > mm.log 2>&1') else: os.system(command \ + ' -s ' + self.base_filename + '.tpr' \ + ' -o ' + self.base_filename + '.trr' \ + ' -e ' + self.base_filename + '.edr' \ + ' -g ' + self.base_filename + '.log -ffout ' \ + ' -c ' + self.structure_file \ + ' ' + self.extra_mdrun_parameters \ + ' > MM.log 2>&1') atoms = read_gromos(self.structure_file) self.atoms = atoms.copy()
def run(self): """ runs a gromacs-mdrun with the current atom-configuration """ from ase.io.gromos import read_gromos # clean up gromacs backups if self.clean: do_clean('#*') command = 'mdrun' if self.do_qmmm: os.system(command \ + ' -s ' + self.label + '.tpr' \ + ' -o ' + self.label + '.trr ' \ + ' -e ' + self.label + '.edr ' \ + ' -g ' + self.label + '.log -ffout ' \ + ' -rerun ' + self.label + '.g96 ' \ + self.params_runs.get('extra_mdrun_parameters') \ + ' > mm.log 2>&1') else: os.system(command \ + ' -s ' + self.label + '.tpr ' \ + ' -o ' + self.label + '.trr ' \ + ' -e ' + self.label + '.edr ' \ + ' -g ' + self.label + '.log -ffout ' \ + ' -c ' + self.label + '.g96 ' \ + self.params_runs.get('extra_mdrun_parameters') \ + ' > MM.log 2>&1') atoms = read_gromos(self.label + '.g96') self.atoms = atoms.copy()
def generate_topology_and_g96file(self): """ from coordinates (self.label.+'pdb') and gromacs run input file (self.label + '.mdp) generate topology (self.label+'top') and structure file in .g96 format (self.label + '.g96') """ #generate structure and topology files # In case of predefinded topology file this is not done subcmd = 'pdb2gmx' command = ' '.join([ subcmd, '-f', self.params_runs['init_structure'], '-o', self.label + '.g96', '-p', self.label + '.top', '-ff', self.params_runs['force_field'], '-water', self.params_runs['water'], self.params_runs.get('extra_pdb2gmx_parameters', ''), '> {}.{}.log 2>&1'.format(self.label, subcmd) ]) self._execute_gromacs(command) atoms = read_gromos(self.label + '.g96') self.atoms = atoms.copy()
def generate_topology_and_g96file(self): """ from coordinates (self.structure_file) and gromacs run input file (' + self.base_filename + '.mdp) generate topology 'self.topology_filename' and structure file in .g96 format """ import os.path #generate structure and topology files # In case of predefinded topology file this is not done command = self.prefix + 'pdb2gmx' + self.postfix + ' ' os.system(command + \ ' -f ' + self.init_structure_file + \ ' -o ' + self.structure_file + \ ' -p ' + self.topology_filename + \ ' -ff ' + self.force_field + \ ' -water ' + self.water_model + \ ' ' + self.extra_pdb2gmx_parameters +\ ' > /dev/null 2>&1') # ' > debug.log 2>&1') atoms = read_gromos(self.structure_file) self.atoms = atoms.copy()
def read_atoms(self): """ read atoms from file """ self.atoms = read_gromos(self.structure_file)
nsteps = '0', nstfout = '1', nstlog = '1', nstenergy = '1', nstlist = '1', ns_type = 'grid', pbc = 'xyz', rlist = '1.15', coulombtype = 'PME-Switch', rcoulomb = '0.8', vdwtype = 'shift', rvdw = '0.8', rvdw_switch = '0.75', DispCorr = 'Ener') CALC_MM.generate_topology_and_g96file() CALC_MM.generate_gromacs_run_file() CALC_QMMM = AseQmmmManyqm(nqm_regions = 3, qm_calculators = [CALC_QM1, CALC_QM2, CALC_QM3], mm_calculator = CALC_MM, link_info = 'byQM') # link_info = 'byFILE') SYSTEM = read_gromos('gromacs_qm.g96') SYSTEM.set_calculator(CALC_QMMM) DYN = BFGS(SYSTEM) DYN.run(fmax = 0.05) print('exiting fine') LOG_FILE.close()
nsteps = '0', nstfout = '1', nstlog = '1', nstenergy = '1', nstlist = '1', ns_type = 'grid', pbc = 'xyz', rlist = '1.15', coulombtype = 'PME-Switch', rcoulomb = '0.8', vdwtype = 'shift', rvdw = '0.8', rvdw_switch = '0.75', DispCorr = 'Ener') CALC_MM.generate_topology_and_g96file() CALC_MM.generate_gromacs_run_file() CALC_QMMM = AseQmmmManyqm(nqm_regions=3, qm_calculators=[CALC_QM1, CALC_QM2, CALC_QM3], mm_calculator=CALC_MM, link_info='byQM') # link_info = 'byFILE') SYSTEM = read_gromos('gromacs_qm.g96') SYSTEM.set_calculator(CALC_QMMM) DYN = BFGS(SYSTEM) DYN.run(fmax=0.05) print('exiting fine') LOG_FILE.close()