]> Creatis software - clitk.git/blobdiff - scripts/midp_common.sh
Only compute overlap if check is not set as option
[clitk.git] / scripts / midp_common.sh
index 16535a11850714b461fb71fac42a402c07bc8644..a5d0bafecedab8873c7a1615729fa2ed9cac92be 100755 (executable)
@@ -18,9 +18,9 @@ abort_on_error()
 {
   if [ $2 != 0 ]; then
     echo Aborted at $1 with code $2
-    if [ $# = 3 ]; then
-      eval $3
-    fi
+    #if [ $# = 3 ]; then
+    #  eval $3
+    #fi
 
     exit $2
   fi
@@ -98,28 +98,28 @@ extract_4d_phase_numbers()
   nb_phases=${#phase_files[@]}
 
   # get everything except numbers and punctuation
-  cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | sed 's/.mhd//' | grep -o "[^0-9[:punct:]]*" | sort -u > /tmp/patterns.txt
+  cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | sed 's/.mhd//' | grep -o "[^0-9[:punct:]]*" | sort -u > /tmp/patterns.txt
 
   # find which patterns have the phases connected to it
   patterns=`cat /tmp/patterns.txt`
   if [ -z "$patterns" ]; then
-    phase_nbs=( `cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | sed 's/.mhd//' | grep "[0-9]\+"` )
+    phase_nbs=( `cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | sed 's/.mhd//' | grep "[0-9]\+"` )
   else
     for i in $patterns; do 
 
       # check if the pattern appears before the phase number
-      nb_phases_found=`cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | sed 's/.mhd//' | grep -o "$i[0-9[:punct:]]\+" | sort -u | wc -l`
+      nb_phases_found=`cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | sed 's/.mhd//' | grep -o "$i[0-9[:punct:]]\+" | sort -u | wc -l`
       if [ $nb_phases_found == $nb_phases ]; then
         # keep only what identifies the phase number
-        phase_nbs=( `cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | sed 's/.mhd//' | grep -o "$i[0-9[:punct:]]\+" | grep -o "[^${i}]\+" | grep -o "[0-9]\+[[:punct:]]*[0-9]*" | grep -o "[0-9]*[[:punct:]]*[0-9]\+"` ) 
+        phase_nbs=( `cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | sed 's/.mhd//' | grep -o "$i[0-9[:punct:]]\+" | grep -o "[^${i}]\+" | grep -o "[0-9]\+[[:punct:]]*[0-9]*" | grep -o "[0-9]*[[:punct:]]*[0-9]\+"` ) 
         break
       fi
     
       # check if the pattern appears after the phase number
-      nb_phases_found=`cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | sed 's/.mhd//' | grep -o "[0-9[:punct:]]\+$i" | sort -u | wc -l`
+      nb_phases_found=`cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | sed 's/.mhd//' | grep -o "[0-9[:punct:]]\+$i" | sort -u | wc -l`
       if [ $nb_phases_found == $nb_phases ]; then
         # keep only what identifies the phase number
-        phase_nbs=( `cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | sed 's/.mhd//' | grep -o "[0-9[:punct:]]\+$i" | grep -o "[^${i}]\+" | grep -o "[0-9]\+[[:punct:]]*[0-9]*" | grep -o "[0-9]*[[:punct:]]*[0-9]\+"` ) 
+        phase_nbs=( `cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | sed 's/.mhd//' | grep -o "[0-9[:punct:]]\+$i" | grep -o "[^${i}]\+" | grep -o "[0-9]\+[[:punct:]]*[0-9]*" | grep -o "[0-9]*[[:punct:]]*[0-9]\+"` ) 
         break
       fi
 
@@ -142,7 +142,7 @@ extract_4d_phases()
   echo "4D file is $mhd4d"
 
   # array of phase files
-  phase_files=( `cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:'` )
+  phase_files=( `cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:'` )
   echo "Phase files are ${phase_files[@]}"
 
   extract_4d_phase_numbers $mhd4d 
@@ -161,7 +161,7 @@ extract_4d_phases_ref()
   extract_4d_phases $1
 
   # reference phase file
-  ref_phase_file=`cat $mhd4d | grep ".raw" | sed 's:.raw:.mhd:' | grep $2`
+  ref_phase_file=`cat $mhd4d | grep ".z*raw" | sed 's:.z*raw:.mhd:' | grep $2`
   echo "Reference phase is $ref_phase_file"
 
   # reference phase number
@@ -179,12 +179,14 @@ extract_4d_phases_ref()
 combine_image()
 {
 #  eg: -i $result_in -j $result_out -o $out_result -m $motion_mask
+  local tmp1=$RANDOM
+  local tmp2=$RANDOM
 
-  clitkSetBackground -i $1 -o temp1.mhd -m $4
-  clitkSetBackground -i $2 -o temp2.mhd -m $4 --fg
+  clitkSetBackground -i $1 -o $tmp1.mhd -m $4
+  clitkSetBackground -i $2 -o $tmp2.mhd -m $4 --fg
 
-  clitkImageArithm -i temp1.mhd -j temp2.mhd -o $3
-  rm temp?.*
+  clitkImageArithm -i $tmp1.mhd -j $tmp2.mhd -o $3
+  rm $tmp1.* $tmp2.*
 }
 
 # 
@@ -192,18 +194,85 @@ combine_image()
 average_temporal_dimension()
 {
   # eg: -i $midp_dir/midp_4D.mhd -o $midp_dir/midp_avg.mhd
-
-  local tot=tot.mhd
+  local tmp=$RANDOM
+  local tot=$tmp.mhd
 
   local dir=`dirname $1` 
-  local first=`grep raw $1 | sed 's/raw/mhd/g' | head -n 1`
+  local first=`grep z*raw $1 | sed 's/z*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
+  local nbphases=`grep z*raw $1 | sed 's/z*raw/mhd/g' | wc -l`
+  for i in $(grep z*raw $1 | sed 's/z*raw/mhd/g'); do
     clitkImageArithm -i $dir/$i -j $tot -o $tot
   done
 
   clitkImageArithm -i $tot -o $2 -t 11 -s $nbphases
-  rm tot.*
+  rm $tmp.*
+}
+
+select_contour_gui()
+{
+  local roi_list=$@
+  roi=`zenity --list --title="Available Contours" --column="Please choose a contour:" $roi_list`
+  case $? in
+    0)
+    if [ -z $roi ]
+    then
+      zenity --warning --text="You must choose one contour."
+      select_contour $roi_list
+    else
+      rtstruct_roi_name=$roi
+    fi;;
+    1)
+    if zenity --question --text="Do you really wish to quit?"
+    then
+      exit
+    else
+      select_contour $roi_list
+    fi;;
+    -1)
+      zenity --error --text="Unexpected error. Please relaunch the application."
+      exit;;
+  esac
+}
+
+select_contour()
+{
+  local roi_list=$@
+  echo "Available Contours:" 
+  for r in $roi_list; do
+    echo $r
+  done
+
+  echo "Please choose a contour number:"
+  read rtstruct_roi_index
+  let i=0
+  for r in $roi_list; do
+    if [ $rtstruct_roi_index = `echo $r | cut -d ':' -f 1` ]; then
+      rtstruct_roi_index=$i
+      break;
+    fi
+    let i=i+1
+  done
+  
 }
+
+select_roi()
+{
+  rtstruct_roi_name_list=( `clitkDicomInfo ${rtstruct_file} | grep "3006|0026" | cut -d '[' -f 4 | sed 's/| V 3006|0026[LO] [ROI Name] \|]//'` )
+  rtstruct_roi_number_list=( `clitkDicomInfo ${rtstruct_file} | grep "3006|0022" | cut -d '[' -f 4 | sed 's/| V 3006|0026[LO] [ROI Number] \|]//'` )
+  rtstruct_roi_list=( )
+  for i in $(seq 0 1 $(( ${#rtstruct_roi_name_list[@]} - 1 ))); do
+    rtstruct_roi_list[$i]=${rtstruct_roi_number_list[$i]}:${rtstruct_roi_name_list[$i]}
+  done
+
+  if [ $gui_mode = 1 ]; then
+    select_contour_gui ${rtstruct_roi_list[@]}
+    rtstruct_roi=`echo ${rtstruct_roi_name} | cut -d ':' -f 1`
+    rtstruct_roi_name=`echo ${rtstruct_roi_name} | cut -d ':' -f 2`
+  else
+    select_contour ${rtstruct_roi_list[@]}
+    rtstruct_roi=${rtstruct_roi_number_list[$(( $rtstruct_roi_index ))]}
+    rtstruct_roi_name=${rtstruct_roi_name_list[$(( $rtstruct_roi_index ))]}
+  fi
+}
\ No newline at end of file