AnalyseMovement.csh

From Relion
Jump to navigation Jump to search
#!/usr/bin/env csh
#
# This scripts produces a new directory with .offsets files for each micrograph. 
# The .offsets files contain 50-fold enhanced movement tracks, which  may be visualised using xmgrace.
# 
set starfile=$1 
set star_noext=`echo $starfile | sed 's|.star||'`
#
set ncol = `grep _rln ${starfile} | awk '{i++} END {print i}'`
set col_rot = `grep "rlnAngleRot #" $starfile | awk -F"#" '{print $NF}'`
set col_tilt = `grep "rlnAngleTilt #" $starfile | awk -F"#" '{print $NF}'`
set col_rot_ori = `grep "rlnAngleRotPrior #" $starfile | awk -F"#" '{print $NF}'`
set col_tilt_ori = `grep "rlnAngleTiltPrior #" $starfile | awk -F"#" '{print $NF}'`
set col_psi = `grep "rlnAnglePsi #" $starfile | awk -F"#" '{print $NF}'`
set col_xoff = `grep "rlnOriginX #" $starfile | awk -F"#" '{print $NF}'`
set col_yoff = `grep "rlnOriginY #" $starfile | awk -F"#" '{print $NF}'`
set col_xoff_ori = `grep rlnOriginXPrior $starfile | awk -F"#" '{print $NF}'`
set col_yoff_ori = `grep rlnOriginYPrior $starfile | awk -F"#" '{print $NF}'`
set col_xcoor = `grep rlnCoordinateX $starfile | awk -F"#" '{print $NF}'`
set col_ycoor = `grep rlnCoordinateY $starfile | awk -F"#" '{print $NF}'`
set col_micn = `grep rlnMicrographName $starfile | awk -F"#" '{print $NF}'`
set col_oriname = `grep rlnOriginalParticleName $starfile | awk -F"#" '{print $NF}'`
#
mkdir -p offsets_${star_noext}
#
foreach mic (`grep mrc $starfile | awk -v"col_micn=${col_micn}" '{print $col_micn}'| awk -F"/" '{print $NF}' | sort | uniq | awk '{print "/"$1}'`)
 grep $mic ${starfile} | awk -v"col_oriname=${col_oriname}" -v"col_micn=${col_micn}" '{print $col_oriname, $col_micn, $0}' | sort  | awk -v"col_xoff=${col_xoff}" -v"col_yoff=${col_yoff}" -v"col_xcoor=${col_xcoor}" -v"col_ycoor=${col_ycoor}"  -v"col_xoff_ori=${col_xoff_ori}" -v"col_yoff_ori=${col_yoff_ori}" 'BEGIN {col_xoff+=2; col_yoff+=2; col_xoff_ori+=2; col_yoff_ori+=2; col_xcoor+=2; col_ycoor+=2; aa="a"} { if (aa!=$1) {print " "; i=0} else {i++}; if (i==0) {xp=$col_xoff_ori; yp=$col_yoff_ori;}; xo=$col_xoff; yo=$col_yoff; xc=$col_xcoor; yc=$col_ycoor; xxc=xc+50*(xo-xp); yyc=yc+50*(yo-yp); print xxc, yyc, (xo-xp), (yo-yp), $2; aa=$1}' > offsets_${star_noext}/${mic}.offsets
end