def join_with_divi_data(d_districts_data: dict) -> dict: d_divi_data = helper.read_json_file('cache/de-divi/de-divi-V3.json') for lk_id, l_lk_time_series in d_districts_data.items(): # all Berlin Districts are in divi at 11000 if lk_id[0:2] == '11': l_divi_time_series = d_divi_data["11000"] elif lk_id not in d_divi_data: continue # assert lk_id in d_divi_data, f"Error: LK {lk_id} missing in DIVI data" if lk_id[0:2] != '11': l_divi_time_series = d_divi_data[lk_id] d_divi_time_series = {} for d in l_divi_time_series: d_divi_time_series[d['Date']] = d for d in l_lk_time_series: if d['Date'] not in d_divi_time_series: continue d['DIVI_Intensivstationen_Covid_Prozent'] = d_divi_time_series[d['Date'] ]['faelle_covid_aktuell_proz'] d['DIVI_Intensivstationen_Betten_belegt_Prozent'] = d_divi_time_series[d['Date'] ]['betten_belegt_proz'] d_districts_data[lk_id] = l_lk_time_series return d_districts_data
def read_json_data() -> dict: """ reads downloaded cached json file contents renames some country names according to ref database calls prepare_time_series adds _Per_Million fields NO LONGER exports as json file returns as a dict """ d_json_downloaded = helper.read_json_file(file_cache) # rename some countries d_countries_to_rename = {} d_countries_to_rename['US'] = 'United States' d_countries_to_rename['Korea, South'] = 'South Korea' d_countries_to_rename['Taiwan*'] = 'Taiwan' d_countries_to_rename['Burma'] = 'Myanmar' d_countries_to_rename['Cote d\'Ivoire'] = 'Ivory Coast' d_countries_to_rename['West Bank and Gaza'] = 'Palestinian Territory' d_countries_to_rename['Timor-Leste'] = 'Timor Leste' d_countries_to_rename['Holy See'] = 'Vatican' for country_name_old, country_name_new in d_countries_to_rename.items(): d_json_downloaded[country_name_new] = d_json_downloaded[ country_name_old] del d_json_downloaded[country_name_old] d_countries = {} # re-format date using my date_format(y,m,d) function for country in d_json_downloaded.keys(): country_data = d_json_downloaded[country] l_time_series = [] pop = read_population(country) if pop != None: pop_in_million = pop / 1000000 else: pop_in_million = None for entry in country_data: d = {} # entry in country_data: s = entry['date'] l = s.split("-") d['Date'] = helper.date_format(int(l[0]), int(l[1]), int(l[2])) d['Cases'] = int(entry['confirmed']) d['Deaths'] = int(entry['deaths']) l_time_series.append(d) l_time_series = helper.prepare_time_series(l_time_series) for i in range(len(l_time_series)): d = l_time_series[i] # _Per_Million d = helper.add_per_million(d, pop_in_million) d_countries[country] = l_time_series return d_countries
def read_ref_data_countries() -> dict: d_countries_ref = {} d_ref_country_database = helper.read_json_file( 'data/ref_country_database.json') for key, d in d_ref_country_database.items(): d2 = {} code = d["ISO"] name = key if name == 'Republic of the Congo': name = 'Congo (Brazzaville)' elif name == 'Democratic Republic of the Congo': name = 'Congo (Kinshasa)' pop = d['Population'] if pop != None: pop = int(pop) if pop == 0: pop = None continent = d['Continent'] # move Turkey from Asia to Europe if name == 'Turkey': continent = 'EU' if continent != None: if continent == 'AF': continent = 'Africa' elif continent == 'AN': continent = 'Antarctica' elif continent == 'AS': continent = 'Asia' elif continent == 'EU': continent = 'Europe' elif continent == 'NA': continent = 'North America' elif continent == 'SA': continent = 'South America' elif continent == 'OC': continent = 'Oceania' else: assert 1 == 2, f"E: continent missing for {name}" d2["Code"] = code d2['Continent'] = continent d2["Population"] = pop d_countries_ref[name] = d2 return d_countries_ref
def join_with_divi_data() -> dict: d_divi_data = helper.read_json_file('cache/de-divi/de-divi-V3-states.json') for bl_code, l_time_series in d_states_data.items(): assert bl_code in d_divi_data, f"Error: BL {bl_code} missing in DIVI data" if bl_code[0:2] != '11': l_divi_time_series = d_divi_data[bl_code] d_divi_time_series = {} for d in l_divi_time_series: d_divi_time_series[d['Date']] = d for d in l_time_series: if d['Date'] not in d_divi_time_series: continue d['DIVI_Intensivstationen_Covid_Prozent'] = d_divi_time_series[ d['Date']]['faelle_covid_aktuell_proz'] d['DIVI_Intensivstationen_Betten_belegt_Prozent'] = d_divi_time_series[ d['Date']]['betten_belegt_proz'] d_states_data[bl_code] = l_time_series return d_states_data
'#52be80', '#27ae60', '#229954', '#1e8449', '#196f3d', '#145a32' ] } d_all_date_data = {} l_month = [] count = 0 for f in glob.glob('data/de-districts/de-district_timeseries-*.json'): count += 1 lk_id = int(re.search('^.*de-district_timeseries\-(\d+)\.json$', f).group(1)) l = helper.read_json_file(f) for d in l: date = d['Date'] thisMonth = date[0:7] # skip old data points if thisMonth in ('2020-01', '2020-02'): continue # add to list of months for later creations of 1 gif per month if count == 1: if thisMonth not in l_month: l_month.append(thisMonth) if not d['Date'] in d_all_date_data: d_all_date_data[d['Date']] = {} del d['Timestamp'], d['Date'], d['Days_Past'], d['Days_Since_2nd_Death'] d_all_date_data[date][lk_id] = d del f, d, l, count
""" import sys import csv from datetime import datetime import re # my helper modules import helper filename = 'data/de-divi/de-divi-V2' datestr = datetime.now().strftime("%Y-%m-%d") d_data_all = helper.read_json_file(filename + '.json') del d_data_all['Deutschland'] # this is re-calculated at each run # check if date is already in data set if d_data_all['Bayern'][-1]['Date'] == datestr: print( f"WARNING: Date: {datestr} already in data file: {filename+'.json'} --> SKIPPING" ) sys.exit() def extractAreaTagTitleData(cont: str) -> list: # Example # <area shape="RECT" title="Thüringen # Anzahl COVID-19 Patienten/innen in intensivmedizinischer Behandlung: 63
# my helper modules import helper unit = 1000000 meta = { "colour": ["#fee5d9", "#fcbba1", "#fc9272", "#fb6a4a", "#de2d26", "#a50f15"] } # date = datetime.date.today() # date_str = date.strftime("%F") values = [] l_data = helper.read_json_file( 'data/de-districts/de-districts-results-V2.json') date_str = l_data[0]['Date'] main = {} for d in l_data: area = int(d['LK_ID']) pcapita = d['Cases_Last_Week_Per_Million'] main[area] = {'pcapita': pcapita} values.append(main[area]["pcapita"]) # generate color scale range q = statistics.quantiles(values, n=100, method="inclusive") step = math.sqrt(statistics.mean(values) - q[0]) / 3 threshold = [0, 0, 0, 0, 0, 0] for i in range(1, 6):
elif continent == 'SA': continent = 'South America' elif continent == 'OC': continent = 'Oceania' return continent def read_country_code(country_name: str) -> str: code = None d = get_ref_country_dict(country_name) if d != {}: code = d['ISO'] return code d_ref_country_database = helper.read_json_file( 'data/ref_country_database.json') d_selected_countries = read_ref_selected_countries() if not helper.check_cache_file_available_and_recent( fname=file_cache, max_age=900, verbose=True): download_new_data() d_countries_timeseries = read_json_data() check_for_further_interesting_countries() fit_doubling_time() extract_latest_date_data()