1
1
export EpisodesBuffer, PartialNamedTuple
2
2
import DataStructures. CircularBuffer
3
+ using ElasticArrays: ElasticArray, ElasticVector
3
4
4
5
"""
5
6
EpisodesBuffer(traces::AbstractTraces)
@@ -68,12 +69,20 @@ function EpisodesBuffer(traces::AbstractTraces)
68
69
end
69
70
end
70
71
71
- Base. getindex (es:: EpisodesBuffer , idx... ) = getindex (es. traces, idx... )
72
- Base. setindex! (es:: EpisodesBuffer , idx... ) = setindex! (es. traces, idx... )
73
- Base. size (es:: EpisodesBuffer ) = size (es. traces)
74
- Base. length (es:: EpisodesBuffer ) = length (es. traces)
75
- Base. keys (es:: EpisodesBuffer ) = keys (es. traces)
76
- Base. keys (es:: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = keys (es. traces. traces)
72
+ function Base. getindex (es:: EpisodesBuffer , idx:: Int... )
73
+ @boundscheck all (es. sampleable_inds[idx... ])
74
+ getindex (es. traces, idx... )
75
+ end
76
+
77
+ function Base. getindex (es:: EpisodesBuffer , idx... )
78
+ getindex (es. traces, idx... )
79
+ end
80
+
81
+ Base. setindex! (eb:: EpisodesBuffer , idx... ) = setindex! (eb. traces, idx... )
82
+ Base. size (eb:: EpisodesBuffer ) = size (eb. traces)
83
+ Base. length (eb:: EpisodesBuffer ) = length (eb. traces)
84
+ Base. keys (eb:: EpisodesBuffer ) = keys (eb. traces)
85
+ Base. keys (eb:: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = keys (eb. traces. traces)
77
86
function Base. show (io:: IO , m:: MIME"text/plain" , eb:: EpisodesBuffer{names} ) where {names}
78
87
s = nameof (typeof (eb))
79
88
t = eb. traces
@@ -82,14 +91,16 @@ function Base.show(io::IO, m::MIME"text/plain", eb::EpisodesBuffer{names}) where
82
91
end
83
92
84
93
ispartial_insert (traces:: Traces , xs) = length (xs) < length (traces. traces) # this is the number of traces it contains not the number of steps.
85
- ispartial_insert (es :: EpisodesBuffer , xs) = ispartial_insert (es . traces, xs)
94
+ ispartial_insert (eb :: EpisodesBuffer , xs) = ispartial_insert (eb . traces, xs)
86
95
ispartial_insert (traces:: CircularPrioritizedTraces , xs) = ispartial_insert (traces. traces, xs)
87
96
88
97
function pad! (trace:: Trace )
89
98
pad! (trace. parent)
90
99
return nothing
91
100
end
92
101
102
+ pad! (vect:: ElasticArray{T, Vector{T}} ) where {T} = push! (vect, zero (T))
103
+ pad! (vect:: ElasticVector{T, Vector{T}} ) where {T} = push! (vect, zero (T))
93
104
pad! (buf:: CircularArrayBuffer{T,N,A} ) where {T,N,A} = push! (buf, zero (T))
94
105
pad! (vect:: Vector{T} ) where {T} = push! (vect, zero (T))
95
106
@@ -123,9 +134,9 @@ pad!(vect::Vector{T}) where {T} = push!(vect, zero(T))
123
134
return :($ ex)
124
135
end
125
136
126
- fill_multiplex (es :: EpisodesBuffer ) = fill_multiplex (es . traces)
137
+ fill_multiplex (eb :: EpisodesBuffer ) = fill_multiplex (eb . traces)
127
138
128
- fill_multiplex (es :: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = fill_multiplex (es . traces. traces)
139
+ fill_multiplex (eb :: EpisodesBuffer{<:Any,<:Any,<:CircularPrioritizedTraces} ) = fill_multiplex (eb . traces. traces)
129
140
130
141
function Base. push! (eb:: EpisodesBuffer , xs:: NamedTuple )
131
142
push! (eb. traces, xs)
@@ -162,17 +173,17 @@ function Base.push!(eb::EpisodesBuffer, xs::PartialNamedTuple) #wrap a NamedTupl
162
173
end
163
174
164
175
for f in (:pop! , :popfirst! )
165
- @eval function Base. $f (es :: EpisodesBuffer )
166
- $ f (es . episodes_lengths)
167
- $ f (es . sampleable_inds)
168
- $ f (es . step_numbers)
169
- $ f (es . traces)
176
+ @eval function Base. $f (eb :: EpisodesBuffer )
177
+ $ f (eb . episodes_lengths)
178
+ $ f (eb . sampleable_inds)
179
+ $ f (eb . step_numbers)
180
+ $ f (eb . traces)
170
181
end
171
182
end
172
183
173
- function Base. empty! (es :: EpisodesBuffer )
174
- empty! (es . traces)
175
- empty! (es . episodes_lengths)
176
- empty! (es . sampleable_inds)
177
- empty! (es . step_numbers)
184
+ function Base. empty! (eb :: EpisodesBuffer )
185
+ empty! (eb . traces)
186
+ empty! (eb . episodes_lengths)
187
+ empty! (eb . sampleable_inds)
188
+ empty! (eb . step_numbers)
178
189
end
0 commit comments