Skip to content

Commit 3591af0

Browse files
author
FelixAbrahamsson
committed
improve: validate meter increments to be somewhat consistent
1 parent 1866b01 commit 3591af0

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

kmm/positions/sync_frame_index.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@validate_arguments(config=dict(arbitrary_types_allowed=True))
1010
def sync_frame_index(positions: Positions, header: Header):
1111

12+
validate_meter_increments(positions)
1213
frame_index = (
1314
(
1415
positions.dataframe["centimeter"].values
@@ -31,6 +32,18 @@ def sync_frame_index(positions: Positions, header: Header):
3132
)
3233

3334

35+
def validate_meter_increments(positions):
36+
for (track_section, kilometer), group in (
37+
positions.dataframe
38+
.groupby(["track_section", "kilometer"])
39+
):
40+
diffs = np.sign(group["meter"].values[1:] - group["meter"].values[:-1])
41+
if len(diffs) >= 10 and (diffs > 0).mean() < 0.9 and (diffs < 0).mean() < 0.9:
42+
raise ValueError(
43+
f"Inconsistent directions at track_section {track_section}, kilometer {kilometer}."
44+
)
45+
46+
3447
def test_sync_frame_index_kmm():
3548
from kmm import Header
3649

0 commit comments

Comments
 (0)