process_hkl: Monte Carlo merging of Bragg intensities


process_hkl -i -o mydata.hkl -y pointgroup [options] ...
process_hkl --help


process_hkl takes a data stream, such as that from indexamajig, and merges the many individual intensities together to form a single list of reflection intensities which are useful for crystallography. Merging is done by the Monte Carlo method, otherwise known as taking the mean of the individual values.


-i filename
Give the name of the input stream. --input=- means to use stdin.
-o filename
Give the name of the output file. The default is --output=processed.hkl.
-y pointgroup
Merge according to symmetry pointgroup.
-g h,k,l
Calculate a histogram of intensities for h,k,l, which will be written as histogram.dat in the current directory.
-z min,max,nbins
Set the minimum and maximum values, and the number of bins, to min, max and nbins, respectively.
Ignore the first n crystals in the input. The default is --start-after=0, i.e. start at the beginning.
Stop processing after n crystals have been successfully merged. The default is --stop-after=0, which means to process all the patterns from the start point to the end of the input (see --start-after).
Merge only the even-numbered crystals in the stream. "Even-numbered" is defined simlpy according to position in the stream, i.e. not according to any serial number. See also --odd-only.
Merge only the odd-numbered crystals in the stream. "Even-numbered" is defined simlpy according to position in the stream, i.e. not according to any serial number. See also --even-only.
Perform a second pass through the input, scaling each crystal's intensities to best fit the initial model. Use partialator if you need more advanced merging techniques.
Disable the polarisation correction.
Include a reflection in the output only if it appears at least least n times. The default is --min-measurements=2.

Use a particular individual reflection intensity measurement only if it exceeds its estimated standard error by at least n. The default is -infinity, i.e. no cutoff.

Warning: think very carefully before using this option. It will bias reflections towards more positive values, even where no signal exists, leading to a data set dominated by the background. This can invalidate some of the figures of merit for the merit for data quality while severely compromising the actual quality.

Include reflections only if their peak values were less than n. That means, n is the saturation value of the detector. The default is infinity, i.e. no cutoff.
Merge crystals only if they diffract to beyond n Angstroms resolution. The default is infinity, i.e. all crystals are included. The resolution is taken from the diffraction_resolution_limit line in the stream.
Merge reflections which are up to n nm-1 higher than the apparent resolution limit of each individual crystal. n can be negative to merge lower than the apparent resolution limit. The default is --push-res=inf, which means no resolution cutoff at all.
Perform a second pass through the input, merging crystals only if their correlation with the initial model is at least n.
Perform a second pass through the input and, for each crystal merged, write a line to filename containing the filename, scale factor and correlation coefficient with the initial model. The scale factors will all be 1 unless --scale is also used.

Choice of point group for merging

One of the main features of serial crystallography is that the orientations of individual crystals are random. That means that the orientation of each crystal must be determined independently, with no information about its relationship to the orientation of crystals in other patterns.

Some symmetry classes are merohedral, which means that they have lower symmetry than their lattices. This means that the orientation determined by indexing will have an ambiguity. In such cases, you will need to merge according to corresponding holohedral point group. To determine what this is, consult the tables in twin-calculator.pdf.


This page was written by Thomas White.

Reporting bugs

Report bugs to

Copyright and Disclaimer

Copyright © 2012-2020 Deutsches Elektronen-Synchrotron DESY, a research centre of the Helmholtz Association.

Please read the AUTHORS file in the CrystFEL source code distribution for a full list of contributions and contributors.

CrystFEL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

CrystFEL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with CrystFEL. If not, see

See also

crystfel indexamajig compare_hkl check_hkl render_hkl ambigator partialator

If CrystFEL is installed on your computer, you can read this manual page offline using the command man crystfel.