def _construct_traj(self): logger.debug('Loading Trajectory object for model {0} ({1}/{2})'.format(self.df.templateid.iloc[0], 0, len(self.df.model_filepath))) traj = mdtraj.load_pdb(self.df.model_filepath[0]) remove_disulfide_bonds_from_topology(traj.topology) self.traj = traj for m, model_filepath in enumerate(self.df.model_filepath[1:]): logger.debug('Loading Trajectory object for model {0} ({1}/{2})'.format(self.df.templateid.iloc[m+1], m+1, len(self.df.model_filepath))) traj = mdtraj.load_pdb(model_filepath) remove_disulfide_bonds_from_topology(traj.topology) self.traj += traj
def _construct_traj(self): logger.debug( 'Loading Trajectory object for model {0} ({1}/{2})'.format( self.df.templateid.iloc[0], 0, len(self.df.model_filepath))) traj = mdtraj.load_pdb(self.df.model_filepath[0]) remove_disulfide_bonds_from_topology(traj.topology) self.traj = traj for m, model_filepath in enumerate(self.df.model_filepath[1:]): logger.debug( 'Loading Trajectory object for model {0} ({1}/{2})'.format( self.df.templateid.iloc[m + 1], m + 1, len(self.df.model_filepath))) traj = mdtraj.load_pdb(model_filepath) remove_disulfide_bonds_from_topology(traj.topology) self.traj += traj
def _gen_implicit_start_models(self, ff='amber99sbildn.xml', implicit_water_model='amber99_obc.xml', ph=8.0): self.ph = ph from simtk.openmm import app valid_model_templateids = [ templateid for templateid in self.templateids if os.path.exists( os.path.join( self.models_target_dir, templateid, ensembler.core. model_filenames_by_ensembler_stage['refine_implicit_md'])) ] gen_model_templateids = [ templateid for templateid in valid_model_templateids if not os.path.exists( os.path.join(self.models_target_dir, templateid, self.model_filename)) ] # make reference model forcefield = app.ForceField(ff, implicit_water_model) reference_model_id = get_highest_seqid_existing_model( models_target_dir=self.models_target_dir) logger.debug('Using {0} as reference model'.format(reference_model_id)) reference_model_path = os.path.join( self.models_target_dir, reference_model_id, model_filenames_by_ensembler_stage['build_models']) with gzip.open(reference_model_path) as reference_pdb_file: reference_pdb = app.PDBFile(reference_pdb_file) remove_disulfide_bonds_from_topology(reference_pdb.topology) reference_topology = reference_pdb.topology reference_modeller = app.Modeller(reference_pdb.topology, reference_pdb.positions) reference_variants = reference_modeller.addHydrogens(forcefield, pH=self.ph) for template_index in range(mpistate.rank, len(gen_model_templateids), mpistate.size): templateid = gen_model_templateids[template_index] logger.debug( 'Generating implicit-start model for {0}'.format(templateid)) try: input_model_filepath = os.path.join( self.models_target_dir, templateid, model_filenames_by_ensembler_stage['build_models']) output_model_filepath = os.path.join(self.models_target_dir, templateid, self.model_filename) with gzip.open(input_model_filepath) as pdb_file: pdb = app.PDBFile(pdb_file) remove_disulfide_bonds_from_topology(pdb.topology) modeller = app.Modeller(reference_topology, pdb.positions) modeller.addHydrogens(forcefield, pH=self.ph, variants=reference_variants) topology = modeller.getTopology() positions = modeller.getPositions() with gzip.open(output_model_filepath, 'wt') as output_model_file: app.PDBFile.writeHeader(topology, file=output_model_file) app.PDBFile.writeFile(topology, positions, file=output_model_file) app.PDBFile.writeFooter(topology, file=output_model_file) except Exception as e: print('Error for model {0}: {1}'.format(templateid, e)) continue
def _gen_implicit_start_models( self, ff='amber99sbildn.xml', implicit_water_model='amber99_obc.xml', ph=8.0): self.ph = ph from simtk.openmm import app valid_model_templateids = [ templateid for templateid in self.templateids if os.path.exists( os.path.join( self.models_target_dir, templateid, ensembler.core.model_filenames_by_ensembler_stage['refine_implicit_md'] ) ) ] gen_model_templateids = [ templateid for templateid in valid_model_templateids if not os.path.exists( os.path.join(self.models_target_dir, templateid, self.model_filename) ) ] # make reference model forcefield = app.ForceField(ff, implicit_water_model) reference_model_id = get_highest_seqid_existing_model(models_target_dir=self.models_target_dir) logger.debug('Using {0} as reference model'.format(reference_model_id)) reference_model_path = os.path.join(self.models_target_dir, reference_model_id, model_filenames_by_ensembler_stage['build_models']) with gzip.open(reference_model_path) as reference_pdb_file: reference_pdb = app.PDBFile(reference_pdb_file) remove_disulfide_bonds_from_topology(reference_pdb.topology) reference_topology = reference_pdb.topology reference_modeller = app.Modeller(reference_pdb.topology, reference_pdb.positions) reference_variants = reference_modeller.addHydrogens(forcefield, pH=self.ph) for template_index in range(mpistate.rank, len(gen_model_templateids), mpistate.size): templateid = gen_model_templateids[template_index] logger.debug('Generating implicit-start model for {0}'.format(templateid)) try: input_model_filepath = os.path.join(self.models_target_dir, templateid, model_filenames_by_ensembler_stage['build_models']) output_model_filepath = os.path.join(self.models_target_dir, templateid, self.model_filename) with gzip.open(input_model_filepath) as pdb_file: pdb = app.PDBFile(pdb_file) remove_disulfide_bonds_from_topology(pdb.topology) modeller = app.Modeller(reference_topology, pdb.positions) modeller.addHydrogens(forcefield, pH=self.ph, variants=reference_variants) topology = modeller.getTopology() positions = modeller.getPositions() with gzip.open(output_model_filepath, 'wt') as output_model_file: app.PDBFile.writeHeader(topology, file=output_model_file) app.PDBFile.writeFile(topology, positions, file=output_model_file) app.PDBFile.writeFooter(topology, file=output_model_file) except Exception as e: print('Error for model {0}: {1}'.format(templateid, e)) continue