Friday, 14 October 2016

Scaling data processed with DIALS in SADABS

The chemical crystallography community like "sadabs" for scaling, so we have added the ability to export data in a format which sadabs can consume (strictly: this is an ersatz EvalCCD format.) Essentially following integration with DIALS (e.g. with xia2 or otherwise) run:

dials.export 1_integrated_experiments.json 1_integrated.pickle \
    sadabs.hklout=int1.sad run=1 format=sadabs
...
dials.export 2_integrated_experiments.json 2_integrated.pickle \
    sadabs.hklout=int2.sad run=2 format=sadabs

where you have runs 1...N in your data set (typical for small molecule crystallography work). You can then run sadabs as you usually would, and should see something like:

 Reading file int1.sad
 Reading file int2.sad
 Reading file int3.sad
 Reading file int4.sad

 Mean and maximum errors in direction cosine check function =   0.000   0.000
 The mean error should not exceed 0.005, and is usually caused by matrix
 changes during data processing.

 Approximate wavelength, cell and maximum 2-theta (from cosines etc.):
 0.69010    5.432    8.147   12.053   89.994   90.026   90.002   72.46

in the output, showing in this case that the answers were about as expected. 

Your mileage may vary, this has just been implemented, you will also want the output from:

dials.two_theta_refine p4p=sad.p4p 1_integrated_experiments.json 1_integrated.pickle ...

with the pickle files and json files above to get the unit cell and error for subsequent analysis. Took this data through sadabs, xprep, shelxt, shelxl and the answers seemed sensible...

Thursday, 25 February 2016

Processing Eiger data

Starting with a standard Eiger example data set from DECTRIS FTP site:

insu_with_bs_master.h5
insu_with_bs_data_000001.h5
...
insu_with_bs_data_000037.h5

Broadly we can ignore the 000 files and just run from the master file - everything else will come out by magic (or by HDF5 references). First import the data into DIALS - this just reads the master file and tries to make sense of it:

dials.import insu_with_bs_master.h5

Finding spots etc. works exactly as normal however sometimes there are some unmasked "test" pixels which should be taken into account via the hot pixel mask:

dials.find_spots datablock.json nproc=20 write_hot_mask=true spotfinder.filter.min_spot_size=3

These are the same as the usual commands:

dials.index datablock.json strong.pickle space_group=I23
dials.refine indexed.pickle experiments.json use_all_reflections=true \
scan_varying=true

But for integration pass in the mask:

dials.integrate refined_experiments.json refined.pickle nproc=20 \
mask=hot_mask_0.pickle

Now everything else is as per normal:

dials.export integrated.pickle integrated_experiments.json \
mtz.hklout=integrated.mtz

pointless hklin integrated.mtz hklout sorted.mtz 

aimless hklin sorted.mtz hklout scaled.mtz << eof
anomalous on
resolution 1.4
eof


Starting from scaled.mtz can phase by S-SAD with SHELX C/D/E which suggests this is about right, feedback welcome - dials-support@lists.sourceforge.net