Hi Hailiang,
I want to calculate Fc based on the PDB file and reproduce the R factor in it.
then phenix.model_vs_data is the right tool to accomplish this.
I first tried phenix.model_vs_data. It optimized ksol bsol and b_cart, and the output R factor (0.2143) is close enough to that in PDB (0.215).
The difference between the R-factors is very small. See J. Appl. Cryst. (2010). 43, 669-676. phenix.model_vs_data: a high-level tool for the calculation of crystallographic model and data statistics P. V. Afonine, R. W. Grosse-Kunstleve, V. B. Chen, J. J. Headd, N. W. Moriarty, J. S. Richardson, D. C. Richardson, A. Urzhumtsev, P. H. Zwart and P. D. Adams for explanations of possible differences between published and re-computed R-factors.
However, it didn't generate mtz files containing the calculated Fc.
Yes, it's not supped to do that. Actually, phenix.model_vs_data can output the map defined as: [p][m]Fo+[q][D]Fc[kick][filled]. Examples: 2mFo-DFc, 3.2Fo-2.3Fc, Fc, anom, fo-fc_kick. So, if you say phenix.model_vs_data model.pdb data.mtz --map=fc you will get an MTZ file with desired structure factors. So, yes, you can get what you want out of phenix.model_vs_data !
Then, I take the optimized ksol bsol and b_cart as the input and tried phenix.fmodel.
This should (to some accuracy) reproduce the R-factor reported by phenix.model_vs_data.
I wrote my own code to calcuate the R factor. However, I got a lower R factor (0.2078).
Any bugs ?
I think the reason might be my R calculation formula (sigma(fo-fc)/sigma(fo)) is wrong; or model_vs_data did more than just did flat solvent correction and anisotropic scaling.
Yup, you are missing the scale factor (unless you applied it to your fc already). See previous email for details - the script there shows the R-factor formula. Good luck! Pavel.