pypfilt.state#
- class pypfilt.state.History(ctx, matrix=None, offset=0, times=None)#
A simulation history stores the current and past states of each particle, as well as each particle’s weight and parent index.
Note
The
matrix
andoffset
arguments should only be provided when restoring a cached history matrix.- Parameters:
ctx – The simulation context.
matrix – The (optional) history matrix; a new matrix will be created if this is
None
(default behaviour).offset – The (optional) offset that maps time step numbers to slices of the history matrix.
times – The (optional) list of times associated with each slice of the history matrix.
- create_backcast(ctx)#
Return a new simulation history that represents the backcast from the current particle states, extending as far back as the oldest recorded particle states.
- Parameters:
ctx – The simulation context.
Note
All particle states in the backcast will be assigned the current particle weights.
- static load_state(ctx, group)#
Load the history matrix state from a cache file and return a new
History
object.- Parameters:
ctx – The simulation context.
group – The h5py Group object from which to load the history matrix state.
- save_state(ctx, group)#
Save the history matrix state to a cache file.
- Parameters:
ctx – The simulation context.
group – The h5py Group object in which to save the history matrix state.
- set_time_step(step_num, time)#
Update
history.index
to point to the specified time step.
- reached_window_end()#
Return
True
if the current time step lies outside the current history window, in which case the window must be shifted before the time step can be simulated.
- shift_window_back(shift)#
Shift the history window by
shift
steps.
- set_resampled(was_resampled)#
Record whether the particles were resampled at the current time step.
- summary_window(ctx, start, end)#
Return a list of
Snapshot
values for each time unit in the summary window, fromstart
toend
(inclusive).- Parameters:
ctx – The simulation context.
start – The starting time for the summary window (inclusive).
end – The ending time for the summary window (inclusive).
- class pypfilt.state.Snapshot(time, steps_per_unit, matrix, hist_ix)#
Captures the particle states at a single moment in time.
The following instance variables are defined:
time – The simulation time (
time
, below).hist_ix – The index of this snapshot (
hist_ix
, below).weights – The array of particle weights.
vec – The history matrix slice for this time.
state_vec – The particle state vectors at this time.
- Parameters:
time – The simulation time.
steps_per_unit – The number of time-steps per unit time.
matrix – The history matrix.
hist_ix – The index of this snapshot in the history matrix.
- sliced()#
Return
True
if the snapshot captures a slice of the ensemble.
- back_n_steps(n)#
Return the history matrix slice
n
time-steps before this snapshot.Note
This returns an array, not a
Snapshot
.- Parameters:
n – The number of time-steps to step back.
- back_n_steps_state_vec(n)#
Return the particle state vectors
n
time-steps before this snapshot.Note
This returns the state vectors as an array, not as a
Snapshot
.- Parameters:
n – The number of time-steps to step back.
- pypfilt.state.history_matrix(ctx)#
Allocate a particle history matrix of sufficient size to store an entire particle filter simulation.
- Parameters:
ctx – The simulation context.
- Returns:
A particle history matrix.
- Return type:
numpy.ndarray
- pypfilt.state.earlier_states(hist, ix, steps)#
Return the particle states at a previous time-step, ordered with respect to their current arrangement.
- Parameters:
hist – The particle history matrix.
ix – The current time-step index.
steps – The number of steps back in time.
- pypfilt.state.is_history_matrix(ctx, arr)#
Check whether the provided array includes all columns (including, e.g., the particle weights and parent indices).
- Parameters:
ctx – The simulation context.
arr – The array to check.
- Returns:
True
if the check is successful, otherwiseFalse
.
- pypfilt.state.require_history_matrix(ctx, arr)#
Check whether the provided array includes all columns (including, e.g., the particle weights and parent indices).
- Parameters:
ctx – The simulation context.
arr – The array to check.
- Raises:
ValueError – if the check fails.
- pypfilt.state.is_state_vec_matrix(ctx, arr)#
Check whether the provided array includes only the particle state vector columns.
- Parameters:
ctx – The simulation context.
arr – The array to check.
- Returns:
True
if the check is successful, otherwiseFalse
.
- pypfilt.state.require_state_vec_matrix(ctx, arr)#
Check whether the provided array includes only the particle state vector columns.
- Parameters:
ctx – The simulation context.
arr – The array to check.
- Raises:
ValueError – if the check fails.
- pypfilt.state.repack(svec, astype=<class 'float'>)#
Return a copy of the array
svec
where the fields are contiguous and viewed as a regular Numpy array ofastype
.- Raises:
ValueError – if
svec
contains any fields that are incompatible withastype
.- Examples:
>>> import numpy as np >>> from pypfilt.state import repack >>> xs = np.array( ... [(1.2, (2.2, 3.2)), (4.2, (5.2, 6.2))], ... dtype=[('x', float), ('y', float, 2)], ... ) >>> ys = repack(xs) >>> assert np.array_equal( ... ys, np.array([[1.2, 2.2, 3.2], [4.2, 5.2, 6.2]]) ... )