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)
            )
Exemple #2
0
  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))
Exemple #3
0
    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
Exemple #4
0
    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('<', '&lt;').replace('>', '&gt;')
            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