예제 #1
0
    def test_set_params_bad(self):
        potential = ParametricPotential(
            name='mypotential',
            expression='a*x+b',
            parameters={
                'a': 1.0*u.g,
                'b': 1.0*u.m},
            independent_variables={'x'}
        )

        with pytest.raises(ValueError):
            potential.set_expression(parameters={'aa': 4.0*u.g, 'bb': 4.0*u.m})
예제 #2
0
    def test_set_params_partial(self):
        potential = ParametricPotential(
            name='mypotential',
            expression='a*x+b',
            parameters={
                'a': 1.0*u.g,
                'b': 1.0*u.m},
            independent_variables={'x'}
        )
        potential.set_expression(parameters={'a': 4.0*u.g})

        assert potential.expression == sympy.sympify('a*x+b')
        assert potential.parameters == {'a': 4*u.g, 'b': 1*u.m}
예제 #3
0
    def test_set_expression_bad(self):
        potential = ParametricPotential(
            name="mypotential",
            expression="a*x+b",
            parameters={
                "a": 1.0 * u.g,
                "b": 1.0 * u.m
            },
            independent_variables={"x"},
        )

        with pytest.raises(ValueError):
            potential.set_expression(expression="a*x**2+b*x+c")
예제 #4
0
    def test_set_expression(self):
        # Try changing the expression but keep the parameters
        potential = ParametricPotential(
            name='mypotential',
            expression='a*x+b',
            parameters={
                'a': 1.0*u.g,
                'b': 1.0*u.m},
            independent_variables={'x'}
        )
        potential.set_expression(expression='a*x**2+b')

        assert potential.expression == sympy.sympify('a*x**2+b')
        assert potential.parameters == {'a': 1*u.g, 'b': 1*u.m}
예제 #5
0
    def test_set_params_partial(self):
        potential = ParametricPotential(
            name="mypotential",
            expression="a*x+b",
            parameters={
                "a": 1.0 * u.g,
                "b": 1.0 * u.m
            },
            independent_variables={"x"},
        )
        potential.set_expression(parameters={"a": 4.0 * u.g})

        assert potential.expression == sympy.sympify("a*x+b")
        assert potential.parameters == {"a": 4 * u.g, "b": 1 * u.m}
예제 #6
0
    def test_set_expression(self):
        # Try changing the expression but keep the parameters
        potential = ParametricPotential(
            name="mypotential",
            expression="a*x+b",
            parameters={
                "a": 1.0 * u.g,
                "b": 1.0 * u.m
            },
            independent_variables={"x"},
        )
        potential.set_expression(expression="a*x**2+b")

        assert potential.expression == sympy.sympify("a*x**2+b")
        assert potential.parameters == {"a": 1 * u.g, "b": 1 * u.m}
예제 #7
0
    def test_set_expression_and_params_mismatch(self):
        potential = ParametricPotential(
            name='mypotential',
            expression='a*x+b',
            parameters={
                'a': 1.0*u.g,
                'b': 1.0*u.m},
            independent_variables={'x'}
        )

        with pytest.raises(ValueError):
            potential.set_expression(
                expression='c*x+d',
                parameters={
                    'u': 1.0*u.g,
                    'v': 1.0*u.m},
            )
예제 #8
0
    def test_setters(self):
        new_potential = ParametricPotential()
        new_potential.name = "SettingName"
        new_potential.set_expression(
            independent_variables=sympy.symbols({'r'}),
            expression='r*sigma*epsilon',
            parameters={
                'sigma': 1 * u.nm,
                'epsilon': 10 * u.Unit('kcal / mol')
            }
        )

        assert new_potential.name == "SettingName"
        assert new_potential.independent_variables == {sympy.symbols('r')}
        assert new_potential.parameters == {
            'sigma': 1 * u.nm,
            'epsilon': 10 * u.Unit('kcal / mol')
        }
        assert new_potential.expression == sympy.sympify('r * sigma * epsilon')
예제 #9
0
    def test_set_expression_and_params(self):
        potential = ParametricPotential(
            name='mypotential',
            expression='a*x+b',
            parameters={
                'a': 1.0*u.g,
                'b': 1.0*u.m},
            independent_variables={'x'}
        )
        potential.set_expression(
            expression='u*r+v',
            parameters={
                'u': 1.0*u.g,
                'v': 1.0*u.m},
            independent_variables={'r'}
        )

        assert potential.expression == sympy.sympify('u*r+v')
        assert potential.parameters == { 'u': 1*u.g, 'v': 1*u.m}
예제 #10
0
    def test_setters(self):
        new_potential = ParametricPotential()
        new_potential.name = "SettingName"
        new_potential.set_expression(
            independent_variables=sympy.symbols({"r"}),
            expression="r*sigma*epsilon",
            parameters={
                "sigma": 1 * u.nm,
                "epsilon": 10 * u.Unit("kcal / mol"),
            },
        )

        assert new_potential.name == "SettingName"
        assert new_potential.independent_variables == {sympy.symbols("r")}
        assert new_potential.parameters == {
            "sigma": 1 * u.nm,
            "epsilon": 10 * u.Unit("kcal / mol"),
        }
        assert new_potential.expression == sympy.sympify("r * sigma * epsilon")
예제 #11
0
    def test_set_expression_and_params_mismatch(self):
        potential = ParametricPotential(
            name="mypotential",
            expression="a*x+b",
            parameters={
                "a": 1.0 * u.g,
                "b": 1.0 * u.m
            },
            independent_variables={"x"},
        )

        with pytest.raises(ValueError):
            potential.set_expression(
                expression="c*x+d",
                parameters={
                    "u": 1.0 * u.g,
                    "v": 1.0 * u.m
                },
            )
예제 #12
0
    def test_set_expression_and_params(self):
        potential = ParametricPotential(
            name="mypotential",
            expression="a*x+b",
            parameters={
                "a": 1.0 * u.g,
                "b": 1.0 * u.m
            },
            independent_variables={"x"},
        )
        potential.set_expression(
            expression="u*r+v",
            parameters={
                "u": 1.0 * u.g,
                "v": 1.0 * u.m
            },
            independent_variables={"r"},
        )

        assert potential.expression == sympy.sympify("u*r+v")
        assert potential.parameters == {"u": 1 * u.g, "v": 1 * u.m}