-
Notifications
You must be signed in to change notification settings - Fork 0
/
io_f.py
104 lines (84 loc) · 3.26 KB
/
io_f.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
from dataclasses import dataclass
import numpy as np
@dataclass
class ReadData:
acce: np.ndarray
acce_uncali: np.ndarray
gyro: np.ndarray
gyro_uncali: np.ndarray
magn: np.ndarray
magn_uncali: np.ndarray
ahrs: np.ndarray
wifi: np.ndarray
ibeacon: np.ndarray
waypoint: np.ndarray
def read_data_file(data_filename):
acce = []
acce_uncali = []
gyro = []
gyro_uncali = []
magn = []
magn_uncali = []
ahrs = []
wifi = []
ibeacon = []
waypoint = []
with open(data_filename, 'r', encoding='utf-8') as file:
lines = file.readlines()
for line_data in lines:
line_data = line_data.strip()
if not line_data or line_data[0] == '#':
continue
line_data = line_data.split('\t')
if line_data[1] == 'TYPE_ACCELEROMETER':
acce.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_ACCELEROMETER_UNCALIBRATED':
acce_uncali.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_GYROSCOPE':
gyro.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_GYROSCOPE_UNCALIBRATED':
gyro_uncali.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_MAGNETIC_FIELD':
magn.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_MAGNETIC_FIELD_UNCALIBRATED':
magn_uncali.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_ROTATION_VECTOR':
ahrs.append([int(line_data[0]), float(line_data[2]), float(line_data[3]), float(line_data[4])])
continue
if line_data[1] == 'TYPE_WIFI':
sys_ts = line_data[0]
ssid = line_data[2]
bssid = line_data[3]
rssi = line_data[4]
lastseen_ts = line_data[6]
wifi_data = [sys_ts, ssid, bssid, rssi, lastseen_ts]
wifi.append(wifi_data)
continue
if line_data[1] == 'TYPE_BEACON':
ts = line_data[0]
uuid = line_data[2]
major = line_data[3]
minor = line_data[4]
rssi = line_data[6]
ibeacon_data = [ts, '_'.join([uuid, major, minor]), rssi]
ibeacon.append(ibeacon_data)
continue
if line_data[1] == 'TYPE_WAYPOINT':
waypoint.append([int(line_data[0]), float(line_data[2]), float(line_data[3])])
acce = np.array(acce)
acce_uncali = np.array(acce_uncali)
gyro = np.array(gyro)
gyro_uncali = np.array(gyro_uncali)
magn = np.array(magn)
magn_uncali = np.array(magn_uncali)
ahrs = np.array(ahrs)
wifi = np.array(wifi)
ibeacon = np.array(ibeacon)
waypoint = np.array(waypoint)
return ReadData(acce, acce_uncali, gyro, gyro_uncali, magn, magn_uncali, ahrs, wifi, ibeacon, waypoint)