>>> from minimock import Mock
Five dimensional Numpy array that acts as the simulation data core, stored as mx attribute.
Dimensions:
The data matrix is accompanied with three auxiliary matrices: omap, emap and dmx.
omap (object map) is a four dimensional boolean Numpy array, having dimensions:
The omap values indicate the object existence for the particular index combination in the data matrix; i.e., if omap[0, 0, 1, 3] has the value of False, the values at mx[0, 0, 1, 3, :] are not data but regarded as random data. If omap[0, 0, 1, 3] has the value of True, however, the values at mx[0, 0, 1, 3, :] are the attribute values for the object 3 at data level 1 at data branch 0 and iteration 0.
emap (evaluation map) is a five dimensional boolean Numpy array, having dimensions:
The emap values indicate the current model chain task evaluation status at the given model chain depth.
dmx (date matrix) contains current date for each simulation unit. Date matrix is a one dimensional datetime array:
init_dmx (initial date matrix) contains simulation starting date for each simulation unit. Initial date matrix has same shape as date matrix
Initialize a data matrix:
>>> from simo.matrix.matrix import Matrix
>>> sim = Mock('simulator')
>>> d = Matrix(1, 2, 10, 5, sim, 0)
>>> d.shape
(1, 1, 2, 0, 10)
>>> d.branches
1
>>> d.objects
0
>>> d.omap
array([], shape=(1, 1, 2, 0), dtype=bool)
>>> d.emap
array([], shape=(1, 1, 2, 5, 0), dtype=bool)
>>> d.dmx
array([], dtype=object)
>>> d.init_dmx
array([], dtype=object)
>>> d.errormx
array([], shape=(1, 1, 0), dtype=int32)
Modify data matrix by increasing array size along given axis:
>>> d.modify_matrix(0, 1)
Called simulator.add_error(
'Bad axis (expected 1 or 3, got 0), the size of the matrix can not be modified.',
None,
None)
False
>>> d.modify_matrix(1, 1)
True
>>> d.branches
2
>>> d.objects
0
>>> d.shape
(1, 2, 2, 0, 10)
>>> d.modify_matrix(3, 5)
True
>>> d.branches
2
>>> d.objects
5
>>> d.shape
(1, 2, 2, 5, 10)
>>> d.modify_matrix(3, 5)
True
>>> d.branches
2
>>> d.objects
10
>>> d.shape
(1, 2, 2, 10, 10)
>>> d.modify_matrix(1, 2)
True
>>> d.branches
4
>>> d.objects
10
>>> d.shape
(1, 4, 2, 10, 10)
>>> d.omap.shape
(1, 4, 2, 10)
>>> d.emap.shape
(1, 4, 2, 5, 10)
>>> d.omap[0, 3, 1, 9]
False
>>> d.emap.shape
(1, 4, 2, 5, 10)
>>> d.dmx.shape
(10,)
>>> d.branches
4
>>> d.objects
10
>>> d.shape
(1, 4, 2, 10, 10)
>>> d.dmx.shape
(10,)
>>> d.init_dmx.shape
(10,)