OSDN Git Service

Add: ASCII -> 2D/3D-Graph by GNUPLOT (But, required to specify gnuplot path ...)
[eos/tutorial.git] / SingleParticle / Reference0 / Makefile
1 #
2 #       This is makefile of Sample for 3D-Reconstrucion.
3 #
4
5 #### Root Makefile ####
6 MAKE_ROOT=Refernce0
7
8 #### Input extention ####
9 # These extensions must all be different.
10 INI_PDB_EXT=pdb
11 INI_3D_EXT=ini3d
12 INI_2D_EXT=ini2d
13 BASE_ROI_EXT=roibase
14 IN_ROI_EXT=roi
15 OUT_PAD_EXT=pad
16 OUT_PCA_EXT=pca
17 ROI_SINO_EXT=sino
18 SINO_FET_EXT=fet
19 SINO_FET0_EXT=width
20 SINO_FET2_EXT=kurtosis
21 REF_SIZE_EXT=size
22 REF_3D_EXT=ref3d
23 REF_2D_EXT=ref2d
24 OUT_CORR_EXT=corinfo
25 NOR_CMAP_EXT=cornor1
26 NOR_CORR_EXT=norinfo
27 3D_INFO_EXT=3dinfo
28 3D_LIST_EXT=3dlst
29 3D_DIV_EXT=3ddivlst
30 OUT_FIT_EXT=norfit
31 OUT_3D_EXT=3d
32 IN_TIFF_EXT=mrc
33 IN_1D_EXT=1d
34 DST_1D_EXT=1ddst
35
36
37 #### Suffixes rule ####
38 .SUFFIXES: .$(INI_PDB_EXT) .$(INI_3D_EXT) .$(BASE_ROI_EXT) .$(INI_2D_EXT) .$(REF_3D_EXT) .$(REF_2D_EXT) .$(IN_ROI_EXT) .$(OUT_PAD_EXT) .$(OUT_PCA_EXT) .$(ROI_SINO_EXT) .$(SINO_FET_EXT) .$(SINO_FET0_EXT) .$(SINO_FET2_EXT) .$(OUT_CORR_EXT) .$(NOR_CORR_EXT) .cordst .cornor1 .cornor2 .cornor3 .cornor4 .$(3D_INFO_EXT) .$(OUT_FIT_EXT) .$(3D_LIST_EXT) $(3D_DIV_EXT) .$(OUT_3D_EXT) .$(IN_TIFF_EXT) .tiff .txt .$(IN_1D_EXT) .$(DST_1D_EXT)
39
40
41 #### INCLUDE ####
42 SHELL=/bin/bash
43
44 -include ${EOS_HOME}/tutorial/TIPS/Help/Makefile/Makefile-lib
45 -include BASE_ROI_LIST
46 -include IN_ROI_LIST
47 -include ROI_SINO_LIST
48 -include OUT_PAD_LIST
49 -include OUT_PCA_LIST
50 -include SINO_FET_LIST
51 -include OUT_CORR_LIST
52 -include 3D_INFO_LIST
53 -include NOR_CORR_LIST
54 -include OUT_3D_LIST
55 -include IN_TIFF_LIST
56 -include 3D_LIST_LIST
57 -include IN_1D_LIST
58
59
60 #### Definition ####
61 # Target structure name 
62 TARGET=Target
63
64 # Interpolation mode(CommonSetting: Input, Ref, Output)
65 IN_MODE=2
66
67 ###For Input Data
68 ## For mrc3Dto2D(Input)
69 # RotMode
70 IN_ROTMODE=XEYS
71 # Rot1
72 IN_ROT1MIN=0
73 IN_ROT1MAX=150
74 IN_ROT1D=30
75 IN_ROT1N=`expr \( $(IN_ROT1MAX) - $(IN_ROT1MIN) \) / $(IN_ROT1D) + 1`
76 # Rot2
77 IN_ROT2MIN=0
78 IN_ROT2MAX=330
79 IN_ROT2D=30
80 IN_ROT2N=`expr \( $(IN_ROT2MAX) - $(IN_ROT2MIN) \) / $(IN_ROT2D) + 1`
81 # Rot3
82 IN_ROT3MIN=0
83 IN_ROT3MAX=0
84 IN_ROT3D=10
85 IN_ROT3N=`expr \( $(IN_ROT3MAX) - $(IN_ROT3MIN) \) / $(IN_ROT3D) + 1`
86 # 0:Mercator 1:Mollweide
87 IN_EX_MODE=1
88 # Noise/Signal-Ratio(if you wish no-noise, set 0)
89 NSRATIO=0
90
91 ## Pre-processing(Pad)
92 # InputPadSize
93 PAD_W=64
94 PAD_H=64
95
96
97 ###For Ref Data
98 ## For Calc Width with PCA
99 # Percentage of BackGround-Threshold
100 PERSD=0.6
101
102 ## For Calc Width with Sinogram
103 # Sinogram delta phi
104 DPHI=1
105
106 ## For Calc Volume
107 # Molecule Number
108 #MOLNUM=43000
109 MOLNUM=19420
110
111 ## mrc3Dto2D(Ref)
112 # RotMode
113 ROTMODE=$(IN_ROTMODE)
114 # Rot1
115 ROT1MIN=$(IN_ROT1MIN)
116 ROT1MAX=$(IN_ROT1MAX)
117 ROT1D=$(IN_ROT1D)
118 ROT1N=`expr \( $(ROT1MAX) - $(ROT1MIN) \) / $(ROT1D) + 1`
119 # Rot2
120 ROT2MIN=$(IN_ROT2MIN)
121 ROT2MAX=$(IN_ROT2MAX)
122 ROT2D=$(IN_ROT2D)
123 ROT2N=`expr \( $(ROT2MAX) - $(ROT2MIN) \) / $(ROT2D) + 1`
124 # Rot3
125 ROT3MIN=$(IN_ROT3MIN)
126 ROT3MAX=$(IN_ROT3MAX)
127 ROT3D=$(IN_ROT3D)
128 ROT3N=`expr \( $(ROT3MAX) - $(ROT3MIN) \) / $(ROT3D) + 1`
129 # Expansion mode
130 # 0:Mercator 1:Mollweide
131 EX_MODE=$(IN_EX_MODE)
132
133 ### For mrcImageCorrelation
134 # Rot(2D)
135 STEP=12
136 ROTMIN=0
137 ROTMAX=359
138 nROT=`echo "" | awk 'BEGIN {printf 360 / $(STEP)}'`
139
140 # mode
141 COR_MODE=18
142
143 # For Reduce List(range :0 <= p < 100)(if you wish no-reduce, set 0.)
144 REDUCE_P=0
145
146 # For Divide List(range: 0 <= p < 100)(if you wish no-divide, set 0.)
147 DEVIDE_P=0
148
149 # For Fourier Shell Correlation
150 THRES_FSC=0.5
151
152 ### 1D Data Destribution
153 #Delta y(data)
154 DATAN=40
155 #Percentage of border y(Data)
156 PERBORDER=0
157
158 #### For Works ####
159 JOP_NUM=-j 3
160
161
162 #### Rules of the list created ####
163 $(IN_ROI_EXT):$(BASE_ROI_LIST:.$(BASE_ROI_EXT)=.$(IN_ROI_EXT))
164 $(OUT_PAD_EXT):$(IN_ROI_LIST:.$(IN_ROI_EXT)=.$(OUT_PAD_EXT))
165 $(OUT_PCA_EXT):$(OUT_PAD_LIST:.$(OUT_PAD_EXT)=.$(OUT_PCA_EXT))
166 $(ROI_SINO_EXT):$(OUT_PAD_LIST:.$(OUT_PAD_EXT)=.$(ROI_SINO_EXT))
167 $(SINO_FET_EXT):$(ROI_SINO_LIST:.$(ROI_SINO_EXT)=.$(SINO_FET_EXT))
168 $(SINO_FET0_EXT):$(SINO_FET_LIST:.$(SINO_FET_EXT)=.$(SINO_FET0_EXT))
169 $(SINO_FET2_EXT):$(SINO_FET_LIST:.$(SINO_FET_EXT)=.$(SINO_FET2_EXT))
170 $(OUT_CORR_EXT):$(OUT_PAD_LIST:.$(OUT_PAD_EXT)=.$(OUT_CORR_EXT))
171 $(NOR_CORR_EXT):$(OUT_CORR_LIST:.$(OUT_CORR_EXT)=.$(NOR_CORR_EXT))
172 cordst:$(OUT_CORR_LIST:.$(OUT_CORR_EXT)=.cordst)
173 $(3D_INFO_EXT):$(NOR_CORR_LIST:.$(NOR_CORR_EXT)=.$(3D_INFO_EXT))
174 $(OUT_FIT_EXT):$(3D_INFO_LIST:.$(3D_INFO_EXT)=.$(OUT_FIT_EXT))
175 $(IN_TIFF_EXT):$(OUT_3D_LIST:.$(OUT_3D_EXT)=.$(IN_TIFF_EXT))
176 tiff:$(IN_TIFF_LIST:.$(IN_TIFF_EXT)=.tiff)
177 txt:$(3D_LIST_LIST:.$(3D_LIST_EXT)=.txt)
178 $(DST_1D_EXT):$(IN_1D_LIST:.$(IN_1D_EXT)=.$(DST_1D_EXT))
179
180 BASE_ROI_LIST::
181         touch BASE_ROI_LIST
182         echo "BASE_ROI_LIST=\\" > BASE_ROI_LIST
183         ls -1 *.$(BASE_ROI_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(BASE_ROI_EXT)/$(BASE_ROI_EXT)\\\\/ >> BASE_ROI_LIST
184         echo "" >> BASE_ROI_LIST
185
186 IN_ROI_LIST::
187         touch IN_ROI_LIST
188         echo "IN_ROI_LIST=\\" > IN_ROI_LIST
189         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
190         echo "" >> IN_ROI_LIST
191         
192 ROI_SINO_LIST::
193         touch ROI_SINO_LIST
194         echo "ROI_SINO_LIST=\\" > ROI_SINO_LIST
195         ls -1 *.$(ROI_SINO_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(ROI_SINO_EXT)/$(ROI_SINO_EXT)\\\\/ >> ROI_SINO_LIST
196         echo "" >> ROI_SINO_LIST
197         
198 OUT_PAD_LIST::
199         touch OUT_PAD_LIST
200         echo "OUT_PAD_LIST=\\" > OUT_PAD_LIST
201         ls -1 *.$(OUT_PAD_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(OUT_PAD_EXT)/$(OUT_PAD_EXT)\\\\/ >> OUT_PAD_LIST
202         echo "" >> OUT_PAD_LIST
203         
204 OUT_PCA_LIST::
205         touch OUT_PCA_LIST
206         echo "OUT_PCA_LIST=\\" > OUT_PCA_LIST
207         ls -1 *.$(OUT_PCA_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(OUT_PCA_EXT)/$(OUT_PCA_EXT)\\\\/ >> OUT_PCA_LIST
208         echo "" >> OUT_PCA_LIST
209
210 SINO_FET_LIST::
211         touch SINO_FET_LIST
212         echo "SINO_FET_LIST=\\" > SINO_FET_LIST
213         ls -1 *.$(SINO_FET_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(SINO_FET_EXT)/$(SINO_FET_EXT)\\\\/ >> SINO_FET_LIST
214         echo "" >> SINO_FET_LIST
215
216 SINO_FET0_LIST::
217         touch SINO_FET0_LIST
218         rm SINO_FET0_LIST
219         ls -1 *.$(SINO_FET0_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> SINO_FET0_LIST
220
221 SINO_FET2_LIST::
222         touch SINO_FET2_LIST
223         rm SINO_FET2_LIST
224         ls -1 *.$(SINO_FET2_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> SINO_FET2_LIST
225         
226 OUT_CORR_LIST::
227         touch OUT_CORR_LIST
228         echo "OUT_CORR_LIST=\\" > OUT_CORR_LIST
229         ls -1 *.$(OUT_CORR_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(OUT_CORR_EXT)/$(OUT_CORR_EXT)\\\\/ >> OUT_CORR_LIST
230         echo "" >> OUT_CORR_LIST
231
232 3D_INFO_LIST::
233         touch 3D_INFO_LIST
234         echo "3D_INFO_LIST=\\" > 3D_INFO_LIST
235         ls -1 *.$(3D_INFO_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(3D_INFO_EXT)/$(3D_INFO_EXT)\\\\/ >> 3D_INFO_LIST
236         echo "" >> 3D_INFO_LIST
237
238 NOR_CORR_LIST::
239         touch NOR_CORR_LIST
240         echo "NOR_CORR_LIST=\\" > NOR_CORR_LIST
241         ls -1 *.$(NOR_CORR_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(NOR_CORR_EXT)/$(NOR_CORR_EXT)\\\\/ >> NOR_CORR_LIST
242         echo "" >> NOR_CORR_LIST
243         
244 OUT_3D_LIST::
245         touch OUT_3D_LIST
246         echo "OUT_3D_LIST=\\" > OUT_3D_LIST
247         ls -1 *.$(OUT_3D_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(OUT_3D_EXT)/$(OUT_3D_EXT)\\\\/ >> OUT_3D_LIST
248         echo "" >> OUT_3D_LIST
249         
250 IN_TIFF_LIST::
251         touch IN_TIFF_LIST
252         echo "IN_TIFF_LIST=\\" > IN_TIFF_LIST
253         ls -1 *.$(IN_TIFF_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(IN_TIFF_EXT)/$(IN_TIFF_EXT)\\\\/ >> IN_TIFF_LIST
254         echo "" >> IN_TIFF_LIST
255         
256 IN_TIFF_LIST2::
257         touch IN_TIFF_LIST2
258         rm IN_TIFF_LIST2
259         ls -1 *.$(IN_TIFF_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> IN_TIFF_LIST2
260
261 3D_LIST_LIST::
262         touch 3D_LIST_LIST
263         echo "3D_LIST_LIST=\\" > 3D_LIST_LIST
264         ls -1 *.$(3D_LIST_EXT) | sort -t . -k1,1 -k2 -n |  sed s/$(3D_LIST_EXT)/$(3D_LIST_EXT)\\\\/ >> 3D_LIST_LIST
265         echo "" >> 3D_LIST_LIST
266         
267 IN_1D_LIST::
268         touch IN_1D_LIST
269         echo "IN_1D_LIST=\\" > IN_1D_LIST
270         ls -1 *.$(IN_1D_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n |  sed s/$(IN_1D_EXT)/$(IN_1D_EXT)\\\\/ >> IN_1D_LIST
271         echo "" >> IN_1D_LIST
272
273 #### Commands ####
274 help_Refernce0::
275         @echo "This is makefile of Sample."
276         
277 Initial::
278         make $(TARGET).$(INI_3D_EXT);
279         make $(TARGET).$(INI_2D_EXT);
280         make TestData2DSet;
281         make TestData;
282
283 First::
284         make IN_ROI_LIST;
285         make $(JOP_NUM) $(OUT_PAD_EXT);
286         make OUT_PAD_LIST;
287         make RefSize;
288         make Ref3d_ellipse;
289         cp $(TARGET).$(REF_3D_EXT)ini $(TARGET).$(REF_3D_EXT);
290
291 All::
292         make $(TARGET).$(REF_2D_EXT);
293         make $(JOP_NUM) $(OUT_CORR_EXT);
294         make OUT_CORR_LIST;
295         make ReduceLIST;
296         make CorDistribution;
297         make $(TARGET).$(NOR_CMAP_EXT);
298         make CorNormalize;
299         make NOR_CORR_LIST;
300         touch $(TARGET).$(3D_LIST_EXT);
301         rm $(TARGET).$(3D_LIST_EXT);
302         make $(JOP_NUM) $(3D_INFO_EXT);
303         make 3D_INFO_LIST;
304         make $(JOP_NUM) $(OUT_FIT_EXT);
305         make 3D;
306         make RMSD;
307         make 3DTiff
308
309 Again::
310         touch *.$(OUT_PAD_EXT);
311         cp $(TARGET).$(OUT_3D_EXT) $(TARGET).$(REF_3D_EXT);
312         TMPNAME=`date +%y%m%d%H%M%S`;   \
313         mv $(TARGET).$(3D_LIST_EXT)   $(TARGET).$$TMPNAME.$(3D_LIST_EXT);       \
314         mv $(TARGET).$(OUT_3D_EXT)     $(TARGET).$$TMPNAME.$(OUT_3D_EXT);
315
316 TestData2DSet::
317         mrcInfo -i $(TARGET).$(INI_2D_EXT) -o INFO;
318         @loopmax=$$(cat INFO | awk '/Tailer/ {printf("%d\n", $$3)}'); \
319         LineMax=`expr $$loopmax \* 4`; \
320         for (( LoopNum = 0; LoopNum < $$loopmax; LoopNum++ )) \
321         do \
322                 WorkNum=`expr $$LoopNum \* 4 + 4`; \
323                 rdata=$$(tail -$$LineMax INFO | head -$$WorkNum | tail -1); \
324                 rot1=$$(echo $$rdata | awk '{printf"%s", $$1}' ); \
325                 rot2=$$(echo $$rdata | awk '{printf"%s", $$2}' ); \
326                 rot3=$$(echo $$rdata | awk '{printf"%s", $$3}' ); \
327                 mrcImageSectionGet -i $(TARGET).$(INI_2D_EXT) -o $(TARGET)-$$rot1-$$rot2-$$rot3.$(BASE_ROI_EXT) -z $$LoopNum; \
328         done;
329
330 TestData::
331         make BASE_ROI_LIST;
332         make $(JOP_NUM) $(IN_ROI_EXT);
333
334 RefSize::
335         make RefSizeFromPCA;
336 #       make RefSizeFromFET;
337 #       make RefSizeFromPDB;
338
339 RefSizeFromPCA::
340         touch $(TARGET).$(OUT_PCA_EXT);
341         rm $(TARGET).$(OUT_PCA_EXT);
342         make $(OUT_PCA_EXT);
343         sort -n $(TARGET).$(OUT_PCA_EXT)tmp > $(TARGET).$(OUT_PCA_EXT);
344         rm $(TARGET).$(OUT_PCA_EXT)tmp;
345         make LengthPCA;
346
347 LengthPCA::
348         @rData=$$(head -1 $(TARGET).$(OUT_PCA_EXT)); \
349         max=$(PAD_H); \
350         min=$$(echo "scale=15.6;sqrt( $$(echo $$rData | awk '{printf("%f", $$1)}') ) * $$max" | bc); \
351         mean=$$(echo "scale=15.6; ( $$min + $$max ) / 2" | bc); \
352         echo "Min:      $$min" > $(TARGET).$(REF_SIZE_EXT); \
353         echo "Max:      $$max" >> $(TARGET).$(REF_SIZE_EXT); \
354         echo "Middle:   $$mean" >> $(TARGET).$(REF_SIZE_EXT);
355         @rfile=$$(head -2 OUT_PAD_LIST | tail -1 | sed -e s/\\\\//); \
356         mrcInfo -i $$rfile | head -5 | tail -1 | awk '{printf("Length:  %f\n", $$4)}' >> $(TARGET).$(REF_SIZE_EXT);
357
358 RefSizeFromFET::
359         make FETDistribution;
360         make LengthFET;
361
362 FETDistribution::
363         make IN_ROI_LIST;
364         make $(ROI_SINO_EXT);
365         make ROI_SINO_LIST;
366         make $(SINO_FET_EXT);
367         make SINO_FET_LIST;
368         touch $(TARGET).$(SINO_FET0_EXT);
369         rm $(TARGET).$(SINO_FET0_EXT);
370         make $(SINO_FET0_EXT);
371         make SINO_FET0_LIST;
372         num=$$(wc -l SINO_FET0_LIST | awk '{printf("%d", $$1)}'); \
373         mrcImageMake2DArrayImage -i SINO_FET0_LIST -o $(TARGET).$(SINO_FET0_EXT) -N $$num;
374
375 FETNormalize::
376         mrcImageMakeDump -i $(TARGET).$(SINO_FET0_EXT) -o $(TARGET).$(SINO_FET0_EXT).cordst -m 8;
377         make $(TARGET).$(SINO_FET0_EXT).cornor2;
378         mrcInfo -i $(TARGET).$(SINO_FET0_EXT) | head -1 | awk '{printf("2 %d %d\n"), $$4, $$5}' > TMP;
379         cat TMP $(TARGET).$(SINO_FET0_EXT).cornor2 > $(TARGET).$(SINO_FET0_EXT).arraynor;
380         array2mrc -i $(TARGET).$(SINO_FET0_EXT).arraynor -o $(TARGET).$(SINO_FET0_EXT);
381
382 LengthFET::
383         rData=$$(mrcImageInfo -I -i $(TARGET).$(SINO_FET0_EXT) | head -2 |sed -e s/\(//); \
384         minnum=$$(echo $$rData | awk '{printf("%d"), $$3}'); \
385         minangle=$$(echo $$rData | awk '{printf("%d"), $$4}'); \
386         maxnum=$$(echo $$rData | awk '{printf("%d"), $$8}'); \
387         maxangle=$$(echo $$rData | awk '{printf("%d"), $$9}'); \
388         minfile=$$(head -`expr $$minnum + 2` ROI_SINO_LIST | tail -1 | sed -e s/\\\\//); \
389         maxfile=$$(head -`expr $$maxnum + 2` ROI_SINO_LIST | tail -1 | sed -e s/\\\\//); \
390         mrcImageRectangleGet -i $$minfile -o $(TARGET).min -m 1 -r $$minangle $$minangle 0 0; \
391         mrcImageRectangleGet -i $$maxfile -o $(TARGET).max -m 1 -r $$maxangle $$maxangle 0 0;
392         minthres=$$(mrcImageInfo -I -i $(TARGET).min | head -4 | tail -1 | awk '{printf("%f", $$2)}'); \
393         mrcImageBinalization -i $(TARGET).min -o $(TARGET).minbin -t $$minthres;
394         maxthres=$$(mrcImageInfo -I -i $(TARGET).max | head -4 | tail -1 | awk '{printf("%f", $$2)}'); \
395         mrcImageBinalization -i $(TARGET).max -o $(TARGET).maxbin -t $$maxthres;
396         mrcImageInfo -I -i $(TARGET).minbin | head -6 | tail -1 | awk '{printf("Min:    %f\n", $$2)}' > $(TARGET).$(REF_SIZE_EXT);
397         mrcImageInfo -I -i $(TARGET).maxbin | head -6 | tail -1 | awk '{printf("Max:    %f\n", $$2)}' >> $(TARGET).$(REF_SIZE_EXT);
398         echo "Middle:   10" >> $(TARGET).$(REF_SIZE_EXT);
399         mrcInfo -i $(TARGET).min | head -5 | tail -1 | awk '{printf("Length:    %f\n", $$4)}' >> $(TARGET).$(REF_SIZE_EXT);
400
401 RefSizeFromPDB::
402         pdbPCA -i $(TARGET).$(INI_PDB_EXT) -oPDB PDB -oU ARRAY;
403         pdbInfo -i PDB | head -3 | tail -1 | awk '{printf("Min: %f\nMax:        %f\nMiddle:     %f\n", $$9, $$7, $$8)}' > $(TARGET).$(REF_SIZE_EXT);
404         rfile=$$(head -2 OUT_PAD_LIST | tail -1 | sed -e s/\\\\//); \
405         mrcInfo -i $$rfile | head -5 | tail -1 | awk '{printf("Length:  %f\n", $$4)}' >> $(TARGET).$(REF_SIZE_EXT);
406         rm PDB;
407         rm ARRAY;
408
409 Ref3d_ellipse::
410         rData=$$(cat $(TARGET).$(REF_SIZE_EXT)); \
411         rx=$$(echo $$rData | awk '{printf("%f", $$2)}'); \
412         ry=$$(echo $$rData | awk '{printf("%f", $$4)}'); \
413         rz=$$(echo $$rData | awk '{printf("%f", $$6)}'); \
414         length=$$(echo $$rData | awk '{printf("%f", $$8)}'); \
415         nx=$$(echo "$$rx * $$length" | bc); \
416         ny=$$(echo "$$ry * $$length" | bc); \
417         nz=$$(echo "$$rz * $$length" | bc); \
418         mrcImageGaussSphere     -o $(TARGET).tmp  -m 2 \
419                                                 -sigmax $$rx -sigmay $$ry -sigmaz $$rz \
420                                                 -W $$nx -H $$ny -S $$nz \
421                                                 -size $$length; \
422         mrcImageVolumeCalc -i $(TARGET).tmp -o RINFO -M $(MOLNUM) -D $$length -I 1; \
423         volume=$$(cat RINFO | awk '/ContourLevel\(100\):/ {printf("%f\n", $$2)}'); \
424         mrcImageBinalization -i $(TARGET).tmp -o $(TARGET).$(REF_3D_EXT)ini -t $$volume;
425         rm RINFO;
426         rm $(TARGET).tmp;
427         cp $(TARGET).$(REF_3D_EXT)ini $(TARGET).$(REF_3D_EXT);
428
429 CorDistribution::
430         touch $(TARGET).cordst;
431         rm $(TARGET).cordst;
432         @rfile=$$(head -2 OUT_CORR_LIST | tail -1 | sed -e s/\\\\//); \
433         lmax=`expr $$(cat $$rfile | tail -2 | head -1 | awk '{printf("%d\n", $$1)}') \* 2 + 2`; \
434         fmax=$$(wc -w OUT_CORR_LIST | awk '{printf("%d\n", $$1)}'); \
435         for (( LoopNum = 1; LoopNum <= lmax ; LoopNum += 2 )) \
436         do \
437                 echo CorDistribution: $$LoopNum / $$lmax; \
438                 Data=""; \
439                 for (( LoopFile = 2; LoopFile <= fmax; LoopFile++ )) \
440                 do \
441                         rfile=$$(head -$$LoopFile OUT_CORR_LIST | tail -1 | sed -e s/\\\\//); \
442                         Data+="$$(head -$$LoopNum $$rfile | tail -1 | awk '{printf("%15.6f", $$7)}') "; \
443                 done; \
444                 echo $$Data >> $(TARGET).cordst; \
445         done;
446         
447 CorNormalize::
448         @lmax=$$(wc -l $(TARGET).$(NOR_CMAP_EXT) | awk '{printf("%d\n", $$1)}'); \
449         fmax=`expr $$(wc -w $(TARGET).$(NOR_CMAP_EXT) | awk '{printf("%d\n", $$1)}') / $$lmax`; \
450         for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
451         do \
452                 echo CorNormalize: $$LoopFile / $$fmax; \
453                 WorkNum=`expr $$LoopFile + 1`; \
454                 rfile=$$(head -$$WorkNum OUT_CORR_LIST | tail -1 | sed -e s/\\\\//); \
455                 wfile=$$(echo $$rfile | sed -e s/$(OUT_CORR_EXT)/$(NOR_CORR_EXT)/); \
456                 touch $$wfile; \
457                 rm $$wfile; \
458                 for (( LoopNum = 1; LoopNum <= lmax ; LoopNum++ )) \
459                 do \
460                         NorData=$$(head -$$LoopNum $(TARGET).$(NOR_CMAP_EXT) | tail -1 | awk -v x=$$LoopFile '{printf("%15.6f", $$x)}'); \
461                         WorkNum=`expr $$LoopNum \* 2 - 1`; \
462                         Data=$$(head -$$WorkNum $$rfile | tail -1 | awk -v v="$$NorData" '{printf("%s %s %s %s %s %s ", $$1, $$2, $$3, $$4, $$5, $$6)}; {printf("%15.6f", v)}; {printf(" %s %s %s %s %s %s %s %s %s %s %s %s\n\n", $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19)}'); \
463                         echo $$Data >> $$wfile; \
464                 done; \
465         done;
466
467 3D::
468         @if [ $(DEVIDE_P) -eq 0 ]; then \
469                 make $(TARGET).$(OUT_3D_EXT); \
470         else \
471                 make RefAngleList; \
472                 make DivideLIST; \
473                 make TMP3D; \
474                 make CompareRandom; \
475         fi;
476
477 RMSD::
478         mrcImageNormalizedSubtraction -i1 $(TARGET).$(OUT_3D_EXT) -i2 $(TARGET).$(INI_3D_EXT) -o $(TARGET).tmp > INFO;
479         cat INFO | awk '/RMSD/ {printf("%s      "), $$0}' >> $(TARGET).rmsd;
480         mrcImageNormalizedSubtraction -i1 $(TARGET).$(OUT_3D_EXT) -i2 $(TARGET).$(REF_3D_EXT) -o $(TARGET).tmp > INFO;
481         cat INFO | awk '/RMSD/ {printf("%s\n"), $$0}' >> $(TARGET).rmsd;
482         @rmsd=$$(cat INFO | awk '/RMSD/ {printf("%f"), $$2}'); \
483         if [ $$(echo "$$rmsd <= 0" | bc ) -eq 1 ]; then \
484                 touch END; \
485         fi;
486
487 3DTiff::
488         @for (( loop_num = 0; loop_num <= 2; loop_num++ ))      \
489         do \
490                 export loop_num; \
491                 make $(TARGET).$(IN_TIFF_EXT); \
492                 mv $(TARGET).$(IN_TIFF_EXT) $(TARGET)$$loop_num.$(IN_TIFF_EXT); \
493         done;
494         make IN_TIFF_LIST;
495         make tiff;
496
497 3DTiffAll::
498         make OUT_3D_LIST;
499         @for (( loop_num = 0; loop_num <= 2; loop_num++ ))      \
500         do \
501                 export loop_num; \
502                 make $(IN_TIFF_EXT); \
503                 make ListTiff; \
504                 rm *.$(IN_TIFF_EXT); \
505         done;
506
507 ListTiff::
508         make IN_TIFF_LIST2;
509         Number=`expr $$(wc -l IN_TIFF_LIST2 | awk '{printf("%d", $$1)}') / 1`; \
510         mrcImageMake2DArrayImage -i IN_TIFF_LIST2 -o $(TARGET).tmp -N $$Number;
511         mrc2tiff -i $(TARGET).tmp -o $(TARGET)$$loop_num.tiff;
512         
513 ReduceLIST::
514         @line=`expr $$(wc -l OUT_CORR_LIST | awk '{printf("%d", $$1)}') - 2`; \
515         endline=`expr $$line \* \( 100 - $(REDUCE_P) \) / 100 + 1`; \
516         worknum=`expr $$line + 1`; \
517         cp OUT_CORR_LIST TMP$$worknum; \
518         cp OUT_CORR_LIST OUT_CORR_LIST_TMP; \
519         for (( ; $$endline < $$line; line-- )) \
520         do \
521                 worknum=`expr $$line + 1`; \
522                 random=`expr $$RANDOM % $$line + 2`; \
523                 sed -e "$$random , $$random d" TMP$$worknum > TMP$$line; \
524                 rm TMP$$worknum; \
525                 echo $$line / $$endline Delete L:$$random; \
526         done; \
527         cat TMP`expr $$line + 1` > OUT_CORR_LIST; \
528         rm TMP`expr $$line + 1`;
529         
530 DivideLIST::
531         touch $(TARGET).$(3D_DIV_EXT);
532         rm $(TARGET).$(3D_DIV_EXT);
533         @line=$$(wc -l $(TARGET).$(3D_LIST_EXT) | awk '{printf("%d", $$1)}'); \
534         endline=`expr $$line \* \( 100 - $(DEVIDE_P) \) / 100 + 1`; \
535         worknum=`expr $$line + 1`; \
536         cp $(TARGET).$(3D_LIST_EXT) TMP$$worknum; \
537         cp $(TARGET).$(3D_LIST_EXT)  $(TARGET)_TMP.$(3D_LIST_EXT); \
538         for (( ; $$endline < $$line; line-- )) \
539         do \
540                 worknum=`expr $$line + 1`; \
541                 random=`expr $$RANDOM % $$line + 2`; \
542                 head -$$random TMP$$worknum | tail -1 >> $(TARGET).$(3D_DIV_EXT); \
543                 sed -e "$$random , $$random d" TMP$$worknum > TMP$$line; \
544                 rm TMP$$worknum; \
545                 echo $$line / $$endline Select L:$$random; \
546         done; \
547         cat TMP`expr $$line + 1` > $(TARGET).$(3D_LIST_EXT); \
548         rm TMP`expr $$line + 1`;
549
550 TMP3D::
551         mrc2Dto3D -I $(TARGET).$(3D_LIST_EXT) -o TMP.$(OUT_3D_EXT) -InterpolationMode $(IN_MODE) -Double -CounterThreshold 0.5 -m 1 -WeightMode 2 -DoubleCounter TMP.dc;
552
553 CompareRandom::
554         touch TMP0.$(OUT_3D_EXT);
555         rm TMP0.$(OUT_3D_EXT);
556         @line=$$(wc -l $(TARGET).$(3D_DIV_EXT) | awk '{printf("%d", $$1)}'); \
557         for (( LoopNum = 1; $$LoopNum <= $$line; LoopNum++ )) \
558         do \
559                 echo "CompareRandom $$LoopNum / $$line"; \
560                 head -$$LoopNum $(TARGET).$(3D_DIV_EXT) | tail -1 > TMP1; \
561                 lmax=$$(wc -l $(TARGET).cordst | awk '{printf("%d\n", $$1)}'); \
562                 randomline=`expr $$RANDOM % $$lmax + 1`; \
563                 rData=$$(head -$$randomline REF_ANGLE_LIST | tail -1); \
564                 randomRot1=$$(echo $$rData | awk '{printf("%f", $$1)}'); \
565                 randomRot2=$$(echo $$rData | awk '{printf("%f", $$2)}'); \
566                 randomRot3=$$(echo $$rData | awk '{printf("%f", $$3)}'); \
567                 echo $$randomRot1 $$randomRot2 $$randomRot3; \
568                 cat TMP1 | awk -v v1=$$randomRot1 -v v2=$$randomRot2 -v v3=$$randomRot3 '{printf("%s %s %d %d %d\n", $$1, $$2, v1, v2, v3)}' > TMP2; \
569                 mrc2Dto3D -I TMP1 -o TMP1.$(OUT_3D_EXT) -InterpolationMode $(IN_MODE) -Double -CounterThreshold 0.5 -m 1 -WeightMode 2 -DoubleCounter TMP1.dc; \
570                 mrc2Dto3D -I TMP2 -o TMP2.$(OUT_3D_EXT) -InterpolationMode $(IN_MODE) -Double -CounterThreshold 0.5 -m 1 -WeightMode 2 -DoubleCounter TMP2.dc; \
571                 mrcImageFourierShellCorrelation -i1 TMP1.$(OUT_3D_EXT) -i2 TMP.$(OUT_3D_EXT) | awk '$(THRES_FSC) <= $$2 {print $$0} $(THRES_FSC) > $$2 {exit}' | tail -1 > TMP; \
572                 mrcImageFourierShellCorrelation -i1 TMP2.$(OUT_3D_EXT) -i2 TMP.$(OUT_3D_EXT) | awk '$(THRES_FSC) <= $$2 {print $$0} $(THRES_FSC) > $$2 {exit}' | tail -1 >> TMP; \
573                 rData=$$(cat TMP); \
574                 r1=$$(echo $$rData | awk '{print $$1}'); \
575                 c1=$$(echo $$rData | awk '{print $$2}'); \
576                 r2=$$(echo $$rData | awk '{print $$4}'); \
577                 c2=$$(echo $$rData | awk '{print $$5}'); \
578                 echo "TMP0.$(OUT_3D_EXT)" > AVR_LIST; \
579                 echo "TMP0.dc" > WGT_LIST; \
580                 if [ $$(echo "$$r1 > $$r2" | bc) -eq 1 ]; then \
581                         UseNum=1; \
582                 elif [ $$(echo "$$r1 < $$r2" | bc) -eq 1 ]; then \
583                         echo Change; \
584                         UseNum=2; \
585                 elif [ $$(echo "$$c1 >= $$c2" | bc) -eq 1 ]; then \
586                         UseNum=1; \
587                 else \
588                         echo Change; \
589                         UseNum=2; \
590                 fi; \
591                 if [ -e TMP0.$(OUT_3D_EXT) ]; then \
592                         echo "TMP$$UseNum.$(OUT_3D_EXT)" >> AVR_LIST; \
593                         echo "TMP$$UseNum.dc" >> WGT_LIST; \
594                         mrcImageAverage -i AVR_LIST -o TMPTMP.$(OUT_3D_EXT) -w WGT_LIST -oW TMPTMP.dc; \
595                         cp TMPTMP.$(OUT_3D_EXT) TMP0.$(OUT_3D_EXT); \
596                         cp TMP0.dc TMPTMP.dc; \
597                 else \
598                         cp TMP$$UseNum.$(OUT_3D_EXT) TMP0.$(OUT_3D_EXT); \
599                         cp TMP$$UseNum.dc TMP0.dc; \
600                 fi; \
601         done;
602         if [ -e TMP0.$(OUT_3D_EXT) ]; then \
603                 echo "TMP.$(OUT_3D_EXT)" > AVR_LIST; \
604                 echo "TMP.dc" > WGT_LIST; \
605                 echo "TMP0.$(OUT_3D_EXT)" >> AVR_LIST; \
606                 echo "TMP0.dc" >> WGT_LIST; \
607                 mrcImageAverage -i AVR_LIST -o $(TARGET).$(OUT_3D_EXT) -w WGT_LIST -oW $(TARGET).dc; \
608         else \
609                 cp TMP.$(OUT_3D_EXT) $(TARGET).$(OUT_3D_EXT); \
610                 cp TMP.dc $(TARGET).dc; \
611         fi;
612         
613 RefAngleList::
614         touch REF_ANGLE_LIST;
615         rm REF_ANGLE_LIST;
616         mrcInfo -i $(TARGET).$(REF_2D_EXT) -o INFO;
617         @loopmax=$$(cat INFO | awk '/Tailer/ {printf("%d\n", $$3)}'); \
618         LineMax=`expr $$loopmax \* 4`; \
619         for (( LoopNum = 0; LoopNum < $$loopmax; LoopNum++ )) \
620         do \
621                 WorkNum=`expr $$LoopNum \* 4 + 4`; \
622                 rdata=$$(tail -$$LineMax INFO | head -$$WorkNum | tail -1); \
623                 echo $$rdata | awk '{printf"%s %s %s\n", $$1, $$2, $$3}' >> REF_ANGLE_LIST; \
624         done;
625
626 clean-all::
627 #       rm *.$(INI_PDB_EXT);
628 #       rm *.$(INI_3D_EXT);
629 #       rm *.$(INI_2D_EXT);
630 #       rm *.$(BASE_ROI_EXT);
631 #       rm *.$(IN_ROI_EXT);
632 #       rm *.$(OUT_PAD_EXT);
633         rm *.$(OUT_PCA_EXT);
634 #       rm *.$(ROI_SINO_EXT);
635 #       rm *.$(SINO_FET_EXT);
636 #       rm *.$(SINO_FET0_EXT);
637         rm *.$(SINO_FET2_EXT);
638         rm *.$(REF_SIZE_EXT);
639         rm *.$(REF_3D_EXT);
640         rm *.$(REF_2D_EXT);
641         rm *.$(OUT_CORR_EXT);
642         rm *.$(NOR_CMAP_EXT);
643         rm *.$(NOR_CORR_EXT);
644         rm *.$(3D_INFO_EXT);
645         rm *.$(3D_LIST_EXT);
646         rm *.$(3D_DIV_EXT);
647         rm *.$(OUT_FIT_EXT);
648         rm *.$(OUT_3D_EXT);
649         rm *.$(IN_TIFF_EXT);
650         rm *.tiff
651         rm BASE_ROI_LIST;
652         rm IN_ROI_LIST;
653         rm OUT_PAD_LIST;
654 #       rm ROI_SINO_LIST;
655 #       rm SINO_FET_LIST;
656 #       rm SINO_FET0_LIST;
657         rm SINO_FET2_LIST;
658         rm OUT_CORR_LIST;
659         rm 3D_INFO_LIST;
660         rm NOR_CORR_LIST;
661         rm OUT_3D_LIST;
662         rm IN_TIFF_LIST;
663         rm IN_TIFF_LIST2;
664         rm 3D_LIST_LIST;
665
666 touch-all::
667         touch *.$(INI_PDB_EXT);
668         touch *.$(INI_3D_EXT);
669         touch *.$(INI_2D_EXT);
670         touch *.$(BASE_ROI_EXT);
671         touch *.$(IN_ROI_EXT);
672         touch *.$(OUT_PAD_EXT);
673         touch *.$(OUT_PCA_EXT);
674         touch *.$(ROI_SINO_EXT);
675         touch *.$(SINO_FET_EXT);
676         touch *.$(SINO_FET0_EXT);
677         touch *.$(SINO_FET2_EXT);
678         touch *.$(REF_SIZE_EXT);
679         touch *.$(REF_3D_EXT);
680         touch *.$(REF_2D_EXT);
681         touch *.$(OUT_CORR_EXT);
682         touch *.$(NOR_CMAP_EXT);
683         touch *.$(NOR_CORR_EXT);
684         touch *.$(3D_INFO_EXT);
685         touch *.$(3D_LIST_EXT);
686         touch *.$(3D_DIV_EXT);
687         touch *.$(OUT_FIT_EXT);
688         touch *.$(OUT_3D_EXT);
689         touch *.$(IN_TIFF_EXT);
690         touch *.tiff
691         touch BASE_ROI_LIST;
692         touch IN_ROI_LIST;
693         touch OUT_PAD_LIST;
694         touch ROI_SINO_LIST;
695         touch SINO_FET_LIST;
696         touch SINO_FET0_LIST;
697         touch SINO_FET2_LIST;
698         touch OUT_CORR_LIST;
699         touch 3D_INFO_LIST;
700         touch NOR_CORR_LIST;
701         touch OUT_3D_LIST;
702         touch IN_TIFF_LIST;
703         touch IN_TIFF_LIST2;
704         touch 3D_LIST_LIST;
705
706 Test::
707         make OUT_PAD_LIST;
708         make RefSize;
709         make Ref3d_ellipse;
710
711 ##### Commands(Input to Output) #####
712 .$(INI_PDB_EXT).$(INI_3D_EXT):
713         pdb2mrc -i $(TARGET).$(INI_PDB_EXT) -o $(TARGET).$(INI_3D_EXT) -m 1;
714
715 .$(INI_3D_EXT).$(INI_2D_EXT):
716         mrc3Dto2D -i $(TARGET).$(INI_3D_EXT) -o $(TARGET).$(INI_2D_EXT) -EulerMode $(IN_ROTMODE) \
717                                 -Rot1 $(IN_ROT1MIN) $(IN_ROT1MAX) $(IN_ROT1D) \
718                                 -Rot2 $(IN_ROT2MIN) $(IN_ROT2MAX) $(IN_ROT2D) \
719                                 -Rot3 $(IN_ROT3MIN) $(IN_ROT3MAX) $(IN_ROT3D) \
720                                 -m $(IN_EX_MODE) -InterpolationMode $(IN_MODE);
721
722 .$(BASE_ROI_EXT).$(IN_ROI_EXT):
723         mrcImageNoiseAdd -i $*.$(BASE_ROI_EXT) -o $*.$(IN_ROI_EXT) -NS $(NSRATIO);
724
725 .$(IN_ROI_EXT).$(OUT_PAD_EXT):
726         mrcImageWindowing -i $*.$(IN_ROI_EXT) -o $*.mask -W 0.1 0.0 0.05 0.0 -m 18;
727         mrcImagePad -i $*.mask -o $*.padtmp -W $(PAD_W) -H $(PAD_H) -m 3;
728         mrcImageWindowing -i $*.padtmp -o $*.$(OUT_PAD_EXT) -W 0.1 0.0 0.1 0.0 -m 2;
729         rm $*.mask;
730         rm $*.padtmp;
731
732 .$(OUT_PAD_EXT).$(OUT_PCA_EXT):
733         mrcImageInfo -i $*.$(OUT_PAD_EXT) -o $*.tmp -I -m 2;
734         mean=$$(head -1 $*.tmp | awk '{printf("%s", $$2)}'); \
735         sd=$$(head -2 $*.tmp | tail -1 | awk '{printf("%s", $$2)}'); \
736         contour=$$(echo "scale=15.6; $$mean + $$sd * $(PERSD)" | bc); \
737         mrcImageShapePCA -i $*.$(OUT_PAD_EXT) -o $*.$(OUT_PCA_EXT) -C $$contour;
738         head -10 $*.$(OUT_PCA_EXT) | tail -1 | awk '{printf("%s %s      %s\n", $$1 / $$2, $$1, $$2)}' >> $(TARGET).$(OUT_PCA_EXT)tmp;
739         rm $*.tmp;
740
741 .$(OUT_PAD_EXT).$(ROI_SINO_EXT):
742         mrcImageSinogramCreate -i $*.$(OUT_PAD_EXT) -o $*.$(ROI_SINO_EXT) -dphi $(DPHI);
743
744 .$(ROI_SINO_EXT).$(SINO_FET_EXT):
745         mrcSinogramFET -i $*.$(ROI_SINO_EXT) -o $*.$(SINO_FET_EXT);
746
747 .$(SINO_FET_EXT).$(SINO_FET0_EXT):
748         mrcImageRectangleGet -i $*.$(SINO_FET_EXT) -o $*.$(SINO_FET0_EXT) -m 2 -r 0 0 0 0;
749
750 .$(SINO_FET_EXT).$(SINO_FET2_EXT):
751         mrcImageRectangleGet -i $*.$(SINO_FET_EXT) -o $*.$(SINO_FET2_EXT) -m 2 -r 2 2 0 0;
752
753 .$(REF_3D_EXT).$(REF_2D_EXT):
754         mrc3Dto2D -i $*.$(REF_3D_EXT) -o $*.tmp -EulerMode $(ROTMODE) -InterpolationMode $(IN_MODE) -Rot2 $(ROT2MIN) $(ROT2MAX) $(ROT2D) -Rot1 $(ROT1MIN) $(ROT1MAX) $(ROT1D) -Rot3 $(ROT3MIN) $(ROT3MAX) $(ROT3D) -m $(EX_MODE);
755         rfile=$$(head -2 OUT_PAD_LIST | tail -1 | sed -e s/\\\\//); \
756         mrcInfo -i $$rfile -o INFO;
757         Data=$$(head -1 INFO | tail -1); \
758         xPad=$$(echo $$Data | awk '{printf("%d", $$4)}'); \
759         yPad=$$(echo $$Data | awk '{printf("%d", $$5)}'); \
760         mrcImage3DPad -i $*.tmp -o $*.$(REF_2D_EXT) -Nx $$xPad -Ny $$yPad -M 1 -v 0;
761         rm $*.tmp;
762         rm INFO;
763
764 .$(OUT_PAD_EXT).$(OUT_CORR_EXT):
765         mrcImageAutoRotationCorrelation -i $*.$(OUT_PAD_EXT) -r $(TARGET).$(REF_2D_EXT) -cor $*.cor -O $*.$(OUT_CORR_EXT) -n $(nRot) -m $(COR_MODE) -range $(ROTMIN) $(ROTMAX) -nRot1 $(ROT1N) -nRot2 $(ROT2N) -nRot3 $(ROT3N) 2> /dev/null
766
767 .cordst.cornor1:
768         touch $*.cornor1;
769         rm $*.cornor1;
770         @lmax=$$(wc -l $*.cordst | awk '{printf("%d\n", $$1)}'); \
771         fmax=`expr $$(wc -w $*.cordst | awk '{printf("%d\n", $$1)}') / $$lmax`; \
772         for (( LoopNum = 1; LoopNum <= $$lmax; LoopNum++ )) \
773         do \
774                 echo CorNormalize1: $$LoopNum / $$lmax; \
775                 ave=0; \
776                 DataL="$$(head -$$LoopNum $*.cordst | tail -1) "; \
777                 for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
778                 do \
779                         ave=$$(echo $$DataL | awk -v x=$$LoopFile -v v=$$ave '{v+=$$x} END{print v}'); \
780                 done; \
781                 ave=$$(echo $$ave | awk -v v=$$ave -v u=$$fmax '{v/=u} END{print v}'); \
782                 sigma=0; \
783                 for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
784                 do \
785                         sigma=$$(echo $$DataL | awk -v x=$$LoopFile -v ave=$$ave -v v=$$sigma '{v+=($$x - ave)^2} END{print v}'); \
786                 done; \
787                 sigma=$$(echo $$sigma | awk -v v=$$sigma -v u=$$fmax '{v=sqrt(v/u)} END{print v}'); \
788                 Data=""; \
789                 for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
790                 do \
791                         Data+="$$(echo $$DataL | awk -v x=$$LoopFile -v ave=$$ave -v sigma=$$sigma '{zvalue=($$x - ave) / sigma; print zvalue}') "; \
792                 done; \
793                 echo $$Data >> $*.cornor1; \
794         done;
795
796 .cordst.cornor2:
797         touch $*.cornor2;
798         rm $*.cornor2;
799         @lmax=$$(wc -l $*.cordst | awk '{printf("%d\n", $$1)}'); \
800         fmax=`expr $$(wc -w $*.cordst | awk '{printf("%d\n", $$1)}') / $$lmax`; \
801         for (( LoopFile = 1; LoopFile <= $$fmax ; LoopFile++ )) \
802         do \
803                 avelist+="$$(cat $*.cordst | awk -v x=$$LoopFile '{v=v+$$x} END{v=v/NR; print v}') "; \
804         done; \
805         for (( LoopFile = 1; LoopFile <= $$fmax ; LoopFile++ )) \
806         do \
807                 ave=$$(echo $$avelist | awk -v x=$$LoopFile '{print $$x}'); \
808                 sigmalist+="$$(cat $*.cordst | awk -v x=$$LoopFile -v ave=$$ave '{sigma+=($$x - ave)^2} END{sigma=sqrt(sigma/NR); print (sigma)}') "; \
809         done; \
810         for (( LoopNum =1; LoopNum <= $$lmax; LoopNum++ )) \
811         do \
812                 echo CorNormalize2: $$LoopNum / $$lmax; \
813                 Data=""; \
814                 for (( LoopFile = 1; LoopFile <= $$fmax; LoopFile++ )) \
815                 do \
816                         ave=$$(echo $$avelist | awk -v x=$$LoopFile '{print $$x}'); \
817                         sigma=$$(echo $$sigmalist | awk -v x=$$LoopFile '{print $$x}'); \
818                         Data+="$$(head -$$LoopNum $*.cordst | tail -1 | awk -v x=$$LoopFile -v ave=$$ave -v sigma=$$sigma '{zvalue=($$x - ave) / sigma; print zvalue}') "; \
819                 done; \
820                 echo $$Data >> $*.cornor2; \
821         done;
822         
823 .cordst.cornor3:
824         make $*.cornor1;
825         mv $*.cornor1 $*.cornor1.cordst;
826         make $*.cornor1.cornor2;
827         mv $*.cornor1.cornor2 $*.cornor3;
828         
829 .cordst.cornor4:
830         make $*.cornor2;
831         mv $*.cornor2 $*.cornor2.cordst;
832         make $*.cornor2.cornor1;
833         mv $*.cornor2.cornor1 $*.cornor4;
834
835 .$(NOR_CORR_EXT).$(3D_INFO_EXT):
836         touch $*.$(3D_INFO_EXT);
837         rm $*.$(3D_INFO_EXT);
838         awk '/Cor/ { printf("%15.6f %s %s %s %s %s %s %s %s %s\n", $$7,$$16,$$2,$$3,$$4,$$5,$$9,$$11,$$12,$$1)}' $*.$(NOR_CORR_EXT) | sort -n -r | sed -e s/.$(OUT_PAD_EXT)/.$(OUT_FIT_EXT)/ >> $*.$(3D_INFO_EXT)
839         head -n 1 $*.$(3D_INFO_EXT) | awk '{print $$2,$$3,$$4,$$5,$$6,$$1}' >> $(TARGET).$(3D_LIST_EXT)
840
841 .$(3D_INFO_EXT).$(OUT_FIT_EXT):
842         Data=$$(head -1 $*.$(3D_INFO_EXT) | tail -1); \
843         Number=$$(echo $$Data | awk '{printf("%f\n", $$10)}'); \
844         mrcImageSectionGet -i $(TARGET).$(REF_2D_EXT) -o $*.tmp -z $$Number;
845         mrcImageAutoRotationCorrelation -i $*.$(OUT_PAD_EXT) -r $*.tmp -fit $*.$(OUT_FIT_EXT) -cor $*.cor -n $(nRot) -m $(COR_MODE) -range $(ROTMIN) $(ROTMAX) -nRot1 $(ROT1N) -nRot2 $(ROT2N) -nRot3 $(ROT3N) 2> /dev/null
846         
847 .$(3D_LIST_EXT).$(OUT_3D_EXT):
848         mrc2Dto3D -I $(TARGET).$(3D_LIST_EXT) -o $(TARGET).$(OUT_3D_EXT) -InterpolationMode $(IN_MODE) -Double -CounterThreshold 0.5 -m 1 -WeightMode 2;
849
850 .$(OUT_3D_EXT).$(IN_TIFF_EXT):
851         echo $$loop_num;
852         mrcImageProjection -i $*.$(OUT_3D_EXT) -o $*.$(IN_TIFF_EXT) -m $$loop_num;
853
854 .$(IN_TIFF_EXT).tiff:
855         mrc2tiff -i $*.$(IN_TIFF_EXT) -o $*.tiff;
856
857 .$(3D_LIST_EXT).txt:
858         sort -t - -k1,1 -k2,2 -k3,3 -k4 -n $*.$(3D_LIST_EXT) >> $*.txt;
859
860 .$(IN_1D_EXT).$(DST_1D_EXT):
861         touch $*.$(DST_1D_EXT)lst;
862         rm $*.$(DST_1D_EXT)lst;
863         @rData=$$(mrcImageInfo -I -i $*.$(IN_1D_EXT) | head -2); \
864         min=$$(echo $$rData | awk '{printf("%f"), $$2}'); \
865         max=$$(echo $$rData | awk '{printf("%f"), $$7}'); \
866         delta=$$(echo "scale=15.6; ( $$max - $$min ) / ( $(DATAN) + 1 )" | bc); \
867         out=$$(echo "scale=15.6; $$max + $$delta" | bc); \
868         thres=$$min; \
869         for (( loopnum = 0 ; $$loopnum < $(DATAN) ; loopnum++ )) \
870         do \
871                 echo $$loopnum $$thres; \
872                 lowthres=$$(echo "scale=15.6; $$thres - $$delta * $(PERBORDER)" | bc); \
873                 mrcImageBinalization -i $*.$(IN_1D_EXT) -o $*.tmp -m 2 -t $$lowthres -v $$min; \
874                 thres=$$(echo "scale=15.6; $$thres + $$delta" | bc); \
875                 highthres=$$(echo "scale=15.6; $$thres + $$delta * $(PERBORDER)" | bc); \
876                 mrcImageBinalization -i $*.tmp -o $*$$loopnum.$(DST_1D_EXT) -m 1 -t $$highthres; \
877                 echo "$*$$loopnum.$(DST_1D_EXT)" >> $*.$(DST_1D_EXT)lst; \
878         done;
879         mrcImageMake2DArrayImage -i $*.$(DST_1D_EXT)lst -o $*.$(DST_1D_EXT);
880         mrc2tiff -i $*.$(DST_1D_EXT) -o $*.tiff -I;
881         @for (( loopnum = 0 ; $$loopnum < $(DATAN) ; loopnum++ )) \
882         do \
883                 rm $*$$loopnum.$(DST_1D_EXT); \
884         done;
885         rm $(TARGET).tmp;
886         rm $*.$(DST_1D_EXT)lst;
887