mh- / diagnosis-keys Goto Github PK
View Code? Open in Web Editor NEWTools for working with Diagnosis Keys from the COVID-19 Exposure Notification / Corona-Warn-App system
License: GNU Affero General Public License v3.0
Tools for working with Diagnosis Keys from the COVID-19 Exposure Notification / Corona-Warn-App system
License: GNU Affero General Public License v3.0
Thanks for your quick update to version 1.5!
After v1.5 released and #12 got implemented, is it still possible to estimate the number of keys uploaded per user with some confidence?
I'm referring to this output for example:
87 user(s) found.
They submitted these numbers of keys:
6 user(s): 1 Diagnosis Key(s)
2 user(s): 2 Diagnosis Key(s)
1 user(s): 3 Diagnosis Key(s)
4 user(s): 4 Diagnosis Key(s)
2 user(s): 5 Diagnosis Key(s)
3 user(s): 6 Diagnosis Key(s)
1 user(s): 7 Diagnosis Key(s)
1 user(s): 8 Diagnosis Key(s)
2 user(s): 9 Diagnosis Key(s)
2 user(s): 10 Diagnosis Key(s)
1 user(s): 11 Diagnosis Key(s)
1 user(s): 12 Diagnosis Key(s)
61 user(s): 13 Diagnosis Key(s)
0 keys not parsed (0 without padding).
87 / 6*1, 2*2, 1*3, 4*4, 2*5, 3*6, 1*7, 1*8, 2*9, 2*10, 1*11, 1*12, 61*13
Would be really useful to be able to export RPI keys (perhaps a CSV file) with their appropriate time period. You've got really useful comparison in the app, but it would be interesting to compare to other data sources
The next version of the CWA will contain new TRL profiles depending on the symptom status of the patient and the onset. This will significantly increase the difficulty to accurately estimate the number of people that shared their diagnosis keys. However, I think it should be still possible to estimate the number of people with a certain accuracy.
var transmissionRiskVector: [Int32] {
switch self {
case .noInformation:
return [5, 6, 7, 7, 7, 6, 4, 3, 2, 1, 1, 1, 1, 1, 1]
case .nonSymptomatic:
return [4, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
case .symptomaticWithUnknownOnset:
return [5, 6, 8, 8, 8, 7, 5, 3, 2, 1, 1, 1, 1, 1, 1]
case .lastSevenDays:
return [4, 5, 6, 7, 7, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1]
case .oneToTwoWeeksAgo:
return [1, 1, 1, 1, 2, 3, 4, 5, 6, 6, 7, 7, 6, 6, 4]
case .moreThanTwoWeeksAgo:
return [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5]
case .daysSinceOnset(let daysSinceOnset):
assert(daysSinceOnset < 22)
return SymptomsOnset.daysSinceOnsetRiskVectors[min(daysSinceOnset, 21)]
}
// [...]
private static let daysSinceOnsetRiskVectors: [[Int32]] = [
[8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1],
[6, 8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1],
[5, 6, 8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1, 1],
[3, 5, 6, 8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1, 1],
[2, 3, 5, 6, 8, 8, 8, 7, 6, 4, 2, 1, 1, 1, 1],
[2, 2, 3, 5, 6, 8, 8, 8, 7, 6, 4, 2, 1, 1, 1],
[1, 2, 2, 3, 5, 6, 8, 8, 8, 7, 6, 4, 2, 1, 1],
[1, 1, 2, 2, 3, 5, 6, 8, 8, 8, 7, 6, 4, 2, 1],
[1, 1, 1, 2, 2, 3, 5, 6, 8, 8, 8, 7, 6, 4, 2],
[1, 1, 1, 1, 2, 2, 3, 5, 6, 8, 8, 8, 7, 6, 4],
[1, 1, 1, 1, 1, 2, 2, 3, 5, 6, 8, 8, 8, 7, 6],
[1, 1, 1, 1, 1, 1, 2, 2, 3, 5, 6, 8, 8, 8, 7],
[1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, 6, 8, 8, 8],
[1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, 6, 8, 8],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, 6, 8],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, 6],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 5],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]
Can you please add a License to your project? I would like to include your code in my project.
Currently the stats aren't updated anymore.
Is there an issue within your part - or is it an upstream issue?
@mh-
May be you could help me.
On 01.07.2020 17:00 there was a key-sequence
| risk| date | keys|
| 7 | 18.06. | 10/10 |
| 8 | 19.06. | 10/10 |
| 7 | 20.06. | 10/10 |
| 5 | 21.06. | 10/10 |
| 3 | 22.06. | 10/10 |
| 2 | 24.06. | 10/10 |
| 1 | 25.06. | 10/10 |
| 1 | 28.06. | 10/10 |
| 1 | 29.06. | 10/10 |
| 1 | 30.06. | 10/10 |
published by one user.
But I'm not able to find out the code in the corona-warn-app, that causes the remove of the | 6 | 17.06.|10/10| key.
I believe it has something to do with the age of 17.06. It is just one day to old.
I know the other bugs, (wrong order, wrong risk values), but that do not explain the removal.
Ever since the CWA supports multiple countries, I'm wondering how you deal with that fact?
I'm very curious how the setup is:
Obviously this has implications for the interpretation of key numbers. I somehow assume that the dashboards have been able to filter to Germany etc. but it'd be reassuring if you could confirm how this works. Thanks!
I had a look at the plain text output of the parser as available here: https://ctt.pfstr.de/plaintext/2020-12-22.txt
I'm a bit perplexed by the "Report type" saying "Self diagnosis" and "Recursive". You didn't choose those names yourself, right? These are definitions made by CWA. Self report surely isn't a thing as of now, that must be a mistake somewhere.
Are the official names decoupled from how the transmission levels are actually determined?
Or is the problem that verification key version 1 is being parsed, but version 2 definitions are used?
Can you say a little about v1 vs v2? Are both available, the CWA now uses v2 but the parser is still using v1?
The TEK file format has changed:
https://developers.google.com/android/exposure-notifications/exposure-key-file-format
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.