X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=cluster_tools%2Fgate_power_merge.sh;h=3a9bba6b23b01002bb32dd303a9d3259dd787475;hb=5753311ba2368f89edfd7ba3d43a0186de1b16b5;hp=2733e406a823958069c7ab1f8f9aba6ed64a677a;hpb=d4355c17de8da3c4814b9428fb6c17ec7ededbe9;p=clitk.git diff --git a/cluster_tools/gate_power_merge.sh b/cluster_tools/gate_power_merge.sh index 2733e40..3a9bba6 100755 --- a/cluster_tools/gate_power_merge.sh +++ b/cluster_tools/gate_power_merge.sh @@ -272,6 +272,7 @@ test -x "./clitkImageArithm" && mhdImageMerger="./clitkImageArithm" function merge_mhd_image { local merged="$1" local merged_bin="${merged%.*}.raw" + local last_character=${merged#${merged%?}} shift echo " ${indent}entering mhd image merger" echo " ${indent}merger is ${mhdImageMerger}" @@ -289,14 +290,20 @@ function merge_mhd_image { then update_bar ${count} "copying first partial result ${partial}" cp "${partial}" "${merged}" - cp "${partial_bin}" "${merged_bin%.*}.${partial_bin##*.}" + if test "$last_character" = "d" + then + cp "${partial_bin}" "${merged_bin%.*}.${partial_bin##*.}" + fi continue fi update_bar ${count} "adding ${partial}" ${mhdImageMerger} -t 0 -i "${partial}" -j "${merged}" -o "${merged}" 2> /dev/null > /dev/null || warning "error while calling ${mhdImageMerger}" - mv "${merged_bin}" "${merged_bin%.*}.${partial_bin##*.}" - sed -i "s/$(basename "${merged_bin}")/$(basename "${merged_bin%.*}.${partial_bin##*.}")/" "${merged}" + if test "$last_character" = "d" && test "${merged_bin}" != "${merged_bin%.*}.${partial_bin##*.}" + then + mv "${merged_bin}" "${merged_bin%.*}.${partial_bin##*.}" + sed -i "s/$(basename "${merged_bin}")/$(basename "${merged_bin%.*}.${partial_bin##*.}")/" "${merged}" + fi done end_bar echo " ${indent}merged ${count} files" @@ -343,7 +350,7 @@ function merge_dispatcher { return fi - if test "${firstpartialoutputextension}" == "mhd" + if test "${firstpartialoutputextension}" == "mhd" || test "${firstpartialoutputextension}" == "mha" then echo "${indent}this is a mhd image" local mergedfile="${outputdir}/$(basename "${firstpartialoutputfile}")" @@ -420,6 +427,71 @@ function merge_dispatcher { error "unknown file type" } +function merge_dispatcher_uncertainty { + local indent=" ** " + local outputfile="${1:?"provide output filename"}" + + local partialoutputfiles="$(find "${rundir}" -mindepth 2 -type f -name "${outputfile}")" + local nboutputfiles="$(echo "${partialoutputfiles}" | wc -l)" + if test ${nboutputdirs} -ne ${nboutputfiles} + then + warning "missing files" + return + fi + + local firstpartialoutputfile="$(echo "${partialoutputfiles}" | head -n 1)" + local firstpartialoutputextension="${firstpartialoutputfile##*.}" + + if [[ "${firstpartialoutputfile}" == *Uncertainty* ]] + then + if test "${firstpartialoutputextension}" == "mhd" || test "${firstpartialoutputextension}" == "mha" + then + echo "${indent}Uncertainty file found: ${firstpartialoutputfile}" + ## search for sum + local mergedfile="${outputdir}/$(basename "${firstpartialoutputfile}")" + summed_merged_file=${mergedfile//-Uncertainty/} + if [ ! -f ${summed_merged_file} ]; + then + warning "${summed_merged_file} does not exist. Error, no uncertainty computed" + return; + fi + echo "${indent}${summed_merged_file} found" + ## search for Squared + squared_merged_file=${mergedfile//-Uncertainty/-Squared} + if [ ! -f ${squared_merged_file} ]; + then + warning "${squared_merged_file} does not exist. Error, no uncertainty computed" + return; + fi + echo "${indent}${squared_merged_file} found" + ## search for NumberOfEvent + totalEvents=0; + for outputfile in $(find "${rundir}" -regextype 'posix-extended' -type f -regex "${rundir}/output.*\.(hdr|mhd|mha|root|txt)" | awk -F '/' '{ print $NF; }' | sort | uniq) + do + #echo $outputfile + if grep -q 'NumberOfEvent' "${outputdir}/${outputfile}" + then + totalEvents="$(grep "NumberOfEvents" "${outputdir}/${outputfile}" | cut -d' ' -f4)" + echo "${indent}Find the NumberOfEvent in $outputfile: ${totalEvents}" + fi + done + + if test ${totalEvents} -gt 0 + then + uncerImageMerger="clitkImageUncertainty" + test -x "./clitkImageUncertainty" && uncerImageMerger="./clitkImageUncertainty" + ${uncerImageMerger} -i ${summed_merged_file} -s ${squared_merged_file} -o ${mergedfile} -n ${totalEvents} + else + warning "${totalEvents} not positive. A at least one stat file (SimulationStatisticActor) must be provided. Error, no uncertainty computed" + return; + fi + else + error "merge_dispatcher_uncertainty does not handle ${firstpartialoutputfile} files" + fi + fi + +} + echo "!!!! this is $0 v0.3k !!!!" rundir="${1?"provide run dir"}" @@ -436,14 +508,22 @@ then fi outputdir="$(basename "${outputdir}")" echo "output dir is ${outputdir}" + test -d "${outputdir}" && rm -r "${outputdir}" mkdir "${outputdir}" -for outputfile in $(find "${rundir}" -regextype 'posix-extended' -type f -regex "${rundir}/output.*\.(hdr|mhd|root|txt)" | awk -F '/' '{ print $NF; }' | sort | uniq) +for outputfile in $(find "${rundir}" -regextype 'posix-extended' -type f -regex "${rundir}/output.*\.(hdr|mhd|mha|root|txt)" | awk -F '/' '{ print $NF; }' | sort | uniq) do merge_dispatcher "${outputfile}" done +echo "" +echo "Merging done. Special case for statistical uncertainty" +for outputfile in $(find "${outputdir}" -regextype 'posix-extended' -type f -regex "${outputdir}/.*\.(hdr|mhd|mha|root|txt)" | awk -F '/' '{ print $NF; }' | sort | uniq) +do + merge_dispatcher_uncertainty "${outputfile}" +done + if [ -f "${rundir}/params.txt" ] then echo "copying params file"