「らせん対称をもつ粒子の3次元再構成法2」の版間の差分
提供: Eospedia
(ページの作成:「== らせん対称をもつ粒子の3次元再構成法2 == === 解説 === <pre> .SUFFIXES: .roi .roi2 .roiinfo2 .mrc3d .ds6 \ .pad2 .win .sfl2d .med2d .mrc2d...」) |
(相違点なし)
|
2017年1月8日 (日) 02:52時点における版
らせん対称をもつ粒子の3次元再構成法2
解説
.SUFFIXES: .roi .roi2 .roiinfo2 .mrc3d .ds6 \ .pad2 .win .sfl2d .med2d .mrc2d .pad3d .sfl3d .corinfo \ .3dlist_part .3dlist .3dorglist \ .refined3d .refinedds6 .roiall3dlst SHELL = /bin/bash #Refinement param SOURCE = both2.mrc3d.sfl3d.pad3d SOURCE2 = HelRec1 REFERENCE = both2.mrc3d.sfl3d.pad3d ROI_WIDTH = 128 #pixel BAS=ref2ActoS1 LST=roipre3dlst TAR=$(BAS).$(LST) #Parameter for mrc3Dto2D rXmin = 89 rXmax = 91 rXdel = 1 rYmin = 0# #rXmin,rXmax,rXdel: Used in mrc3Dto2D. rYmax = 359# # rXdel is delta of Angle rYdel = 1# # rYmin,rYmax,rYdel are also same #MODE = YOYS# #Euler mode Y-X-Z #MODE = ZOYS# #Euler mode Z-Y-X MODE = XEYS# #Euler mode X-Y-Z: 1st, Filament axis lap over Y-axis, # 2nd, Rotate filament about filament axis #Parameter for mrcImageAutoRotationCorrelation PADWIDTH_FORDATA = 256# # PADHEIGHT_FORDATA = 256# o "27.3 1.71" | awk 'BEGIN{ } {a=$1; b=$2; c=a/b } END{printf "%f\n",c} # Xmin = 89 Xmax = 91 Xstep = 1 Ymin = 0 Ymax = 359 Ystep = 10 Zmin = 0 Zmax = 1 Zstep = 10 N=5 Repeat_y=27.3 Resolution=1.71 Shift_y=`echo "$(Repeat_y) $(Resolution)" | awk ' {a=$$1; b=$$2; c=a/b; printf "%f\n",c} '` Size_y=`echo "$(Repeat_y) $(Resolution) $(N)" | awk ' {a=$$1; b=$$2; c=$$3; d=a/b*c ; printf "%f\n",d} '` Delta_phi=190 indexFormat="%04d" ##### # #Triming of Noise # ##### CENTERGET: mrcImageCenterGet -i $(SOURCE).mrc3d -o $(SOURCE).mrc3d.centre3d \ -Nx 60 -Ny 60 ##### # # All Process # ##### All:: make 3Dto2D; make FRAGMENTATION; make RS3D; ##### # # make 2D image set of reference # ##### 3Dto2D:: make $(REFERENCE).sfl3d; make $(REFERENCE).pad3d; make $(REFERENCE).mrc2d; ##### # # make 3Dlist # ##### ROISHIFT3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ rm $$BASE.roipre3dlst; \ rm $$BASE.roishift3dlst; \ rm $$BASE/*.roipremaxcorinfo; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; RS3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; ##### # # make 3DR of each filaments # ##### 3DRroi: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roi3d; \ done; 3DRroipre: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3d; \ done; ##### # # make ROI of filaments # ##### FRAGMENTATION: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre;\ make $$BASE.roiinfo;\ make $$BASE.roipreinfo;\ make $$BASE.roilst;\ make $$BASE.roiprelst;\ done; ##### # # make 3DR for all filaments # ##### MARGE: touch $(SOURCE2).roiall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roishift3dlst >> $(SOURCE2).roiall3dlst ; \ done; MARGE2: touch $(SOURCE2).roipreall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roipre3dlst >> $(SOURCE2).roipreall3dlst ; \ done; 3DRECONSTRACTION: mrc2Dto3D -I $(SOURCE2).roiall3dlst -o $(SOURCE2).roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roiallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ 3DR2: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst > $(SOURCE2).roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).roipreall3dlst-fit -o $(SOURCE2).roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ GOOD3DR: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst.gdlst > $(SOURCE2).gd.roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).gd.roipreall3dlst-fit -o $(SOURCE2).gd.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).gd.roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ ########## # # FSC of each filaments # ########## .SUFFIXES: .FSC3d .FSC3d 3DRFSC1: for ii in *-FSC1.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; 3DRFSC2: for ii in *-FSC2.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; #.FSC3d.fsc: # for ii in *-FSC1.FSC3d; \ # do \ # BASE=`basename $$ii .FSClst`; \ # mrcImageCentreGet ; \ # make $$BASE.fsc; \ # done; ######################## # # # Component of 3DR Process # # ######################## ##### # #FRAGMENTATION # ##### .SUFFIXES: .roi .roipre .roiinfo .roipreinfo .roilst .roiprelst .SUFFIXES: .roiroi .roiroishift .roi.roipre: touch $*.roipre mrcImageSolventFlattening -i $*.roi -o $*.sfl2d -sd -0.5 -m 6 mrcImageSmoothing -i $*.sfl2d -o $*.roipre -m 1 -M 1 -r 2 .roi.roiinfo: rm -f $*.roiinfo touch $*.roiinfo XMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$4}' | sed s/,//g`; \ YMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$5}' | sed s/,//g`; \ lx=`echo $$XMAX`; \ ((lx--)); \ Shift=$(Shift_y); echo "ShiftY $$Shift"; \ by=0; \ Size=$(Size_y) ; \ ty=`awk -v Y=$$Size ' BEGIN{print Y - 1}'`; \ ((i=0)); \ flag=1; \ while [ $$flag -eq "1" ] ;\ do \ index=`printf $(indexFormat) $$i`; \ echo "$*-$$index.roiroi Top_y=$$ty Bottom_y=$$by"; \ echo "$*-$$index.roiroi Rect 0.0 $$by $$lx $$by $$lx $$ty 0.0 $$ty" >> $*.roiinfo; \ ((i++));\ ty=`echo $$ty | awk -v d=$$Shift ' {print $$1 + d}'`;\ by=`echo $$by | awk -v d=$$Shift ' {print $$1 + d}'`;\ flag=`awk -v y=$$ty -v ymax=$$YMAX 'BEGIN {if(y<ymax) {print 1} else {print 0 } }'` ;\ done; .roiinfo.roipreinfo: sed -e 's/.roiroi/.roipreroi/' $*.roiinfo > $*.roipreinfo .roiinfo.roilst: awk ' {print $$1}' $*.roiinfo > $*.roilst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roi -I ../$*.roiinfo -m 2 ; cd .. .roipreinfo.roiprelst: awk ' {print $$1}' $*.roipreinfo > $*.roiprelst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roipre -I ../$*.roipreinfo -m 2 ; cd .. ##### # #REFINEMENT:: Intra-Filament # ##### .SUFFIXES: .roiprelst .roilst .roipre3dlst .roi3dlst .roipre3d .roi3d .roipre2d .roi2d .roipremaxcorinfo .roiprepad .roiprecorinfo .SUFFIXES: .roipre3dshrink .roishcounter .roi3dshrink .roishift3dlst .roipre3dlst-fit .roiprelst.roipre3dlst: touch $*.roipre3dlst cd $* ; ln -sf ../Makefile .; \ BASE=`head -n 1 ../$*.roiprelst` ; BASE=`basename $$BASE .roipreroi`; echo $$BASE; \ make $$BASE.roiprepad ; \ make $$BASE.roiprecorinfo; \ i=0; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roiprepad; \ if [ $$i == 0 ] ; \ then \ echo "First Image" ; \ PRE=`basename $$ii .roipreroi`; \ echo "PRE: $$PRE"; \ else \ echo "PRE: $$PRE"; \ Rot2Min=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2-10.01}' $$PRE.roiprecorinfo` ; \ Rot2Max=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2+10.01}' $$PRE.roiprecorinfo` ; \ echo $$Rot2Min $$Rot2Max; \ make Ymin=$$Rot2Min Ymax=$$Rot2Max $$BASE.roiprecorinfo ; \ PRE=`basename $$ii .roipreroi`; \ fi ; \ ((i++)); \ done ; cd .. cd $*; rm -f $*.roipre3dlst; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roipremaxcorinfo; \ sed -e s/$*/$*\\/$*/ $$BASE.roipremaxcorinfo >> ../$*.roipre3dlst ; \ ((i++)); \ done; cd .. .roipre3dlst.roishift3dlst: sed -e 's/.roipreroi/.roiroi/' $*.roipre3dlst > $*.roi3dlst for i in `awk '{print $$1}' $*.roi3dlst`; do \ BASE=`basename $$i .roiroi`; \ DIR=`dirname $$i `; \ mrcImagePad -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroipad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0; \ THETA=`awk '{print -1*$$8}' $$DIR/$$BASE.roipremaxcorinfo`; \ X=`awk '{print -1*$$6}' $$DIR/$$BASE.roipremaxcorinfo`; \ Y=`awk '{print -1*$$7}' $$DIR/$$BASE.roipremaxcorinfo`; \ mrcImageShift -i $$DIR/$$BASE.roiroipad -o $$DIR/$$BASE.roiroishift -x $$X -y $$Y; \ mrcImageRotation -i $$DIR/$$BASE.roiroishift -o $$DIR/$$BASE.roiroirot -a $$THETA -m 2; \ done; sed -e 's/.roiroi/.roiroirot/' $*.roi3dlst > $*.roishift3dlst .roishift3dlst.roi3d: mrc2Dto3D -I $*.roishift3dlst -o $*.roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roicounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3d: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit mrc2Dto3D -I $*.roipre3dlst-fit -o $*.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3dlst-fit: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit .roipre3dlst.roipre3dshrink: sed -e s/roipreroi/roiprefit2-shrink/ $*.roipre3dlst > $*.roipre3dlst-shrink for i in `awk '{print $$1}' $*.roipre3dlst-shrink`; do \ BASE=`basename $$i .roiprefit2-shrink`; \ DIR=`dirname $$i `; \ echo $$DIR/$$BASE; \ mrcImageShrink -i $$DIR/$$BASE.roiprefit2 -o $$DIR/$$BASE.roiprefit2-shrink -S 4; \ done mrc2Dto3D -I $*.roipre3dlst-shrink -o $*.roipre3dshrink \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ #.roi3dlst.roi3dshrink: # sed -e s/roiroi/roiroi-shrink/ $*.roi3dlst > $*.roi3dlst-shrink # for i in `awk '{print $$1}' $*.roi3dlst-shrink`; do \ # BASE=`basename $$i .roiroi-shrink`; \ # DIR=`dirname $$i `; \ # echo $$DIR/$$BASE; \ # mrcImageShrink -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroi-shrink -S 4; \ # done # mrc2Dto3D -I $*.roi3dlst-shrink -o $*.roi3dshrink \ # -InterpolationMode 2 \ # -CounterThreshold 1e-6 \ # -DoubleCounter $*.roishcounter \ # -WeightMode 2 \ # -Double -m 1 ##### # # Angle # #### angleGet: rm $(BAS).anglelst;\ touch $(BAS).anglelst;\ for ii in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 } ' $(TAR)` ; \ do \ SEN=` echo $$ii | sed -e s/":"/" "/g `; \ echo $$SEN | awk ' { print "Name: " $$1 " " "X: " $$3 " " "Y: " $$4 " " "Z: " $$5 } ' >> $(BAS).anglelst; \ done; \ hist: rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ a=` awk ' {a=5; printf "%d",a} '`; \ b=` awk ' {a=0; printf "%d",a} '`; \ while [ $$a -ne "365" ]; do \ for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ do \ i=` awk ' { a=0; printf "%d",a} '`;\ if [ $$ii -lt $$a -a $$ii -ge $$b]; then \ i=` echo $$i | awk ' { a=$$1; b=a+1; printf "%d",b} '`;\ fi; \ done;\ echo $$i >> $(BAS).anglelst.hist;\ a=` echo $$a | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ b=` echo $$b | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ done; \ ##### #hist: # rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ # touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ # Total=` awk ' { a=360; b=5; c=a/b; printf "%d",c} '`; \ # echo $$Total; \ # awk ' { a=$$6; printf "%03d\n",a } ' $(BAS).anglelst | sort | awk ' { print $$1 } ' > $(BAS).anglelst.counter; \ # B=` awk ' {a=5; printf "%d",a} '`; \ # for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ # do \ # if [ $$ii -lt $$B ] ; then \ # ((l++)); \ # else \ # echo $$l >> $(BAS).anglelst.hist; \ # l=` awk ' {a=0; printf "%d",a} '`; \ # while [ $$ii -gt $$B ] ;do \ # C=` echo $$B | awk ' {a=$$1; b=a+5; printf "%d",b} '`; \ # B=` echo $$C `; \ # done; \ # ((l++)); \ # fi; \ # done; \ ##### # # select good image # ##### GODLST=roipreall3dlst selectGood: for ii in *.$(GODLST) ; \ do \ BASE=`basename $$ii .$(GODLST)`; \ echo $$BASE; \ touch $$BASE.$(GODLST).gdlst; \ for i in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 ":" $$6 ":" $$7 ":" $$8 ":" $$9 } ' $$BASE.$(GODLST) ` ; \ do \ SEN=` echo $$i | sed -e s/":"/" "/g `; \ X=` echo $$SEN | awk ' { a=$$6; printf "%d",a} '`; \ Y=` echo $$SEN | awk ' { b=$$7; printf "%d",b} '`; \ echo "X:$$X Y:$$Y"; \ if [ $$X -gt -5 -a $$X -lt 5 -a $$Y -gt -8 -a $$Y -lt 8 ]; then \ echo "$$SEN" >> $$BASE.$(GODLST).gdlst;\ echo $$SEN; \ fi;\ done; \ done; ############################################################ ############################################################ ##### # # FSC # ##### .SUFFIXES: .fsccounter .FSClst .FSC .FSClst-fit .FSC3d .3dorglist .FSClst FSCLST: touch allroipre-FSC1.FSClst; \ touch allroipre-FSC2.FSClst; \ A=0; \ B=0; \ C=0; \ for ii in *.roipre3dlst; \ do \ BASE=`basename $$ii .roipre3dlst `; \ echo $$BASE; \ make $$BASE.3dorglist; \ make $$BASE.FSClst; \ A=`cat allroipre-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ B=`cat allroipre-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ C=`echo "$$A $$B" | awk ' {a=$$1; b=$$2; c=a-b; printf("%d",c)}'`;\ echo allFSC1=$$A allFSC2=$$B 1-2=$$C;\ D=`cat $$BASE-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ E=`cat $$BASE-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ echo $$BASEFSC2=$$D $$BASEFSC=$$E;\ if [ $$C -eq "1" ] ; then \ cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ else \ cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ fi;\ done; #touch COUNTER; cat $$BASE.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC1.FSClst | wc > COUNTER; C3=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC2.FSClst | wc > COUNTER; C4=`awk '{print $$1;}' COUNTER`; \ #C34=`echo "$$C3 $$C4" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ #C342=`echo "$$C34" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #3C11=`echo "$$C1" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #if [[ $$C1 == 0 || $$C342 == 0 ]] ; \ #then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ #else \ # touch COUNTER; cat $$BASE-FSC1.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ # touch COUNTER; cat $$BASE-FSC2.FSClst | wc > COUNTER; C2=`awk '{print $$1;}' COUNTER`; \ # C12=`echo "$$C1 $$C2" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ # if [ ($$C12 > 0) && ($$C34 < 0)) || (($$C12 < 0) && ($$34 > 0)) ] ; \ # then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ # else \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ # fi ; \ #fi ; \ #done; .roipre3dlst.3dorglist: awk '{ print $$9 " " $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 }' \ $*.roipre3dlst | \ sort -r | \ awk '{ print $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9 " " $$1 }' \ > $*.3dorglist .3dorglist.FSClst: awk 'BEGIN { i=0 } { i=i+1; if( i%2==1 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC1.FSClst awk 'BEGIN { i=0 } { i=i+1; if( i%2==0 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC2.FSClst .FSClst.FSC3d: sed -e s/roipreroi/roiprefit2/ $*.FSClst > $*.FSClst-fit mrc2Dto3D -I $*.FSClst-fit -o $*.FSC3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.fsccounter \ -WeightMode 2 \ -Double -m 1 .FSC3d.fsc: mrcImageFourierShellCorrelation -i1 $*.FSC3d -i2 $*.FSC3d -d 0.005 > $*.fsc ##### # # Projection # ##### .SUFFIXES: .roishift3dlst .roi3d.roi2d: mrc3Dto2D -i $*.roi3d -o $*.roi2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 .roipre3d.roipre2d: mrc3Dto2D -i $*.roipre3d -o $*.roipre2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 ##### # # Subroutines for intra-refinement # ##### .SUFFIXES: .roipreroi .roiprepad .roiprecorinfo .roipremaxcorinfo .roipreroi.roiprepad: touch $*.roiprepad mrcImageWindowing -i $*.roipreroi -o $*.roiprewin -m 16 mrcImagePad -i $*.roiprewin -o $*.roiprepad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 .roiprepad.roiprecorinfo: mrcImageAutoRotationCorrelation -i $*.roiprepad \ -r ../$(SOURCE).mrc2d -StackOrder 1 -RefineMode 1 \ -O $*.roiprecorinfo -fit $*.roiprefit -fit2 $*.roiprefit2 \ -nRot1Area $(Xmin) $(Xmax) $(Xstep) -nRot1 3 -dRot1 1 -startRot1 89 \ -nRot2Area $(Ymin) $(Ymax) $(Ystep) -nRot2 360 -dRot2 1 -startRot2 0 \ -nRot3Area $(Zmin) $(Zmax) $(Zstep) -nRot3 1 -dRot3 1 -startRot3 0 \ -range -0.5 0.5 -n 36 \ -s -5 -8 5 8 \ -Iter 2 -m 2 2> $*.roiprecorinfo.err .roiprecorinfo.roipremaxcorinfo: touch $*.roipremaxcorinfo; PARA=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot1=$$3; Rot2=$$4; Rot3=0; x=$$11; y=$$12; theta=$$9;}} END { print Rot1 " " Rot2 " " Rot3 " " x " " y " " theta " " max;}' $*.roiprecorinfo`;\ echo "$*.roipreroi $(MODE) $$PARA" > $*.roipremaxcorinfo ##### # # Reprojection # ##### .win.pad2: mrcImageCenterGet -i $*.win -o $*.win.roiget mrcImagePad -i $*.win.roiget -o $*.win.pad2 \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 #-m 2 -V 0 .mrc3d.sfl3d: mrcImageSolventFlattening -i $*.mrc3d -o $*.sfl3d -m 1 -rmax 163.2 -sd 1 .sfl3d.pad3d: mrcImageCenterGet -i $*.sfl3d -o $*.sfl3dcen -Nz $(Size_y) mrcImage3DPad -i $*.sfl3dcen -o $*.pad3d -Nx 256 -Ny 256 -Nz 256 -M 0 -r 92 # -Floating .pad3d.mrc2d: mrc3Dto2D -i $*.pad3d -o $*.mrc2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 $(rXmin) $(rXmax) $(rXdel) \ -Rot2 $(rYmin) $(rYmax) $(rYdel) \ -Rot3 0 0 5 -m 1 ##### # # etc... # ##### DispROIs:: for i in $(ROI) ;\ do \ echo $$i ; \ Display2 -i $$i -Zoom -0.3 -geometry 786x786+0+0 ; \ done BU:: if [ ! -d BackUp ] ; then mkdir BackUp; fi B=`date +"%Y%m%d%H%M"`;\ C="BackUp/Makefile"$$B;\ cp Makefile $$C;
Makefile
makefileの例を示しています。
.SUFFIXES: .roi .roi2 .roiinfo2 .mrc3d .ds6 \ .pad2 .win .sfl2d .med2d .mrc2d .pad3d .sfl3d .corinfo \ .3dlist_part .3dlist .3dorglist \ .refined3d .refinedds6 .roiall3dlst SHELL = /bin/bash #Refinement param SOURCE = both2.mrc3d.sfl3d.pad3d SOURCE2 = HelRec1 REFERENCE = both2.mrc3d.sfl3d.pad3d ROI_WIDTH = 128 #pixel BAS=ref2ActoS1 LST=roipre3dlst TAR=$(BAS).$(LST) #Parameter for mrc3Dto2D rXmin = 89 rXmax = 91 rXdel = 1 rYmin = 0# #rXmin,rXmax,rXdel: Used in mrc3Dto2D. rYmax = 359# # rXdel is delta of Angle rYdel = 1# # rYmin,rYmax,rYdel are also same #MODE = YOYS# #Euler mode Y-X-Z #MODE = ZOYS# #Euler mode Z-Y-X MODE = XEYS# #Euler mode X-Y-Z: 1st, Filament axis lap over Y-axis, # 2nd, Rotate filament about filament axis #Parameter for mrcImageAutoRotationCorrelation PADWIDTH_FORDATA = 256# # PADHEIGHT_FORDATA = 256# o "27.3 1.71" | awk 'BEGIN{ } {a=$1; b=$2; c=a/b } END{printf "%f\n",c} # Xmin = 89 Xmax = 91 Xstep = 1 Ymin = 0 Ymax = 359 Ystep = 10 Zmin = 0 Zmax = 1 Zstep = 10 N=5 Repeat_y=27.3 Resolution=1.71 Shift_y=`echo "$(Repeat_y) $(Resolution)" | awk ' {a=$$1; b=$$2; c=a/b; printf "%f\n",c} '` Size_y=`echo "$(Repeat_y) $(Resolution) $(N)" | awk ' {a=$$1; b=$$2; c=$$3; d=a/b*c ; printf "%f\n",d} '` Delta_phi=190 indexFormat="%04d" ##### # #Triming of Noise # ##### CENTERGET: mrcImageCenterGet -i $(SOURCE).mrc3d -o $(SOURCE).mrc3d.centre3d \ -Nx 60 -Ny 60 ##### # # All Process # ##### All:: make 3Dto2D; make FRAGMENTATION; make RS3D; ##### # # make 2D image set of reference # ##### 3Dto2D:: make $(REFERENCE).sfl3d; make $(REFERENCE).pad3d; make $(REFERENCE).mrc2d; ##### # # make 3Dlist # ##### ROISHIFT3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ rm $$BASE.roipre3dlst; \ rm $$BASE.roishift3dlst; \ rm $$BASE/*.roipremaxcorinfo; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; RS3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; ##### # # make 3DR of each filaments # ##### 3DRroi: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roi3d; \ done; 3DRroipre: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3d; \ done; ##### # # make ROI of filaments # ##### FRAGMENTATION: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre;\ make $$BASE.roiinfo;\ make $$BASE.roipreinfo;\ make $$BASE.roilst;\ make $$BASE.roiprelst;\ done; ##### # # make 3DR for all filaments # ##### MARGE: touch $(SOURCE2).roiall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roishift3dlst >> $(SOURCE2).roiall3dlst ; \ done; MARGE2: touch $(SOURCE2).roipreall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roipre3dlst >> $(SOURCE2).roipreall3dlst ; \ done; 3DRECONSTRACTION: mrc2Dto3D -I $(SOURCE2).roiall3dlst -o $(SOURCE2).roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roiallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ 3DR2: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst > $(SOURCE2).roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).roipreall3dlst-fit -o $(SOURCE2).roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ GOOD3DR: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst.gdlst > $(SOURCE2).gd.roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).gd.roipreall3dlst-fit -o $(SOURCE2).gd.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).gd.roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ ########## # # FSC of each filaments # ########## .SUFFIXES: .FSC3d .FSC3d 3DRFSC1: for ii in *-FSC1.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; 3DRFSC2: for ii in *-FSC2.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; #.FSC3d.fsc: # for ii in *-FSC1.FSC3d; \ # do \ # BASE=`basename $$ii .FSClst`; \ # mrcImageCentreGet ; \ # make $$BASE.fsc; \ # done; ######################## # # # Component of 3DR Process # # ######################## ##### # #FRAGMENTATION # ##### .SUFFIXES: .roi .roipre .roiinfo .roipreinfo .roilst .roiprelst .SUFFIXES: .roiroi .roiroishift .roi.roipre: touch $*.roipre mrcImageSolventFlattening -i $*.roi -o $*.sfl2d -sd -0.5 -m 6 mrcImageSmoothing -i $*.sfl2d -o $*.roipre -m 1 -M 1 -r 2 .roi.roiinfo: rm -f $*.roiinfo touch $*.roiinfo XMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$4}' | sed s/,//g`; \ YMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$5}' | sed s/,//g`; \ lx=`echo $$XMAX`; \ ((lx--)); \ Shift=$(Shift_y); echo "ShiftY $$Shift"; \ by=0; \ Size=$(Size_y) ; \ ty=`awk -v Y=$$Size ' BEGIN{print Y - 1}'`; \ ((i=0)); \ flag=1; \ while [ $$flag -eq "1" ] ;\ do \ index=`printf $(indexFormat) $$i`; \ echo "$*-$$index.roiroi Top_y=$$ty Bottom_y=$$by"; \ echo "$*-$$index.roiroi Rect 0.0 $$by $$lx $$by $$lx $$ty 0.0 $$ty" >> $*.roiinfo; \ ((i++));\ ty=`echo $$ty | awk -v d=$$Shift ' {print $$1 + d}'`;\ by=`echo $$by | awk -v d=$$Shift ' {print $$1 + d}'`;\ flag=`awk -v y=$$ty -v ymax=$$YMAX 'BEGIN {if(y<ymax) {print 1} else {print 0 } }'` ;\ done; .roiinfo.roipreinfo: sed -e 's/.roiroi/.roipreroi/' $*.roiinfo > $*.roipreinfo .roiinfo.roilst: awk ' {print $$1}' $*.roiinfo > $*.roilst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roi -I ../$*.roiinfo -m 2 ; cd .. .roipreinfo.roiprelst: awk ' {print $$1}' $*.roipreinfo > $*.roiprelst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roipre -I ../$*.roipreinfo -m 2 ; cd .. ##### # #REFINEMENT:: Intra-Filament # ##### .SUFFIXES: .roiprelst .roilst .roipre3dlst .roi3dlst .roipre3d .roi3d .roipre2d .roi2d .roipremaxcorinfo .roiprepad .roiprecorinfo .SUFFIXES: .roipre3dshrink .roishcounter .roi3dshrink .roishift3dlst .roipre3dlst-fit .roiprelst.roipre3dlst: touch $*.roipre3dlst cd $* ; ln -sf ../Makefile .; \ BASE=`head -n 1 ../$*.roiprelst` ; BASE=`basename $$BASE .roipreroi`; echo $$BASE; \ make $$BASE.roiprepad ; \ make $$BASE.roiprecorinfo; \ i=0; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roiprepad; \ if [ $$i == 0 ] ; \ then \ echo "First Image" ; \ PRE=`basename $$ii .roipreroi`; \ echo "PRE: $$PRE"; \ else \ echo "PRE: $$PRE"; \ Rot2Min=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2-10.01}' $$PRE.roiprecorinfo` ; \ Rot2Max=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2+10.01}' $$PRE.roiprecorinfo` ; \ echo $$Rot2Min $$Rot2Max; \ make Ymin=$$Rot2Min Ymax=$$Rot2Max $$BASE.roiprecorinfo ; \ PRE=`basename $$ii .roipreroi`; \ fi ; \ ((i++)); \ done ; cd .. cd $*; rm -f $*.roipre3dlst; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roipremaxcorinfo; \ sed -e s/$*/$*\\/$*/ $$BASE.roipremaxcorinfo >> ../$*.roipre3dlst ; \ ((i++)); \ done; cd .. .roipre3dlst.roishift3dlst: sed -e 's/.roipreroi/.roiroi/' $*.roipre3dlst > $*.roi3dlst for i in `awk '{print $$1}' $*.roi3dlst`; do \ BASE=`basename $$i .roiroi`; \ DIR=`dirname $$i `; \ mrcImagePad -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroipad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0; \ THETA=`awk '{print -1*$$8}' $$DIR/$$BASE.roipremaxcorinfo`; \ X=`awk '{print -1*$$6}' $$DIR/$$BASE.roipremaxcorinfo`; \ Y=`awk '{print -1*$$7}' $$DIR/$$BASE.roipremaxcorinfo`; \ mrcImageShift -i $$DIR/$$BASE.roiroipad -o $$DIR/$$BASE.roiroishift -x $$X -y $$Y; \ mrcImageRotation -i $$DIR/$$BASE.roiroishift -o $$DIR/$$BASE.roiroirot -a $$THETA -m 2; \ done; sed -e 's/.roiroi/.roiroirot/' $*.roi3dlst > $*.roishift3dlst .roishift3dlst.roi3d: mrc2Dto3D -I $*.roishift3dlst -o $*.roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roicounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3d: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit mrc2Dto3D -I $*.roipre3dlst-fit -o $*.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3dlst-fit: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit .roipre3dlst.roipre3dshrink: sed -e s/roipreroi/roiprefit2-shrink/ $*.roipre3dlst > $*.roipre3dlst-shrink for i in `awk '{print $$1}' $*.roipre3dlst-shrink`; do \ BASE=`basename $$i .roiprefit2-shrink`; \ DIR=`dirname $$i `; \ echo $$DIR/$$BASE; \ mrcImageShrink -i $$DIR/$$BASE.roiprefit2 -o $$DIR/$$BASE.roiprefit2-shrink -S 4; \ done mrc2Dto3D -I $*.roipre3dlst-shrink -o $*.roipre3dshrink \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ #.roi3dlst.roi3dshrink: # sed -e s/roiroi/roiroi-shrink/ $*.roi3dlst > $*.roi3dlst-shrink # for i in `awk '{print $$1}' $*.roi3dlst-shrink`; do \ # BASE=`basename $$i .roiroi-shrink`; \ # DIR=`dirname $$i `; \ # echo $$DIR/$$BASE; \ # mrcImageShrink -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroi-shrink -S 4; \ # done # mrc2Dto3D -I $*.roi3dlst-shrink -o $*.roi3dshrink \ # -InterpolationMode 2 \ # -CounterThreshold 1e-6 \ # -DoubleCounter $*.roishcounter \ # -WeightMode 2 \ # -Double -m 1 ##### # # Angle # #### angleGet: rm $(BAS).anglelst;\ touch $(BAS).anglelst;\ for ii in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 } ' $(TAR)` ; \ do \ SEN=` echo $$ii | sed -e s/":"/" "/g `; \ echo $$SEN | awk ' { print "Name: " $$1 " " "X: " $$3 " " "Y: " $$4 " " "Z: " $$5 } ' >> $(BAS).anglelst; \ done; \ hist: rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ a=` awk ' {a=5; printf "%d",a} '`; \ b=` awk ' {a=0; printf "%d",a} '`; \ while [ $$a -ne "365" ]; do \ for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ do \ i=` awk ' { a=0; printf "%d",a} '`;\ if [ $$ii -lt $$a -a $$ii -ge $$b]; then \ i=` echo $$i | awk ' { a=$$1; b=a+1; printf "%d",b} '`;\ fi; \ done;\ echo $$i >> $(BAS).anglelst.hist;\ a=` echo $$a | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ b=` echo $$b | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ done; \ ##### #hist: # rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ # touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ # Total=` awk ' { a=360; b=5; c=a/b; printf "%d",c} '`; \ # echo $$Total; \ # awk ' { a=$$6; printf "%03d\n",a } ' $(BAS).anglelst | sort | awk ' { print $$1 } ' > $(BAS).anglelst.counter; \ # B=` awk ' {a=5; printf "%d",a} '`; \ # for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ # do \ # if [ $$ii -lt $$B ] ; then \ # ((l++)); \ # else \ # echo $$l >> $(BAS).anglelst.hist; \ # l=` awk ' {a=0; printf "%d",a} '`; \ # while [ $$ii -gt $$B ] ;do \ # C=` echo $$B | awk ' {a=$$1; b=a+5; printf "%d",b} '`; \ # B=` echo $$C `; \ # done; \ # ((l++)); \ # fi; \ # done; \ ##### # # select good image # ##### GODLST=roipreall3dlst selectGood: for ii in *.$(GODLST) ; \ do \ BASE=`basename $$ii .$(GODLST)`; \ echo $$BASE; \ touch $$BASE.$(GODLST).gdlst; \ for i in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 ":" $$6 ":" $$7 ":" $$8 ":" $$9 } ' $$BASE.$(GODLST) ` ; \ do \ SEN=` echo $$i | sed -e s/":"/" "/g `; \ X=` echo $$SEN | awk ' { a=$$6; printf "%d",a} '`; \ Y=` echo $$SEN | awk ' { b=$$7; printf "%d",b} '`; \ echo "X:$$X Y:$$Y"; \ if [ $$X -gt -5 -a $$X -lt 5 -a $$Y -gt -8 -a $$Y -lt 8 ]; then \ echo "$$SEN" >> $$BASE.$(GODLST).gdlst;\ echo $$SEN; \ fi;\ done; \ done; ############################################################ ############################################################ ##### # # FSC # ##### .SUFFIXES: .fsccounter .FSClst .FSC .FSClst-fit .FSC3d .3dorglist .FSClst FSCLST: touch allroipre-FSC1.FSClst; \ touch allroipre-FSC2.FSClst; \ A=0; \ B=0; \ C=0; \ for ii in *.roipre3dlst; \ do \ BASE=`basename $$ii .roipre3dlst `; \ echo $$BASE; \ make $$BASE.3dorglist; \ make $$BASE.FSClst; \ A=`cat allroipre-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ B=`cat allroipre-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ C=`echo "$$A $$B" | awk ' {a=$$1; b=$$2; c=a-b; printf("%d",c)}'`;\ echo allFSC1=$$A allFSC2=$$B 1-2=$$C;\ D=`cat $$BASE-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ E=`cat $$BASE-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ echo $$BASEFSC2=$$D $$BASEFSC=$$E;\ if [ $$C -eq "1" ] ; then \ cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ else \ cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ fi;\ done; #touch COUNTER; cat $$BASE.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC1.FSClst | wc > COUNTER; C3=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC2.FSClst | wc > COUNTER; C4=`awk '{print $$1;}' COUNTER`; \ #C34=`echo "$$C3 $$C4" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ #C342=`echo "$$C34" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #3C11=`echo "$$C1" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #if [[ $$C1 == 0 || $$C342 == 0 ]] ; \ #then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ #else \ # touch COUNTER; cat $$BASE-FSC1.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ # touch COUNTER; cat $$BASE-FSC2.FSClst | wc > COUNTER; C2=`awk '{print $$1;}' COUNTER`; \ # C12=`echo "$$C1 $$C2" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ # if [ ($$C12 > 0) && ($$C34 < 0)) || (($$C12 < 0) && ($$34 > 0)) ] ; \ # then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ # else \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ # fi ; \ #fi ; \ #done; .roipre3dlst.3dorglist: awk '{ print $$9 " " $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 }' \ $*.roipre3dlst | \ sort -r | \ awk '{ print $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9 " " $$1 }' \ > $*.3dorglist .3dorglist.FSClst: awk 'BEGIN { i=0 } { i=i+1; if( i%2==1 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC1.FSClst awk 'BEGIN { i=0 } { i=i+1; if( i%2==0 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC2.FSClst .FSClst.FSC3d: sed -e s/roipreroi/roiprefit2/ $*.FSClst > $*.FSClst-fit mrc2Dto3D -I $*.FSClst-fit -o $*.FSC3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.fsccounter \ -WeightMode 2 \ -Double -m 1 .FSC3d.fsc: mrcImageFourierShellCorrelation -i1 $*.FSC3d -i2 $*.FSC3d -d 0.005 > $*.fsc ##### # # Projection # ##### .SUFFIXES: .roishift3dlst .roi3d.roi2d: mrc3Dto2D -i $*.roi3d -o $*.roi2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 .roipre3d.roipre2d: mrc3Dto2D -i $*.roipre3d -o $*.roipre2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 ##### # # Subroutines for intra-refinement # ##### .SUFFIXES: .roipreroi .roiprepad .roiprecorinfo .roipremaxcorinfo .roipreroi.roiprepad: touch $*.roiprepad mrcImageWindowing -i $*.roipreroi -o $*.roiprewin -m 16 mrcImagePad -i $*.roiprewin -o $*.roiprepad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 .roiprepad.roiprecorinfo: mrcImageAutoRotationCorrelation -i $*.roiprepad \ -r ../$(SOURCE).mrc2d -StackOrder 1 -RefineMode 1 \ -O $*.roiprecorinfo -fit $*.roiprefit -fit2 $*.roiprefit2 \ -nRot1Area $(Xmin) $(Xmax) $(Xstep) -nRot1 3 -dRot1 1 -startRot1 89 \ -nRot2Area $(Ymin) $(Ymax) $(Ystep) -nRot2 360 -dRot2 1 -startRot2 0 \ -nRot3Area $(Zmin) $(Zmax) $(Zstep) -nRot3 1 -dRot3 1 -startRot3 0 \ -range -0.5 0.5 -n 36 \ -s -5 -8 5 8 \ -Iter 2 -m 2 2> $*.roiprecorinfo.err .roiprecorinfo.roipremaxcorinfo: touch $*.roipremaxcorinfo; PARA=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot1=$$3; Rot2=$$4; Rot3=0; x=$$11; y=$$12; theta=$$9;}} END { print Rot1 " " Rot2 " " Rot3 " " x " " y " " theta " " max;}' $*.roiprecorinfo`;\ echo "$*.roipreroi $(MODE) $$PARA" > $*.roipremaxcorinfo ##### # # Reprojection # ##### .win.pad2: mrcImageCenterGet -i $*.win -o $*.win.roiget mrcImagePad -i $*.win.roiget -o $*.win.pad2 \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 #-m 2 -V 0 .mrc3d.sfl3d: mrcImageSolventFlattening -i $*.mrc3d -o $*.sfl3d -m 1 -rmax 163.2 -sd 1 .sfl3d.pad3d: mrcImageCenterGet -i $*.sfl3d -o $*.sfl3dcen -Nz $(Size_y) mrcImage3DPad -i $*.sfl3dcen -o $*.pad3d -Nx 256 -Ny 256 -Nz 256 -M 0 -r 92 # -Floating .pad3d.mrc2d: mrc3Dto2D -i $*.pad3d -o $*.mrc2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 $(rXmin) $(rXmax) $(rXdel) \ -Rot2 $(rYmin) $(rYmax) $(rYdel) \ -Rot3 0 0 5 -m 1 ##### # # etc... # ##### DispROIs:: for i in $(ROI) ;\ do \ echo $$i ; \ Display2 -i $$i -Zoom -0.3 -geometry 786x786+0+0 ; \ done BU:: if [ ! -d BackUp ] ; then mkdir BackUp; fi B=`date +"%Y%m%d%H%M"`;\ C="BackUp/Makefile"$$B;\ cp Makefile $$C;
.SUFFIXES: .roi .roi2 .roiinfo2 .mrc3d .ds6 \ .pad2 .win .sfl2d .med2d .mrc2d .pad3d .sfl3d .corinfo \ .3dlist_part .3dlist .3dorglist \ .refined3d .refinedds6 .roiall3dlst SHELL = /bin/bash #Refinement param SOURCE = both2.mrc3d.sfl3d.pad3d SOURCE2 = HelRec1 REFERENCE = both2.mrc3d.sfl3d.pad3d ROI_WIDTH = 128 #pixel BAS=ref2ActoS1 LST=roipre3dlst TAR=$(BAS).$(LST) #Parameter for mrc3Dto2D rXmin = 89 rXmax = 91 rXdel = 1 rYmin = 0# #rXmin,rXmax,rXdel: Used in mrc3Dto2D. rYmax = 359# # rXdel is delta of Angle rYdel = 1# # rYmin,rYmax,rYdel are also same #MODE = YOYS# #Euler mode Y-X-Z #MODE = ZOYS# #Euler mode Z-Y-X MODE = XEYS# #Euler mode X-Y-Z: 1st, Filament axis lap over Y-axis, # 2nd, Rotate filament about filament axis #Parameter for mrcImageAutoRotationCorrelation PADWIDTH_FORDATA = 256# # PADHEIGHT_FORDATA = 256# o "27.3 1.71" | awk 'BEGIN{ } {a=$1; b=$2; c=a/b } END{printf "%f\n",c} # Xmin = 89 Xmax = 91 Xstep = 1 Ymin = 0 Ymax = 359 Ystep = 10 Zmin = 0 Zmax = 1 Zstep = 10 N=5 Repeat_y=27.3 Resolution=1.71 Shift_y=`echo "$(Repeat_y) $(Resolution)" | awk ' {a=$$1; b=$$2; c=a/b; printf "%f\n",c} '` Size_y=`echo "$(Repeat_y) $(Resolution) $(N)" | awk ' {a=$$1; b=$$2; c=$$3; d=a/b*c ; printf "%f\n",d} '` Delta_phi=190 indexFormat="%04d" ##### # #Triming of Noise # ##### CENTERGET: mrcImageCenterGet -i $(SOURCE).mrc3d -o $(SOURCE).mrc3d.centre3d \ -Nx 60 -Ny 60 ##### # # All Process # ##### All:: make 3Dto2D; make FRAGMENTATION; make RS3D; ##### # # make 2D image set of reference # ##### 3Dto2D:: make $(REFERENCE).sfl3d; make $(REFERENCE).pad3d; make $(REFERENCE).mrc2d; ##### # # make 3Dlist # ##### ROISHIFT3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ rm $$BASE.roipre3dlst; \ rm $$BASE.roishift3dlst; \ rm $$BASE/*.roipremaxcorinfo; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; RS3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; ##### # # make 3DR of each filaments # ##### 3DRroi: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roi3d; \ done; 3DRroipre: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3d; \ done; ##### # # make ROI of filaments # ##### FRAGMENTATION: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre;\ make $$BASE.roiinfo;\ make $$BASE.roipreinfo;\ make $$BASE.roilst;\ make $$BASE.roiprelst;\ done; ##### # # make 3DR for all filaments # ##### MARGE: touch $(SOURCE2).roiall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roishift3dlst >> $(SOURCE2).roiall3dlst ; \ done; MARGE2: touch $(SOURCE2).roipreall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roipre3dlst >> $(SOURCE2).roipreall3dlst ; \ done; 3DRECONSTRACTION: mrc2Dto3D -I $(SOURCE2).roiall3dlst -o $(SOURCE2).roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roiallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ 3DR2: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst > $(SOURCE2).roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).roipreall3dlst-fit -o $(SOURCE2).roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ GOOD3DR: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst.gdlst > $(SOURCE2).gd.roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).gd.roipreall3dlst-fit -o $(SOURCE2).gd.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).gd.roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ ########## # # FSC of each filaments # ########## .SUFFIXES: .FSC3d .FSC3d 3DRFSC1: for ii in *-FSC1.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; 3DRFSC2: for ii in *-FSC2.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; #.FSC3d.fsc: # for ii in *-FSC1.FSC3d; \ # do \ # BASE=`basename $$ii .FSClst`; \ # mrcImageCentreGet ; \ # make $$BASE.fsc; \ # done; ######################## # # # Component of 3DR Process # # ######################## ##### # #FRAGMENTATION # ##### .SUFFIXES: .roi .roipre .roiinfo .roipreinfo .roilst .roiprelst .SUFFIXES: .roiroi .roiroishift .roi.roipre: touch $*.roipre mrcImageSolventFlattening -i $*.roi -o $*.sfl2d -sd -0.5 -m 6 mrcImageSmoothing -i $*.sfl2d -o $*.roipre -m 1 -M 1 -r 2 .roi.roiinfo: rm -f $*.roiinfo touch $*.roiinfo XMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$4}' | sed s/,//g`; \ YMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$5}' | sed s/,//g`; \ lx=`echo $$XMAX`; \ ((lx--)); \ Shift=$(Shift_y); echo "ShiftY $$Shift"; \ by=0; \ Size=$(Size_y) ; \ ty=`awk -v Y=$$Size ' BEGIN{print Y - 1}'`; \ ((i=0)); \ flag=1; \ while [ $$flag -eq "1" ] ;\ do \ index=`printf $(indexFormat) $$i`; \ echo "$*-$$index.roiroi Top_y=$$ty Bottom_y=$$by"; \ echo "$*-$$index.roiroi Rect 0.0 $$by $$lx $$by $$lx $$ty 0.0 $$ty" >> $*.roiinfo; \ ((i++));\ ty=`echo $$ty | awk -v d=$$Shift ' {print $$1 + d}'`;\ by=`echo $$by | awk -v d=$$Shift ' {print $$1 + d}'`;\ flag=`awk -v y=$$ty -v ymax=$$YMAX 'BEGIN {if(y<ymax) {print 1} else {print 0 } }'` ;\ done; .roiinfo.roipreinfo: sed -e 's/.roiroi/.roipreroi/' $*.roiinfo > $*.roipreinfo .roiinfo.roilst: awk ' {print $$1}' $*.roiinfo > $*.roilst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roi -I ../$*.roiinfo -m 2 ; cd .. .roipreinfo.roiprelst: awk ' {print $$1}' $*.roipreinfo > $*.roiprelst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roipre -I ../$*.roipreinfo -m 2 ; cd .. ##### # #REFINEMENT:: Intra-Filament # ##### .SUFFIXES: .roiprelst .roilst .roipre3dlst .roi3dlst .roipre3d .roi3d .roipre2d .roi2d .roipremaxcorinfo .roiprepad .roiprecorinfo .SUFFIXES: .roipre3dshrink .roishcounter .roi3dshrink .roishift3dlst .roipre3dlst-fit .roiprelst.roipre3dlst: touch $*.roipre3dlst cd $* ; ln -sf ../Makefile .; \ BASE=`head -n 1 ../$*.roiprelst` ; BASE=`basename $$BASE .roipreroi`; echo $$BASE; \ make $$BASE.roiprepad ; \ make $$BASE.roiprecorinfo; \ i=0; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roiprepad; \ if [ $$i == 0 ] ; \ then \ echo "First Image" ; \ PRE=`basename $$ii .roipreroi`; \ echo "PRE: $$PRE"; \ else \ echo "PRE: $$PRE"; \ Rot2Min=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2-10.01}' $$PRE.roiprecorinfo` ; \ Rot2Max=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2+10.01}' $$PRE.roiprecorinfo` ; \ echo $$Rot2Min $$Rot2Max; \ make Ymin=$$Rot2Min Ymax=$$Rot2Max $$BASE.roiprecorinfo ; \ PRE=`basename $$ii .roipreroi`; \ fi ; \ ((i++)); \ done ; cd .. cd $*; rm -f $*.roipre3dlst; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roipremaxcorinfo; \ sed -e s/$*/$*\\/$*/ $$BASE.roipremaxcorinfo >> ../$*.roipre3dlst ; \ ((i++)); \ done; cd .. .roipre3dlst.roishift3dlst: sed -e 's/.roipreroi/.roiroi/' $*.roipre3dlst > $*.roi3dlst for i in `awk '{print $$1}' $*.roi3dlst`; do \ BASE=`basename $$i .roiroi`; \ DIR=`dirname $$i `; \ mrcImagePad -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroipad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0; \ THETA=`awk '{print -1*$$8}' $$DIR/$$BASE.roipremaxcorinfo`; \ X=`awk '{print -1*$$6}' $$DIR/$$BASE.roipremaxcorinfo`; \ Y=`awk '{print -1*$$7}' $$DIR/$$BASE.roipremaxcorinfo`; \ mrcImageShift -i $$DIR/$$BASE.roiroipad -o $$DIR/$$BASE.roiroishift -x $$X -y $$Y; \ mrcImageRotation -i $$DIR/$$BASE.roiroishift -o $$DIR/$$BASE.roiroirot -a $$THETA -m 2; \ done; sed -e 's/.roiroi/.roiroirot/' $*.roi3dlst > $*.roishift3dlst .roishift3dlst.roi3d: mrc2Dto3D -I $*.roishift3dlst -o $*.roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roicounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3d: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit mrc2Dto3D -I $*.roipre3dlst-fit -o $*.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3dlst-fit: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit .roipre3dlst.roipre3dshrink: sed -e s/roipreroi/roiprefit2-shrink/ $*.roipre3dlst > $*.roipre3dlst-shrink for i in `awk '{print $$1}' $*.roipre3dlst-shrink`; do \ BASE=`basename $$i .roiprefit2-shrink`; \ DIR=`dirname $$i `; \ echo $$DIR/$$BASE; \ mrcImageShrink -i $$DIR/$$BASE.roiprefit2 -o $$DIR/$$BASE.roiprefit2-shrink -S 4; \ done mrc2Dto3D -I $*.roipre3dlst-shrink -o $*.roipre3dshrink \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ #.roi3dlst.roi3dshrink: # sed -e s/roiroi/roiroi-shrink/ $*.roi3dlst > $*.roi3dlst-shrink # for i in `awk '{print $$1}' $*.roi3dlst-shrink`; do \ # BASE=`basename $$i .roiroi-shrink`; \ # DIR=`dirname $$i `; \ # echo $$DIR/$$BASE; \ # mrcImageShrink -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroi-shrink -S 4; \ # done # mrc2Dto3D -I $*.roi3dlst-shrink -o $*.roi3dshrink \ # -InterpolationMode 2 \ # -CounterThreshold 1e-6 \ # -DoubleCounter $*.roishcounter \ # -WeightMode 2 \ # -Double -m 1 ##### # # Angle # #### angleGet: rm $(BAS).anglelst;\ touch $(BAS).anglelst;\ for ii in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 } ' $(TAR)` ; \ do \ SEN=` echo $$ii | sed -e s/":"/" "/g `; \ echo $$SEN | awk ' { print "Name: " $$1 " " "X: " $$3 " " "Y: " $$4 " " "Z: " $$5 } ' >> $(BAS).anglelst; \ done; \ hist: rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ a=` awk ' {a=5; printf "%d",a} '`; \ b=` awk ' {a=0; printf "%d",a} '`; \ while [ $$a -ne "365" ]; do \ for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ do \ i=` awk ' { a=0; printf "%d",a} '`;\ if [ $$ii -lt $$a -a $$ii -ge $$b]; then \ i=` echo $$i | awk ' { a=$$1; b=a+1; printf "%d",b} '`;\ fi; \ done;\ echo $$i >> $(BAS).anglelst.hist;\ a=` echo $$a | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ b=` echo $$b | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ done; \ ##### #hist: # rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ # touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ # Total=` awk ' { a=360; b=5; c=a/b; printf "%d",c} '`; \ # echo $$Total; \ # awk ' { a=$$6; printf "%03d\n",a } ' $(BAS).anglelst | sort | awk ' { print $$1 } ' > $(BAS).anglelst.counter; \ # B=` awk ' {a=5; printf "%d",a} '`; \ # for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ # do \ # if [ $$ii -lt $$B ] ; then \ # ((l++)); \ # else \ # echo $$l >> $(BAS).anglelst.hist; \ # l=` awk ' {a=0; printf "%d",a} '`; \ # while [ $$ii -gt $$B ] ;do \ # C=` echo $$B | awk ' {a=$$1; b=a+5; printf "%d",b} '`; \ # B=` echo $$C `; \ # done; \ # ((l++)); \ # fi; \ # done; \ ##### # # select good image # ##### GODLST=roipreall3dlst selectGood: for ii in *.$(GODLST) ; \ do \ BASE=`basename $$ii .$(GODLST)`; \ echo $$BASE; \ touch $$BASE.$(GODLST).gdlst; \ for i in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 ":" $$6 ":" $$7 ":" $$8 ":" $$9 } ' $$BASE.$(GODLST) ` ; \ do \ SEN=` echo $$i | sed -e s/":"/" "/g `; \ X=` echo $$SEN | awk ' { a=$$6; printf "%d",a} '`; \ Y=` echo $$SEN | awk ' { b=$$7; printf "%d",b} '`; \ echo "X:$$X Y:$$Y"; \ if [ $$X -gt -5 -a $$X -lt 5 -a $$Y -gt -8 -a $$Y -lt 8 ]; then \ echo "$$SEN" >> $$BASE.$(GODLST).gdlst;\ echo $$SEN; \ fi;\ done; \ done; ############################################################ ############################################################ ##### # # FSC # ##### .SUFFIXES: .fsccounter .FSClst .FSC .FSClst-fit .FSC3d .3dorglist .FSClst FSCLST: touch allroipre-FSC1.FSClst; \ touch allroipre-FSC2.FSClst; \ A=0; \ B=0; \ C=0; \ for ii in *.roipre3dlst; \ do \ BASE=`basename $$ii .roipre3dlst `; \ echo $$BASE; \ make $$BASE.3dorglist; \ make $$BASE.FSClst; \ A=`cat allroipre-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ B=`cat allroipre-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ C=`echo "$$A $$B" | awk ' {a=$$1; b=$$2; c=a-b; printf("%d",c)}'`;\ echo allFSC1=$$A allFSC2=$$B 1-2=$$C;\ D=`cat $$BASE-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ E=`cat $$BASE-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ echo $$BASEFSC2=$$D $$BASEFSC=$$E;\ if [ $$C -eq "1" ] ; then \ cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ else \ cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ fi;\ done; #touch COUNTER; cat $$BASE.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC1.FSClst | wc > COUNTER; C3=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC2.FSClst | wc > COUNTER; C4=`awk '{print $$1;}' COUNTER`; \ #C34=`echo "$$C3 $$C4" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ #C342=`echo "$$C34" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #3C11=`echo "$$C1" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #if [[ $$C1 == 0 || $$C342 == 0 ]] ; \ #then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ #else \ # touch COUNTER; cat $$BASE-FSC1.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ # touch COUNTER; cat $$BASE-FSC2.FSClst | wc > COUNTER; C2=`awk '{print $$1;}' COUNTER`; \ # C12=`echo "$$C1 $$C2" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ # if [ ($$C12 > 0) && ($$C34 < 0)) || (($$C12 < 0) && ($$34 > 0)) ] ; \ # then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ # else \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ # fi ; \ #fi ; \ #done; .roipre3dlst.3dorglist: awk '{ print $$9 " " $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 }' \ $*.roipre3dlst | \ sort -r | \ awk '{ print $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9 " " $$1 }' \ > $*.3dorglist .3dorglist.FSClst: awk 'BEGIN { i=0 } { i=i+1; if( i%2==1 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC1.FSClst awk 'BEGIN { i=0 } { i=i+1; if( i%2==0 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC2.FSClst .FSClst.FSC3d: sed -e s/roipreroi/roiprefit2/ $*.FSClst > $*.FSClst-fit mrc2Dto3D -I $*.FSClst-fit -o $*.FSC3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.fsccounter \ -WeightMode 2 \ -Double -m 1 .FSC3d.fsc: mrcImageFourierShellCorrelation -i1 $*.FSC3d -i2 $*.FSC3d -d 0.005 > $*.fsc ##### # # Projection # ##### .SUFFIXES: .roishift3dlst .roi3d.roi2d: mrc3Dto2D -i $*.roi3d -o $*.roi2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 .roipre3d.roipre2d: mrc3Dto2D -i $*.roipre3d -o $*.roipre2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 ##### # # Subroutines for intra-refinement # ##### .SUFFIXES: .roipreroi .roiprepad .roiprecorinfo .roipremaxcorinfo .roipreroi.roiprepad: touch $*.roiprepad mrcImageWindowing -i $*.roipreroi -o $*.roiprewin -m 16 mrcImagePad -i $*.roiprewin -o $*.roiprepad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 .roiprepad.roiprecorinfo: mrcImageAutoRotationCorrelation -i $*.roiprepad \ -r ../$(SOURCE).mrc2d -StackOrder 1 -RefineMode 1 \ -O $*.roiprecorinfo -fit $*.roiprefit -fit2 $*.roiprefit2 \ -nRot1Area $(Xmin) $(Xmax) $(Xstep) -nRot1 3 -dRot1 1 -startRot1 89 \ -nRot2Area $(Ymin) $(Ymax) $(Ystep) -nRot2 360 -dRot2 1 -startRot2 0 \ -nRot3Area $(Zmin) $(Zmax) $(Zstep) -nRot3 1 -dRot3 1 -startRot3 0 \ -range -0.5 0.5 -n 36 \ -s -5 -8 5 8 \ -Iter 2 -m 2 2> $*.roiprecorinfo.err .roiprecorinfo.roipremaxcorinfo: touch $*.roipremaxcorinfo; PARA=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot1=$$3; Rot2=$$4; Rot3=0; x=$$11; y=$$12; theta=$$9;}} END { print Rot1 " " Rot2 " " Rot3 " " x " " y " " theta " " max;}' $*.roiprecorinfo`;\ echo "$*.roipreroi $(MODE) $$PARA" > $*.roipremaxcorinfo ##### # # Reprojection # ##### .win.pad2: mrcImageCenterGet -i $*.win -o $*.win.roiget mrcImagePad -i $*.win.roiget -o $*.win.pad2 \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 #-m 2 -V 0 .mrc3d.sfl3d: mrcImageSolventFlattening -i $*.mrc3d -o $*.sfl3d -m 1 -rmax 163.2 -sd 1 .sfl3d.pad3d: mrcImageCenterGet -i $*.sfl3d -o $*.sfl3dcen -Nz $(Size_y) mrcImage3DPad -i $*.sfl3dcen -o $*.pad3d -Nx 256 -Ny 256 -Nz 256 -M 0 -r 92 # -Floating .pad3d.mrc2d: mrc3Dto2D -i $*.pad3d -o $*.mrc2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 $(rXmin) $(rXmax) $(rXdel) \ -Rot2 $(rYmin) $(rYmax) $(rYdel) \ -Rot3 0 0 5 -m 1 ##### # # etc... # ##### DispROIs:: for i in $(ROI) ;\ do \ echo $$i ; \ Display2 -i $$i -Zoom -0.3 -geometry 786x786+0+0 ; \ done BU:: if [ ! -d BackUp ] ; then mkdir BackUp; fi B=`date +"%Y%m%d%H%M"`;\ C="BackUp/Makefile"$$B;\ cp Makefile $$C;
.SUFFIXES: .roi .roi2 .roiinfo2 .mrc3d .ds6 \ .pad2 .win .sfl2d .med2d .mrc2d .pad3d .sfl3d .corinfo \ .3dlist_part .3dlist .3dorglist \ .refined3d .refinedds6 .roiall3dlst SHELL = /bin/bash #Refinement param SOURCE = both2.mrc3d.sfl3d.pad3d SOURCE2 = HelRec1 REFERENCE = both2.mrc3d.sfl3d.pad3d ROI_WIDTH = 128 #pixel BAS=ref2ActoS1 LST=roipre3dlst TAR=$(BAS).$(LST) #Parameter for mrc3Dto2D rXmin = 89 rXmax = 91 rXdel = 1 rYmin = 0# #rXmin,rXmax,rXdel: Used in mrc3Dto2D. rYmax = 359# # rXdel is delta of Angle rYdel = 1# # rYmin,rYmax,rYdel are also same #MODE = YOYS# #Euler mode Y-X-Z #MODE = ZOYS# #Euler mode Z-Y-X MODE = XEYS# #Euler mode X-Y-Z: 1st, Filament axis lap over Y-axis, # 2nd, Rotate filament about filament axis #Parameter for mrcImageAutoRotationCorrelation PADWIDTH_FORDATA = 256# # PADHEIGHT_FORDATA = 256# o "27.3 1.71" | awk 'BEGIN{ } {a=$1; b=$2; c=a/b } END{printf "%f\n",c} # Xmin = 89 Xmax = 91 Xstep = 1 Ymin = 0 Ymax = 359 Ystep = 10 Zmin = 0 Zmax = 1 Zstep = 10 N=5 Repeat_y=27.3 Resolution=1.71 Shift_y=`echo "$(Repeat_y) $(Resolution)" | awk ' {a=$$1; b=$$2; c=a/b; printf "%f\n",c} '` Size_y=`echo "$(Repeat_y) $(Resolution) $(N)" | awk ' {a=$$1; b=$$2; c=$$3; d=a/b*c ; printf "%f\n",d} '` Delta_phi=190 indexFormat="%04d" ##### # #Triming of Noise # ##### CENTERGET: mrcImageCenterGet -i $(SOURCE).mrc3d -o $(SOURCE).mrc3d.centre3d \ -Nx 60 -Ny 60 ##### # # All Process # ##### All:: make 3Dto2D; make FRAGMENTATION; make RS3D; ##### # # make 2D image set of reference # ##### 3Dto2D:: make $(REFERENCE).sfl3d; make $(REFERENCE).pad3d; make $(REFERENCE).mrc2d; ##### # # make 3Dlist # ##### ROISHIFT3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ rm $$BASE.roipre3dlst; \ rm $$BASE.roishift3dlst; \ rm $$BASE/*.roipremaxcorinfo; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; RS3D: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3dlst; \ make $$BASE.roishift3dlst; \ done; ##### # # make 3DR of each filaments # ##### 3DRroi: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roi3d; \ done; 3DRroipre: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre3d; \ done; ##### # # make ROI of filaments # ##### FRAGMENTATION: for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ make $$BASE.roipre;\ make $$BASE.roiinfo;\ make $$BASE.roipreinfo;\ make $$BASE.roilst;\ make $$BASE.roiprelst;\ done; ##### # # make 3DR for all filaments # ##### MARGE: touch $(SOURCE2).roiall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roishift3dlst >> $(SOURCE2).roiall3dlst ; \ done; MARGE2: touch $(SOURCE2).roipreall3dlst for ii in *.roi; \ do \ BASE=`basename $$ii .roi`; \ echo $$BASE; \ cat $$BASE.roipre3dlst >> $(SOURCE2).roipreall3dlst ; \ done; 3DRECONSTRACTION: mrc2Dto3D -I $(SOURCE2).roiall3dlst -o $(SOURCE2).roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roiallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ 3DR2: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst > $(SOURCE2).roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).roipreall3dlst-fit -o $(SOURCE2).roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ GOOD3DR: sed -e s/roipreroi/roiprefit2/ $(SOURCE2).roipreall3dlst.gdlst > $(SOURCE2).gd.roipreall3dlst-fit mrc2Dto3D -I $(SOURCE2).gd.roipreall3dlst-fit -o $(SOURCE2).gd.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $(SOURCE2).gd.roipreallcounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ ########## # # FSC of each filaments # ########## .SUFFIXES: .FSC3d .FSC3d 3DRFSC1: for ii in *-FSC1.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; 3DRFSC2: for ii in *-FSC2.FSClst; \ do \ BASE=`basename $$ii .FSClst`; \ make $$BASE.FSC3d; \ done; #.FSC3d.fsc: # for ii in *-FSC1.FSC3d; \ # do \ # BASE=`basename $$ii .FSClst`; \ # mrcImageCentreGet ; \ # make $$BASE.fsc; \ # done; ######################## # # # Component of 3DR Process # # ######################## ##### # #FRAGMENTATION # ##### .SUFFIXES: .roi .roipre .roiinfo .roipreinfo .roilst .roiprelst .SUFFIXES: .roiroi .roiroishift .roi.roipre: touch $*.roipre mrcImageSolventFlattening -i $*.roi -o $*.sfl2d -sd -0.5 -m 6 mrcImageSmoothing -i $*.sfl2d -o $*.roipre -m 1 -M 1 -r 2 .roi.roiinfo: rm -f $*.roiinfo touch $*.roiinfo XMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$4}' | sed s/,//g`; \ YMAX=`mrcInfo -i $*.roi | grep "^N" \ | awk '{print $$5}' | sed s/,//g`; \ lx=`echo $$XMAX`; \ ((lx--)); \ Shift=$(Shift_y); echo "ShiftY $$Shift"; \ by=0; \ Size=$(Size_y) ; \ ty=`awk -v Y=$$Size ' BEGIN{print Y - 1}'`; \ ((i=0)); \ flag=1; \ while [ $$flag -eq "1" ] ;\ do \ index=`printf $(indexFormat) $$i`; \ echo "$*-$$index.roiroi Top_y=$$ty Bottom_y=$$by"; \ echo "$*-$$index.roiroi Rect 0.0 $$by $$lx $$by $$lx $$ty 0.0 $$ty" >> $*.roiinfo; \ ((i++));\ ty=`echo $$ty | awk -v d=$$Shift ' {print $$1 + d}'`;\ by=`echo $$by | awk -v d=$$Shift ' {print $$1 + d}'`;\ flag=`awk -v y=$$ty -v ymax=$$YMAX 'BEGIN {if(y<ymax) {print 1} else {print 0 } }'` ;\ done; .roiinfo.roipreinfo: sed -e 's/.roiroi/.roipreroi/' $*.roiinfo > $*.roipreinfo .roiinfo.roilst: awk ' {print $$1}' $*.roiinfo > $*.roilst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roi -I ../$*.roiinfo -m 2 ; cd .. .roipreinfo.roiprelst: awk ' {print $$1}' $*.roipreinfo > $*.roiprelst if [ ! -d $* ] ; then mkdir $*; fi cd $*; mrcImageROIs -i ../$*.roipre -I ../$*.roipreinfo -m 2 ; cd .. ##### # #REFINEMENT:: Intra-Filament # ##### .SUFFIXES: .roiprelst .roilst .roipre3dlst .roi3dlst .roipre3d .roi3d .roipre2d .roi2d .roipremaxcorinfo .roiprepad .roiprecorinfo .SUFFIXES: .roipre3dshrink .roishcounter .roi3dshrink .roishift3dlst .roipre3dlst-fit .roiprelst.roipre3dlst: touch $*.roipre3dlst cd $* ; ln -sf ../Makefile .; \ BASE=`head -n 1 ../$*.roiprelst` ; BASE=`basename $$BASE .roipreroi`; echo $$BASE; \ make $$BASE.roiprepad ; \ make $$BASE.roiprecorinfo; \ i=0; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roiprepad; \ if [ $$i == 0 ] ; \ then \ echo "First Image" ; \ PRE=`basename $$ii .roipreroi`; \ echo "PRE: $$PRE"; \ else \ echo "PRE: $$PRE"; \ Rot2Min=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2-10.01}' $$PRE.roiprecorinfo` ; \ Rot2Max=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot2=$$4;}} END {Rot2+=190; if(360<Rot2) Rot2-=360; print Rot2+10.01}' $$PRE.roiprecorinfo` ; \ echo $$Rot2Min $$Rot2Max; \ make Ymin=$$Rot2Min Ymax=$$Rot2Max $$BASE.roiprecorinfo ; \ PRE=`basename $$ii .roipreroi`; \ fi ; \ ((i++)); \ done ; cd .. cd $*; rm -f $*.roipre3dlst; \ for ii in `cat ../$*.roiprelst` ; \ do \ BASE=`basename $$ii .roipreroi`; \ echo $$BASE; \ make $$BASE.roipremaxcorinfo; \ sed -e s/$*/$*\\/$*/ $$BASE.roipremaxcorinfo >> ../$*.roipre3dlst ; \ ((i++)); \ done; cd .. .roipre3dlst.roishift3dlst: sed -e 's/.roipreroi/.roiroi/' $*.roipre3dlst > $*.roi3dlst for i in `awk '{print $$1}' $*.roi3dlst`; do \ BASE=`basename $$i .roiroi`; \ DIR=`dirname $$i `; \ mrcImagePad -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroipad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0; \ THETA=`awk '{print -1*$$8}' $$DIR/$$BASE.roipremaxcorinfo`; \ X=`awk '{print -1*$$6}' $$DIR/$$BASE.roipremaxcorinfo`; \ Y=`awk '{print -1*$$7}' $$DIR/$$BASE.roipremaxcorinfo`; \ mrcImageShift -i $$DIR/$$BASE.roiroipad -o $$DIR/$$BASE.roiroishift -x $$X -y $$Y; \ mrcImageRotation -i $$DIR/$$BASE.roiroishift -o $$DIR/$$BASE.roiroirot -a $$THETA -m 2; \ done; sed -e 's/.roiroi/.roiroirot/' $*.roi3dlst > $*.roishift3dlst .roishift3dlst.roi3d: mrc2Dto3D -I $*.roishift3dlst -o $*.roi3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roicounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3d: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit mrc2Dto3D -I $*.roipre3dlst-fit -o $*.roipre3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ .roipre3dlst.roipre3dlst-fit: sed -e s/roipreroi/roiprefit2/ $*.roipre3dlst > $*.roipre3dlst-fit .roipre3dlst.roipre3dshrink: sed -e s/roipreroi/roiprefit2-shrink/ $*.roipre3dlst > $*.roipre3dlst-shrink for i in `awk '{print $$1}' $*.roipre3dlst-shrink`; do \ BASE=`basename $$i .roiprefit2-shrink`; \ DIR=`dirname $$i `; \ echo $$DIR/$$BASE; \ mrcImageShrink -i $$DIR/$$BASE.roiprefit2 -o $$DIR/$$BASE.roiprefit2-shrink -S 4; \ done mrc2Dto3D -I $*.roipre3dlst-shrink -o $*.roipre3dshrink \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.roiprecounter \ -WeightMode 2 \ -Double -m 1 \ -SIRT \ -max 3 \ -rms 1 \ #.roi3dlst.roi3dshrink: # sed -e s/roiroi/roiroi-shrink/ $*.roi3dlst > $*.roi3dlst-shrink # for i in `awk '{print $$1}' $*.roi3dlst-shrink`; do \ # BASE=`basename $$i .roiroi-shrink`; \ # DIR=`dirname $$i `; \ # echo $$DIR/$$BASE; \ # mrcImageShrink -i $$DIR/$$BASE.roiroi -o $$DIR/$$BASE.roiroi-shrink -S 4; \ # done # mrc2Dto3D -I $*.roi3dlst-shrink -o $*.roi3dshrink \ # -InterpolationMode 2 \ # -CounterThreshold 1e-6 \ # -DoubleCounter $*.roishcounter \ # -WeightMode 2 \ # -Double -m 1 ##### # # Angle # #### angleGet: rm $(BAS).anglelst;\ touch $(BAS).anglelst;\ for ii in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 } ' $(TAR)` ; \ do \ SEN=` echo $$ii | sed -e s/":"/" "/g `; \ echo $$SEN | awk ' { print "Name: " $$1 " " "X: " $$3 " " "Y: " $$4 " " "Z: " $$5 } ' >> $(BAS).anglelst; \ done; \ hist: rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ a=` awk ' {a=5; printf "%d",a} '`; \ b=` awk ' {a=0; printf "%d",a} '`; \ while [ $$a -ne "365" ]; do \ for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ do \ i=` awk ' { a=0; printf "%d",a} '`;\ if [ $$ii -lt $$a -a $$ii -ge $$b]; then \ i=` echo $$i | awk ' { a=$$1; b=a+1; printf "%d",b} '`;\ fi; \ done;\ echo $$i >> $(BAS).anglelst.hist;\ a=` echo $$a | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ b=` echo $$b | awk ' {a=$$1; b=5; c=a+b; printf "%d",c} '`; \ done; \ ##### #hist: # rm $(BAS).anglelst.hist; rm $(BAS).anglelst.counter; \ # touch $(BAS).anglelst.hist; touch $(BAS).anglelst.counter; \ # Total=` awk ' { a=360; b=5; c=a/b; printf "%d",c} '`; \ # echo $$Total; \ # awk ' { a=$$6; printf "%03d\n",a } ' $(BAS).anglelst | sort | awk ' { print $$1 } ' > $(BAS).anglelst.counter; \ # B=` awk ' {a=5; printf "%d",a} '`; \ # for ii in ` awk ' { print $$1 } ' $(BAS).anglelst.counter` ; \ # do \ # if [ $$ii -lt $$B ] ; then \ # ((l++)); \ # else \ # echo $$l >> $(BAS).anglelst.hist; \ # l=` awk ' {a=0; printf "%d",a} '`; \ # while [ $$ii -gt $$B ] ;do \ # C=` echo $$B | awk ' {a=$$1; b=a+5; printf "%d",b} '`; \ # B=` echo $$C `; \ # done; \ # ((l++)); \ # fi; \ # done; \ ##### # # select good image # ##### GODLST=roipreall3dlst selectGood: for ii in *.$(GODLST) ; \ do \ BASE=`basename $$ii .$(GODLST)`; \ echo $$BASE; \ touch $$BASE.$(GODLST).gdlst; \ for i in ` awk ' { print $$1 ":" $$2 ":" $$3 ":" $$4 ":" $$5 ":" $$6 ":" $$7 ":" $$8 ":" $$9 } ' $$BASE.$(GODLST) ` ; \ do \ SEN=` echo $$i | sed -e s/":"/" "/g `; \ X=` echo $$SEN | awk ' { a=$$6; printf "%d",a} '`; \ Y=` echo $$SEN | awk ' { b=$$7; printf "%d",b} '`; \ echo "X:$$X Y:$$Y"; \ if [ $$X -gt -5 -a $$X -lt 5 -a $$Y -gt -8 -a $$Y -lt 8 ]; then \ echo "$$SEN" >> $$BASE.$(GODLST).gdlst;\ echo $$SEN; \ fi;\ done; \ done; ############################################################ ############################################################ ##### # # FSC # ##### .SUFFIXES: .fsccounter .FSClst .FSC .FSClst-fit .FSC3d .3dorglist .FSClst FSCLST: touch allroipre-FSC1.FSClst; \ touch allroipre-FSC2.FSClst; \ A=0; \ B=0; \ C=0; \ for ii in *.roipre3dlst; \ do \ BASE=`basename $$ii .roipre3dlst `; \ echo $$BASE; \ make $$BASE.3dorglist; \ make $$BASE.FSClst; \ A=`cat allroipre-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ B=`cat allroipre-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ C=`echo "$$A $$B" | awk ' {a=$$1; b=$$2; c=a-b; printf("%d",c)}'`;\ echo allFSC1=$$A allFSC2=$$B 1-2=$$C;\ D=`cat $$BASE-FSC1.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ E=`cat $$BASE-FSC2.FSClst | wc | awk ' {a=$$1; printf("%d",a)}'`;\ echo $$BASEFSC2=$$D $$BASEFSC=$$E;\ if [ $$C -eq "1" ] ; then \ cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ else \ cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst;\ cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ fi;\ done; #touch COUNTER; cat $$BASE.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC1.FSClst | wc > COUNTER; C3=`awk '{print $$1;}' COUNTER`; \ #touch COUNTER; cat allroipre-FSC2.FSClst | wc > COUNTER; C4=`awk '{print $$1;}' COUNTER`; \ #C34=`echo "$$C3 $$C4" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ #C342=`echo "$$C34" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #3C11=`echo "$$C1" | awk ' {a=$$1; b=a%2 ; printf "%f\n",b} '`; \ #if [[ $$C1 == 0 || $$C342 == 0 ]] ; \ #then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ #else \ # touch COUNTER; cat $$BASE-FSC1.FSClst | wc > COUNTER; C1=`awk '{print $$1;}' COUNTER`; \ # touch COUNTER; cat $$BASE-FSC2.FSClst | wc > COUNTER; C2=`awk '{print $$1;}' COUNTER`; \ # C12=`echo "$$C1 $$C2" | awk ' {a=$$1; b=$$2; c=a-b ; printf "%f\n",c} '`; \ # if [ ($$C12 > 0) && ($$C34 < 0)) || (($$C12 < 0) && ($$34 > 0)) ] ; \ # then \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC2.FSClst; \ # else \ # cat $$BASE-FSC2.FSClst >> allroipre-FSC1.FSClst; \ # cat $$BASE-FSC1.FSClst >> allroipre-FSC2.FSClst; \ # fi ; \ #fi ; \ #done; .roipre3dlst.3dorglist: awk '{ print $$9 " " $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 }' \ $*.roipre3dlst | \ sort -r | \ awk '{ print $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9 " " $$1 }' \ > $*.3dorglist .3dorglist.FSClst: awk 'BEGIN { i=0 } { i=i+1; if( i%2==1 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC1.FSClst awk 'BEGIN { i=0 } { i=i+1; if( i%2==0 ){ print $$1 " " $$2 " " $$3 " " $$4 " " $$5 " " $$6 " " $$7 " " $$8 " " $$9; } } END { }' $*.3dorglist > $*-FSC2.FSClst .FSClst.FSC3d: sed -e s/roipreroi/roiprefit2/ $*.FSClst > $*.FSClst-fit mrc2Dto3D -I $*.FSClst-fit -o $*.FSC3d \ -InterpolationMode 2 \ -CounterThreshold 1e-6 \ -DoubleCounter $*.fsccounter \ -WeightMode 2 \ -Double -m 1 .FSC3d.fsc: mrcImageFourierShellCorrelation -i1 $*.FSC3d -i2 $*.FSC3d -d 0.005 > $*.fsc ##### # # Projection # ##### .SUFFIXES: .roishift3dlst .roi3d.roi2d: mrc3Dto2D -i $*.roi3d -o $*.roi2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 .roipre3d.roipre2d: mrc3Dto2D -i $*.roipre3d -o $*.roipre2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 90 90 5 \ -Rot2 0 0 5 \ -Rot3 0 0 5 -m 1 ##### # # Subroutines for intra-refinement # ##### .SUFFIXES: .roipreroi .roiprepad .roiprecorinfo .roipremaxcorinfo .roipreroi.roiprepad: touch $*.roiprepad mrcImageWindowing -i $*.roipreroi -o $*.roiprewin -m 16 mrcImagePad -i $*.roiprewin -o $*.roiprepad \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 .roiprepad.roiprecorinfo: mrcImageAutoRotationCorrelation -i $*.roiprepad \ -r ../$(SOURCE).mrc2d -StackOrder 1 -RefineMode 1 \ -O $*.roiprecorinfo -fit $*.roiprefit -fit2 $*.roiprefit2 \ -nRot1Area $(Xmin) $(Xmax) $(Xstep) -nRot1 3 -dRot1 1 -startRot1 89 \ -nRot2Area $(Ymin) $(Ymax) $(Ystep) -nRot2 360 -dRot2 1 -startRot2 0 \ -nRot3Area $(Zmin) $(Zmax) $(Zstep) -nRot3 1 -dRot3 1 -startRot3 0 \ -range -0.5 0.5 -n 36 \ -s -5 -8 5 8 \ -Iter 2 -m 2 2> $*.roiprecorinfo.err .roiprecorinfo.roipremaxcorinfo: touch $*.roipremaxcorinfo; PARA=`awk 'BEGIN {max=0} {if(max<$$7){max=$$7; Rot1=$$3; Rot2=$$4; Rot3=0; x=$$11; y=$$12; theta=$$9;}} END { print Rot1 " " Rot2 " " Rot3 " " x " " y " " theta " " max;}' $*.roiprecorinfo`;\ echo "$*.roipreroi $(MODE) $$PARA" > $*.roipremaxcorinfo ##### # # Reprojection # ##### .win.pad2: mrcImageCenterGet -i $*.win -o $*.win.roiget mrcImagePad -i $*.win.roiget -o $*.win.pad2 \ -W $(PADWIDTH_FORDATA) -H $(PADHEIGHT_FORDATA) \ -m 2 -V 0 #-m 2 -V 0 .mrc3d.sfl3d: mrcImageSolventFlattening -i $*.mrc3d -o $*.sfl3d -m 1 -rmax 163.2 -sd 1 .sfl3d.pad3d: mrcImageCenterGet -i $*.sfl3d -o $*.sfl3dcen -Nz $(Size_y) mrcImage3DPad -i $*.sfl3dcen -o $*.pad3d -Nx 256 -Ny 256 -Nz 256 -M 0 -r 92 # -Floating .pad3d.mrc2d: mrc3Dto2D -i $*.pad3d -o $*.mrc2d \ -EulerMode $(MODE) -InterpolationMode 0 \ -Rot1 $(rXmin) $(rXmax) $(rXdel) \ -Rot2 $(rYmin) $(rYmax) $(rYdel) \ -Rot3 0 0 5 -m 1 ##### # # etc... # ##### DispROIs:: for i in $(ROI) ;\ do \ echo $$i ; \ Display2 -i $$i -Zoom -0.3 -geometry 786x786+0+0 ; \ done BU:: if [ ! -d BackUp ] ; then mkdir BackUp; fi B=`date +"%Y%m%d%H%M"`;\ C="BackUp/Makefile"$$B;\ cp Makefile $$C;