ratal / mdfreader

Read Measurement Data Format (MDF) versions 3.x and 4.x file formats in python
Other
169 stars 74 forks source link

error in write function #116

Closed danielhrisca closed 6 years ago

danielhrisca commented 6 years ago

MDF version 3

from mdfreader import mdf, __version__

print(__version__)
mdf(r'test.mdf', noDataLoading=True).write(r'test_write.mdf')
2.7.2
Channel t_0_0_0 not in dictionary
Traceback (most recent call last):
  File "D:\TMP\untitled3.py", line 11, in <module>
    mdf(r'd:\PythonWorkspace\asammdf\benchmarks\test.mdf', noDataLoading=True).write(r'd:\PythonWorkspace\asammdf\benchmarks\test_write.mdf')
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 436, in write
    self.convertAllChannel()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 469, in convertAllChannel
    return self._convertAllChannel3()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf3reader.py", line 1032, in _convertAllChannel3
    self.read3(self.fileName, convertAfterRead=True)
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf3reader.py", line 933, in read3
    compression=compression)
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf.py", line 195, in add_channel
    self[channel_name]['conversion'] = {}
KeyError: 't_0_0_0'

MDF version 4

from mdfreader import mdf, __version__

print(__version__)
mdf(r'test.mf4', noDataLoading=True).write(r'test_write.mf4')
2.7.2
Channel t_0_0_0 not in dictionary
Traceback (most recent call last):
  File "D:\TMP\untitled3.py", line 11, in <module>
    mdf(r'd:\PythonWorkspace\asammdf\benchmarks\test.mf4', noDataLoading=True).write(r'd:\PythonWorkspace\asammdf\benchmarks\test_write.mf4')
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 436, in write
    self.convertAllChannel()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 471, in convertAllChannel
    return self._convertAllChannel4()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf4reader.py", line 1260, in _convertAllChannel4
    self.read4(self.fileName, convertAfterRead=True)
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf4reader.py", line 1128, in read4
    compression=compression)
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf.py", line 195, in add_channel
    self[channel_name]['conversion'] = {}
KeyError: 't_0_0_0'
ratal commented 6 years ago

Last commit should fix this issue, thanks for reporting

danielhrisca commented 6 years ago

This is fixed, but something similar to issue #92 might have been introduced

danielhrisca commented 6 years ago

Hello Aymeric,

I get a new error now:

Save file : mdfreader 2.7.4 noDataLoading mdfv3
<class 'TypeError'>
'NoneType' object is not iterable  File "D:\PythonWorkspace\asammdf\benchmarks\bench.py", line 305, in save_reader3_nodata
    x.write(r'x.mdf')
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 428, in write
    self.convertAllChannel()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 465, in convertAllChannel
    return self._convertAllChannel3()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf3reader.py", line 1053, in _convertAllChannel3
    self.read3(self.fileName, convertAfterRead=True)
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf3reader.py", line 876, in read3
    data_groups = [self[channel][idField][0] for channel in channelList]

Save file : mdfreader 2.7.4 noDataLoading mdfv4
<class 'TypeError'>
'NoneType' object is not iterable  File "D:\PythonWorkspace\asammdf\benchmarks\bench.py", line 335, in save_reader4_nodata
    x.write(r'x.mf4')
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 428, in write
    self.convertAllChannel()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdfreader.py", line 467, in convertAllChannel
    return self._convertAllChannel4()
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf4reader.py", line 1464, in _convertAllChannel4
    self.read4(self.fileName, convertAfterRead=True)
  File "d:\WinPython-64bit-3.6.2.0Qt5\python-3.6.2.amd64\lib\site-packages\mdfreader\mdf4reader.py", line 1212, in read4
    data_groups = [self[channel][idField][0] for channel in channelList]
ratal commented 6 years ago

Should be fixed in last commit, thanks for pointing out. I put it in my tests, should not happen again.

danielhrisca commented 6 years ago

In the release 2.7.4 there is still a bug when writing mdf version 3 files:

 Save file : mdfreader 2.7.4 noDataLoading mdfv3
<class 'TypeError'>
'NoneType' object is not iterable  File "D:\PythonWorkspace\asammdf\benchmarks\bench.py", line 305, in save_reader3_nodata
    x.write(r'x.mdf')
  File "D:\WinPython-32bit-3.6.3.0Qt5\python-3.6.3\lib\site-packages\mdfreader\mdfreader.py", line 428, in write
    self.convertAllChannel()
  File "D:\WinPython-32bit-3.6.3.0Qt5\python-3.6.3\lib\site-packages\mdfreader\mdfreader.py", line 465, in convertAllChannel
    return self._convertAllChannel3()
  File "D:\WinPython-32bit-3.6.3.0Qt5\python-3.6.3\lib\site-packages\mdfreader\mdf3reader.py", line 1050, in _convertAllChannel3
    self.read3(self.fileName, convertAfterRead=True)
  File "D:\WinPython-32bit-3.6.3.0Qt5\python-3.6.3\lib\site-packages\mdfreader\mdf3reader.py", line 906, in read3
    for channel in channelList]
ratal commented 6 years ago

Yes, sorry, Daniel, I do not know how I missed it for this release but I already fixed it in last commits.