Skip to content

Commit

Permalink
various fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
zariiii9003 committed Jan 8, 2024
1 parent afc64e6 commit 06aec74
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 60 deletions.
2 changes: 1 addition & 1 deletion src/asammdf/blocks/mdf_v3.py
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ def _prepare_record(self, group: Group) -> list:

record = []

for idx, new_ch in enumerate(channels):
for new_ch in channels:
start_offset = new_ch.start_offset
try:
additional_byte_offset = new_ch.additional_byte_offset
Expand Down
46 changes: 19 additions & 27 deletions src/asammdf/blocks/mdf_v4.py
Original file line number Diff line number Diff line change
Expand Up @@ -5693,15 +5693,13 @@ def extend(self, index: int, signals: list[tuple[NDArray[Any], NDArray[Any] | No
if size % 2:
size += 1
elem = elem + b"\0"
data.append(UINT32_p(size))
data.append(elem)
data.extend((UINT32_p(size), elem))
off += size + 4
else:
for elem in signal:
offsets.append(off)
size = len(elem)
data.append(UINT32_p(size))
data.append(elem)
data.extend((UINT32_p(size), elem))
off += size + 4

offsets = array(offsets, dtype=uint64)
Expand Down Expand Up @@ -7620,22 +7618,16 @@ def _get_scalar(
)
vals = vals.view(types)

arrays = []
arrays.append(vals["ms"])
# bit 6 and 7 of minutes are reserved
arrays.append(vals["min"] & 0x3F)
# only firt 4 bits of hour are used
arrays.append(vals["hour"] & 0xF)
# the first 4 bits are the day number
arrays.append(vals["day"] & 0xF)
# bit 6 and 7 of month are reserved
arrays.append(vals["month"] & 0x3F)
# bit 7 of year is reserved
arrays.append(vals["year"] & 0x7F)
# add summer or standard time information for hour
arrays.append((vals["hour"] & 0x80) >> 7)
# add day of week information
arrays.append((vals["day"] & 0xF0) >> 4)
arrays = [
vals["ms"],
vals["min"] & 0x3F, # bit 6 and 7 of minutes are reserved
vals["hour"] & 0xF, # only first 4 bits of hour are used
vals["day"] & 0xF, # the first 4 bits are the day number
vals["month"] & 0x3F, # bit 6 and 7 of month are reserved
vals["year"] & 0x7F, # bit 7 of year is reserved
(vals["hour"] & 0x80) >> 7, # add summer or standard time information for hour
(vals["day"] & 0xF0) >> 4, # add day of week information
]

names = [
"ms",
Expand Down Expand Up @@ -10329,7 +10321,7 @@ def _process_can_logging(self, group_index: int, grp: Group) -> None:

dbc = None

for i, channel in enumerate(channels):
for channel in channels:
if channel.name == "CAN_DataFrame":
attachment_addr = channel.attachment

Expand All @@ -10356,7 +10348,7 @@ def _process_can_logging(self, group_index: int, grp: Group) -> None:
self._prepare_record(group)
data = self._load_data(group, record_offset=0, record_count=1)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(group_index, data=fragment))

Expand Down Expand Up @@ -10396,7 +10388,7 @@ def _process_can_logging(self, group_index: int, grp: Group) -> None:
self._prepare_record(group)
data = self._load_data(group, optimize_read=False)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(group_index, data=fragment))

Expand Down Expand Up @@ -10452,7 +10444,7 @@ def _process_can_logging(self, group_index: int, grp: Group) -> None:
self._prepare_record(group)
data = self._load_data(group, optimize_read=False)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(group_index, data=fragment))

Expand Down Expand Up @@ -10581,7 +10573,7 @@ def _process_lin_logging(self, group_index: int, grp: Group) -> None:

dbc = None

for i, channel in enumerate(channels):
for channel in channels:
if channel.name == "LIN_Frame":
attachment_addr = channel.attachment
if attachment_addr is not None:
Expand Down Expand Up @@ -10610,7 +10602,7 @@ def _process_lin_logging(self, group_index: int, grp: Group) -> None:
self._prepare_record(group)
data = self._load_data(group, optimize_read=False)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(group_index, data=fragment))

Expand Down Expand Up @@ -10643,7 +10635,7 @@ def _process_lin_logging(self, group_index: int, grp: Group) -> None:
self._prepare_record(group)
data = self._load_data(group, optimize_read=False)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(group_index, data=fragment))

Expand Down
6 changes: 3 additions & 3 deletions src/asammdf/blocks/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -664,17 +664,17 @@ def fmt_to_datatype_v3(fmt: dtype[Any], shape: tuple[int, ...], array: bool = Fa
size *= dim
else:
if kind == "u":
if byteorder in "<":
if byteorder == "<":
data_type = v3c.DATA_TYPE_UNSIGNED_INTEL
else:
data_type = v3c.DATA_TYPE_UNSIGNED_MOTOROLA
elif kind == "i":
if byteorder in "<":
if byteorder == "<":
data_type = v3c.DATA_TYPE_SIGNED_INTEL
else:
data_type = v3c.DATA_TYPE_SIGNED_MOTOROLA
elif kind == "f":
if byteorder in "<":
if byteorder == "<":
if size == 32:
data_type = v3c.DATA_TYPE_FLOAT
else:
Expand Down
3 changes: 1 addition & 2 deletions src/asammdf/blocks/v2_v3_blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -1329,8 +1329,7 @@ def metadata(self, indent: str = "") -> str:
nr = self.ref_param_nr
new_keys = []
for i in range(nr):
new_keys.append(f"param_val_{i}")
new_keys.append(f"text_{i}")
new_keys.extend((f"param_val_{i}", f"text_{i}"))
keys += tuple(new_keys)

elif conv in (v23c.CONVERSION_TYPE_POLY, v23c.CONVERSION_TYPE_RAT):
Expand Down
3 changes: 1 addition & 2 deletions src/asammdf/gui/dialogs/bus_database_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@ def store(self):

dbs = []
for bus, database in databases["CAN"]:
dbs.append(bus)
dbs.append(database)
dbs.extend((bus, database))

self._settings.setValue("can_databases", dbs)

Expand Down
3 changes: 1 addition & 2 deletions src/asammdf/gui/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1009,8 +1009,7 @@ def value_as_bin(value, dtype):

nibles = []
for byte in byte_string:
nibles.append(f"{byte >> 4:04b}")
nibles.append(f"{byte & 0xf:04b}")
nibles.extend((f"{byte >> 4:04b}", f"{byte & 0xf:04b}"))

return ".".join(nibles)

Expand Down
24 changes: 6 additions & 18 deletions src/asammdf/gui/widgets/tabular_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -1384,25 +1384,17 @@ def apply_filters(self, event=None):
nan = np.nan

if op in (">", ">=", "<", "<="):
filters.append(column_name)
filters.append(op)
filters.append("@nan")
filters.extend((column_name, op, "@nan"))
elif op == "!=":
filters.append(column_name)
filters.append("==")
filters.append(column_name)
filters.extend((column_name, "==", column_name))
elif op == "==":
filters.append(column_name)
filters.append("!=")
filters.append(column_name)
filters.extend((column_name, "!=", column_name))
else:
if column_name == "timestamps" and df["timestamps"].dtype.kind == "M":
ts = pd.Timestamp(target, tz=LOCAL_TIMEZONE)
ts = ts.tz_convert("UTC").to_datetime64()

filters.append(column_name)
filters.append(op)
filters.append("@ts")
filters.extend((column_name, op, "@ts"))

elif is_byte_array:
target = str(target).replace(" ", "").strip('"')
Expand All @@ -1411,14 +1403,10 @@ def apply_filters(self, event=None):
df[f"{column_name}__as__bytes"] = pd.Series([bytes(s) for s in df[column_name]], index=df.index)
val = bytes.fromhex(target)

filters.append(f"{column_name}__as__bytes")
filters.append(op)
filters.append("@val")
filters.extend((f"{column_name}__as__bytes", op, "@val"))

else:
filters.append(column_name)
filters.append(op)
filters.append(str(target))
filters.extend((column_name, op, str(target)))

if filters:
try:
Expand Down
10 changes: 5 additions & 5 deletions src/asammdf/mdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -2285,7 +2285,7 @@ def concatenate(
oldest = min(timestamps)

offsets = [(timestamp - oldest).total_seconds() for timestamp in timestamps]
offsets = [offset if offset > 0 else 0 for offset in offsets]
offsets = [max(0, offset) for offset in offsets]

else:
file = files[0]
Expand Down Expand Up @@ -4098,7 +4098,7 @@ def iter_to_dataframe(
sig.timestamps = sig.timestamps[idx]

size = len(index)
for k, sig in enumerate(signals):
for sig in signals:
if sig.timestamps.dtype.byteorder not in target_byte_order:
sig.timestamps = sig.timestamps.byteswap().newbyteorder()

Expand Down Expand Up @@ -4478,7 +4478,7 @@ def to_dataframe(
index = pd.Index(group_master, tupleize_cols=False)

size = len(index)
for k, sig in enumerate(signals):
for sig in signals:
if sig.timestamps.dtype.byteorder not in target_byte_order:
sig.timestamps = sig.timestamps.byteswap().newbyteorder()

Expand Down Expand Up @@ -4789,7 +4789,7 @@ def _extract_can_logging(
self._prepare_record(group)
data = self._load_data(group, optimize_read=False)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(i, data=fragment))

Expand Down Expand Up @@ -5127,7 +5127,7 @@ def _extract_lin_logging(
self._prepare_record(group)
data = self._load_data(group, optimize_read=False)

for fragment_index, fragment in enumerate(data):
for fragment in data:
self._set_temporary_master(None)
self._set_temporary_master(self.get_master(i, data=fragment))

Expand Down

0 comments on commit 06aec74

Please sign in to comment.