ratal / mdfreader

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

"TypeError: 'compressed_data' object is not subscriptable" when compression='blosc' #83

Closed danielhrisca closed 6 years ago

danielhrisca commented 6 years ago

Benchmark environment

3.6.2 (default, Jul 20 2017, 03:52:27) [GCC 7.1.1 20170630] Linux-4.9.40-1-MANJARO-x86_64-with-glibc2.3.4

The files used are the test files.

Mdf version 3 write:

Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/process.py", line 249, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/home/daniel/.config/spyder-py3/temp.py", line 224, in save_reader3_compression
    x.write(r'x.mdf')
  File "/usr/lib/python3.6/site-packages/mdfreader/mdfreader.py", line 419, in write
    self.convertAllChannel()
  File "/usr/lib/python3.6/site-packages/mdfreader/mdfreader.py", line 452, in convertAllChannel
    return self._convertAllChannel3()
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf3reader.py", line 1120, in _convertAllChannel3
    self._convertChannel3(channel)
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf3reader.py", line 1112, in _convertChannel3
    self.setChannelData(channelName, self._convert3(channelName))
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf3reader.py", line 1074, in _convert3
    vect = self[channelName][dataField][:]  # to have bcolz uncompressed data
TypeError: 'compressed_data' object is not subscriptable

Mdf version 3 getChannelData:

Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/process.py", line 249, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/home/daniel/.config/spyder-py3/temp.py", line 251, in get_all_reader3_compression
    y = x.getChannelData(s)
  File "/usr/lib/python3.6/site-packages/mdfreader/mdfreader.py", line 443, in getChannelData
    return self._getChannelData3(channelName)
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf3reader.py", line 1055, in _getChannelData3
    return self._convert3(channelName)
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf3reader.py", line 1074, in _convert3
    vect = self[channelName][dataField][:]  # to have bcolz uncompressed data
TypeError: 'compressed_data' object is not subscriptable

Mdf version 4 write

Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/process.py", line 249, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/home/daniel/.config/spyder-py3/temp.py", line 150, in save_reader4_compression
    x.write(r'x.mf4')
  File "/usr/lib/python3.6/site-packages/mdfreader/mdfreader.py", line 419, in write
    self.convertAllChannel()
  File "/usr/lib/python3.6/site-packages/mdfreader/mdfreader.py", line 454, in convertAllChannel
    return self._convertAllChannel4()
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1625, in _convertAllChannel4
    [self._convertChannel4(channelName) for channelName in self]
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1625, in <listcomp>
    [self._convertChannel4(channelName) for channelName in self]
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1617, in _convertChannel4
    self.setChannelData(channelName, self._getChannelData4(channelName))
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1547, in _getChannelData4
    channelName, self.convert_tables)[channelName]
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1573, in _convertChannelData4
    vect = channel[dataField][:]  # to have bcolz uncompressed data
TypeError: 'compressed_data' object is not subscriptable

Mdf version 4 getChannelData

Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/process.py", line 249, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/home/daniel/.config/spyder-py3/temp.py", line 178, in get_all_reader4_compression
    y = x.getChannelData(s)
  File "/usr/lib/python3.6/site-packages/mdfreader/mdfreader.py", line 445, in getChannelData
    return self._getChannelData4(channelName)
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1547, in _getChannelData4
    channelName, self.convert_tables)[channelName]
  File "/usr/lib/python3.6/site-packages/mdfreader/mdf4reader.py", line 1573, in _convertChannelData4
    vect = channel[dataField][:]  # to have bcolz uncompressed data
TypeError: 'compressed_data' object is not subscriptable
ratal commented 6 years ago

Hi Daniel, This issue should be fixed but most probably others will come

danielhrisca commented 6 years ago

Hello Aymeric, lastest commit solved this issue.