ray.rllib.env.single_agent_episode.SingleAgentEpisode.set_observations#
- SingleAgentEpisode.set_observations(*, new_data, at_indices: int | slice | List[int] | None = None, neg_index_as_lookback: bool = False) None [source]#
Overwrites all or some of this Episode’s observations with the provided data.
Note that an episode’s observation data cannot be written to directly as it is managed by a
InfiniteLookbackBuffer
object. Normally, individual, current observations are added to the episode either by callingself.add_env_step
or more directly (and manually) viaself.observations.append|extend()
. However, for certain postprocessing steps, the entirety (or a slice) of an episode’s observations might have to be rewritten, which is whenself.set_observations()
should be used.- Parameters:
new_data – The new observation data to overwrite existing data with. This may be a list of individual observation(s) in case this episode is still not numpy’ized yet. In case this episode has already been numpy’ized, this should be (possibly complex) struct matching the observation space and with a batch size of its leafs exactly the size of the to-be-overwritten slice or segment (provided by
at_indices
).at_indices – A single int is interpreted as one index, which to overwrite with
new_data
(which is expected to be a single observation). A list of ints is interpreted as a list of indices, all of which to overwrite withnew_data
(which is expected to be of the same size aslen(at_indices)
). A slice object is interpreted as a range of indices to be overwritten withnew_data
(which is expected to be of the same size as the provided slice). Thereby, negative indices by default are interpreted as “before the end” unless theneg_index_as_lookback=True
option is used, in which case negative indices are interpreted as “before ts=0”, meaning going back into the lookback buffer.neg_index_as_lookback – If True, negative values in
at_indices
are interpreted as “before ts=0”, meaning going back into the lookback buffer. For example, an episode with observations = [4, 5, 6, 7, 8, 9], where [4, 5, 6] is the lookback buffer range (ts=0 item is 7), will handle a call toset_observations(individual_observation, -1, neg_index_as_lookback=True)
by overwriting the value of 6 in our observations buffer with the provided “individual_observation”.
- Raises:
IndexError – If the provided
at_indices
do not match the size ofnew_data
.