Skip to content

[Feature] Compatibility with Atlas API v3 #243

@alessandrofelder

Description

@alessandrofelder

Is your feature request related to a problem? Please describe.

Current main fails a number of tests when in an environment with latest atlas API (v3, currently in dev). Logging representative local pytest failures here, to help diagnosing and future PR review.

These are just the symptoms for now.

Sub-issue of brainglobe/brainglobe-atlasapi#780

Underlying file structure has changed

These are very much expected

 FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/gw/g898mw1d2319ncb69pn6gvjc0000gn/T/pytest-of-alessandrofelder/pytest-3/test_config_edit0/new_brainglobe_dir/allen_mouse_100um_v3_0/structures.json'

FAILED tests/test_unit/test_metadata_reading.py::test_metadata_reading - FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/gw/g898mw1d2319ncb69pn6gvjc0000gn/T/pytest-of-alessandrofelder/pytest-3/test_config_edit0/new_brainglobe_dir/example_mouse_100um_v3_0/metadata.json'

where exists = PosixPath('/Users/alessandrofelder/.brainglobe-tests/.brainglobe/example_mouse_100um_v1.2').exists

Some breakages in some functions

assert selected_atlas_name in get_downloaded_atlases()

  tests/test_unit/test_napari_atlas_representation.py::test_add_additional_reference - TypeError: 'NoneType' object is not subscriptable

  tests/test_unit/test_napari_atlas_representation.py::test_add_to_viewer[osten_mouse_100um-True] - AssertionError: assert False
 +  where False = allclose(array([[  0.,   0.,   0.],\n       [ 43.,  39., 113.]]), array([[  0.,   0.,   0.],\n       [131.,  79., 113.]]))
 +    where array([[  0.,   0.,   0.],\n       [ 43.,  39., 113.]]) = Extent(data=array([[  0.,   0.,   0.],\n       [ 43.,  39., 113.]]), world=array([[  0.,   0.,   0.],\n       [ 43.,  39., 113.]]), step=array([1., 1., 1.])).world
 +      where Extent(data=array([[  0.,   0.,   0.],\n       [ 43.,  39., 113.]]), world=array([[  0.,   0.,   0.],\n       [ 43.,  39., 113.]]), step=array([1., 1., 1.])) = <Labels layer 'osten_mouse_100um_annotation' at 0x31c49ac10>.extent
 +    and   array([[  0.,   0.,   0.],\n       [131.,  79., 113.]]) = Extent(data=array([[  0.,   0.,   0.],\n       [131.,  79., 113.]]), world=array([[  0.,   0.,   0.],\n       [131.,  79., 113.]]), step=array([1., 1., 1.])).world
 +      where Extent(data=array([[  0.,   0.,   0.],\n       [131.,  79., 113.]]), world=array([[  0.,   0.,   0.],\n       [131.,  79., 113.]]), step=array([1., 1., 1.])) = <Image layer 'osten_mouse_100um_reference' at 0x3073dfed0>.extent

Some Qt Signals are never emitted, some functions are not called

 FAILED tests/test_integration/test_brainrender_viewer_widget.py::test_structure_row_double_clicked - AssertionError: Expected 'add_structure_to_viewer' to be called once. Called 0 times.
FAILED tests/test_integration/test_brainrender_viewer_widget.py::test_add_additional_reference_selected - AssertionError
FAILED tests/test_integration/test_brainrender_viewer_widget.py::test_show_structures_checkbox - AssertionError: expected call not found.
Expected: refresh('example_mouse_100um', False)
  Actual: not called.
FAILED tests/test_unit/test_atlas_viewer_view.py::test_double_click_on_locally_available_atlas_row[0-example_mouse_100um] - pytestqt.exceptions.TimeoutError: Signal add_atlas_requested(QString) not emitted after 5000 ms
FAILED tests/test_unit/test_atlas_viewer_view.py::test_double_click_on_locally_available_atlas_row[4-allen_mouse_100um] - pytestqt.exceptions.TimeoutError: Signal add_atlas_requested(QString) not emitted after 5000 ms
FAILED tests/test_unit/test_atlas_viewer_view.py::test_double_click_on_locally_available_atlas_row[14-osten_mouse_100um] - pytestqt.exceptions.TimeoutError: Signal add_atlas_requested(QString) not emitted after 5000 ms
FAILED tests/test_unit/test_atlas_viewer_view.py::test_additional_reference_menu - pytestqt.exceptions.TimeoutError: Signal additional_reference_requested(QString) not emitted after 5000 ms

Describe the solution you'd like

This issue is purely to ensure the current behaviour persists when we switch to Atlas API v3.
So this issue can be closed when we convince ourselves with pytest and manual user testing that there is no change in user-facing functionality between current Atlas API and new Atlas API.

We may also want to rethink the functionality we provide (e.g. #241) but that can be tracked separately.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

Status

Priorities

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions