Skip to content

Commit 8063976

Browse files
committed
fix(add-intended-for):ses-xyz/ in IntendedFor path
Also fixed tests and added some for sess
1 parent f625a92 commit 8063976

2 files changed

Lines changed: 36 additions & 8 deletions

File tree

add-intended-for

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ FIND_EXCLUDE=" -not -name *echo-*"
4646
# does this session have func and/or dwi directories?
4747
func_andor_dwi(){
4848
[[ -d func ]] && echo func/
49-
[[ -d dir/dwi ]] && echo dwi/
49+
[[ -d dwi ]] && echo dwi/
5050
return 0
5151
}
5252

@@ -76,6 +76,8 @@ csv_niifiles(){
7676
funcdwi=($(func_andor_dwi));
7777
[ ${#funcdwi[@]} -le 0 ] && echo "ERROR: no '$sesdir' has no func/ nor dwi/" >&2 && return 1
7878
find "${funcdwi[@]}" \( $find_names \) $FIND_EXCLUDE ) |
79+
# if ses-xyz, we need that in the file path
80+
sed "s:^:$(echo $sesdir/|grep -m1 -Po 'ses-[^/_-]+/'):" |
7981
sed 's/^\|$/"/g'|
8082
paste -sd,
8183
}
@@ -131,6 +133,7 @@ _intendedFor() {
131133
mapfile -t sefiles < <(find_se_file "$sesdir" "$sepatt")
132134
for sefile in "${sefiles[@]}"; do
133135
forfilescsv=$(csv_niifiles "$sesdir" "${boldpatt[@]}")
136+
#echo "XX: $forfilescsv" >&2
134137
[ -z "$forfilescsv" ] &&
135138
warn "no matching files in $sesdir/{func,dwi}/ matching ${boldpatt[*]}" && return 1
136139
check_shims "$sesdir" "$sefile" ${forfilescsv//,/ }

t/add-intended-for.bats

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
1+
touchjson(){ echo -e '{\n"ShimSetting":[0,0]\n}' > "$1"; }
2+
touchnii(){
3+
3dUndump -dimen 2 2 2 -ijk -prefix "${1:?output nifti}" -overwrite <(echo 0 0 0 1) 2>/dev/null;
4+
touchjson ${1/.nii.gz/}.json;
5+
}
16
setup(){
27
SUBJ1=$BATS_TEST_TMPDIR/sub-1
38
mkdir -p $SUBJ1/{fmap,func,dwi}/
49

5-
echo -e '{\n}' > $SUBJ1/fmap/sub-1_epi.json
6-
echo -e '{\n}' > $SUBJ1/fmap/sub-1_decoy__epi.json
10+
touchnii $SUBJ1/fmap/sub-1_epi.nii.gz
11+
touchnii $SUBJ1/func/sub-1_task-rest_bold.nii.gz
12+
touchnii $SUBJ1/dwi/sub-1_dwi.nii.gz
13+
touchnii $SUBJ1/func/sub-1_task-me-echo-1_bold.nii.gz
14+
15+
16+
# various ways to have issues: intentional bad files
17+
mkdir -p $SUBJ1/sub-1/fmap
18+
touchnii $SUBJ1/sub-1/fmap/sub-1_epi.nii.gz
19+
touchnii $SUBJ1/fmap/sub-1_decoy__epi.nii.gz
20+
touchnii $SUBJ1/func/sub-1_task-decoy_bold.nii.gz
21+
touchnii $SUBJ1/dwi/sub-1_acq-decoy_dwi.nii.gz
722

8-
touch $SUBJ1/func/sub-1_task-rest_bold.nii.gz
9-
touch $SUBJ1/dwi/sub-1_dwi.nii.gz
1023

11-
touch $SUBJ1/func/sub-1_task-me-echo-1_bold.nii.gz
24+
# 20260724 - need ses-xyz in IntendedFor path
25+
SES1=$BATS_TEST_TMPDIR/bids2/sub-1/ses-1
26+
mkdir -p $SES1/{fmap,func,dwi}/
27+
touchnii $SES1/fmap/sub-1_ses-1_epi.nii.gz
28+
touchnii $SES1/func/sub-1_ses-1_task-rest_bold.nii.gz
29+
touchnii $SES1/dwi/sub-1_ses-1_dwi.nii.gz
1230

13-
touch $SUBJ1/func/sub-1_task-decoy_bold.nii.gz
14-
touch $SUBJ1/dwi/sub-1_acq-decoy_dwi.nii.gz
1531

1632
source add-intended-for
1733
}
@@ -36,6 +52,15 @@ AIF_find_se_file() { #@test
3652
! [[ "$output" =~ decoy ]]
3753
}
3854

55+
csv_with_ses-rest() { #@test
56+
run csv_niifiles $SES1/ "*_task-rest*nii.gz"
57+
[[ $output =~ '"ses-1/func/sub-1_ses-1_task-rest_bold.nii.gz"' ]]
58+
}
59+
csv_with_ses-many() { #@test
60+
run csv_niifiles $SES1/ "*_task-rest*nii.gz" "*1_dwi.nii.gz"
61+
[[ $output =~ '"ses-1/func/sub-1_ses-1_task-rest_bold.nii.gz","ses-1/dwi/sub-1_ses-1_dwi.nii.gz"' ]]
62+
}
63+
3964
add-intended-for-full() { #@test
4065
run ./add-intended-for \
4166
-fmap '*1_epi.json' \

0 commit comments

Comments
 (0)