+ nbth=$1
+ while [[ $(jobs -p | wc -l) -ge $nbth ]]; do
+ jobs
+ sleep 10
+ done
+}
+
+#
+# receive a 4D file and and extract the corresponding phase numbers
+# export the variables containing each of the extracted data
+#
+extract_4d_phase_numbers()
+{
+ mhd4d=$1
+
+ 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
+
+ # 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]\+"` )
+ 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`
+ 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]\+"` )
+ 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`
+ 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]\+"` )
+ break
+ fi
+