最近的实验需要使用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


software shell

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!