A beginner's walk-through to XDS
This tutorial is directed at people who are beginners to XDS and do not want to start reading about all the technical details but rather want their images processed. Other processing programs are often more attractive to new users because using a GUI make starting easier than a script file. If you notice a mistake or gap in this tutorial, please contact the authors.
In the following, the manual mode of setting up XDS.INP is explained. But there is also a script that does most of this automatically, at least for common types of detectors.
It is not recommended to process the images from within the same directory as the images are. At least create a subdirectory. In many cases the data images are on an external disk or remotely mounted directory with an awfully long path name. If you images are "/some/where/with/a/very/long/path", XDS.INP may not find the images and one must create a link to the actual directory.
#> ln -s /some/where/with/a/very/long/path images
This tutorial uses the template for XDS-MARCCD.INP (templates can be downloaded from .
Open XDS.INP with your favourite text editor (e.g. gedit, kate, kwrite, vim, emacs...) and make the following adjustments (from top to bottom):
- Pixel Size Find out the number of pixels of your detector. A very good program to find aus is adxv: It allows to view the image header where these numbers often can be found.
- Adjusting JOB Card Make a copy of the JOB line in XDS.INP for reference. Comment out one line by putting a exclamation mark "!" at the beginning of the line and prepare the other one to run the steps from XYCORR to CORRECT.
- ORGX and ORGY Unless you can guess the direct beam position on the images, e.g. from ice rings, set both these values to half the detector size. In the case of this example, where the MAR-CCD is 3072x3072 pixels, this means
ORGX=1536.00 ORGY=1536.00 !Detector origin (pixels).
- Experiment specific settings The following numbers are also usually found in the image header:
DETECTOR_DISTANCE= 150.0 !(mm) OSCILLATION_RANGE=1.0 !degrees (>0) X-RAY_WAVELENGTH=1.07176 !Angstroem NAME_TEMPLATE_OF_DATA_FRAMES=./images/tutorial_????.img ! TIFF DATA_RANGE=1 180 !Numbers of first and last data image collected
- Background range The default template suggests to use the first 5 images for detecting the average background per image. It does not harm to increase this number to 20 images. Especially with frame width of less than 1 degree you should do this.
BACKGROUND_RANGE=1 20 !Numbers of first and last data image for background
This is it to start. type
to run xds and wait until it's finished.
If the detector origin is too far from the image centre, IDXREF is going to stop with the error message
!!! ERROR !!! SOLUTION IS INACCURATE
Do the following:
- In IDXREF.LP, find the table INDEXING OF OBSERVED SPOTS IN SPACE GROUP
***** INDEXING OF OBSERVED SPOTS IN SPACE GROUP # 1 ***** 16196 OUT OF 76452 SPOTS INDEXED. 0 REJECTED REFLECTIONS (REASON: OVERLAP) 60256 REJECTED REFLECTIONS (REASON: TOO FAR FROM IDEAL POSITION) EXPECTED ERROR IN SPINDLE POSITION 2.398 DEGREES EXPECTED ERROR IN DETECTOR POSITION 1.72 PIXELS
Unless really hardly any reflections could be indexed (second line in the table), scroll a few lines up and copy the refined values for the beam origin
DETECTOR ORIGIN (PIXELS) AT 1514.16 1537.27
as improved ORGX and ORGY to XDS.INP and try indexing again. XDS is quite robust and in many cases this approach works
- Check the refined detector distance
DETECTOR ORIGIN (PIXELS) AT 1514.16 1537.27 CRYSTAL TO DETECTOR DISTANCE (mm) 422.92
If it deviates by more than 1-2mm from the input distance, check all you parameters again. Is the wavelength really correct, as well as the distance? If you are sure about them, try indexing with only a few images
SPOT_RANGE = 1 20