Tips and Tricks

From XDSwiki
Jump to navigation Jump to search

P1 data collection / Pilatus

According to the classical paper (Z. Dauter (1999), Acta Cryst D55, 1703), the required rotation range for native data in space group P1 is 180°, and for anomalous data is 180° + 2 theta_max (theta is the diffraction angle). In the case of the standard geometry (direct beam vertical to, and central upon, the detector), this leads to 2-fold redundancy.
However, experience shows that collection of more than that is a good idea, as the scaling will be more stable, and there is some leeway to discard radiation-damaged frames at the end of the data set. So we regularly collect 360° for native data unless we have specific reasons to deviate from that rule.
The Pilatus and Eiger detectors are composed of many panels, and have horizontal and vertical dead areas. This generally lowers completeness, and the effect is particularly noticeable in low-symmetry spacegroups. Make sure (if necessary, by moving the detector) that the direct beam is not at a crossing between horizontal and vertical dead areas, nor at the middle of a panel, because this prevents symmetry-equivalent reflections from all being unmeasured.


SAD/MAD data reduction

With FRIEDEL'S_LAW=FALSE, run CORRECT twice, with STRICT_ABSORPTION_CORRECTION=TRUE and STRICT_ABSORPTION_CORRECTION=FALSE, and compare the results. I find that the (apparent) anomalous signal in SeMet-SAD/MAD is significantly enhanced (but see below for a caveat!) in the "Anomal Corr" and the "SigAno" disciplines with STRICT_ABSORPTION_CORRECTION=TRUE (which used to be the default in older versions but is not the default since Version May 8, 2007).

Example: 269 frames, 0.5°/frame, F222; SeMet; high remote; STRICT_ABSORPTION_CORRECTION=TRUE:

SUBSET OF INTENSITY DATA WITH SIGNAL/NOISE >= -3.0 AS FUNCTION OF RESOLUTION
RESOLUTION     NUMBER OF REFLECTIONS    COMPLETENESS R-FACTOR  R-FACTOR COMPARED I/SIGMA   R-meas  Rmrgd-F  Anomal  SigAno   Nano
  LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected                                      Corr

    9.24       14085    4860      5073       95.8%       2.9%      3.5%    13978   26.78     3.7%     2.8%    66%   1.623    2115
    6.59       24901    8560      8869       96.5%       4.6%      4.6%    24757   19.46     5.7%     5.5%    46%   1.356    3880
    5.40       32411   11152     11422       97.6%       6.8%      6.6%    32194   14.14     8.4%     9.2%    28%   1.085    5121
    4.68       37640   13022     13499       96.5%       6.7%      6.4%    37340   13.99     8.4%    10.0%    21%   1.017    5924
    4.19       42764   14793     15307       96.6%       7.7%      7.2%    42425   12.59     9.5%    11.9%    19%   1.021    6746
    3.83       48129   16600     16938       98.0%      11.4%     11.2%    47750    8.99    14.1%    18.6%    13%   0.914    7648
    3.55       52640   18097     18333       98.7%      15.8%     16.1%    52229    6.61    19.5%    26.9%    10%   0.840    8384
    3.32       56093   19557     19723       99.2%      24.3%     25.5%    55490    4.41    30.0%    42.9%     8%   0.781    8941
    3.13       37869   18334     21008       87.3%      33.9%     36.3%    32035    2.33    43.6%    69.9%     6%   0.741    5214
   total      346532  124975    130172       96.0%       9.5%      9.6%   338198    9.77    11.8%    18.8%    21%   0.964   53973

same data, STRICT_ABSORPTION_CORRECTION=FALSE (default):

SUBSET OF INTENSITY DATA WITH SIGNAL/NOISE >= -3.0 AS FUNCTION OF RESOLUTION
RESOLUTION     NUMBER OF REFLECTIONS    COMPLETENESS R-FACTOR  R-FACTOR COMPARED I/SIGMA   R-meas  Rmrgd-F  Anomal  SigAno   Nano
  LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected                                      Corr

    9.24       14082    4858      5073       95.8%       3.0%      3.6%    13975   26.06     3.7%     2.9%    63%   1.530    2115
    6.59       24893    8554      8869       96.4%       4.7%      4.7%    24749   19.08     5.8%     5.6%    42%   1.287    3876
    5.40       32407   11147     11422       97.6%       6.8%      6.7%    32190   13.93     8.4%     9.2%    25%   1.035    5118
    4.68       37631   13016     13499       96.4%       6.8%      6.5%    37331   13.76     8.5%    10.1%    16%   0.946    5915
    4.19       42726   14775     15307       96.5%       7.8%      7.3%    42387   12.40     9.7%    12.1%     9%   0.889    6733
    3.83       48125   16600     16938       98.0%      11.4%     11.2%    47746    8.89    14.2%    18.5%     3%   0.813    7646
    3.55       52642   18095     18333       98.7%      15.8%     16.1%    52231    6.55    19.5%    26.7%     4%   0.773    8383
    3.32       56102   19563     19723       99.2%      24.3%     25.6%    55499    4.39    30.1%    42.9%     3%   0.743    8943
    3.13       37830   18318     21008       87.2%      34.9%     37.0%    31996    2.32    45.0%    70.5%     2%   0.709    5206
   total      346438  124926    130172       96.0%       9.6%      9.7%   338104    9.62    11.9%    18.8%    15%   0.892   53935

However: please note that this is just an internal indicator of data quality. Improved values of internal indicators are not necessarily meaningful, and the true improvement has to be verified by calculating external indicators. In this case it was found that when calculating the correlations of the anomalous signals between wavelengths (using SHELXC), the correlations are higher when STRICT_ABSORPTION_CORRECTION=TRUE is used. See also Quality Control.

A good indicator that STRICT_ABSORPTION_CORRECTION=TRUE should be used is the following: if, when the default STRICT_ABSORPTION_CORRECTION=FALSE is used, the three values of CHI^2-VALUE OF FIT OF CORRECTION FACTORS given near the beginning of CORRECT.LP are significantly higher than 1 (e.g. if they are 2 or more), then you should switch to TRUE and make sure that this reduces those values to about 1.

Transfer the anomalous signal to the .mtz file even if it is not expected to exist

The last step of data reduction is usually the conversion of XDS_ASCII.HKL to a MTZ file, using XDSCONV.

I suggest that XDSCONV.INP always should include a line "FRIEDEL'S_LAW=FALSE" - even if the crystal is not supposed to have anomalous scatterers (like most native crystals). Having this line results in three additional columns (DANO, SIGDANO, ISYM if FILE_TYPE=CCP4) in the MTZ file, and has no downsides that I know of (in particular, it does not require XDS.INP to have this line, but if the anom signal is substantial then XDS.INP should have it because otherwise strong anomalous differences will be treated as outliers (misfits).

The advantage of doing this is that one may easily calculate an anomalous difference Fourier map (this can e.g. be performed in [coot]) to identify ions in the structure. For example, a Mn ion (f"=1.35 at 1 Å) may easily be distinguished from a Mg ion (f"=0.076 at 1 Å). Calibration of the anomalous peak height can be done using the sulfur atoms (f"=0.24 at 1 Å), and the tables of anomalous scattering coefficients at http://skuld.bmsc.washington.edu/scatter/AS_periodic.html.

Index and integrate multiple-crystal diffraction

It can happen that you have two different mono-crystals in your loop, and that both are in the X-ray beam. If their relative orientation is sufficiently distinct, it is easy with XDS to index and integrate both crystal diffraction from the same data-set. You end-up with two distinct reflection files and can try to scale them using XSCALE to complete or increase the redundancy of your measurement.

After indexing and integration of a first lattice, you can extract the un-indexed reflections to create a new SPOT.XDS file (don't forget to copy the result of the first processing!) and re-run XDS from the IDXREF stage :

mkdir xtal1
cp *.* xtal1
cp SPOT.XDS SPOT.XDS.1
grep "  0       0       0" SPOT.XDS.1  > SPOT.XDS 
echo " JOB= IDXREF INTEGRATE CORRECT" >> XDS.INP
xds_par

pick the h+k+l=2n reflections from a primitive dataset

grep \! XDS_ASCII.HKL | grep -v "END_OF_DATA" > x  
grep -v \! XDS_ASCII.HKL | awk '{if ( ($1+$2+$3)%2==0 ) print $0}'  >>x
echo \!END_OF_DATA >> x

and now use e.g.

phenix.xtriage x

to analyze x in terms of body-centered statistics.