Scaling with SCALA (or better: aimless)
An example script to convert XDS_ASCII.HKL into a CCP4 multi-record MTZ file is:
#!/bin/csh -f # # Scale data from XDS # combat hklin XDS_ASCII.HKL hklout junk.mtz << end-combat MONITOR 10000 INPUT XDSASCII ADDBATCH 200 # optional: modify batch numbers TITLE Test combat NAME PROJECT myproject CRYSTAL mycrystal DATASET native END end-combat sortmtz hklout junk_sort.mtz << end-sort H K L M/ISYM BATCH I SIGI junk.mtz end-sort scala hklin junk_sort.mtz hklout junk_scaled.mtz << end-scale # scale using default parameters run 1 batch 1 to 1000 scales rotation spacing 5 bfactor off anomalous on end-scala truncate hklin junk_scaled.mtz \ hklout junk_truncated.mtz <<end-trunc anomalous yes nresidue 1049 labout F=FP SIGF=SIGFP DANO=DANO_sulf SIGDANO=SIGDANO_sulf end-trunc
In this way one gets the well-known outputs of SCALA and TRUNCATE.
The equivalent XDSCONV.INP (recommended) would be just:
INPUT_FILE=XDS_ASCII.HKL INCLUDE_RESOLUTION_RANGE=50 1 ! optional OUTPUT_FILE=temp.hkl CCP4 FRIEDEL'S_LAW=FALSE
(XDSCONV picks up space group and cell parameters from XDS_ASCII.HKL.) After running XDSCONV one would then run
f2mtz HKLOUT temp.mtz<F2MTZ.INP cad HKLIN1 temp.mtz HKLOUT junk_truncated.mtz<<EOF LABIN FILE 1 E1=FP E2=SIGFP E3=DANO E4=SIGDANO LABOUT FILE 1 E1=FP E2=SIGFP E3=DANO_sulf E4=SIGDANO_sulf END EOF
Another way of going from a XDS formatted reflection file to a MTZ file is via the pointless program by Phil Evans:
Scaling and Assessment of Data Quality, Philip Evans, Acta Cryst D 62, 72-82.
(see also "Running Pointless and Scala").
pointless -copy xdsin XDS_ASCII.HKL hklout XDS_ASCII.mtz
The advantage of this route is, that the batch headers of the resulting MTZ file are correct - COMBAT doesn't seem to write complete and accurate headers. If one then needs to edit the batch information in this file, the CCP4 program REBATCH can be used (optional):
rebatch hklin XDS_ASCII.mtz hklout XDS_ASCII_rebatch.mtz <<end_ip BATCH ALL START 1001 BATCH ALL PNAME Lysozyme XNAME Hg-Soak DNAME peak end_ip
sortmtz hklout sortmtz.mtz <<end_ip H K L M/ISYM BATCH XDS_ASCII_rebatch.mtz end_ip
Note: another program to work with those multi-record MTZ files is REINDEX.