X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=scripts%2Fmidp_common.sh;h=16535a11850714b461fb71fac42a402c07bc8644;hb=6fbc5b0555a148aed6478cfd1ea7593f32f5dd3c;hp=0f767070e217639fc5b2548db0e2b315610f6608;hpb=6194949c0beb1589904e22381b9aba1bbface172;p=clitk.git diff --git a/scripts/midp_common.sh b/scripts/midp_common.sh index 0f76707..16535a1 100755 --- a/scripts/midp_common.sh +++ b/scripts/midp_common.sh @@ -1,4 +1,4 @@ -#! /bin/sh +x +#! /bin/sh -x ############################################################################### # @@ -9,7 +9,72 @@ # ############################################################################### +# +# check return value passed and abort if it represents an error (ie, ret != 0) +# optionally, a function can be passed as a 3rd parameter, to be called just +# before exiting. this is useful for cleaning up, for example. +# +abort_on_error() +{ + if [ $2 != 0 ]; then + echo Aborted at $1 with code $2 + if [ $# = 3 ]; then + eval $3 + fi + + exit $2 + fi +} + +# +# wait for all processes in the list and return their exit codes +# in the ret_codes variable. +# +# OBS: this function must always be called in the same shell +# that launched the processes. +# +wait_pids() +{ + local pids=$* + local ret= + local rets= +# echo PIDS: $pids + for p in $pids; do +# echo waiting $p + wait $p > /dev/null 2> /dev/null + ret=$? + if [ ret != 127 ]; then + rets=$rets" "$ret + else + rets=$rets" "0 + fi + + done + ret_codes=$rets +} + +# +# clean-up functions for maks, registration, and midp +# +clean_up_masks() +{ + rm -fr $mask_dir_tmp +} + +clean_up_midp() +{ + rm -fr $midp_dir +} + +clean_up_registration() +{ + rm -fr $vf_dir + rm -fr $output_dir +} + + +# # block execution untill the number of threads (jobs) launched by the # current process is below the given number of threads. MAX_THREADS=2 @@ -108,3 +173,37 @@ extract_4d_phases_ref() fi done } + +# +# replacement for clitkCombineImage +combine_image() +{ +# eg: -i $result_in -j $result_out -o $out_result -m $motion_mask + + clitkSetBackground -i $1 -o temp1.mhd -m $4 + clitkSetBackground -i $2 -o temp2.mhd -m $4 --fg + + clitkImageArithm -i temp1.mhd -j temp2.mhd -o $3 + rm temp?.* +} + +# +# replacement for clitkAverageTemporalDimension +average_temporal_dimension() +{ + # eg: -i $midp_dir/midp_4D.mhd -o $midp_dir/midp_avg.mhd + + local tot=tot.mhd + + local dir=`dirname $1` + local first=`grep raw $1 | sed 's/raw/mhd/g' | head -n 1` + clitkImageArithm -i $dir/$first -o $tot -t 1 -s 0 + + local nbphases=`grep raw $1 | sed 's/raw/mhd/g' | wc -l` + for i in $(grep raw $1 | sed 's/raw/mhd/g'); do + clitkImageArithm -i $dir/$i -j $tot -o $tot + done + + clitkImageArithm -i $tot -o $2 -t 11 -s $nbphases + rm tot.* +}