Skip to content

Conversation

@ChrisRackauckas-Claude
Copy link

Summary

Fixes #453 - view(f, :, i) for a VectorOfArray with heterogeneous inner array sizes now returns the correct result.

Problem

Previously, when viewing a specific column of a VectorOfArray with differently sized inner arrays:

  • view(VectorOfArray([[1.0], [2.0, 3.0]]), :, 2) returned a 1-element view instead of 2 elements
  • view(VectorOfArray([[1.0, 2.0], [3.0]]), :, 2) returned a 2-element view with #undef instead of 1 element

The root cause was that to_indices uses axes, which is computed based on the first element's size. This doesn't work for heterogeneous arrays where different columns have different sizes.

Solution

Added special handling for view(A, :, i) where i is an Int to use the actual size of the specific column being viewed rather than relying on to_indices.

Changes

  • Modified Base.view for AbstractVectorOfArray to handle heterogeneous arrays correctly
  • Added comprehensive tests for views of heterogeneous arrays:
    • Testing correct lengths of views
    • Testing that views match regular indexing
    • Testing that views can be modified

Testing

All existing tests pass, plus new tests specifically for this issue.

🤖 Generated with Claude Code

Co-Authored-By: Claude [email protected]

Fixes SciML#453

The issue was that `view(f, :, i)` for a VectorOfArray with
heterogeneous inner array sizes returned incorrect results. The
problem was that `to_indices` uses `axes`, which is based on the
first element's size, causing views of columns with different sizes
to have incorrect dimensions.

Solution: Added special handling for `view(A, :, i)` where `i` is
an Int, to use the actual size of the specific column being viewed
rather than relying on `to_indices`.

Changes:
- Modified Base.view for AbstractVectorOfArray to handle heterogeneous
  arrays by computing the correct indices based on the actual column size
- Added comprehensive tests for views of heterogeneous arrays including:
  * Testing correct lengths of views
  * Testing that views match regular indexing
  * Testing that views can be modified

All existing tests pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@ChrisRackauckas ChrisRackauckas merged commit 3710526 into SciML:master Oct 24, 2025
15 of 25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Views of VectorOfArray with differently sized vectors gives wrong result

2 participants