84 lines
2.3 KiB
Python
84 lines
2.3 KiB
Python
import time
|
|
from datetime import datetime
|
|
|
|
import numpy as np
|
|
|
|
|
|
def print_filters(filters):
|
|
_res = ""
|
|
for k, v in filters.items():
|
|
_res += f"{k}: {v}\n"
|
|
|
|
|
|
def pprint(v):
|
|
return f"\tMédia: {v[0]} \u00b1 {v[1]}; 1o Quartil: {v[3]}; Mediana: {v[2]}; 3o Quartil: {v[4]}; Máximo: {v[5]}; Mínimo: {v[6]}"
|
|
|
|
|
|
def stats(data):
|
|
_stats = f"===Estatística==\nNúmero total de eventos: {len(data)}\n"
|
|
aux = []
|
|
currMonth: datetime = data[0]["DateTime"]
|
|
idx = 0
|
|
while idx < len(data):
|
|
if data[idx]["DateTime"].month == currMonth.month:
|
|
aux.append(data[idx])
|
|
idx += 1
|
|
else:
|
|
m = calc_mag(aux)
|
|
d = calc_depth(aux)
|
|
aux = []
|
|
_stats += f"{currMonth.strftime('%Y-%m')}:\n\tMagnitude: {pprint(m)}\n\tProfundidade: {pprint(d)}\n\n"
|
|
currMonth = data[idx]["DateTime"]
|
|
|
|
m = calc_mag(aux)
|
|
d = calc_depth(aux)
|
|
_stats += f"{currMonth.strftime('%Y-%m')}:\nMagnitude: {pprint(m)}\nProfundidade: {pprint(d)}\n"
|
|
|
|
fname = f"stats-{time.time_ns()}.txt"
|
|
with open(fname, "wb") as fp:
|
|
fp.write(_stats.encode("utf-8"))
|
|
|
|
# print(_stats)
|
|
|
|
|
|
def calc_depth(data):
|
|
if len(data) == 0:
|
|
return 0
|
|
depths = np.array([v["Depth"] for v in data], dtype=float)
|
|
quantile = np.quantile(depths, [0.25, 0.75])
|
|
return list(
|
|
map(
|
|
float,
|
|
(
|
|
round(np.average(depths), 3),
|
|
round(np.std(depths), 3),
|
|
round(np.median(depths), 3),
|
|
round(quantile[0], 3),
|
|
round(quantile[1], 3),
|
|
np.min(depths),
|
|
np.max(depths),
|
|
),
|
|
)
|
|
)
|
|
|
|
|
|
def calc_mag(data):
|
|
if len(data) == 0:
|
|
return 0
|
|
mags = np.array([v["Magnitudes"]["L"]["Magnitude"] for v in data], dtype=float)
|
|
quantile = np.quantile(mags, [0.25, 0.75])
|
|
return list(
|
|
map(
|
|
float,
|
|
(
|
|
round(np.average(mags), 3),
|
|
round(np.std(mags), 3),
|
|
round(np.median(mags), 3),
|
|
round(quantile[0], 3),
|
|
round(quantile[1], 3),
|
|
np.min(mags),
|
|
np.max(mags),
|
|
),
|
|
)
|
|
)
|