def run(self): sqlite = ( 'select' ' CrystalName,' ' PANDDA_site_event_map,' ' PANDDA_site_ligand_resname,' ' PANDDA_site_ligand_chain,' ' PANDDA_site_ligand_sequence_number,' ' PANDDA_site_ligand_altLoc ' 'from panddaTable ' 'where PANDDA_site_event_map not like "event%"' ) query=self.db.execute_statement(sqlite) progress_step=1 if len(query) != 0: progress_step=100/float(len(query)) else: progress_step=1 progress=0 self.emit(QtCore.SIGNAL('update_progress_bar'), progress) for item in query: xtalID=str(item[0]) event_map=str(item[1]) resname=str(item[2]) chainID=str(item[3]) resseq=str(item[4]) altLoc=str(item[5]) if os.path.isfile(os.path.join(self.initial_model_directory,xtalID,'refine.pdb')): os.chdir(os.path.join(self.initial_model_directory,xtalID)) self.Logfile.insert('extracting ligand (%s,%s,%s,%s) from refine.pdb' %(str(resname),str(chainID),str(resseq),str(altLoc))) XChemUtils.pdbtools('refine.pdb').save_specific_ligands_to_pdb(resname,chainID,resseq,altLoc) if os.path.isfile('ligand_%s_%s_%s_%s.pdb' %(str(resname),str(chainID),str(resseq),str(altLoc))): ligand_pdb='ligand_%s_%s_%s_%s.pdb' %(str(resname),str(chainID),str(resseq),str(altLoc)) print os.path.join(self.initial_model_directory,xtalID,ligand_pdb) else: self.Logfile.insert('could not extract ligand; trying next...') continue else: self.Logfile.insert('directory: '+os.path.join(self.initial_model_directory,xtalID)+' -> cannot find refine.pdb; trying next') continue if os.path.isfile(os.path.join(self.initial_model_directory,xtalID,'refine.mtz')): resolution=XChemUtils.mtztools(os.path.join(self.initial_model_directory,xtalID,'refine.mtz')).get_high_resolution_from_mtz() else: self.Logfile.insert('directory: '+os.path.join(self.initial_model_directory,xtalID)+' -> cannot find refine.mtz; trying next') continue convert_event_map_to_SF(self.initial_model_directory,xtalID,event_map,ligand_pdb,self.xce_logfile,self.datasource,resolution).run() progress += progress_step self.emit(QtCore.SIGNAL('update_progress_bar'), progress)
def calculate_electron_density_map(self,mtzin): missing_columns=False column_dict=XChemUtils.mtztools(mtzin).get_all_columns_as_dict() if 'FWT' in column_dict['F'] and 'PHWT' in column_dict['PHS']: labin=' labin F1=FWT PHI=PHWT\n' elif '2FOFCWT' in column_dict['F'] and 'PH2FOFCWT' in column_dict['PHS']: labin=' labin F1=2FOFCWT PHI=PH2FOFCWT\n' else: missing_columns=True if not missing_columns: os.chdir(os.path.join(self.project_directory,self.xtalID)) cmd = ( 'fft hklin '+mtzin+' mapout 2fofc.map << EOF\n' +labin+ 'EOF\n' ) self.Logfile.insert('calculating 2fofc map from '+mtzin) os.system(cmd) else: self.Logfile.insert('cannot calculate 2fofc.map; missing map coefficients')