Skip to content

Commit

Permalink
support view with array of indexes
Browse files Browse the repository at this point in the history
  • Loading branch information
lmiq committed Sep 12, 2023
1 parent 61c952a commit 51fba1b
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/datastructures/Positions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ end
FramePositions(f::Chemfiles.Frame) = FramePositions(Chemfiles.positions(f))
Base.getindex(x::FramePositions, i::Int) = Point3D(@view(x.positions[:,i]))
Base.getindex(x::FramePositions, r::AbstractUnitRange) = FramePositions(x.positions[:,r])
Base.getindex(x::FramePositions, ivec::AbstractVector{<:Integer}) = FramePositions(x.positions[:,ivec])

"""
positions(frame::Chemfiles.Frame)
Expand Down Expand Up @@ -106,6 +107,7 @@ import Base: ==, ≈

import Base: view
view(positions::FramePositions, r::AbstractUnitRange) = FramePositions(@view(positions.positions[:,r]))
view(positions::FramePositions, ivec::AbstractVector{<:Integer}) = FramePositions(@view(positions.positions[:,ivec]))


@testitem "FramePositions" begin
Expand All @@ -120,4 +122,8 @@ view(positions::FramePositions, r::AbstractUnitRange) = FramePositions(@view(pos
@test p[2:3] == FramePositions(m[:,2:3])
@test p[2:3] FramePositions(m[:,2:3])
@test @view(p[2:3]) == FramePositions(m[:,2:3])
inds = [2, 3, 5]
@test p[inds] == FramePositions(m[:,inds])
@test @view(p[inds]) == FramePositions(m[:,inds])

end

0 comments on commit 51fba1b

Please sign in to comment.