solver = ODESolver() # %% Calculate data range as factors: print("No factors applied") # %% Plot # obs_data_plot(solver.timePoint, obs_data_noisy_s, obs_data_raw_s) # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length # Set prior lim = PriorLimits(1e-6, 75) prior_distribution = "uniform" print(prior_distribution) # args = (para["lambda_n"], para["k_n_beta"], para["mu_n"], para["v_n_phi"], # para["lambda_phi"], para["k_phi_beta"], para["mu_phi"], # para["s_beta_n"], para["i_beta_phi"], para["mu_beta"], # para["s_alpha_phi"], para["mu_alpha"]) para_prior1 = pyabc.Distribution( lambda_n=pyabc.RV(prior_distribution, lim.lb, lim.interval_length), k_n_beta=pyabc.RV(prior_distribution, lim.lb, lim.interval_length), mu_n=pyabc.RV(prior_distribution, lim.lb, lim.interval_length), v_n_phi=pyabc.RV(prior_distribution, lim.lb, lim.interval_length),
# scl = 48/sum(factors.values()) # for i in range(48): # factors[i] = factors[i] * scl # %% Plot # obs_data_plot(solver.timePoint, obs_data_noisy_s, obs_data_raw_s) # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length # Set prior lim = PriorLimits(1e-6, 20) prior_distribution = "loguniform" print(prior_distribution) para_prior1 = para_prior(lim, prior_distribution, 1) para_prior2 = para_prior(lim, prior_distribution, 2) para_prior3 = para_prior(lim, prior_distribution, 3) para_prior4 = para_prior(lim, prior_distribution, 4) para_prior5 = para_prior(lim, prior_distribution, 5) # %% Define ABC-SMC model distanceP2 = pyabc.PNormDistance(p=2) # , factors=factors)
# factors[i] = 2 # scl = time_length / sum(factors.values()) # for i in range(time_length): # factors[i] = factors[i] * scl # print(factors) # %% Plot # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length lim = PriorLimits(1e-6, 25) # lim2 = PriorLimits(1e-6, 1) # lim3 = PriorLimits(1e-6, 10) lim2 = PriorLimits(0, 5) lim3 = PriorLimits(0, 15) prior_distribution = "uniform" para_prior1 = pyabc.Distribution( lambda_n=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), k_n_beta=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), mu_n=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), v_n_phi=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length), lambda_phi=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), k_phi_beta=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length),
factors[i] = 1 / range_A scl = 120./sum(factors.values()) for i in range(120): factors[i] = factors[i] * scl # %% Plot # obs_data_plot(solver.timePoint, obs_data_noisy_s, obs_data_raw_s) # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length lim = PriorLimits(0, 20) lim2 = PriorLimits(0, 1) lim3 = PriorLimits(0, 10) # lim2 = PriorLimits(0, 20) # lim3 = PriorLimits(0, 20) paraPrior = pyabc.Distribution( lambdaN=pyabc.RV("uniform", lim3.lb, lim3.interval_length), kNB=pyabc.RV("uniform", lim3.lb, lim3.interval_length), muN=pyabc.RV("uniform", lim2.lb, lim2.interval_length), vNM=pyabc.RV("uniform", lim2.lb, lim2.interval_length), lambdaM=pyabc.RV("uniform", lim3.lb, lim3.interval_length), kMB=pyabc.RV("uniform", lim2.lb, lim2.interval_length), muM=pyabc.RV("uniform", lim2.lb, lim2.interval_length), sBN=pyabc.RV("uniform", lim3.lb, lim3.interval_length), iBM=pyabc.RV("uniform", lim3.lb, lim3.interval_length),
# # scl = 120./sum(factors.values()) # # for i in range(120): # factors[i] = factors[i] * scl # %% Plot # obs_data_plot(solver.timePoint, obs_data_noisy_s, obs_data_raw_s) # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length # Set prior lim = PriorLimits(1e-6, 50) prior_distribution = "loguniform" print(prior_distribution) # args = (para["lambda_n"], para["k_n_beta"], para["mu_n"], para["v_n_phi"], # para["lambda_phi"], para["k_phi_beta"], para["mu_phi"], # para["s_beta_n"], para["i_beta_phi"], para["mu_beta"], # para["s_alpha_phi"], para["mu_alpha"]) para_prior1 = pyabc.Distribution( lambda_n=pyabc.RV(prior_distribution, lim.lb, lim.interval_length), k_n_beta=pyabc.RV(prior_distribution, lim.lb, lim.interval_length), mu_n=pyabc.RV(prior_distribution, lim.lb, lim.interval_length), v_n_phi=pyabc.RV(prior_distribution, lim.lb, lim.interval_length),
# Created by: chaolinhan # Created on: 2020/6/9 import os import matplotlib.pyplot as plt import numpy as np import pandas as pd import pyabc from pyABC_study.ODE import ODESolver, PriorLimits, arr2d_to_dict, para_true1, para_prior from pyABC_study.dataPlot import result_data_old, result_plot, result_data # %% Settings lim = PriorLimits(1e-6, 50) prior_distribution = "uniform" print(prior_distribution) para_prior1 = para_prior(lim, prior_distribution, 1) solver = ODESolver() solver.time_point = solver.time_point_default obs_data_raw_s = solver.ode_model1(para_true1, flatten=False, add_noise=False) solver.time_point = solver.time_point_exp obs_data_raw_s_less = solver.ode_model(para_true1, flatten=False, add_noise=False)
# for i in range(int(0.5 * time_length), time_length): # factors[i] = 2 # scl = time_length / sum(factors.values()) # for i in range(time_length): # factors[i] = factors[i] * scl # print(factors) # %% Plot # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length lim = PriorLimits(1e-6, 25) lim2 = PriorLimits(1e-6, 1) lim3 = PriorLimits(1e-6, 10) # lim2 = PriorLimits(0, 5) # lim3 = PriorLimits(0, 15) prior_distribution = "loguniform" para_prior1 = pyabc.Distribution( lambda_n=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), k_n_beta=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), mu_n=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), v_n_phi=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length), lambda_phi=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), k_phi_beta=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length), mu_phi=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length),
# for i in range(90, 120): # factors[i] = 1 / range_A # scl = 120./sum(factors.values()) # for i in range(120): # factors[i] = factors[i] * scl # %% Plot # obs_data_plot(solver.timePoint, obs_data_noisy_s, obs_data_raw_s) # %% Define prior distribution of parameters # Be careful that RV("uniform", -10, 15) means uniform distribution in [-10, 5], '15' here is the interval length lim = PriorLimits(1e-6, 10) lim2 = PriorLimits(0, 1) lim3 = PriorLimits(0, 10) # lim2 = PriorLimits(0, 20) # lim3 = PriorLimits(0, 20) prior_distribution = "uniform" para_prior1 = pyabc.Distribution( lambda_n=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), k_n_beta=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), mu_n=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length), v_n_phi=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length), lambda_phi=pyabc.RV(prior_distribution, lim3.lb, lim3.interval_length), k_phi_beta=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length), mu_phi=pyabc.RV(prior_distribution, lim2.lb, lim2.interval_length),