1
1
import numpy as np
2
2
from pydantic import validate_arguments
3
3
4
- from kmm import CarDirection
4
+ from kmm import CarDirection , PositionAdjustment
5
5
from kmm .positions .positions import Positions
6
6
from kmm .header .header import Header
7
7
8
8
9
9
@validate_arguments (config = dict (arbitrary_types_allowed = True ))
10
- def sync_frame_index (positions : Positions , header : Header ):
10
+ def sync_frame_index (positions : Positions , header : Header , adjustment : PositionAdjustment ):
11
11
12
12
validate_meter_increments (positions )
13
13
frame_index = (
@@ -17,19 +17,23 @@ def sync_frame_index(positions: Positions, header: Header):
17
17
- header .sync
18
18
) / 10
19
19
).astype (int )
20
- pad = np .zeros (8 )
21
- pad .fill (np .nan )
22
20
23
21
if header .car_direction == CarDirection .A :
24
- frame_index = np .concatenate ([pad , frame_index [8 :]])
22
+ dataframe = (
23
+ positions .dataframe
24
+ .iloc [adjustment :]
25
+ .assign (frame_index = frame_index [adjustment :])
26
+ )
25
27
elif header .car_direction == CarDirection .B :
26
- frame_index = np .concatenate ([frame_index [:- 8 ], pad ])
28
+ dataframe = (
29
+ positions .dataframe
30
+ .iloc [:- adjustment ]
31
+ .assign (frame_index = frame_index [:- adjustment ])
32
+ )
27
33
else :
28
34
raise ValueError (header .car_direction )
29
35
30
- return positions .replace (
31
- dataframe = positions .dataframe .assign (frame_index = frame_index )
32
- )
36
+ return positions .replace (dataframe = dataframe )
33
37
34
38
35
39
def validate_meter_increments (positions ):
@@ -50,7 +54,7 @@ def test_sync_frame_index_kmm():
50
54
positions = Positions .from_path ("tests/ascending_B.kmm" )
51
55
header = Header .from_path ("tests/ascending_B.hdr" )
52
56
assert (
53
- sync_frame_index (positions , header )
57
+ sync_frame_index (positions , header , PositionAdjustment . WIRE_CAMERA )
54
58
.dataframe ["frame_index" ].iloc [0 ] == 659
55
59
)
56
60
@@ -61,6 +65,6 @@ def test_sync_frame_index_kmm2():
61
65
positions = Positions .from_path ("tests/ascending_B.kmm2" )
62
66
header = Header .from_path ("tests/ascending_B.hdr" )
63
67
assert (
64
- sync_frame_index (positions , header )
68
+ sync_frame_index (positions , header , PositionAdjustment . WIRE_CAMERA )
65
69
.dataframe ["frame_index" ].iloc [0 ] == - 808
66
70
)
0 commit comments