Skip to content

LinAlgError: SVD did not converge in tests on main branch #532

@Udayscode

Description

@Udayscode

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

  1. Clone the movement repository: git clone https://github.com/neuroinformatics-unit/movement.git

  2. Checkout the main branch: git checkout main

  3. Install dependencies: pip install .[dev] (uses pyproject.toml)

  4. Run the tests: pytest tests/

  5. 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 movement is 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

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions