Source code for stonesoup.initiator.wrapper

import collections
from .base import Initiator
from ..base import Property


[docs] class StatesLengthLimiter(Initiator): """Wrapper that defines the length of track history stored in memory By default Stone Soup stores the track history for all tracks in memory. If running Stone Soup on very large data your application may run out of memory and the process terminated - often by the operating system. This wrapper converts the states space list to a collections.deque data type with the maximum length specified. .. code-block:: python from stonesoup.initiator.wrapper import StatesLengthLimiter initiator = StatesLengthLimiter(<initiator model>, max_length) """ initiator: Initiator = Property(doc="Stone Soup Initiator") max_length: int = Property(doc="Length of track history to be stored in memory")
[docs] def initiate(self, *args, **kwargs): tracks = self.initiator.initiate(*args, **kwargs) for track in tracks: track.states = collections.deque(track.states, self.max_length) track.metadatas = collections.deque(track.metadatas, self.max_length) return tracks