-
Notifications
You must be signed in to change notification settings - Fork 75
Description
Describe the bug
Tests in movement are failing on the main branch with the error numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares. This occurs during filtering tests that use the Savitzky-Golay filter (savgol_filter) on datasets with NaN values.
To Reproduce
-
Clone the movement repository: git clone https://github.com/neuroinformatics-unit/movement.git
-
Checkout the main branch: git checkout main
-
Install dependencies: pip install .[dev] (uses pyproject.toml)
-
Run the tests: pytest tests/
-
The following tests fail with numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares:
-
tests/test_integration/test_filtering.py::test_nan_propagation_through_filters (4 tests)
-
tests/test_unit/test_filtering.py::TestFilteringValidDataset::test_filter_with_nans_on_position (2 tests)
-
tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window (8 tests)
-
Expected behaviour
These tests should pass on the main branch, as they are designed to verify that the Savitzky-Golay filter correctly handles NaN values in datasets (e.g., valid_poses_dataset_with_nan, valid_bboxes_dataset_with_nan). The filter should either handle NaNs gracefully or the tests should account for such failures.
Log file
=============================================== short test summary info ===============================================
FAILED tests/test_integration/test_filtering.py::test_nan_propagation_through_filters[3] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_integration/test_filtering.py::test_nan_propagation_through_filters[5] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_integration/test_filtering.py::test_nan_propagation_through_filters[6] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_integration/test_filtering.py::test_nan_propagation_through_filters[13] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDataset::test_filter_with_nans_on_position[savgol_filter-filter_kwargs1-valid_poses_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDataset::test_filter_with_nans_on_position[savgol_filter-filter_kwargs1-valid_bboxes_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-3-valid_poses_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-3-valid_bboxes_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-5-valid_poses_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-5-valid_bboxes_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-6-valid_poses_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-6-valid_bboxes_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-10-valid_poses_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
FAILED tests/test_unit/test_filtering.py::TestFilteringValidDatasetWithNaNs::test_filter_with_nans_on_position_varying_window[savgol_filter-10-valid_bboxes_dataset_with_nan] - numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
Computer used (please complete the following information):
- OS: Windows 11
Additional context
- I’m using Python 3.13.2 and NumPy version 2.1.3. This is a relatively new Python version, which might be causing compatibility issues if
movementis tested with older versions (e.g., Python 3.9). - This was identified while working on PR Rename source format #525, where @niksirbi noted that these failures might be a broader issue since they are reproducible on main. I’m happy to assist with debugging if there are any specific steps to try (e.g., testing with a different NumPy version).
Metadata
Metadata
Assignees
Labels
Type
Projects
Status