def show_characteristics(self, out): from mmtbx.scaling import printed_output if out is None: out = sys.stdout if not isinstance(out, printed_output): out = printed_output(out) out.show_paragraph_header("\nDataset characteristics:") out.show_preformatted_text( """\ Target anomalous signal: %(target_s_ano)7.1f Residues: %(residues)d Chain-type: %(chain_type)s Solvent_fraction: %(solvent_fraction)7.2f Atoms: %(natoms)d Anomalously-scattering atom: %(atom_type)s Wavelength: %(wavelength)7.4f A Sites: %(nsites)d f-double-prime: %(fpp)7.2f Resolution: %(resolution)5.1f A B-value for anomalously-scattering atoms: %(b_value_anomalous)4.0f """ % self.__dict__ ) if self.atom_type: t = self.atom_type else: t = "-" contribution = self.fpp * math.sqrt(self.nsites) out.show_preformatted_text( """\ Target anomalous scatterer: Atom: %2s f": %4.2f n:%5.0f rmsF:%7.1f rmsF/rms(Total F) (%%):%5.1f""" % (t, self.fpp, self.nsites, contribution, 100.0 * math.sqrt(self.fa2)) ) if self.noise_table_rows: out.show_preformatted_text( """\ Other anomalous scatterers in the structure:""" ) for row in self.noise_table_rows: out.show_preformatted_text(' Atom: %2s f": %4.2f n:%5.0f rmsF:%7.1f' % tuple(row)) fa = 100.0 * math.sqrt(self.fa2) fb = 100.0 * math.sqrt(self.fb2) fab = math.sqrt(self.fa2 / (self.fa2 + self.fb2)) out.show_preformatted_text( """\ Normalized anomalous scattering: From target anomalous atoms rms(x**2)/rms(F**2): %7.2f From other anomalous atoms rms(e**2)/rms(F**2): %7.2f Correlation of useful to total anomalous scattering: %4.2f """ % (fa, fb, fab) )
def show_characteristics(self, out): from mmtbx.scaling import printed_output if out is None: out=sys.stdout if (not isinstance(out, printed_output)): out = printed_output(out) out.show_paragraph_header( "\nDataset characteristics:") out.show_preformatted_text("""\ Target anomalous signal: %(target_s_ano)7.1f Residues: %(residues)d Chain-type: %(chain_type)s Solvent_fraction: %(solvent_fraction)7.2f Atoms: %(natoms)d Anomalously-scattering atom: %(atom_type)s Wavelength: %(wavelength)7.4f A Sites: %(nsites)d f-double-prime: %(fpp)7.2f Resolution: %(resolution)5.1f A B-value for anomalously-scattering atoms: %(b_value_anomalous)4.0f """ % self.__dict__) if self.atom_type: t=self.atom_type else: t='-' contribution=self.fpp*math.sqrt(self.nsites) out.show_preformatted_text("""\ Target anomalous scatterer: Atom: %2s f": %4.2f n:%5.0f rmsF:%7.1f rmsF/rms(Total F) (%%):%5.1f""" %( t,self.fpp,self.nsites,contribution,100.*math.sqrt(self.fa2))) if self.noise_table_rows: out.show_preformatted_text("""\ Other anomalous scatterers in the structure:""") for row in self.noise_table_rows : out.show_preformatted_text( ' Atom: %2s f": %4.2f n:%5.0f rmsF:%7.1f' %tuple(row)) fa=100.*math.sqrt(self.fa2) fb=100.*math.sqrt(self.fb2) fab=math.sqrt(self.fa2/(self.fa2+self.fb2)) out.show_preformatted_text("""\ Normalized anomalous scattering: From target anomalous atoms rms(x**2)/rms(F**2): %7.2f From other anomalous atoms rms(e**2)/rms(F**2): %7.2f Correlation of useful to total anomalous scattering: %4.2f """ % (fa,fb,fab))
def xtriage_report(self): xtriage_success = [] xtriage_warnings = [] xtriage_danger = [] s = StringIO() pout = printed_output(out=s) from mmtbx.scaling.xtriage import xtriage_analyses from mmtbx.scaling.xtriage import master_params as xtriage_master_params xtriage_params = xtriage_master_params.fetch(sources=[]).extract() xtriage_params.scaling.input.xray_data.skip_sanity_checks = True xanalysis = xtriage_analyses( miller_obs=self.merged_intensities, unmerged_obs=self.intensities, text_out=pout, params=xtriage_params, ) if self.report_dir is not None: with open(os.path.join(self.report_dir, "xtriage.log"), "wb") as f: f.write(s.getvalue()) xia2.Handlers.Files.FileHandler.record_log_file( "Xtriage", os.path.join(self.report_dir, "xtriage.log")) xs = StringIO() xout = xtriage_output(xs) xanalysis.show(out=xout) xout.flush() sub_header_to_out = xout._sub_header_to_out issues = xanalysis.summarize_issues() # issues.show() for level, text, sub_header in issues._issues: summary = sub_header_to_out.get(sub_header, StringIO()).getvalue() d = { "level": level, "text": text, "summary": summary, "header": sub_header } if level == 0: xtriage_success.append(d) elif level == 1: xtriage_warnings.append(d) elif level == 2: xtriage_danger.append(d) self._xanalysis = xanalysis return xtriage_success, xtriage_warnings, xtriage_danger
def xtriage_report(self): xtriage_success = [] xtriage_warnings = [] xtriage_danger = [] s = StringIO() pout = printed_output(out=s) from mmtbx.scaling.xtriage import xtriage_analyses from mmtbx.scaling.xtriage import master_params as xtriage_master_params xtriage_params = xtriage_master_params.fetch(sources=[]).extract() xtriage_params.scaling.input.xray_data.skip_sanity_checks = True xanalysis = xtriage_analyses( miller_obs=self.merged_intensities, unmerged_obs=self.intensities, text_out=pout, params=xtriage_params, ) with open(os.path.join(self.report_dir, 'xtriage.log'), 'wb') as f: f.write(s.getvalue()) xia2.Handlers.Files.FileHandler.record_log_file( 'Xtriage', os.path.join(self.report_dir, 'xtriage.log')) xs = StringIO() xout = xtriage_output(xs) xanalysis.show(out=xout) xout.flush() sub_header_to_out = xout._sub_header_to_out issues = xanalysis.summarize_issues() #issues.show() for level, text, sub_header in issues._issues: summary = sub_header_to_out.get(sub_header, StringIO()).getvalue() summary = summary.replace('<', '<').replace('>', '>') d = { 'level': level, 'text': text, 'summary': summary, 'header': sub_header, } if level == 0: xtriage_success.append(d) elif level == 1: xtriage_warnings.append(d) elif level == 2: xtriage_danger.append(d) self._xanalysis = xanalysis return xtriage_success, xtriage_warnings, xtriage_danger