Exemplo n.º 1
0
def calc_S_mat():
    time_points, data_conc = data()
    constants, ode_info, data_info = model_info(time_points)
    vald_modell, num_coefficient, num_tidserier, num_tidsteg, h = constants
    results = read_results(constants)
    sol_k, krashade = calc_sol_k()
    suc2, mig1, mig1_phos, X = sol_k
    t_span, t_eval, y0 = ode_info
    best_coefficients, min_cost_funk, min_viktad_cost_funk = get_min_cost(results)
    Kinetic_constants = best_coefficients
    s_suc2 = np.zeros((num_tidsteg, num_coefficient))
    s_mig1 = np.zeros((num_tidsteg, num_coefficient))
    s_mig1_phos = np.zeros((num_tidsteg, num_coefficient))
    s_X = np.zeros((num_tidsteg, num_coefficient))
    dy = np.zeros([num_tidserier, num_tidsteg, 1])
    for i in range(num_coefficient):
        d_Kinetic_constants = Kinetic_constants.copy()
        d_Kinetic_constants[i] = d_Kinetic_constants[i] + h
        d_solv = integrate.solve_ivp(fun=lambda t, y: model(vald_modell, t, y, d_Kinetic_constants), t_span=t_span, y0=y0,
                                     method="RK45", t_eval=t_eval)
        d_solv_k = np.zeros([num_tidserier, num_tidsteg, 1])
        d_solv_k[:, :, 0] = d_solv.y
        dy_new = dy.copy()
        dy_new[:] = d_solv_k
        s_suc2[:, i] = np.transpose((dy_new[0] - suc2) / h)
        s_mig1[:, i] = np.transpose((dy_new[1] - mig1) / h)
        s_mig1_phos[:, i] = np.transpose((dy_new[2] - mig1_phos) / h)
        s_X[:, i] = np.transpose((dy_new[3] - X) / h)
    S = np.array([s_suc2, s_mig1, s_mig1_phos, s_X])
    return S
Exemplo n.º 2
0
def main_plot_optimering():
    time_points, data_concentration = data()
    constants, ode_info, data_info = model_info(time_points)
    results = read_results(constants)
    coefficients, min_cost_funk, min_viktad_cost_funk = get_min_cost(results)
    sol_k = solve_ODE(coefficients, constants, ode_info)
    mat_r = calc_residual(sol_k, constants, data_concentration, data_info)
    plot_all(constants, sol_k, mat_r, data_concentration, time_points)
Exemplo n.º 3
0
def fix_invertibility(matrix):
    time_points, data_conc = data()
    constants, ode_info, data_info = model_info(time_points)
    vald_modell, num_coefficient, num_tidserier, num_tidsteg, h = constants
    indent_mat = np.identity(num_coefficient)
    eigenvalues = np.linalg.eigvals(matrix)
    min_nonpos_eigenvalue = np.amin(eigenvalues)
    gamma = -(min_nonpos_eigenvalue - h)
    fixed_matrix = matrix + gamma * indent_mat
    return fixed_matrix
Exemplo n.º 4
0
def main():
    time_points, data_concentration = data()
    constants, ode_info, data_info = model_info(time_points)
    for i in range(100):
        print("runda: " + str(i))
        k_array = guess_k_array(i)
        start_point(k_array, constants, data_concentration, data_info,
                    ode_info)
        results = iteration(k_array, constants, data_concentration, data_info,
                            ode_info)
        save_results(results, constants)
Exemplo n.º 5
0
def corr():
    H_inv = h_inverse()
    Covariance = H_inv
    time_points, data_conc = data()
    constants, ode_info, data_info = model_info(time_points)
    vald_modell, num_coefficient, num_tidserier, num_tidsteg, h = constants
    v0 = np.zeros((num_coefficient, 1))
    Correlation = np.zeros((num_tidserier, num_coefficient, num_coefficient))
    for i in range(num_tidserier):
        v = v0.copy()
        v = np.sqrt(np.diag(Covariance[i, :, :]))
        outer_v = np.outer(v, v)
        Correlation[i, :, :] = Covariance[i, :, :] / outer_v
    return Correlation
Exemplo n.º 6
0
def calc_sol_k():
    time_points, data_conc = data()
    constants, ode_info, data_info = model_info(time_points)
    vald_modell, num_coefficient, num_tidserier, num_tidsteg, h = constants
    results = read_results(constants)
    best_coefficients, min_cost_funk, min_viktad_cost_funk = get_min_cost(results)
    t_span, t_eval, y0 = ode_info
    sol = integrate.solve_ivp(fun=lambda t, y: model(vald_modell, t, y, best_coefficients), t_span=t_span, y0=y0, method="RK45",
                              t_eval=t_eval)
    sol_k = np.empty([num_tidserier, num_tidsteg, 1])
    krashade = False
    try:
        sol_k[:, :, 0] = sol.y
    except ValueError:
        krashade = True
    return sol_k, krashade
Exemplo n.º 7
0
def RMS():
    S = calc_S_mat()
    time_points, data_conc = data()
    constants, ode_info, data_info = model_info(time_points)
    results = read_results(constants)
    vald_modell, num_coefficient, num_tidserier, num_tidsteg, h = constants
    best_coefficients, min_cost_funk, min_viktad_cost_funk = get_min_cost(results)
    Kinetic_constants = best_coefficients
    sol_k, krashade = calc_sol_k()
    suc2, mig1, mig1_phos, X = sol_k
    Model_values = np.transpose(np.array([suc2, mig1, mig1_phos, X]))
    rms = np.zeros((2, num_coefficient))
    S_square = np.power(S, 2)
    model_square = np.power(Model_values, 2).reshape(num_tidsteg, num_tidserier)
    for j in range(2):
        for i in range(num_coefficient):
            K_square = np.power(Kinetic_constants, 2)
            rms[j, i] = math.sqrt((1/num_tidsteg)*np.sum((S_square[j, :, i]*K_square[i]/model_square[:, j]), axis=0))
    return rms
Exemplo n.º 8
0
def var_K():
    H_inv = h_inverse()
    time_points, data_conc = data()
    constants, ode_info, data_info = model_info(time_points)
    vald_modell, num_coefficient, num_tidserier, num_tidsteg, h = constants
    results = read_results(constants)
    best_coefficients, min_cost_funk, min_viktad_cost_funk = get_min_cost(
        results)
    Kinetic_constants = best_coefficients
    Var_K = np.zeros((num_tidserier, num_coefficient, 1))
    for i in range(num_tidserier):
        c = np.sqrt(np.diag(H_inv[i, :, :]).reshape(num_coefficient, 1))
        for l in np.diag(H_inv[i]):
            if l < 0:
                print('COV ej definierad')
                break
        for j in range(num_coefficient):
            if Kinetic_constants[j] == 0:
                Var_K[i, j] = 0
            else:
                Var_K[i, j] = c[j] / Kinetic_constants[j]
    return Var_K