Example #1
0
from epimargin.smoothing import notched_smoothing
from epimargin.utils import cwd

# model details
CI = 0.95
smoothing = 14
infectious_period = 10

root = cwd()
data = root / "data"
figs = root / "figs"

data.mkdir(exist_ok=True)
figs.mkdir(exist_ok=True)

plt.set_theme("substack")
# define data versions for api files
paths = {
    "v3": [data_path(i) for i in (1, 2)],
    "v4": [data_path(i) for i in range(3, 26)]
}

# for target in paths['v3'] + paths['v4']:
#     download_data(data, target)

df = load_all_data(v3_paths=[data / filepath for filepath in paths['v3']],
                   v4_paths=[data / filepath for filepath in paths['v4']])
data_recency = str(df["date_announced"].max()).split()[0]
run_date = str(pd.Timestamp.now()).split()[0]

ts = get_time_series(df, "detected_state")
Example #2
0
import sys
from itertools import product

import epimargin.plots as plt
import pandas as pd
from epimargin.estimators import analytical_MPVS
from epimargin.etl.commons import download_data
from epimargin.etl.covid19india import data_path, get_time_series, load_all_data
from epimargin.smoothing import notched_smoothing
from epimargin.utils import cwd

import seaborn as sns

if len(sys.argv) > 1:
    plt.set_theme(sys.argv[1])

# model details
CI = 0.95
smoothing = 7

root = cwd()
data = root / "data"
figs = root / "figs"

data.mkdir(exist_ok=True)
figs.mkdir(exist_ok=True)

# define data versions for api files
paths = {
    "v3": [data_path(i) for i in (1, 2)],
    "v4": [data_path(i) for i in range(3, 26)]
Example #3
0
from google.cloud import storage

dissolved_states = [
    "Delhi", "Chandigarh", "Manipur", "Sikkim",
    "Dadra And Nagar Haveli And Daman And Diu", "Andaman And Nicobar Islands",
    "Telangana", "Goa", "Assam"
]
island_states = ["Lakshadweep", "Puducherry"]
app = Flask(__name__)

CI = 0.95
smoothing = 10

print("Container starting.")
plt.rebuild_font_cache()
plt.set_theme("twitter")

bucket_name = "daily_pipeline"
bucket = storage.Client().bucket(bucket_name)


@app.route("/state/<state_code>")
def generate_report(state_code: str):
    print(f"Received request for {state_code}.")
    state = state_code_lookup[state_code]
    normalized_state = state.replace(" and ", " And ").replace(" & ", " And ")
    blobs = {
        f"pipeline/est/{state_code}_state_Rt.csv":
        f"/tmp/state_Rt_{state_code}.csv",
        f"pipeline/est/{state_code}_district_Rt.csv":
        f"/tmp/district_Rt_{state_code}.csv",
Example #4
0
# preliminary set up
from itertools import cycle

import epimargin.plots as plt
import numpy as np
import pandas as pd
from epimargin.utils import setup

(data, figs) = setup()
plt.set_theme("minimal")

# download, load, and clean data
from epimargin.etl import download_data
from epimargin.smoothing import notched_smoothing

# a snapshot of this csv is checked into the repo at data/tutorial_timeseries.csv in case you run into download problems
download_data(data, "districts.csv",
              "https://api.covid19india.org/csv/latest/")

daily_reports = pd.read_csv(data / "districts.csv", parse_dates = ["Date"])\
    .rename(str.lower, axis = 1)\
    .set_index(["state", "district", "date"])\
    .sort_index()\
    .loc["Maharashtra", "Mumbai"]
daily_cases = daily_reports["confirmed"]\
    .diff()\
    .clip(lower = 0)\
    .dropna()\

smoother = notched_smoothing(window=5)
smoothed_cases = pd.Series(data=smoother(daily_cases), index=daily_cases.index)