Exemplo n.º 1
0
    def print_model(self, model, print_residuals=True):
        from sympy import latex
        if print_residuals:
            from dolo.symbolic.model import compute_residuals
            res = compute_residuals(model)
        if 'equations_groups' in model:
            if print_residuals:
                eqs = [['', 'Equations', 'Residuals']]
            else:
                eqs = [['', 'Equations']]
            for groupname in model['equations_groups']:
                eqg = model['equations_groups']
                eqs.append([groupname, ''])
                if print_residuals:
                    eqs.extend([[
                        '', '${}$'.format(latex(eq)),
                        str(res[groupname][i])
                    ] for i, eq in enumerate(eqg[groupname])])
                else:
                    eqs.extend([['', '${}$'.format(latex(eq))]
                                for eq in eqg[groupname]])
            txt = self.print_table(eqs, header=True)
            return txt

        else:
            txt = self.print_table([['', 'Equations']] +
                                   [(i + 1, model.equations[i])
                                    for i in range(len(model.equations))],
                                   header=True)
        return HTMLString(txt)
Exemplo n.º 2
0
def print_model(model, print_residuals=True):

    from sympy import latex
    if print_residuals:
        from dolo.symbolic.model import compute_residuals
        res = compute_residuals(model)
    if len(model.equations_groups) > 0:
        if print_residuals:
            eqs = [['', 'Equations', 'Residuals']]
        else:
            eqs = [['', 'Equations']]
        for groupname in model.equations_groups:
            eqg = model.equations_groups
            eqs.append([groupname, ''])
            if print_residuals:
                eqs.extend(
                    [['', '${}$'.format(latex(eq)),
                      str(res[groupname][i])]
                     for i, eq in enumerate(eqg[groupname])])
            else:
                eqs.extend([['', '${}$'.format(latex(eq))]
                            for eq in eqg[groupname]])
        txt = print_table(eqs, header=True)
        return txt

    else:
        if print_residuals:
            table = [(i + 1, '${}$'.format(latex(eq)), str(res[i]))
                     for i, eq in enumerate(model.equations)]
        else:
            table = [(i + 1, '${}$'.format(latex(eq)))
                     for i, eq in enumerate(model.equations)]
        txt = print_table([['', 'Equations']] + table, header=True)
    return txt
Exemplo n.º 3
0
    def test_division(self):

        import yaml

        with open('examples/global_models/rbc.yaml') as f:
            txt = f.read()

        yaml_content = yaml.load(txt)
        yaml_content['equations']['transition'][
            0] += ' + 1/2 - 0.5'  # modify first transition equation
        yaml_content['calibration']['parameters']['alpha'] = '1/3'

        new_txt = yaml.dump(yaml_content)

        from dolo.misc.yamlfile import parse_yaml_text
        from dolo.symbolic.model import compute_residuals
        from dolo.symbolic.symbolic import Parameter as P

        model = parse_yaml_text(new_txt, compiler=None)

        alpha = model.calibration_s[P('alpha')]

        assert (abs(alpha - 1.0 / 3.0) < 0.00000001)

        res = compute_residuals(model)
        assert (abs(res['transition'][0]) < 0.00000001)