Skip to content

Commit 437d0a8

Browse files
fixup! refactor: rework timeseries parameter indexing API
1 parent 6cc525b commit 437d0a8

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/parameter_timeseries_collection.jl

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ following `getindex` methods:
2727
third the index of the parameter in an element of the timeseries.
2828
2929
The three-argument version of [`parameter_values`](@ref) is implemented for this type.
30+
The single-argument version of `parameter_values` returns the cached parameter object.
3031
[`parameter_timeseries`](@ref) is implemented for this type. This type does not implement
3132
any traits.
3233
"""
@@ -56,12 +57,29 @@ Base.parent(ptc::ParameterTimeseriesCollection) = ptc.collection
5657
Base.getindex(ptc::ParameterTimeseriesCollection, idx) = ptc.collection[idx]
5758
function Base.getindex(ptc::ParameterTimeseriesCollection, idx::ParameterTimeseriesIndex)
5859
timeseries = ptc.collection[idx.timeseries_idx]
59-
return getu(timeseries, idx.parameter_idx)(timeseries)
60+
return getindex.(state_values(timeseries), (idx.parameter_idx,))
61+
end
62+
function Base.getindex(
63+
ptc::ParameterTimeseriesCollection, idx::ParameterTimeseriesIndex, subidx::Union{
64+
Int, CartesianIndex})
65+
timeseries = ptc.collection[idx.timeseries_idx]
66+
return state_values(timeseries, subidx)[idx.parameter_idx]
67+
end
68+
function Base.getindex(
69+
ptc::ParameterTimeseriesCollection, idx::ParameterTimeseriesIndex, ::Colon)
70+
return ptc[idx]
71+
end
72+
function Base.getindex(
73+
ptc::ParameterTimeseriesCollection, idx::ParameterTimeseriesIndex, subidx::AbstractArray{Bool})
74+
timeseries = ptc.collection[idx.timeseries_idx]
75+
map(only(to_indices(current_time(timeseries), (subidx,)))) do i
76+
state_values(timeseries, i)[idx.parameter_idx]
77+
end
6078
end
6179
function Base.getindex(
6280
ptc::ParameterTimeseriesCollection, idx::ParameterTimeseriesIndex, subidx)
6381
timeseries = ptc.collection[idx.timeseries_idx]
64-
return getu(timeseries, idx.parameter_idx)(timeseries, subidx)
82+
getindex.(state_values.((timeseries,), subidx), idx.parameter_idx)
6583
end
6684
function Base.getindex(ptc::ParameterTimeseriesCollection, ts_idx, subidx)
6785
return state_values(ptc.collection[ts_idx], subidx)
@@ -70,6 +88,10 @@ function Base.getindex(ptc::ParameterTimeseriesCollection, ts_idx, subidx, param
7088
return ptc[ParameterTimeseriesIndex(ts_idx, param_idx), subidx]
7189
end
7290

91+
function parameter_values(ptc::ParameterTimeseriesCollection)
92+
return ptc.paramcache
93+
end
94+
7395
function parameter_values(
7496
ptc::ParameterTimeseriesCollection, idx::ParameterTimeseriesIndex, subidx)
7597
return ptc[idx, subidx]

0 commit comments

Comments
 (0)