2 # This is makefile of Sample for 3D-Reconstrucion.
5 #### Root Makefile ####
8 #### Input extention ####
9 # These extensions must all be different.
20 SINO_FET2_EXT=kurtosis
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)
44 -include ${EOS_HOME}/tutorial/TIPS/Help/Makefile/Makefile-lib
45 -include BASE_ROI_LIST
47 -include ROI_SINO_LIST
50 -include SINO_FET_LIST
51 -include OUT_CORR_LIST
53 -include NOR_CORR_LIST
61 # Target structure name
64 # Interpolation mode(CommonSetting: Input, Ref, Output)
68 ## For mrc3Dto2D(Input)
75 IN_ROT1N=`expr \( $(IN_ROT1MAX) - $(IN_ROT1MIN) \) / $(IN_ROT1D) + 1`
80 IN_ROT2N=`expr \( $(IN_ROT2MAX) - $(IN_ROT2MIN) \) / $(IN_ROT2D) + 1`
85 IN_ROT3N=`expr \( $(IN_ROT3MAX) - $(IN_ROT3MIN) \) / $(IN_ROT3D) + 1`
86 # 0:Mercator 1:Mollweide
88 # Noise/Signal-Ratio(if you wish no-noise, set 0)
91 ## Pre-processing(Pad)
98 ## For Calc Width with PCA
99 # Percentage of BackGround-Threshold
102 ## For Calc Width with Sinogram
113 ROTMODE=$(IN_ROTMODE)
115 ROT1MIN=$(IN_ROT1MIN)
116 ROT1MAX=$(IN_ROT1MAX)
118 ROT1N=`expr \( $(ROT1MAX) - $(ROT1MIN) \) / $(ROT1D) + 1`
120 ROT2MIN=$(IN_ROT2MIN)
121 ROT2MAX=$(IN_ROT2MAX)
123 ROT2N=`expr \( $(ROT2MAX) - $(ROT2MIN) \) / $(ROT2D) + 1`
125 ROT3MIN=$(IN_ROT3MIN)
126 ROT3MAX=$(IN_ROT3MAX)
128 ROT3N=`expr \( $(ROT3MAX) - $(ROT3MIN) \) / $(ROT3D) + 1`
130 # 0:Mercator 1:Mollweide
131 EX_MODE=$(IN_EX_MODE)
133 ### For mrcImageCorrelation
138 nROT=`echo "" | awk 'BEGIN {printf 360 / $(STEP)}'`
143 # For Reduce List(range :0 <= p < 100)(if you wish no-reduce, set 0.)
146 # For Divide List(range: 0 <= p < 100)(if you wish no-divide, set 0.)
149 # For Fourier Shell Correlation
152 ### 1D Data Destribution
155 #Percentage of border y(Data)
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))
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
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
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
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
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
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
219 ls -1 *.$(SINO_FET0_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> SINO_FET0_LIST
224 ls -1 *.$(SINO_FET2_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> SINO_FET2_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
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
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
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
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
259 ls -1 *.$(IN_TIFF_EXT) | sort -t - -k1,1 -k2,2 -k3,3 -k4 -n >> IN_TIFF_LIST2
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
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
275 @echo "This is makefile of Sample."
278 make $(TARGET).$(INI_3D_EXT);
279 make $(TARGET).$(INI_2D_EXT);
285 make $(JOP_NUM) $(OUT_PAD_EXT);
289 cp $(TARGET).$(REF_3D_EXT)ini $(TARGET).$(REF_3D_EXT);
292 make $(TARGET).$(REF_2D_EXT);
293 make $(JOP_NUM) $(OUT_CORR_EXT);
296 make CorDistribution;
297 make $(TARGET).$(NOR_CMAP_EXT);
300 touch $(TARGET).$(3D_LIST_EXT);
301 rm $(TARGET).$(3D_LIST_EXT);
302 make $(JOP_NUM) $(3D_INFO_EXT);
304 make $(JOP_NUM) $(OUT_FIT_EXT);
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);
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++ )) \
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; \
332 make $(JOP_NUM) $(IN_ROI_EXT);
336 # make RefSizeFromFET;
337 # make RefSizeFromPDB;
340 touch $(TARGET).$(OUT_PCA_EXT);
341 rm $(TARGET).$(OUT_PCA_EXT);
343 sort -n $(TARGET).$(OUT_PCA_EXT)tmp > $(TARGET).$(OUT_PCA_EXT);
344 rm $(TARGET).$(OUT_PCA_EXT)tmp;
348 @rData=$$(head -1 $(TARGET).$(OUT_PCA_EXT)); \
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);
359 make FETDistribution;
364 make $(ROI_SINO_EXT);
366 make $(SINO_FET_EXT);
368 touch $(TARGET).$(SINO_FET0_EXT);
369 rm $(TARGET).$(SINO_FET0_EXT);
370 make $(SINO_FET0_EXT);
372 num=$$(wc -l SINO_FET0_LIST | awk '{printf("%d", $$1)}'); \
373 mrcImageMake2DArrayImage -i SINO_FET0_LIST -o $(TARGET).$(SINO_FET0_EXT) -N $$num;
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);
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);
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);
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 \
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;
427 cp $(TARGET).$(REF_3D_EXT)ini $(TARGET).$(REF_3D_EXT);
430 touch $(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 )) \
437 echo CorDistribution: $$LoopNum / $$lmax; \
439 for (( LoopFile = 2; LoopFile <= fmax; LoopFile++ )) \
441 rfile=$$(head -$$LoopFile OUT_CORR_LIST | tail -1 | sed -e s/\\\\//); \
442 Data+="$$(head -$$LoopNum $$rfile | tail -1 | awk '{printf("%15.6f", $$7)}') "; \
444 echo $$Data >> $(TARGET).cordst; \
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++ )) \
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)/); \
458 for (( LoopNum = 1; LoopNum <= lmax ; LoopNum++ )) \
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; \
468 @if [ $(DEVIDE_P) -eq 0 ]; then \
469 make $(TARGET).$(OUT_3D_EXT); \
474 make CompareRandom; \
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 \
488 @for (( loop_num = 0; loop_num <= 2; loop_num++ )) \
491 make $(TARGET).$(IN_TIFF_EXT); \
492 mv $(TARGET).$(IN_TIFF_EXT) $(TARGET)$$loop_num.$(IN_TIFF_EXT); \
499 @for (( loop_num = 0; loop_num <= 2; loop_num++ )) \
502 make $(IN_TIFF_EXT); \
504 rm *.$(IN_TIFF_EXT); \
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;
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-- )) \
521 worknum=`expr $$line + 1`; \
522 random=`expr $$RANDOM % $$line + 2`; \
523 sed -e "$$random , $$random d" TMP$$worknum > TMP$$line; \
525 echo $$line / $$endline Delete L:$$random; \
527 cat TMP`expr $$line + 1` > OUT_CORR_LIST; \
528 rm TMP`expr $$line + 1`;
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-- )) \
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; \
545 echo $$line / $$endline Select L:$$random; \
547 cat TMP`expr $$line + 1` > $(TARGET).$(3D_LIST_EXT); \
548 rm TMP`expr $$line + 1`;
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;
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++ )) \
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; \
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 \
582 elif [ $$(echo "$$r1 < $$r2" | bc) -eq 1 ]; then \
585 elif [ $$(echo "$$c1 >= $$c2" | bc) -eq 1 ]; then \
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; \
598 cp TMP$$UseNum.$(OUT_3D_EXT) TMP0.$(OUT_3D_EXT); \
599 cp TMP$$UseNum.dc TMP0.dc; \
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; \
609 cp TMP.$(OUT_3D_EXT) $(TARGET).$(OUT_3D_EXT); \
610 cp TMP.dc $(TARGET).dc; \
614 touch 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++ )) \
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; \
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);
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);
641 rm *.$(OUT_CORR_EXT);
642 rm *.$(NOR_CMAP_EXT);
643 rm *.$(NOR_CORR_EXT);
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);
696 touch SINO_FET0_LIST;
697 touch SINO_FET2_LIST;
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;
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);
722 .$(BASE_ROI_EXT).$(IN_ROI_EXT):
723 mrcImageNoiseAdd -i $*.$(BASE_ROI_EXT) -o $*.$(IN_ROI_EXT) -NS $(NSRATIO);
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;
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;
741 .$(OUT_PAD_EXT).$(ROI_SINO_EXT):
742 mrcImageSinogramCreate -i $*.$(OUT_PAD_EXT) -o $*.$(ROI_SINO_EXT) -dphi $(DPHI);
744 .$(ROI_SINO_EXT).$(SINO_FET_EXT):
745 mrcSinogramFET -i $*.$(ROI_SINO_EXT) -o $*.$(SINO_FET_EXT);
747 .$(SINO_FET_EXT).$(SINO_FET0_EXT):
748 mrcImageRectangleGet -i $*.$(SINO_FET_EXT) -o $*.$(SINO_FET0_EXT) -m 2 -r 0 0 0 0;
750 .$(SINO_FET_EXT).$(SINO_FET2_EXT):
751 mrcImageRectangleGet -i $*.$(SINO_FET_EXT) -o $*.$(SINO_FET2_EXT) -m 2 -r 2 2 0 0;
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;
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
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++ )) \
774 echo CorNormalize1: $$LoopNum / $$lmax; \
776 DataL="$$(head -$$LoopNum $*.cordst | tail -1) "; \
777 for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
779 ave=$$(echo $$DataL | awk -v x=$$LoopFile -v v=$$ave '{v+=$$x} END{print v}'); \
781 ave=$$(echo $$ave | awk -v v=$$ave -v u=$$fmax '{v/=u} END{print v}'); \
783 for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
785 sigma=$$(echo $$DataL | awk -v x=$$LoopFile -v ave=$$ave -v v=$$sigma '{v+=($$x - ave)^2} END{print v}'); \
787 sigma=$$(echo $$sigma | awk -v v=$$sigma -v u=$$fmax '{v=sqrt(v/u)} END{print v}'); \
789 for (( LoopFile = 1; LoopFile <= fmax; LoopFile++ )) \
791 Data+="$$(echo $$DataL | awk -v x=$$LoopFile -v ave=$$ave -v sigma=$$sigma '{zvalue=($$x - ave) / sigma; print zvalue}') "; \
793 echo $$Data >> $*.cornor1; \
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++ )) \
803 avelist+="$$(cat $*.cordst | awk -v x=$$LoopFile '{v=v+$$x} END{v=v/NR; print v}') "; \
805 for (( LoopFile = 1; LoopFile <= $$fmax ; LoopFile++ )) \
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)}') "; \
810 for (( LoopNum =1; LoopNum <= $$lmax; LoopNum++ )) \
812 echo CorNormalize2: $$LoopNum / $$lmax; \
814 for (( LoopFile = 1; LoopFile <= $$fmax; LoopFile++ )) \
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}') "; \
820 echo $$Data >> $*.cornor2; \
825 mv $*.cornor1 $*.cornor1.cordst;
826 make $*.cornor1.cornor2;
827 mv $*.cornor1.cornor2 $*.cornor3;
831 mv $*.cornor2 $*.cornor2.cordst;
832 make $*.cornor2.cornor1;
833 mv $*.cornor2.cornor1 $*.cornor4;
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)
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
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;
850 .$(OUT_3D_EXT).$(IN_TIFF_EXT):
852 mrcImageProjection -i $*.$(OUT_3D_EXT) -o $*.$(IN_TIFF_EXT) -m $$loop_num;
854 .$(IN_TIFF_EXT).tiff:
855 mrc2tiff -i $*.$(IN_TIFF_EXT) -o $*.tiff;
858 sort -t - -k1,1 -k2,2 -k3,3 -k4 -n $*.$(3D_LIST_EXT) >> $*.txt;
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); \
869 for (( loopnum = 0 ; $$loopnum < $(DATAN) ; loopnum++ )) \
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; \
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++ )) \
883 rm $*$$loopnum.$(DST_1D_EXT); \
886 rm $*.$(DST_1D_EXT)lst;