XDS.INP is a user-provided file that is read by XDS. Each line consists of one or more <keyword>=<parameter(s)> pairs. Anything after a "!" is a comment.

Complete documentation is at http://www.mpimf-heidelberg.mpg.de/~kabsch/xds/html_doc/xds_parameters.html .

Templates for various detectors are at http://www.mpimf-heidelberg.mpg.de/~kabsch/xds/html_doc/xds_prepare.html .

Required keywords

These keywords have no default parameters and must be given with the correct values.

The values may be obtained from logfiles of the beamline software, your notes, or (for many types of frames) from the headers of the frames (using 'strings <filename>|more'). A good way to retrieve them is by using MOSFLM.

A minimal XDS.INP needs at least these keywords and their parameters:

  • Keywords that describe the detector:

DETECTOR NX NY QX QY - for a list of supported detectors and possible geometries, see Table of supported detectors

DIRECTION_OF_DETECTOR_X-AXIS - often 1 0 0

DIRECTION_OF_DETECTOR_Y-AXIS - often 0 1 0

INCIDENT_BEAM_DIRECTION - often 0 0 1

ROTATION_AXIS - often 1 0 0 at a synchrotron

  • Keywords that describe your particular dataset:

ORGX ORGY - in pixels The most critical parameters for a successful data reduction . See Obtaining ORGX ORGY

DETECTOR_DISTANCE - in millimeters

OSCILLATION_RANGE - in degrees

X-RAY_WAVELENGTH - in Ångström

NAME_TEMPLATE_OF_DATA_FRAMES - path and name of frames, with wildcards for numbers, plus type of frames (e.g. "CBF")

DATA_RANGE - numbers of frames to be reduced

BACKGROUND_RANGE - numbers of frames to be used for initial background estimation, "1 5" is usually enough, and "1 20" should be ample.

Keywords that additionally describe your experiment

FRACTION_OF_POLARIZATION and POLARIZATION_PLANE_NORMAL should be specified for detectors at synchrotron sites. If they are not specified (or inaccurate), their effect will to some extent be absorbed by the scale factors determined in CORRECT.

Keywords for space group assignment

A dataset can be reduced by XDS in space group P1. If you know the space group and unit cell parameters of your crystal in advance you just need these two keywords:

SPACE_GROUP_NUMBER
If you don't know the space group, put a 0 or comment out the line. The space group will then be automatically determined in the CORRECT step. A mapping of space group names against their numbers is near the end of IDXREF.LP.
UNIT_CELL_PARAMETERS
If you don't know the space group, put six 0s or comment out the line. Unit cell parameters need to respect the constraints of the Laue group, e.g. all angles must be exactly 90.0 for orthorhombic and tetragonal space groups, a and b must be equal for trigonal and tetragonal, and so on.

If you want to assign a space group and unit cell parameters to a dataset that was reduced in P1, you most probably need this keyword as well:

REINDEX
12 numbers, 9 of which are used as a re-indexing matrix (the other 3 are normally 0). These 12 numbers can be obtained from IDXREF.LP.

The way how to determine a space group (and unit cell parameters) is described in space group determination.

Keywords which affect completeness and resolution limits

TRUSTED_REGION
The default is "0.00 1.05" but if you have a square detector, and their are reflections visible in the corners, you may go as high as "0. 1.4142". Depending on the symmetry of your crystal, this may give you useful high-resolution data. If you change the values, you'll have to re-run INIT and DEFPIX to make INTEGRATE use the changed region. IDXREF however does not require re-running of INIT, so if you just want to exclude the high-resolution reflections from indexing, it is enough to change TRUSTED_REGION and then to run the IDXREF step.
VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS
the default is "7000. 30000." but the first number is probably on the low side. See Determining_VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS.
MINIMUM_ZETA
the default of 0.15 is rather on the safe side. A lower value increases completeness. See MINIMUM_ZETA.
INCLUDE_RESOLUTION_RANGE
the default is "20.0 0.0" but it would be good to change this to sensible values for your data set, e.g. 50.0 for the lower resolution limit and the limiting resolution, where the average signal-to-noise ratio drops below 1, for the upper limit (the latter number could be obtained from CORRECT.LP).
EXCLUDE_RESOLUTION_RANGE
to exclude reflections in ice rings (CORRECT step). Whether ice rings are a problem should be obvious by looking at individual frames (often later frames are affected more than earlier ones), FRAME.pck and the "alien" statistics at the end of CORRECT.LP. Also see Wishlist, and VIEW misfits.pck (produced by XDSSTAT).

Keywords which affect aspects of geometry parameter refinement

REFINE(IDXREF)
The defaults (REFINE(IDXREF)=DISTANCE BEAM ORIENTATION CELL AXIS i.e. refine everything) are OK, but only if COLSPOT has seen all (or rather, a significant fraction of the) frames (see SPOT_RANGE below). If only a small SPOT_RANGE was used (which is not the best way, but possible), one should use REFINE(IDXREF)= AXIS BEAM ORIENTATION CELL . (The next thing to omit would be AXIS)
REFINE(INTEGRATE)
The defaults (REFINE(INTEGRATE)=DISTANCE BEAM ORIENTATION CELL) could be modified by omitting DISTANCE, because one should assume that the distance is constant. This is particularly recommended if SPACE_GROUP_NUMBER=0 or 1. Furthermore, by fixing the distance one can better see from the results of the refinement whether the cell parameters are stable, or whether they change due to radiation damage. There are situations when one wants to reduce the number of parameters to be refined even more, see Optimization.
REFINE(CORRECT)
The defaults (REFINE(CORRECT)=DISTANCE BEAM ORIENTATION CELL AXIS i.e. refine everything) are OK. For low resolution datasets the distance refinement may not be stable (i.e. refined distance differs more than a few mm from expected distance). In this case one should remove DISTANCE from the list.

Keywords which affect whether indexing will succeed

Again, the most important parameters are ORGX ORGY. Often the software which writes the frames puts these numbers into the headers of the frames. However, these numbers are sometimes wrong, and furthermore, XDS does not read and interpret headers of frames. How to obtain estimates for ORGY ORGY from frames is described in Obtaining ORGX ORGY.

SPOT_RANGE
If this line is omitted (and MINUTE=0), the whole DATA_RANGE is used. This is usually a good way to proceed. If there is radiation damage, I would advise to use the first half of the DATA_RANGE as SPOT_RANGE. The SPOT_RANGE in principle may comprise a single frame.
Attention: if MINUTE= has a parameter >0, a small SPOT_RANGE will be used if SPOT_RANGE is not explicitly provided!
STRONG_PIXEL
the default is 3, but 6 is usually more appropriate.

See also the article Ice_rings.

Keywords which affect the speed of data reduction

MAXIMUM_NUMBER_OF_PROCESSORS
speeds up XDS by use of several (e.g. 2-4) CPUs within a single machine.
MAXIMUM_NUMBER_OF_JOBS
speeds up XDS by chopping the DATA_RANGE into pieces, and feeding each piece to a new process. That process may run on the local machine, or a different one (but this needs to be configured by the system administrator). Unless specifically set up for a given computer environment (e.g., at a synchrotron site), usually don't set both MAXIMUM_NUMBER_OF_PROCESSORS and MAXIMUM_NUMBER_OF_JOBS to values >1 !

Some amount of "overcommiting of resources" is OK, i.e. if you are the sole user of a Dual-core workstation, you may set both parameters to 2. Wolfgang Kabsch found that this utilizes the machine even a bit better than either MAXIMUM_NUMBER_OF_PROCESSORS=2 or MAXIMUM_NUMBER_OF_JOBS=2.

How to tweak data quality

See Optimization#Final_polishing.

What can go wrong with this file?

The most important possible pitfalls are:

  • Lines longer than 80 characters are not allowed. This happens most often with the NAME_TEMPLATE_OF_DATA_FRAMES keyword line, because the path to the directory with the frames may be long. Fix: use a symlink to the directory with the frames.
  • Error due to omitting the "=" directly after the keyword (i.e. having an intervening blank).
  • There may be decoding errors in the parameter which may lead to obscure error messages. E.g., see what happens if you provide only one cell parameter instead of six!


Example XDS.INP files for ADSC, MarCCD and Pilatus detectors

ADSC Quantum Q315r @ ESRF ID23-1

JOB=XYCORR INIT COLSPOT IDXREF DEFPIX INTEGRATE CORRECT

! for this experiment:
ORGX= 1541    ORGY= 1550
DETECTOR_DISTANCE=350
OSCILLATION_RANGE=0.25
X-RAY_WAVELENGTH=1.0001
NAME_TEMPLATE_OF_DATA_FRAMES=../mk/mk04_1_???.img 
DATA_RANGE=1 720
SPOT_RANGE=1 360    ! SPOT_RANGE= first half of DATA_RANGE; that is ample
BACKGROUND_RANGE=1 10

SPACE_GROUP_NUMBER=0
UNIT_CELL_CONSTANTS= 70 80 90 90 90 90

! remove the exclamation marks if anomalous signal is present or expected 
! FRIEDEL'S_LAW=FALSE 
! STRICT_ABSORPTION_CORRECTION=TRUE ! but read Tips_and_Tricks in XDSwiki

! parameters with changes wrt default values: 
TRUSTED_REGION=0.00 1.35 
VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS=7000. 30000. ! often 8000 is ok
MINIMUM_ZETA=0.05
INCLUDE_RESOLUTION_RANGE=50 0
STRONG_PIXEL=6
REFINE(INTEGRATE)=CELL BEAM ORIENTATION

! parameters specifically for this detector and beamline:
DETECTOR= ADSC   MINIMUM_VALID_PIXEL_VALUE= 1   OVERLOAD= 65000
!NX=  3072   NY=  3072   QX= 0.10260   QY= 0.10260 ! XDS finds this out by itself
DIRECTION_OF_DETECTOR_X-AXIS=1 0 0
DIRECTION_OF_DETECTOR_Y-AXIS=0 1 0
INCIDENT_BEAM_DIRECTION=0 0 1
ROTATION_AXIS=1 0 0 
FRACTION_OF_POLARIZATION=0.98
POLARIZATION_PLANE_NORMAL=0 1 0

MarCDD (e.g. @ SLS, APS, ... )

JOB=XYCORR INIT COLSPOT IDXREF DEFPIX INTEGRATE CORRECT ! XPLAN

! for this experiment:
ORGX=1533 ORGY=1536        ! if unknown estimate beam position visually using XDS-Viewer or adxv
DETECTOR_DISTANCE=350
OSCILLATION_RANGE=0.25
X-RAY_WAVELENGTH=1.0001
NAME_TEMPLATE_OF_DATA_FRAMES=../mk/mk04_1_???.img DIRECT  TIFF
DATA_RANGE=1 720
SPOT_RANGE=1 360            ! for very accurate geometry determination use half of dataset
BACKGROUND_RANGE=1 10

SPACE_GROUP_NUMBER=0        ! 0 if unknown, in that case UNIT_CELL_CONSTANTS do not matter
UNIT_CELL_CONSTANTS= 70 80 90 90 90 90

! remove the exclamation mark in next line if anom signal is expected/present 
! FRIEDEL'S_LAW=FALSE 
! STRICT_ABSORPTION_CORRECTION=TRUE ! usually no need to change - see Tips_and_Tricks in XDSwiki

! parameters with changes wrt default values: 
TRUSTED_REGION=0.00 1.35     ! take corners into account
VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS=7000. 30000. ! often 8000 is ok
MINIMUM_ZETA=0.05            ! integrate reflections close to rotation axis
INCLUDE_RESOLUTION_RANGE=50 0
STRONG_PIXEL=6
REFINE(INTEGRATE)=CELL BEAM ORIENTATION

! parameters for this detector and beamline: 
DETECTOR=CCDCHESS        MINIMUM_VALID_PIXEL_VALUE=1     OVERLOAD=65500 
! XDS picks up NX, NY, QX, QY automatically; possibilities are:
!NX=3072 NY=3072 QX=0.073242  QY=0.073242   !MARCCD 225mm version
!NX=2048 NY=2048 QX=0.079092  QY=0.079092   !MARCCD 165mm version
!NX=4096 NY=4096 QX=0.079346  QY=0.079346   !MARCCD 325mm version
!NX=4096 NY=4096 QX=0.073242 QY=0.073242    !MARCCD 300mm at APS (22-ID)

DIRECTION_OF_DETECTOR_X-AXIS=1 0 0
DIRECTION_OF_DETECTOR_Y-AXIS=0 1 0
INCIDENT_BEAM_DIRECTION=0 0 1
ROTATION_AXIS=1 0 0                   ! at e.g. SERCAT ID-22 this needs to be -1 0 0
FRACTION_OF_POLARIZATION=0.99 
POLARIZATION_PLANE_NORMAL=0 1 0

Pilatus 6M @ SLS, BL X06SA

JOB=XYCORR INIT COLSPOT IDXREF DEFPIX INTEGRATE CORRECT

! for this experiment:
ORGX=1330 ORGY=1321
DETECTOR_DISTANCE=550
OSCILLATION_RANGE=0.25
X-RAY_WAVELENGTH=1.0001
NAME_TEMPLATE_OF_DATA_FRAMES=../mk/mk04_1_0????.cbf CBF
DATA_RANGE=1 720
SPOT_RANGE=1 720
BACKGROUND_RANGE=1 10

SPACE_GROUP_NUMBER=0
UNIT_CELL_CONSTANTS= 70 80 90 90 90 90

! remove the exclamation marks if anom signal is present 
! FRIEDEL'S_LAW=FALSE 
! STRICT_ABSORPTION_CORRECTION=TRUE ! but read Tips_and_Tricks in XDSwiki

! parameters with changes wrt default values: 
TRUSTED_REGION=0.00 1.15 
VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS=7000. 30000. ! often 8000 is ok
MINIMUM_ZETA=0.05
INCLUDE_RESOLUTION_RANGE=50 0
STRONG_PIXEL=6
REFINE(INTEGRATE)=CELL BEAM ORIENTATION

! parameters specifically for this detector and beamline 
! (e.g. for the PILATUS 6M, XDS picks up NX=2463 NY=2527 automatically)

DETECTOR=PILATUS QX=0.172  QY=0.172
DIRECTION_OF_DETECTOR_X-AXIS=1 0 0
DIRECTION_OF_DETECTOR_Y-AXIS=0 1 0
INCIDENT_BEAM_DIRECTION=0 0 1
ROTATION_AXIS=1 0 0 
FRACTION_OF_POLARIZATION=0.99 
POLARIZATION_PLANE_NORMAL=0 1 0
SENSOR_THICKNESS=0.32
UNTRUSTED_RECTANGLE= 487  495     1 2527  ! these do not have to be specified
UNTRUSTED_RECTANGLE= 981  989     1 2527  ! but it does not hurt either
UNTRUSTED_RECTANGLE=1475 1483     1 2527  ! ...
UNTRUSTED_RECTANGLE=1969 1977     1 2527  ! ...
UNTRUSTED_RECTANGLE=   1 2463   195  213  ! ...
UNTRUSTED_RECTANGLE=   1 2463   407  425  ! ...
UNTRUSTED_RECTANGLE=   1 2463   619  637  ! ...
UNTRUSTED_RECTANGLE=   1 2463   831  849  ! ...
UNTRUSTED_RECTANGLE=   1 2463  1043 1061  ! ...
UNTRUSTED_RECTANGLE=   1 2463  1255 1273  ! ...
UNTRUSTED_RECTANGLE=   1 2463  1467 1485  ! ...
UNTRUSTED_RECTANGLE=   1 2463  1679 1697  ! ...
UNTRUSTED_RECTANGLE=   1 2463  1891 1909  ! ...
UNTRUSTED_RECTANGLE=   1 2463  2103 2121  ! ...
UNTRUSTED_RECTANGLE=   1 2463  2315 2333  ! ...
NUMBER_OF_PROFILE_GRID_POINTS_ALONG_ALPHA/BETA=13 !used by: INTEGRATE
! NUMBER_OF_PROFILE_GRID_POINTS_ALONG_GAMMA= 9    !used by: INTEGRATE