Beispiel #1
0
 def fitness(self, x):
     self.E0 = x[3] * self.I0
     sol = pd.DataFrame(
         SDSEIR.intger(self.S0, self.E0, self.I0, self.R0, min(self.tr),
                       max(self.tr), self.h, x[0], x[1], x[2], self.mov,
                       self.qp, self.tr[-1], self.movefunct))
     idx = np.searchsorted(sol.t, self.tr)
     res = LA.norm(self.Ir - sol.I[idx])
     return ([res])
def rep_fun_eta(mu_i,rep):
    out=[] 
    for i in range(int(rep)):  
        results = SDSEIR.ref_sim_national_mu(mov=mov,qp=0,tsim = tsim,tci=None,movfunct='sawtooth',mu=mu_i)
        params=results['params']
        params=np.append(params,mu_i)
        params=np.append(params,results['err'])
        params=np.append(params,results['rerr'])
        print(params)
        out.append(params)
    return(out)   
Beispiel #3
0
def refineuni():
    '''
    # ----------------------------------------------------------- #
    #     Parameters input when the simulate button is pressed    #
    # ----------------------------------------------------------- #
    '''
    print("Refine")
    try:
        # Manage input parameters
        if request.form:
            print("I have form data")
            state = request.form.get('state')  #State (Region)
            comuna = request.form.get('comuna')  # District
            qp = int(request.form.get('qp'))  # Quarantine period
            mov = float(request.form.get('mov'))  # Quarantine movilty
            tsim = int(request.form.get('tSim'))  # Simulation time
            movfunct = str(request.form.get('movfunct'))

        if request.json:
            print("I have json")
            state = request.json['state']
            comuna = request.json['comuna']
            qp = int(request.json['qp'])
            mov = float(request.json['mov'])  # Quarantine movilty
            tsim = int(request.json['tSim'])
            movfunct = str(request.json['movfunct'])

        #tsim = 100
        #mov = 0.2
        if qp == -1:
            qp = tsim

        # ---------------------------- #
        #        Get Refine Data       #
        # ---------------------------- #
        path = '../Data/unirefine/'

        # Get data for different quarantine periods
        # Import data, parameters and initdate

        #parameters = pd.read_csv(path+'parameters_qp0.csv',index_col=0)
        #initdate = pd.read_csv(path+'initdate_qp0.csv',index_col=0)
        parameters = pd.read_csv(path + 'parameters.csv', index_col=0)
        initdate = pd.read_csv(path + 'initdate.csv', index_col=0)

        ## Find data for paramters given
        parameters = parameters[comuna]
        initdate = initdate[comuna][0]
        results = SDSEIR.simulate(state,
                                  comuna,
                                  parameters[0],
                                  parameters[1],
                                  parameters[2],
                                  parameters[3],
                                  qp=qp,
                                  mov=mov,
                                  tsim=tsim,
                                  movfunct=movfunct)
        S = results['S'].tolist()
        E = results['E'].tolist()
        I = results['I'].tolist()
        R = results['R'].tolist()
        t = list(results['t'])

        # Round results:
        S = [round(i) for i in S]
        E = [round(i) for i in E]
        I = [round(i) for i in I]
        R = [round(i) for i in R]

        Ti = 1 / parameters[1]
        Tr = 1 / parameters[2]

        #print(results)
        print("done simulating")
        print('beta,sigma,gama,mu')
        print(parameters)

        response = {
            'status': 'OK',
            'S': S,
            'E': E,
            'I': I,
            'R': R,
            't': t,
            'Ti': Ti,
            'Tr': Tr,
            'beta': parameters[0],
            'r0': parameters[3],
            'initdate': initdate,
            'I_peak': max(I),
            'R_total': (max(R))
        }
        #print(response)
        return jsonify(response), 200

    except Exception as e:
        print(e)
        response = {"error": str(e)}
        return response, 200
Beispiel #4
0
def simulateuni():
    '''
    # ----------------------------------------------------------- #
    #     Parameters input when the simulate button is pressed    #
    # ----------------------------------------------------------- #
    '''
    # Manage input parameters
    try:
        if request.form:
            print("I have form data")
            state = str(request.form.get('state'))
            comuna = str(request.form.get('comuna'))
            qp = int(request.form.get('qp'))
            beta = float(request.form.get('beta'))
            Ti = int(request.form.get('Ti'))  #sigma-1
            Tr = int(request.form.get('Tr'))  #gamma-1
            r0 = float(request.form.get('r0'))
            mov = float(request.form.get('mov'))  #Quarantine movilty
            tsim = int(request.form.get('tSim'))
            movfunct = str(request.form.get('movfunct'))

        if request.json:
            print("I have json")
            state = str(request.json['state'])
            comuna = str(request.json['comuna'])
            qp = int(request.json['qp'])
            beta = float(request.json['beta'])
            Ti = int(request.json['Ti'])  #sigma-1
            Tr = int(request.json['Tr'])  #gamma-1
            r0 = float(request.json['r0'])
            mov = float(request.json['mov'])
            tsim = int(request.json['tSim'])
            movfunct = str(request.json['movfunct'])

        #mov = 0.2#request.form.get('aten')
        #tsim = 100
        #tci = request.form.get('tci')

        #print('Inputs')
        #print(state,comuna,qp,beta,Ti,Tr,r0,mov,tsim,movfunct)
        #state, comuna, beta, Ti,Tr,r0,Q
        if Ti == 0:
            sigma = 1
        else:
            sigma = 1 / Ti

        if Tr == 0:
            gamma = 1
        else:
            gamma = 1 / Tr
        #{"S":S,"E":E,"I":I,"R":R,"t":t}
        print('state,comuna,beta,sigma,gamma,r0,qp,mov,tsim')
        print(state, comuna, beta, sigma, gamma, r0, qp, mov, tsim)
        results = SDSEIR.simulate(state,
                                  comuna,
                                  beta,
                                  sigma,
                                  gamma,
                                  r0,
                                  qp,
                                  mov,
                                  tsim,
                                  movfunct=movfunct)
        S = results['S'].tolist()
        E = results['E'].tolist()
        I = results['I'].tolist()
        R = results['R'].tolist()
        t = list(results['t'])
        init_date = results['init_date']

        # Round results:
        S = [round(i) for i in S]
        E = [round(i) for i in E]
        I = [round(i) for i in I]
        R = [round(i) for i in R]
        a = pd.DataFrame(results)
        a.to_csv('lastrequest.csv')

        response = {
            'status': 'OK',
            'S': S,
            'E': E,
            'I': I,
            'R': R,
            't': t,
            'init_date': init_date,
            'I_peak': max(I),
            'R_total': (max(R))
        }
        print(response.keys())
        return response, 200
    except Exception as e:
        print(e)
        response = {"error": str(e)}
        return response, 200
Beispiel #5
0
    print(tstate)
    # Input parameters:
    mov = 0.2  # movility level during quarantine
    qp = 0  # Quarantine Period
    simdata = pd.DataFrame()
    simparameters = pd.DataFrame(index=['beta', 'sigma', 'gamma', 'mu', 'err'])
    initdate = pd.DataFrame()

    # Refine parameters per CUT
    n = 0
    for index, row in cutlist.iterrows():
        state = str(row[0])[0:2]
        comuna = str(row[0])
        if tstate == None or tstate == state:
            print('Refining Comuna ' + comuna)
            result = SDSEIR.ref_pygmo(state, comuna, mov, qp)
            if result:
                simdata[comuna] = result['sim']['I']  #Check Initial date
                pd.DataFrame(result['sim']['I']).to_csv(comuna + '_I.csv')
                simparameters[comuna] = np.append(result['params'],
                                                  result['err'])  # Parameters
                initdate[comuna] = [
                    (result['init_date'] +
                     datetime.timedelta(days=43830)).strftime("%d-%b-%Y")
                ]  #Check Initial date
                print('error: ' + str(result['err']))
    print('Saving csv data')
    path = '../Data/DatosConsolidados/'
    if tstate == None:
        simdata.to_csv(path + 'uni_sim.csv')
        simparameters.to_csv(path + 'uni_parameters.csv')
import pandas as pd
import numpy as np
import datetime as dt
import Single_dist_ref_SEIR as SDSEIR
import matplotlib.pyplot as plt

#  ---------------------------------- #
#       Find Optimal Parameters       #
# ----------------------------------- #
np.random.seed()
tsim = 400
mov = 0.2
results = SDSEIR.ref_sim_national(mov=mov,
                                  qp=0,
                                  tsim=tsim,
                                  tci=None,
                                  movfunct='sawtooth')

Si = results['sim']['S'][0]
Ei = results['sim']['E'][0]
Ii = results['sim']['I'][0]
Ri = results['sim']['R'][0]
ti = 0

beta = results['params'][0]
sigma = results['params'][1]
gamma = results['params'][2]

Ir = pd.DataFrame(results['Ir'], columns=['Ir'])
tr = pd.DataFrame(results['tr'], columns=['tr'])
Beispiel #7
0
# Total active cases each day
Ir = np.zeros(data.shape[0])
Ir[np.where(np.array(tr) <= 14)[0]] = data[ncomuna][np.where(
    np.array(tr) <= 14)[0]]
for i in np.where(np.array(tr) > 14)[0]:
    ind = np.where(np.array(tr) - tr[i] + 14 < 0)[0]
    Ir[i] = data[ncomuna][i] - sum(Cn[0:ind[-1]])

qp = 0
mov = 0.2
tsim = 100
tci = None
movfunct = 'sawtooth'

# refine again madafacas
refresults = SDSEIR.ref_sim_cons(state, comuna, mov, qp, tsim, tci, movfunct)
beta = refresults['params'][0]
gamma = refresults['params'][1]
sigma = refresults['params'][2]
mu = refresults['params'][3]
err = refresults['err']

# ------------ #
#   Simulate   #
# ------------ #

results = SDSEIR.simulate(state, comuna, beta, sigma, gamma, mu, qp, mov, tsim,
                          tci, movfunct)
results['init_date'] = '22-feb-2020'
S = results['S']
E = results['E']