--- /dev/null
+#
+# 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;