XDSGUI User tools

Revision as of 17:50, 30 May 2023 by JKrahn (talk | contribs) (Created page with "This page is for sharing useful scripts to use in XDSGUI User tools --- "Update beam center" Read beam center from IDXREF.LP, then adjust location to frame coordinates in case of 2-theta offset Formatted code: <pre> X=$(perl -e ' # Read IDXREF.LP to get refined beam center, save in $x, $y open(F,"<IDXREF.LP"); while(<F>){ if(/BEAM +(\S*\d) +(\S*\d)/){ $x=$1; $y=$2; } # get X,Y beam } # Read XDS.INP to get parameters needed to adjust for horizontal 2-theta offset (ver...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page is for sharing useful scripts to use in XDSGUI User tools

--- "Update beam center" Read beam center from IDXREF.LP, then adjust location to frame coordinates in case of 2-theta offset

Formatted code:

X=$(perl -e '
# Read IDXREF.LP to get refined beam center, save in $x, $y
open(F,"<IDXREF.LP");
while(<F>){
  if(/BEAM +(\S*\d) +(\S*\d)/){ $x=$1; $y=$2; } # get X,Y beam
}
# Read XDS.INP to get parameters needed to adjust for horizontal 2-theta offset (veritcal offsets not supported)
open(F,"<XDS.INP");
while(<F>){
  if(/^[^!]*DETECTOR_DISTANCE= *(\S*\d)/){ $d=$1; } # d = detector distance
  if(/^[^!]*DIRECTION_OF_DETECTOR_X-AXIS= *(\S*\d) +\S*\d +(\S*\d)/){ $x1=$1; $x3=$2; } # x1,x3 = horizontal rotation part of X-axis
  if(/^[^!]*QX= *(\S*\d)/){$qx=$1;} # qx = detector resolition
}
printf "ORGX=%.2f ORGY=%.2f\n",$x-$x3/$x1*$d/$qx, $y;'
) && sed -e 's/^ *\(ORGX=\)/'"$X"' !\1/;' XDS.INP > x && mv -f x XDS.INP

One-liner for use in XDSGUI

X=$(perl -e 'open(F,"<IDXREF.LP");while(<F>){if(/BEAM +(\S*\d) +(\S*\d)/){$x=$1;$y=$2;}}open(F,"<XDS.INP");while(<F>){if(/^[^!]*DETECTOR_DISTANCE= *(\S*\d)/){$d=$1;}if(/^[^!]*DIRECTION_OF_DETECTOR_X-AXIS= *(\S*\d) +\S*\d +(\S*\d)/){$x1=$1;$x3=$2;}if(/^[^!]*QX= *(\S*\d)/){$qx=$1;}}printf "ORGX=%.2f ORGY=%.2f\n",$x-$x3/$x1*$d/$qx,$y;')&& sed -e 's/^ *\(ORGX=\)/'"$X"' !\1/;' XDS.INP>x && mv -f x XDS.INP