Skip to content

Commit 026e91b

Browse files
authored
feat: only use last three years for median calculation
1 parent 7b91c19 commit 026e91b

6 files changed

+21
-3732
lines changed

ohsome_quality_api/indicators/user_activity/indicator.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,14 @@ def calculate(self):
6969
return
7070
else:
7171
self.result.description = ""
72+
self.result.value = int(median(self.bin_total.users_abs[1:37]))
7273
label_description = self.templates.label_description[self.result.label]
7374
self.result.description += Template(
7475
self.templates.result_description
7576
).substitute(
76-
median_users=f"{int(median(self.bin_total.users_abs))}",
77-
from_timestamp=self.bin_total.timestamps[-1].strftime("%b %Y"),
78-
to_timestamp=self.bin_total.timestamps[0].strftime("%b %Y"),
77+
median_users=self.result.value,
78+
from_timestamp=self.bin_total.timestamps[37].strftime("%b %Y"),
79+
to_timestamp=self.bin_total.timestamps[1].strftime("%b %Y"),
7980
)
8081
self.result.description += "\n" + label_description
8182

@@ -96,22 +97,23 @@ def create_figure(self):
9697
values_for_mean = values[1:]
9798
for i in range(len(values_for_mean) + 1):
9899
if i == 0:
100+
weighted_avg.append(None)
99101
continue
100-
start = max(0, i - window + 1)
102+
start = max(1, i - window + 1)
101103
window_vals = values_for_mean[start : i + 1]
102104
window_weights = weights[-len(window_vals) :]
103105
avg = np.dot(window_vals, window_weights) / window_weights.sum()
104106
weighted_avg.append(avg)
105107

106108
# regression trend line for the last 36 months
107-
if len(values) >= 36:
108-
x = np.arange(len(values))
109-
x_last = x[:36]
110-
y_last = np.array(values[:36])
109+
if len(weighted_avg) >= 36:
110+
x = np.arange(len(weighted_avg))
111+
x_last = x[1:37]
112+
y_last = np.array(weighted_avg[1:37])
111113

112114
coeffs = np.polyfit(x_last, y_last, 1)
113115
trend_y = np.polyval(coeffs, x_last)
114-
trend_timestamps = timestamps[:36]
116+
trend_timestamps = timestamps[1:37]
115117
else:
116118
trend_timestamps = []
117119
trend_y = []

tests/approvals/integrationtests/indicators/test_user_activity.py-TestFigure-test_create_figure.approved.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
"data": [
33
{
44
"customdata": [
5+
[
6+
0,
7+
"Oct 2025"
8+
],
59
[
610
0,
711
"Sep 2025"
@@ -874,6 +878,7 @@
874878
"name": "Users per Month",
875879
"type": "bar",
876880
"x": [
881+
"2025-10-01T00:00:00Z",
877882
"2025-09-01T00:00:00Z",
878883
"2025-08-01T00:00:00Z",
879884
"2025-07-01T00:00:00Z",
@@ -1092,6 +1097,7 @@
10921097
"2007-10-01T00:00:00Z"
10931098
],
10941099
"y": [
1100+
0,
10951101
0,
10961102
20,
10971103
21,
@@ -1320,6 +1326,7 @@
13201326
"name": "12-Month Weighted Avg",
13211327
"type": "scatter",
13221328
"x": [
1329+
"2025-10-01T00:00:00Z",
13231330
"2025-09-01T00:00:00Z",
13241331
"2025-08-01T00:00:00Z",
13251332
"2025-07-01T00:00:00Z",
@@ -1538,6 +1545,8 @@
15381545
"2007-10-01T00:00:00Z"
15391546
],
15401547
"y": [
1548+
null,
1549+
20.0,
15411550
20.52173913043478,
15421551
18.87878787878788,
15431552
22.333333333333332,
@@ -1804,7 +1813,7 @@
18041813
"2022-10-01T00:00:00Z"
18051814
],
18061815
"y": {
1807-
"bdata": "EX7Mzj9hMUBCwwq6RrQxQHIISaVNBzJAo02HkFRaMkDTksV7W60yQATYA2diADNANB1CUmlTM0BlYoA9cKYzQJanvih3+TNAxuz8E35MNED3MTv/hJ80QCd3eeqL8jRAWLy31ZJFNUCIAfbAmZg1QLlGNKyg6zVA6otyl6c+NkAa0bCCrpE2QEoW72215DZAe1stWbw3N0CsoGtEw4o3QNzlqS/K3TdADSvoGtEwOEA+cCYG2IM4QG61ZPHe1jhAnvqi3OUpOUDPP+HH7Hw5QACFH7PzzzlAMMpdnvoiOkBhD5yJAXY6QJJU2nQIyTpAwpkYYA8cO0Dy3lZLFm87QCMklTYdwjtAVGnTISQVPECErhENK2g8QLTzT/gxuzxA",
1816+
"bdata": "9I414T0CM0AMyyZ6aUAzQCQHGBOVfjNAPEMJrMC8M0BUf/pE7PozQGy7690XOTRAhPfcdkN3NECcM84Pb7U0QLRvv6ia8zRAzKuwQcYxNUDk56Ha8W81QPwjk3MdrjVAFGCEDEnsNUAsnHWldCo2QETYZj6gaDZAXBRY18umNkB0UElw9+Q2QIyMOgkjIzdApMgrok5hN0C8BB07ep83QNVADtSl3TdA7Xz/bNEbOEAFufAF/Vk4QB314Z4omDhANTHTN1TWOEBNbcTQfxQ5QGWptWmrUjlAfeWmAteQOUCVIZibAs85QK1diTQuDTpAxZl6zVlLOkDd1WtmhYk6QPURXf+wxzpADU5OmNwFO0Alij8xCEQ7QD3GMMozgjtA",
18081817
"dtype": "f8"
18091818
}
18101819
}

0 commit comments

Comments
 (0)