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

Institut de Biologia Molecular de Barcelona (IBMB-CSIC)

Barcelona, Spain