PennLINC / fw-heudiconv

Heuristic-based Data Curation on Flywheel
BSD 3-Clause "New" or "Revised" License
6 stars 11 forks source link

Heuristic not running properly #62

Closed raithelc closed 4 years ago

raithelc commented 4 years ago

Hi all,

I have a problem getting my fw-heudiconv heuristic to run. I have communicated with another user who already got their heuristic to work, and from what I can tell our heuristics are relatively similar, at least structure-wise. However, mine does not run.

Here is the log file: 5e1f89ab3a969400596c21a3_logs-1.txt

And here is the heuristic file that I have been using: OlfNavHeuristicK.zip

I would greatly appreciate if you could provide any advice on what the issue could be.

Best, Clara Raithel

TinasheMTapera commented 4 years ago

Hey @raithelc,

It looks like the you've got spaces in your session names -- this won't work because we use the subject and session labels to create the BIDS filenames. In your case, the filename would end up as sub-may_ses-BRAIN RESEARCH^GOTTFRIED, which is not valid BIDS. You need to have your subject and session labels as BIDS valid alphanumeric characters only (a-z, A-Z, and 0-9). Please take a look at the official BIDS specification for an explanation.

raithelc commented 4 years ago

Oh thanks - that was indeed a big issue. I have tried to run it again now, and already succeeded with the anatomical and the field map (that is, it shows both these acquisition in BIDS format), but the functional runs (on whom I do want to apply the field maps) it still tells me that the intended values do not point to a bids file. I am really sorry to bother you again, but it would be great if you could take another look at my heuristic ( OlfNavHeuristicK.zip ) and my log file ( 5e209a343a969400576ab841_logs.txt ).

Thanks so much for all your time and help!!! Clara

TinasheMTapera commented 4 years ago

All of your files are being converted to BIDS except your task runs:

INFO: Applying changes to files...
DEBUG: 
1.3.12.2.1107.5.2.43.167024.2019100112560284711482007.0.0.0.nii.gz
    sub-may_ses-01_T1w.nii.gz -> sub-may/ses-01/anat/sub-may_ses-01_T1w.nii.gz
DEBUG: 
1.3.12.2.1107.5.2.43.167024.2019100113435110444167920.0.0.0_e2_ph.nii.gz
    sub-may_ses-01_phasediff.nii.gz -> sub-may/ses-01/fmap/sub-may_ses-01_phasediff.nii.gz
DEBUG: 'sub-may_ses-01_phasediff.nii.gz' IntendedFor: ['sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-01_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-02_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-03_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-04_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-05_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-06_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-07_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-olfnav_run-08_bold.nii.gz',
 'sub-may/ses-01/func/sub-may_ses-01_task-wb_bold.nii.gz']
DEBUG: Applied!

You need to rework your heuristic to make sure that the definitions of the strings are being caught in the infotodict() function.

The reason it's not working is because you've assigned the protocol variable like this:

protocol = s.protocol_name.lower()

Which creates a lowercase string of the protocol name. But you've searched for protocols like this

elif "1_BOLD_2mm" in protocol:

Which has uppercase. I suggest either: A) assigning protocol without the .lower() method, or B) lowercase-ing all of your strings in the lines elif "string" in protocol

raithelc commented 4 years ago

Oh amazing - it finally worked! Thank you so much for your quick and clear help! I really appreciate it :)

TinasheMTapera commented 4 years ago

No problem!