def test_aligned_none():
    dg0 = DismodGroups()
    dg0.rate["iota"] = 7
    dg0.random_effect[("iota", 2)] = 9
    dg0.random_effect[("iota", 3)] = 9

    dg1 = DismodGroups()
    dg1.rate["iota"] = 7
    dg1.random_effect[("iota", None)] = 9

    left = dg0.check_alignment(dg1)
    assert not left
def test_no_do():
    """Demonstrates you can't assign the wrong way."""
    dg = DismodGroups()
    # Would assign to a nonexistent group.
    with pytest.raises(AttributeError):
        dg.rates["iota"] = 7

    # Would overwrite a whole group, creating a shadow dictionary.
    with pytest.raises(AttributeError):
        dg.random_effect = dict()

    # But you can still assign other things (in case of subclassing)
    dg.foo = "bar"
def test_create():
    dg = DismodGroups()
    dg.rate["iota"] = 7
    assert dg.rate["iota"] == 7
    assert dg["rate"]["iota"] == 7

    dg.random_effect[("traffic", "omega")] = 42
    assert dg.random_effect[("traffic", "omega")] == 42
    assert dg["random_effect"][("traffic", "omega")] == 42

    dg["alpha"][("traffic", "rho")] = 63
    assert dg.alpha[("traffic", "rho")] == 63
    assert dg["alpha"][("traffic", "rho")] == 63

    assert id(dg.data["rate"]) == id(dg.rate)
Esempio n. 4
0
 def var_from_mean(self):
     # Call the mean mu because mean is a function.
     mu = DismodGroups()
     for group_name, group in self.items():
         if group_name != "random_effect":
             for key, grid in group.items():
                 mu[group_name][key] = grid.var_from_mean()
         else:
             for key, grid in group.items():
                 # One Random Effect grid creates many child vars.
                 if key[1] is None:
                     for child in self.child_location:
                         mu[group_name][(key[0],
                                         child)] = grid.var_from_mean()
                 else:
                     mu[group_name][key] = grid.var_from_mean()
     return mu
def test_unaligned_more_than_one():
    dg0 = DismodGroups()
    dg0.rate["iota"] = 7
    dg0.random_effect[("iota", 2)] = 9
    dg0.random_effect[("iota", 3)] = 9
    dg0.random_effect[("rho", 2)] = 7
    dg0.random_effect[("rho", 3)] = 7
    dg0.random_effect[("omega", None)] = 14
    dg0.random_effect[("chi", None)] = 20

    dg1 = DismodGroups()
    dg1.rate["iota"] = 7
    dg1.random_effect[("iota", None)] = 9
    dg1.random_effect[("rho", 2)] = 7
    dg1.random_effect[("rho", 3)] = 7
    dg1.random_effect[("omega", None)] = 9

    left = dg0.check_alignment(dg1)
    assert left is not None
def test_misaligned():
    dg0 = DismodGroups()
    dg0.rate["iota"] = 7
    dg0.gamma[("traffic", 2)] = 9

    dg1 = DismodGroups()
    dg1.rate["iota"] = 7
    dg1.gamma[("traffic", 2)] = 9

    left = dg0.check_alignment(dg1)
    assert not left

    dg1.alpha[("sdi", 7)] = 42
    right = dg0.check_alignment(dg1)
    assert right is not None