Exemple #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, )),
    )
Exemple #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))
Exemple #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)
Exemple #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,
    )
Exemple #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)
Exemple #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)
Exemple #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))
Exemple #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
Exemple #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
Exemple #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)
Exemple #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
Exemple #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,), ())
    )
Exemple #13
0
def bipartition(node_labels):
    return models.Bipartition(models.Part((0, ), (0, 4)),
                              models.Part((), (1, )),
                              node_labels=node_labels)
Exemple #14
0
def k_partition():
    return models.KPartition(models.Part((0, ), (0, 4)), models.Part((),
                                                                     (1, )),
                             models.Part((6, ), (5, )),
                             models.Part((2, ), (2, )))
Exemple #15
0
def tripartition():
    return models.Tripartition(models.Part((0, ), (0, 4)),
                               models.Part((), (1, )), models.Part((2, ),
                                                                   (2, )))
Exemple #16
0
def bipartition():
    return models.Bipartition(models.Part((0, ), (0, 4)), models.Part((),
                                                                      (1, )))