Skip to content

Commit 6eeac71

Browse files
committed
mknii: handle zips
1 parent 7cf2b2e commit 6eeac71

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

mknii

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ rename-phase(){
8383
rename-epi-multiecho(){
8484
local outdir="$1"; shift
8585
local outname="$1"; shift
86-
local rename_patt='s/([^_-]+)_e(\d+).(json|nii.gz)/echo-$2_$1.$3/'
87-
if [ -r "$outdir/${outname}_e1.nii.gz" ]; then
86+
local rename_patt='s/([^_-]+)_[ie](\d+).(json|nii.gz)/echo-$2_$1.$3/'
87+
if [ -r "$outdir/${outname}_e1.nii.gz" -o -r "$outdir/${outname}_i00001.nii.gz" ]; then
8888
echo "# trying to rename multiecho seq $outname";
8989
_rename-recent "$rename_patt" "$outdir" "${outname}_e*"
9090
fi
@@ -96,6 +96,7 @@ multiecho_exists(){
9696
# will have been caught earlier
9797
local nii_out="$1"
9898
for ME_name in "${nii_out/.nii.gz/_e1.nii.gz}" \
99+
"${nii_out/.nii.gz/_i00001.nii.gz}" \
99100
"${nii_out/magnitude.nii.gz/magnitude1.nii.gz}" \
100101
"$(add_echo_name "$nii_out")"; do
101102
verbose "# checking for multiecho like '$ME_name'"
@@ -143,6 +144,7 @@ add_json_task(){
143144
main(){
144145
set -euo pipefail
145146
set_dcm2niix # DCM2NIIX might be dcm2niix_afni or given by user
147+
local unzip_tmp="" # if input is zip file, track to rm tmp folder later
146148

147149
[ $# -ne 2 ] && usage
148150
nii_out="$1"; shift
@@ -151,6 +153,16 @@ main(){
151153
[ ${nii_out:(-7)} != ".nii.gz" ] &&
152154
echo "ERROR: output must have .nii.gz extention!" >&2 && exit 1
153155

156+
if [[ $dcm_folder =~ .zip$ ]]; then
157+
unzip_tmp=$(mktemp -d ${TMPDIR:-/tmp}/dcmzip_XXXX)
158+
zip_file=$dcm_folder
159+
[ ! -d "$unzip_tmp" ] && echo "ERROR: failed to create temporary folder for unzipping!" && return 1
160+
echo "# unzipping $zip_file to $unzip_tmp" >&2
161+
$DRYRUN unzip -d "$unzip_tmp" "$zip_file"
162+
# TODO: trap to cleanup zip file?
163+
dcm_folder=$unzip_tmp
164+
fi
165+
154166
test -z "$NOECHOCHECK" && multiecho_exists "$nii_out" && exit 0
155167

156168
# should let dcm2niix just fail instead of doing the work here?
@@ -226,5 +238,9 @@ main(){
226238
for nii_out_me in "${nii_outs[@]}"; do
227239
$DRYRUN 3dNotes -h "$0 $dcm_folder $nii_out" "$nii_out_me"
228240
done
241+
242+
# cleanup unziped file
243+
[[ -n "$unzip_tmp" && -d "$unzip_tmp" && "$unzip_tmp" =~ dcmzip_ ]] && rm -r "$unzip_tmp"
244+
return 0
229245
}
230246
[[ "$(caller)" != "0 "* ]] && set +u || main "$@"

0 commit comments

Comments
 (0)