def test_patient_metadata() -> None: """ Loading a dataset where all patient metadata columns are present :return: """ file = full_ml_test_data_path("dataset_with_full_header.csv") df = pd.read_csv(file, dtype=str) subject = "511" expected_institution = "85aaee5f-f5f3-4eae-b6cd-26b0070156d8" expected_series = "22ef9c5e149650f9cb241d1aa622ad1731b91d1a1df770c05541228b47845ae4" expected_tags = "FOO;BAR" metadata = PatientMetadata.from_dataframe(df, subject) assert metadata is not None assert metadata.patient_id == subject assert metadata.institution == expected_institution assert metadata.series == expected_series assert metadata.tags_str == expected_tags # Now modify the dataset such that there is no single value for tags. Tags should no longer be # populated, but the other fields should be. df['tags'] = ["something", ""] metadata = PatientMetadata.from_dataframe(df, subject) assert metadata.series == expected_series assert metadata.institution == expected_institution assert metadata.tags_str is None
def test_min_patient_metadata() -> None: """ Loading a dataset where only required columns are present """ df = pd.read_csv(full_ml_test_data_path("dataset.csv"), dtype=str) df = df.drop(columns="institutionId") patient_id = "1" metadata = PatientMetadata.from_dataframe(df, patient_id) assert metadata.patient_id == patient_id assert metadata.series is None assert metadata.institution is None assert metadata.tags_str is None
def default_config() -> ModelConfigBase: config = DummyModel() config.set_output_to(str(full_ml_test_data_path("outputs"))) return config
from InnerEye.ML.config import PaddingMode, SegmentationModelBase from InnerEye.ML.dataset.cropping_dataset import CroppingDataset from InnerEye.ML.dataset.full_image_dataset import FullImageDataset, collate_with_metadata from InnerEye.ML.dataset.sample import CroppedSample, PatientMetadata, SAMPLE_METADATA_FIELD, \ Sample, SegmentationSampleBase from InnerEye.ML.model_config_base import ModelConfigBase from InnerEye.ML.photometric_normalization import PhotometricNormalization from InnerEye.ML.utils import image_util, ml_util from InnerEye.ML.utils.io_util import ImageDataType from InnerEye.ML.utils.transforms import Compose3D from Tests.Common.test_util import full_ml_test_data_path from Tests.ML.configs.DummyModel import DummyModel from Tests.ML.util import DummyPatientMetadata, load_train_and_test_data_channels crop_size = [55, 55, 55] data_frame = pd.read_csv(full_ml_test_data_path(DATASET_CSV_FILE_NAME)) @pytest.fixture def num_dataload_workers() -> int: """PyTorch support for multiple dataloader workers is flaky on Windows (so return 0)""" return 4 if common_util.is_linux() else 0 @pytest.fixture def default_config() -> ModelConfigBase: config = DummyModel() config.set_output_to(str(full_ml_test_data_path("outputs"))) return config