asammdf
asammdf copied to clipboard
MDF.extend() is broken by save()
Python version
env 1
('python=3.11.3 | packaged by Anaconda, Inc. | (main, Apr 19 2023, 23:46:34) '
'[MSC v.1916 64 bit (AMD64)]')
'os=Windows-10-10.0.19045-SP0'
'numpy=1.24.3'
'asammdf=7.3.15.dev17'
env 2
'python=3.9.19 (main, Mar 21 2024, 17:21:27) [MSC v.1916 64 bit (AMD64)]'
'os=Windows-10-10.0.19045-SP0'
'numpy=1.24.4'
'asammdf=7.4.1'
Code
MDF version
4.10
Code snippet
This works
import numpy as np
from asammdf import Signal, MDF
# case 1 conversion type None
s1 = np.array([1, 2, 3, 4, 5])
s2 = np.array([-1, -2, -3, -4, -5])
s3 = np.array([0.1, 0.04, 0.09, 0.16, 0.25])
t = np.array([0.001, 0.002, 0.003, 0.004, 0.005])
names = ['Positive', 'Negative', 'Float']
units = ['+', '-', '.f']
s1 = Signal(samples=s1, timestamps=t, unit='+', name='Positive')
s2 = Signal(samples=s2, timestamps=t, unit='-', name='Negative')
s3 = Signal(samples=s3, timestamps=t, unit='flts', name='Floats')
mdf = MDF(version=4.10)
mdf.append([s1, s2, s3], comment='created by asammdf v1.1.0')
print(mdf.name)
mdf.save('test.mf4',overwrite=True)
print(mdf.name)
# mdf = MDF('test.mf4')
# print(mdf.name)
t = np.array([0.006, 0.007, 0.008, 0.009, 0.010])
mdf.extend(0, [(t, None), (s1.samples, None), (s2.samples, None), (s3.samples, None)])
mdf.save('concatenated.mf4',overwrite=True)
mdf.close()
This code doesn't work
import numpy as np
from asammdf import Signal, MDF
# case 1 conversion type None
s1 = np.array([1, 2, 3, 4, 5])
s2 = np.array([-1, -2, -3, -4, -5])
s3 = np.array([0.1, 0.04, 0.09, 0.16, 0.25])
t = np.array([0.001, 0.002, 0.003, 0.004, 0.005])
names = ['Positive', 'Negative', 'Float']
units = ['+', '-', '.f']
s1 = Signal(samples=s1, timestamps=t, unit='+', name='Positive')
s2 = Signal(samples=s2, timestamps=t, unit='-', name='Negative')
s3 = Signal(samples=s3, timestamps=t, unit='flts', name='Floats')
mdf = MDF(version=4.10)
mdf.append([s1, s2, s3], comment='created by asammdf v1.1.0')
print(mdf.name)
mdf.save('test.mf4',overwrite=True)
print(mdf.name)
mdf = MDF('test.mf4')
print(mdf.name)
t = np.array([0.006, 0.007, 0.008, 0.009, 0.010])
mdf.extend(0, [(t, None), (s1.samples, None), (s2.samples, None), (s3.samples, None)])
mdf.save('concatenated.mf4',overwrite=True)
mdf.close()
Traceback
env 1
Traceback (most recent call last):
File C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals)
File c:\\untitled9.py:26
mdf.extend(0, [(t, None), (s1.samples, None), (s2.samples, None), (s3.samples, None)])
File C:\ProgramData\anaconda3\Lib\site-packages\asammdf\blocks\mdf_v4.py:5619 in extend
for i, ((signal, invalidation_bits), sig_type) in enumerate(zip(signals, gp.signal_types)):
AttributeError: 'Group' object has no attribute 'signal_types'
env 2
Traceback (most recent call last):
File "c:\\untitled9.py", line 22, in <module>
mdf.extend(0, [(t, None), (s1.samples, None), (s2.samples, None), (s3.samples, None)])
File "C:\Users\.conda\envs\py39\lib\site-packages\asammdf\blocks\mdf_v4.py", line 5630, in extend
for i, ((signal, invalidation_bits), sig_type) in enumerate(zip(signals, gp.signal_types)):
AttributeError: signal_types
Description
While trying to work around the broken behavior of concatenate(), I have discovered more broken functionality. When trying to extend a channel group in an MDF object that originates from a saved file, it appears that something isn't populated.
Attached is a modified version of the example given in the documentation
I too am facing this. What is right way to add a new signal sample to an existing file?