Exemplo n.º 1
0
 def as_cif_block(self, cif_block=None, pdbx_refine_id=''):
   if cif_block is None:
     cif_block = iotbx.cif.model.block()
   cif_block["_refine.pdbx_stereochemistry_target_values"] = \
       self.restraints_source if self.restraints_source is not None else '?'
   loop = iotbx.cif.model.loop(header=(
     "_refine_ls_restr.pdbx_refine_id",
     "_refine_ls_restr.type",
     "_refine_ls_restr.number",
     "_refine_ls_restr.dev_ideal",
     #"_refine_ls_restr.dev_ideal_target",
     "_refine_ls_restr.weight",
     #"_refine_ls_restr.pdbx_refine_id",
     "_refine_ls_restr.pdbx_restraint_function",
   ))
   res = self.result()
   a,b,c,d,p,n = res.angle, res.bond, res.chirality, res.dihedral, \
     res.planarity, res.nonbonded
   loop.add_row((pdbx_refine_id, "f_bond_d",           b.n, round_4_for_cif(b.mean), "?", "?"))
   loop.add_row((pdbx_refine_id, "f_angle_d",          a.n, round_4_for_cif(a.mean), "?", "?"))
   loop.add_row((pdbx_refine_id, "f_chiral_restr",     c.n, round_4_for_cif(c.mean), "?", "?"))
   loop.add_row((pdbx_refine_id, "f_plane_restr",      p.n, round_4_for_cif(p.mean), "?", "?"))
   loop.add_row((pdbx_refine_id, "f_dihedral_angle_d", d.n, round_4_for_cif(d.mean), "?", "?"))
   cif_block.add_loop(loop)
   return cif_block
Exemplo n.º 2
0
    def as_cif_block(self,
                     cif_block=None,
                     scattering_type="X-RAY DIFFRACTION"):
        import iotbx.cif.model
        if cif_block is None:
            cif_block = iotbx.cif.model.block()

        cif_block["_refine.pdbx_refine_id"] = scattering_type
        cif_block["_refine.ls_d_res_low"] = round_2_for_cif(self.d_max)
        cif_block["_refine.ls_d_res_high"] = round_2_for_cif(self.d_min)
        cif_block["_refine.pdbx_ls_sigma_F"] = round_2_for_cif(
            self.min_f_obs_over_sigma)
        cif_block["_refine.ls_percent_reflns_obs"] = round_2_for_cif(
            self.completeness_in_range * 100.0)
        cif_block["_refine.ls_number_reflns_obs"] = self.number_of_reflections
        #_refine.ls_number_reflns_all
        cif_block["_refine.ls_number_reflns_R_work"] = (
            self.number_of_reflections - self.number_of_test_reflections)
        cif_block[
            "_refine.ls_number_reflns_R_free"] = self.number_of_test_reflections
        cif_block["_refine.ls_R_factor_obs"] = round_4_for_cif(self.r_all)
        cif_block["_refine.ls_R_factor_R_work"] = round_4_for_cif(self.r_work)
        cif_block["_refine.ls_R_factor_R_free"] = round_4_for_cif(self.r_free)
        cif_block["_refine.ls_percent_reflns_R_free"] = round_2_for_cif(
            self.number_of_test_reflections / self.number_of_reflections * 100)

        loop = iotbx.cif.model.loop(header=(
            "_refine_ls_shell.pdbx_refine_id",
            #"_refine_ls_shell.pdbx_total_number_of_bins_used",
            "_refine_ls_shell.d_res_high",
            "_refine_ls_shell.d_res_low",
            "_refine_ls_shell.number_reflns_R_work",
            "_refine_ls_shell.R_factor_R_work",
            "_refine_ls_shell.percent_reflns_obs",
            "_refine_ls_shell.R_factor_R_free",
            #"_refine_ls_shell.R_factor_R_free_error",
            #"_refine_ls_shell.percent_reflns_R_free",
            "_refine_ls_shell.number_reflns_R_free",
            #"_refine_ls_shell.number_reflns_all",
            #"_refine_ls_shell.R_factor_all",
            #"_refine_ls_shell.redundancy_reflns_obs",
            #"_refine_ls_shell.number_reflns_obs",
        ))

        for bin in self.bins:
            d_max, d_min = [float(d) for d in bin.d_range.split('-')]
            loop.add_row((scattering_type, round_2_for_cif(d_min),
                          round_2_for_cif(d_max), bin.n_work,
                          round_4_for_cif(bin.r_work),
                          round_2_for_cif(bin.completeness * 100),
                          round_4_for_cif(bin.r_free), bin.n_free))

        cif_block.add_loop(loop)

        cif_block["_refine.solvent_model_details"] = "FLAT BULK SOLVENT MODEL"
        #_refine.solvent_model_param_ksol
        #_refine.solvent_model_param_bsol
        cif_block["_refine.pdbx_solvent_vdw_probe_radii"] = round_4_for_cif(
            self.mask_solvent_radius)
        cif_block["_refine.pdbx_solvent_shrinkage_radii"] = round_4_for_cif(
            self.mask_shrink_radius)

        # twinning?

        cif_block["_refine.overall_SU_ML"] = round_4_for_cif(
            self.ml_coordinate_error)
        cif_block["_refine.pdbx_overall_phase_error"] = round_4_for_cif(
            self.ml_phase_error)

        return cif_block