def verify_simulation_results(rdata, expected_results, assert_fun, atol=1e-8, rtol=1e-4): """ compares all fields of the simulation results in rdata against the expectedResults using the provided tolerances Arguments: rdata: simulation results as returned by amici.runAmiciSimulation expected_results: stored test results atol: absolute tolerance rtol: relative tolerance """ if expected_results.attrs['status'][0] != 0: assert rdata['status'] == expected_results.attrs['status'][0] return for field in expected_results.keys(): if field == 'diagnosis': for subfield in ['J', 'xdot']: check_results(rdata, subfield, expected_results[field][subfield][()], assert_fun, 1e-8, 1e-8) else: if field == 's2llh': check_results(rdata, field, expected_results[field][()], assert_fun, 1e-4, 1e-3) else: check_results(rdata, field, expected_results[field][()], assert_fun, atol, rtol) for attr in expected_results.attrs.keys(): check_results(rdata, attr, expected_results.attrs[attr], assert_fun, atol, rtol)
def verify_simulation_results(rdata, expected_results, fields=None, atol=1e-8, rtol=1e-4): """ compares all fields of the simulation results in rdata against the expectedResults using the provided tolerances :param rdata: simulation results as returned by amici.runAmiciSimulation :param expected_results: stored test results :param fields: subsetting of expected results to check :param atol: absolute tolerance :param rtol: relative tolerance """ subfields = [] if fields is None: attrs = expected_results.attrs.keys() fields = expected_results.keys() if 'diagnosis' in expected_results.keys(): subfields = expected_results['diagnosis'].keys() else: attrs = [ field for field in fields if field in expected_results.attrs.keys() ] if 'diagnosis' in expected_results.keys(): subfields = [ field for field in fields if field in expected_results['diagnosis'].keys() ] fields = [ field for field in fields if field in expected_results.keys() ] if expected_results.attrs['status'][0] != 0: assert rdata['status'] == expected_results.attrs['status'][0] return for field in expected_results.keys(): if field == 'diagnosis': for subfield in ['J', 'xdot']: if subfield not in subfields: assert rdata[subfield] is None, field continue check_results(rdata, subfield, expected_results[field][subfield][()], assert_fun, 1e-8, 1e-8) else: if field not in fields: assert rdata[field] is None, field continue if field == 's2llh': check_results(rdata, field, expected_results[field][()], assert_fun, 1e-4, 1e-3) else: check_results(rdata, field, expected_results[field][()], assert_fun, atol, rtol) for attr in attrs: check_results(rdata, attr, expected_results.attrs[attr], assert_fun, atol, rtol)