XDSGUI User tools: Difference between revisions

From XDSwiki
Jump to navigation Jump to search
(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...")
 
No edit summary
Line 1: Line 1:
This page is for sharing useful scripts to use in XDSGUI User tools
This page is for sharing useful scripts to use in XDSGUI User tools


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



Revision as of 17:52, 30 May 2023

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