chain_simulator.assembly module#

Transition matrix assembly functions.

This module provides functionality for assembling transition matrices. Resulting transition matrices are built using sparse formats, e.g. the Coordinate (COO) format.

chain_simulator.assembly.array_assembler(state_count, probability_calculator)#

Assemble transition matrix using a state change probability generator.

Assemble a transition matrix in SciPy Coordinate (COO) array format using a state change probability generator. The assembler iterates over the generator, collects it’s output and turns this into a SciPy COO array.

Parameters:
state_countint

How many states the probability generator yields.

probability_calculatorIterator[Tuple[int, int, _T]]

Generator object yielding state change probabilities.

Returns:
coo_array

Transition matrix in SciPy COO array format.

Parameters:
  • state_count (int) –

  • probability_calculator (Iterator[Tuple[int, int, _T]]) –

Return type:

coo_array

See also

chain_simulator.simulation.state_vector_processor

Simulate a Markov chain and return intermediate/final state vector(s).

Notes

This assembler iterates over the probability generator, collects its output and turns this into a SciPy COO array. The generator should yield the following items:

  • row index of probability (int).

  • column index of probability (int).

  • actual probability itself (int or float).

Examples

Assemble a 3 by 3 transition matrix using a dummy generator, yielding probabilities along a diagonal:

>>> def dummy_generator():
...     for index in range(3):
...         yield index, index, index + 1
>>> transition_matrix = array_assembler(3, dummy_generator())
>>> transition_matrix  
<3x3 sparse array of type '<class 'numpy.int32'>'
    with 3 stored elements in COOrdinate format>
>>> transition_matrix.toarray()
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])