X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=cluster_tools%2Fgate_power_merge.sh;h=8949b35b0be6afd05f474c5ea107419531868976;hb=e7f6ef589423355d3577da5c40e23d054f232aec;hp=590fcd6c3df87903962099e8b4d698d4c939a2b2;hpb=93bf44c912bc3289b7bfe25a0307446d5445dd60;p=clitk.git diff --git a/cluster_tools/gate_power_merge.sh b/cluster_tools/gate_power_merge.sh index 590fcd6..8949b35 100755 --- a/cluster_tools/gate_power_merge.sh +++ b/cluster_tools/gate_power_merge.sh @@ -163,6 +163,40 @@ end_bar echo " ${indent}merged ${count} files" } +mhdImageMerger="clitkImageArithm" +test -x "./clitkImageArithm" && mhdImageMerger="./clitkImageArithm" + +function merge_mhd_image { +local merged="$1" +local merged_bin="${merged%.*}.raw" +shift +echo " ${indent}entering mhd image merger" +echo " ${indent}merger is ${mhdImageMerger}" +echo " ${indent}creating ${merged}" +local count=0 +start_bar $# +while test $# -gt 0 +do + local partial="$1" + local partial_bin="${partial%.*}.raw" + shift + let count++ + + if test ! -f "${merged}" + then + update_bar ${count} "copying first partial result ${partial}" + cp "${partial}" "${merged}" + cp "${partial_bin}" "${merged_bin}" + 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}" +done +end_bar +echo " ${indent}merged ${count} files" +} + function merge_dispatcher { local indent=" ** " local outputfile="${1:?"provide output filename"}" @@ -188,6 +222,14 @@ function merge_dispatcher { return fi + if test "${firstpartialoutputextension}" == "mhd" + then + echo "${indent}this is a mhd image" + local mergedfile="${outputdir}/$(basename "${firstpartialoutputfile}")" + merge_mhd_image "${mergedfile}" ${partialoutputfiles} || error "error while merging" + return + fi + if test "${firstpartialoutputextension}" == "root" then echo "${indent}this is a root file" @@ -230,17 +272,27 @@ function merge_dispatcher { then echo "${indent}this is a non specific txt output" local mergedfile="${outputdir}/$(basename "${firstpartialoutputfile}")" - echo " ${indent}catting ${mergedfile}" - cat ${partialoutputfiles} > "${mergedfile}" || error "error while merging" - return + local nbdifferent="$(md5sum ${partialoutputfiles} | awk '{ print $1; }' | sort | uniq | wc -l)" + echo " ${indent}${nbdifferent} different files" + if test ${nbdifferent} -gt 1 + then + echo " ${indent}catting to ${mergedfile}" + cat ${partialoutputfiles} > "${mergedfile}" || error "error while merging" + return + else + echo " ${indent}moving to ${mergedfile}" + cp "${firstpartialoutputfile}" "${mergedfile}" || error "error while merging" + return + fi fi - warning "unknown file type" + error "unknown file type" } -echo "!!!! this is $0 v0.3g !!!!" +echo "!!!! this is $0 v0.3i !!!!" rundir="${1?"provide run dir"}" +rundir="$(echo "${rundir}" | sed 's|/*$||')" nboutputdirs="$(find "${rundir}" -mindepth 1 -type d -name 'output*' | wc -l)" test ${nboutputdirs} -gt 0 || error "no output dir found" @@ -256,7 +308,7 @@ 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|root|txt)" | awk -F '/' '{ print $NF; }' | sort | uniq) +for outputfile in $(find "${rundir}" -regextype 'posix-extended' -type f -regex "${rundir}/output.*\.(hdr|mhd|root|txt)" | awk -F '/' '{ print $NF; }' | sort | uniq) do merge_dispatcher "${outputfile}" done