2,718
edits
(fixes; start script with <pre> and end with </pre> for easier cut-and-paste) |
(fix QX scaling in case of mccd_xdsparams.pl usage; add code of mccd_xdsparams.pl) |
||
Line 91: | Line 91: | ||
# find QX, ORGX and ORGY: | # find QX, ORGX and ORGY: | ||
QX=`grep Pixelsizex tmp2 | sed s/Pixelsizex=//` | QX=`grep Pixelsizex tmp2 | sed s/Pixelsizex=//` | ||
QX=`echo "scale=10; $QX/1000000" |bc -l ` | |||
NX=`grep pixelsin1line tmp2 | sed s/#pixelsin1line=//` | NX=`grep pixelsin1line tmp2 | sed s/#pixelsin1line=//` | ||
Line 124: | Line 126: | ||
ORGXINT=`echo "scale=0; $ORGX/1" | bc -l ` | ORGXINT=`echo "scale=0; $ORGX/1" | bc -l ` | ||
if [ $ORGXINT -lt $NXBYFOUR ]; then | if [ $ORGXINT -lt $NXBYFOUR ]; then | ||
# echo ORGX ORGY QX = $ORGX $ORGY $QX | # echo ORGX ORGY QX = $ORGX $ORGY $QX | ||
ORGX=`echo "scale=1; $ORGX/$QX" | bc -l` | ORGX=`echo "scale=1; $ORGX/$QX" | bc -l` | ||
Line 246: | Line 247: | ||
rm tmp1 tmp2 | rm tmp1 tmp2 | ||
</pre> | |||
For MarCCD data, generate_XDS.INP relies on mccd_xdsparams.pl which is below, and should also be in your $PATH . Alternatively, catmar (which can be downloaded from http://www.marresearch.com/download.html) may be used. | |||
<pre> | |||
#!/usr//bin/perl -w | |||
# | |||
# | |||
# Copyright 2004 | |||
# by | |||
# The Board of Trustees of the | |||
# Leland Stanford Junior University | |||
# All rights reserved. | |||
# | |||
# Disclaimer Notice | |||
# | |||
# The items furnished herewith were developed under the sponsorship | |||
# of the U.S. Government. Neither the U.S., nor the U.S. D.O.E., nor the | |||
# Leland Stanford Junior University, nor their employees, makes any war- | |||
# ranty, express or implied, or assumes any liability or responsibility | |||
# for accuracy, completeness or usefulness of any information, apparatus, | |||
# product or process disclosed, or represents that its use will not in- | |||
# fringe privately-owned rights. Mention of any product, its manufactur- | |||
# er, or suppliers shall not, nor is it intended to, imply approval, dis- | |||
# approval, or fitness for any particular use. The U.S. and the Univer- | |||
# sity at all times retain the right to use and disseminate the furnished | |||
# items for any purpose whatsoever. | |||
# | |||
# Permission Notice | |||
# | |||
# Permission is hereby granted, free of charge, to any person obtaining a | |||
# copy of this software and associated documentation files (the "Software"), | |||
# to deal in the Software without restriction, including without limitation | |||
# the rights to use, copy, modify, merge, publish, distribute, sublicense, | |||
# and/or sell copies of the Software, and to permit persons to whom the | |||
# Software is furnished to do so, subject to the following conditions: | |||
# | |||
# The above copyright notice and this permission notice shall be included | |||
# in all copies or substantial portions of the Software. | |||
# | |||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTA- | |||
# BILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO | |||
# EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |||
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |||
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR | |||
# THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
# | |||
# MARCDD image header format | |||
# | |||
# TIFF header 1024 bytes | |||
# Private frame header 3072 bytes | |||
## file/header format parameters 256 bytes | |||
## data statistics 128 bytes | |||
## more statistics 256 bytes | |||
## goniostat parameters 128 bytes | |||
### xtal_to_detector int32 (mm*1000) | |||
### beam_x int32 (pixel*1000) | |||
### beam_y int32 (pixel*1000) | |||
## detector parameters 128 bytes | |||
### detector_type int32 | |||
### pixelsize_x int32 (nanometers | |||
### pixelsize_y int32 (nanometers | |||
##X-ray source parameters 128 bytes | |||
die "ERROR: Missing Argument. \nUsage: $0 [options] <image_filename>\n" unless @ARGV; | |||
while ($_ = $ARGV[0], /^-/) { | |||
shift; | |||
last if /^--$/; | |||
# if (/^-D(.*)/) { $debug = $1 } | |||
if (/^-v/) { $verbose = 1 } | |||
# ... # other switches | |||
} | |||
open ( FILE, '<', $ARGV[0] ) or | |||
die ( "ERROR: Cannot open file" ); | |||
seek ( FILE, 1024+80, 0 ); | |||
read ( FILE , $size_fast, 4 ); | |||
read ( FILE , $size_slow, 4 ); | |||
seek ( FILE, 1024+256+128+256, 0 ); | |||
read ( FILE , $xtal_to_detector, 4 ); | |||
read ( FILE , $beam_x, 4 ); | |||
read ( FILE , $beam_y, 4 ); | |||
seek ( FILE, 1024+256+128+256+16, 0); | |||
read ( FILE , $exp, 4 ); #exp time x 1000 | |||
seek ( FILE, 1024+256+128+256+44, 0); | |||
read ( FILE , $start_phi, 4 ); #start phi x 1000 | |||
seek ( FILE, 1024+256+128+256+76, 0); | |||
read ( FILE , $end_phi, 4 ); #end phi x 1000 | |||
seek ( FILE, 1024+256+128+256+128, 0 ); | |||
read ( FILE , $detector_type, 4 ); | |||
read ( FILE , $pixelsize_x, 4 ); | |||
read ( FILE , $pixelsize_y, 4 ); | |||
seek ( FILE, 1024+256+128+256+128+128+12, 0 ); | |||
read ( FILE , $wavelength, 4 ); #wavelength x 10000 | |||
close ( FILE ); | |||
$size_fast = unpack ('i*' ,$size_fast); | |||
$size_slow = unpack ('i*' ,$size_slow); | |||
$xtal_to_detector =unpack('i*' ,$xtal_to_detector) / 1000; | |||
$detector_type =unpack('i*' ,$detector_type); | |||
$beam_x = unpack ('i*' ,$beam_x) / 1000 ; # pixels | |||
$beam_y = unpack ('i*' ,$beam_y) / 1000 ; # pixels | |||
$beam_xc = $size_fast - $beam_x ; | |||
$beam_yc = $size_fast - $beam_y ; | |||
$pixelsize_x = unpack ('i*' ,$pixelsize_x) / 1000000 ; # mm | |||
$pixelsize_y = unpack ('i*' ,$pixelsize_y) / 1000000 ; # mm | |||
$beam_x_mm = $beam_x * $pixelsize_x ; # mm | |||
$beam_y_mm = $beam_y * $pixelsize_y ; # mm | |||
$exp = unpack ('i*' ,$exp) / 1000 ; #seconds | |||
$start_phi = unpack ('i*' ,$start_phi); #mdeg | |||
$end_phi = unpack ('i*' ,$end_phi); #mdeg | |||
$osc = ($end_phi - $start_phi)/1000; # deg | |||
$wavelength = unpack ('i*' ,$wavelength)/100000 ; #A | |||
if ($verbose) { | |||
print "NX= ${size_fast} NY= ${size_slow} QX= ${pixelsize_x} QY= ${pixelsize_y} \n"; | |||
print "DETECTOR_DISTANCE= ${xtal_to_detector} \n"; | |||
print "ORGX= ${beam_xc} ORGY= ${beam_yc} \n"; | |||
print "OSCILLATION_RANGE= ${osc} \n"; | |||
print "X-RAY_WAVELENGTH= ${wavelength} \n"; | |||
} else { | |||
print "$size_fast,$size_slow", "\n"; | |||
print "$xtal_to_detector", "\n"; | |||
print "$beam_x_mm,$beam_y_mm", "\n"; | |||
print "$pixelsize_x", "\n"; | |||
print "$exp","\n"; | |||
print "$osc","\n"; | |||
print "$wavelength","\n"; | |||
} | |||
exit | |||
</pre> | </pre> |