2,652
edits
(→The script: rev 1.01) |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 117: | Line 117: | ||
# revision 0.99 . Aaron Finke (CHESS) 07/11/2020 add ROTATION_AXIS=-1 0 0 for EIGER2 16M detector at MX beamline ID7B2 (CHESS) | # revision 0.99 . Aaron Finke (CHESS) 07/11/2020 add ROTATION_AXIS=-1 0 0 for EIGER2 16M detector at MX beamline ID7B2 (CHESS) | ||
# revision 1.00 . Gleb Bourenkov 10/11/2020 add ROTATION_AXIS=0 -1 0 for beamline P14 (EMBL Hamburg) detectors Eiger 16M S/N E-32-0107; previously Eiger 4M S/N E-08-0107 and PILATUS 6M-F, S/N 60-0115-F | # revision 1.00 . Gleb Bourenkov 10/11/2020 add ROTATION_AXIS=0 -1 0 for beamline P14 (EMBL Hamburg) detectors Eiger 16M S/N E-32-0107; previously Eiger 4M S/N E-08-0107 and PILATUS 6M-F, S/N 60-0115-F | ||
# revision 1.01 . KD 07/12/2020 ROTATION_AXIS=0 -1 0 for Pilatus3 | # revision 1.01 . KD 07/12/2020 ROTATION_AXIS=0 -1 0 for Pilatus3 2M, S/N 24-0118 at ID23-2 (http://www.globalphasing.com/autoproc/wiki/index.cgi?BeamlineSettings) | ||
REVISION="1. | # revision 1.02 . KD 11/01/2021 recognize mar555 detector as mar345 (thanks to Thomas Hauß, HZB) | ||
REVISION="1.02 (11-Jan-2021)" | |||
# | # | ||
Line 242: | Line 243: | ||
grep -q "^SOURCE_WAVELENGTH= *1" tmp2 && DET=dtrek | grep -q "^SOURCE_WAVELENGTH= *1" tmp2 && DET=dtrek | ||
grep -q BEAM_CENTER_X tmp2 && DET=adsc | grep -q BEAM_CENTER_X tmp2 && DET=adsc | ||
grep -q mar345 tmp2 && DET=MAR345 | grep -q mar345 tmp2 && DET=MAR345 | ||
# rev. 1.02: in one case, mar555 data could be processed pretending it is mar345, so: | |||
grep -q mar555 tmp2 && DET=MAR345 | |||
grep -q BRUKER tmp2 && grep -q CBF tmp2 && DET=Bruker-cbf | grep -q BRUKER tmp2 && grep -q CBF tmp2 && DET=Bruker-cbf | ||
grep -q CMOS1 tmp2 && DET=adsc-CMOS1 | grep -q CMOS1 tmp2 && DET=adsc-CMOS1 | ||
Line 539: | Line 542: | ||
fi | fi | ||
# ESRF ID23-2: | # ESRF ID23-2: | ||
if [ "$DET_SN" == " | if [ "$DET_SN" == "PILATUS3 2M, S/N 24-0118, ESRF ID23" ] ; then | ||
rotation_axis="0 -1 0" | rotation_axis="0 -1 0" | ||
echo ROTATION_AXIS="0 -1 0" at ESRF ID23-2 | echo ROTATION_AXIS="0 -1 0" at ESRF ID23-2 | ||
Line 717: | Line 720: | ||
DETECTOR="MAR345 MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD=130000" | DETECTOR="MAR345 MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD=130000" | ||
NX=`awk '/FORMAT/{print $2}' tmp2` | NX=`awk '/FORMAT/{print $2}' tmp2` | ||
NY=$NX | # next line is rev 1.02 (previously NY= $NX): | ||
NY=`awk -v NX=$NX '/FORMAT/{print $4/NX}' tmp2` | |||
QX=`awk '/PIXEL/{print $3/1000.}' tmp2` | QX=`awk '/PIXEL/{print $3/1000.}' tmp2` | ||
QY=`awk '/PIXEL/{print $5/1000.}' tmp2` | QY=`awk '/PIXEL/{print $5/1000.}' tmp2` | ||
Line 964: | Line 968: | ||
! and does not seem to have any downsides. | ! and does not seem to have any downsides. | ||
eof | eof | ||
if [ $NX == "1028" -a $NY == "1062" ]; then | if [ "$NX" == "1028" -a "$NY" == "1062" ]; then | ||
# Eiger2 1M ; v0.97 numbers from Andreas Förster | # Eiger2 1M ; v0.97 numbers from Andreas Förster | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
UNTRUSTED_RECTANGLE= 0 1029 512 551 | UNTRUSTED_RECTANGLE= 0 1029 512 551 | ||
eof | eof | ||
elif [ $NX == "1475" ]; then | elif [ "$NX" == "1475" ]; then | ||
if ! grep -q Flat_field tmp2 ; then | if ! grep -q Flat_field tmp2 ; then | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
Line 1,002: | Line 1,006: | ||
eof | eof | ||
fi | fi | ||
elif [ $NX == "2068" -a $NY == "2162" ]; then | elif [ "$NX" == "2068" -a "$NY" == "2162" ]; then | ||
# Eiger2 4M ; v0.97 numbers from Andreas Förster | # Eiger2 4M ; v0.97 numbers from Andreas Förster | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
Line 1,012: | Line 1,016: | ||
UNTRUSTED_RECTANGLE= 0 2069 1612 1651 | UNTRUSTED_RECTANGLE= 0 2069 1612 1651 | ||
eof | eof | ||
elif [ $NX == "2463" ]; then | elif [ "$NX" == "2463" ]; then | ||
# Pilatus 6M | # Pilatus 6M | ||
# FIXME: here we could test if a Flat_field correction was applied like we do for 2M | # FIXME: here we could test if a Flat_field correction was applied like we do for 2M | ||
Line 1,032: | Line 1,036: | ||
UNTRUSTED_RECTANGLE= 0 2464 2315 2333 | UNTRUSTED_RECTANGLE= 0 2464 2315 2333 | ||
eof | eof | ||
elif [ $NX == "3110" -a $NY == "3269" ]; then | elif [ "$NX" == "3110" -a "$NY" == "3269" ]; then | ||
# Eiger 9M | # Eiger 9M | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
Line 1,045: | Line 1,049: | ||
UNTRUSTED_RECTANGLE= 0 3110 2717 2757 | UNTRUSTED_RECTANGLE= 0 3110 2717 2757 | ||
eof | eof | ||
elif [ $NX == "3108" -a $NY == "3262" ]; then | elif [ "$NX" == "3108" -a "$NY" == "3262" ]; then | ||
# Eiger2 9M ; v0.97 numbers from Andreas Förster | # Eiger2 9M ; v0.97 numbers from Andreas Förster | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
Line 1,058: | Line 1,062: | ||
UNTRUSTED_RECTANGLE= 0 3109 2712 2751 | UNTRUSTED_RECTANGLE= 0 3109 2712 2751 | ||
eof | eof | ||
elif [ $NX == "4150" -a $NY == "4371" ]; then | elif [ "$NX" == "4150" -a "$NY" == "4371" ]; then | ||
# Eiger 16M | # Eiger 16M | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
Line 1,074: | Line 1,078: | ||
UNTRUSTED_RECTANGLE= 3109 3122 0 4371 | UNTRUSTED_RECTANGLE= 3109 3122 0 4371 | ||
eof | eof | ||
elif [ $NX == "4148" -a $NY == "4362" ]; then | elif [ "$NX" == "4148" -a "$NY" == "4362" ]; then | ||
# Eiger2 16M ; v0.97 numbers from Andreas Förster | # Eiger2 16M ; v0.97 numbers from Andreas Förster | ||
cat >> XDS.INP << eof | cat >> XDS.INP << eof | ||
Line 1,178: | Line 1,182: | ||
* The script tries to interpret the header of the frames, so is currently limited to Dectris (Pilatus, Eiger), ADSC (Quantum), Rigaku (several types), MAR (CCD and image plate) detectors, and one Bruker detector. Other detectors need some values to be manually filled into XDS.INP - the relevant places are marked with XXX. These are detector properties (type, pixel size and number, min and max counts in a pixel), and experimental parameters like ROTATION_AXIS, OSCILLATION_RANGE, X-RAY_WAVELENGTH, DETECTOR_DISTANCE, and XORG, YORG. For fine-tuning of detector parameters, see the [http://xds.mpimf-heidelberg.mpg.de/html_doc/xds_prepare.html detector-specific templates]. | * The script tries to interpret the header of the frames, so is currently limited to Dectris (Pilatus, Eiger), ADSC (Quantum), Rigaku (several types), MAR (CCD and image plate) detectors, and one Bruker detector. Other detectors need some values to be manually filled into XDS.INP - the relevant places are marked with XXX. These are detector properties (type, pixel size and number, min and max counts in a pixel), and experimental parameters like ROTATION_AXIS, OSCILLATION_RANGE, X-RAY_WAVELENGTH, DETECTOR_DISTANCE, and XORG, YORG. For fine-tuning of detector parameters, see the [http://xds.mpimf-heidelberg.mpg.de/html_doc/xds_prepare.html detector-specific templates]. | ||
* The authors have made a "best effort" to provide a XDS.INP that results in the correct sign of the anomalous signal. In the case of one detector type (internally called Rigaku SMV) this requires reversal of one detector axis, and a negative DETECTOR_DISTANCE, as is found in some of the [http://xds.mpimf-heidelberg.mpg.de/html_doc/xds_prepare.html detector-specific templates]. '''For an unusual or unknown detector setup, the correct sign of the anomalous signal needs to be established and verified e.g. with a good dataset from a test crystal that has an anomalous signal.''' The authors do not take any responsibility for problems arising from incorrect sign of the anomalous signal, nor - obviously! - for any other mischief arising in or from data processing. | * The authors have made a "best effort" to provide a XDS.INP that results in the correct sign of the anomalous signal. In the case of one detector type (internally called Rigaku SMV) this requires reversal of one detector axis, and a negative DETECTOR_DISTANCE, as is found in some of the [http://xds.mpimf-heidelberg.mpg.de/html_doc/xds_prepare.html detector-specific templates]. '''For an unusual or unknown detector setup, the correct sign of the anomalous signal needs to be established and verified e.g. with a good dataset from a test crystal that has an anomalous signal.''' The authors do not take any responsibility for problems arising from incorrect sign of the anomalous signal, nor - obviously! - for any other mischief arising in or from data processing. | ||
* At some beamlines, the ROTATION_AXIS should be -1 0 0 ("backwards") instead of the usual 1 0 0 ("horizontal"), or even 0 1 0 ("vertical") like at one of the PETRA Hamburg BLs. | * At some beamlines, the ROTATION_AXIS should be -1 0 0 ("backwards") instead of the usual 1 0 0 ("horizontal"), or even 0 1 0 ("vertical") like at one of the PETRA Hamburg BLs. The frame headers do not have this information, so the default chosen by [[generate_XDS.INP]] may be wrong and need manual correction. Pls also see the article [[Beamline notes]]. | ||
* Sometimes, the x- and y- values of the primary beam position recorded in the header should be used for ORGY and ORGX (i.e reversed) instead of as ORGX and ORGY. For ADSC, this has been implemented in the script for a number of beamlines. | * Sometimes, the x- and y- values of the primary beam position recorded in the header should be used for ORGY and ORGX (i.e reversed) instead of as ORGX and ORGY. For ADSC, this has been implemented in the script for a number of beamlines. | ||
* there are apparently several flavours of HDF5 files produced at Diamond Light Source. They differ e.g. in the naming of the header items. This means that items like NX, NY, DETECTOR_DISTANCE and number of images cannot be found by the [[generate_XDS.INP]] script. Example: The data at /dls/i04-1/data/2021/mx28114-9/processing/Lenye_Diamini/ThiL/ThiL found during the CCP4 2021 online Cape Town workshop. A workaround is to use e.g. xia2 pipeline=3dii to process these files, and - if needed - extract those items from its output files, e.g. from DEFAULT/NATIVE/SWEEP1/index/XDS.INP . | |||
== See also == | == See also == |