COCOA 接触確認アプリ
COCOA 接触確認アプリで出力されるログファイルを読み込んで、接触リスクは低いがニアミス(?)している可能性をチェックしてみようと思いました。
きっかけは元祖のサイト
COCOAログをチェックしてくれるサイト(公式?)があったので、試してみたら、結構ニアミスしているようでした。
COCOAログチェッカー
さらに、気になって調べてみたら、ソースも公開されていました。
https://github.com/ktansai/COVID-19-ExposeChecker
Pythonプログラムの参考にしたサイト
「COCOAデータを読む」というサイトに、COCOAログファイルを読む Python プログラムがありましたので、早速使ってみました。
自分なりにプログラムを変更してみた
上記のプログラムでも結果は出ますが、全記録が出てくるので、
・割と近くで検出されたものだけ(MinAttenuationDb が 100未満のもの)を表示
するように変更しました。
変更後のソース
import json
import pandas as pd
with open("exposure_data.json") as f:
exposure = json.load(f)
print("Date Infectiousness TypicalAttenuationDb MinAttenuationDb SecondsSinceLastScan")
ts = ""
for x in exposure["exposure_windows"]:
t = pd.Timestamp(x['DateMillisSinceEpoch'], unit='ms')
td = str(t)[:10] + " " + str(x["Infectiousness"])
for y in x["ScanInstances"]:
if y["MinAttenuationDb"] < 100 :
if td != ts :
print()
print(td, end="")
ts = td
print(" ", y["TypicalAttenuationDb"], y["MinAttenuationDb"],
y["SecondsSinceLastScan"], end="")
print()
このプログラム「cocoaLogChecker.py」と、COCOA接触確認アプリで出力された JSONファイル「exposure_data.json」を同じディレクトリに置いて、ターミナルからコマンドで
$ python cocoaLogChecker.py
と実行させると、ログの開始日から現在までの結果が表示されます。
2022-07-24 2 97 97 60
2022-07-25 2 79 79 60 87 76 120 91 84 120 92 92 180 93 82 120 95 95 120
2022-07-31 2 97 97 60 95 95 60 97 97 60 98 98 60 90 90 60 96 96 120 90 81 60 77 68 60
2022-08-02 2 71 64 120 70 65 120 71 69 60 83 72 120
2022-08-03 2 90 78 60
2022-08-04 2 87 87 60 98 93 60
2022-08-05 2 80 80 60 94 94 60
2022-08-06 2 99 99 60
2022-08-07 2 96 96 60 97 97 60
結構ニアミスしていたようです。
日付以外の数値の意味については、上記の「COCOAデータを読む」のサイトをご覧ください。
(私も良くわかっていません...)
後書きなど...
このプログラムでは全期間を対象としていますが、本家のように2週間以前のものは処理しないようにしたいところですが、面倒で組み込んでいません。
M1 Mac mini で動かしましたが、Python をどのように入れたのか覚えていません。
で、M1 MacBook Air で動かそうとしたら、Pythonが入っていませんでした。
基本的には、このサイトが参考になりますしたが、最初の Home brew のインストールでつまづく
https://www.python.jp/install/macos/install_python.html
M1 macOSに Home brew をインストールするには、このサイトの情報を利用する
https://docs.brew.sh/Installation
また pip もアップデートして、 pandas をインストールする
https://www.geeksforgeeks.org/how-to-install-python-pandas-on-macos/
で、Airでは Python3 になっています。