예제 #1
0
def main():
    warnings.simplefilter("error")
    # Create output directory in example directory
    code_path = Path(__file__)
    output_dir = code_path.with_name("output").joinpath(code_path.stem)
    output_dir.mkdir(exist_ok=True, parents=True)
    # Setting
    eg_population = 1_000_000
    eg_tau = 1440
    start_date = "22Jan2020"
    model = cs.SIRF
    set_param_dict = {
        "theta": 0.002,
        "kappa": 0.005,
        "rho": 0.2,
        "sigma": 0.075
    }
    y0_dict = {
        "Susceptible": 999_000,
        "Infected": 1000,
        "Recovered": 0,
        "Fatal": 0
    }
    # Simulation
    simulator = cs.ODESimulator(country="Example", province=model.NAME)
    simulator.add(model=cs.SIRF,
                  step_n=1000,
                  population=eg_population,
                  param_dict=set_param_dict,
                  y0_dict=y0_dict)
    # Non-dimensional
    nondim_df = simulator.non_dim()
    nondim_df.to_csv(output_dir.joinpath("non_dim.csv"), index=False)
    cs.line_plot(nondim_df.set_index("t"),
                 title=f"{model.NAME}: Example data (non-dimensional)",
                 ylabel=str(),
                 h=1.0,
                 filename=output_dir.joinpath("non_dim_long.png"))
    # Dimensional
    dim_df = simulator.dim(tau=eg_tau, start_date=start_date)
    dim_df.to_csv(output_dir.joinpath("dim.csv"), index=False)
    cs.line_plot(dim_df.set_index("Date"),
                 title=f"{model.NAME}: Example data (dimensional)",
                 h=eg_population,
                 y_integer=True,
                 filename=output_dir.joinpath("dim_long.png"))
예제 #2
0
def main():
    # Create output directory in example directory
    code_path = Path(__file__)
    output_dir = code_path.with_name("output").joinpath(code_path.stem)
    output_dir.mkdir(exist_ok=True, parents=True)
    # Simulation
    eg_population = 1_000_000
    eg_tau = 1440
    setted_param_dict = {
        "theta": 0.002,
        "kappa": 0.005,
        "rho": 0.2,
        "sigma": 0.075
    }
    simulator = cs.ODESimulator(country="Example", province="Example-1")
    simulator.add(model=cs.SIRF,
                  step_n=1000,
                  population=eg_population,
                  param_dict=setted_param_dict,
                  y0_dict={
                      "x": 0.999,
                      "y": 0.001,
                      "z": 0,
                      "w": 0
                  })
    simulator.run()
    # Non-dimensional
    nondim_df = simulator.non_dim()
    nondim_df.to_csv(output_dir.joinpath("non_dim.csv"), index=False)
    # Dimensional
    dim_df = simulator.dim(tau=eg_tau, start_date="22Jan2020")
    dim_df.to_csv(output_dir.joinpath("dim.csv"), index=False)
    cs.line_plot(dim_df.set_index("Date")[["Infected", "Recovered", "Fatal"]],
                 title="Example data",
                 filename=output_dir.joinpath("dim.png"),
                 ylim=(None, None))
예제 #3
0
def main():
    # Create output directory in example directory
    code_path = Path(__file__)
    output_dir = code_path.with_name("output").joinpath(code_path.stem)
    output_dir.mkdir(exist_ok=True, parents=True)
    # Setting
    eg_population = 1_000_000
    eg_tau = 1440
    start_date = "22Jan2020"
    model = cs.SIRF
    set_param_dict = {
        "theta": 0.002, "kappa": 0.005, "rho": 0.2, "sigma": 0.075
    }
    set_param_dict_2 = {
        "theta": 0.002, "kappa": 0.005, "rho": 0.1, "sigma": 0.075
    }
    y0_dict = {
        "Susceptible": 999_000, "Infected": 1000, "Recovered": 0, "Fatal": 0
    }
    # Dataset for S-R trend analysis
    simulator = cs.ODESimulator(country="Trend", province=model.NAME)
    simulator.add(
        model=model, step_n=30, population=eg_population,
        param_dict=set_param_dict, y0_dict=y0_dict
    )
    simulator.add(
        model=model, step_n=30, population=eg_population,
        param_dict=set_param_dict_2
    )
    simulator.run()
    dim_df = simulator.dim(tau=eg_tau, start_date=start_date)
    cs.line_plot(
        dim_df.set_index("Date"),
        title=f"{model.NAME}: Example data for S-R trend analysis",
        h=eg_population,
        y_integer=True,
        filename=output_dir.joinpath("trend_data.png")
    )
    restored_df = model.restore(dim_df)
    # 1st trial of S-R trend analysis
    change_finder = cs.ChangeFinder(restored_df, eg_population, "Trend")
    change_finder.run(n_points=1, n_jobs=1, seed=0)
    change_finder.show(
        filename=output_dir.joinpath("trend_1st.png")
    )
    # 2nd trial of S-R trend analysis
    change_finder = cs.ChangeFinder(restored_df, eg_population, "Trend")
    change_finder.run(n_points=1, n_jobs=1, seed=0)
    change_finder.show(
        filename=output_dir.joinpath("trend_2nd.png")
    )
    # Dataset for parameter estimation
    simulator = cs.ODESimulator(country="Param", province=model.NAME)
    simulator.add(
        model=model, step_n=150, population=eg_population,
        param_dict=set_param_dict, y0_dict=y0_dict
    )
    simulator.run()
    dim_df = simulator.dim(tau=eg_tau, start_date=start_date)
    cs.line_plot(
        dim_df.set_index("Date"),
        title=f"{model.NAME}: Example data for parameter estimation",
        h=eg_population,
        y_integer=True,
        filename=output_dir.joinpath("estimate_data.png")
    )
    # 1st trial of parameter estimation
    estimator = cs.Estimator(
        clean_df=dim_df, model=model, population=eg_population,
        country="Param", province=model.NAME, tau=eg_tau
    )
    estimator.run(n_jobs=1, seed=0)
    estimator.history(filename=output_dir.joinpath("estimate_history_1st.png"))
    # 2nd trial of parameter estimation
    estimator = cs.Estimator(
        clean_df=dim_df, model=model, population=eg_population,
        country="Param", province=model.NAME, tau=eg_tau
    )
    estimator.run(n_jobs=1, seed=0)
    estimator.history(filename=output_dir.joinpath("estimate_history_2nd.png"))
예제 #4
0
def main():
    # Create output directory in example directory
    code_path = Path(__file__)
    output_dir = code_path.with_name("output").joinpath(code_path.stem)
    output_dir.mkdir(exist_ok=True, parents=True)
    # Setting
    eg_population = 1_000_000
    eg_tau = 1440
    start_date = "22Jan2020"
    model = cs.SIR
    set_param_dict = {"rho": 0.2, "sigma": 0.075}
    y0_dict = {
        "Susceptible": 999_000,
        "Infected": 1000,
        "Fatal or Recovered": 0
    }
    # Simulation
    simulator = cs.ODESimulator(country="Example", province=model.NAME)
    simulator.add(model=model,
                  step_n=180,
                  population=eg_population,
                  param_dict=set_param_dict,
                  y0_dict=y0_dict)
    simulator.run()
    # Non-dimensional
    nondim_df = simulator.non_dim()
    nondim_df.to_csv(output_dir.joinpath(f"{model.NAME}_non_dim.csv"),
                     index=False)
    cs.line_plot(nondim_df.set_index("t"),
                 title=f"{model.NAME}: Example data (non-dimensional)",
                 ylabel=str(),
                 h=1.0,
                 filename=output_dir.joinpath(f"{model.NAME}_non_dim.png"))
    # Dimensional
    dim_df = simulator.dim(tau=eg_tau, start_date=start_date)
    dim_df.to_csv(output_dir.joinpath("dim.csv"), index=False)
    cs.line_plot(dim_df.set_index("Date"),
                 title=f"{model.NAME}: Example data (dimensional)",
                 h=eg_population,
                 y_integer=True,
                 filename=output_dir.joinpath(f"{model.NAME}_dim.png"))
    # Hyperparameter estimation of example data
    estimator = cs.Estimator(clean_df=dim_df,
                             model=model,
                             population=eg_population,
                             country="Example",
                             province=model.NAME,
                             tau=eg_tau)
    estimator.run()
    estimated_df = estimator.summary(name=model.NAME)
    estimated_df.loc["Setted"] = pd.Series({**set_param_dict, "tau": eg_tau})
    estimated_df["tau"] = estimated_df["tau"].astype(np.int64)
    estimated_df.to_csv(
        output_dir.joinpath(f"{model.NAME}_estimate_parameter.csv"),
        index=True)
    # Show the history of optimization
    estimator.history(
        filename=output_dir.joinpath(f"{model.NAME}_estimate_history.png"))
    # Show the accuracy as a figure
    estimator.accuracy(
        filename=output_dir.joinpath(f"{model.NAME}_estimate_accuracy.png"))