spinal-cord-7t / coil-qc-code

7T Spinal Cord Coil QC Analysis Code
0 stars 0 forks source link

Add script for conversion to BIDS #8 #9

Closed Kyota-exe closed 8 months ago

Kyota-exe commented 9 months ago

This script converts the existing data for MGH and MNI scans from the previous structure/format to BIDS. Screenshot 2023-12-27 130852 In order to use it, first download the archives from the OSF repository, unzip them and rename them to SITE-original. Then run the bids_conversion.py script from this directory. It will generate a folder called outputs, which has the following directory structure:

├───MGH
│   ├───Spinoza6
│   │   ├───anat
│   │   └───fmap
│   ├───SubD
│   │   ├───anat
│   │   └───fmap
│   ├───SubL
│   │   ├───anat
│   │   └───fmap
│   └───SubR
│       ├───anat
│       └───fmap
└───MNI
    ├───Spinoza6
    │   ├───anat
    │   └───fmap
    ├───SubD
    │   ├───anat
    │   └───fmap
    ├───SubL
    │   ├───anat
    │   └───fmap
    └───SubR
        ├───anat
        └───fmap

This is an example of the tree output for MGH/SubD:

├───anat
│       SubD_gre-uncombined-cRX01-ph_T2starw.json
│       SubD_gre-uncombined-cRX01-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX01_T2starw.json
│       SubD_gre-uncombined-cRX01_T2starw.nii.gz
│       SubD_gre-uncombined-cRX02-ph_T2starw.json
│       SubD_gre-uncombined-cRX02-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX02_T2starw.json
│       SubD_gre-uncombined-cRX02_T2starw.nii.gz
│       SubD_gre-uncombined-cRX03-ph_T2starw.json
│       SubD_gre-uncombined-cRX03-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX03_T2starw.json
│       SubD_gre-uncombined-cRX03_T2starw.nii.gz
│       SubD_gre-uncombined-cRX04-ph_T2starw.json
│       SubD_gre-uncombined-cRX04-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX04_T2starw.json
│       SubD_gre-uncombined-cRX04_T2starw.nii.gz
│       SubD_gre-uncombined-cRX05-ph_T2starw.json
│       SubD_gre-uncombined-cRX05-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX05_T2starw.json
│       SubD_gre-uncombined-cRX05_T2starw.nii.gz
│       SubD_gre-uncombined-cRX06-ph_T2starw.json
│       SubD_gre-uncombined-cRX06-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX06_T2starw.json
│       SubD_gre-uncombined-cRX06_T2starw.nii.gz
│       SubD_gre-uncombined-cRX07-ph_T2starw.json
│       SubD_gre-uncombined-cRX07-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX07_T2starw.json
│       SubD_gre-uncombined-cRX07_T2starw.nii.gz
│       SubD_gre-uncombined-cRX08-ph_T2starw.json
│       SubD_gre-uncombined-cRX08-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX08_T2starw.json
│       SubD_gre-uncombined-cRX08_T2starw.nii.gz
│       SubD_gre-uncombined-cRX09-ph_T2starw.json
│       SubD_gre-uncombined-cRX09-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX09_T2starw.json
│       SubD_gre-uncombined-cRX09_T2starw.nii.gz
│       SubD_gre-uncombined-cRX10-ph_T2starw.json
│       SubD_gre-uncombined-cRX10-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX10_T2starw.json
│       SubD_gre-uncombined-cRX10_T2starw.nii.gz
│       SubD_gre-uncombined-cRX11-ph_T2starw.json
│       SubD_gre-uncombined-cRX11-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX11_T2starw.json
│       SubD_gre-uncombined-cRX11_T2starw.nii.gz
│       SubD_gre-uncombined-cRX12-ph_T2starw.json
│       SubD_gre-uncombined-cRX12-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX12_T2starw.json
│       SubD_gre-uncombined-cRX12_T2starw.nii.gz
│       SubD_gre-uncombined-cRX13-ph_T2starw.json
│       SubD_gre-uncombined-cRX13-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX13_T2starw.json
│       SubD_gre-uncombined-cRX13_T2starw.nii.gz
│       SubD_gre-uncombined-cRX14-ph_T2starw.json
│       SubD_gre-uncombined-cRX14-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX14_T2starw.json
│       SubD_gre-uncombined-cRX14_T2starw.nii.gz
│       SubD_gre-uncombined-cRX15-ph_T2starw.json
│       SubD_gre-uncombined-cRX15-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX15_T2starw.json
│       SubD_gre-uncombined-cRX15_T2starw.nii.gz
│       SubD_gre-uncombined-cRX16-ph_T2starw.json
│       SubD_gre-uncombined-cRX16-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX16_T2starw.json
│       SubD_gre-uncombined-cRX16_T2starw.nii.gz
│       SubD_gre-uncombined-cRX17-ph_T2starw.json
│       SubD_gre-uncombined-cRX17-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX17_T2starw.json
│       SubD_gre-uncombined-cRX17_T2starw.nii.gz
│       SubD_gre-uncombined-cRX18-ph_T2starw.json
│       SubD_gre-uncombined-cRX18-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX18_T2starw.json
│       SubD_gre-uncombined-cRX18_T2starw.nii.gz
│       SubD_gre-uncombined-cRX19-ph_T2starw.json
│       SubD_gre-uncombined-cRX19-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX19_T2starw.json
│       SubD_gre-uncombined-cRX19_T2starw.nii.gz
│       SubD_gre-uncombined-cRX20-ph_T2starw.json
│       SubD_gre-uncombined-cRX20-ph_T2starw.nii.gz
│       SubD_gre-uncombined-cRX20_T2starw.json
│       SubD_gre-uncombined-cRX20_T2starw.nii.gz
│       SubD_gre_combined-64_T2starw.json
│       SubD_gre_combined-64_T2starw.nii.gz
│       SubD_gre_combined-66_T2starw.json
│       SubD_gre_combined-66_T2starw.nii.gz
│       SubD_gre_combined-67_T2starw.json
│       SubD_gre_combined-67_T2starw.nii.gz
│       SubD_gre_combined-68_T2starw.json
│       SubD_gre_combined-68_T2starw.nii.gz
│       SubD_mp2rage-INV1.json
│       SubD_mp2rage-INV1.nii.gz
│       SubD_mp2rage-INV2.json
│       SubD_mp2rage-INV2.nii.gz
│       SubD_mp2rage-UNI.json
│       SubD_mp2rage-UNI.nii.gz
│
└───fmap
        SubD_coilqa-sag-large-SNR.json
        SubD_coilqa-sag-large-SNR.nii.gz
        SubD_coilqa-sag-small-GFactor.json
        SubD_coilqa-sag-small-GFactor.nii.gz
        SubD_coilqa-tra-GFactor.json
        SubD_coilqa-tra-GFactor.nii.gz
        SubD_dream-medium-066-e1-39.json
        SubD_dream-medium-066-e1-39.nii.gz
        SubD_dream-medium-066-e1-42.json
        SubD_dream-medium-066-e1-42.nii.gz
        SubD_dream-medium-066-e2-39.json
        SubD_dream-medium-066-e2-39.nii.gz
        SubD_dream-medium-066-e2-40.json
        SubD_dream-medium-066-e2-40.nii.gz
        SubD_dream-medium-066-e2-41.json
        SubD_dream-medium-066-e2-41.nii.gz
        SubD_dream-medium-066-e2-42.json
        SubD_dream-medium-066-e2-42.nii.gz
        SubD_dream-medium-066-e2-43.json
        SubD_dream-medium-066-e2-43.nii.gz
        SubD_dream-medium-066-e2-44.json
        SubD_dream-medium-066-e2-44.nii.gz
        SubD_dream-medium-e1-33.json
        SubD_dream-medium-e1-33.nii.gz
        SubD_dream-medium-e1-36.json
        SubD_dream-medium-e1-36.nii.gz
        SubD_dream-medium-e2-33.json
        SubD_dream-medium-e2-33.nii.gz
        SubD_dream-medium-e2-34.json
        SubD_dream-medium-e2-34.nii.gz
        SubD_dream-medium-e2-35.json
        SubD_dream-medium-e2-35.nii.gz
        SubD_dream-medium-e2-36.json
        SubD_dream-medium-e2-36.nii.gz
        SubD_dream-medium-e2-37.json
        SubD_dream-medium-e2-37.nii.gz
        SubD_dream-medium-e2-38.json
        SubD_dream-medium-e2-38.nii.gz
        SubD_dream-medium-hwlimit-e1-45.json
        SubD_dream-medium-hwlimit-e1-45.nii.gz
        SubD_dream-medium-hwlimit-e1-48.json
        SubD_dream-medium-hwlimit-e1-48.nii.gz
        SubD_dream-medium-hwlimit-e2-45.json
        SubD_dream-medium-hwlimit-e2-45.nii.gz
        SubD_dream-medium-hwlimit-e2-46.json
        SubD_dream-medium-hwlimit-e2-46.nii.gz
        SubD_dream-medium-hwlimit-e2-47.json
        SubD_dream-medium-hwlimit-e2-47.nii.gz
        SubD_dream-medium-hwlimit-e2-48.json
        SubD_dream-medium-hwlimit-e2-48.nii.gz
        SubD_dream-medium-hwlimit-e2-49.json
        SubD_dream-medium-hwlimit-e2-49.nii.gz
        SubD_dream-medium-hwlimit-e2-50.json
        SubD_dream-medium-hwlimit-e2-50.nii.gz
        SubD_tfl-FAmap.json
        SubD_tfl-FAmap.nii.gz
        SubD_tfl-mag.json
        SubD_tfl-mag.nii.gz

I followed the general instructions detailed in #8 to figure out in which directory (fmap or anat) to place each file, but did not know how to name every file. I thus named them so that it clearly states the relevant information that distinguishes each file, and added the series number when I wasn't sure what exactly differentiates them (for example, for the GRE combined scans or the DREAM scans). For the DREAM scans for which we were not sure which ones to include/exclude, I simply included all of them as a first step, but it will be easy to modify this as needed. Now that the script is written, it is very easy to rename these files correctly so they follow the BIDS convention.

I would appreciate guidance concerning what the correct naming convention should be for these files. I have uploaded the generated outputs from this first version of the script in NeuroPoly/Projects/Spine7T_Zurich/Data/outputs_2023-12-27.zip.

Kyota-exe commented 8 months ago

1179b35 has "flattened" the output directory of the script (the generated BIDS database) so that all sites are included as separate versions of each subject in accordance with option 2 described in this article. After having sorted all the NYU DICOMs, I've also added NYU to the list of sites that the script supports with 3986165.

The following is now the list of directories that the script generates:

sub-MGHd/
sub-MGHl/
sub-MGHr/
sub-MGHspinoza6/
sub-MNId/
sub-MNIl/
sub-MNIr/
sub-MNIspinoza6/
sub-NYUd/
sub-NYUl/
sub-NYUr/
jcohenadad commented 8 months ago

About https://github.com/spinal-cord-7t/coil-qc-code/pull/9#issuecomment-1903329289, BIDS multisite datasets typically use the terminology SITE instead of SITE to distinguish between subjects. It could be e.g.:

sub-MGH1/
sub-MGH2/
sub-MGH3/

And the file participants.tsv can help us keep track of who is who

jcohenadad commented 8 months ago

@Kyota-exe would you be able to do a tree of the produced dataset so I can review how it looks like?

Kyota-exe commented 8 months ago

@jcohenadad Of course. Thank you for your feedback. I updated the filenames so that they use the acq- field, but I was not sure whether info specific on the scan itself such as the channel number for GRE and the series number & "e version" (?) for DREAM scans should but put inside this field. I would greatly appreciate any feedback.

The following is the directory structure:

├───sub-MGH1
│   ├───anat
│   └───fmap
├───sub-MGH2
│   ├───anat
│   └───fmap
├───sub-MGH3
│   ├───anat
│   └───fmap
├───sub-MGH4
│   ├───anat
│   └───fmap
├───sub-MNI1
│   ├───anat
│   └───fmap
├───sub-MNI2
│   ├───anat
│   └───fmap
├───sub-MNI3
│   ├───anat
│   └───fmap
├───sub-MNI4
│   ├───anat
│   └───fmap
├───sub-NYU1
│   ├───anat
│   └───fmap
├───sub-NYU2
│   ├───anat
│   └───fmap
└───sub-NYU3
    ├───anat
    └───fmap

The following are the files inside sub-MGH1:

├───sub-MGH1
│   ├───anat
│   │       sub-MGH1_acq-greUncombined01_T2starw.json
│   │       sub-MGH1_acq-greUncombined01_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined02_T2starw.json
│   │       sub-MGH1_acq-greUncombined02_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined03_T2starw.json
│   │       sub-MGH1_acq-greUncombined03_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined04_T2starw.json
│   │       sub-MGH1_acq-greUncombined04_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined05_T2starw.json
│   │       sub-MGH1_acq-greUncombined05_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined06_T2starw.json
│   │       sub-MGH1_acq-greUncombined06_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined07_T2starw.json
│   │       sub-MGH1_acq-greUncombined07_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined08_T2starw.json
│   │       sub-MGH1_acq-greUncombined08_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined09_T2starw.json
│   │       sub-MGH1_acq-greUncombined09_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined10_T2starw.json
│   │       sub-MGH1_acq-greUncombined10_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined11_T2starw.json
│   │       sub-MGH1_acq-greUncombined11_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined12_T2starw.json
│   │       sub-MGH1_acq-greUncombined12_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined13_T2starw.json
│   │       sub-MGH1_acq-greUncombined13_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined14_T2starw.json
│   │       sub-MGH1_acq-greUncombined14_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined15_T2starw.json
│   │       sub-MGH1_acq-greUncombined15_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined16_T2starw.json
│   │       sub-MGH1_acq-greUncombined16_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined17_T2starw.json
│   │       sub-MGH1_acq-greUncombined17_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined18_T2starw.json
│   │       sub-MGH1_acq-greUncombined18_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined19_T2starw.json
│   │       sub-MGH1_acq-greUncombined19_T2starw.nii.gz
│   │       sub-MGH1_acq-greUncombined20_T2starw.json
│   │       sub-MGH1_acq-greUncombined20_T2starw.nii.gz
│   │       sub-MGH1_acq-mp2rageINV1.json
│   │       sub-MGH1_acq-mp2rageINV1.nii.gz
│   │       sub-MGH1_acq-mp2rageINV2.json
│   │       sub-MGH1_acq-mp2rageINV2.nii.gz
│   │       sub-MGH1_acq-mp2rageUNI.json
│   │       sub-MGH1_acq-mp2rageUNI.nii.gz
│   │
│   └───fmap
│           sub-MGH1_acq-coilqaSagLarge_SNR.json
│           sub-MGH1_acq-coilqaSagLarge_SNR.nii.gz
│           sub-MGH1_acq-coilqaSagSmall_GFactor.json
│           sub-MGH1_acq-coilqaSagSmall_GFactor.nii.gz
│           sub-MGH1_acq-coilqaTra_GFactor.json
│           sub-MGH1_acq-coilqaTra_GFactor.nii.gz
│           sub-MGH1_acq-dreamMedium066_e1_39.json
│           sub-MGH1_acq-dreamMedium066_e1_39.nii.gz
│           sub-MGH1_acq-dreamMedium066_e1_42.json
│           sub-MGH1_acq-dreamMedium066_e1_42.nii.gz
│           sub-MGH1_acq-dreamMedium066_e2_39.json
│           sub-MGH1_acq-dreamMedium066_e2_39.nii.gz
│           sub-MGH1_acq-dreamMedium066_e2_40.json
│           sub-MGH1_acq-dreamMedium066_e2_40.nii.gz
│           sub-MGH1_acq-dreamMedium066_e2_41.json
│           sub-MGH1_acq-dreamMedium066_e2_41.nii.gz
│           sub-MGH1_acq-dreamMedium066_e2_42.json
│           sub-MGH1_acq-dreamMedium066_e2_42.nii.gz
│           sub-MGH1_acq-dreamMedium066_e2_43.json
│           sub-MGH1_acq-dreamMedium066_e2_43.nii.gz
│           sub-MGH1_acq-dreamMedium066_e2_44.json
│           sub-MGH1_acq-dreamMedium066_e2_44.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e1_45.json
│           sub-MGH1_acq-dreamMediumHwlimit_e1_45.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e1_48.json
│           sub-MGH1_acq-dreamMediumHwlimit_e1_48.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e2_45.json
│           sub-MGH1_acq-dreamMediumHwlimit_e2_45.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e2_46.json
│           sub-MGH1_acq-dreamMediumHwlimit_e2_46.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e2_47.json
│           sub-MGH1_acq-dreamMediumHwlimit_e2_47.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e2_48.json
│           sub-MGH1_acq-dreamMediumHwlimit_e2_48.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e2_49.json
│           sub-MGH1_acq-dreamMediumHwlimit_e2_49.nii.gz
│           sub-MGH1_acq-dreamMediumHwlimit_e2_50.json
│           sub-MGH1_acq-dreamMediumHwlimit_e2_50.nii.gz
│           sub-MGH1_acq-dreamMedium_e1_33.json
│           sub-MGH1_acq-dreamMedium_e1_33.nii.gz
│           sub-MGH1_acq-dreamMedium_e1_36.json
│           sub-MGH1_acq-dreamMedium_e1_36.nii.gz
│           sub-MGH1_acq-dreamMedium_e2_33.json
│           sub-MGH1_acq-dreamMedium_e2_33.nii.gz
│           sub-MGH1_acq-dreamMedium_e2_34.json
│           sub-MGH1_acq-dreamMedium_e2_34.nii.gz
│           sub-MGH1_acq-dreamMedium_e2_35.json
│           sub-MGH1_acq-dreamMedium_e2_35.nii.gz
│           sub-MGH1_acq-dreamMedium_e2_36.json
│           sub-MGH1_acq-dreamMedium_e2_36.nii.gz
│           sub-MGH1_acq-dreamMedium_e2_37.json
│           sub-MGH1_acq-dreamMedium_e2_37.nii.gz
│           sub-MGH1_acq-dreamMedium_e2_38.json
│           sub-MGH1_acq-dreamMedium_e2_38.nii.gz
│           sub-MGH1_acq-tfl_FAmap.json
│           sub-MGH1_acq-tfl_FAmap.nii.gz
│           sub-MGH1_acq-tfl_mag.json
│           sub-MGH1_acq-tfl_mag.nii.gz

And the following is the file contents of participants.tsv:

participant_id  species age     sex     pathology       institution     field
sub-MGH4        homo sapiens    n/a     n/a     HC      MGH     7T
sub-MGH1        homo sapiens    n/a     n/a     HC      MGH     7T
sub-MGH2        homo sapiens    n/a     n/a     HC      MGH     7T
sub-MGH3        homo sapiens    n/a     n/a     HC      MGH     7T
sub-MNI4        homo sapiens    n/a     n/a     HC      MNI     7T
sub-MNI1        homo sapiens    n/a     n/a     HC      MNI     7T
sub-MNI2        homo sapiens    n/a     n/a     HC      MNI     7T
sub-MNI3        homo sapiens    n/a     n/a     HC      MNI     7T
sub-NYU1        homo sapiens    n/a     n/a     HC      NYU     7T
sub-NYU2        homo sapiens    n/a     n/a     HC      NYU     7T
sub-NYU3        homo sapiens    n/a     n/a     HC      NYU     7T
jcohenadad commented 8 months ago

Great job! 👏 We're almost there I think. Few comments:

[!Note] Normally the T1map and UNIT1 should go under the derivatives as per the convention, but to simplify our processing scripts I think it is reasonable to put everything under the source folder. Otherwise it might create confusion to have some of our input data under the derivatives folder.

I have more comments, but right now there are too many changes to apply, and some of my additional comments might be fixed after you address the ones above.

evaalonsoortiz commented 8 months ago
  1. Such as the acquisition protocol is set up, there is no T1 map output by the MP2RAGE. Is there usually? It might be an option in the protocol menu ... The acquisition protocol for the MP2RAGE scan was setup by the Marseille group, as it is part of the qMRI project protocol.

  2. I believe 39 is indeed a scan number.

jcohenadad commented 8 months ago

Such as the acquisition protocol is set up, there is no T1 map output by the MP2RAGE. Is there usually? It might be an option in the protocol menu ... The acquisition protocol for the MP2RAGE scan was setup by the Marseille group, as it is part of the qMRI project protocol.

Yes, it is (one of) the main point of the MP2RAGE: to get a T1map. The MP2RAGE product sequence can output the T1map (if the box is checked), but maybe a custom sequence was used in the context of this project. It would be good to have the Marseille folks chip into this conversation.

evaalonsoortiz commented 8 months ago

Sure, let's double check with them. From what I've read in papers (ex: https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/full/10.1002/nbm.4142) it sounds like you have the generate the (T1) lookup table yourself using the UNI1 images.

vcallot commented 8 months ago

Such as the acquisition protocol is set up, there is no T1 map output by the MP2RAGE. Is there usually? It might be an option in the protocol menu ... The acquisition protocol for the MP2RAGE scan was setup by the Marseille group, as it is part of the qMRI project protocol.

Yes, it is (one of) the main point of the MP2RAGE: to get a T1map. The MP2RAGE product sequence can output the T1map (if the box is checked), but maybe a custom sequence was used in the context of this project. It would be good to have the Marseille folks chip into this conversation.

Hello, 1) the MP2RAGE T1 map reconstructed on-line (if box checked) may be B1+ biased (depending on the protocol, RF inhomogeneities, etc .. ) -> this map is thus usually not used, as is, for T1 quantification. 2) the MP2RAGE UNI used in the fMRI/coilQA was meant to be used for cord segmentation and registration. 3) T1 mapping is part of the SC qMRI leg of the THS study, B1+ corrected map will be derivated there. Hope this makes sense and helps. See you soon.

Kyota-exe commented 8 months ago

I made some modifications to the filenames based on the feedback by @jcohenadad. The only modification I have not yet implemented is the proper naming of the DREAM files: the only thing I see clearly differentiating them is the series number, hence why I originally put it in the filename (if I removed it, I would have multiple of the same filename in the directory, which is not possible), but since this does not follow the BIDS convention, I will further investigate these scans.

Kyota-exe commented 8 months ago

The following is the contents of sub-MGH1 after the latest modifications:

├───anat
│       sub-MGH1_acq-uncombined01_T2starw.json
│       sub-MGH1_acq-uncombined01_T2starw.nii.gz
│       sub-MGH1_acq-uncombined02_T2starw.json
│       sub-MGH1_acq-uncombined02_T2starw.nii.gz
│       sub-MGH1_acq-uncombined03_T2starw.json
│       sub-MGH1_acq-uncombined03_T2starw.nii.gz
│       sub-MGH1_acq-uncombined04_T2starw.json
│       sub-MGH1_acq-uncombined04_T2starw.nii.gz
│       sub-MGH1_acq-uncombined05_T2starw.json
│       sub-MGH1_acq-uncombined05_T2starw.nii.gz
│       sub-MGH1_acq-uncombined06_T2starw.json
│       sub-MGH1_acq-uncombined06_T2starw.nii.gz
│       sub-MGH1_acq-uncombined07_T2starw.json
│       sub-MGH1_acq-uncombined07_T2starw.nii.gz
│       sub-MGH1_acq-uncombined08_T2starw.json
│       sub-MGH1_acq-uncombined08_T2starw.nii.gz
│       sub-MGH1_acq-uncombined09_T2starw.json
│       sub-MGH1_acq-uncombined09_T2starw.nii.gz
│       sub-MGH1_acq-uncombined10_T2starw.json
│       sub-MGH1_acq-uncombined10_T2starw.nii.gz
│       sub-MGH1_acq-uncombined11_T2starw.json
│       sub-MGH1_acq-uncombined11_T2starw.nii.gz
│       sub-MGH1_acq-uncombined12_T2starw.json
│       sub-MGH1_acq-uncombined12_T2starw.nii.gz
│       sub-MGH1_acq-uncombined13_T2starw.json
│       sub-MGH1_acq-uncombined13_T2starw.nii.gz
│       sub-MGH1_acq-uncombined14_T2starw.json
│       sub-MGH1_acq-uncombined14_T2starw.nii.gz
│       sub-MGH1_acq-uncombined15_T2starw.json
│       sub-MGH1_acq-uncombined15_T2starw.nii.gz
│       sub-MGH1_acq-uncombined16_T2starw.json
│       sub-MGH1_acq-uncombined16_T2starw.nii.gz
│       sub-MGH1_acq-uncombined17_T2starw.json
│       sub-MGH1_acq-uncombined17_T2starw.nii.gz
│       sub-MGH1_acq-uncombined18_T2starw.json
│       sub-MGH1_acq-uncombined18_T2starw.nii.gz
│       sub-MGH1_acq-uncombined19_T2starw.json
│       sub-MGH1_acq-uncombined19_T2starw.nii.gz
│       sub-MGH1_acq-uncombined20_T2starw.json
│       sub-MGH1_acq-uncombined20_T2starw.nii.gz
│       sub-MGH1_inv-1_MP2RAGE.json
│       sub-MGH1_inv-1_part-mag_MP2RAGE.nii.gz
│       sub-MGH1_inv-2_MP2RAGE.json
│       sub-MGH1_inv-2_part-mag_MP2RAGE.nii.gz
│       sub-MGH1_UNIT1_MP2RAGE.json
│       sub-MGH1_UNIT1_MP2RAGE.nii.gz
│
├───fmap
│       sub-MGH1_acq-coilQaSagLarge_SNR.json
│       sub-MGH1_acq-coilQaSagLarge_SNR.nii.gz
│       sub-MGH1_acq-coilQaSagSmall_GFactor.json
│       sub-MGH1_acq-coilQaSagSmall_GFactor.nii.gz
│       sub-MGH1_acq-coilQaTra_GFactor.json
│       sub-MGH1_acq-coilQaTra_GFactor.nii.gz
│       sub-MGH1_acq-dreamMedium066_e1_39.json
│       sub-MGH1_acq-dreamMedium066_e1_39.nii.gz
│       sub-MGH1_acq-dreamMedium066_e1_42.json
│       sub-MGH1_acq-dreamMedium066_e1_42.nii.gz
│       sub-MGH1_acq-dreamMedium066_e2_39.json
│       sub-MGH1_acq-dreamMedium066_e2_39.nii.gz
│       sub-MGH1_acq-dreamMedium066_e2_40.json
│       sub-MGH1_acq-dreamMedium066_e2_40.nii.gz
│       sub-MGH1_acq-dreamMedium066_e2_41.json
│       sub-MGH1_acq-dreamMedium066_e2_41.nii.gz
│       sub-MGH1_acq-dreamMedium066_e2_42.json
│       sub-MGH1_acq-dreamMedium066_e2_42.nii.gz
│       sub-MGH1_acq-dreamMedium066_e2_43.json
│       sub-MGH1_acq-dreamMedium066_e2_43.nii.gz
│       sub-MGH1_acq-dreamMedium066_e2_44.json
│       sub-MGH1_acq-dreamMedium066_e2_44.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e1_45.json
│       sub-MGH1_acq-dreamMediumHwlimit_e1_45.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e1_48.json
│       sub-MGH1_acq-dreamMediumHwlimit_e1_48.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e2_45.json
│       sub-MGH1_acq-dreamMediumHwlimit_e2_45.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e2_46.json
│       sub-MGH1_acq-dreamMediumHwlimit_e2_46.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e2_47.json
│       sub-MGH1_acq-dreamMediumHwlimit_e2_47.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e2_48.json
│       sub-MGH1_acq-dreamMediumHwlimit_e2_48.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e2_49.json
│       sub-MGH1_acq-dreamMediumHwlimit_e2_49.nii.gz
│       sub-MGH1_acq-dreamMediumHwlimit_e2_50.json
│       sub-MGH1_acq-dreamMediumHwlimit_e2_50.nii.gz
│       sub-MGH1_acq-dreamMedium_e1_33.json
│       sub-MGH1_acq-dreamMedium_e1_33.nii.gz
│       sub-MGH1_acq-dreamMedium_e1_36.json
│       sub-MGH1_acq-dreamMedium_e1_36.nii.gz
│       sub-MGH1_acq-dreamMedium_e2_33.json
│       sub-MGH1_acq-dreamMedium_e2_33.nii.gz
│       sub-MGH1_acq-dreamMedium_e2_34.json
│       sub-MGH1_acq-dreamMedium_e2_34.nii.gz
│       sub-MGH1_acq-dreamMedium_e2_35.json
│       sub-MGH1_acq-dreamMedium_e2_35.nii.gz
│       sub-MGH1_acq-dreamMedium_e2_36.json
│       sub-MGH1_acq-dreamMedium_e2_36.nii.gz
│       sub-MGH1_acq-dreamMedium_e2_37.json
│       sub-MGH1_acq-dreamMedium_e2_37.nii.gz
│       sub-MGH1_acq-dreamMedium_e2_38.json
│       sub-MGH1_acq-dreamMedium_e2_38.nii.gz
│       sub-MGH1_acq-famp_TB1TFL.json
│       sub-MGH1_acq-famp_TB1TFL.nii.gz
│       sub-MGH1_acq-mag_TB1TFL.json
│       sub-MGH1_acq-mag_TB1TFL.nii.gz
jcohenadad commented 8 months ago
evaalonsoortiz commented 8 months ago
  • Where is the combined T2starw? It should also be present and named sub-MGH1_T2starw.nii.gz

We had acquired the GRE scan in order to compare individual channels for each coil, therefore we are not interested in keeping the combined scan.

  • sub-MGH1_acq-dreamMedium066_* what does the 066 refer to? Maybe @evaalonsoortiz knows

066 referes to the voltage. We acquired DREAM scans with 3 different voltages (0.66refV, refV, 1.5refV). The two contrasts output by the DREAM sequence (currently e1 and e2) can be combined into a FA map using https://github.com/spinal-cord-7t/coil-qc-code/blob/main/dream_FAmap.py. The scans acquired with 3 different voltages should also be combined into one scan to minimize bias in the FA map (see: https://pubmed.ncbi.nlm.nih.gov/32645432/). I will adapt this script to do this. Once that is done, we can BIDSify that unbiased DREAM FA map only.

Here my question is, what is the preferred convention for the following:

We have 2 contrasts output by the DREAM scan, which are supposed to be combined to generate an FA map (see my comment above).

Is it preferable to first combine and generate the FA map, then structure that according to BIDS (option 1), OR is it preferred to have both contrasts in BIDS format, then leave it to the analysis script to grab those scans and generate an FA map (option 2)?

It would be a similar process to generating a B0 map: is it preferred to BIDSify the individual echoes, or have a BIDS compliant B0 map in your open dataset? If there is no hard rule for this, I would prefer going with option 1 for our data.

jcohenadad commented 8 months ago

We had acquired the GRE scan in order to compare individual channels for each coil, therefore we are not interested in keeping the combined scan.

I consider the combined scan to be important, so I recommend keeping it. The uncombined and combined should be seen as a whole 'set' to qualitatively assess channel distributions and how the combined image looks in the end.

066 referes to the voltage. We acquired DREAM scans with 3 different voltages (0.66refV, refV, 1.5refV).

In that case I would add the unit, eg: acq-dreamMediumRefV0.66, acq-dreamMediumRefV1, acq-dreamMediumRefV1.5

Is it preferable to first combine and generate the FA map, then structure that according to BIDS (option 1), OR is it preferred to have both contrasts in BIDS format, then leave it to the analysis script to grab those scans and generate an FA map (option 2)? It would be a similar process to generating a B0 map: is it preferred to BIDSify the individual echoes, or have a BIDS compliant B0 map in your open dataset? If there is no hard rule for this, I would prefer going with option 1 for our data.

There is no hard rule for this, but my suggestion would be for option 2. Eg: if in 6 months we realize there was a bug in the way we compute the FA maps or the any other maps, then there is no "easy" going back because the source data would not be on OpenNeuro.

evaalonsoortiz commented 8 months ago

@Kyota-exe Based on Julien's comments above, I will edit the script https://github.com/spinal-cord-7t/coil-qc-code/blob/main/dream_FAmap.py so that you have the code which computes an FA map from all of the DREAM scans. The code in that script can be transferred to the notebook that we put together for the full analysis.

Kyota-exe commented 8 months ago

Understood, thank you @evaalonsoortiz. @jcohenadad, thank you again for the feedback. I have implemented the latest filename modifications and added the corrected combined GRE scan to the database. These are the contents of sub-MGH1:

├───anat
│       sub-MGH1_inv-1_MP2RAGE.json
│       sub-MGH1_inv-1_part-mag_MP2RAGE.nii.gz
│       sub-MGH1_inv-2_MP2RAGE.json
│       sub-MGH1_inv-2_part-mag_MP2RAGE.nii.gz
│       sub-MGH1_rec-uncombined01_T2starw.json
│       sub-MGH1_rec-uncombined01_T2starw.nii.gz
│       sub-MGH1_rec-uncombined02_T2starw.json
│       sub-MGH1_rec-uncombined02_T2starw.nii.gz
│       sub-MGH1_rec-uncombined03_T2starw.json
│       sub-MGH1_rec-uncombined03_T2starw.nii.gz
│       sub-MGH1_rec-uncombined04_T2starw.json
│       sub-MGH1_rec-uncombined04_T2starw.nii.gz
│       sub-MGH1_rec-uncombined05_T2starw.json
│       sub-MGH1_rec-uncombined05_T2starw.nii.gz
│       sub-MGH1_rec-uncombined06_T2starw.json
│       sub-MGH1_rec-uncombined06_T2starw.nii.gz
│       sub-MGH1_rec-uncombined07_T2starw.json
│       sub-MGH1_rec-uncombined07_T2starw.nii.gz
│       sub-MGH1_rec-uncombined08_T2starw.json
│       sub-MGH1_rec-uncombined08_T2starw.nii.gz
│       sub-MGH1_rec-uncombined09_T2starw.json
│       sub-MGH1_rec-uncombined09_T2starw.nii.gz
│       sub-MGH1_rec-uncombined10_T2starw.json
│       sub-MGH1_rec-uncombined10_T2starw.nii.gz
│       sub-MGH1_rec-uncombined11_T2starw.json
│       sub-MGH1_rec-uncombined11_T2starw.nii.gz
│       sub-MGH1_rec-uncombined12_T2starw.json
│       sub-MGH1_rec-uncombined12_T2starw.nii.gz
│       sub-MGH1_rec-uncombined13_T2starw.json
│       sub-MGH1_rec-uncombined13_T2starw.nii.gz
│       sub-MGH1_rec-uncombined14_T2starw.json
│       sub-MGH1_rec-uncombined14_T2starw.nii.gz
│       sub-MGH1_rec-uncombined15_T2starw.json
│       sub-MGH1_rec-uncombined15_T2starw.nii.gz
│       sub-MGH1_rec-uncombined16_T2starw.json
│       sub-MGH1_rec-uncombined16_T2starw.nii.gz
│       sub-MGH1_rec-uncombined17_T2starw.json
│       sub-MGH1_rec-uncombined17_T2starw.nii.gz
│       sub-MGH1_rec-uncombined18_T2starw.json
│       sub-MGH1_rec-uncombined18_T2starw.nii.gz
│       sub-MGH1_rec-uncombined19_T2starw.json
│       sub-MGH1_rec-uncombined19_T2starw.nii.gz
│       sub-MGH1_rec-uncombined20_T2starw.json
│       sub-MGH1_rec-uncombined20_T2starw.nii.gz
│       sub-MGH1_T2starw.json
│       sub-MGH1_T2starw.nii.gz
│       sub-MGH1_UNIT1.json
│       sub-MGH1_UNIT1.nii.gz
│
├───fmap
│       sub-MGH1_acq-anat_TB1TFL.json
│       sub-MGH1_acq-anat_TB1TFL.nii.gz
│       sub-MGH1_acq-coilQaSagLarge_SNR.json
│       sub-MGH1_acq-coilQaSagLarge_SNR.nii.gz
│       sub-MGH1_acq-coilQaSagSmall_GFactor.json
│       sub-MGH1_acq-coilQaSagSmall_GFactor.nii.gz
│       sub-MGH1_acq-coilQaTra_GFactor.json
│       sub-MGH1_acq-coilQaTra_GFactor.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e1-33.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e1-33.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e1-36.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e1-36.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-33.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-33.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-34.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-34.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-35.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-35.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-36.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-36.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-37.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-37.nii.gz
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-38.json
│       sub-MGH1_acq-dreamMediumRefV0.66-e2-38.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e1-39.json
│       sub-MGH1_acq-dreamMediumRefV1-e1-39.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e1-42.json
│       sub-MGH1_acq-dreamMediumRefV1-e1-42.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e2-39.json
│       sub-MGH1_acq-dreamMediumRefV1-e2-39.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e2-40.json
│       sub-MGH1_acq-dreamMediumRefV1-e2-40.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e2-41.json
│       sub-MGH1_acq-dreamMediumRefV1-e2-41.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e2-42.json
│       sub-MGH1_acq-dreamMediumRefV1-e2-42.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e2-43.json
│       sub-MGH1_acq-dreamMediumRefV1-e2-43.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1-e2-44.json
│       sub-MGH1_acq-dreamMediumRefV1-e2-44.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e1-45.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e1-45.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e1-48.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e1-48.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-45.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-45.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-46.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-46.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-47.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-47.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-48.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-48.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-49.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-49.nii.gz
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-50.json
│       sub-MGH1_acq-dreamMediumRefV1.5-e2-50.nii.gz
│       sub-MGH1_acq-famp_TB1TFL.json
│       sub-MGH1_acq-famp_TB1TFL.nii.gz
jcohenadad commented 8 months ago

Almost there! Few additional things:

evaalonsoortiz commented 8 months ago

The DREAM scans listed above correspond to the following:

e1-33 : non-distortion corrected (ND) STE image e1-36: distortion corrected (DIS2D) STE image

e2-33 : ND FID image e2-36: DIS2D FID image

e2-34 : ND reference voltage (refV) map e2-37: DIS2D refV map

e2-35: ND flip angle (FA) map e2-38: DIS2D FA map

STE and FID images can be combined to create an FA map (see: https://github.com/spinal-cord-7t/coil-qc-code/blob/main/dream_FAmap.py, and https://onlinelibrary.wiley.com/doi/10.1002/mrm.24158). Apparently both FA and voltage maps are already output by the scanner. I suggest we keep only the FA and RefV maps, and not STE and FID images. TBD how the BIDS convention deals with those designations (FA and RefV maps).

Now we have to choose between ND and DIS2D. I have looked at images for the dataset corresponding to MGH1 and it appears that MP2RAGE was acquired with no distortion correction (even though the protocol circulated by Virginie had distortion correction ON).

Conclusion:

jcohenadad commented 8 months ago

STE and FID images can be combined to create an FA map (see: https://github.com/spinal-cord-7t/coil-qc-code/blob/main/dream_FAmap.py, and https://onlinelibrary.wiley.com/doi/10.1002/mrm.24158). Apparently both FA and voltage maps are already output by the scanner. I suggest we keep only the FA and RefV maps, and not STE and FID images.

👍

TBD how the BIDS convention deals with those designations (FA and RefV maps).

To align with the TFL, I would go with: FA --> sub-01_acq-famp_TB1DREAM.* RefV --> sub-01_acq-refv_TB1DREAM.*

Distortion correction for TFLflash perhaps does nothing (as was the case for coilQA, which is why we never turned it on)

👍

We should keep the ND images for DREAM and not the DIS2D, since we have no other DIS2D scans (nor is the MP2RAGE DIS2D, and that is the one we use for segmenting the cord).

👍

I also looked at the ND vs. DIS2D DREAM images and the distortion effect is minimal

I guess it depends on the FOV (i've seen pretty terrible gradient distortions on the RF shimming project), but if we use other images for co-registration, then we want to make sure that all images are (or are not) distortion corrected. But I understand we go with 'all ND', so that's good.

Also: I understand from the list of files that 'e1-' and 'e2-' have nothing to do with echo 1 and echo 2. If that's correct @evaalonsoortiz then we should get rid of these fields.

evaalonsoortiz commented 8 months ago

Yes, we should get rid of e1, e2.

Kyota-exe commented 8 months ago

I have modified the conversion script in accordance with the discussion, these are the latest outputs:

├───anat
│       sub-MGH1_inv-1_MP2RAGE.json
│       sub-MGH1_inv-1_part-mag_MP2RAGE.nii.gz
│       sub-MGH1_inv-2_MP2RAGE.json
│       sub-MGH1_inv-2_part-mag_MP2RAGE.nii.gz
│       sub-MGH1_rec-uncombined01_T2starw.json
│       sub-MGH1_rec-uncombined01_T2starw.nii.gz
│       sub-MGH1_rec-uncombined02_T2starw.json
│       sub-MGH1_rec-uncombined02_T2starw.nii.gz
│       sub-MGH1_rec-uncombined03_T2starw.json
│       sub-MGH1_rec-uncombined03_T2starw.nii.gz
│       sub-MGH1_rec-uncombined04_T2starw.json
│       sub-MGH1_rec-uncombined04_T2starw.nii.gz
│       sub-MGH1_rec-uncombined05_T2starw.json
│       sub-MGH1_rec-uncombined05_T2starw.nii.gz
│       sub-MGH1_rec-uncombined06_T2starw.json
│       sub-MGH1_rec-uncombined06_T2starw.nii.gz
│       sub-MGH1_rec-uncombined07_T2starw.json
│       sub-MGH1_rec-uncombined07_T2starw.nii.gz
│       sub-MGH1_rec-uncombined08_T2starw.json
│       sub-MGH1_rec-uncombined08_T2starw.nii.gz
│       sub-MGH1_rec-uncombined09_T2starw.json
│       sub-MGH1_rec-uncombined09_T2starw.nii.gz
│       sub-MGH1_rec-uncombined10_T2starw.json
│       sub-MGH1_rec-uncombined10_T2starw.nii.gz
│       sub-MGH1_rec-uncombined11_T2starw.json
│       sub-MGH1_rec-uncombined11_T2starw.nii.gz
│       sub-MGH1_rec-uncombined12_T2starw.json
│       sub-MGH1_rec-uncombined12_T2starw.nii.gz
│       sub-MGH1_rec-uncombined13_T2starw.json
│       sub-MGH1_rec-uncombined13_T2starw.nii.gz
│       sub-MGH1_rec-uncombined14_T2starw.json
│       sub-MGH1_rec-uncombined14_T2starw.nii.gz
│       sub-MGH1_rec-uncombined15_T2starw.json
│       sub-MGH1_rec-uncombined15_T2starw.nii.gz
│       sub-MGH1_rec-uncombined16_T2starw.json
│       sub-MGH1_rec-uncombined16_T2starw.nii.gz
│       sub-MGH1_rec-uncombined17_T2starw.json
│       sub-MGH1_rec-uncombined17_T2starw.nii.gz
│       sub-MGH1_rec-uncombined18_T2starw.json
│       sub-MGH1_rec-uncombined18_T2starw.nii.gz
│       sub-MGH1_rec-uncombined19_T2starw.json
│       sub-MGH1_rec-uncombined19_T2starw.nii.gz
│       sub-MGH1_rec-uncombined20_T2starw.json
│       sub-MGH1_rec-uncombined20_T2starw.nii.gz
│       sub-MGH1_T2starw.json
│       sub-MGH1_T2starw.nii.gz
│       sub-MGH1_UNIT1.json
│       sub-MGH1_UNIT1.nii.gz
│
├───fmap
│       sub-MGH1_acq-anat_TB1TFL.json
│       sub-MGH1_acq-anat_TB1TFL.nii.gz
│       sub-MGH1_acq-coilQaSagLarge_SNR.json
│       sub-MGH1_acq-coilQaSagLarge_SNR.nii.gz
│       sub-MGH1_acq-coilQaSagSmall_GFactor.json
│       sub-MGH1_acq-coilQaSagSmall_GFactor.nii.gz
│       sub-MGH1_acq-coilQaTra_GFactor.json
│       sub-MGH1_acq-coilQaTra_GFactor.nii.gz
│       sub-MGH1_acq-famp_TB1DREAM.json
│       sub-MGH1_acq-famp_TB1DREAM.nii.gz
│       sub-MGH1_acq-famp_TB1TFL.json
│       sub-MGH1_acq-famp_TB1TFL.nii.gz
│       sub-MGH1_acq-refv_TB1DREAM.json
│       sub-MGH1_acq-refv_TB1DREAM.nii.gz

I will make sure the conversion script works correctly for all the subjects in every site, but unless I missed something, I believe the conversion should be good now. :smile:

jcohenadad commented 8 months ago

Amazing! Good job @Kyota-exe 👏

evaalonsoortiz commented 7 months ago

@Kyota-exe I think we may have forgotten to convert the DREAM 0.66refV and 1.5refV DREAM scans? They are not included in the dataset you've shared on gdrive.