SciML / SciML/ComponentArrays.jl
Unexpected behavior of KeepIndex with partitioned axis
Open
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 375
- Forks
- 42
- Avg merge
- 7h 25m
- Merged PRs (30d)
- 17
Description
Currently getpropery and getindex using KeepIndex return different values.
Using the example of #41, I expected the result using KeepIndex to return ComponentVector(boids = <LazyArray>) rather than only the first entry.
boid = ComponentArray(pos=zeros(2), vel=zeros(2))
u0 = ComponentArray(boids=repeat([boid], 2))
u0.boids
#2-element LazyArray{ComponentVector{Float64, SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, Tuple{Axis{(pos = 1:2, vel = 3:4)}}}}:
# ComponentVector{Float64,SubArray...}(pos = [0.0, 0.0], vel = [0.0, 0.0])
# ComponentVector{Float64,SubArray...}(pos = [0.0, 0.0], vel = [0.0, 0.0])
u0[KeepIndex(:boids)]
# ComponentVector{Float64}(boids = (pos = [0.0, 0.0], vel = [0.0, 0.0]))
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the example from issue #41 and trace KeepIndex through getindex and getproperty for the partitioned boids axis. Compare the returned shape and contents, then add or update coverage so KeepIndex returns the expected two-element ComponentVector result rather than only the first entry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100