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=2e9776dc7559c5e940be7b3bd58a24cad4b45fcb;hpb=80d8acd3fdb896788e7bf866f44aa356a8ea9d96;p=clitk.git diff --git a/cluster_tools/gate_power_merge.sh b/cluster_tools/gate_power_merge.sh index 2e9776d..8949b35 100755 --- a/cluster_tools/gate_power_merge.sh +++ b/cluster_tools/gate_power_merge.sh @@ -10,7 +10,7 @@ exit 1 warning_count=0 function warning { let "warning_count++" -echo "WARNING: $1" +echo "MERGE_WARNING: $1" } function start_bar { @@ -39,6 +39,16 @@ shift echo " ${indent}entering root merger" echo " ${indent}merger is ${rootMerger}" echo " ${indent}creating ${merged}" +#echo "######## $#" +#echo "######## $*" + +if test $# -eq 1 +then + echo " ${indent}just one partial file => just copy it" + cp "$1" "${merged}" + return +fi + local count=0 local arguments=" -o ${merged}" while test $# -gt 0 @@ -48,13 +58,12 @@ do let count++ local arguments=" -i ${partial} ${arguments}" done -${rootMerger} ${arguments} > /dev/null || { warning "error while calling ${rootMerger}" && return; } +${rootMerger} ${arguments} > /dev/null || warning "error while calling ${rootMerger}" echo " ${indent}merged ${count} files" } statMerger="mergeStatFile.py" test -x "./mergeStatFile.sh" && statMerger="./mergeStatFile.sh" -test -x "./mergeStatFile.py" && statMerger="./mergeStatFile.py" function merge_stat { local merged="$1" @@ -78,7 +87,7 @@ do fi update_bar ${count} "adding ${partial}" - ${statMerger} -i "${merged}" -j "${partial}" -o "${merged}" 2> /dev/null > /dev/null || { warning "error while calling ${statMerger}" && return; } + ${statMerger} -i "${merged}" -j "${partial}" -o "${merged}" 2> /dev/null > /dev/null || warning "error while calling ${statMerger}" done end_bar echo " ${indent}merged ${count} files" @@ -111,7 +120,7 @@ do update_bar ${count} "adding ${partial}" local header="$(cat "${merged}" | head -n 6)" local tmp="$(mktemp)" - ${txtImageMerger} -i "${partial}" -j "${merged}" -o "${tmp}" 2> /dev/null > /dev/null || { warning "error while calling ${txtImageMerger}" && return; } + ${txtImageMerger} -i "${partial}" -j "${merged}" -o "${tmp}" 2> /dev/null > /dev/null || warning "error while calling ${txtImageMerger}" echo "${header}" > "${merged}" grep -v '## Merge' "${tmp}" >> "${merged}" rm "${tmp}" @@ -148,7 +157,41 @@ do fi update_bar ${count} "adding ${partial}" - ${hdrImageMerger} -t 0 -i "${partial}" -j "${merged}" -o "${merged}" 2> /dev/null > /dev/null || { warning "error while calling ${hdrImageMerger}" && return; } + ${hdrImageMerger} -t 0 -i "${partial}" -j "${merged}" -o "${merged}" 2> /dev/null > /dev/null || warning "error while calling ${hdrImageMerger}" +done +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" @@ -179,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" @@ -217,10 +268,31 @@ function merge_dispatcher { fi fi - warning "unknown file type" + if test "${firstpartialoutputextension}" == "txt" + then + echo "${indent}this is a non specific txt output" + local mergedfile="${outputdir}/$(basename "${firstpartialoutputfile}")" + 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 + + error "unknown file type" } +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" @@ -236,9 +308,15 @@ echo "output dir is ${outputdir}" test -d "${outputdir}" && rm -r "${outputdir}" mkdir "${outputdir}" -for outputfile in $(find "${rundir}" -regextype 'posix-extended' -type f -regex '.*\.(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}" + merge_dispatcher "${outputfile}" done +if [ -f "${rundir}/params.txt" ] +then + echo "copying params file" + cp "${rundir}/params.txt" "${outputdir}/params.txt" +fi + echo "these was ${warning_count} warning(s)"