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
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