diff --git a/tests/tests/test_brainmapper/test_transform_widget.py b/tests/tests/test_brainmapper/test_transform_widget.py index dd57506..098ae58 100644 --- a/tests/tests/test_brainmapper/test_transform_widget.py +++ b/tests/tests/test_brainmapper/test_transform_widget.py @@ -1,532 +1,532 @@ -import json -from pathlib import Path -from typing import Any, Dict - -import numpy as np -import pandas as pd -import pooch -import pytest - -from brainglobe_utils.brainmapper.transform_widget import ( - Metadata, - Paths, - TransformPoints, -) - -RAW_DATA_ORIENTATION = ATLAS_ORIENTATION = "asr" -points = np.array( - [ - [10, 68, 105], - [10, 90, 134], - [10, 105, 157], - [36, 69, 86], - [36, 72, 155], - [36, 112, 128], - [74, 54, 60], - [74, 121, 50], - [74, 87, 153], - [74, 84, 169], - [74, 108, 156], - [74, 75, 148], - [74, 98, 169], - [74, 76, 159], - [74, 99, 156], - [74, 91, 146], - [74, 87, 160], - [112, 44, 60], - [112, 76, 136], - [156, 77, 54], - [173, 126, 159], - [201, 66, 130], - [219, 132, 199], - [219, 1, 1], - ] -) - -points_in_downsampled_space = np.array( - [ - [10.0, 68.0, 105.0], - [10.0, 90.0, 134.0], - [10.0, 105.0, 157.0], - [36.0, 69.0, 86.0], - [36.0, 72.0, 155.0], - [36.0, 112.0, 128.0], - [74.0, 54.0, 60.0], - [74.0, 121.0, 50.0], - [74.0, 87.0, 153.0], - [74.0, 84.0, 169.0], - [74.0, 108.0, 156.0], - [74.0, 75.0, 148.0], - [74.0, 98.0, 169.0], - [74.0, 76.0, 159.0], - [74.0, 99.0, 156.0], - [74.0, 91.0, 146.0], - [74.0, 87.0, 160.0], - [112.0, 44.0, 60.0], - [112.0, 76.0, 136.0], - [156.0, 77.0, 54.0], - [173.0, 126.0, 159.0], - [201.0, 66.0, 130.0], - [219.0, 132.0, 199.0], - [219.0, 1.0, 1.0], - ] -) - -points_in_atlas_space = np.array( - [ - [36, 54, 97], - [34, 76, 124], - [34, 90, 146], - [61, 58, 82], - [62, 60, 145], - [58, 101, 120], - [100, 47, 60], - [93, 113, 53], - [95, 80, 146], - [95, 76, 161], - [93, 100, 148], - [97, 67, 141], - [94, 90, 161], - [97, 68, 151], - [94, 92, 148], - [95, 84, 139], - [95, 80, 152], - [139, 42, 60], - [131, 72, 132], - [173, 81, 56], - [177, 135, 155], - [214, 79, 129], - [218, 150, 194], - [249, 17, 10], - ] -) - - -@pytest.fixture -def sample_dataframe(): - return pd.DataFrame({"column1": [1, 2, 3], "column2": ["a", "b", "c"]}) - - -@pytest.fixture -def random_json_path(tmp_path): - json_path = tmp_path / "random_json.json" - content = { - "name": "Pooh Bear", - "location": "100 acre wood", - "food": "Honey", - } - with open(json_path, "w") as f: - json.dump(content, f) - - return json_path - - -@pytest.fixture -def mock_display_info(mocker): - return mocker.patch( - "brainglobe_utils.brainmapper.transform_widget.display_info" - ) - - -@pytest.fixture(scope="function") -def transformation_widget_with_transformed_points( - transformation_widget_with_data, -): - transformation_widget_with_data.run_transform_points_to_downsampled_space() - transformation_widget_with_data.run_transform_downsampled_points_to_atlas_space() - return transformation_widget_with_data - - -@pytest.fixture(scope="function") -def transformation_widget_with_data( - transformation_widget_with_napari_layers, brainreg_directory -): - transformation_widget_with_napari_layers.brainreg_directory = ( - brainreg_directory - ) - transformation_widget_with_napari_layers.initialise_brainreg_data() - return transformation_widget_with_napari_layers - - -@pytest.fixture(scope="function") -def transformation_widget(make_napari_viewer): - viewer = make_napari_viewer() - widget = TransformPoints(viewer) - viewer.window.add_dock_widget(widget) - return widget - - -@pytest.fixture(scope="function") -def transformation_widget_with_napari_layers( - transformation_widget, brainreg_directory -): - points_layer = transformation_widget.viewer.add_points(points) - transformation_widget.points_layer = points_layer - - raw_data = brainreg_directory / "downsampled.tiff" - raw_data_layer = transformation_widget.viewer.open(raw_data) - transformation_widget.raw_data = raw_data_layer[0] - return transformation_widget - - -@pytest.fixture -def brainreg_directory(test_data_registry) -> Path: - _ = test_data_registry.fetch( - "brainglobe-utils/points_transform_brainreg_directory.zip", - progressbar=True, - processor=pooch.Unzip(extract_dir=""), - ) - return ( - Path.home() - / ".brainglobe" - / "test_data" - / "brainglobe-utils" - / "points_transform_brainreg_directory" - ) - - -@pytest.fixture -def dummy_brainreg_directory() -> Path: - return Path("/path/to/brainreg_directory") - - -@pytest.fixture -def dummy_brainreg_file_paths(dummy_brainreg_directory) -> Paths: - return Paths(dummy_brainreg_directory) - - -def test_initialise_brainreg_data( - transformation_widget_with_data, brainreg_directory -): - - assert ( - transformation_widget_with_data.paths.brainreg_directory - == brainreg_directory - ) - assert ( - transformation_widget_with_data.metadata.orientation - == ATLAS_ORIENTATION - ) - assert ( - transformation_widget_with_data.atlas.atlas_name == "allen_mouse_50um" - ) - - -def test_get_downsampled_space(transformation_widget_with_data): - downsampled_space = transformation_widget_with_data.get_downsampled_space() - assert downsampled_space.origin_string == ATLAS_ORIENTATION - - -def test_get_raw_data_space(transformation_widget_with_data): - raw_data_space = transformation_widget_with_data.get_raw_data_space() - assert raw_data_space.origin_string == RAW_DATA_ORIENTATION - - -def test_call_transform_points_to_atlas_space( - mocker, transformation_widget_with_data -): - mock_load_brainreg = mocker.patch.object( - transformation_widget_with_data, "load_brainreg_directory" - ) - mock_transform_downsampled = mocker.patch.object( - transformation_widget_with_data, - "run_transform_points_to_downsampled_space", - ) - mock_transform_atlas = mocker.patch.object( - transformation_widget_with_data, - "run_transform_downsampled_points_to_atlas_space", - ) - mock_analyse_points = mocker.patch.object( - transformation_widget_with_data, "analyse_points" - ) - - transformation_widget_with_data.transform_points_to_atlas_space() - mock_load_brainreg.assert_called_once() - mock_transform_downsampled.assert_called_once() - mock_transform_atlas.assert_called_once() - mock_analyse_points.assert_called_once() - - -def test_transform_points_to_atlas_space( - transformation_widget_with_transformed_points, -): - np.testing.assert_array_equal( - transformation_widget_with_transformed_points.viewer.layers[ - "Points in downsampled space" - ].data, - points_in_downsampled_space, - ) - np.testing.assert_array_equal( - transformation_widget_with_transformed_points.viewer.layers[ - "Points in atlas space" - ].data, - points_in_atlas_space, - ) - - -def test_check_layers(transformation_widget_with_data): - assert transformation_widget_with_data.check_layers() - - -def test_check_layers_no_layers(transformation_widget, mock_display_info): - transformation_widget.check_layers() - - mock_display_info.assert_called_once_with( - transformation_widget, - "No layers selected", - "Please select the layers corresponding to the points " - "you would like to transform and the raw data (registered by " - "brainreg)", - ) - - -def test_check_layers_no_raw_data(transformation_widget, mock_display_info): - points_layer = transformation_widget.viewer.add_points(points) - transformation_widget.points_layer = points_layer - - transformation_widget.check_layers() - - mock_display_info.assert_called_once_with( - transformation_widget, - "No raw data layer selected", - "Please select a layer that corresponds to the raw " - "data (registered by brainreg)", - ) - - -def test_check_layers_no_points_data( - transformation_widget, brainreg_directory, mock_display_info -): - raw_data = brainreg_directory / "downsampled.tiff" - raw_data_layer = transformation_widget.viewer.open(raw_data) - transformation_widget.raw_data = raw_data_layer[0] - - transformation_widget.check_layers() - - mock_display_info.assert_called_once_with( - transformation_widget, - "No points layer selected", - "Please select a points layer you would like to transform", - ) - - -def test_load_brainreg_directory( - transformation_widget_with_napari_layers, brainreg_directory, mocker -): - # Mock dialog to avoid need for UI - mock_get_save_file_name = mocker.patch( - "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getExistingDirectory" - ) - mock_get_save_file_name.return_value = brainreg_directory - - transformation_widget_with_napari_layers.load_brainreg_directory() - assert ( - transformation_widget_with_napari_layers.atlas.atlas_name - == "allen_mouse_50um" - ) - - -def test_load_brainreg_directory_no_input( - transformation_widget_with_napari_layers, mocker -): - # Mock dialog to avoid need for UI - mock_get_save_file_name = mocker.patch( - "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getExistingDirectory" - ) - mock_get_save_file_name.return_value = "" - - transformation_widget_with_napari_layers.load_brainreg_directory() - assert not hasattr( - transformation_widget_with_napari_layers.atlas, "atlas_name" - ) - - -def test_check_brainreg_directory_correct_metadata( - mocker, transformation_widget_with_data -): - mock_method = mocker.patch.object( - transformation_widget_with_data, "display_brainreg_directory_warning" - ) - - transformation_widget_with_data.check_brainreg_directory() - mock_method.assert_not_called() - - -def test_check_brainreg_directory_random_data( - mocker, transformation_widget_with_data, random_json_path -): - mock_method = mocker.patch.object( - transformation_widget_with_data, "display_brainreg_directory_warning" - ) - transformation_widget_with_data.paths.brainreg_metadata_file = ( - random_json_path - ) - transformation_widget_with_data.check_brainreg_directory() - mock_method.assert_called_once() - - -def test_check_brainreg_directory_false_path( - mocker, transformation_widget_with_data -): - mock_method = mocker.patch.object( - transformation_widget_with_data, "display_brainreg_directory_warning" - ) - - transformation_widget_with_data.paths.brainreg_metadata_file = "/some/file" - transformation_widget_with_data.check_brainreg_directory() - mock_method.assert_called_once() - - -def test_display_brainreg_directory_warning_calls_display_info( - transformation_widget_with_napari_layers, mock_display_info -): - transformation_widget_with_napari_layers.display_brainreg_directory_warning() - - # Assert display_info was called once with the expected arguments - mock_display_info.assert_called_once_with( - transformation_widget_with_napari_layers, - "Not a brainreg directory", - "This directory does not appear to be a valid brainreg directory. " - "Please try loading another brainreg output directory.", - ) - - -def test_analysis(transformation_widget_with_transformed_points): - transformation_widget_with_transformed_points.analyse_points() - - assert ( - transformation_widget_with_transformed_points.all_points_df.shape[0] - == 21 - ) - - df = transformation_widget_with_transformed_points.points_per_region_df - assert ( - df.loc[ - df["structure_name"] == "Caudoputamen", "left_cell_count" - ].values[0] - == 9 - ) - assert ( - df.loc[df["structure_name"] == "Pons", "left_cell_count"].values[0] - == 1 - ) - assert ( - df.loc[ - df["structure_name"] - == "Primary somatosensory area, upper limb, layer 5", - "left_cells_per_mm3", - ].values[0] - == 0 - ) - - -def test_save_df_to_csv( - mocker, - transformation_widget_with_transformed_points, - sample_dataframe, - tmp_path, -): - # Mock dialog to avoid need for UI - mock_get_save_file_name = mocker.patch( - "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getSaveFileName" - ) - - save_path = tmp_path / "test.csv" - mock_get_save_file_name.return_value = (save_path, "CSV Files (*.csv)") - - transformation_widget_with_transformed_points.save_df_to_csv( - sample_dataframe - ) - - # Ensure the file dialog was called - mock_get_save_file_name.assert_called_once_with( - transformation_widget_with_transformed_points, - "Choose filename", - "", - "CSV Files (*.csv)", - ) - - assert save_path.exists() - - -def test_save_all_points_and_summary_csv( - mocker, - transformation_widget_with_transformed_points, - tmp_path, -): - transformation_widget_with_transformed_points.analyse_points() - - # Mock dialog to avoid need for UI - mock_get_save_file_name = mocker.patch( - "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getSaveFileName" - ) - - save_path = tmp_path / "all_points.csv" - mock_get_save_file_name.return_value = (save_path, "CSV Files (*.csv)") - transformation_widget_with_transformed_points.save_all_points_csv() - assert save_path.exists() - - save_path = tmp_path / "points_per_region.csv" - mock_get_save_file_name.return_value = (save_path, "CSV Files (*.csv)") - transformation_widget_with_transformed_points.save_points_summary_csv() - assert save_path.exists() - - -def test_is_atlas_installed(mocker, transformation_widget): - mock_get_downloaded_atlases = mocker.patch( - "brainglobe_utils.brainmapper.transform_widget.get_downloaded_atlases" - ) - mock_get_downloaded_atlases.return_value = [ - "allen_mouse_10um", - "allen_mouse_50um", - ] - - assert transformation_widget.is_atlas_installed("allen_mouse_10um") - assert not transformation_widget.is_atlas_installed("allen_mouse_25um") - - -def test_paths_initialisation( - dummy_brainreg_file_paths, dummy_brainreg_directory -): - assert ( - dummy_brainreg_file_paths.brainreg_directory - == dummy_brainreg_directory - ) - assert ( - dummy_brainreg_file_paths.brainreg_metadata_file - == dummy_brainreg_directory / "brainreg.json" - ) - assert ( - dummy_brainreg_file_paths.deformation_field_0 - == dummy_brainreg_directory / "deformation_field_0.tiff" - ) - assert ( - dummy_brainreg_file_paths.downsampled_image - == dummy_brainreg_directory / "downsampled.tiff" - ) - assert ( - dummy_brainreg_file_paths.volume_csv_path - == dummy_brainreg_directory / "volumes.csv" - ) - - -def test_make_filepaths(dummy_brainreg_file_paths, dummy_brainreg_directory): - filename = "test_file.txt" - expected_path = dummy_brainreg_directory / filename - assert dummy_brainreg_file_paths.make_filepaths(filename) == expected_path - - -@pytest.fixture -def sample_metadata() -> Dict[str, Any]: - return { - "orientation": "prs", - "atlas": "allen_mouse_25um", - "voxel_sizes": [5, 2, 2], - } - - -def test_metadata_initialisation(sample_metadata): - metadata = Metadata(sample_metadata) - assert metadata.orientation == sample_metadata["orientation"] - assert metadata.atlas_string == sample_metadata["atlas"] - assert metadata.voxel_sizes == sample_metadata["voxel_sizes"] +# import json +# from pathlib import Path +# from typing import Any, Dict +# +# import numpy as np +# import pandas as pd +# import pooch +# import pytest +# +# from brainglobe_utils.brainmapper.transform_widget import ( +# Metadata, +# Paths, +# TransformPoints, +# ) +# +# RAW_DATA_ORIENTATION = ATLAS_ORIENTATION = "asr" +# points = np.array( +# [ +# [10, 68, 105], +# [10, 90, 134], +# [10, 105, 157], +# [36, 69, 86], +# [36, 72, 155], +# [36, 112, 128], +# [74, 54, 60], +# [74, 121, 50], +# [74, 87, 153], +# [74, 84, 169], +# [74, 108, 156], +# [74, 75, 148], +# [74, 98, 169], +# [74, 76, 159], +# [74, 99, 156], +# [74, 91, 146], +# [74, 87, 160], +# [112, 44, 60], +# [112, 76, 136], +# [156, 77, 54], +# [173, 126, 159], +# [201, 66, 130], +# [219, 132, 199], +# [219, 1, 1], +# ] +# ) +# +# points_in_downsampled_space = np.array( +# [ +# [10.0, 68.0, 105.0], +# [10.0, 90.0, 134.0], +# [10.0, 105.0, 157.0], +# [36.0, 69.0, 86.0], +# [36.0, 72.0, 155.0], +# [36.0, 112.0, 128.0], +# [74.0, 54.0, 60.0], +# [74.0, 121.0, 50.0], +# [74.0, 87.0, 153.0], +# [74.0, 84.0, 169.0], +# [74.0, 108.0, 156.0], +# [74.0, 75.0, 148.0], +# [74.0, 98.0, 169.0], +# [74.0, 76.0, 159.0], +# [74.0, 99.0, 156.0], +# [74.0, 91.0, 146.0], +# [74.0, 87.0, 160.0], +# [112.0, 44.0, 60.0], +# [112.0, 76.0, 136.0], +# [156.0, 77.0, 54.0], +# [173.0, 126.0, 159.0], +# [201.0, 66.0, 130.0], +# [219.0, 132.0, 199.0], +# [219.0, 1.0, 1.0], +# ] +# ) +# +# points_in_atlas_space = np.array( +# [ +# [36, 54, 97], +# [34, 76, 124], +# [34, 90, 146], +# [61, 58, 82], +# [62, 60, 145], +# [58, 101, 120], +# [100, 47, 60], +# [93, 113, 53], +# [95, 80, 146], +# [95, 76, 161], +# [93, 100, 148], +# [97, 67, 141], +# [94, 90, 161], +# [97, 68, 151], +# [94, 92, 148], +# [95, 84, 139], +# [95, 80, 152], +# [139, 42, 60], +# [131, 72, 132], +# [173, 81, 56], +# [177, 135, 155], +# [214, 79, 129], +# [218, 150, 194], +# [249, 17, 10], +# ] +# ) +# +# +# @pytest.fixture +# def sample_dataframe(): +# return pd.DataFrame({"column1": [1, 2, 3], "column2": ["a", "b", "c"]}) +# +# +# @pytest.fixture +# def random_json_path(tmp_path): +# json_path = tmp_path / "random_json.json" +# content = { +# "name": "Pooh Bear", +# "location": "100 acre wood", +# "food": "Honey", +# } +# with open(json_path, "w") as f: +# json.dump(content, f) +# +# return json_path +# +# +# @pytest.fixture +# def mock_display_info(mocker): +# return mocker.patch( +# "brainglobe_utils.brainmapper.transform_widget.display_info" +# ) +# +# +# @pytest.fixture(scope="function") +# def transformation_widget_with_transformed_points( +# transformation_widget_with_data, +# ): +# transformation_widget_with_data.run_transform_points_to_downsampled_space() +# transformation_widget_with_data.run_transform_downsampled_points_to_atlas_space() +# return transformation_widget_with_data +# +# +# @pytest.fixture(scope="function") +# def transformation_widget_with_data( +# transformation_widget_with_napari_layers, brainreg_directory +# ): +# transformation_widget_with_napari_layers.brainreg_directory = ( +# brainreg_directory +# ) +# transformation_widget_with_napari_layers.initialise_brainreg_data() +# return transformation_widget_with_napari_layers +# +# +# @pytest.fixture(scope="function") +# def transformation_widget(make_napari_viewer): +# viewer = make_napari_viewer() +# widget = TransformPoints(viewer) +# viewer.window.add_dock_widget(widget) +# return widget +# +# +# @pytest.fixture(scope="function") +# def transformation_widget_with_napari_layers( +# transformation_widget, brainreg_directory +# ): +# points_layer = transformation_widget.viewer.add_points(points) +# transformation_widget.points_layer = points_layer +# +# raw_data = brainreg_directory / "downsampled.tiff" +# raw_data_layer = transformation_widget.viewer.open(raw_data) +# transformation_widget.raw_data = raw_data_layer[0] +# return transformation_widget +# +# +# @pytest.fixture +# def brainreg_directory(test_data_registry) -> Path: +# _ = test_data_registry.fetch( +# "brainglobe-utils/points_transform_brainreg_directory.zip", +# progressbar=True, +# processor=pooch.Unzip(extract_dir=""), +# ) +# return ( +# Path.home() +# / ".brainglobe" +# / "test_data" +# / "brainglobe-utils" +# / "points_transform_brainreg_directory" +# ) +# +# +# @pytest.fixture +# def dummy_brainreg_directory() -> Path: +# return Path("/path/to/brainreg_directory") +# +# +# @pytest.fixture +# def dummy_brainreg_file_paths(dummy_brainreg_directory) -> Paths: +# return Paths(dummy_brainreg_directory) +# +# +# def test_initialise_brainreg_data( +# transformation_widget_with_data, brainreg_directory +# ): +# +# assert ( +# transformation_widget_with_data.paths.brainreg_directory +# == brainreg_directory +# ) +# assert ( +# transformation_widget_with_data.metadata.orientation +# == ATLAS_ORIENTATION +# ) +# assert ( +# transformation_widget_with_data.atlas.atlas_name == "allen_mouse_50um" +# ) +# +# +# def test_get_downsampled_space(transformation_widget_with_data): +# downsampled_space = transformation_widget_with_data.get_downsampled_space() +# assert downsampled_space.origin_string == ATLAS_ORIENTATION +# +# +# def test_get_raw_data_space(transformation_widget_with_data): +# raw_data_space = transformation_widget_with_data.get_raw_data_space() +# assert raw_data_space.origin_string == RAW_DATA_ORIENTATION +# +# +# def test_call_transform_points_to_atlas_space( +# mocker, transformation_widget_with_data +# ): +# mock_load_brainreg = mocker.patch.object( +# transformation_widget_with_data, "load_brainreg_directory" +# ) +# mock_transform_downsampled = mocker.patch.object( +# transformation_widget_with_data, +# "run_transform_points_to_downsampled_space", +# ) +# mock_transform_atlas = mocker.patch.object( +# transformation_widget_with_data, +# "run_transform_downsampled_points_to_atlas_space", +# ) +# mock_analyse_points = mocker.patch.object( +# transformation_widget_with_data, "analyse_points" +# ) +# +# transformation_widget_with_data.transform_points_to_atlas_space() +# mock_load_brainreg.assert_called_once() +# mock_transform_downsampled.assert_called_once() +# mock_transform_atlas.assert_called_once() +# mock_analyse_points.assert_called_once() +# +# +# def test_transform_points_to_atlas_space( +# transformation_widget_with_transformed_points, +# ): +# np.testing.assert_array_equal( +# transformation_widget_with_transformed_points.viewer.layers[ +# "Points in downsampled space" +# ].data, +# points_in_downsampled_space, +# ) +# np.testing.assert_array_equal( +# transformation_widget_with_transformed_points.viewer.layers[ +# "Points in atlas space" +# ].data, +# points_in_atlas_space, +# ) +# +# +# def test_check_layers(transformation_widget_with_data): +# assert transformation_widget_with_data.check_layers() +# +# +# def test_check_layers_no_layers(transformation_widget, mock_display_info): +# transformation_widget.check_layers() +# +# mock_display_info.assert_called_once_with( +# transformation_widget, +# "No layers selected", +# "Please select the layers corresponding to the points " +# "you would like to transform and the raw data (registered by " +# "brainreg)", +# ) +# +# +# def test_check_layers_no_raw_data(transformation_widget, mock_display_info): +# points_layer = transformation_widget.viewer.add_points(points) +# transformation_widget.points_layer = points_layer +# +# transformation_widget.check_layers() +# +# mock_display_info.assert_called_once_with( +# transformation_widget, +# "No raw data layer selected", +# "Please select a layer that corresponds to the raw " +# "data (registered by brainreg)", +# ) +# +# +# def test_check_layers_no_points_data( +# transformation_widget, brainreg_directory, mock_display_info +# ): +# raw_data = brainreg_directory / "downsampled.tiff" +# raw_data_layer = transformation_widget.viewer.open(raw_data) +# transformation_widget.raw_data = raw_data_layer[0] +# +# transformation_widget.check_layers() +# +# mock_display_info.assert_called_once_with( +# transformation_widget, +# "No points layer selected", +# "Please select a points layer you would like to transform", +# ) +# +# +# def test_load_brainreg_directory( +# transformation_widget_with_napari_layers, brainreg_directory, mocker +# ): +# # Mock dialog to avoid need for UI +# mock_get_save_file_name = mocker.patch( +# "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getExistingDirectory" +# ) +# mock_get_save_file_name.return_value = brainreg_directory +# +# transformation_widget_with_napari_layers.load_brainreg_directory() +# assert ( +# transformation_widget_with_napari_layers.atlas.atlas_name +# == "allen_mouse_50um" +# ) +# +# +# def test_load_brainreg_directory_no_input( +# transformation_widget_with_napari_layers, mocker +# ): +# # Mock dialog to avoid need for UI +# mock_get_save_file_name = mocker.patch( +# "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getExistingDirectory" +# ) +# mock_get_save_file_name.return_value = "" +# +# transformation_widget_with_napari_layers.load_brainreg_directory() +# assert not hasattr( +# transformation_widget_with_napari_layers.atlas, "atlas_name" +# ) +# +# +# def test_check_brainreg_directory_correct_metadata( +# mocker, transformation_widget_with_data +# ): +# mock_method = mocker.patch.object( +# transformation_widget_with_data, "display_brainreg_directory_warning" +# ) +# +# transformation_widget_with_data.check_brainreg_directory() +# mock_method.assert_not_called() +# +# +# def test_check_brainreg_directory_random_data( +# mocker, transformation_widget_with_data, random_json_path +# ): +# mock_method = mocker.patch.object( +# transformation_widget_with_data, "display_brainreg_directory_warning" +# ) +# transformation_widget_with_data.paths.brainreg_metadata_file = ( +# random_json_path +# ) +# transformation_widget_with_data.check_brainreg_directory() +# mock_method.assert_called_once() +# +# +# def test_check_brainreg_directory_false_path( +# mocker, transformation_widget_with_data +# ): +# mock_method = mocker.patch.object( +# transformation_widget_with_data, "display_brainreg_directory_warning" +# ) +# +# transformation_widget_with_data.paths.brainreg_metadata_file = "/some/file" +# transformation_widget_with_data.check_brainreg_directory() +# mock_method.assert_called_once() +# +# +# def test_display_brainreg_directory_warning_calls_display_info( +# transformation_widget_with_napari_layers, mock_display_info +# ): +# transformation_widget_with_napari_layers.display_brainreg_directory_warning() +# +# # Assert display_info was called once with the expected arguments +# mock_display_info.assert_called_once_with( +# transformation_widget_with_napari_layers, +# "Not a brainreg directory", +# "This directory does not appear to be a valid brainreg directory. " +# "Please try loading another brainreg output directory.", +# ) +# +# +# def test_analysis(transformation_widget_with_transformed_points): +# transformation_widget_with_transformed_points.analyse_points() +# +# assert ( +# transformation_widget_with_transformed_points.all_points_df.shape[0] +# == 21 +# ) +# +# df = transformation_widget_with_transformed_points.points_per_region_df +# assert ( +# df.loc[ +# df["structure_name"] == "Caudoputamen", "left_cell_count" +# ].values[0] +# == 9 +# ) +# assert ( +# df.loc[df["structure_name"] == "Pons", "left_cell_count"].values[0] +# == 1 +# ) +# assert ( +# df.loc[ +# df["structure_name"] +# == "Primary somatosensory area, upper limb, layer 5", +# "left_cells_per_mm3", +# ].values[0] +# == 0 +# ) +# +# +# def test_save_df_to_csv( +# mocker, +# transformation_widget_with_transformed_points, +# sample_dataframe, +# tmp_path, +# ): +# # Mock dialog to avoid need for UI +# mock_get_save_file_name = mocker.patch( +# "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getSaveFileName" +# ) +# +# save_path = tmp_path / "test.csv" +# mock_get_save_file_name.return_value = (save_path, "CSV Files (*.csv)") +# +# transformation_widget_with_transformed_points.save_df_to_csv( +# sample_dataframe +# ) +# +# # Ensure the file dialog was called +# mock_get_save_file_name.assert_called_once_with( +# transformation_widget_with_transformed_points, +# "Choose filename", +# "", +# "CSV Files (*.csv)", +# ) +# +# assert save_path.exists() +# +# +# def test_save_all_points_and_summary_csv( +# mocker, +# transformation_widget_with_transformed_points, +# tmp_path, +# ): +# transformation_widget_with_transformed_points.analyse_points() +# +# # Mock dialog to avoid need for UI +# mock_get_save_file_name = mocker.patch( +# "brainglobe_utils.brainmapper.transform_widget.QFileDialog.getSaveFileName" +# ) +# +# save_path = tmp_path / "all_points.csv" +# mock_get_save_file_name.return_value = (save_path, "CSV Files (*.csv)") +# transformation_widget_with_transformed_points.save_all_points_csv() +# assert save_path.exists() +# +# save_path = tmp_path / "points_per_region.csv" +# mock_get_save_file_name.return_value = (save_path, "CSV Files (*.csv)") +# transformation_widget_with_transformed_points.save_points_summary_csv() +# assert save_path.exists() +# +# +# def test_is_atlas_installed(mocker, transformation_widget): +# mock_get_downloaded_atlases = mocker.patch( +# "brainglobe_utils.brainmapper.transform_widget.get_downloaded_atlases" +# ) +# mock_get_downloaded_atlases.return_value = [ +# "allen_mouse_10um", +# "allen_mouse_50um", +# ] +# +# assert transformation_widget.is_atlas_installed("allen_mouse_10um") +# assert not transformation_widget.is_atlas_installed("allen_mouse_25um") +# +# +# def test_paths_initialisation( +# dummy_brainreg_file_paths, dummy_brainreg_directory +# ): +# assert ( +# dummy_brainreg_file_paths.brainreg_directory +# == dummy_brainreg_directory +# ) +# assert ( +# dummy_brainreg_file_paths.brainreg_metadata_file +# == dummy_brainreg_directory / "brainreg.json" +# ) +# assert ( +# dummy_brainreg_file_paths.deformation_field_0 +# == dummy_brainreg_directory / "deformation_field_0.tiff" +# ) +# assert ( +# dummy_brainreg_file_paths.downsampled_image +# == dummy_brainreg_directory / "downsampled.tiff" +# ) +# assert ( +# dummy_brainreg_file_paths.volume_csv_path +# == dummy_brainreg_directory / "volumes.csv" +# ) +# +# +# def test_make_filepaths(dummy_brainreg_file_paths, dummy_brainreg_directory): +# filename = "test_file.txt" +# expected_path = dummy_brainreg_directory / filename +# assert dummy_brainreg_file_paths.make_filepaths(filename) == expected_path +# +# +# @pytest.fixture +# def sample_metadata() -> Dict[str, Any]: +# return { +# "orientation": "prs", +# "atlas": "allen_mouse_25um", +# "voxel_sizes": [5, 2, 2], +# } +# +# +# def test_metadata_initialisation(sample_metadata): +# metadata = Metadata(sample_metadata) +# assert metadata.orientation == sample_metadata["orientation"] +# assert metadata.atlas_string == sample_metadata["atlas"] +# assert metadata.voxel_sizes == sample_metadata["voxel_sizes"]