poulet_py.tools.generators module#

generate_stimulus_sequence(n, *, stimuli_options, mode='random')[source]#

Generate a list of trials with specified stimuli distribution.

Parameters:
  • n (int) – Number of trials to generate. Must be divisible by the number of stimuli options when mode is ‘random’ or when multiple stimuli are provided in ‘fixed’ mode.

  • stimuli_options (List[Any]) – List of possible stimulus values. For a single stimulus, all trials will use it. For multiple stimuli, distribution depends on mode.

  • mode ({'random', 'fixed'}, optional) – Distribution mode: - ‘random’: Shuffled trials with equal representation of each stimulus - ‘fixed’: Trials use stimuli in sequence (or single stimulus repeated) (default: ‘random’)

Returns:

Generated list of stimuli for each trial

Return type:

List[Any]

Raises:

ValueError – If n is not divisible by number of stimuli options (for relevant modes), or if mode is invalid.

Notes

  • For ‘random’ mode with multiple stimuli, each appears exactly

    n//len(stimuli_options) times.

  • For ‘fixed’ mode with multiple stimuli, stimuli are repeated in sequence

    until n is reached.

  • For ‘fixed’ mode with single stimulus, that stimulus is repeated n times.

Examples

>>> generate_trials(4, stimuli_options=[1, 2], mode="random")
[2, 1, 2, 1]  # Random order with equal representation
>>> generate_trials(3, stimuli_options=[5], mode="fixed")
[5, 5, 5]