OSDN Git Service

Add tutorial of Tomography. : 4 datas
[eos/tutorial.git] / Tomography / Tomography6 / Makefile
diff --git a/Tomography/Tomography6/Makefile b/Tomography/Tomography6/Makefile
new file mode 100644 (file)
index 0000000..3a33399
--- /dev/null
@@ -0,0 +1,1063 @@
+#
+#      This is a sample Makefile(ver.2) for electron tomography.
+#
+
+# These extensions must all be different.
+INI_PDB_EXT=pdb
+INI_3D1_EXT=ini3d1
+INI_3DB_EXT=ini3db
+INI_3D_EXT=ini3d
+INI_2D_EXT=ini2d
+IN_ROI_EXT=roi
+OUT_PAD_EXT=pad
+3D_LIST_EXT=3dlst
+DIV_3D_EXT=mrc3d
+FIT_3D_EXT=3dfit
+AVE_3D_EXT=3dave
+
+
+SHELL=/bin/bash
+
+
+#### Suffixes rule ####
+.SUFFIXES: \
+       .tif .dat .tiff2mrc .prectf .fft .ctf .ctfinfoauto .ctfinfo .mrc \
+       .prectf-f32 .ctfwnd .fft-ctfwnd \
+       .box .roi .gif\
+       .roiinfo-coarse .roiall-coarse .roiinforef-coarse .roiallref-coarse  .roiinfoprev-coarse .lst \
+       .roiinfo        .roiall        .roiinforef        .roiallref         .roiinfoprev \
+       .box2roiinfo .roiinfo2box .corinfo .divideroiinfo \
+       .roilst0 .roilst .mrc3d .ds6 .mrc3dcentremed .mrc3dcentre .mrc3dcentremedpad .orimrccentre .orimrccentrewnd .oricorinfo .coarroi .coarroiinfo .roi2 .pad .mul \
+       .$(INI_PDB_EXT) .$(INI_3D1_EXT) .$(INI_3DB_EXT) .$(INI_3D_EXT) .$(INI_2D_EXT) .$(INI_2D_EXT)1 .$(IN_ROI_EXT) .$(OUT_PAD_EXT) .$(3D_LIST_EXT) .$(DIV_3D_EXT) .$(FIT_3D_EXT)
+
+
+#### INCLUDE ####
+-include IN_ROI_LIST
+-include DIV_3D_LIST
+
+
+#### Definition ####
+TILTAXISNUMBER=2       # Single: 1 Double: 2 
+ORIFILE1=DataA
+TILTAXISANGLE1=90
+ORIFILE2=DataB
+ROTATIONANGLE=-90
+#STEPTILTNUM=1
+STEPTILTNUM=1
+
+RESOLUTION=6.1
+
+# printf ORIFILE1/2, FILENUMBER
+NAMEFORMAT="%s_%03d"
+# generated by "Recorder" (JEOL)
+NAMEFORMAT_IMOD="%s.%03d"
+# generated by IMOD "mrc2tif"
+EULARANGLE=ZEYS
+#ZEROTILTNUM=46
+ZEROTILTNUM=06
+# use only double-digit
+ORIBASE=$(ORIFILE1)_0$(ZEROTILTNUM)
+#MINTILTNUM=0
+#MAXTILTNUM=95
+MINTILTNUM=0
+MAXTILTNUM=12
+
+### top data number of the tilt angle list
+TILTANGLELISTSTARTNO=0         # generated by IMOD "mrc2tif"
+#TILTANGLELISTSTARTNO=1                # generated by "Recorder" (JEOL)
+
+### get tilt angles from the *.rawtlt file (generated by FEI's software)
+TILTANGLELIST=`cat $${orifile}.rawtlt`
+
+### get tilt angles from the *_RecParam.txt file (generated by JEOL's "Recorder")
+##TILTANGLELIST=`sed -ne '/^TiltXSerise:/{s/^[^-0-9.]*//;s/[^-0-9.]*$$//;p}' $${orifile}_RecParam.txt`
+#TILTANGLELIST=`sed -e 's/^TiltXSerise:\([-0-9. ]*\).*$/\1/;t;d' $${orifile}_RecParam.txt`
+
+### generate tilt angles by 'MIN + STEP * tilt-No'
+### parameters for tilt angle data
+MINTILTANGLE=-67.66
+STEPTILTANGLE= 2.0
+#TILTANGLELIST=$$( awk 'BEGIN{ \
+                       for (i=$(TILTANGLELISTSTARTNO); i<=$(MAXTILTNUM); i++) \
+                       printf("%.2f\n", $(MINTILTANGLE) + $(STEPTILTANGLE) / $(STEPTILTNUM) * (i - $(MINTILTNUM))); \
+               }' )
+
+
+TIFMODE=0   # for CCD
+#TIFMODE=1  # for Film
+
+SMOOTHr=1
+SMOOTHm=1
+SMOOTHM=1
+#CENTERNX=225  #BOXSIZE / 2
+#CENTERNY=225  #BOXSIZE / 2
+#CENTERNZ=225  #BOXSIZE / 2
+CENTERNX=32            #BOXSIZE / 2
+CENTERNY=32            #BOXSIZE / 2
+CENTERNZ=32            #BOXSIZE / 2
+
+#Default.ctfinfo
+DEFCTFINFO="default.ctfinfo"
+PREVCTFINFO="previous.ctfinfo"
+
+# Coarse Alignment
+#ORINX=800       #ORISIZE / 2
+#ORINY=800     #ORISIZE / 2
+ORINX=32       #ORISIZE / 2
+ORINY=32       #ORISIZE / 2
+WINMIN=0.350       
+WINMAX=0.300      
+#WINMIN=0.200       
+#WINMAX=0.200      
+ORINZ=1
+CORMODE=18
+
+#
+#
+#
+#ORISIZEX=1024 #original file size X
+#ORISIZEY=1024 #original file size Y
+#ORISIZEX=2048 #original file size X
+#ORISIZEY=2048 #original file size Y
+#ROISIZEX=256  #ORISIZEX / 4
+#ROISIZEY=256  #ORISIZEY / 4
+#PADSIZEX=512  #ROISIZEX X 2
+#PADSIZEY=512  #ROISIZEY X 2
+ORISIZEX=64    #original file size X
+ORISIZEY=64    #original file size Y
+ROISIZEX=16            #ORISIZEX / 4
+ROISIZEY=16            #ORISIZEY / 4
+PADSIZEX=32            #ROISIZEX X 2
+PADSIZEY=32            #ROISIZEY X 2
+
+# 
+#PADSIZEX3D=900
+#PADSIZEY3D=900
+PADSIZEX3D=32
+PADSIZEY3D=32
+TILTAXISANGLE=0
+#IMAGEPADm=15
+#IMAGEPADm=5
+IMAGEPADm=0
+IMAGEPADV=0
+#For Negative Staining
+#IMAGEMULTIPLYINGv=-1
+#For Cryo
+IMAGEMULTIPLYINGv=1
+IMAGESHRINK=4
+MRC2MAPmul=100
+SMOOTH2Dr=3
+
+# Directories for CTF Correction
+#   Subdivision images  
+#
+DIVIDE=N
+DIVIDEFILEDIR=./divide
+
+# Using defocus window, in which area the defocus is assumed to be vary not so much
+#
+USE_DEFOCUS_WINDOW=Y
+DEFOCUSRANGE=800
+DEFOCUSWINDOWSIZE=1.5
+
+# Target structure name 
+TARGET=Target
+
+###For Input Data
+## Size of Input Data
+IN_SIZE_X=192
+IN_SIZE_Y=192
+IN_SIZE_Z=64
+## Number of Target Data in Input Data
+IN_DATA_NUM=16
+
+## For mrc3Dto2D(Input)
+# RotMode
+IN_ROTMODE=$(EULARANGLE)
+# Rot1
+IN_ROT1MIN=0
+IN_ROT1MAX=0
+IN_ROT1D=10
+IN_ROT1N=`expr \( $(IN_ROT1MAX) - $(IN_ROT1MIN) \) / $(IN_ROT1D) + 1`
+# Rot2
+IN_ROT2MIN=-60
+IN_ROT2MAX=60
+IN_ROT2D=10
+IN_ROT2N=`expr \( $(IN_ROT2MAX) - $(IN_ROT2MIN) \) / $(IN_ROT2D) + 1`
+# Rot3
+IN_ROT3MIN=0
+IN_ROT3MAX=0
+IN_ROT3D=10
+IN_ROT3N=`expr \( $(IN_ROT3MAX) - $(IN_ROT3MIN) \) / $(IN_ROT3D) + 1`
+# Interpolation mode(CommonSetting: Input, Output)
+IN_MODE=2
+# 0:Mercator 1:Mollweide(set 0 usually)
+IN_EX_MODE=0
+# Noise/Signal-Ratio(if you wish no-noise, set 0)
+NSRATIO=0
+
+#### For Works ####
+JOP_NUM=-j 3
+
+#### Rules of the list created ####
+$(OUT_PAD_EXT):$(IN_ROI_LIST:.$(IN_ROI_EXT)=.$(OUT_PAD_EXT))
+$(FIT_3D_EXT):$(DIV_3D_LIST:.$(DIV_3D_EXT)=.$(FIT_3D_EXT))
+
+IN_ROI_LIST::
+       touch IN_ROI_LIST
+       echo "IN_ROI_LIST=\\" > IN_ROI_LIST
+       ls -1 *.$(IN_ROI_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(IN_ROI_EXT)/$(IN_ROI_EXT)\\\\/ >> IN_ROI_LIST
+       echo "" >> IN_ROI_LIST
+       
+DIV_3D_LIST::
+       touch DIV_3D_LIST
+       echo "DIV_3D_LIST=\\" > DIV_3D_LIST
+       ls -1 *.$(DIV_3D_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(DIV_3D_EXT)/$(DIV_3D_EXT)\\\\/ >> DIV_3D_LIST
+       echo "" >> DIV_3D_LIST
+
+FIT_3D_LIST::
+       touch FIT_3D_LIST
+       rm FIT_3D_LIST
+       ls -1 *.$(FIT_3D_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> FIT_3D_LIST
+
+#### Commands ####
+
+help::
+       @echo "----- 3D Reconstruction using Eos ------------"
+       @echo "#Prepare tif-series"
+       @echo "make Init         ; # Prepare directories"
+       @echo "make DataCreate   ; # Input .tif -> CTF Correction -> Output .mrc"
+       @echo "make PreFilter    ; # Input .mrc -> Prefilter(Smoothing/Windowing) -> Output .mrcsmth "
+       @echo "make CoarseAlign  ; # Input .mrcsmth -> CoarseAlingment -> Output .roi"
+       @echo "make RoiSelection ; # ROI Area Selection"
+       @echo "make BoxCreate    ; # Box Extraction from ROI using ROI Area Information"
+       @echo "make Prefileter2  ; # Prefilter for Box"
+       @echo "make roilstCreate ; # Create roilst for 3D"
+       @echo "make 3D"
+       @echo "--------"
+       @echo "make CoarseAlignDisplay ; # using smolet(Eos)"
+       @echo "make BoxCreateDisplay   ; # using smolet(Eos)"
+       @echo "make roiDisplay         ; # using smolet(Eos)"
+       @echo "make GIFAnim            ; # using convert"
+       @echo "--------"
+       @echo "make CleanDataCreate"
+       @echo "make CleanCoarseAlign"
+       @echo "make CleanRoiDisplay"
+       @echo "make CleanBoxCreate"
+       @echo "make Prefilter2"
+       @echo "make Cleanroilst"
+       @echo "make Clean3D"
+       @echo "--------"
+       @echo "RenameDataForIMOD"
+
+
+#all: Init DataCreate PreFilter CoarseAlign RoiSelection BoxCreate PadAndMul roilstCreate 3D
+all: PreFilter CoarseAlign RoiSelection BoxCreate roilstCreate 3D
+Test::
+#      make Initial
+#      make $(TARGET).$(INI_3D1_EXT);
+#      cp $(TARGET).$(INI_3D1_EXT) $(TARGET).$(INI_3D_EXT);
+#      make $(TARGET).$(INI_2D_EXT)1;
+       make TestData2DSetDouble;
+       make PreFilter;
+       make CoarseAlign;
+       make RoiSelection
+       make BoxCreate;
+#      make PadAndMul;
+#      make Prefilter2;
+       make roilstCreate;
+       make 3D;
+
+# Initialization
+Init::
+       @if [ ! -d $(DIVIDEFILEDIR) ] ; \
+       then \
+               echo "DIVIDEFILEDIR Create"; \
+               mkdir $(DIVIDEFILEDIR); \
+       fi
+
+TestRoutine::
+       echo "for"
+       for (( i=0; i<10; i++ )) ; do \
+               echo $$i; \
+       done    
+
+# Rename data file name
+RenameDataForIMOD::
+       @echo "RenameDataForIMOD"
+       for (( j=1; j <= $(TILTAXISNUMBER) ; j++ )) do \
+               echo $$j ; \
+               case "$$j" in \
+                       1) \
+                               echo "First Axis"; \
+                               orifile=$(ORIFILE1); \
+                               ;; \
+                       2) \
+                               echo "Second Axis"; \
+                               orifile=$(ORIFILE2); \
+                               ;; \
+                       *) \
+                               echo "Something wrong" ; \
+               esac ; \
+               for (( i=$(MINTILTNUM) ; i <= $(MAXTILTNUM) ; i=i+$(STEPTILTNUM) )) do \
+                       ori=`printf $(NAMEFORMAT) $$orifile $$i`; \
+                       ori_imod=`printf $(NAMEFORMAT_IMOD) $$orifile $$i`; \
+                       mv $$ori_imod.tif $$ori.tif ; \
+               done ; \
+       done
+
+# Data Create 
+DataCreate::
+       @echo "DataCreate"
+       for (( j=1; j <= $(TILTAXISNUMBER) ; j++ )) do \
+               echo $$j ; \
+               case "$$j" in \
+                       1) \
+                               echo "First Axis"; \
+                               orifile=$(ORIFILE1); \
+                               ;; \
+                       2) \
+                               echo "Second Axis"; \
+                               orifile=$(ORIFILE2); \
+                               ;; \
+                       *) \
+                               echo "Something wrong" ; \
+               esac ; \
+               tiltangles=( $(TILTANGLELIST) ) ; \
+               for (( i=$(MINTILTNUM) ; i <= $(MAXTILTNUM) ; i=i+$(STEPTILTNUM) )) do \
+                       ori=`printf $(NAMEFORMAT) $$orifile $$i`; \
+                       echo $${tiltangles[i-$(TILTANGLELISTSTARTNO)]} > $$ori.tiltangle ; \
+                       make $$ori.tiff2mrc; \
+                       make $$ori.prectf; \
+                       make $$ori.divideroiinfo; \
+                       make $$ori.fft ; \
+                       if [ "$(USE_DEFOCUS_WINDOW)" = "Y" ] ; then \
+                               make $$ori.prectf-f32 ; \
+                               make $$ori.ctfwnd ; \
+                               make $$ori.fft-ctfwnd ; \
+                       fi ; \
+                       make $$ori.ctfinfo; \
+                       make $$ori.ctf; \
+                       make $$ori.mrc ; \
+               done ; \
+       done
+#
+# Subroutines for DataCreate
+#
+.dat.prectf:
+       emData2mrc -i $*.dat -o $*.prectf
+
+.tif.tiff2mrc:
+       tiff2mrc -i $*.tif -o $*.tiff2mrc -m $(TIFMODE) -r $(RESOLUTION)
+
+.tiff2mrc.prectf:
+       #mrcImageAbnormalValueRemove -i $*.tiff2mrc -o $*.prectf -m 1 -v 6.0
+       ln -sf $*.tiff2mrc $*.prectf
+
+.prectf.prectf-f32:
+       mrcImageModeChange -m 2 -i $*.prectf -o $*.prectf-f32
+
+.prectf-f32.ctfwnd:
+       mrcImageWindowing -m 18 -W `cat $*.tiltangle | awk '{ \
+                       m=0.005; \
+                       a=$$1*3.1415926/180; \
+                       if(a<0)a=-a; \
+                       tan_a=sin(a)/cos(a); \
+                       if(tan_a<1e-4) { \
+                               x=xw=-1; \
+                       } else { \
+                               w=$(DEFOCUSRANGE)/tan_a/$(RESOLUTION)/$(ORISIZEX)/2; \
+                               x=0.5-w; xw=0.5-w*$(DEFOCUSWINDOWSIZE); \
+                       } \
+                       if(x<m)x=m; if(xw<0)xw=0; \
+                       print x, xw, m, 0; \
+               }'` -i $*.prectf-f32 -o $*.ctfwnd
+
+.ctfwnd.fft-ctfwnd:
+       mrcImageFFT -i $*.ctfwnd -o $*.fft-ctfwnd
+
+# divide a image into subimages 
+.prectf.divideroiinfo:
+       if [ "$(DIVIDE)" = "Y" ] ; then \
+               mrcImageDivideInfoForTomography -i $*.prectf -o $*.divideroiinfo.org -m 1 -d 4 ; \
+               sed 's/roi/divideroi/' $*.divideroiinfo.org | awk -v DIR=$(DIVIDEFILEDIR) '{print DIR"/"$$0}'> $*.divideroiinfo ; \
+               mrcImageROIs -i $*.prectf -o $*.mon -I $*.divideroiinfo -S 1 ;\
+       else \
+               touch $*.divideroiinfo; \
+       fi
+
+# FT of subimages
+.divideroiinfo.fft:
+       if [ "$(DIVIDE)" = "Y" ] ; then \
+               awk '{ printf("%s\n", $$1); }' $*.divideroiinfo ; \
+               for i in $$( awk '{ printf("%s\n", $$1); }' $*.divideroiinfo ) ; do \
+                       dividefilename=`basename $$i .divideroi`; \
+                       dividefiledir=`dirname $$i`; \
+                       dividefilename=$$dividefiledir/$$dividefilename ; \
+                       echo $$dividefilename; \
+                       mrcImageAbnormalValueRemove -i $$dividefilename.divideroi -o $$dividefilename.divideab -m 1 ; \
+                       mrcImagePad -i $$dividefilename.divideab -o $$dividefilename.dividepad -W $(PADSIZEX) -H $(PADSIZEY) -m 3 ; \
+                       mrcImageFFT -i $$dividefilename.dividepad -o $$dividefilename.fft ; \
+               done ; \
+               touch $*.fft; \
+       else \
+               mrcImageFFT -i $*.prectf -o $*.fft; \
+       fi
+
+# Estimate of sumimage CTFs
+.fft.ctfinfo:
+       if [ ! -f $*.ctfinfo ] ; then \
+               if [ -f $(DEFCTFINFO) ]; then \
+                       cat $(DEFCTFINFO) > $*.ctfinfo ; \
+               fi; \
+               if [ -f $(PREVCTFINFO) ; ] then ; \
+                       for tterm in Imax Imin Inoise Isignal MTF defocus2D0 defocus2D1 defocus0axis; do \
+                               cmd="awk '/^$$tterm:/ {DD=¥$$2} END {print ¥"$$tterm: ¥", DD }' $(PREVCTFINFO) >> $*.ctfinfo"; \
+                               echo $$cmd; \
+                               eval $$cmd; \
+                       done; \
+               fi ; \
+       fi ; \
+       if [ "$(USE_DEFOCUS_WINDOW)" = "Y" ] ; then \
+               ctfDisplay -i $*.fft-ctfwnd ; \
+       else \
+               ctfDisplay -i $*.fft ; \
+       fi
+       cp $*.ctfinfo $(PREVCTFINFO) 
+
+
+# CTF Correction
+.ctfinfo.ctf:
+       if [ "$(DIVIDE)" = "Y" ] ; then \
+               for i in $$( awk '{ printf("%s\n", $$1); }' $*.divideroiinfo ) ; do \
+                       dividefilename=`basename $$i .divideroi`; \
+                       dividefiledir=`dirname $$i`; \
+                       dividefilename=$$dividefiledir/$$dividefilename ; \
+                       echo $$dividefilename; \
+                       mrcImageCTFCompensation -i $$dividefilename.fft -o $$dividefilename.ctf -info2 $$dividefilename.ctfinfo -m 1 2>  $$dividefilename.ctfinfo.error ; \
+                       mrcImageCenterGet -i $$dividefilename.ctf -o $$dividefilename.ctfcentre -Nx $(ROISIZEX) -Ny $(ROISIZEY) ; \
+               done; \
+               touch $*.ctf; \
+       else \
+               mrcImageCTFCompensation -i $*.fft -o $*.ctf -info2 $*.ctfinfo -m 1  ; \
+       fi
+
+# Merage sumimages into a single image.
+.ctf.mrc:
+       if [ "$(DIVIDE)" = "Y" ] ; then \
+               cat $*.divideroiinfo | sed s/divideroi/ctfcentre/g > $*.divideroiinfo2 ; \
+               mrcImageCTFCompensationForTiltImage -i $*.prectf -I $*.divideroiinfo2 -o $*.prerot ; \
+               mrcImageRotation -i $*.prerot -o $*.mrc -a `awk 'BEGIN {print -1*$(TILTAXISANGLE1) }'` ; \
+       else \
+               mrcImageRotation -i $*.ctf -o $*.mrc -a `awk 'BEGIN {print -1*$(TILTAXISANGLE1) }'` ; \
+       fi
+
+#
+#
+# 
+#
+#
+.SUFFIXES: .smth .wnd .mrcsmth
+
+PreFilter::
+       make Smoothing 
+       make Windowing
+
+Smoothing::
+       for (( j=1 ; $$j <= $(TILTAXISNUMBER) ; j=$$(($$j + 1 )))) \
+               do \
+                       if [ $$j -eq 1 ]; then \
+                               orifile=$(ORIFILE1); \
+                       else \
+                               orifile=$(ORIFILE2); \
+                       fi ; \
+                       for (( i=$(MINTILTNUM) ; $$i <= $(MAXTILTNUM) ; i=$$(($$i + $(STEPTILTNUM))))) \
+                               do \
+                                       ori=`printf $(NAMEFORMAT) $$orifile $$i`; \
+                                       echo $$ori; \
+                                       make $$ori.smth; \
+                               done ; \
+               done
+
+.mrc.smth:
+       mrcImageSmoothing -i $*.mrc -o $*.smth -sx $(SMOOTH2Dr) -sy $(SMOOTH2Dr) -m 1 
+
+Windowing::
+       for (( j=1 ; $$j <= $(TILTAXISNUMBER) ; j=$$(($$j + 1 )))) \
+               do \
+                       if [ $$j -eq 1 ]; then \
+                               orifile=$(ORIFILE1); \
+                       else \
+                               orifile=$(ORIFILE2); \
+                       fi ; \
+                       for (( i=$(MINTILTNUM) ; $$i <= $(MAXTILTNUM) ; i=$$(($$i + $(STEPTILTNUM))))) \
+                               do \
+                                       ori=`printf $(NAMEFORMAT) $$orifile $$i`; \
+                                       echo $$ori; \
+                                       make $$ori.wnd; \
+                                       case "$$j" in \
+                                               1) \
+                                                       cp $$ori.wnd $$ori.mrcsmth; \
+                                                       ;; \
+                                               2) \
+                                                       mrcImageRotation -i $$ori.wnd -o $$ori.mrcsmth -a $(ROTATIONANGLE) ; \
+                                                       ;; \
+                                       esac;  \
+                               done ; \
+               done
+
+.smth.wnd:
+       mrcImageWindowing -i $*.smth -o $*.wnd -m 16
+
+####
+####
+
+CoarseAlign::
+       for (( j=1 ; j <= $(TILTAXISNUMBER) ; j++ )) \
+               do \
+                       if [ $$j -eq 1 ]; then \
+                               orifile=$(ORIFILE1); \
+                               oribase=$(ORIFILE1)_0$(ZEROTILTNUM); \
+                       else \
+                               orifile=$(ORIFILE2); \
+                       fi ; \
+                       ORIZEROFILE=$$oribase.mrcsmth; \
+                       previous=$$oribase ; \
+                       echo "Create the zero-tilt Image ROI (same as mrcsmth, just copy)"; \
+                       make $$oribase.roiinfo-coarse; echo "$$oribase.roi will be created."; \
+                       make $$oribase.roiall-coarse ; echo "$$oribase.roi was created." ; \
+                       make $$oribase.orimrccentre  ; echo "The centre of $$oribase.roi was created." ; \
+                       make $$oribase.orimrccentrewnd  ; echo "The window of $$oribase.roi was created." ; \
+                       for delta in +$(STEPTILTNUM) -$(STEPTILTNUM) ; do \
+                       echo "$$delta"; \
+                       previous=$$oribase; \
+                       TOTALX=0 ; \
+                       TOTALY=0 ; \
+                       echo "Total: $$TOTALX $$TOTALY" > $$previous.oricorinfo; \
+                       for (( i=$$(($(ZEROTILTNUM) + $$delta )) ; (( $(MINTILTNUM) <= $$i && $$i <= $(MAXTILTNUM)  )) ; i=$$(($$i + $$delta)) )) \
+                               do \
+                                       ori=`printf $(NAMEFORMAT) $$orifile $$i`; \
+                                       echo $$i, $(MAXTILTNUM), $(MINTILTNUM); \
+                                       echo $$previous > $$ori.prevname ; \
+                                       ln -sf $$previous.roiinfo-coarse $$ori.roiinfoprev-coarse ; make $$ori.roiinforef-coarse ; \
+                                       make $$ori.roiallref-coarse ; \
+                                       make $$ori.orimrccentre ;     \
+                                       make $$ori.orimrccentrewnd ;  \
+                                       TOTALX=`awk '/Total:/ { print $$2 }' $$previous.oricorinfo`; \
+                                       TOTALY=`awk '/Total:/ { print $$3 }' $$previous.oricorinfo`; \
+                                       ln -sf $$previous.orimrccentrewnd $$ori.oriref ; make $$ori.oricorinfo ; \
+                                       echo "TotalPrev: $$TOTALX $$TOTALY" >> $$ori.oricorinfo; \
+                                       make $$ori.roiinfo-coarse; \
+                                       make $$ori.roiall-coarse; \
+                                       make $$ori.orimrccentre    ; \
+                                       make $$ori.orimrccentrewnd ; sleep 1; \
+                                       touch $$ori.oricorinfo   ; sleep 1; \
+                                       touch $$ori.roiinfo-coarse; sleep 1; \
+                                       touch $$ori.roiall-coarse; sleep 1; \
+                                       previous=$$ori; \
+                               done ; \
+                       echo $$i; \
+                       done ; \
+               done
+
+CleanCoarseAlign::
+       rm *.roicorinfo *.roiinfo-coarse *.roiall-coarse *.roiref-coarse *roiinfoprev-coarse *.roi *.roiallref-coarse *.orimrccentre *.orimrccentrewnd *.oricorinfo 
+
+### Create roiinfo for ZEROTILT ROI(centre)
+$(ORIFILE1)_0$(ZEROTILTNUM).roiinfo-coarse:
+       printf "$(NAMEFORMAT).roi Rect2 %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f\n" $(ORIFILE1) $(ZEROTILTNUM) $$(($(ORISIZEX)/2)) $$(($(ORISIZEY)/2)) $(ORISIZEX) $(ORISIZEY) > $(ORIFILE1)_0$(ZEROTILTNUM).roiinfo-coarse 
+
+$(ORIFILE2)_0$(ZEROTILTNUM).roiinfo-coarse:
+       printf "$(NAMEFORMAT).roi Rect2 %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f\n" $(ORIFILE2) $(ZEROTILTNUM) $$(($(ORISIZEX)/2)) $$(($(ORISIZEY)/2)) $(ORISIZEX) $(ORISIZEY) > $(ORIFILE2)_0$(ZEROTILTNUM).roiinfo-coarse 
+
+### Calculate Correlation between primrccentre and oriref
+.orimrccentre.oricorinfo:
+       echo "orimrccentre -> oricorinfo: SHIFT:= current.orimrccentre for prev.oirmrccentre"
+       mrcImageCorrelation -i $*.orimrccentre -r $*.oriref -c $*.oricorinfo -o $*.oricormap -m $(CORMODE) -s $*.orishift
+
+### Create roiinfo for ROI(centre)
+.oricorinfo.roiinfo-coarse:
+       TOTALX=`awk '/TotalPrev:/ { print $$2 }' $*.oricorinfo`; \
+       TOTALY=`awk '/TotalPrev:/ { print $$3 }' $*.oricorinfo`; \
+       SHIFTX=`awk '/Shift:/ { print $$2 }' $*.oricorinfo`; \
+       SHIFTY=`awk '/Shift:/ { print $$3 }' $*.oricorinfo`; \
+       echo "$$TOTALX,$$TOTALY"; \
+       echo "$$SHIFTX,$$SHIFTY"; \
+       if [ $$(($(ORINX)/2)) -lt $$SHIFTX ]; then  \
+               SHIFTX=$$(($$SHIFTX - $(ORINX))) ; \
+       fi ; \
+       if [ $$(($(ORINY)/2)) -lt $$SHIFTY ]; then  \
+               SHIFTY=$$(($$SHIFTY - $(ORINY))) ; \
+       fi ; \
+       TOTALX=$$(($$TOTALX + $$SHIFTX)) ; \
+       TOTALY=$$(($$TOTALY + $$SHIFTY)) ; \
+       echo "Total: $$TOTALX $$TOTALY" >> $*.oricorinfo; \
+       printf "%s.roi Rect2 %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f\n" $* $$(($(ORISIZEX)/2+$$TOTALX)) $$(($(ORISIZEY)/2+$$TOTALY)) $(ORISIZEX) $(ORISIZEY) $$TOTALX $$TOTALY > $*.roiinfo-coarse ;
+
+### Create ROI for ROI
+.roiinfo-coarse.roiall-coarse:
+       make $*.mrcsmth
+       mrcImageROIs -i $*.mrcsmth -I $*.roiinfo-coarse
+       echo "ROI Created"
+       touch $*.roiall-coarse 
+
+### Create ROI for reference
+.roiinfoprev-coarse.roiinforef-coarse:
+       previous=`cat $*.prevname`; \
+       sed -e s/$$previous/$*/ $*.roiinfoprev-coarse  > $*.roiinforef-coarse
+#      sed -s s/$$previous/$*/ $*.roiinfoprev-coarse  > $*.roiinforef-coarse
+
+.roiinforef-coarse.roiallref-coarse:
+       mrcImageROIs -i $*.mrcsmth -I $*.roiinforef-coarse
+       touch $*.roiallref-coarse
+
+###
+.roi.orimrccentre:
+       echo "roi -> orimrccentre"
+       mrcImageCenterGet -i $*.roi -o $*.orimrccentre -Nx $(ORINX) -Ny $(ORINY) -Nz $(ORINZ)
+
+.orimrccentre.orimrccentrewnd:
+       mrcImageWindowing -i $*.orimrccentre -o $*.orimrccentrewnd -m 18 \
+               -W $(WINMIN) $(WINMAX) $(WINMIN) $(WINMAX)
+       #mv $*.wnd $*.orimrccentre
+
+### Check CoarseAlign by smolet
+CoarseAlignDisplay:
+       make CoarseAlign.lst
+       smolet -i CoarseAlign
+       
+CoarseAlign.lst:
+       rm -f CoarseAlign.lst
+       for i in `ls -1 *.mrc`; do  \
+               BASE=`basename $$i .mrc`; \
+               make $$BASE.lst ; \
+               echo $$BASE.roi.tif >> CoarseAlign.lst ; \
+       done
+
+.roi.lst:
+       mrc2tiff -i $*.roi -o $*.roi.tif -I
+       ln -sf $*.roi.tif $*.lst
+
+GIFAnim:
+       for i in `ls -1 *.roi`; do  \
+               BASE=`basename $$i .roi`; \
+               make $$BASE.gif ; \
+       done
+       convert -delay 10 -loop 0 *.gif COASE.GIF
+       
+.lst.gif:
+       convert -geometry 50%x50% $*.roi.tif $*.gif
+       
+###################################################### 
+#
+# ROI Selection 
+#
+
+RoiSelection:
+       Display2 -i $(ORIBASE).mrcsmth 
+       if [ -f $(ORIBASE).mrcsmth.roiinfo  ]  ; then \
+               cp $(ORIBASE).mrcsmth.roiinfo $(ORIBASE).roiinfo; \
+       fi
+       mv  $(ORIBASE).roiinfo  $(ORIBASE).roiinfo.org
+       sed -e s/.mrcsmth// $(ORIBASE).roiinfo.org > $(ORIBASE).roiinfo
+       mrcImageROIs -i  $(ORIBASE).mrcsmth -I  $(ORIBASE).roiinfo
+#      if [ $(TILTAXISNUMBER) -eq 2 ]; then \
+#              Display2 -i $(ORIFILE2)_0$(ZEROTILTNUM).mrc ;\
+#      fi; \
+               
+
+BoxCreate::
+       for (( j=1 ; $$j <= $(TILTAXISNUMBER) ; j=$$(($$j + 1 )))) \
+               do \
+                       if [ $$j -eq 1 ]; then \
+                               orifile=$(ORIFILE1); \
+                               oribase=$(ORIFILE1)_0$(ZEROTILTNUM); \
+                       else \
+                               orifile=$(ORIFILE2); \
+                       fi ; \
+                       BASE=$$oribase; \
+                       make $$BASE.roiall ; \
+                       for delta in +$(STEPTILTNUM) -$(STEPTILTNUM) ; \
+                               do \
+                                       echo $$delta,$$BASE ;  \
+                                       previous=$$BASE ; \
+                                       for (( i=$$(($(ZEROTILTNUM)+$$delta)) ; (( $(MINTILTNUM) <= $$i && $$i <= $(MAXTILTNUM) )) ; i=$$(($$i + $$delta)) )) \
+                                               do  \
+                                                       name=`printf "$(NAMEFORMAT)" $$orifile $$i`; \
+                                                       echo ">>>> $$name $$i start: $(ZEROTILTNUM) $$(($(ZEROTILTNUM)+$$delta))"; \
+                                                       echo $$previous > $$name.prevname; \
+                                                       ln -sf $$previous.roiinfo $$name.roiinfoprev ; sleep 1; \
+                                                       make $$name.roiinforef ; \
+                                                       make $$name.roiinfo ; \
+                                                       make $$name.roiall ; \
+                                                       previous=$$name ; \
+                                               done  ; \
+                               done ; \
+               done
+
+CleanBoxCreate::
+       rm *.roiall *.roiinfoprev *.roiinforef 
+
+CleanDataCreate::
+       rm *.ctf *.ctfinfo *.divideroiinfo *.fft *.mrc *.prectf
+
+CleanRoiDisplay::
+       rm *.roiall *.roiinfoprev *.roiinforef *.pad *.roi.tif *.lst *.roiinfo *.roilst
+
+.roiinfo.roiall:
+       make $*.roi
+       mrcImageROIs -i $*.roi -I $*.roiinfo
+       touch $*.roiall
+
+.roiinforef.roiallref:
+       mrcImageROIs -i $*.roi -I $*.roiinforef
+       touch $*.roiallref
+
+.roi.corinfo:
+       mrcImageWindowing -i $*.ref -o $*.refwin -W 0.35 0.2 0.35 0.2 -m 18
+       mrcImageCorrelation -i $*.roi -r $*.refwin -c $*.corinfo  -m $(CORMODE)
+
+.roiinforef.roiinfo:
+       # Extract ROIs using roiinfo of previous image (roiinforef)
+       previous=`cat $*.prevname`; \
+       echo $$previous; \
+       echo "start initial ROI"; \
+       make $*.roiallref ; \
+       ROINUM=`wc -l $*.roiinforef | awk '{print $$1}'` ; \
+       echo $$ROINUM ; \
+       rm -f $*.roiinfo ; \
+       for (( j=0 ; $$j < $$ROINUM ; j=$$(($$j+1)))) \
+       do  \
+               input=`printf "%s-%04d" $*         $$j`; \
+               refer=`printf "%s-%04d" $$previous $$j`; \
+               echo $$input, $$refer ; \
+               ln -sf $$refer.roi $$input.ref ; \
+               echo "correlation"; ls -l $$input.ref $$input.roi ;  \
+               make $$input.corinfo ; \
+               SHIFTX=`awk '/Shift:/ { print $$2 }' $$input.corinfo`; \
+               SHIFTY=`awk '/Shift:/ { print $$3 }' $$input.corinfo`; \
+               echo "$$SHIFTX,$$SHIFTY,$$input"; \
+               awk -v SHIFTXAWK0=$$SHIFTX -v SHIFTYAWK0=$$SHIFTY -v NAMEAWK=$$input -v BASEAWK=$* \
+                ' /'"$$input"'/ { \
+                       SizeX = int(sqrt(($$5-$$3)*($$5-$$3)+( $$6-$$4)*( $$6-$$4))+0.5)+1; \
+                       SizeY = int(sqrt(($$9-$$3)*($$9-$$3)+($$10-$$4)*($$10-$$4))+0.5)+1; \
+                       if(SizeX/2<SHIFTXAWK0) { \
+                               SHIFTXAWK0 -= SizeX ; \
+                       } \
+                       if(SizeY/2<SHIFTYAWK0) { \
+                               SHIFTYAWK0 -= SizeY ; \
+                       } \
+                       Angle = atan2($$6-$$4, $$5-$$3) ; \
+                       SHIFTXAWK = +1*( SHIFTXAWK0*cos(Angle) - SHIFTYAWK0*sin(Angle)); \
+                       SHIFTYAWK = +1*( SHIFTXAWK0*sin(Angle) + SHIFTYAWK0*cos(Angle)); \
+                       printf("%s-%04d.roi Rect %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f %15.6f\n", BASEAWK, FNR-1, $$3+SHIFTXAWK, $$4+SHIFTYAWK, $$5+SHIFTXAWK, $$6+SHIFTYAWK, $$7+SHIFTXAWK, $$8+SHIFTYAWK, $$9+SHIFTXAWK, $$10+SHIFTYAWK, SHIFTXAWK, SHIFTYAWK, Angle*180/3.141592653589793238, SizeX, SizeY);}' \
+                $*.roiinforef | tee -a $*.roiinfo ; \
+       done ; 
+
+.roiinfoprev.roiinforef:
+       previous=`cat $*.prevname`; \
+       sed -e s/$$previous/$*/ $*.roiinfoprev  > $*.roiinforef
+#      sed -s s/$$previous/$*/ $*.roiinfoprev  > $*.roiinforef
+
+### Check BoxCreate by smolet
+BoxCreateDisplay:
+       for i in `ls -1 *.mrc`;do \
+               BASE=`basename $$i .mrc`; \
+               echo "$$BASE";\
+               make $$BASE.box ;\
+       done
+       smolet -i CoarseAlign
+       
+.roiinfo.box:
+       awk '{ print $$3, $$4,  $$5-$$3, $$10-$$4 ,-3}' $*.roiinfo > $*.roi.box
+
+###
+Prefilter2::
+       for (( k=1 ; $$k <= $(TILTAXISNUMBER) ; k=$$(($$k + 1 )))) do \
+               if [ $$k -eq 1 ]; then \
+                       orifile=$(ORIFILE1); \
+               else \
+                       orifile=$(ORIFILE2); \
+               fi ; \
+               oribase=`printf "$(NAMEFORMAT)" $$orifile $(ZEROTILTNUM)`; \
+               roiNum=`wc -l  $$oribase.roiinfo | awk '{print $$1}' `; \
+               for ((i=$(MINTILTNUM);i<=$(MAXTILTNUM);i=$$(($$i+$(STEPTILTNUM))) )) do \
+                       for((j=0;j<$$roiNum;j=$$(($$j+1)))) do \
+                               name=`printf "$(NAMEFORMAT)-%04d" $$orifile $$i $$j` ; \
+                               echo $$(($$i-$(ZEROTILTNUM))) > $$name.tilt ; \
+                               zangle=`head -n $$(($$j + 1)) $$oribase.roiinfo | tail -n 1 | awk '{ dy=$$6-$$4; dx=$$5-$$3; print -1.0*atan2(dy, dx)/3.141592653589793238*180.0; }' `; \
+                               ln -sf $$name.roi $$name.roi2 ; make ZANGLE=$$zangle $$name.pad ; \
+                               make $$name.mul ; \
+                       done ; \
+               done ; \
+       done
+
+CleanPrefilter2::
+       rm *.pad
+
+.roi2.pad:
+       tilt=`cat $*.tiltangle` ; \
+       echo $$tilt ; \
+       mrcImagePad -i $*.roi2 -o $*.pad -H $(PADSIZEX3D) -W $(PADSIZEY3D) -Tilt $(ZANGLE) $$tilt -m $(IMAGEPADm) -V $(IMAGEPADV) 
+
+.pad.mul:
+       mrcImageMultiplying -i $*.pad -o $*.mulreal -v $(IMAGEMULTIPLYINGv)
+       mrcImageShrink -i $*.mulreal -o $*.mul -S $(IMAGESHRINK)
+
+roilstCreate::
+#                      oribase=`printf "$(NAMEFORMAT)" $$orifile $(ZEROTILTNUM)`;
+       for (( k=1 ; $$k <= $(TILTAXISNUMBER) ; k=$$(($$k + 1 )))) do \
+                       if [ $$k -eq 1 ]; then \
+                               orifile=$(ORIFILE1); \
+                       else \
+                               orifile=$(ORIFILE2); \
+                       fi ; \
+                       oribase=`printf "$(NAMEFORMAT)" $(ORIFILE1) $(ZEROTILTNUM)`; \
+                       roiNum=`wc -l  $$oribase.roiinfo | awk '{print $$1}' `; \
+                       echo "ROIAreaNumber: $$roiNum"; \
+                       for (( i=0 ; $$i < $$roiNum ; i=$$(($$i + 1)))) do \
+                                       tiltnum=`printf "%s%04d" $$orifile $$i`; echo $$tiltnum; \
+                                       zangle=`head -n $$(($$i + 1)) $$oribase.roiinfo | tail -n 1 | awk '{ dy=$$6-$$4; dx=$$5-$$3; print -1.0*atan2(dy, dx)/3.141592653589793238*180.0; }' `; \
+                                       echo "$$i" > $$tiltnum.roilst0; \
+                                       make ORIFILE=$$orifile ZANGLE=$$zangle $$tiltnum.roilst ; \
+                       done ; \
+       done ; \
+       roiNum=`wc -l  $$oribase.roiinfo | awk '{print $$1}' `; \
+       echo $$roiNum; \
+       for (( i=0 ; $$i < $$roiNum ; i=$$(($$i + 1)))) do \
+                       tiltnum=`printf "%04d" $$i`; \
+                       echo "$$i" > $$tiltnum.roilst0; \
+                       rm -f $$tiltnum-d.roist; \
+                       cat $(ORIFILE1)$$tiltnum.roilst >> $$tiltnum-d.roilst ; \
+                       cat $(ORIFILE2)$$tiltnum.roilst >> $$tiltnum-d.roilst ; \
+       done
+
+Cleanroilst::
+       rm *.roilst
+
+.roilst0.roilst:
+#                              printf "%s %s %f %f %f\n" $$orifiletilt-$$num.mul $(EULARANGLE) $(ZANGLE) $$angle 0 >> $*.roilst ; \
+#                              printf "%s %s %f %f %f\n" $$orifiletilt-$$num.mul $(EULARANGLE) $(ZANGLE) 0 $$angle >> $*.roilst ;
+               i=`cat $*.roilst0`; \
+               orifile=$(ORIFILE); \
+               oribase=`printf "$(NAMEFORMAT)" $$orifile $(ZEROTILTNUM)`; \
+               num=`printf "%04d" $$i`; \
+               roiname=`printf "%s-%04d" $$oribase $$i`; \
+               echo "$$roiname in $$oribase.roiinfo"; \
+               if [ $$orifile = $(ORIFILE1) ]; then \
+                       echo "$*.roilst creating" ; \
+                       rm $*.roilst ; \
+                       for ((i=$(MINTILTNUM);i<=$(MAXTILTNUM);i=$$(($$i+$(STEPTILTNUM))) )) do \
+                               orifiletilt=`printf "$(NAMEFORMAT)" $$orifile $$i` ; \
+                               angle=`cat $$orifiletilt.tiltangle` ; \
+                               printf "%s %s %f %f %f\n" $$orifiletilt-$$num.roi $(EULARANGLE) $(ZANGLE) $$angle 0 >> $*.roilst ; \
+                       done ; \
+               elif [ $$orifile = $(ORIFILE2) ]; then  \
+                       echo "$*.roilst creating" ; \
+                       rm $*.roilst ; \
+                       for ((i=$(MINTILTNUM);i<=$(MAXTILTNUM);i=$$(($$i+$(STEPTILTNUM))) )) do \
+                               if [ $$i -ne $(ZEROTILTNUM) ]; then \
+                                       orifiletilt=`printf "$(NAMEFORMAT)" $$orifile $$i` ; \
+                                       angle=`cat $$orifiletilt.tiltangle` ; \
+                                       printf "%s %s %f %f %f\n" $$orifiletilt-$$num.roi $(EULARANGLE) $(ZANGLE) 0 $$angle >> $*.roilst ; \
+                               fi; \
+                       done ; \
+               else \
+                       echo "Filename is strange!" ; \
+                       exit; \
+               fi
+
+roiDisplay:
+       roiLst=`ls -1 *-d.roilst`;  \
+       echo $$roiLst; \
+       for i in $$roiLst; do \
+               echo $$i; \
+               BASE=`basename $$i .roilst`; \
+               echo $$BASE; \
+               awk '/mul/ { gsub(/mul/, "lst"); print $$1 }' $$i > $$BASE.lst ; \
+               for j in `cat $$BASE.lst`; do \
+                       make $$j; \
+               done ; \
+               smolet -i $$BASE; \
+       done
+
+3D::
+       roiNum=`ls -1 *-d.roilst | wc -l `; \
+       echo $$roiNum; \
+       for (( i=0 ; $$i < $$roiNum ; i=$$(($$i + 1)) )) \
+       do \
+               tiltnum=`printf "%04d-d" $$i`; \
+               make $$tiltnum.mrc3d ; \
+               make $$tiltnum.mrc3dcentre ; \
+               make $$tiltnum.mrc3dcentremed ; \
+               make $$tiltnum.mrc3dcentremedpad ; \
+               make $$tiltnum.ds6 ; \
+       done ;
+#      for (( j=1 ; $$j <= $(TILTAXISNUMBER) ; j=$$(($$j + 1 )))) \
+               do \
+                       if [ $$j -eq 1 ]; then \
+                               orifile=$(ORIFILE1); \
+                       else \
+                               orifile=$(ORIFILE2); \
+                       fi ; \
+       roiNum=`ls -1 $$orifile*.roilst | wc -l `; \
+       echo $$roiNum; \
+       for (( i=0 ; $$i < $$roiNum ; i=$$(($$i + 1)) )) \
+               do \
+                       tiltnum=`printf "%s%04d" $$orifile $$i`; \
+                       make $$tiltnum.mrc3d ; \
+                       make $$tiltnum.mrc3dcentre ; \
+                       make $$tiltnum.mrc3dcentremed ; \
+                       make $$tiltnum.mrc3dcentremedpad ; \
+                       make $$tiltnum.ds6 ; \
+               done ; \
+       done
+
+Clean3D::
+       rm *.mrc3d
+
+.roilst.mrc3d:
+       mrc2Dto3D -I $*.roilst -o $*.mrc3d -single 0 -InterpolationMode 2 -m 1 
+       
+.mrc3d.mrc3dcentre:
+       mrcImageCenterGet -i $*.mrc3d -o $*.mrc3dcentre -Nx $(CENTERNX) -Ny $(CENTERNY) -Nz $(CENTERNZ)
+
+.mrc3dcentre.mrc3dcentremed:
+       mrcImageSmoothing -i $*.mrc3dcentre -o $*.mrc3dcentremed -r $(SMOOTHr) -m $(SMOOTHm) -M $(SMOOTHM)
+
+.mrc3dcentremed.mrc3dcentremedpad:
+        mrcImage3DPad -i $*.mrc3dcentremed -o $*.mrc3dcentremedpad -r 90 -m 1 -M 1 -v 0
+
+.mrc3dcentremedpad.ds6:
+       mrc2map -i $*.mrc3d -o $*.ds6 -mul $(MRC2MAPmul)
+       mrc2map -i $*.mrc3dcentre -o $*.centre.ds6 -mul $(MRC2MAPmul)
+       mrc2map -i $*.mrc3dcentremed -o $*.centremed.ds6 -mul $(MRC2MAPmul)
+       mrc2map -i $*.mrc3dcentremedpad -o $*.centremedpad.ds6 -mul $(MRC2MAPmul)
+
+#### Commands(Add later) ####
+Initial::
+       make $(TARGET).$(INI_3D1_EXT);
+#      make $(TARGET).$(INI_3DB_EXT);
+#      make $(TARGET).$(INI_3D_EXT);
+       cp $(TARGET).$(INI_3D1_EXT) $(TARGET).$(INI_3D_EXT);
+#      make $(TARGET).$(INI_2D_EXT);
+       make $(TARGET).$(INI_2D_EXT)1;
+#      make TestData2DSet;
+       make TestData2DSetDouble;
+
+TestData2DSet::
+       mrcInfo -i $(TARGET).$(INI_2D_EXT) -o INFO;
+       @loopmax=$$(cat INFO | awk '/Tailer/ {printf("%d\n", $$3)}'); \
+       LineMax=`expr $$loopmax \* 4`; \
+       for (( LoopNum = 0; LoopNum < $$loopmax; LoopNum++ )) \
+       do \
+               WorkNum=`expr $$LoopNum \* 4 + 4`; \
+               rdata=$$(tail -$$LineMax INFO | head -$$WorkNum | tail -1); \
+               rot1=$$(echo $$rdata | awk '{printf"%s", $$1}' ); \
+               rot2=$$(echo $$rdata | awk '{printf"%s", $$2}' ); \
+               rot3=$$(echo $$rdata | awk '{printf"%s", $$3}' ); \
+               mrcImageSectionGet -i $(TARGET).$(INI_2D_EXT) -o $(TARGET)-$$rot1-$$rot2-$$rot3.$(IN_ROI_EXT) -z $$LoopNum; \
+               i=`expr $$LoopNum + 1`; \
+               ori=`printf "%s_%03d" $(ORIFILE) $$i`; \
+               ln -sf $(TARGET)-$$rot1-$$rot2-$$rot3.$(IN_ROI_EXT) $$ori.mrc; \
+       done;
+       
+TestData2DSetDouble::
+       mrcInfo -i $(TARGET).$(INI_2D_EXT)1 -o INFO;
+       @orifile=$(ORIFILE1); \
+       loopmax=$$(cat INFO | awk '/Tailer/ {printf("%d\n", $$3)}'); \
+       LineMax=`expr $$loopmax \* 4`; \
+       for (( LoopNum = 0; LoopNum < $$loopmax; LoopNum++ )) \
+       do \
+               WorkNum=`expr $$LoopNum \* 4 + 4`; \
+               rdata=$$(tail -$$LineMax INFO | head -$$WorkNum | tail -1); \
+               rot1=$$(echo $$rdata | awk '{printf"%s", $$1}' ); \
+               rot2=$$(echo $$rdata | awk '{printf"%s", $$2}' ); \
+               rot3=$$(echo $$rdata | awk '{printf"%s", $$3}' ); \
+               mrcImageSectionGet -i $(TARGET).$(INI_2D_EXT)1 -o $(TARGET)-$$rot1-$$rot2-$$rot3.$(IN_ROI_EXT) -z $$LoopNum; \
+               ori=`printf $(NAMEFORMAT) $$orifile $$LoopNum`; \
+               echo $$rot2 > $$ori.tiltangle ; \
+               ln -sf $(TARGET)-$$rot1-$$rot2-$$rot3.$(IN_ROI_EXT) $$ori.mrc; \
+       done;
+       mrcInfo -i $(TARGET).$(INI_2D_EXT)2 -o INFO;
+       @orifile=$(ORIFILE2); \
+       loopmax=$$(cat INFO | awk '/Tailer/ {printf("%d\n", $$3)}'); \
+       LineMax=`expr $$loopmax \* 4`; \
+       for (( LoopNum = 0; LoopNum < $$loopmax; LoopNum++ )) \
+       do \
+               WorkNum=`expr $$LoopNum \* 4 + 4`; \
+               rdata=$$(tail -$$LineMax INFO | head -$$WorkNum | tail -1); \
+               rot1=$$(echo $$rdata | awk '{printf"%s", $$1}' ); \
+               rot2=$$(echo $$rdata | awk '{printf"%s", $$2}' ); \
+               rot3=$$(echo $$rdata | awk '{printf"%s", $$3}' ); \
+               mrcImageSectionGet -i $(TARGET).$(INI_2D_EXT)2 -o $(TARGET)-$$rot1-$$rot2-$$rot3.$(IN_ROI_EXT) -z $$LoopNum; \
+               ori=`printf $(NAMEFORMAT) $$orifile $$LoopNum`; \
+               echo $$rot2 > $$ori.tiltangle ; \
+               ln -sf $(TARGET)-$$rot1-$$rot2-$$rot3.$(IN_ROI_EXT) $$ori.mrc; \
+       done;
+
+3DAverage::
+       make DIV_3D_LIST;
+       i=0; \
+       tiltnum=`printf "%s-%04d" $(ORIFILE) $$i`; \
+       cp $$tiltnum.$(DIV_3D_EXT) $(TARGET).$(DIV_3D_EXT)ref;
+       make $(FIT_3D_EXT);
+       make FIT_3D_LIST;
+       mrcImageAverage -i FIT_3D_LIST -o $(TARGET).$(AVE_3D_EXT);
+
+##### Commands(Input to Output) #####
+.$(INI_PDB_EXT).$(INI_3D1_EXT):
+       pdb2mrc -i $(TARGET).$(INI_PDB_EXT) -o $(TARGET).$(INI_3D1_EXT) -m 1;
+
+.$(INI_3D1_EXT).$(INI_3DB_EXT):
+# Adjustment is required to move with the rotation of this loop.
+       mrcInfo -i $*.$(INI_3D1_EXT) | head -5 > INFO;
+       length=$$(tail -1 INFO | awk '{printf("%f", $$4)}'); \
+       sizex=$$(head -1 INFO | awk '{printf("%d", $$4 * 0.6)}'); \
+       sizey=$$(head -1 INFO | awk '{printf("%d", $$5 * 0.6)}'); \
+       sizez=$$(head -1 INFO | awk '{printf("%d", $$6 * 0.6)}'); \
+       mrcImageNullImageCreate -o $*.$(INI_3DB_EXT) -d $$length -Nx $(IN_SIZE_X) -Ny $(IN_SIZE_Y) -Nz $(IN_SIZE_Z); \
+       for (( LoopNum = 0; LoopNum < $(IN_DATA_NUM); LoopNum++ )) \
+       do \
+               echo "Add: $$LoopNum / $(IN_DATA_NUM)"; \
+               rot1=$$(echo "$$LoopNum * 23 % 360" | bc); \
+               rot2=$$(echo "$$LoopNum * 37 % 360" | bc); \
+               mrcImageRotation3D -i $*.$(INI_3D1_EXT) -o $*.tmp -EA XEYR $$LoopNum $$rot1 $$rot2 0; \
+               mrcImage3DPad -i $*.tmp -o $*.tmp2 -Nx $(IN_SIZE_X) -Ny $(IN_SIZE_Y) -Nz $(IN_SIZE_Z) -M 1 -v 0; \
+               shiftx=$$(echo "( $(IN_SIZE_X) - $$sizex ) / 2 - ( $$LoopNum * 37 ) % ( $(IN_SIZE_X) - $$sizex )" | bc); \
+               shifty=$$(echo "( $(IN_SIZE_Y) - $$sizey ) / 2 - ( $$LoopNum * 10 ) % ( $(IN_SIZE_Y) - $$sizey )" | bc); \
+               shiftz=$$(echo "( $(IN_SIZE_Z) - $$sizez ) / 2 - ( $$LoopNum * 17 ) % ( $(IN_SIZE_Z) - $$sizez )" | bc); \
+               mrcImageShift -i $*.tmp2 -o $*.tmp3 -x $$shiftx -y $$shifty -z $$shiftz; \
+               cp $*.$(INI_3DB_EXT) $*.$(INI_3DB_EXT)tmp; \
+               mrcImageAdd -i1 $*.$(INI_3DB_EXT)tmp -i2 $*.tmp3 -o $*.$(INI_3DB_EXT); \
+       done;
+       rm $*.tmp;
+       rm $*.tmp2;
+       rm $*.tmp3;
+       rm $*.$(INI_3DB_EXT)tmp;
+
+.$(INI_3DB_EXT).$(INI_3D_EXT):
+       mrcImageNoiseAdd -i $*.$(INI_3DB_EXT) -o $*.$(INI_3D_EXT) -NS $(NSRATIO);
+
+.$(INI_3D_EXT).$(INI_2D_EXT):
+       mrc3Dto2D -i $*.$(INI_3D_EXT) -o $*.$(INI_2D_EXT) -EulerMode $(IN_ROTMODE) \
+                               -Rot1 $(IN_ROT1MIN) $(IN_ROT1MAX) $(IN_ROT1D) \
+                               -Rot2 $(IN_ROT2MIN) $(IN_ROT2MAX) $(IN_ROT2D) \
+                               -Rot3 $(IN_ROT3MIN) $(IN_ROT3MAX) $(IN_ROT3D) \
+                               -m $(IN_EX_MODE) -InterpolationMode $(IN_MODE);
+
+.$(INI_3D_EXT).$(INI_2D_EXT)1:
+       mrc3Dto2D -i $*.$(INI_3D_EXT) -o $*.$(INI_2D_EXT)1 -EulerMode $(IN_ROTMODE) \
+                               -Rot1 0 0 $(IN_ROT1D) \
+                               -Rot2 $(IN_ROT2MIN) $(IN_ROT2MAX) $(IN_ROT2D) \
+                               -Rot3 0 0 $(IN_ROT3D) \
+                               -m $(IN_EX_MODE) -InterpolationMode $(IN_MODE);
+       mrc3Dto2D -i $*.$(INI_3D_EXT) -o $*.$(INI_2D_EXT)2 -EulerMode $(IN_ROTMODE) \
+                               -Rot1 90 90 $(IN_ROT1D) \
+                               -Rot2 $(IN_ROT2MIN) $(IN_ROT2MAX) $(IN_ROT2D) \
+                               -Rot3 0 0 $(IN_ROT3D) \
+                               -m $(IN_EX_MODE) -InterpolationMode $(IN_MODE);
+
+.$(DIV_3D_EXT).$(FIT_3D_EXT):
+       mrcImageAutoRotationCorrelation3D -i $*.$(DIV_3D_EXT) -r $(TARGET).$(DIV_3D_EXT)ref -fit $*.$(FIT_3D_EXT) -EA XEYR -Rot1 0 355 5 -Rot2 0 355 5 -Rot3 0 0 30 -M 18;
+#      mrcImageAutoRotationCorrelation3D -i $*.$(DIV_3D_EXT) -r $(TARGET).$(DIV_3D_EXT)ref -fit $*.$(FIT_3D_EXT) -EA XEYR -Rot1 0 355 5 -Rot2 0 355 5 -Rot3 0 0 30 -Xrange 0 0 -Yrange 0 0 -Zrange 0 0 -M 18;