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)
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
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)