Пример #1
0
def test_partition_normalize():
    assert k_partition().normalize() == models.KPartition(
        models.Part((), (1, )),
        models.Part((0, ), (0, 4)),
        models.Part((2, ), (2, )),
        models.Part((6, ), (5, )),
    )
Пример #2
0
def test_mice_repr_str():
    mice = models.Mice(models.Mip(
        direction=None, mechanism=(), purview=(),
        unpartitioned_repertoire=None, partitioned_repertoire=None,
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    print(repr(mice))
    print(str(mice))
Пример #3
0
def k_partition(node_labels=None):
    return models.KPartition(
        models.Part((0,), (0, 4)),
        models.Part((), (1,)),
        models.Part((6,), (5,)),
        models.Part((2,), (2,)),
        node_labels=node_labels)
Пример #4
0
def tripartition(node_labels):
    return models.Tripartition(
        models.Part((0, ), (0, 4)),
        models.Part((), (1, )),
        models.Part((2, ), (2, )),
        node_labels=node_labels,
    )
Пример #5
0
def test_concept_hashing(s):
    mice = models.Mice(models.Mip(
        direction=None, mechanism=(0, 1, 2), purview=(0, 1, 2),
        unpartitioned_repertoire=None, partitioned_repertoire=None,
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    concept = models.Concept(
        mechanism=(0, 1, 2), cause=mice, effect=mice, subsystem=s, phi=0.0)
    hash(concept)
Пример #6
0
def test_cuts_can_have_node_labels(node_labels):
    models.NullCut((0, 1), node_labels=node_labels)
    models.Cut((0, ), (1, ), node_labels=node_labels)

    k_partition = models.KPartition(models.Part((0, 1), (0, )),
                                    models.Part((), (1, )),
                                    node_labels=node_labels)
    models.KCut(Direction.CAUSE, k_partition, node_labels=node_labels)
Пример #7
0
def test_concept_repr_str():
    mice = models.Mice(models.Mip(
        direction=None, mechanism=(), purview=(),
        unpartitioned_repertoire=None, partitioned_repertoire=None,
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    concept = models.Concept(
        mechanism=(), cause=mice, effect=mice,
        subsystem=None, phi=0.0)
    print(repr(concept))
    print(str(concept))
Пример #8
0
def test_json_deserialization(s, transition):
    objects = [
        Direction.CAUSE,
        s.network,  # Network
        s,  # Subsystem
        models.Bipartition(models.Part((0, ), ()), models.Part((1, ), (2, 3))),
        models.KPartition(models.Part((0, ), ()), models.Part((1, ), (2, 3))),
        models.Tripartition(models.Part((0, ), ()), models.Part((1, ), (2, 3)),
                            models.Part((3, ), (4, ))),
        models.Cut((0, ), (2, )),
        models.NullCut((0, 1)),
        models.KCut(
            Direction.CAUSE,
            models.KPartition(models.Part((0, ), ()), models.Part((1, ),
                                                                  (2, 3)))),
        s.concept((1, 2)),
        s.concept((1, )),
        compute.ces(s),
        compute.sia(s),
        transition,
        transition.find_actual_cause((0, ), (0, )),
        actual.account(transition),
        actual.sia(transition)
    ]
    for o in objects:
        loaded = jsonify.loads(jsonify.dumps(o))
        assert loaded == o
Пример #9
0
def test_concept_equality_one_subsystem_is_subset_of_another(s, subsys_n1n2):
    phi = 1.0
    mice = models.Mice(models.Mip(
        direction=None, mechanism=(), purview=(1, 2),
        unpartitioned_repertoire=(), partitioned_repertoire=(),
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    concept = models.Concept(mechanism=(2,), cause=mice, effect=mice,
                             subsystem=s, phi=phi)
    another = models.Concept(mechanism=(2,), cause=mice, effect=mice,
                             subsystem=subsys_n1n2, phi=phi)
    assert concept == another
Пример #10
0
def test_concept_hashing_one_subsystem_is_subset_of_another(s, subsys_n1n2):
    phi = 1.0
    mice = models.Mice(models.Mip(
        direction=None, mechanism=(), purview=(1, 2),
        unpartitioned_repertoire=(), partitioned_repertoire=(),
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    concept = models.Concept(mechanism=(2,), cause=mice, effect=mice,
                             subsystem=s, phi=phi)
    another = models.Concept(mechanism=(2,), cause=mice, effect=mice,
                             subsystem=subsys_n1n2, phi=phi)
    assert hash(concept) == hash(another)
    assert(len(set([concept, another])) == 1)
Пример #11
0
def test_concept_equality_repertoires(s):
    phi = 1.0
    mice1 = models.Mice(models.Mip(
        direction=None, mechanism=(), purview=(),
        unpartitioned_repertoire=np.array([1, 2]), partitioned_repertoire=(),
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    mice2 = models.Mice(models.Mip(
        direction=None, mechanism=(), purview=(),
        unpartitioned_repertoire=np.array([0, 0]), partitioned_repertoire=None,
        phi=0.0, partition=(models.Part((), ()), models.Part((), ()))))
    concept = models.Concept(mechanism=(), cause=mice1, effect=mice2,
                             subsystem=s, phi=phi)
    another = models.Concept(mechanism=(), cause=mice2, effect=mice1,
                             subsystem=s, phi=phi)
    assert concept != another
Пример #12
0
def test_ac_ex1_transition(transition):
    """Basic regression test for ac_ex1 example."""

    cause_account = actual.account(transition, Direction.CAUSE)
    assert len(cause_account) == 1
    cria = cause_account[0].ria

    assert cria.mechanism == (0,)
    assert cria.purview == (1,)
    assert cria.direction == Direction.CAUSE
    assert cria.state == (1, 0, 0)
    assert cria.alpha == 0.415037
    assert cria.probability == 0.66666666666666663
    assert cria.partitioned_probability == 0.5
    assert cria.partition == models.Bipartition(
        models.Part((), (1,)), models.Part((0,), ())
    )

    effect_account = actual.account(transition, Direction.EFFECT)
    assert len(effect_account) == 2
    eria0 = effect_account[0].ria
    eria1 = effect_account[1].ria

    assert eria0.mechanism == (1,)
    assert eria0.purview == (0,)
    assert eria0.direction == Direction.EFFECT
    assert eria0.state == (0, 1, 1)
    assert eria0.alpha == 0.415037
    assert eria0.probability == 1.0
    assert eria0.partitioned_probability == 0.75
    assert eria0.partition == models.Bipartition(
        models.Part((), (0,)), models.Part((1,), ())
    )

    assert eria1.mechanism == (2,)
    assert eria1.purview == (0,)
    assert eria1.direction == Direction.EFFECT
    assert eria1.state == (0, 1, 1)
    assert eria1.alpha == 0.415037
    assert eria1.probability == 1.0
    assert eria1.partitioned_probability == 0.75
    assert eria1.partition == models.Bipartition(
        models.Part((), (0,)), models.Part((2,), ())
    )
Пример #13
0
def bipartition(node_labels):
    return models.Bipartition(models.Part((0, ), (0, 4)),
                              models.Part((), (1, )),
                              node_labels=node_labels)
Пример #14
0
def k_partition():
    return models.KPartition(models.Part((0, ), (0, 4)), models.Part((),
                                                                     (1, )),
                             models.Part((6, ), (5, )),
                             models.Part((2, ), (2, )))
Пример #15
0
def tripartition():
    return models.Tripartition(models.Part((0, ), (0, 4)),
                               models.Part((), (1, )), models.Part((2, ),
                                                                   (2, )))
Пример #16
0
def bipartition():
    return models.Bipartition(models.Part((0, ), (0, 4)), models.Part((),
                                                                      (1, )))