Skip to content
Snippets Groups Projects
Commit 7be2865e authored by Yvan PANNATIER's avatar Yvan PANNATIER Committed by Yvan Pannatier
Browse files

[config.data.visceral] add datamodule for visceral dataset

parent 232ccc51
No related branches found
No related tags found
1 merge request!513d cnn visceral
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
""" VISCERAL dataset for 3D organ classification (only lungs and bladders).
Loaded samples are not full scans but 16x16x16 volumes of organs.
Database reference:
"""
import os
import pathlib
import torchio as tio
from ....data.datamodule import CachingDataModule
from ....data.typing import RawDataLoader as _BaseRawDataLoader
from ....data.split import make_split
from ....data.typing import Sample
from ....utils.rc import load_rc
CONFIGURATION_KEY_DATADIR = "datadir." + (__name__.rsplit(".", 2)[-2])
"""Key to search for in the configuration file for the root directory of this
database."""
class RawDataLoader(_BaseRawDataLoader):
"""A specialized raw-data-loader for the VISCERAL dataset."""
datadir: pathlib.Path
"""This variable contains the base directory where the database raw data is
stored."""
def __init__(self) -> None:
self.datadir = pathlib.Path(
load_rc().get(
CONFIGURATION_KEY_DATADIR,
os.path.realpath(os.curdir),
),
)
def sample(self, sample: tuple[str, int]) -> Sample:
"""Load a single volume sample from the disk.
Parameters
----------
sample
A tuple containing the path suffix, within the dataset root folder,
where to find the volume to be loaded and an integer, representing
the sample label.
Returns
-------
The sample representation.
"""
clamp = tio.Clamp(out_min=-1000, out_max=2000)
rescale = tio.RescaleIntensity(percentiles=(0.5, 99.5))
preprocess = tio.Compose([clamp,rescale,])
image = tio.ScalarImage(self.datadir / sample[0])
image = preprocess(image)
tensor = image.data
return tensor, dict(label=sample[1], name=sample[0])
def label(self, sample: tuple[str, int]) -> int:
"""Load a single image sample label from the disk.
Parameters
----------
sample
A tuple containing the path suffix, within the dataset root folder,
where to find the image to be loaded, and an integer, representing
the sample label.
Returns
-------
int
The integer label associated with the sample.
"""
return sample[1]
class DataModule(CachingDataModule):
"""VISCERAL DataModule for 3D organ binary classification.
Data specifications:
* Raw data input (on disk):
* NIfTI volumes
* resolution: 16x16x16
* Output image:
* Transforms:
* Load raw NIfTI with :py:mod:`torchio`
* Clamp and Rescale intensity
* Convert to torch tensor
* Final specifications
* 32-bit floats, cubes 16x16x16 pixels
* Labels: 0 (bladder), 1 (lung)
Parameters
----------
split_filename
Name of the .json file containing the split to load.
"""
def __init__(self, split_filename: str):
super().__init__(
make_split(__package__, split_filename),
raw_data_loader=RawDataLoader(),
database_name=__package__.split(".")[-1],
split_name=pathlib.Path(split_filename).stem,
)
{
"train": [
["16/10000013_1_1302_117.nii.gz",1],
["16/10000164_1_1302_117.nii.gz",1],
["16/10000115_1_1302_117.nii.gz",1],
["16/10000072_1_237_117.nii.gz",0],
["16/10000148_1_CTce_ThAb_1302_6.nii.gz",1],
["16/10000022_1_CT_wb_1302_4.nii.gz",1],
["16/10000163_1_237_117.nii.gz",0],
["16/10000005_1_CT_wb_1302_7.nii.gz",1],
["16/10000113_1_CTce_ThAb_1302_6.nii.gz",1],
["16/10000140_1_CTce_ThAb_237_5.nii.gz",0],
["16/10000137_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000009_1_237_117.nii.gz",0],
["16/10000090_1_CT_wb_1302_6.nii.gz",1],
["16/10000115_1_237_117.nii.gz",0],
["16/10000101_1_237_117.nii.gz",0],
["16/10000168_1_1302_117.nii.gz",1],
["16/10000054_1_1302_117.nii.gz",1],
["16/10000059_1_237_117.nii.gz",0],
["16/10000178_1_237_117.nii.gz",0],
["16/10000053_1_237_117.nii.gz",0],
["16/10000043_1_1302_117.nii.gz",1],
["16/10000018_1_CT_wb_1302_4.nii.gz",1],
["16/10000165_1_1302_117.nii.gz",1],
["16/10000070_1_1302_117.nii.gz",1],
["16/10000113_1_CTce_ThAb_237_6.nii.gz",0],
["16/10000080_1_CT_wb_237_7.nii.gz",0],
["16/10000145_1_CTce_ThAb_237_9.nii.gz",0],
["16/10000140_1_CTce_ThAb_1302_5.nii.gz",1],
["16/10000075_1_1302_117.nii.gz",1],
["16/10000046_1_237_117.nii.gz",0],
["16/10000108_1_CTce_ThAb_237_4.nii.gz",0],
["16/10000109_1_CTce_ThAb_237_6.nii.gz",0],
["16/10000055_1_1302_117.nii.gz",1],
["16/10000004_1_1302_117.nii.gz",1],
["16/10000150_1_237_117.nii.gz",0],
["16/10000040_1_1302_117.nii.gz",1],
["16/10000158_1_237_117.nii.gz",0],
["16/10000183_1_1302_117.nii.gz",1],
["16/10000025_1_CT_wb_237_8.nii.gz",0],
["16/10000064_1_1302_117.nii.gz",1],
["16/10000193_1_1302_117.nii.gz",1],
["16/10000122_1_1302_117.nii.gz",1],
["16/10000105_1_CTce_ThAb_237_4.nii.gz",0],
["16/10000034_1_237_117.nii.gz",0],
["16/10000112_1_CTce_ThAb_1302_8.nii.gz",1],
["16/10000119_1_237_117.nii.gz",0],
["16/10000138_1_CTce_ThAb_1302_8.nii.gz",1],
["16/10000172_1_237_117.nii.gz",0],
["16/10000072_1_1302_117.nii.gz",1],
["16/10000012_1_1302_117.nii.gz",1],
["16/10000078_1_1302_117.nii.gz",1],
["16/10000096_1_CT_wb_1302_8.nii.gz",1],
["16/10000125_1_1302_117.nii.gz",1],
["16/10000191_1_1302_117.nii.gz",1],
["16/10000055_1_237_117.nii.gz",0],
["16/10000049_1_1302_117.nii.gz",1],
["16/10000141_1_CTce_ThAb_237_5.nii.gz",0],
["16/10000006_1_CT_wb_1302_8.nii.gz",1],
["16/10000087_1_CT_wb_1302_4.nii.gz",1],
["16/10000070_1_237_117.nii.gz",0],
["16/10000080_1_CT_wb_1302_7.nii.gz",1],
["16/10000015_1_CT_wb_1302_6.nii.gz",1],
["16/10000011_1_CT_wb_237_7.nii.gz",0],
["16/10000159_1_1302_117.nii.gz",1],
["16/10000077_1_237_117.nii.gz",0],
["16/10000087_1_CT_wb_237_4.nii.gz",0],
["16/10000088_1_CT_wb_1302_4.nii.gz",1],
["16/10000116_1_1302_117.nii.gz",1],
["16/10000077_1_1302_117.nii.gz",1],
["16/10000056_1_237_117.nii.gz",0],
["16/10000054_1_237_117.nii.gz",0],
["16/10000151_1_237_117.nii.gz",0],
["16/10000032_1_1302_117.nii.gz",1],
["16/10000051_1_237_117.nii.gz",0],
["16/10000153_1_1302_117.nii.gz",1],
["16/10000019_1_CT_wb_237_6.nii.gz",0],
["16/10000044_1_237_117.nii.gz",0],
["16/10000175_1_237_117.nii.gz",0],
["16/10000143_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000160_1_1302_117.nii.gz",1],
["16/10000169_1_1302_117.nii.gz",1],
["16/10000048_1_1302_117.nii.gz",1],
["16/10000203_1_1302_117.nii.gz",1],
["16/10000099_1_CT_wb_1302_5.nii.gz",1],
["16/10000157_1_1302_117.nii.gz",1],
["16/10000046_1_1302_117.nii.gz",1],
["16/10000147_1_CTce_ThAb_1302_8.nii.gz",1],
["16/10000095_1_CT_wb_237_7.nii.gz",0],
["16/10000190_1_237_117.nii.gz",0],
["16/10000179_1_237_117.nii.gz",0],
["16/10000007_1_1302_117.nii.gz",1],
["16/10000189_1_1302_117.nii.gz",1],
["16/10000156_1_1302_117.nii.gz",1],
["16/10000076_1_237_117.nii.gz",0],
["16/10000196_1_237_117.nii.gz",0],
["16/10000150_1_1302_117.nii.gz",1],
["16/10000106_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000200_1_237_117.nii.gz",0],
["16/10000023_1_CT_wb_1302_6.nii.gz",1],
["16/10000168_1_237_117.nii.gz",0],
["16/10000104_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000138_1_CTce_ThAb_237_9.nii.gz",0],
["16/10000068_1_1302_117.nii.gz",1],
["16/10000041_1_237_117.nii.gz",0],
["16/10000154_1_1302_117.nii.gz",1],
["16/10000136_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000189_1_237_117.nii.gz",0],
["16/10000188_1_237_117.nii.gz",0],
["16/10000091_1_1302_117.nii.gz",1],
["16/10000117_1_1302_117.nii.gz",1],
["16/10000179_1_1302_117.nii.gz",1],
["16/10000129_1_CTce_ThAb_1302_5.nii.gz",1],
["16/10000088_1_CT_wb_237_4.nii.gz",0],
["16/10000081_1_CT_wb_1302_6.nii.gz",1],
["16/10000127_1_CTce_ThAb_1302_4.nii.gz",1],
["16/10000161_1_1302_117.nii.gz",1],
["16/10000192_1_237_117.nii.gz",0],
["16/10000162_1_1302_117.nii.gz",1],
["16/10000123_1_237_117.nii.gz",0],
["16/10000194_1_1302_117.nii.gz",1],
["16/10000104_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000142_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000124_1_1302_117.nii.gz",1],
["16/10000038_1_237_117.nii.gz",0],
["16/10000090_1_CT_wb_237_6.nii.gz",0],
["16/10000126_1_237_117.nii.gz",0],
["16/10000047_1_1302_117.nii.gz",1],
["16/10000026_1_1302_117.nii.gz",1],
["16/10000132_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000037_1_237_117.nii.gz",0],
["16/10000126_1_1302_117.nii.gz",1],
["16/10000148_1_CTce_ThAb_237_6.nii.gz",0],
["16/10000142_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000170_1_1302_117.nii.gz",1],
["16/10000057_1_237_117.nii.gz",0],
["16/10000040_1_237_117.nii.gz",0],
["16/10000079_1_CT_wb_1302_7.nii.gz",1],
["16/10000133_1_CTce_ThAb_1302_9.nii.gz",1],
["16/10000129_1_CTce_ThAb_237_5.nii.gz",0],
["16/10000201_1_237_117.nii.gz",0],
["16/10000084_1_237_117.nii.gz",0],
["16/10000173_1_1302_117.nii.gz",1],
["16/10000064_1_237_117.nii.gz",0],
["16/10000130_1_CTce_ThAb_1302_5.nii.gz",1],
["16/10000094_1_CT_wb_237_7.nii.gz",0],
["16/10000065_1_1302_117.nii.gz",1],
["16/10000114_1_1302_117.nii.gz",1],
["16/10000042_1_237_117.nii.gz",0],
["16/10000048_1_237_117.nii.gz",0],
["16/10000151_1_1302_117.nii.gz",1],
["16/10000060_1_1302_117.nii.gz",1],
["16/10000018_1_CT_wb_237_4.nii.gz",0],
["16/10000024_1_1302_117.nii.gz",1],
["16/10000187_1_1302_117.nii.gz",1],
["16/10000111_1_CTce_ThAb_237_6.nii.gz",0],
["16/10000050_1_1302_117.nii.gz",1],
["16/10000128_1_CTce_ThAb_1302_5.nii.gz",1],
["16/10000134_1_CTce_ThAb_1302_6.nii.gz",1],
["16/10000119_1_1302_117.nii.gz",1],
["16/10000092_1_CT_wb_1302_8.nii.gz",1],
["16/10000205_1_1302_117.nii.gz",1],
["16/10000169_1_237_117.nii.gz",0],
["16/10000155_1_1302_117.nii.gz",1],
["16/10000044_1_1302_117.nii.gz",1],
["16/10000134_1_CTce_ThAb_237_6.nii.gz",0],
["16/10000016_1_CT_wb_1302_9.nii.gz",1],
["16/10000031_1_237_117.nii.gz",0],
["16/10000020_1_CT_wb_237_8.nii.gz",0],
["16/10000122_1_237_117.nii.gz",0],
["16/10000123_1_1302_117.nii.gz",1],
["16/10000062_1_237_117.nii.gz",0],
["16/10000042_1_1302_117.nii.gz",1],
["16/10000135_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000106_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000051_1_1302_117.nii.gz",1],
["16/10000198_1_237_117.nii.gz",0],
["16/10000136_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000045_1_237_117.nii.gz",0],
["16/10000147_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000086_1_CT_wb_1302_6.nii.gz",1],
["16/10000131_1_CTce_ThAb_1302_4.nii.gz",1],
["16/10000174_1_237_117.nii.gz",0],
["16/10000170_1_237_117.nii.gz",0],
["16/10000049_1_237_117.nii.gz",0],
["16/10000116_1_237_117.nii.gz",0],
["16/10000137_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000111_1_CTce_ThAb_1302_6.nii.gz",1],
["16/10000180_1_1302_117.nii.gz",1],
["16/10000075_1_237_117.nii.gz",0],
["16/10000161_1_237_117.nii.gz",0],
["16/10000011_1_CT_wb_1302_7.nii.gz",1],
["16/10000094_1_CT_wb_1302_7.nii.gz",1],
["16/10000015_1_CT_wb_237_6.nii.gz",0],
["16/10000145_1_CTce_ThAb_1302_7.nii.gz",1],
["16/10000085_1_CT_wb_1302_6.nii.gz",1],
["16/10000033_1_237_117.nii.gz",0],
["16/10000097_1_1302_117.nii.gz",1],
["16/10000141_1_CTce_ThAb_1302_5.nii.gz",1],
["16/10000130_1_CTce_ThAb_237_5.nii.gz",0],
["16/10000171_1_237_117.nii.gz",0],
["16/10000163_1_1302_117.nii.gz",1],
["16/10000021_1_CT_wb_1302_9.nii.gz",1],
["16/10000184_1_237_117.nii.gz",0],
["16/10000114_1_237_117.nii.gz",0],
["16/10000160_1_237_117.nii.gz",0],
["16/10000071_1_237_117.nii.gz",0],
["16/10000084_1_1302_117.nii.gz",1],
["16/10000135_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000117_1_237_117.nii.gz",0],
["16/10000149_1_CTce_ThAb_1302_8.nii.gz",1],
["16/10000162_1_237_117.nii.gz",0],
["16/10000025_1_CT_wb_1302_8.nii.gz",1],
["16/10000100_1_CTce_ThAb_237_6.nii.gz",0],
["16/10000200_1_1302_117.nii.gz",1],
["16/10000096_1_CT_wb_237_9.nii.gz",0],
["16/10000024_1_237_117.nii.gz",0],
["16/10000118_1_1302_117.nii.gz",1],
["16/10000112_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000159_1_237_117.nii.gz",0],
["16/10000196_1_1302_117.nii.gz",1],
["16/10000204_1_237_117.nii.gz",0],
["16/10000019_1_CT_wb_1302_6.nii.gz",1],
["16/10000047_1_237_117.nii.gz",0],
["16/10000035_1_237_117.nii.gz",0],
["16/10000012_1_237_117.nii.gz",0],
["16/10000128_1_CTce_ThAb_237_5.nii.gz",0],
["16/10000174_1_1302_117.nii.gz",1],
["16/10000013_1_237_117.nii.gz",0],
["16/10000056_1_1302_117.nii.gz",1],
["16/10000020_1_CT_wb_1302_8.nii.gz",1],
["16/10000076_1_1302_117.nii.gz",1],
["16/10000177_1_237_117.nii.gz",0],
["16/10000198_1_1302_117.nii.gz",1],
["16/10000078_1_237_117.nii.gz",0],
["16/10000125_1_237_117.nii.gz",0],
["16/10000082_1_CT_wb_1302_6.nii.gz",1],
["16/10000091_1_237_117.nii.gz",0],
["16/10000085_1_CT_wb_237_6.nii.gz",0],
["16/10000089_1_CT_wb_1302_8.nii.gz",1],
["16/10000110_1_CTce_ThAb_1302_9.nii.gz",1],
["16/10000053_1_1302_117.nii.gz",1]
],
"validation": [
["16/10000203_1_237_117.nii.gz",0],
["16/10000022_1_CT_wb_237_4.nii.gz",0],
["16/10000017_1_CT_wb_237_9.nii.gz",0],
["16/10000166_1_1302_117.nii.gz",1],
["16/10000016_1_CT_wb_237_9.nii.gz",0],
["16/10000057_1_1302_117.nii.gz",1],
["16/10000165_1_237_117.nii.gz",0],
["16/10000021_1_CT_wb_237_9.nii.gz",0],
["16/10000098_1_237_117.nii.gz",0],
["16/10000068_1_237_117.nii.gz",0],
["16/10000095_1_CT_wb_1302_7.nii.gz",1],
["16/10000067_1_CT_wb_237_9.nii.gz",0],
["16/10000069_1_1302_117.nii.gz",1],
["16/10000201_1_1302_117.nii.gz",1],
["16/10000132_1_CTce_ThAb_1302_8.nii.gz",1],
["16/10000181_1_1302_117.nii.gz",1],
["16/10000101_1_1302_117.nii.gz",1],
["16/10000067_1_CT_wb_1302_9.nii.gz",1],
["16/10000027_1_237_117.nii.gz",0],
["16/10000187_1_237_117.nii.gz",0],
["16/10000065_1_237_117.nii.gz",0],
["16/10000186_1_237_117.nii.gz",0],
["16/10000186_1_1302_117.nii.gz",1],
["16/10000185_1_1302_117.nii.gz",1],
["16/10000097_1_237_117.nii.gz",0],
["16/10000023_1_CT_wb_237_6.nii.gz",0],
["16/10000098_1_1302_117.nii.gz",1],
["16/10000099_1_CT_wb_237_5.nii.gz",0],
["16/10000073_1_1302_117.nii.gz",1],
["16/10000184_1_1302_117.nii.gz",1],
["16/10000093_1_1302_117.nii.gz",1],
["16/10000086_1_CT_wb_237_6.nii.gz",0],
["16/10000007_1_237_117.nii.gz",0],
["16/10000038_1_1302_117.nii.gz",1],
["16/10000050_1_237_117.nii.gz",0],
["16/10000093_1_237_117.nii.gz",0],
["16/10000183_1_237_117.nii.gz",0],
["16/10000060_1_237_117.nii.gz",0],
["16/10000089_1_CT_wb_237_8.nii.gz",0],
["16/10000124_1_237_117.nii.gz",0],
["16/10000152_1_237_117.nii.gz",0],
["16/10000158_1_1302_117.nii.gz",1],
["16/10000193_1_237_117.nii.gz",0],
["16/10000167_1_237_117.nii.gz",0],
["16/10000008_1_237_117.nii.gz",0],
["16/10000071_1_1302_117.nii.gz",1],
["16/10000171_1_1302_117.nii.gz",1],
["16/10000120_1_237_117.nii.gz",0],
["16/10000100_1_CTce_ThAb_1302_6.nii.gz",1],
["16/10000154_1_237_117.nii.gz",0],
["16/10000082_1_CT_wb_237_6.nii.gz",0],
["16/10000120_1_1302_117.nii.gz",1],
["16/10000175_1_1302_117.nii.gz",1],
["16/10000026_1_237_117.nii.gz",0],
["16/10000178_1_1302_117.nii.gz",1],
["16/10000192_1_1302_117.nii.gz",1],
["16/10000155_1_237_117.nii.gz",0],
["16/10000152_1_1302_117.nii.gz",1],
["16/10000005_1_CT_wb_237_7.nii.gz",0],
["16/10000191_1_237_117.nii.gz",0],
["16/10000073_1_237_117.nii.gz",0],
["16/10000181_1_237_117.nii.gz",0],
["16/10000014_1_CT_wb_1302_5.nii.gz",1],
["16/10000017_1_CT_wb_1302_9.nii.gz",1],
["16/10000081_1_CT_wb_237_6.nii.gz",0],
["16/10000079_1_CT_wb_237_7.nii.gz",0],
["16/10000153_1_237_117.nii.gz",0],
["16/10000164_1_237_117.nii.gz",0],
["16/10000167_1_1302_117.nii.gz",1]
],
"test": [
["16/10000109_1_CTce_ThAb_1302_6.nii.gz",1],
["16/10000039_1_237_117.nii.gz",0],
["16/10000118_1_237_117.nii.gz",0],
["16/10000190_1_1302_117.nii.gz",1],
["16/10000110_1_CTce_ThAb_237_9.nii.gz",0],
["16/10000180_1_237_117.nii.gz",0],
["16/10000131_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000121_1_1302_117.nii.gz",1],
["16/10000127_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000173_1_237_117.nii.gz",0],
["16/10000166_1_237_117.nii.gz",0],
["16/10000105_1_CTce_ThAb_1302_4.nii.gz",1],
["16/10000177_1_1302_117.nii.gz",1],
["16/10000031_1_1302_117.nii.gz",1],
["16/10000188_1_1302_117.nii.gz",1],
["16/10000069_1_237_117.nii.gz",0],
["16/10000143_1_CTce_ThAb_237_7.nii.gz",0],
["16/10000014_1_CT_wb_237_5.nii.gz",0],
["16/10000133_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000199_1_1302_117.nii.gz",1],
["16/10000205_1_237_117.nii.gz",0],
["16/10000121_1_237_117.nii.gz",0],
["16/10000149_1_CTce_ThAb_237_8.nii.gz",0],
["16/10000199_1_237_117.nii.gz",0],
["16/10000032_1_237_117.nii.gz",0],
["16/10000156_1_237_117.nii.gz",0],
["16/10000092_1_CT_wb_237_4.nii.gz",0],
["16/10000037_1_1302_117.nii.gz",1],
["16/10000172_1_1302_117.nii.gz",1],
["16/10000043_1_237_117.nii.gz",0],
["16/10000204_1_1302_117.nii.gz",1],
["16/10000185_1_237_117.nii.gz",0],
["16/10000108_1_CTce_ThAb_1302_4.nii.gz",1],
["16/10000194_1_237_117.nii.gz",0],
["16/10000059_1_1302_117.nii.gz",1]
]
}
\ No newline at end of file
# SPDX-FileCopyrightText: Copyright © 2023 Idiap Research Institute <contact@idiap.ch>
#
# SPDX-License-Identifier: GPL-3.0-or-later
""" VISCERAL dataset for 3D organ classification.
Database reference:
See :py:class:`mednet.config.data.visceral.datamodule.DataModule` for
technical details.
"""
from mednet.config.data.visceral.datamodule import DataModule
datamodule = DataModule("default.json")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment