コード例 #1
0
ファイル: test_resolver.py プロジェクト: ocefpaf/formulae
def test_term_interaction():
    desc = model_description("x:y")
    comp = ModelTerms(InterceptTerm(), InteractionTerm(Term("x", "x"), Term("y", "y")))
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x:5")

    desc = model_description("x:f(x)")
    comp = ModelTerms(
        InterceptTerm(),
        InteractionTerm(
            Term("x", "x"),
            CallTerm(
                Call(
                    Variable(Token("IDENTIFIER", "f")), [Variable(Token("IDENTIFIER", "x"))], False
                )
            ),
        ),
    )
    assert desc == comp

    desc = model_description("x:y:z")
    comp = ModelTerms(
        InterceptTerm(), InteractionTerm(Term("x", "x"), Term("y", "y"), Term("z", "z"))
    )
    assert desc == comp

    desc = model_description("x:y*z")
    comp = ModelTerms(
        InterceptTerm(),
        InteractionTerm(Term("x", "x"), Term("y", "y")),
        Term("z", "z"),
        InteractionTerm(Term("x", "x"), Term("y", "y"), Term("z", "z")),
    )
    assert desc == comp

    # Note the parenthesis, here `*` resolves earlier than `:`
    desc = model_description("x:(y*z)")
    comp = ModelTerms(
        InterceptTerm(),
        InteractionTerm(Term("x", "x"), Term("y", "y")),
        InteractionTerm(Term("x", "x"), Term("z", "z")),
        InteractionTerm(Term("x", "x"), Term("y", "y"), Term("z", "z")),
    )
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x:(1|g)")

    desc = model_description("x:(z + y)")
    comp = ModelTerms(
        InterceptTerm(),
        InteractionTerm(Term("x", "x"), Term("z", "z")),
        InteractionTerm(Term("x", "x"), Term("y", "y")),
    )
    assert desc == comp
コード例 #2
0
def test_term():
    desc = model_description("x")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp

    desc = model_description("term_name_abc")
    comp = Model(Intercept(), Term(Variable("term_name_abc")))
    assert desc == comp

    desc = model_description("`$%!N4m3##!! NNN`")
    comp = Model(Intercept(), Term(Variable("$%!N4m3##!! NNN")))
    assert desc == comp
コード例 #3
0
ファイル: test_resolver.py プロジェクト: ocefpaf/formulae
def test_term():
    desc = model_description("x")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp

    desc = model_description("term_name_abc")
    comp = ModelTerms(InterceptTerm(), Term("term_name_abc", "term_name_abc"))
    assert desc == comp

    desc = model_description("`$%!N4m3##!! NNN`")
    comp = ModelTerms(InterceptTerm(), Term("$%!N4m3##!! NNN", "$%!N4m3##!! NNN"))
    assert desc == comp
コード例 #4
0
def test_term_interaction():
    desc = model_description("x:y")
    comp = Model(Intercept(), Term(Variable("x"), Variable("y")))
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x:5")

    desc = model_description("x:f(x)")
    comp = Model(
        Intercept(),
        Term(Variable("x"), Call(LazyCall("f", [LazyVariable("x")], {}))),
    )
    assert desc == comp

    desc = model_description("x:y:z")
    comp = Model(Intercept(), Term(Variable("x"), Variable("y"),
                                   Variable("z")))
    assert desc == comp

    desc = model_description("x:y*z")
    comp = Model(
        Intercept(),
        Term(Variable("x"), Variable("y")),
        Term(Variable("z")),
        Term(Variable("x"), Variable("y"), Variable("z")),
    )
    assert desc == comp

    # Note the parenthesis, here `*` resolves earlier than `:`
    desc = model_description("x:(y*z)")
    comp = Model(
        Intercept(),
        Term(Variable("x"), Variable("y")),
        Term(Variable("x"), Variable("z")),
        Term(Variable("x"), Variable("y"), Variable("z")),
    )
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x:(1|g)")

    desc = model_description("x:(z + y)")
    comp = Model(
        Intercept(),
        Term(Variable("x"), Variable("z")),
        Term(Variable("x"), Variable("y")),
    )
    assert desc == comp
コード例 #5
0
def test_subset_index():

    desc = model_description("threecats['b'] ~ continuous + dummy")
    comp = Model(
        Intercept(),
        Term(Variable("continuous")),
        Term(Variable("dummy")),
    )
    comp.add_response(Response(Term(Variable("threecats", level="b"))))
    assert desc == comp
コード例 #6
0
def test_term_add():
    desc = model_description("x + y")
    comp = Model(Intercept(), Term(Variable("x")), Term(Variable("y")))
    assert desc == comp

    desc = model_description("x + 5")
    comp = Model(Intercept(), Term(Variable("x")), Term(Variable(5)))
    assert desc == comp

    desc = model_description("x + f(x)")
    comp = Model(
        Intercept(),
        Term(Variable("x")),
        Term(Call(LazyCall("f", [LazyVariable("x")], {}))),
    )
    assert desc == comp

    desc = model_description("x + y:z")
    comp = Model(Intercept(), Term(Variable("x")),
                 Term(Variable("y"), Variable("z")))
    assert desc == comp

    desc = model_description("x + (1|g)")
    comp = Model(Intercept(), Term(Variable("x")),
                 GroupSpecificTerm(Intercept(), Term(Variable("g"))))
    assert desc == comp

    desc = model_description("x + (z + y)")
    comp = Model(Intercept(), Term(Variable("x")), Term(Variable("z")),
                 Term(Variable("y")))
    assert desc == comp
コード例 #7
0
ファイル: test_resolver.py プロジェクト: ocefpaf/formulae
def test_term_add():
    desc = model_description("x + y")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"), Term("y", "y"))
    assert desc == comp

    desc = model_description("x + 5")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"), LiteralTerm(5))
    assert desc == comp

    desc = model_description("x + f(x)")
    comp = ModelTerms(
        InterceptTerm(),
        Term("x", "x"),
        CallTerm(
            Call(Variable(Token("IDENTIFIER", "f")), [Variable(Token("IDENTIFIER", "x"))], False)
        ),
    )
    assert desc == comp

    desc = model_description("x + y:z")
    comp = ModelTerms(
        InterceptTerm(), Term("x", "x"), InteractionTerm(Term("y", "y"), Term("z", "z"))
    )
    assert desc == comp

    desc = model_description("x + (1|g)")
    comp = ModelTerms(
        InterceptTerm(), Term("x", "x"), GroupSpecTerm(InterceptTerm(), Term("g", "g"))
    )
    assert desc == comp

    desc = model_description("x + (z + y)")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"), Term("z", "z"), Term("y", "y"))
    assert desc == comp
コード例 #8
0
def test_group_specific_interactions():

    desc = model_description("0 + (a*b|h+g)")
    comp = Model(
        GroupSpecificTerm(expr=Intercept(), factor=Term(Variable("h"))),
        GroupSpecificTerm(expr=Intercept(), factor=Term(Variable("g"))),
        GroupSpecificTerm(expr=Term(Variable("a")),
                          factor=Term(Variable("h"))),
        GroupSpecificTerm(expr=Term(Variable("a")),
                          factor=Term(Variable("g"))),
        GroupSpecificTerm(expr=Term(Variable("b")),
                          factor=Term(Variable("h"))),
        GroupSpecificTerm(expr=Term(Variable("b")),
                          factor=Term(Variable("g"))),
        GroupSpecificTerm(expr=Term(Variable("a"), Variable("b")),
                          factor=Term(Variable("h"))),
        GroupSpecificTerm(Term(Variable("a"), Variable("b")),
                          factor=Term(Variable("g"))),
    )
    assert desc == comp

    desc = model_description("0 + (0 + a*b|h+g)")
    comp = Model(
        GroupSpecificTerm(expr=Term(Variable("a")),
                          factor=Term(Variable("h"))),
        GroupSpecificTerm(expr=Term(Variable("a")),
                          factor=Term(Variable("g"))),
        GroupSpecificTerm(expr=Term(Variable("b")),
                          factor=Term(Variable("h"))),
        GroupSpecificTerm(expr=Term(Variable("b")),
                          factor=Term(Variable("g"))),
        GroupSpecificTerm(expr=Term(Variable("a"), Variable("b")),
                          factor=Term(Variable("h"))),
        GroupSpecificTerm(Term(Variable("a"), Variable("b")),
                          factor=Term(Variable("g"))),
    )
    assert desc == comp
コード例 #9
0
ファイル: test_resolver.py プロジェクト: ocefpaf/formulae
def test_term_slash():
    desc = model_description("x / y")
    comp = ModelTerms(
        InterceptTerm(), Term("x", "x"), InteractionTerm(Term("x", "x"), Term("y", "y"))
    )
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x / 5")

    desc = model_description("x / f(x)")
    comp = ModelTerms(
        InterceptTerm(),
        Term("x", "x"),
        InteractionTerm(
            Term("x", "x"),
            CallTerm(
                Call(
                    Variable(Token("IDENTIFIER", "f")), [Variable(Token("IDENTIFIER", "x"))], False
                )
            ),
        ),
    )
    assert desc == comp

    desc = model_description("x / y:z")
    comp = ModelTerms(
        InterceptTerm(),
        Term("x", "x"),
        InteractionTerm(Term("y", "y"), Term("z", "z"), Term("x", "x")),
    )
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x / (1|g)")

    desc = model_description("x / (z + y)")
    comp = ModelTerms(
        InterceptTerm(),
        Term("x", "x"),
        InteractionTerm(Term("x", "x"), Term("z", "z")),
        InteractionTerm(Term("x", "x"), Term("y", "y")),
    )
    assert desc == comp
コード例 #10
0
def test_term_slash():
    desc = model_description("x / y")
    comp = Model(Intercept(), Term(Variable("x")),
                 Term(Variable("x"), Variable("y")))
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x / 5")

    desc = model_description("x / f(x)")
    comp = Model(
        Intercept(),
        Term(Variable("x")),
        Term(Variable("x"), Call(LazyCall("f", [LazyVariable("x")], {}))),
    )
    assert desc == comp

    desc = model_description("x / y:z")
    comp = Model(
        Intercept(),
        Term(Variable("x")),
        Term(Variable("x"), Variable("y"), Variable("z")),
    )
    assert desc == comp

    with pytest.raises(TypeError):
        model_description("x / (1|g)")

    desc = model_description("x / (z + y)")
    comp = Model(
        Intercept(),
        Term(Variable("x")),
        Term(Variable("x"), Variable("z")),
        Term(Variable("x"), Variable("y")),
    )
    assert desc == comp
コード例 #11
0
def test_term_remove():
    desc = model_description("x - y")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp

    desc = model_description("x - 5")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp

    desc = model_description("x - f(x)")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp

    desc = model_description("x - y:z")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp

    desc = model_description("x - (1|g)")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp

    desc = model_description("x - (z + y)")
    comp = Model(Intercept(), Term(Variable("x")))
    assert desc == comp
コード例 #12
0
ファイル: test_resolver.py プロジェクト: ocefpaf/formulae
def test_term_remove():
    desc = model_description("x - y")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp

    desc = model_description("x - 5")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp

    desc = model_description("x - f(x)")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp

    desc = model_description("x - y:z")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp

    desc = model_description("x - (1|g)")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp

    desc = model_description("x - (z + y)")
    comp = ModelTerms(InterceptTerm(), Term("x", "x"))
    assert desc == comp
コード例 #13
0
def test_empty_model_terms():
    # This does not raise an error here, but raises an error in `model_terms()`
    assert model_description("-1") == Model()