def test_do_not_cache_phi_zero_mice(): s = examples.basic_subsystem() mechanism = () # zero phi mice = s.find_mice(Direction.CAUSE, mechanism) assert mice.phi == 0 # don't cache anything because mice.phi == 0 assert s._mice_cache.size() == 0
def test_do_not_cache_phi_zero_mice(): s = examples.basic_subsystem() mechanism = () # zero phi mice = s.find_mice('past', mechanism) assert mice.phi == 0 # don't cache anything because mice.phi == 0 assert s._mice_cache.size() == 0
def test_inherited_cache_must_come_from_uncut_subsystem(redis_cache): s = examples.basic_subsystem() cut_s = Subsystem(s.network, s.state, s.node_indices, cut=models.Cut((0, 2), (1, ))) with pytest.raises(ValueError): cache.MICECache(s, cut_s._mice_cache)
def test_inherited_mice_cache_keeps_unaffected_mice(redis_cache): """Cached MICE are saved from the parent cache if both the mechanism and the relevant connections are not cut.""" s = examples.basic_subsystem() mechanism = (1,) mice = s.find_mice(Direction.CAUSE, mechanism) assert s._mice_cache.size() == 1 # cached assert mice.purview == (2,) # Does not cut from 0 -> 1 or split mechanism cut = models.Cut((0, 1), (2,)) cut_s = Subsystem(s.network, s.state, s.node_indices, cut=cut, mice_cache=s._mice_cache) key = cut_s._mice_cache.key(Direction.CAUSE, mechanism) assert cut_s._mice_cache.get(key) == mice
def test_cut_relevant_connections_mice_is_not_reusable(redis_cache): """If relevant connections are cut, cached mice are not usable when a cache is built from a parent cache.""" s = examples.basic_subsystem() mechanism = (1,) mice = s.find_mice(Direction.CAUSE, mechanism) assert s._mice_cache.size() == 1 # cached assert mice.purview == (2,) # Cuts connections from 2 -> 1 cut = models.Cut((0, 2), (1,)) cut_s = Subsystem(s.network, s.state, s.node_indices, cut=cut, mice_cache=s._mice_cache) key = cut_s._mice_cache.key(Direction.CAUSE, mechanism) assert cut_s._mice_cache.get(key) is None
def test_split_mechanism_mice_is_not_reusable(redis_cache): """If mechanism is split, then cached mice are not usable when a cache is built from a parent cache.""" s = examples.basic_subsystem() mechanism = (0, 1) mice = s.find_mice(Direction.CAUSE, mechanism) assert s._mice_cache.size() == 1 # cached assert mice.purview == (1, 2) # Splits mechanism, but not relevant connections: cut = models.Cut((0,), (1, 2)) cut_s = Subsystem(s.network, s.state, s.node_indices, cut=cut, mice_cache=s._mice_cache) key = cut_s._mice_cache.key(Direction.CAUSE, mechanism) assert cut_s._mice_cache.get(key) is None
def test_inherited_mice_cache_keeps_unaffected_mice(redis_cache, flush_redis): """Cached Mice are saved from the parent cache if both the mechanism and the relevant connections are not cut.""" s = examples.basic_subsystem() mechanism = (1, ) mice = s.find_mice('past', mechanism) assert s._mice_cache.size() == 1 # cached assert mice.purview == (2, ) # Does not cut from 0 -> 1 or split mechanism cut = models.Cut((0, 1), (2, )) cut_s = Subsystem(s.network, s.state, s.node_indices, cut=cut, mice_cache=s._mice_cache) key = cut_s._mice_cache.key('past', mechanism) assert cut_s._mice_cache.get(key) == mice
def test_cut_relevant_connections_mice_is_not_reusable(redis_cache): """If relevant connections are cut, cached mice are not usable when a cache is built from a parent cache.""" s = examples.basic_subsystem() mechanism = (1, ) mice = s.find_mice(Direction.CAUSE, mechanism) assert s._mice_cache.size() == 1 # cached assert mice.purview == (2, ) # Cuts connections from 2 -> 1 cut = models.Cut((0, 2), (1, )) cut_s = Subsystem(s.network, s.state, s.node_indices, cut=cut, mice_cache=s._mice_cache) key = cut_s._mice_cache.key(Direction.CAUSE, mechanism) assert cut_s._mice_cache.get(key) is None
def test_split_mechanism_mice_is_not_reusable(redis_cache, flush_redis): """If mechanism is split, then cached mice are not usable when a cache is built from a parent cache.""" s = examples.basic_subsystem() mechanism = (0, 1) mice = s.find_mice('past', mechanism) assert s._mice_cache.size() == 1 # cached assert mice.purview == (1, 2) # Splits mechanism, but not relevant connections: cut = models.Cut((0, ), (1, 2)) cut_s = Subsystem(s.network, s.state, s.node_indices, cut=cut, mice_cache=s._mice_cache) key = cut_s._mice_cache.key('past', mechanism) assert cut_s._mice_cache.get(key) is None
def setup(self, mode, network): if network == 'basic': self.subsys = examples.basic_subsystem() elif network == 'rule154': network = examples.rule154_network() state = (1,) * 5 self.subsys = Subsystem(network, state, network.node_indices) elif network == 'fig16': network = examples.fig16() state = (0,) * 7 self.subsys = Subsystem(network, state, network.node_indices) else: raise ValueError(network) if mode == 'parallel': config.PARALLEL_CONCEPT_EVALUATION = True elif mode == 'sequential': config.PARALLEL_CONCEPT_EVALUATION = False else: raise ValueError(mode)
def setup(self, mode, network): if network == 'basic': self.subsys = examples.basic_subsystem() elif network == 'rule154': network = examples.rule154_network() state = (1,) * 5 self.subsys = Subsystem(network, state, network.node_indices) elif network == 'fig16': network = examples.fig16() state = (0,) * 7 self.subsys = Subsystem(network, state, network.node_indices) else: raise ValueError(network) if mode == 'parallel': config.PARALLEL_CONCEPT_EVALUATION = True elif mode == 'sequential': config.PARALLEL_CONCEPT_EVALUATION = False else: raise ValueError(mode)
def test_mice_cache_respects_cache_memory_limits(): s = examples.basic_subsystem() c = cache.MiceCache(s) mice = mock.Mock(phi=1) # dummy Mice c.set(c.key('past', ()), mice) assert c.size() == 0
def test_inherited_cache_must_come_from_uncut_subsystem(redis_cache): s = examples.basic_subsystem() cut_s = Subsystem(s.network, s.state, s.node_indices, cut=models.Cut((0, 2), (1,))) with pytest.raises(ValueError): cache.MICECache(s, cut_s._mice_cache)
def test_mice_cache(redis_cache, flush_redis): s = examples.basic_subsystem() mechanism = (1, ) # has a core cause mice = s.find_mice('past', mechanism) key = s._mice_cache.key('past', mechanism) assert s._mice_cache.get(key) == mice
def test_mice_cache_respects_cache_memory_limits(): s = examples.basic_subsystem() c = cache.MICECache(s) mice = mock.Mock(phi=1) # dummy MICE c.set(c.key(Direction.CAUSE, ()), mice) assert c.size() == 0
def test_mice_cache(redis_cache): s = examples.basic_subsystem() mechanism = (1,) # has a MIC mice = s.find_mice(Direction.CAUSE, mechanism) key = s._mice_cache.key(Direction.CAUSE, mechanism) assert s._mice_cache.get(key) == mice
def test_mice_cache(redis_cache, flush_redis): s = examples.basic_subsystem() mechanism = (1,) # has a core cause mice = s.find_mice('past', mechanism) key = s._mice_cache.key('past', mechanism) assert s._mice_cache.get(key) == mice
def test_mice_cache(redis_cache): s = examples.basic_subsystem() mechanism = (1, ) # has a MIC mice = s.find_mice(Direction.CAUSE, mechanism) key = s._mice_cache.key(Direction.CAUSE, mechanism) assert s._mice_cache.get(key) == mice
def test_mice_cache_respects_cache_memory_limits(): s = examples.basic_subsystem() c = cache.MiceCache(s) mice = mock.Mock(phi=1) # dummy Mice c.set(c.key('past', ()), mice) assert c.size() == 0
def test_mice_cache_respects_cache_memory_limits(): s = examples.basic_subsystem() c = cache.MICECache(s) mice = mock.Mock(phi=1) # dummy MICE c.set(c.key(Direction.CAUSE, ()), mice) assert c.size() == 0