Skip to content

Commit f9f03f6

Browse files
authored
Merge pull request #19 from harp-tech/gl-dev
Change column names to match schema casing
2 parents fa9671b + 47c27c5 commit f9f03f6

3 files changed

Lines changed: 14 additions & 22 deletions

File tree

harp/io.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def read(
6161
data = np.fromfile(file, dtype=np.uint8)
6262
if len(data) == 0:
6363
return pd.DataFrame(
64-
columns=columns, index=pd.Index([], dtype=np.float64, name="time")
64+
columns=columns, index=pd.Index([], dtype=np.float64, name="Time")
6565
)
6666

6767
if address is not None and address != data[2]:
@@ -86,7 +86,7 @@ def read(
8686
if epoch is not None:
8787
time = epoch + pd.to_timedelta(time, "s") # type: ignore
8888
index = pd.Series(time)
89-
index.name = "time"
89+
index.name = "Time"
9090

9191
payloadsize = stride - payloadoffset - 1
9292
payloadtype = _payloadtypes[payloadtype]
@@ -112,5 +112,5 @@ def read(
112112
nrows, dtype=np.uint8, buffer=data, offset=0, strides=stride
113113
)
114114
msgtype = pd.Categorical.from_codes(msgtype, categories=_messagetypes) # type: ignore
115-
result["type"] = msgtype
115+
result[MessageType.__name__] = msgtype
116116
return result

harp/reader.py

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
import re
32
from math import log2
43
from os import PathLike
54
from pathlib import Path
@@ -11,11 +10,9 @@
1110
from typing import Any, BinaryIO, Callable, Iterable, Optional, Protocol, Union
1211
from pandas._typing import Axes
1312
from harp.model import BitMask, GroupMask, Model, PayloadMember, Register
14-
from harp.io import read
13+
from harp.io import MessageType, read
1514
from harp.schema import read_schema
1615

17-
_camel_to_snake_regex = re.compile(r"(?<!^)(?=[A-Z])")
18-
1916

2017
@dataclass
2118
class _ReaderParams:
@@ -75,18 +72,14 @@ def parser(
7572
):
7673
df = g(file, columns, epoch, keep_type)
7774
result = f(df)
78-
type_col = df.get("type")
75+
type_col = df.get(MessageType.__name__)
7976
if type_col is not None:
80-
result["type"] = type_col
77+
result[MessageType.__name__] = type_col
8178
return result
8279

8380
return parser
8481

8582

86-
def _id_camel_to_snake(id: str):
87-
return _camel_to_snake_regex.sub("_", id).lower()
88-
89-
9083
def _create_bit_parser(mask: int):
9184
def parser(xs: Series) -> Series:
9285
return (xs & mask) != 0
@@ -95,10 +88,7 @@ def parser(xs: Series) -> Series:
9588

9689

9790
def _create_bitmask_parser(bitMask: BitMask):
98-
lookup = [
99-
(_id_camel_to_snake(k), _create_bit_parser(int(v.root)))
100-
for k, v in bitMask.bits.items()
101-
]
91+
lookup = [(k, _create_bit_parser(int(v.root))) for k, v in bitMask.bits.items()]
10292

10393
def parser(df: DataFrame):
10494
return DataFrame({n: f(df[0]) for n, f in lookup}, index=df.index)
@@ -203,7 +193,7 @@ def _create_register_parser(device: Model, name: str, params: _ReaderParams):
203193

204194
if register.payloadSpec is not None:
205195
payload_parsers = [
206-
(_id_camel_to_snake(key), _create_payloadmember_parser(device, member))
196+
(key, _create_payloadmember_parser(device, member))
207197
for key, member in register.payloadSpec.items()
208198
]
209199

@@ -213,8 +203,7 @@ def parser(df: DataFrame):
213203
reader = _compose_parser(parser, reader, params)
214204
return RegisterReader(register, reader)
215205

216-
columns = [_id_camel_to_snake(name)]
217-
reader = partial(reader, columns=columns)
206+
reader = partial(reader, columns=[name])
218207
return RegisterReader(register, reader)
219208

220209

tests/test_io.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import numpy as np
33
from contextlib import nullcontext
44
from pytest import mark
5-
from harp.io import read
5+
from harp.io import read, MessageType
66
from tests.params import DataFileParam
77

88
testdata = [
@@ -45,7 +45,10 @@ def test_read(dataFile: DataFileParam):
4545
)
4646
assert len(data) == dataFile.expected_rows
4747
if dataFile.keep_type:
48-
assert "type" in data.columns and data["type"].dtype == "category"
48+
assert (
49+
MessageType.__name__ in data.columns
50+
and data[MessageType.__name__].dtype == "category"
51+
)
4952

5053
if dataFile.expected_cols:
5154
for col in dataFile.expected_cols:

0 commit comments

Comments
 (0)