--- /dev/null
+.@ PackageName :: "SingleParticle_3DReconstruction"
+.@ Editor :: "Kinoshita"
+.@ Tag :: "v0.0.0"
+# Ref: Makefile in Eos v2.1.16p0093
+# $EOS_HOME/Integration/SingleParticle/Makefile-fromKanae
\ No newline at end of file
--- /dev/null
+Rule Create_3d
+ input '*.3dlst'
+ input '*.fit'.all
+ output '{$I[1][1]}.3d'
+ output '{$I[1][1]}.3dcounter'
+ output '{$I[1][1]}.ds6'
+Flow
+ rule Reconstruct_3dlst_3d
+ rule Convert_3d_ds6
+End
+
+#.3dlst.3d:
+Rule Reconstruct_3dlst_3d
+ input '*.3dlst'
+ input '*.fit'.all
+ output '{$I[1][1]}.3d'
+ output '{$I[1][1]}.3dcounter'
+Action
+ mrc2Dto3D -I {$I[1]} -o {$O[1]} -InterpolationMode 2 -Double -DoubleCounter {$O[2]} -CounterThreshold 0.5 -m 1 -WeightMode 6
+End
+
+#.3d.ds6:
+Rule Convert_3d_ds6
+ input '*.3d'
+ output '{$I[1][1]}.ds6'
+Action
+ mrc2map -i {$I[1]} -o {$O[1]} -m 3
+End
\ No newline at end of file
--- /dev/null
+Rule Create_3d4s
+ input '*.3d4slst'
+ input '*.4shift'.all
+ output '{$I[1][1]}.3d4s'
+ output '{$I[1][1]}.3d4scounter'
+ output '{$I[1][1]}.4sds6'
+ output '{$I[1][1]}.4s.ds6'
+Flow
+ rule Reconstruct_3d4slst_3d4s
+ rule Convert_3d4s_4sds6
+End
+
+#.3d4sinfolst.3d4s:
+Rule Reconstruct_3d4slst_3d4s
+ input '*.3d4slst'
+ input '*.4shift'.all
+ output '{$I[1][1]}.3d4s'
+ output '{$I[1][1]}.3d4scounter'
+Action
+ mrc2Dto3D -I {$I[1]} -o {$O[1]} -InterpolationMode 2 -Double -DoubleCounter {$O[2]} -CounterThreshold 0.5 -m 1 -WeightMode 6
+End
+
+#.3d4s.4sds6:
+Rule Convert_3d4s_4sds6
+ input '*.3d4s'
+ output '{$I[1][1]}.4sds6'
+ output '{$I[1][1]}.4s.ds6'
+Action
+ mrc2map -i {$I[1]} -o {$O[1]} -m 3
+ ln -sf {$O[1]} {$O[2]}
+End
--- /dev/null
+Rule Create_3d4slst
+ input '*.lst'
+ input '*.roi'.all
+ input '*.corinfo'.all
+ output '{$I[1][1]}.3d4slst'
+ output '*.4shift'.all
+Flow
+ rule fit_3d4sinfo
+ rule Sum_3d4sinfo_3d4slst
+End
+
+#.fit.3d4sinfo:
+Rule fit_3d4sinfo
+ input '*.corinfo'
+ input '{$I[1][1]}.roi'
+ output '{$I[1][1]}.3d4sinfolst'
+ output '{$I[1][1]}.3d4sinfo'
+ output '{$I[1][1]}.4shrink'
+ output '{$I[1][1]}.4spad'
+ output '{$I[1][1]}.4shift'
+Action
+ awk '/Cor/ { print $18,$16,$2,$3,$4,$9,$11,$12}' {$I[1]} | sort -r | sed -e s/pad/4shift/ > {$O[1]}
+ head -n 1 {$O[1]} | awk ' {print $2,$3,$4,$5,$6,$7,$8,$1'} > {$O[2]}
+ X=`awk '{print -{$SHRINK4S}*$6; }' {$O[2]}`; \
+ Y=`awk '{print -{$SHRINK4S}*$7; }' {$O[2]}`; \
+ echo $X,$Y;
+ mrcImageShrink -i {$I[2]} -o {$O[3]} -S {$SHRINK4S}
+ width=`expr {$X_SIZE} / {$SHRINK4S}`
+ height=`expr {$Y_SIZE} / {$SHRINK4S}`
+ mrcImagePad -i {$O[3]} -o {$O[4]} -W ${width} -H ${height}
+ mrcImageShift -i {$I[2]} -o {$O[5]} -x $X -y $Y -z 0
+End
+
+Rule Sum_3d4sinfo_3d4slst
+ input '*.lst'
+ input '*.3d4sinfo'.all
+ output '{$I[1][1]}.3d4slst'
+Action
+ for info in {$I[2].join()}
+ do
+ cat $info >> {$O[1]}
+ done
+End
--- /dev/null
+Rule Create_3dlst
+ input '*.lst'
+ input '*.corinfo'.all
+ output '{$I[1][1]}.3dlst'
+Flow
+ rule fit_3dinfo
+ rule Sum_3dinfo_3dlst
+End
+
+# .fit.3dinfo:
+Rule fit_3dinfo
+ input '*.corinfo'
+ output '{$I[1][1]}.3dinfolst'
+ output '{$I[1][1]}.3dinfo'
+Action
+ awk '/Cor/ { print $18,$16,$2,$3,$4,"0.0"}' {$I[1]} | sort -r | sed -e s/pad/fit/ > {$O[1]}
+ head -n 1 {$O[1]} | awk ' {print $2,$3,$4,$5,$6,$1'} > {$O[2]}
+End
+
+Rule Sum_3dinfo_3dlst
+ input '*.lst'
+ input '*.3dinfo'.all
+ output '{$I[1][1]}.3dlst'
+Action
+ for info in {$I[2].join()}
+ do
+ cat $info >> {$O[1]}
+ done
+End
--- /dev/null
+Rule Create_3dwhole
+ input '*.3dwholelst'
+ input '*.shift'.all
+ output '{$I[1][1]}.3dwhole'
+ output '{$I[1][1]}.3dwholecounter'
+ output '{$I[1][1]}.wholeds6'
+ output '{$I[1][1]}.whole.ds6'
+Flow
+ rule Reconstruct_3dwholelst_3dwhole
+ rule Convert_3dwhole_wholeds6
+End
+
+#.3dwholelst.3dwhole:
+Rule Reconstruct_3dwholelst_3dwhole
+ input '*.3dwholelst'
+ input '*.shift'.all
+ output '{$I[1][1]}.3dwhole'
+ output '{$I[1][1]}.3dwholecounter'
+Action
+ mrc2Dto3D -I {$I[1]} -o {$O[1]} -InterpolationMode 2 -Double -DoubleCounter {$O[2]} -CounterThreshold 0.5 -m 1 -WeightMode 6
+End
+
+#.3dwhole.3dwholelst:
+Rule Convert_3dwhole_wholeds6
+ input '*.3dwhole'
+ output '{$I[1][1]}.wholeds6'
+ output '{$I[1][1]}.whole.ds6'
+Action
+ mrc2map -i {$I[1]} -o {$O[1]} -m 3
+ ln -sf {$O[1]} {$O[2]}
+End
--- /dev/null
+Rule Create_3dwholelst
+ input '*.lst'
+ input '*.roi'.all
+ input '*.corinfo'.all
+ output '{$I[1][1]}.3dwholelst'
+ output '*.shift'.all
+Flow
+ rule fit_3dwholeinfo
+ rule Sum_3dwholeinfo_3dwholelst
+End
+
+#.fit.3dwholeinfo:
+Rule fit_3dwholeinfo
+ input '*.roi'
+ input '{$I[1][1]}.corinfo'
+ output '{$I[1][1]}.3dwholeinfolst'
+ output '{$I[1][1]}.3dwholeinfo'
+ output '{$I[1][1]}.shift'
+Action
+ awk '/Cor/ { print $18,$16,$2,$3,$4,$9,$11,$12}' {$I[2]} | sort -r | sed -e s/pad/shift/ > {$O[1]}
+ head -n 1 {$O[1]} | awk ' {print $2,$3,$4,$5,$6,$7,$8,$1'} > {$O[2]}
+ X=`awk '{print -{$SHRINK}*$6; }' {$O[2]}`;
+ Y=`awk '{print -{$SHRINK}*$7; }' {$O[2]}`;
+ echo $X,$Y; mrcImageShift -i {$I[1]} -o {$O[3]} -x $X -y $Y -z 0
+End
+
+Rule Sum_3dwholeinfo_3dwholelst
+ input '*.lst'
+ input '*.3dwholeinfo'.all
+ output '{$I[1][1]}.3dwholelst'
+Action
+ for info in {$I[2].join()}
+ do
+ cat $info >> {$O[1]}
+ done
+End
\ No newline at end of file
--- /dev/null
+Rule Create_SampleROI
+ input '*.mrc'
+ output '{$I[1][1]}.lst'
+ output '{$I[1][1]}-*.roi'.all
+ output '{$I[1][1]}-*.tiff'.all
+Action
+ data=$(mrcInfo -i {$I[1]} | head -1)
+ x_size=$(echo "${data}" | awk '{printf ("%i", $4)}')
+ y_size=$(echo "${data}" | awk '{printf ("%i", $5)}')
+ z_size=$(echo "${data}" | awk '{printf ("%i", $6)}')
+
+ data=$(mrcInfo -i {$I[1]} | head -5 | tail -1)
+ x_length=$(echo "${data}" | awk '{printf ("%f", $4)}')
+ y_length=$(echo "${data}" | awk '{printf ("%f", $5)}')
+ z_length=$(echo "${data}" | awk '{printf ("%f", $6)}')
+
+ ref_size=${x_size}
+ length=${x_length}
+
+ if [ ${ref_size} -lt ${y_size} ] ; then \
+ ref_size=${y_size}
+ length=${y_length}
+ fi
+
+ if [ ${ref_size} -lt ${z_size} ] ; then \
+ ref_size=${z_size}
+ length=${z_length}
+ fi
+
+ image_size={$X_SIZE}
+
+ if [ ${image_size} -lt {$Y_SIZE} ] ; then \
+ image_size={$Y_SIZE}
+ fi
+
+ sampling_length=$(echo "scale=7; ${length} * ${ref_size} / ${image_size}" | bc)
+
+ mrcImageSamplingUnitChange -i {$I[1]} -o {$I[1][1]}.data3d -m 2 -S ${sampling_length} ${sampling_length} ${sampling_length}
+
+ for (( rot1 = {$ROI_ROT1_START}; rot1 <= {$ROI_ROT1_END}; rot1 += {$ROI_ROT1_DELTA} ))
+ do
+ for (( rot2 = {$ROI_ROT2_START}; rot2 <= {$ROI_ROT2_END}; rot2 += {$ROI_ROT2_DELTA} ))
+ do
+ for (( rot3 = {$ROI_ROT3_START}; rot3 <= {$ROI_ROT3_END}; rot3 += {$ROI_ROT3_DELTA} ))
+ do
+ mrc3Dto2D -i {$I[1][1]}.data3d -o {$I[1][1]}-${rot1}-${rot2}-${rot3}.data2d -InterpolationMode 2 -EulerMode {$ROI_ROT_MODE} \
+ -Rot1 ${rot1} ${rot1} 1 \
+ -Rot2 ${rot2} ${rot2} 1 \
+ -Rot3 ${rot3} ${rot3} 1
+ mrcImageNoiseAdd -i {$I[1][1]}-${rot1}-${rot2}-${rot3}.data2d -o {$I[1][1]}-${rot1}-${rot2}-${rot3}.roi -SN {$ROI_SN}
+ mrc2tiff -i {$I[1][1]}-${rot1}-${rot2}-${rot3}.roi -o {$I[1][1]}-${rot1}-${rot2}-${rot3}.tiff
+ done
+ done
+ done
+
+ ls *.roi > {$O[1]}
+End
--- /dev/null
+#.pad.fit:
+Rule Create_fit
+ input '*.pad'
+ input '*.stack'
+ output '{$I[1][1]}.fit'
+ output '{$I[1][1]}.corinfo'
+Action
+ mrcImageAutoRotationCorrelation -i {$I[1]} -r {$I[2]} -fit {$O[1]} -O {$O[2]} \
+ -n {$N_ROT} -m 18 -nRot1 {$N_ROT1} -nRot2 {$N_ROT2} -nRot3 {$N_ROT3} > /dev/null
+End
\ No newline at end of file
--- /dev/null
+Rule Create_stack
+ input '*.mrc'
+ output '{$I[1][1]}.stack'
+Action
+ data=$(mrcInfo -i {$I[1]} | head -1)
+ x_size=$(echo "${data}" | awk '{printf ("%i", $4)}')
+ y_size=$(echo "${data}" | awk '{printf ("%i", $5)}')
+ z_size=$(echo "${data}" | awk '{printf ("%i", $6)}')
+
+ data=$(mrcInfo -i {$I[1]} | head -5 | tail -1)
+ x_length=$(echo "${data}" | awk '{printf ("%f", $4)}')
+ y_length=$(echo "${data}" | awk '{printf ("%f", $5)}')
+ z_length=$(echo "${data}" | awk '{printf ("%f", $6)}')
+
+ ref_size=${x_size}
+ length=${x_length}
+
+ if [ ${ref_size} -lt ${y_size} ] ; then \
+ ref_size=${y_size}
+ length=${y_length}
+ fi
+
+ if [ ${ref_size} -lt ${z_size} ] ; then \
+ ref_size=${z_size}
+ length=${z_length}
+ fi
+
+ image_size={$X_SIZE}
+
+ if [ ${image_size} -lt ${Y_SIZE} ] ; then \
+ image_size=${Y_SIZE}
+ fi
+
+ sampling_length=$(echo "scale=15.7; ${length} * {$SHRINK} * ${ref_size} / ${image_size}" | bc)
+
+ mrcImageSamplingUnitChange -i {$I[1]} -o {$I[1][1]}.ref3d -m 2 -S ${sampling_length} ${sampling_length} ${sampling_length}
+
+ mrc3Dto2D -i {$I[1][1]}.ref3d -o {$O[1]} -m 1 -InterpolationMode 2 -EulerMode {$REF_ROT_MODE} \
+ -Rot1 {$REF_ROT1_START} {$REF_ROT1_END} {$REF_ROT1_DELTA} \
+ -Rot2 {$REF_ROT2_START} {$REF_ROT2_END} {$REF_ROT2_DELTA} \
+ -Rot3 {$REF_ROT3_START} {$REF_ROT3_END} {$REF_ROT3_DELTA}
+End
--- /dev/null
+Rule Main
+ if $Flag_ROI or $Flag_Ref
+ input '*.mrc'
+ end
+
+ if $Flag_ROI.not()
+ input '*.lst'
+ input '*.roi'.all
+ end
+
+ if $Flag_Ref.not()
+ input '*.stack'
+ end
+
+ if $Flag_3D
+ output '{$I[1][1]}.3dlst'
+ output '{$I[1][1]}.3d'
+ output '{$I[1][1]}.ds6'
+ end
+
+ if $Flag_3DWhole
+ output '{$I[1][1]}.3dwholelst'
+ output '{$I[1][1]}.3dwhole'
+ output '{$I[1][1]}.wholeds6'
+ output '{$I[1][1]}.whole.ds6'
+ end
+
+ if $Flag_3D4S
+ output '{$I[1][1]}.3d4slst'
+ output '{$I[1][1]}.3d4s'
+ output '{$I[1][1]}.4sds6'
+ output '{$I[1][1]}.4s.ds6'
+ end
+
+ if $Flag_ROI
+ output '*.tiff'.all
+ end
+
+ output '*.gif'.all
+
+Flow
+
+ if $Flag_ROI
+ rule Create_SampleROI
+ end
+
+ if $Flag_Ref
+ rule Create_stack
+ end
+
+ rule Preprocess
+ rule Create_fit
+
+ if $Flag_3D
+ rule Create_3dlst
+ rule Create_3d
+ end
+
+ if $Flag_3DWhole
+ rule Create_3dwholelst
+ rule Create_3dwhole
+ end
+
+ if $Flag_3D4S
+ rule Create_3d4slst
+ rule Create_3d4s
+ end
+
+ rule Projection_3d
+End
--- /dev/null
+# basic param
+## For Size
+param $X_SIZE := 80
+param $Y_SIZE := 80
+param $SHRINK := 8
+param $SHRINK4S := 4
+
+## For AutoRotationCorrelation
+param $N_ROT := 72
+param $N_ROT1 := 72
+param $N_ROT2 := 72
+param $N_ROT3 := 1
+
+## For RefData
+param $REF_ROT_MODE := "XOYS"
+param $REF_ROT1_START := 0
+param $REF_ROT1_END := 359
+param $REF_ROT1_DELTA := 15
+param $REF_ROT2_START := 0
+param $REF_ROT2_END := 359
+param $REF_ROT2_DELTA := 15
+param $REF_ROT3_START := 0
+param $REF_ROT3_END := 0
+param $REF_ROT3_DELTA := 15
+
+## For SampleROI
+param $ROI_ROT_MODE := "XOYS"
+param $ROI_ROT1_START := 0
+param $ROI_ROT1_END := 359
+param $ROI_ROT1_DELTA := 30
+param $ROI_ROT2_START := 0
+param $ROI_ROT2_END := 359
+param $ROI_ROT2_DELTA := 30
+param $ROI_ROT3_START := 0
+param $ROI_ROT3_END := 0
+param $ROI_ROT3_DELTA := 30
+param $ROI_SN := 1
+
+# advanced param
+advanced param $Flag_ROI := true
+advanced param $Flag_Ref := true
+advanced param $Flag_3D := true
+advanced param $Flag_3DWhole := true
+advanced param $Flag_3D4S := true
--- /dev/null
+# .lst.padlst:
+Rule Preprocess
+ input '*.lst'
+ input '*.roi'.all
+ output '*.pad'.all
+ output '{$I[1][1]}.padlst'
+Flow
+ rule roi_smooth;
+ rule smooth_shrink;
+ rule shrink_pad;
+ rule pad_padlst;
+End
+
+#.roi.smooth:
+Rule roi_smooth
+ input '*.roi'
+ output '{$I[1][1]}.smooth'
+Action
+ mrcImageSmoothing -i {$I[1]} -o {$O[1]} -m 1 -r 4
+End
+
+#.smooth.shrink:
+Rule smooth_shrink
+ input '*.smooth'
+ output '{$I[1][1]}.shrink'
+Action
+ mrcImageShrink -i {$I[1]} -o {$O[1]} -S {$SHRINK}
+End
+
+#.shrink.pad:
+Rule shrink_pad
+ input '*.shrink'
+ output '{$I[1][1]}.pad'
+Action
+ width=`expr {$X_SIZE} / {$SHRINK}`
+ height=`expr {$Y_SIZE} / {$SHRINK}`
+ mrcImagePad -i {$I[1]} -o {$O[1]} -W ${width} -H ${height}
+End
+
+Rule pad_padlst
+ input '*.lst'
+ input '*.pad'.all
+ output '{$I[1][1]}.padlst'
+Action
+ echo "{$I[2].join("\\n")}" > {$O[1]}
+End
--- /dev/null
+Rule Projection_3d
+ input '*.3d' or '*.3dwhole' or '*.3d4s'
+ output '{$I[1]}-*.gif'.all
+Action
+ for i in 0 1 2
+ do
+ mrcImageProjection -i {$I[1]} -o {$I[1]}-$i.mrc -m $i
+ mrc2gif -i {$I[1]}-$i.mrc -o {$I[1]}-$i.gif
+ done
+End
\ No newline at end of file