Example #1
0
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
Example #2
0
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
Example #3
0
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