def test_lorenz() -> None: error = math.inf window = 0 prior_mu: Union[Tuple[float, float, float], Tuple[numpy_types, numpy_types, numpy_types]] = (3., 3., 3.) model = LorenzModel(sigma, beta, rho, time_step) observed = list(model.run_model(window_size * max_windows)) while error > converged_error and window < max_windows: xt0 = Gaussian(prior_mu[0], 1.0) yt0 = Gaussian(prior_mu[1], 1.0) zt0 = Gaussian(prior_mu[2], 1.0) graph_time_steps = list(build_graph((xt0, yt0, zt0))) xt0.set_and_cascade(prior_mu[0]) yt0.set_and_cascade(prior_mu[1]) zt0.set_and_cascade(prior_mu[2]) apply_observations(graph_time_steps, window, observed) optimizer = GradientOptimizer(xt0) optimizer.max_a_posteriori() posterior = get_time_slice_values(graph_time_steps, window_size - 1) post_t = (window + 1) * (window_size - 1) actual_at_post_t = observed[post_t] error = math.sqrt((actual_at_post_t.x - posterior[0])**2 + (actual_at_post_t.y - posterior[1])**2 + (actual_at_post_t.z - posterior[2])**2) prior_mu = (posterior[0], posterior[1], posterior[2]) window += 1 assert error <= converged_error
return list(map(lambda v: v.get_value(), time_slice)) error = math.inf window = 0 prior_mu = (3., 3., 3.) model = LorenzModel(sigma, beta, rho, time_step) observed = list(model.run_model(window_size * max_windows)) while error > converged_error and window < max_windows: xt0 = Gaussian(prior_mu[0], 1.0) yt0 = Gaussian(prior_mu[1], 1.0) zt0 = Gaussian(prior_mu[2], 1.0) graph_time_steps = list(build_graph((xt0, yt0, zt0))) xt0.set_and_cascade(prior_mu[0]) yt0.set_and_cascade(prior_mu[1]) zt0.set_and_cascade(prior_mu[2]) apply_observations(graph_time_steps, window, observed) optimizer = GradientOptimizer(xt0) optimizer.max_a_posteriori() posterior = get_time_slice_values(graph_time_steps, window_size - 1) post_t = (window + 1) * (window_size - 1) actual_at_post_t = observed[post_t] error = math.sqrt((actual_at_post_t.x - posterior[0])**2 + (actual_at_post_t.y - posterior[1])**2 + (actual_at_post_t.z - posterior[2])**2) prior_mu = (posterior[0], posterior[1], posterior[2])