def test_get_image_filepath_from_subject_id_single( test_output_dirs: OutputFolderForTests) -> None: config = ScalarModelBase(image_file_column="filePath", label_value_column="label", subject_column="subject") config.local_dataset = test_output_dirs.root_dir / "dataset" config.local_dataset.mkdir() dataset_csv = config.local_dataset / "dataset.csv" image_file_name = "image.npy" dataset_csv.write_text(f"subject,filePath,label\n" f"0,0_{image_file_name},0\n" f"1,1_{image_file_name},1\n") df = config.read_dataset_if_needed() dataset = ScalarDataset(args=config, data_frame=df) Path(config.local_dataset / f"0_{image_file_name}").touch() Path(config.local_dataset / f"1_{image_file_name}").touch() filepath = get_image_filepath_from_subject_id(subject_id="1", dataset=dataset, config=config) expected_path = Path(config.local_dataset / f"1_{image_file_name}") assert filepath assert len(filepath) == 1 assert expected_path.samefile(filepath[0]) # Check error is raised if the subject does not exist with pytest.raises(ValueError) as ex: get_image_filepath_from_subject_id(subject_id="100", dataset=dataset, config=config) assert "Could not find subject" in str(ex)
def test_get_image_filepath_from_subject_id_with_image_channels( test_output_dirs: OutputFolderForTests) -> None: config = ScalarModelBase(label_channels=["label"], image_file_column="filePath", label_value_column="label", image_channels=["image"], subject_column="subject") config.local_dataset = test_output_dirs.root_dir / "dataset" config.local_dataset.mkdir() dataset_csv = config.local_dataset / "dataset.csv" image_file_name = "image.npy" dataset_csv.write_text(f"subject,channel,filePath,label\n" f"0,label,,0\n" f"0,image,0_{image_file_name},\n" f"1,label,,1\n" f"1,image,1_{image_file_name},\n") df = config.read_dataset_if_needed() dataset = ScalarDataset(args=config, data_frame=df) Path(config.local_dataset / f"0_{image_file_name}").touch() Path(config.local_dataset / f"1_{image_file_name}").touch() filepath = get_image_filepath_from_subject_id(subject_id="1", dataset=dataset, config=config) expected_path = Path(config.local_dataset / f"1_{image_file_name}") assert filepath assert len(filepath) == 1 assert filepath[0].samefile(expected_path)
def test_get_image_filepath_from_subject_id_invalid_id() -> None: reports_folder = Path(__file__).parent dataset_csv_file = reports_folder / "dataset.csv" dataset_df = pd.read_csv(dataset_csv_file) filepath = get_image_filepath_from_subject_id( subject_id="100", dataset_df=dataset_df, dataset_subject_column="subject", dataset_file_column="filePath", dataset_dir=reports_folder) assert not filepath
def test_get_image_filepath_from_subject_id() -> None: reports_folder = Path(__file__).parent dataset_csv_file = reports_folder / "dataset.csv" dataset_df = pd.read_csv(dataset_csv_file) filepath = get_image_filepath_from_subject_id( subject_id="1", dataset_df=dataset_df, dataset_subject_column="subject", dataset_file_column="filePath", dataset_dir=reports_folder) expected_path = Path(reports_folder / "../test_data/classification_data_2d/im2.npy") assert filepath assert expected_path.samefile(filepath)