egttools.numerical.MLSTraulsen

class MLSTraulsen(self: egttools.numerical.numerical_.MLSTraulsen, nb_generations: SupportsInt | SupportsIndex, nb_strategies: SupportsInt | SupportsIndex, group_size: SupportsInt | SupportsIndex, nb_groups: SupportsInt | SupportsIndex, w: SupportsFloat | SupportsIndex, strategies_freq: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]'], payoff_matrix: Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]', 'flags.c_contiguous'])

Bases: pybind11_object

Multi-level selection following Traulsen & Nowak (2006).

A population of m groups each of maximum size n. In each step an individual is selected proportional to its fitness and reproduces; if the group exceeds n it either splits (probability q) or ejects a random member (probability 1-q). Migration probability lambda moves offspring to a randomly chosen other group.

Parameters:
  • nb_generations (int) – Maximum number of Moran steps per run.

  • nb_strategies (int) – Number of distinct strategies.

  • group_size (int) – Maximum group capacity n (must be >= 4).

  • nb_groups (int) – Number of groups m.

  • w (float) – Intensity of selection.

  • strategies_freq (np.ndarray) – Initial frequency of each strategy (must sum to 1).

  • payoff_matrix (np.ndarray) – Square (nb_strategies x nb_strategies) payoff matrix.

Methods

evolve

Overloaded function.

fixation_probability

Overloaded function.

gradient_of_selection

Estimate gradient of selection (T+ - T-) for each population configuration.

Attributes

__init__(self: egttools.numerical.numerical_.MLSTraulsen, nb_generations: SupportsInt | SupportsIndex, nb_strategies: SupportsInt | SupportsIndex, group_size: SupportsInt | SupportsIndex, nb_groups: SupportsInt | SupportsIndex, w: SupportsFloat | SupportsIndex, strategies_freq: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]'], payoff_matrix: Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]', 'flags.c_contiguous']) None
__new__(**kwargs)
__repr__(self: egttools.numerical.numerical_.MLSTraulsen) str
evolve(*args, **kwargs)

Overloaded function.

  1. evolve(self: egttools.numerical.numerical_.MLSTraulsen, q: typing.SupportsFloat | typing.SupportsIndex, w: typing.SupportsFloat | typing.SupportsIndex, init_state: typing.Annotated[numpy.typing.NDArray[numpy.uint64], “[m, 1]”]) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”]

Run one Moran simulation and return the final strategy frequencies.

  1. evolve(self: egttools.numerical.numerical_.MLSTraulsen, q: typing.SupportsFloat | typing.SupportsIndex, w: typing.SupportsFloat | typing.SupportsIndex, lambda: typing.SupportsFloat | typing.SupportsIndex, init_state: typing.Annotated[numpy.typing.NDArray[numpy.uint64], “[m, 1]”]) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”]

Run one Moran simulation with migration and return the final strategy frequencies.

fixation_probability(*args, **kwargs)

Overloaded function.

  1. fixation_probability(self: egttools.numerical.numerical_.MLSTraulsen, invader: typing.SupportsInt | typing.SupportsIndex, resident: typing.SupportsInt | typing.SupportsIndex, nb_runs: typing.SupportsInt | typing.SupportsIndex, q: typing.SupportsFloat | typing.SupportsIndex, w: typing.SupportsFloat | typing.SupportsIndex) -> float

Estimate fixation probability of invader over resident (no migration).

  1. fixation_probability(self: egttools.numerical.numerical_.MLSTraulsen, invader: typing.SupportsInt | typing.SupportsIndex, resident: typing.SupportsInt | typing.SupportsIndex, nb_runs: typing.SupportsInt | typing.SupportsIndex, q: typing.SupportsFloat | typing.SupportsIndex, lambda: typing.SupportsFloat | typing.SupportsIndex, w: typing.SupportsFloat | typing.SupportsIndex) -> float

Estimate fixation probability of invader over resident (with migration).

gradient_of_selection(self: egttools.numerical.numerical_.MLSTraulsen, invader: SupportsInt | SupportsIndex, resident: SupportsInt | SupportsIndex, nb_runs: SupportsInt | SupportsIndex, w: SupportsFloat | SupportsIndex, q: SupportsFloat | SupportsIndex = 0.0) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

Estimate gradient of selection (T+ - T-) for each population configuration.

__annotations__ = {}
property generations
property group_size
property max_pop_size
property nb_groups
property nb_strategies
property payoff_matrix
property selection_intensity