|
@@ -22,6 +22,7 @@ class ADNIDataset(data.Dataset): # type: ignore
|
|
|
mri_data: Float[torch.Tensor, "n_samples channels width height depth"],
|
|
mri_data: Float[torch.Tensor, "n_samples channels width height depth"],
|
|
|
xls_data: Float[torch.Tensor, "n_samples features"],
|
|
xls_data: Float[torch.Tensor, "n_samples features"],
|
|
|
expected_classes: Float[torch.Tensor, "classes"],
|
|
expected_classes: Float[torch.Tensor, "classes"],
|
|
|
|
|
+ filename_ids: List[int],
|
|
|
device: str = "cuda",
|
|
device: str = "cuda",
|
|
|
):
|
|
):
|
|
|
"""
|
|
"""
|
|
@@ -32,6 +33,7 @@ class ADNIDataset(data.Dataset): # type: ignore
|
|
|
self.mri_data = mri_data.float().to(device)
|
|
self.mri_data = mri_data.float().to(device)
|
|
|
self.xls_data = xls_data.float().to(device)
|
|
self.xls_data = xls_data.float().to(device)
|
|
|
self.expected_classes = expected_classes.float().to(device)
|
|
self.expected_classes = expected_classes.float().to(device)
|
|
|
|
|
+ self.filename_ids = filename_ids
|
|
|
|
|
|
|
|
def __len__(self) -> int:
|
|
def __len__(self) -> int:
|
|
|
"""
|
|
"""
|
|
@@ -43,6 +45,7 @@ class ADNIDataset(data.Dataset): # type: ignore
|
|
|
Float[torch.Tensor, "channels width height depth"],
|
|
Float[torch.Tensor, "channels width height depth"],
|
|
|
Float[torch.Tensor, "features"],
|
|
Float[torch.Tensor, "features"],
|
|
|
Float[torch.Tensor, "classes"],
|
|
Float[torch.Tensor, "classes"],
|
|
|
|
|
+ int,
|
|
|
]:
|
|
]:
|
|
|
"""
|
|
"""
|
|
|
Returns a sample from the dataset at the given index.
|
|
Returns a sample from the dataset at the given index.
|
|
@@ -59,8 +62,9 @@ class ADNIDataset(data.Dataset): # type: ignore
|
|
|
xls_sample = self.xls_data[idx]
|
|
xls_sample = self.xls_data[idx]
|
|
|
# Assuming expected_classes is a tensor of classes, we return it as well
|
|
# Assuming expected_classes is a tensor of classes, we return it as well
|
|
|
expected_classes = self.expected_classes[idx]
|
|
expected_classes = self.expected_classes[idx]
|
|
|
|
|
+ filename_id = self.filename_ids[idx]
|
|
|
|
|
|
|
|
- return mri_sample, xls_sample, expected_classes
|
|
|
|
|
|
|
+ return mri_sample, xls_sample, expected_classes, filename_id
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_adni_data_from_file(
|
|
def load_adni_data_from_file(
|
|
@@ -77,7 +81,7 @@ def load_adni_data_from_file(
|
|
|
xls_file (pl.Path): Path to the Excel file.
|
|
xls_file (pl.Path): Path to the Excel file.
|
|
|
|
|
|
|
|
Returns:
|
|
Returns:
|
|
|
- Result[ADNIDataset, str]: A Result object containing the ADNIDataset or an error message.
|
|
|
|
|
|
|
+ ADNIDataset: The loaded dataset.
|
|
|
"""
|
|
"""
|
|
|
# Load the Excel data
|
|
# Load the Excel data
|
|
|
xls_values = xls_preprocessor(pd.read_csv(xls_file)) # type: ignore
|
|
xls_values = xls_preprocessor(pd.read_csv(xls_file)) # type: ignore
|
|
@@ -141,7 +145,7 @@ def load_adni_data_from_file(
|
|
|
expected_classes_unstacked
|
|
expected_classes_unstacked
|
|
|
) # Stack the list of expected classes into a single tensor
|
|
) # Stack the list of expected classes into a single tensor
|
|
|
|
|
|
|
|
- return ADNIDataset(mri_data, xls_data, expected_classes, device=device)
|
|
|
|
|
|
|
+ return ADNIDataset(mri_data, xls_data, expected_classes, img_ids, device=device)
|
|
|
|
|
|
|
|
|
|
|
|
|
def divide_dataset(
|
|
def divide_dataset(
|