X-Git-Url: https://plomlompom.com/repos/?p=berlin-corona-table;a=blobdiff_plain;f=enhance_table.py;h=c5c11c22bfe1d52518243e13a279ad800c77301d;hp=3e36e0e40d0dc51913ef55d0f5d4ef8fe1434c9f;hb=dc7fd6818afda18eb8e2d0c8c99af29ccf3655c1;hpb=b80b98afa99c2d7c406673f3318538828b6a4819 diff --git a/enhance_table.py b/enhance_table.py index 3e36e0e..c5c11c2 100755 --- a/enhance_table.py +++ b/enhance_table.py @@ -32,9 +32,10 @@ translate = { 'TS': 'Tempelhof-Schöneberg', 'TK': 'Treptow-Köpenick', 'sum': 'all of Berlin', - 'wsum': 'sum of new infections for last 7 days', - 'wavg': 'per-day average of new infections for last 7 days', - 'winc': 'incidence (x per 100k inhabitants) of new infections for last 7 days', + '+': 'new infections counted that day', + 'Σ': 'sum of new infections for last 7 days', + 'Ø': 'per-day average of new infections for last 7 days', + 'i': 'incidence (x per 100k inhabitants) of new infections for last 7 days', } # Read infections table path and output type. @@ -94,13 +95,13 @@ for line in lines[1:]: db[district][date] = {'new_infections': int(district_data)} sorted_dates.sort() -# Define and move sum_district from end to start. +# In LaGeSo's data, the last "district" is actually the sum of all districts / +# the whole of Berlin. For our district order, move it in front of the other +# districts, as its numbers are the most interesting, so in the table views +# we want to see it first. sum_district = sorted_districts.pop() sorted_districts.insert(0, sum_district) -# In LaGeSo's data, the last "district" is actually the sum of all districts / -# the whole of Berlin. -# # Fail on any day where the "sum" district's new infections are not the proper # sum of the individual districts new infections. Yes, sometimes Lageso sends # data that is troubled in this way. It will then have to be fixed manually in @@ -154,24 +155,24 @@ th { text-align: left; vertical-align: bottom; } """) sorted_dates.reverse() for district in sorted_districts: - long_form = translate[district] # Wrap in div because the vertical orientation otherwise fails # in Chromium. - print('
%s
' % long_form) + print('
%s
' % + translate[district]) print('') print('') # In Chromium, the th only stay fixed if also given this class. print('date') - print('') + print('?') for district in sorted_districts: - print('%s' % district) + print('%s' % + (translate[district], district)) print('') for date in sorted_dates: print('') print('%s' % date) print('') - print('') - for abbr in ['wsum', 'wavg', 'winc']: + for abbr in ['+', 'Σ', 'Ø', 'i']: print('' % (translate[abbr], abbr)) print('
new
%s
') @@ -195,6 +196,11 @@ th { text-align: left; vertical-align: bottom; } print('') print('') print('') + print('

Symbols

') + print('
') + for abbr in ['+', 'Σ', 'Ø', 'i']: + print('
%s
%s
' % (abbr, translate[abbr])) + print('
') print('') # Optimized for in-terminal curl. @@ -211,8 +217,7 @@ Abbrevations/explanations: intro += "%s: %s\n" % (k, translate[k]) intro += """ Source code: https://plomlompom.com/repos/?p=berlin-corona-table -HTML view: https://plomlompom.com/berlin_corona.html -""" +HTML view: https://plomlompom.com/berlin_corona.html""" print(intro) # Output table of enhanced daily infection data, newest on top, @@ -223,44 +228,30 @@ HTML view: https://plomlompom.com/berlin_corona.html # Week table header. if weekday_count == 0: - print(' '*11, ' '.join(sorted_districts[:-1]), - sorted_districts[-1], 'wsum', ' wavg', 'winc') - week_start_date = date + print() + print(' '*13, ' '.join(sorted_districts)) + print('-'*77) - # Day data line. + # Day table. + print(date) new_infections = [] + weekly_sums = [] + weekly_avgs = [] + weekly_incs = [] for district in sorted_districts: - new_infections += [db[district][date]['new_infections']] - week_sum = week_avg = week_inc = '' - sum_district_data = db[sum_district][date] - if 'week_sum' in sum_district_data: - week_sum = '%4s' % sum_district_data['week_sum'] - if 'week_average' in sum_district_data: - week_avg = '%5.1f' % sum_district_data['week_average'] - if 'week_incidence' in sum_district_data: - week_inc = '%4.1f' % sum_district_data['week_incidence'] - print(date, ' '.join(['%3s' % infections - for infections in new_infections]), - week_sum, week_avg, week_inc) - - # Maintain 7-day cycle. + district_day_data = db[district][date] + new_infections += [district_day_data['new_infections']] + if 'week_sum' in district_day_data: + weekly_sums += [district_day_data['week_sum']] + if 'week_average' in district_day_data: + weekly_avgs += [district_day_data['week_average']] + if 'week_incidence' in district_day_data: + weekly_incs += [district_day_data['week_incidence']] + print('+', ' '*11, ' '.join(['%3s' % i for i in new_infections])) + print('Σ', ' '*10, ' '.join(['%4s' % wsum for wsum in weekly_sums])) + print('Ø', ' '*9, ''.join(['%5.1f' % wavg for wavg in weekly_avgs])) + print('i', ' '*9, ''.join(['%5.1f' % winc for winc in weekly_incs])) weekday_count += 1 if weekday_count != 7: continue weekday_count = 0 - - # After each 7 days, print summary for individual districts. - weekly_sums = [] - weekly_avgs = [] - weekly_incs = [] - for district in sorted_districts[1:]: - weekly_sums += [db[district][week_start_date]['week_sum']] - weekly_avgs += [db[district][week_start_date]['week_average']] - weekly_incs += [db[district][week_start_date]['week_incidence']] - print() - print('district stats for week from %s to %s:' % (date, week_start_date)) - print(' '*7, ' '.join(sorted_districts[1:])) - print('wsum', ' '.join(['%5.1f' % wsum for wsum in weekly_sums])) - print('wavg', ' '.join(['%5.1f' % wavg for wavg in weekly_avgs])) - print('winc', ' '.join(['%5.1f' % winc for winc in weekly_incs])) - print()