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 output of TRUNCATE.
The equivalent XDSCONV.INP (recommended) would be just:
INPUT_FILE=XDS_ASCII.HKL XDS_ASCII 50 1 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