]> Creatis software - clitk.git/blobdiff - scripts/create_mhd_4D.sh
Merge branch 'master' of git://git.creatis.insa-lyon.fr/clitk
[clitk.git] / scripts / create_mhd_4D.sh
index 00df85ce77720452d5ab9174393face3c81f410f..24d3fd1d5110d80c60e2d57676e1eca183dd21f5 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/sh +x
 
 
 write_mhd_4D()
@@ -12,11 +12,12 @@ write_mhd_4D()
                  /DimSize/ s/.*/& $nbph/
                  s/ElementDataFile = .*/ElementDataFile = LIST/" > "$1/$file_name_4D"
   
-  for ph in $listph
+  for ph in ${listph[@]}
   do
     ph=`basename $ph`
     echo "$ph" >> "$1/$file_name_4D"
   done
+  echo $1/$file_name_4D
 }
 
 #################################################
@@ -28,87 +29,126 @@ then
   exit 1
 fi
 
-nb_phase_file=`find $1 -iname "*[0-9]*.mhd" -o -iname "*[0-9]*\]*.mhd" | wc -l`
+nb_phase_file=`find $1 -maxdepth 1 -iname "*[0-9]*.mhd" | wc -l`
 if [ $nb_phase_file = 0 ]
 then
-  echo "Error: no phase found"
+  echo "No phase found in $1"
   exit 1
 fi
 
-########## CT #########
 
-list_pattern=""
-list_phase_file=`find $1 -iname "*[0-9]*.mhd"`
+list_prefix=""
+list_phase_file=`find $1 -maxdepth 1 -iname "*[0-9]*.mhd"`
 for phase_file in $list_phase_file
 do
-  phase_file_name=`basename $phase_file`
-  if [[ ! -z `echo "$phase_file_name" | grep ","` ]]
+  if grep -q "NDims = 4" $phase_file 2> /dev/null
   then
-    prefix=`echo $phase_file_name | sed "s/,_.*/,_/"`
-  else
+    #echo $phase_file is 4D
+    continue;
+  fi;
+
+  phase_file_name=`basename $phase_file .mhd`
+#   if [[ ! -z `echo "$phase_file_name" | grep "__[0-9]"` ]]
+#   then
+#     prefix=`echo $phase_file_name | sed "s/__[0-9].*/__/"`
+#   else
+#     if [[ ! -z `echo "$phase_file_name" | grep "[0-9]-.*\]"` ]] 
+#     then
+#       if [[ ! -z `echo "$phase_file_name" | grep "[0-9][0-9]-.*\]"` ]]
+#       then
+#      prefix=`echo $phase_file_name | sed "s/[0-9][0-9]-.*//"`
+#       else
+#      prefix=`echo $phase_file_name | sed "s/[0-9]-.*//"`
+#       fi
+#     else
+#       prefix="NONE"
+#     fi
+#   fi
+
+  # preffix: grep sequence of characters followed by sequence of numbers and remove sequence of numbers
+  # prefix=`echo $phase_file_name | grep -o "\(^[[:alpha:][:punct:]]*\)\([[:digit:]\.\_\-]\+\)" | sed 's/\(^[[:alpha:][:punct:]]*\)\([[:digit:]\.\_\-]\+\)/\1/'`
+  prefix=`echo $phase_file_name | grep -o "\(^[[:alpha:][:punct:]]*\)\([[:digit:]]\+\)\([\.\_\-]*\)"`
+  prefix=`echo $prefix | sed 's/^\-\+//' | sed 's/\(^[[:alpha:][:punct:]]*\)\([[:digit:]]\+\)\([\.\_\-]*\)/\1/'`
+  if [[ -z $prefix ]]
+  then 
     prefix="NONE"
   fi
-  if [[ -z `echo "$list_pattern" | grep "$prefix"` ]]
-  then
-    list_pattern="$list_pattern $prefix"
-  fi
-done
-
 
-for pattern in $list_pattern
-do
-
-  if [ "$pattern" = "NONE" ]
+  # register new preffix if not yet done
+  if [[ -z `echo "$list_prefix" | grep -w -- "$prefix"` ]]
   then
-    pattern=""
+    list_prefix="$list_prefix $prefix"
   fi
-
-  nbph=`find $1 -iname "${pattern}*[0-9]*.mhd" | wc -l`
-  orig=`find $1 -iname "${pattern}*[0-9]*.mhd" | sort | head -n 1`
-  listph=`find $1 -iname "${pattern}*[0-9]*.raw" | sort`
-
-  file_name_4D="${pattern}_4D.mhd"
-  echo $file_name_4D
-
-  write_mhd_4D $1
-
 done
 
 
-############ PET ###########
-
-list_pattern=""
-list_phase_file=`find $1 -iname "*[0-9]*\]*.mhd"`
-for phase_file in $list_phase_file
+for prefix in $list_prefix
 do
-  phase_file_name=`basename $phase_file`
-  if [[ ! -z `echo "$phase_file_name" | grep "[0-9]-.*\]"` ]]
-  then
-    prefix=`echo $phase_file_name | sed "s/.*[0-9]-/-/;s/\]_.*//"`
-  else
-    prefix="NONE"
-  fi
-  if [[ -z `echo "$list_pattern" | grep -- "$prefix"` ]]
+  if [ "$prefix" = "NONE" ]
   then
-    list_pattern="$list_pattern $prefix"
+    prefix=""
   fi
-done
 
-  
-for pattern in $list_pattern
-do
-
-  if [ "$pattern" = "NONE" ]
-  then
-    pattern=""
-  fi
+  list_suffix=""
+  list_phase_file_prefix=`find $1 -maxdepth 1 -iname "${prefix}[0-9]*.mhd"`
+  for phase_file_prefix in $list_phase_file_prefix
+  do
+    if grep -q "NDims = 4" $phase_file_prefix  2> /dev/null
+    then
+      #echo $phase_file_prefix is 4D
+      continue;
+    fi;
+    phase_file_prefix_name=`basename $phase_file_prefix .mhd`
+#     if [[ ! -z `echo "$phase_file_prefix_name" | grep "__[0-9]"` ]]
+#     then
+#       suffix="NONE"
+#     else
+#       if [[ ! -z `echo "$phase_file_prefix_name" | grep "[0-9]-.*\]"` ]]
+#       then
+#      suffix=`echo $phase_file_prefix_name | sed "s/.*[0-9]-//;s/_\.mhd//;s/\.mhd//"`
+#       else
+#      suffix="NONE"
+#       fi
+#     fi
+# 
+
+    # suffix: grep sequence of numbers followed by sequence of characters and remove sequence of numbers
+    # suffix=`echo $phase_file_prefix_name | grep -o "\([[:digit:]\.\_\-]\+\)\([[:alpha:][:punct:]]*$\)" | sed 's/\([[:digit:]\.\_\-]\+\)\([[:alpha:][:punct:]]*$\)/\2/'`
+    suffix=`echo $phase_file_prefix_name | grep -o "\([\.\_\-]*\)\([[:digit:]]\+\)\([[:alpha:][:punct:]]*$\)"`
+    if ! echo $suffix | grep -qo "^\-\+"; then
+      suffix=`echo $suffix | sed 's/\([\.\_\-]*\)\([[:digit:]]\+\)\([[:alpha:][:punct:]]*$\)/\3/'`
+    fi
+    suffix=`echo $suffix | sed 's/[\.\_\-]\+$//'`
+    if [[ -z $suffix ]]
+    then 
+      suffix="NONE"
+    fi
+
+    # register new suffix if not yet done
+    if [[ -z `echo "$list_suffix" | grep -w -- "$suffix"` ]]
+    then
+      list_suffix="$list_suffix $suffix"
+    fi
+  done
 
-  nbph=`find $1 -iname "*[0-9]${pattern}\]*.mhd" | wc -l`
-  orig=`find $1 -iname "*[0-9]${pattern}\]*.mhd" | sort | head -n 1`
-  listph=`find $1 -iname "*[0-9]${pattern}\]*.raw" | sort`
   
-  file_name_4D=`basename "$orig" | sed "s/[0-9]${pattern}\]/${pattern}\]/;s/_.mhd/_4D.mhd/"`
+  for suffix in $list_suffix
+  do
+    if [ "$suffix" = "NONE" ]
+    then
+      suffix=""
+    fi
+    orig=`find $1 -maxdepth 1 -iname "${prefix}[0-9]*${suffix}*.mhd" | grep "${prefix}[[:digit:][:punct:]]\+${suffix}[\.\_\-]*.mhd" | sort | head -n 1`
+    listph=( `find $1 -maxdepth 1 -iname "${prefix}[0-9]*${suffix}*.*raw" | grep "${prefix}[[:digit:][:punct:]]\+${suffix}[\.\_\-]*.z*raw" | sort` )
+    nbph=${#listph[@]}
+
+    # only create 4D file if potential number of phases is > 1
+    if [ $nbph -gt 1 ]; then
+      file_name_4D="${prefix}4D${suffix}.mhd"
+      write_mhd_4D $1
+    fi
 
-  write_mhd_4D $1
+  done
 
 done
+