larvaworld.lib.model.modules.intermitter
Classes
Intermitter module for run/pause/feed behavioral state control. |
|
Offline intermitter with fixed-frequency stride/feed detection. |
|
Branch intermitter with critical dynamics for pause/run generation. |
|
Fitted intermitter using reference dataset parameters. |
Functions
|
Compute polynomial fit of EEB vs mean feeding frequency. |
|
Compute time fractions for behavioral states across EEB range. |
Module Contents
- class larvaworld.lib.model.modules.intermitter.Intermitter(**kwargs: Any)
Bases:
larvaworld.lib.model.modules.oscillator.TimerIntermitter module for run/pause/feed behavioral state control.
Manages transitions between locomotor states (running, pausing, feeding) using stochastic bout generators. Controls exploitation-exploration balance (EEB) for feeding decisions and tracks behavioral statistics.
- Attributes:
EEB: Exploitation-exploration balance (0=exploit, 1=explore) EEB_decay: Exponential decay of EEB when no food detected crawl_freq: Default crawling frequency (Hz) feed_freq: Default feeding frequency (Hz) run_mode: Generation mode (‘stridechain’ or ‘exec’) feeder_reoccurence_rate: Feed reoccurrence probability feed_bouts: Whether feeding epochs are generated pause_dist: Temporal distribution params for pause epochs stridechain_dist: Stride-number distribution for run epochs run_dist: Temporal distribution for run epochs cur_state: Current behavioral state (‘exec’, ‘pause’, or ‘feed’)
- Example:
>>> intermitter = Intermitter(EEB=0.3, crawl_freq=1.42, feed_freq=2.0) >>> state = intermitter.step(stride_completed=True, on_food=False)
- EEB
- EEB_decay
- crawl_freq
- feed_freq
- run_mode
- feeder_reoccurence_rate
- feed_bouts
- pause_dist
- stridechain_dist
- run_dist
- cur_state = None
- pause_generator
- Nstrides = 0
- Nstridechains = 0
- Nruns = 0
- Npauses = 0
- Nfeeds = 0
- Nfeedchains = 0
- Nfeeds_success = 0
- Nfeeds_fail = 0
- base_EEB
- exp_Nstrides = None
- cur_Nstrides = 0
- exp_Trun = None
- exp_Tpause = None
- cur_Nfeeds = None
- stridechain_lengths = []
- stridechain_durs = []
- feedchain_lengths = []
- feedchain_durs = []
- pause_durs = []
- run_durs = []
- feed_durs = []
- stride_durs = []
- property pause_completed: bool
- property run_completed: bool
- property stridechain_completed: bool
- alternate_crawlNpause(stride_completed: bool = False) None
- property feed_repeated: bool
- alternate_exploreNexploit(feed_motion: bool = False, on_food: bool = False) None
- register(bout: str | None = None) None
- update_state(stride_completed: bool = False, feed_motion: bool = False, on_food: bool = False) str | None
- step(**kwargs: Any) str | None
- generate_stridechain() int
- generate_run() float
- interrupt_locomotion() None
- trigger_locomotion(force: bool = False) None
- generate_pause() float
- build_dict() dict[str, Any]
- save_dict(path: str | None = None, dic: dict[str, Any] | None = None) None
- property active_bouts: tuple[int | None, int | None, float | None, float | None]
- property mean_feed_freq: float
- class larvaworld.lib.model.modules.intermitter.OfflineIntermitter(**kwargs: Any)
Bases:
IntermitterOffline intermitter with fixed-frequency stride/feed detection.
Extends Intermitter with tick-based stride and feed detection at fixed intervals (offline mode, no real-time physics).
- Example:
>>> offline_int = OfflineIntermitter(EEB=0.5, crawl_freq=1.5, dt=0.1) >>> state = offline_int.step(on_food=True)
- crawl_ticks
- step(stride_completed: bool | None = None, feed_motion: bool | None = None, on_food: bool = True) str | None
- class larvaworld.lib.model.modules.intermitter.BranchIntermitter(**kwargs: Any)
Bases:
IntermitterBranch intermitter with critical dynamics for pause/run generation.
Extends Intermitter using exponential (exp_bout) and critical (critical_bout) distributions for more realistic behavioral branching. No feeding bouts in this mode.
- Attributes:
feed_bouts: Fixed to False (no feeding) beta: Beta coefficient for exponential bout distribution c: Critical parameter for criticality function sigma: ISING branching coefficient
- Example:
>>> branch_int = BranchIntermitter(beta=4.7, c=0.7, sigma=1.0, dt=0.1) >>> state = branch_int.step(stride_completed=True)
- feed_bouts
- beta
- c
- sigma
- generate_stridechain() int
- generate_pause() float
- class larvaworld.lib.model.modules.intermitter.FittedIntermitter(refID: str, **kwargs: Any)
Bases:
OfflineIntermitterFitted intermitter using reference dataset parameters.
Constructs OfflineIntermitter from stored reference dataset configurations (crawl/feed frequencies, bout distributions).
- Args:
refID: Reference dataset ID to load intermitter config from **kwargs: Override parameters (optional)
- Example:
>>> fitted_int = FittedIntermitter(refID='exploration') >>> state = fitted_int.step(on_food=False)
- larvaworld.lib.model.modules.intermitter.get_EEB_poly1d(max_dur: float = 60 * 60, **kws: Any) numpy.poly1d
Compute polynomial fit of EEB vs mean feeding frequency.
Simulates intermitter across EEB range (0-1) and fits polynomial to map feeding frequency back to EEB parameter.
- Args:
max_dur: Maximum simulation duration (seconds) **kws: Intermitter configuration keyword arguments
- Returns:
Polynomial (degree 5) mapping feed frequency to EEB
- Example:
>>> poly = get_EEB_poly1d(crawl_freq=1.42, feed_freq=2.0, dt=0.1) >>> eeb_estimate = poly(0.15) # For feed_freq=0.15
- larvaworld.lib.model.modules.intermitter.get_EEB_time_fractions(refID: str | None = None, dt: float | None = None, max_dur: float = 60 * 60, **kwargs: Any) pandas.DataFrame
Compute time fractions for behavioral states across EEB range.
Simulates intermitter across EEB values (0-1) and computes duration ratios for crawl/pause/feed states. Returns DataFrame for analysis and visualization.
- Args:
refID: Reference dataset ID for intermitter config (optional) dt: Time step override (optional) max_dur: Maximum simulation duration (seconds) **kwargs: Intermitter configuration if refID not provided
- Returns:
DataFrame with EEB values and corresponding time fraction ratios
- Example:
>>> df = get_EEB_time_fractions(refID='exploration', dt=0.1) >>> print(df[['EEB', 'crawl ratio', 'pause ratio']])