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 reading .mf4 files #66

Closed fizcris closed 7 years ago

fizcris commented 7 years ago

Not able to load .mf4 file. Does the module require any special arguments?


KeyError Traceback (most recent call last)

in () ----> 1 mdf.mdf(filePath) C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdf.py in __init__(self, fileName, channelList, convertAfterRead, filterChannelNames) 104 self.fileName = fileName 105 if fileName is not None: --> 106 self.read(fileName, channelList=channelList, convertAfterRead=convertAfterRead, filterChannelNames=filterChannelNames) 107 108 C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfreader.py in read(self, fileName, multiProc, channelList, convertAfterRead, filterChannelNames) 345 346 # read file blocks --> 347 info = mdfinfo(self.fileName, filterChannelNames) 348 349 self.MDFVersionNumber = info.mdfversion C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfreader.py in __init__(self, fileName, filterChannelNames) 147 self.mdfversion = 0 148 if fileName is not None: --> 149 self.readinfo(fileName, filterChannelNames) 150 151 def readinfo(self, fileName=None, filterChannelNames=False): C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfreader.py in readinfo(self, fileName, filterChannelNames) 180 else: # MDF version 4.x 181 from .mdfinfo4 import info4 --> 182 self.update(info4(None, fid)) 183 184 def listChannels(self, fileName=None): C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in __init__(self, fileName, fid) 1148 fid.close() 1149 elif fileName is None and fid is not None: -> 1150 self.readinfo(fid) 1151 1152 def readinfo(self, fid): C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in readinfo(self, fid) 1195 1196 # reads Data Group Blocks and recursively the other related blocks -> 1197 self.readDGBlock(fid) 1198 1199 def readDGBlock(self, fid, channelNameList=False): C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in readDGBlock(self, fid, channelNameList) 1212 self['DGBlock'][dg].update(DGBlock(fid, self['HDBlock']['hd_dg_first'])) 1213 # reads Channel Group blocks -> 1214 self.readCGBlock(fid, dg, channelNameList) 1215 while self['DGBlock'][dg]['dg_dg_next']: 1216 dg += 1 C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in readCGBlock(self, fid, dg, channelNameList) 1252 if not self['CGBlock'][dg][cg]['cg_flags'] & 0b1: # if not a VLSD channel group 1253 # reads Channel Block -> 1254 self.readCNBlock(fid, dg, cg, channelNameList) 1255 else: 1256 VLSDCGBlock.append(cg) C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in readCNBlock(self, fid, dg, cg, channelNameList) 1402 1403 # reads Channel Conversion Block -> 1404 self['CCBlock'][dg][cg][cn] = CCBlock(fid, self['CNBlock'][dg][cg][cn]['cn_cc_conversion']) 1405 1406 MLSDChannels = self.readComposition(fid, dg, cg, MLSDChannels, channelNameList=False) C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in __init__(self, fid, pointer) 818 def __init__(self, fid=None, pointer=None): 819 if fid is not None: --> 820 self.read(fid, pointer) 821 822 def read(self, fid, pointer): C:\ProgramData\Anaconda3\lib\site-packages\mdfreader-0.2.2-py3.6.egg\mdfreader\mdfinfo4.py in read(self, fid, pointer) 855 elif ID in ('##CC', b'##CC'): # for table conversion 856 # much more complicated nesting conversions !!! --> 857 self['cc_ref'][i] = CCBlock(fid, self['cc_ref'][i])['name']['Comment'] 858 if self['cc_md_comment']: # comments exist 859 self['Comment'] = CommentBlock(fid, self['cc_md_comment'], MDType='CC') KeyError: 'name'
ratal commented 7 years ago

Hi, I see you use old version, could you first update in order to have same base for discussions ? Aymeric

fizcris commented 7 years ago

My bad. New version works like a charm :+1:

Is there a way to process .mf4 files with pandas datasets and then convert Data Frames back to a .mf4 file. What I am trying to do is stack differnet .mf4 files with different timestamps in one with a common one.

Regards.

ratal commented 7 years ago

You can export into pandas. However importing pandas into mdfreader format is not existing yet. I could implement but do you know there is already existing a merging function of mdf files ? What is différent from what you want to do ? I am not sûre to understand.

ratal commented 7 years ago

You can check mergeMdf method of mdfreader. You will have an example of its use in mdfreader4.py (mdfconverter module, did you try mdfconverter GUI ?)

ratal commented 7 years ago

I probably answered your question. Do not hesitate to add other comment if you still need support.