sct-pipeline / contrast-agnostic-softseg-spinalcord

Contrast-agnostic spinal cord segmentation project with softseg
MIT License
4 stars 3 forks source link

Errors while using the `monai` training script for the EPI data #72

Closed rohanbanerjee closed 9 months ago

rohanbanerjee commented 9 months ago

Hello, I am trying to use the script -- main.py in the directory monai which is currently under the branch sb/remove_crop_preprocessing.

I am using the following dataset.json for the script (a small sample)

{
    "train": [
        "sc_superset_leipzig_ss_sub-leipzigR35_027_0000.nii.gz",
        "sc_superset_nmwTac_ss_sub-nwTactile30_021_0000.nii.gz",
        "sc_superset_nmwTac_ss_sub-nwTactile07_004_0000.nii.gz",
        "sc_superset_zurCerv_ss_sub-ZurichCervC04_002_0000.nii.gz",
        "sc_superset_nm_ss_sub-nwM21_016_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR210_022_0000.nii.gz",
        "sc_superset_nmw_ss_sub-nwMW02_001_0000.nii.gz",
        "sc_superset_zurCerv_ss_sub-ZurichCervC17_013_0000.nii.gz",
        "sc_superset_nmwTac_ss_sub-nwTactile22_015_0000.nii.gz",
        "sc_superset_zurCerv_ss_sub-ZurichCervC14_010_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR201_015_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR110_008_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR108_007_0000.nii.gz",
        ....

    ],
    "valid": [
        "sc_superset_nmwTac_ss_sub-nwTactile15_009_0000.nii.gz",
        "sc_superset_zurCerv_ss_sub-ZurichCervC05_003_0000.nii.gz",
        "sc_superset_zurCerv_ss_sub-ZurichCervC03_001_0000.nii.gz",
        "sc_superset_nm_ss_sub-nwM08_007_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR101_001_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR301_025_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR304_028_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR314_034_0000.nii.gz",
        "sc_superset_nmw_ss_sub-nwMW05_004_0000.nii.gz",
        "sc_superset_leipzig_ss_sub-leipzigR08_007_0000.nii.gz",
        .....

    ],
    "test": [
        "sc_superset_geneva_ss_sub-genevaR105_001_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR109_002_0000.nii.gz",
        "sc_superset_geneva_ss_sub-genevaR113_003_0000.nii.gz",
       ....
    ]
}

I am using the command: python main.py --model nnunet -me 1 Error: TypeError: Every item in items must be a dict but got str.

To reproduce this error:

  1. cd duke/temp/rohan/fmri_sc_seg/monai
  2. Activate monai env (specific to you)
  3. rn python main.py --model nnunet -me 1

Could you provide me with the dataset.json used for the contrast-agnostic project or let me know if there is a fix for this issue if you have faced it before. I strongly feel it is due to the formatting of the the dataset.json file that I am using. (tagging @naga-karthik, @valosekj)

Thanks!

naga-karthik commented 9 months ago

hey you are right, the formatting of dataset.json is the issue here. Here's the example:

{
    "description": "sci-colorado",
    "labels": {
        "0": "background",
        "1": "soft-sc-seg"
    },
    "license": "nk",
    "modality": {
        "0": "MRI"
    },
    "name": "spine-generic",
    "numTest": 80,
    "reference": "University of Zurich",
    "tensorImageSize": "3D",
    "test": [
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5425/anat/sub-5425_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5425/anat/sub-5425_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6036/anat/sub-6036_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6036/anat/sub-6036_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6505/anat/sub-6505_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6505/anat/sub-6505_T2w_seg-manual.nii.gz"
        }
   ],
     "train": [
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6004/anat/sub-6004_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6004/anat/sub-6004_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6363/anat/sub-6363_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6363/anat/sub-6363_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6184/anat/sub-6184_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6184/anat/sub-6184_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5660/anat/sub-5660_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5660/anat/sub-5660_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6162/anat/sub-6162_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6162/anat/sub-6162_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-6186/anat/sub-6186_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-6186/anat/sub-6186_T2w_seg-manual.nii.gz"
        },

            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5844/anat/sub-5844_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5844/anat/sub-5844_T2w_seg-manual.nii.gz"
        },

        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5755/anat/sub-5755_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5755/anat/sub-5755_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5543/anat/sub-5543_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5543/anat/sub-5543_T2w_seg-manual.nii.gz"
        }
    ],
      "validation": [
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5725/anat/sub-5725_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5725/anat/sub-5725_T2w_seg-manual.nii.gz"
        },
        {
            "image": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/sub-5692/anat/sub-5692_T2w.nii.gz",
            "label": "/home/GRAMES.POLYMTL.CA/u114716/datasets/sci-colorado/derivatives/labels/sub-5692/anat/sub-5692_T2w_seg-manual.nii.gz"
        }
    ]
}

let me know if you are still having issues. The create_msd_data.py has the code to create similar json files

rohanbanerjee commented 9 months ago

Just to have a clearer picture, the dataset need not be in the MSD format. We just need a json file like the above to able to feed the data to main.py. Am I missing something here?

naga-karthik commented 9 months ago

the dataset need not be in the MSD format

Exactly! The bids datasets we have would totally work!

We just need a json file like the above to able to feed the data to main.py.

Correct. Just image-label pairs and some boilerplate code just to make the load_decathlon_datalist function happy. A similar datalist creation process can also be found in monai's tutorial here.

rohanbanerjee commented 9 months ago

This issue is now solved. Thank you for the help!