Hi Claudia, why don't you have a look at phenix.real_space_correlation which answers exactly your question? Anyway, here is the script that does what you want. Let me know if you have any questions or need any help with this. ***** import iotbx.pdb from iotbx import reflection_file_reader import mmtbx.f_model from scitbx.array_family import flex def exercise(pdb_file_name="1akg.pdb", reflection_file_name="1akg.mtz"): # get xray_strucute from PDB file pdb_inp = iotbx.pdb.input(file_name = pdb_file_name) xray_structure = pdb_inp.xray_structure_simple() print "Input model:" xray_structure.show_summary(prefix=" ") # read in Fobs and free-R flags miller_arrays = reflection_file_reader.any_reflection_file(file_name = reflection_file_name).as_miller_arrays() for ma in miller_arrays: if(ma.info().labels == ['FOBS', 'SIGFOBS']): f_obs = ma if(ma.info().labels == ['R-free-flags']): r_free_flags = ma.customized_copy(data=ma.data()==1) print "Input data:" f_obs.show_comprehensive_summary(prefix=" ") print "Percentage of free-R flags:", r_free_flags.data().count(True)*100./\ r_free_flags.data().size() # get fmodel and do scaling and bulk-solvent modeling fmodel = mmtbx.f_model.manager( xray_structure = xray_structure, f_obs = f_obs, r_free_flags = r_free_flags) fmodel.update_all_scales() print "r_work=%6.4f r_free=%6.4f"%(fmodel.r_work(), fmodel.r_free()) # calculate CC between Fobs and Fmodel cc = flex.linear_correlation(x=fmodel.f_obs().data(), y=abs(fmodel.f_model()).data()) if(not cc.is_well_defined()): print "Cannot compute CC" print "CC(Fobs, Fmodel): %6.4f"%cc.coefficient() if(__name__ == "__main__"): exercise() ***** Pavel On 10/9/12 1:08 AM, Claudia Millán Nebot wrote:
Hi everyone,
i'm trying to get an xray.structure object from a pdb file, as i'm interested on using both this and a Miller array coming from a reflection file to calculate correlation coefficients between Fobs and Fcalc. For this purpose, i was searching for something that will do the same as the iotbx.pdb.xray_structure.as_pdb_file but the other way around. Is there such a tool? I've look for a while but as i'm new to all that maybe i missed something.
Thanks in advance and my excuses if is a too evident question,
Claudia Millán ([email protected] mailto:[email protected])
Institut de Biologia Molecular de Barcelona (IBMB-CSIC)
Barcelona, Spain