最近的实验需要使用ImageJ/SRRF/Picasso/storm_analysis对拍到的大量图像进行处理, 故在此尝试自动化脚本.
#! /bin/zsh
WKDIR=$1
OUTPUT=$2
if [ -z $WKDIR ]; then
echo "Please input directory where original images stays."
return 1
fi
if [ -z $OUTPUT ]; then
echo "Please input OUTPUT directory or use $WKDIR/output as default."
OUTPUT=${WKDIR}/output
fi
STORM="/path/to/storm-analysis/storm_analysis"
PICASSO="/path/to/picasso"
P=$PWD
cd $WKDIR
for DIR in `find $PWD/ | xargs ls -ld | grep -E 'd[rwx-]+' | cut -d':' -f2 | cut -d' ' -f2`
do
cd $DIR
ls *.tif | grep -E '_t[0-9]{6}\.tif'
if [ $? -eq 0 ]; then
NAME=`echo $PWD | sed 's/\//\n/g' | grep -c '[0-9a-zA-Z]'`
NAME=$[NAME+1]
NAME=`echo $DIR | cut -d'/' -f$NAME`
OUTDIR=${OUTPUT}/video/${NAME}
mkdir -p $OUTDIR
rm ${OUTDIR}/imagej.ijm 2> /dev/null
echo "run(\"Image Sequence...\",\"open=${DIR} sort\");" >> ${OUTDIR}/imagej.ijm
echo "saveAs(\"Tiff\", \"${OUTDIR}/${NAME}.tif\");" >> ${OUTDIR}/imagej.ijm
echo "run(\"raw-yaml Exporter\", \"save=${OUTDIR}/${NAME}.raw\");" >> ${OUTDIR}/imagej.ijm
echo "run(\"SRRF Analysis\", \"ring=0.50 radiality_magnification=5 axes=6 frames_per_time-point=0 start=0 end=0 max=100 preferred=0\");" >> ${OUTDIR}/imagej.ijm
echo "saveAs(\"Tiff\", \"${OUTDIR}/srrf-${NAME}-srrf.tif\");" >> ${OUTDIR}/imagej.ijm
echo "close();" >> ${OUTDIR}/imagej.ijm
echo "close();" >> ${OUTDIR}/imagej.ijm
imagej --ij2 --headless --run ${OUTDIR}/imagej.ijm
{
python3 -m ${PICASSO}/picasso localize -bl 1000 -s 0.85 -qe 0.8 -d 1000 -a mle ${OUTDIR}/${NAME}.raw
}&
{
python3 ${STORM}/daostorm_3d/mufit_analysis.py --movie ${OUTDIR}/${NAME}.tif --bin ${OUTDIR}/${NAME}.hdf5 --xml ${STORM}/test/data/test_3d_2d_fixed.xml && python3 ${STORM}/sa_utilities/hdf5_to_image.py --image ${OUTDIR}/storm-${NAME}-storm.tif --bin ${OUTDIR}/${NAME}.hdf5
}&
cd $DIR
else
ls *.tif
if [ $? -eq 0 ]; then
NAME=`echo $PWD | sed 's/\//\n/g' | grep -c '[0-9a-zA-Z]'`
NAME=$[NAME+1]
NAME=`echo $DIR | cut -d'/' -f$NAME`
OUTDIR=${OUTPUT}/image/${NAME}
mkdir -p ${OUTDIR}
for i in `ls *.tif`
do
NAME=`echo $i | cut -d'.' -f1`
rm ${OUTDIR}/imagej2.ijm 2> /dev/null
echo "open(\"${DIR}/$i\");" >> ${OUTDIR}/imagej2.ijm
echo "run(\"Enhance Contrast\", \"saturated=0.35\");" >> ${OUTDIR}/imagej2.ijm
echo "run(\"Apply LUT\");" >> ${OUTDIR}/imagej2.ijm
echo "saveAs(\"PNG\", \"${OUTDIR}/${NAME}.png\");" >> ${OUTDIR}/imagej2.ijm
echo "close();" >> ${OUTDIR}/imagej2.ijm
imagej --ij2 --headless --run ${OUTDIR}/imagej2.ijm
done
fi
fi
done
cd $P
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!