「らせん対称をもつ粒子の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;