らせん対称をもつ粒子の3次元再構成法2
提供: Eospedia
目次
らせん対称をもつ粒子の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"
3次元マップの取り扱い
周辺のノイズの取りのぞきを行ったものです。
##### # #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;