def exercise_five_cc(): pdb_inp = iotbx.pdb.input(source_info=None, lines=pdb_str) ph = pdb_inp.construct_hierarchy() #ph.write_pdb_file(file_name="m1.pdb") xrs = ph.extract_xray_structure( crystal_symmetry=pdb_inp.crystal_symmetry()) f_calc = xrs.structure_factors( d_min=2.0).f_calc() #.resolution_filter(d_max=6) fft_map = f_calc.fft_map(resolution_factor=0.25) m1 = fft_map.real_map_unpadded() # #xrs = xrs.set_b_iso(value=50) sc = xrs.sites_cart() #sc = sc + flex.vec3_double(sc.size(), [.5,.5,.5]) xrs = xrs.replace_sites_cart(new_sites=sc) ph.adopt_xray_structure(xrs) #ph.write_pdb_file(file_name="m2.pdb") o = correlation.five_cc(map=m1, xray_structure=xrs, d_min=2.0, compute_cc_box=True, compute_cc_image=True, box=False).result assert approx_equal(o.cc_box, 1.0) assert approx_equal(o.cc_image, 1.0) assert approx_equal(o.cc_mask, 1.0) assert approx_equal(o.cc_peaks, 1.0) assert approx_equal(o.cc_volume, 1.0)
def initialize(self): five_cc_o = five_cc(map=self.target_map_object.map_data, xray_structure=self.model.get_xray_structure(), d_min=self.target_map_object.d_min, compute_cc_box=True, compute_cc_image=False, compute_cc_mask=True, compute_cc_volume=False, compute_cc_peaks=False).result self.cc_mask = five_cc_o.cc_mask self.cc_box = five_cc_o.cc_box # XXX use model.statistics or better method of model! if (self.model.restraints_manager_available()): es = self.model.get_restraints_manager().geometry.energies_sites( sites_cart=self.model.get_sites_cart()) self.rmsd_a = es.angle_deviations()[2] self.rmsd_b = es.bond_deviations()[2]
def show_cc(map_data, xray_structure, log=None): import mmtbx.maps.mtriage from mmtbx.maps.correlation import five_cc xrs = xray_structure xrs.scattering_type_registry(table="electron") d99 = maptbx.d99(map=map_data, crystal_symmetry=xrs.crystal_symmetry()).result.d99 if (log is not None): print("Resolution of map is: %6.4f" % d99, file=log) result = five_cc(map=map_data, xray_structure=xrs, d_min=d99, compute_cc_box=False, compute_cc_mask=True, compute_cc_peaks=False, compute_cc_volume=False).result if (log is not None): print("Map-model correlation coefficient (CC)", file=log) print(" CC_mask : %6.4f" % result.cc_mask, file=log) return result.cc_mask
def initialize(self): self.assert_pdb_hierarchy_xray_structure_sync() five_cc_o = five_cc(map=self.target_map_object.map_data, xray_structure=self.xray_structure, d_min=self.target_map_object.d_min, compute_cc_box=True, compute_cc_image=False, compute_cc_mask=True, compute_cc_volume=False, compute_cc_peaks=False) self.cc_mask = five_cc_o.cc_mask self.cc_box = five_cc_o.cc_box if (self.geometry_restraints_manager is not None): es = self.geometry_restraints_manager.energies_sites( sites_cart=self.xray_structure.sites_cart()) self.rmsd_a = es.angle_deviations()[2] self.rmsd_b = es.bond_deviations()[2] self.dist_from_start = flex.mean( self.xray_structure_start.distances(other=self.xray_structure)) self.assert_pdb_hierarchy_xray_structure_sync()
def initialize(self): self.assert_pdb_hierarchy_xray_structure_sync() # residue monitors self.residue_monitors = [] backbone_atoms = ["N", "CA", "C", "O", "CB"] get_class = iotbx.pdb.common_residue_names_get_class sites_cart = self.xray_structure.sites_cart() current_map = self.compute_map(xray_structure=self.xray_structure) for model in self.pdb_hierarchy.models(): for chain in model.chains(): for residue_group in chain.residue_groups(): conformers = residue_group.conformers() if (len(conformers) > 1): continue for conformer in residue_group.conformers(): residue = conformer.only_residue() id_str = "%s%s%s" % (chain.id, residue.resname, residue.resseq.strip()) if (get_class(residue.resname) == "common_amino_acid"): residue_i_seqs_backbone = flex.size_t() residue_i_seqs_sidechain = flex.size_t() residue_i_seqs_all = flex.size_t() residue_i_seqs_c = flex.size_t() residue_i_seqs_n = flex.size_t() for atom in residue.atoms(): an = atom.name.strip() bb = an in backbone_atoms residue_i_seqs_all.append(atom.i_seq) if (bb): residue_i_seqs_backbone.append(atom.i_seq) else: residue_i_seqs_sidechain.append(atom.i_seq) if (an == "C"): residue_i_seqs_c.append(atom.i_seq) if (an == "N"): residue_i_seqs_n.append(atom.i_seq) sca = sites_cart.select(residue_i_seqs_all) scs = sites_cart.select(residue_i_seqs_sidechain) scb = sites_cart.select(residue_i_seqs_backbone) if (scs.size() == 0): ccs = None else: ccs = self.map_cc(sites_cart=scs, other_map=current_map) if (sca.size() == 0): cca = None else: cca = self.map_cc(sites_cart=sca, other_map=current_map) if (scb.size() == 0): ccb = None else: ccb = self.map_cc(sites_cart=scb, other_map=current_map) self.residue_monitors.append( residue_monitor( residue=residue, id_str=id_str, selection_sidechain= residue_i_seqs_sidechain, selection_backbone=residue_i_seqs_backbone, selection_all=residue_i_seqs_all, selection_c=residue_i_seqs_c, selection_n=residue_i_seqs_n, map_cc_sidechain=ccs, map_cc_backbone=ccb, map_cc_all=cca, rotamer_status=self.rotamer_manager. evaluate_residue(residue))) else: residue_i_seqs_all = residue.atoms().extract_i_seq( ) sca = sites_cart.select(residue_i_seqs_all) cca = self.map_cc(sites_cart=sca, other_map=current_map) self.residue_monitors.append( residue_monitor( residue=residue, id_str=id_str, selection_all=residue_i_seqs_all, map_cc_all=cca)) # globals self.five_cc = five_cc(map=self.target_map_object.map_data, xray_structure=self.xray_structure, d_min=self.target_map_object.d_min) self.map_cc_whole_unit_cell = self.map_cc(other_map=current_map) self.map_cc_around_atoms = self.map_cc(other_map=current_map, sites_cart=sites_cart) self.map_cc_per_atom = self.map_cc(other_map=current_map, sites_cart=sites_cart, per_atom=True) if (self.geometry_restraints_manager is not None): es = self.geometry_restraints_manager.energies_sites( sites_cart=sites_cart) self.rmsd_a = es.angle_deviations()[2] self.rmsd_b = es.bond_deviations()[2] self.dist_from_start = flex.mean( self.xray_structure_start.distances(other=self.xray_structure)) self.number_of_rotamer_outliers = 0 for r in self.residue_monitors: if (r.rotamer_status == "OUTLIER"): self.number_of_rotamer_outliers += 1 self.assert_pdb_hierarchy_xray_structure_sync()