XDSCONV is the conversion program of the XDS suite.

Possible output formats are SHELX, CNS, CCP4 (for F SIGF DANO SIGDANO), CCP4_F (for F+ F- SIGF+ SIGF-) and CCP4_I (for I+ I- SIGI+ SIGI-).


XDSCONV does outlier rejection in some modes.

Typical use

A typical input file XDSCONV.INP might look like

INPUT_FILE=XDS_ASCII.HKL
INCLUDE_RESOLUTION_RANGE=50 1  ! optional 
OUTPUT_FILE=temp.hkl  CCP4     ! Warning: do _not_ name this file "temp.mtz" !
FRIEDEL'S_LAW=FALSE            ! default is FRIEDEL'S_LAW=TRUE

This produces the file temp.hkl which is then converted to a MTZ file XDS_ASCII.mtz with (these lines are also printed out by XDSCONV):

f2mtz HKLOUT temp.mtz<F2MTZ.INP
cad HKLIN1 temp.mtz HKLOUT XDS_ASCII.mtz<<EOF
LABIN FILE 1 ALL
END
EOF

This latter step is not necessary for CNS and SHELX output formats, which are written directly by XDSCONV. For the CNS output format, one could use MERGE=FALSE to keep observations separate. For the SHELX output format, MERGE=FALSE is the default (I guess because George Sheldrick suggests that his programs, in particular XPREP, should be fed unmerged data. However I sometimes found that I obtain better SHELXD results with merging inside XDSCONV, using MERGE=TRUE).

N.B. It is good practice to always use FRIEDEL'S_LAW=FALSE - see Tips and Tricks.

how to change column labels

To have control over the column labels, one might want to modify the simple example above as:

f2mtz HKLOUT temp.mtz<F2MTZ.INP
cad HKLIN1 temp.mtz HKLOUT junk_xdsconv.mtz<<EOF
LABIN FILE 1 E1=FP E2=SIGFP E3=DANO E4=SIGDANO E5=ISYM
LABOUT FILE 1 E1=FP E2=SIGFP E3=DANO_sulf E4=SIGDANO_sulf E5=ISYM_sulf
END
EOF

ISYM column is important if you want to run SHARP afterwards.

In the case of a MTZ file that should be used for molecular replacement and refinement, the CAD step could be used to transfer the R_free flag from a different dataset to this new dataset. Alternatively, change of labels and transfer of columns can be done in the ccp4i GUI.

how to obtain a MTZ file with DANO SIGDANO F(+) SIGF(+) F(-) SIGF(-)

You have to run XDSCONV twice, and combine the output with cad. At the latter step you can also change the column labels:

#!/bin/csh -f
# produce xds_allFinfo.mtz with FP SIGFP DANO SIGDANO F(+) SIGF(+) F(-) SIGF(-)
# in the same way, the labels produced with CCP4_I could be included!
#
# first xdsconv run producing FP SIGFP DANO SIGDANO
echo "INPUT_FILE= XDS_ASCII.HKL" > XDSCONV.INP
echo "OUTPUT_FILE= temp.hkl CCP4" >> XDSCONV.INP
echo "FRIEDEL'S_LAW= FALSE" >> XDSCONV.INP
xdsconv
f2mtz HKLOUT temp1.mtz<F2MTZ.INP

# second xdsconv run producing F(+) SIGF(+) F(-) SIGF(-)
echo "INPUT_FILE= XDS_ASCII.HKL" > XDSCONV.INP
echo "OUTPUT_FILE= temp.hkl CCP4_F" >> XDSCONV.INP
echo "FRIEDEL'S_LAW= FALSE" >> XDSCONV.INP
xdsconv
f2mtz HKLOUT temp2.mtz<F2MTZ.INP

# for CAD, the 2 LABOUT cards are only required if the labels should be changed
cad HKLIN1 temp1.mtz HKLIN2 temp2.mtz HKLOUT xds_allFinfo.mtz<<EOF
 LABIN  FILE 1 E1=FP       E2=SIGFP       E3=DANO     E4=SIGDANO
 LABIN  FILE 2 E1=F(+)     E2=SIGF(+)     E3=F(-)     E4=SIGF(-)
 LABOUT FILE 1 E1=FP_Hg    E2=SIGFP_Hg    E3=DANO_Hg  E4=SIGDANO_Hg
 LABOUT FILE 2 E1=F(+)_Hg  E2=SIGF(+)_Hg  E3=F(-)_Hg  E4=SIGF(-)_Hg
 END
EOF

Hint for long-time XDSCONV users

The latest versions of the program do not require

SPACE_GROUP_NUMBER=
UNIT_CELL_PARAMETERS=

because these are picked up from the header of the input reflection file. However, if you want to change the parameters of either keyword then you have to specify both! I.e. if you want to change the spacegroup then you also have to specify the unit cell parameters.