Changes

3,222 bytes added ,  17:57, 1 March 2013
Line 62: Line 62:  
   END
 
   END
 
  EOF
 
  EOF
 +
 +
The following script does the same for the input file (first parameter to the script), but also adds a SUFFIX (second parameter) to the columns to better identify the data, and optionally copies the Rfree-flag from a reference mtz-file (third parameter). If the Rfree-flag is NOT named "FreeR_flag" (the default from ccp4i), you can provide its name as fourth parameter. All steps are logged into log-files, temporary files are deleted. The input file should end with .HKL (rather than e.g. .hkl).
 +
The script also sets the resolution to that of the observed data using sftools. Otherwise the resolution of the reference data set might be shown if that is higher. You can call this script 'xds2mtz.sh'. If it is executed without arguments, you get a short usage instruction.
 +
<nowiki>#!/bin/bash
 +
 +
function usage {
 +
echo "Usage: xds2mtz file.HKL SUFFIX [Rfree.mtz [RfreeFlag]]"
 +
echo ""
 +
echo "      file.HKL:  Output from XDS or XSCALE"
 +
echo "      SUFFIX:    Columns suffix, e.g. FP_SUFFIX"
 +
echo "      Rfree.mtz: Reference mtz-file for Rfree transfer"
 +
echo "      RfreeFlag: Label for Rfree set, defaults to \"FreeR_flag\""
 +
echo ""
 +
}
 +
 +
if [ -z $1 ]; then
 +
echo "*** Error: Missing input XDS file name"
 +
usage
 +
exit -1;
 +
fi
 +
if [ ! -f $1 ]; then
 +
echo "*** Error: File $1 does not exist"
 +
usage
 +
exit -1;
 +
fi
 +
 +
 +
BASE=$(basename $1)
 +
SUFFIX=$2
 +
RFREE=$3
 +
FLAG=$4
 +
 +
echo "Base = $BASE, Suffix = $SUFFIX"
 +
 +
 +
echo "INPUT_FILE= $1" > XDSCONV.INP
 +
echo "OUTPUT_FILE= temp1.hkl CCP4" >> XDSCONV.INP
 +
xdsconv && f2mtz HKLOUT temp1.mtz <F2MTZ.INP | tee ${BASE%.HKL}_dano.log
 +
 +
echo "INPUT_FILE= $1" > XDSCONV.INP
 +
echo "OUTPUT_FILE= temp2.hkl CCP4_F" >> XDSCONV.INP
 +
xdsconv && f2mtz HKLOUT temp2.mtz <F2MTZ.INP |tee ${BASE%.HKL}_pm.log
 +
 +
if [ -z $3 ]; then
 +
echo "Proceeding without Rfree reference file"
 +
cad HKLIN1 temp1.mtz HKLIN2 temp2.mtz HKLOUT ${BASE%.HKL}.mtz << eof | tee ${BASE%.HKL}_cad.log
 +
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_$SUFFIX    E2=SIGFP_$SUFFIX    E3=DANO_$SUFFIX  E4=SIGDANO_$SUFFIX
 +
LABOUT FILE 2 E1=F(+)_$SUFFIX  E2=SIGF(+)_$SUFFIX  E3=F(-)_$SUFFIX  E4=SIGF(-)_$SUFFIX
 +
eof
 +
else
 +
echo "Copying Rfree from file $3"
 +
if [ -z $4 ]; then
 +
FREERFLAG="FreeR_flag" # ccp4 standard name
 +
else
 +
FREERFLAG=$4
 +
fi
 +
echo "Extracting flagged indices from ${FREERFLAG}"
 +
cad HKLIN1 temp1.mtz \
 +
HKLIN2 temp2.mtz \
 +
HKLIN3 $3 \
 +
HKLOUT ${BASE%.HKL}.mtz << eof | tee ${BASE%.HKL}_cad.log
 +
LABIN  FILE 1 E1=FP      E2=SIGFP      E3=DANO    E4=SIGDANO
 +
LABIN  FILE 2 E1=F(+)    E2=SIGF(+)    E3=F(-)    E4=SIGF(-)
 +
LABIN  FILE 3 E1=${FREERFLAG}
 +
LABOUT FILE 1 E1=FP_$SUFFIX    E2=SIGFP_$SUFFIX    E3=DANO_$SUFFIX  E4=SIGDANO_$SUFFIX
 +
LABOUT FILE 2 E1=F(+)_$SUFFIX  E2=SIGF(+)_$SUFFIX  E3=F(-)_$SUFFIX  E4=SIGF(-)_$SUFFIX
 +
LABOUT FILE 3 E1=${FREERFLAG}
 +
eof
 +
 +
rm temp1.mtz
 +
 +
# correct for real data in case Rfree data set contains too many hkls
 +
# thanks to Andrey Lebedev
 +
sftools << eof | tee ${BASE%.HKL}_sftools.log
 +
READ ${BASE%.HKL}.mtz
 +
SELECT ONLY COLUMN FP_$SUFFIX PRESENT
 +
WRITE temp1.mtz
 +
END
 +
eof
 +
 +
mv temp1.mtz ${BASE%.HKL}.mtz
 +
 +
fi
 +
 +
rm -f XDSCONV.INP temp1.hkl temp1.mtz temp2.hkl temp2.mtz F2MTZ.INP XDSCONV.LP</nowiki>
    
== Hint for long-time XDSCONV users ==
 
== Hint for long-time XDSCONV users ==
21

edits