Changes

From XDSwiki
Jump to navigationJump to search
1,431 bytes added ,  16:34, 9 November 2021
Line 120: Line 120:  
# 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.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.02 . KD 11/01/2021 recognize mar555 detector as mar345 (thanks to Thomas Hauß, HZB)  
 
# revision 1.02 . KD 11/01/2021 recognize mar555 detector as mar345 (thanks to Thomas Hauß, HZB)  
# revision 1.03 . Feng YU 18/7/2021 fix/expand information about Shanghai Synchrotron Radiation Facility (SSRF)
+
# revision 1.03 . Feng Yu 18/7/2021 fix/expand information about Shanghai Synchrotron Radiation Facility (SSRF)
# revision 1.04 . Zhipu Luo 13/08/2021 extract ORGX,ORGY for electron diffraction if the image header contains "ED"
+
# revision 1.04 . Zhipu Luo 13/08/2021 extract ORGX,ORGY for electron diffraction from SMV header if the wavelength value starts with 0.0
REVISION="1.04 (13-AUG-2021)"
+
# revision 1.05 . KD specialcase extraction of number of images for BNL detectors E-32-0101 and E-18-0104
 +
# revision 1.06 . KD fix URLs in output. Availability of Apple M1 processor dectris-neggia-Apple-arm64.so . LC_ALL=C .
 +
# revision 1.07 . KD, Thomas Hauß, Gleb Bourenkov 25/10/2021. Detector moved from Petra P14 to P13
 +
# revision 1.08 . KD, Thomas Hauß, Feng Yu 7/11/2021 fix TZ in timestamps for SSRF detectors
 +
# revision 1.09 . KD, Feng Yu 7/11/2021 fix detector number BNL E-18-0121 to be E-18-0104
 +
REVISION="1.09 (9-NOV-2021)"
    
#                                                                                                             
 
#                                                                                                             
Line 146: Line 151:  
   exit                                                                                                           
 
   exit                                                                                                           
 
fi                                                                                                               
 
fi                                                                                                               
 +
# make sure the locale does not interfere with e.g. awk calculations:
 +
LC_ALL="C";export LC_ALL
 
#                                                                                                                 
 
#                                                                                                                 
 
# defaults:                                                                                                       
 
# defaults:                                                                                                       
Line 175: Line 182:  
SEPMIN=7.0
 
SEPMIN=7.0
 
CLUSTER_RADIUS=3.5
 
CLUSTER_RADIUS=3.5
 +
REFINE_CORRECT="CELL BEAM ORIENTATION AXIS POSITION ! Default is: refine everything"
    
dname=`echo "$1" | xargs dirname`
 
dname=`echo "$1" | xargs dirname`
Line 204: Line 212:  
  data_last=`cut -b $pos1-$pos2 tmp1 | tail -n1 | bc`
 
  data_last=`cut -b $pos1-$pos2 tmp1 | tail -n1 | bc`
 
  DATA_RANGE="$data_first $data_last"
 
  DATA_RANGE="$data_first $data_last"
 +
echo DATA_RANGE=$DATA_RANGE
 
   
 
   
 
  # set SPOT_RANGE to first half of DATA_RANGE
 
  # set SPOT_RANGE to first half of DATA_RANGE
Line 215: Line 224:  
FIRSTFRAME=`head -1 tmp1`
 
FIRSTFRAME=`head -1 tmp1`
 
echo $FIRSTFRAME | grep "\.h5$" && is_h5=1 || is_h5=0
 
echo $FIRSTFRAME | grep "\.h5$" && is_h5=1 || is_h5=0
  −
if [ "$is_h5" == 1 ]; then
  −
# nframes=`h5dump -A -g "/entry/data" $FIRSTFRAME | grep "DATASPACE  SIMPLE" | sed -e "s/,.*//" | awk '{a+=$5}END{print a}'`
  −
nframes=`h5dump -d "/entry/instrument/detector/detectorSpecific/nimages" $FIRSTFRAME | awk '/\(0\): [0-9]/{print $2}'`
  −
DATA_RANGE="1 $nframes"
  −
SPOT_RANGE="1 `echo "scale=0; if (${nframes}<2) 1; if (${nframes}>1) ${nframes}/2"|bc -l`"
  −
fi
  −
  −
echo DATA_RANGE=$DATA_RANGE
      
# find out detector type
 
# find out detector type
Line 476: Line 476:  
elif [ "$DET" == "experimental-ED" ]; then
 
elif [ "$DET" == "experimental-ED" ]; then
 
   DETECTOR="ADSC MINIMUM_VALID_PIXEL_VALUE= 1 OVERLOAD= 65000  ! OVERLOAD is really unknown "
 
   DETECTOR="ADSC MINIMUM_VALID_PIXEL_VALUE= 1 OVERLOAD= 65000  ! OVERLOAD is really unknown "
   echo --- Electron diffraction data in SMV formart!
+
   echo --- Electron diffraction data in SMV format!
 
   SENSOR_THICKNESS=0.01                                                         
 
   SENSOR_THICKNESS=0.01                                                         
 
   sed s/\;// tmp2 > tmp1                                                       
 
   sed s/\;// tmp2 > tmp1                                                       
Line 488: Line 488:  
   BEAM_CENTER_Y=`grep BEAM_CENTER_Y tmp2 | sed s/BEAM_CENTER_Y=//`  
 
   BEAM_CENTER_Y=`grep BEAM_CENTER_Y tmp2 | sed s/BEAM_CENTER_Y=//`  
 
   QXY=`echo "scale=1; $QX*($BEAM_CENTER_X+$BEAM_CENTER_Y)" | bc -l`
 
   QXY=`echo "scale=1; $QX*($BEAM_CENTER_X+$BEAM_CENTER_Y)" | bc -l`
  QYO=`echo "scale=1; $QY*$BEAM_CENTER_Y" | bc -l`
   
       if [ "$QXY" "<" "$BEAM_CENTER_X" ] ; then
 
       if [ "$QXY" "<" "$BEAM_CENTER_X" ] ; then
 
       ORGX=`echo "scale=2; $BEAM_CENTER_Y/$QX" | bc -l`
 
       ORGX=`echo "scale=2; $BEAM_CENTER_Y/$QX" | bc -l`
Line 501: Line 500:  
   echo --- For TIMEPIX detector, please fix ROTATION_AXIS yourself!
 
   echo --- For TIMEPIX detector, please fix ROTATION_AXIS yourself!
 
   DIRECTION_OF_DETECTOR_X_AXIS="1 0 0"  
 
   DIRECTION_OF_DETECTOR_X_AXIS="1 0 0"  
 +
  REFINE_CORRECT="ORIENTATION CELL AXIS BEAM ! for ED, no POSITION when CELL is refined"
    
elif [ "$DET" == "pilatus" ]; then
 
elif [ "$DET" == "pilatus" ]; then
Line 517: Line 517:     
       # find SENSOR_THICKNESS:
 
       # find SENSOR_THICKNESS:
       SENSOR_THICKNESS=`grep thickness tmp2 | sed -e s/'Silicon sensor, thickness'// | awk '{print $1*1000}'`
+
       SENSOR_THICKNESS=`grep thickness tmp2 | sed -e s/'Si.* sensor, thickness'// | awk '{print $1*1000}'`
 
       # find X_RAY_WAVELENGTH:                                                                               
 
       # find X_RAY_WAVELENGTH:                                                                               
 
       X_RAY_WAVELENGTH=`grep Wavelength tmp2 | sed -e s/Wavelength// -e s/A// | awk '{print $1}'`             
 
       X_RAY_WAVELENGTH=`grep Wavelength tmp2 | sed -e s/Wavelength// -e s/A// | awk '{print $1}'`             
Line 569: Line 569:  
       fi
 
       fi
 
# PETRA P14: raw data from Eiger are stored as CBF files so this is treated as Pilatus
 
# PETRA P14: raw data from Eiger are stored as CBF files so this is treated as Pilatus
       if [ "$DET_SN" == "Dectris Eiger 16M, E-32-0107" -o "$DET_SN" == "Dectris Eiger 4M, E-08-0107" -o "$DET_SN" == "PILATUS 6M-F, S/N 60-0115-F" ] ; then
+
       if [ "$DET_SN" == "Dectris Eiger 4M, E-08-0107" -o "$DET_SN" == "PILATUS 6M-F, S/N 60-0115-F" ] ; then
 
         rotation_axis="0 -1 0"
 
         rotation_axis="0 -1 0"
 
         echo ROTATION_AXIS="0 -1 0" at PETRA P14
 
         echo ROTATION_AXIS="0 -1 0" at PETRA P14
 +
      fi
 +
# similarly, Eiger 16M at PETRA P14 until May 22, 2021
 +
      if [ "$DET_SN" == "Dectris Eiger 16M, E-32-0107" ] ; then
 +
        egrep -q '^# 2020-|^# 2021-0[1-5]|^# 2021-06-[01]|^# 2021-06-2[01]' tmp2 || isatP13=1
 +
        if [ "$isatP13" == 1 ] ; then
 +
          echo using the default ROTATION_AXIS=1 0 0 at PETRA P13
 +
        else
 +
          rotation_axis="0 -1 0"
 +
          echo ROTATION_AXIS="0 -1 0" at PETRA P14
 +
        fi
 
       fi
 
       fi
 
# ESRF ID23-2:
 
# ESRF ID23-2:
Line 580: Line 590:     
elif [ "$DET" == "eiger" ]; then
 
elif [ "$DET" == "eiger" ]; then
 +
nframes=`h5dump -d "/entry/instrument/detector/detectorSpecific/nimages" $FIRSTFRAME | awk '/\(0\): [0-9]/{print $2}'`
 +
DATA_RANGE="1 $nframes"
 +
SPOT_RANGE="1 `echo "scale=0; if (${nframes}<2) 1; if (${nframes}>1) ${nframes}/2"|bc -l`"
 +
 
# find out if HDF5 from Diamond (DLS=1) or Dectris (DLS=0)
 
# find out if HDF5 from Diamond (DLS=1) or Dectris (DLS=0)
 
   DLS=0
 
   DLS=0
Line 615: Line 629:  
   # SSRF BL17U1 and SSRF BL10U2 (Feng YU 2021-07-18)
 
   # SSRF BL17U1 and SSRF BL10U2 (Feng YU 2021-07-18)
 
   # Eiger X 16M (S/N E-32-0111) was installed at SSRF BL17U1 from Oct 2017 to Feb 2021. After Feb 2021, it was moved back to SSRF BL10U2.
 
   # Eiger X 16M (S/N E-32-0111) was installed at SSRF BL17U1 from Oct 2017 to Feb 2021. After Feb 2021, it was moved back to SSRF BL10U2.
# 2021-02-01 00:00:00 CST time stamp is 1612108800
+
# 2021-03-01 00:00:00 time stamp is 1614528000
 
     if [ "$SN" == "E-32-0111" ]; then
 
     if [ "$SN" == "E-32-0111" ]; then
       collection_time=`h5dump -d "/entry/instrument/detector/detectorSpecific/data_collection_date" $FIRSTFRAME | grep "(0):" | awk '{print $2}' | sed -e "s/\.\(.*\)/CST/g; s/\"//g"`
+
       collection_time=`h5dump -d "/entry/instrument/detector/detectorSpecific/data_collection_date" $FIRSTFRAME | grep "(0):" | awk '{print $2}' | sed -e "s/\.\(.*\)//g; s/\"//g"`
 
       if [ `uname -s` == "Darwin" ]; then
 
       if [ `uname -s` == "Darwin" ]; then
         collection_timestamp=`date -j -f "%Y-%m-%dT%H:%M:%S%Z" $collection_time +%s`
+
         collection_timestamp=`date -j -f "%Y-%m-%dT%H:%M:%S" $collection_time +%s`
 
       elif [ `uname -s` == "Linux" ]; then
 
       elif [ `uname -s` == "Linux" ]; then
 
         collection_timestamp=`date -d $collection_time +%s`
 
         collection_timestamp=`date -d $collection_time +%s`
Line 634: Line 648:  
           rotation_axis="-1 0 0    ! Cannot determine rotation axis. SSRF BL17U1: -1 0 0; SSRF BL02U1: 0 -1 0"
 
           rotation_axis="-1 0 0    ! Cannot determine rotation axis. SSRF BL17U1: -1 0 0; SSRF BL02U1: 0 -1 0"
 
         fi
 
         fi
       elif [ $collection_timestamp -ge 0 ] && [ $collection_timestamp -le 1612108800 ]; then
+
       elif [ $collection_timestamp -ge 0 ] && [ $collection_timestamp -le 1614528000 ]; then
 
         # SSRF BL17U1
 
         # SSRF BL17U1
 
         rotation_axis="-1 0 0"
 
         rotation_axis="-1 0 0"
Line 663: Line 677:  
         echo "SSRF BL02U1 (Eiger2 S 9M) with horizontal rotation axis"
 
         echo "SSRF BL02U1 (Eiger2 S 9M) with horizontal rotation axis"
 
       fi
 
       fi
 +
    fi
 +
# revision 1.05 specialcase nframes for Eiger detectors at BNL
 +
    if [ "$SN" == "E-18-0104" -o "$SN" == "E-32-0101" ]; then
 +
      echo specialcase nframes for Eiger detectors at BNL:
 +
      nframes=`h5dump -A -g "/entry/data" $FIRSTFRAME | grep "DATASPACE  SIMPLE" | sed -e "s/,.*//" | awk '{a+=$5}END{print a}'`
 +
      DATA_RANGE="1 $nframes"
 +
      SPOT_RANGE="1 `echo "scale=0; if (${nframes}<2) 1; if (${nframes}>1) ${nframes}/2"|bc -l`"
 
     fi
 
     fi
 
   fi
 
   fi
 +
  echo DATA_RANGE=$DATA_RANGE
 
   DETECTOR="EIGER MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD= $OVERLOAD"
 
   DETECTOR="EIGER MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD= $OVERLOAD"
 
   QX=`h5dump -d "/entry/instrument/detector/x_pixel_size" $FIRSTFRAME | awk '/\(0\): [0-9]/{print $2*1000}'`
 
   QX=`h5dump -d "/entry/instrument/detector/x_pixel_size" $FIRSTFRAME | awk '/\(0\): [0-9]/{print $2*1000}'`
Line 963: Line 985:  
! however, if the spots from COLSPOT extend to 2A then POSITION could, and if 1.5A POSITION should be refined
 
! however, if the spots from COLSPOT extend to 2A then POSITION could, and if 1.5A POSITION should be refined
 
REFINE(IDXREF)=CELL BEAM ORIENTATION AXIS  ! add POSITION if high resolution, or DETECTOR_DISTANCE inaccurate
 
REFINE(IDXREF)=CELL BEAM ORIENTATION AXIS  ! add POSITION if high resolution, or DETECTOR_DISTANCE inaccurate
REFINE(INTEGRATE)= POSITION BEAM ORIENTATION ! AXIS CELL . If 1.5A or higher it is ok to refine CELL
+
REFINE(INTEGRATE)= POSITION BEAM ORIENTATION ! AXIS CELL . If 1.5A or higher it is ok to refine CELL (unless electron diffraction)
! REFINE(CORRECT)=CELL BEAM ORIENTATION AXIS POSITION ! Default is: refine everything
+
REFINE(CORRECT)= $REFINE_CORRECT
 
   
! parameters specifically for this detector and beamline:
 
! parameters specifically for this detector and beamline:
 
DETECTOR= $DETECTOR
 
DETECTOR= $DETECTOR
Line 980: Line 1,001:  
     if [ -e /usr/local/lib64/dectris-neggia.so ]; then
 
     if [ -e /usr/local/lib64/dectris-neggia.so ]; then
 
       echo LIB=/usr/local/lib64/dectris-neggia.so >> XDS.INP
 
       echo LIB=/usr/local/lib64/dectris-neggia.so >> XDS.INP
       echo LIB= line was written to XDS.INP
+
       echo LIB= line was written to XDS.INP . For Apple ARM64 processors, you must modify the name.
 
     else
 
     else
 
       echo !LIB=/usr/local/lib64/dectris-neggia.so >> XDS.INP
 
       echo !LIB=/usr/local/lib64/dectris-neggia.so >> XDS.INP
Line 1,186: Line 1,207:  
fi
 
fi
 
echo XDS.INP is ready for use. The file has only the most important keywords.
 
echo XDS.INP is ready for use. The file has only the most important keywords.
echo Full documentation, including complete detector templates, is at
+
echo Full documentation, including complete detector templates, at xds.mr.mpg.de .
echo http://www.mpimf-heidelberg.mpg.de/~kabsch/xds . More documentation in XDSwiki
+
echo More documentation in strucbio.biologie.uni-konstanz.de/xdswiki/index.php .
echo After running xds, inspect, using XDS-Viewer, at least the beamstop mask in
+
echo After running xds, inspect at least the agreement of predicted and observed  
echo BKGPIX.cbf, and the agreement of predicted and observed spots in FRAME.cbf!
+
echo spots in FRAME.cbf!
 
rm -f tmp1 tmp2
 
rm -f tmp1 tmp2
  
2,521

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Navigation menu