from pathlib import Path
import torchio as tio
from torchio.datasets import Colin27
from .datapoint import DataPoint
from .sample import Sample, Sample2D
[docs]
class Colin27DataPoint(DataPoint):
"""
Example of a :py:class:`~clinicadl.data.structures.DataPoint`.
It contains a T1 image and a mask called "head".
The default fields can be overwritten and additional fields can be added.
Examples
--------
>>> from clinicadl.data.structures.examples import Colin27DataPoint
>>> colin = Colin27DataPoint()
>>> colin
Colin27DataPoint(Keys: ('head', 'image', 'participant_id', 'session_id'); images: 2)
>>> colin.participant_id
'sub-colin'
>>> colin = Colin27DataPoint(participant_id="sub-000", new_field="x")
>>> colin.participant_id
'sub-000'
>>> colin["new_field"]
'x'
"""
def __init__(self, **kwargs):
tio_colin = Colin27()
# pylint: disable=no-member
args = {
"image": tio_colin.t1,
"head": tio_colin.head,
"participant_id": "sub-colin",
"session_id": "ses-M000",
}
args.update(kwargs)
super().__init__(**args)
[docs]
class Colin27Sample(Sample):
"""
Example of a :py:class:`~clinicadl.data.structures.Sample`.
It contains a T1 image and an mask called "head".
The default fields can be overwritten and additional fields can be added.
Examples
--------
>>> from clinicadl.data.structures.examples import Colin27Sample
>>> colin = Colin27Sample()
>>> colin
Colin27Sample(Keys: ('head', 'file_type', 'image_path', 'sample_type', 'sample_position', 'image', 'participant_id', 'session_id'); images: 2)
>>> colin.participant_id
'sub-colin'
>>> colin = Colin27Sample(participant_id="sub-000", new_field="x")
>>> colin.participant_id
'sub-000'
>>> colin["new_field"]
'x'
"""
def __init__(self, **kwargs):
from clinicadl.io.bids import BidsFileType
tio_colin = Colin27()
# pylint: disable=no-member
args = {
"image": tio_colin.t1,
"head": tio_colin.head,
"participant_id": "sub-colin",
"session_id": "ses-M000",
"file_type": BidsFileType(data_type="t1", suffix="T1w"),
"image_path": Path("bids")
/ "sub-000"
/ "ses-M000"
/ "anat"
/ "sub-000_ses-M000_T1w.nii.gz",
}
args.update(kwargs)
# pylint: disable=no-member
super().__init__(**args)
[docs]
class Colin27Sample2D(Sample2D):
"""
Example of a :py:class:`~clinicadl.data.structures.Sample2D`.
It contains a T1 image and an additional mask called "head".
The default fields can be overwritten and additional fields can be added.
Examples
--------
>>> from clinicadl.data.structures.examples import Colin27Sample2D
>>> colin = Colin27Sample2D()
>>> colin
Colin27Sample2D(Keys: ('head', 'slice_direction', 'squeeze', 'file_type', 'image_path', 'sample_type', 'sample_position', 'image', 'participant_id', 'session_id'); images: 2)
>>> colin.participant_id
'sub-colin'
>>> colin = Colin27Sample2D(participant_id="sub-000", new_field="x")
>>> colin.participant_id
'sub-000'
>>> colin["new_field"]
'x'
"""
def __init__(self, **kwargs):
from clinicadl.io.bids import BidsFileType
tio_colin = Colin27()
tio_colin = tio.CropOrPad(target_shape=(181, 1, 181))(tio_colin)
# pylint: disable=no-member
args = {
"image": tio_colin.t1,
"head": tio_colin.head,
"participant_id": "sub-colin",
"session_id": "ses-M000",
"file_type": BidsFileType(data_type="t1", suffix="T1w"),
"image_path": Path("bids")
/ "sub-000"
/ "ses-M000"
/ "anat"
/ "sub-000_ses-M000_T1w.nii.gz",
"sample_position": 108,
"slice_direction": 1,
"squeeze": True,
}
args.update(kwargs)
# pylint: disable=no-member
super().__init__(**args)