Skip to content

Commit bfde2de

Browse files
committed
Merge branch 'dev'
2 parents cc1fca2 + 3f14c53 commit bfde2de

22 files changed

+7073
-6774
lines changed

.idea/inspectionProfiles/Project_Default.xml

-17
This file was deleted.

README.md

+24-19
Original file line numberDiff line numberDiff line change
@@ -83,25 +83,30 @@ Command example in ipython:
8383
```python
8484
import mdfreader
8585
# loads whole mdf file content in yop mdf object.
86-
yop=mdfreader.mdf('NameOfFile')
86+
yop=mdfreader.Mdf('NameOfFile')
8787
# you can print file content in ipython with a simple:
8888
yop
8989
# alternatively, for max speed and smaller memory footprint, read only few channels
90-
yop=mdfreader.mdf('NameOfFile',channelList=['channel1', 'channel2'],convertAfterRead=False)
90+
yop=mdfreader.Mdf('NameOfFile', channelList=['channel1', 'channel2'], convertAfterRead=False)
9191
# also possible to keep data compressed for small memory footprint, using Blosc module
92-
yop=mdfreader.mdf('NameOfFile',compression=True)
92+
yop=mdfreader.Mdf('NameOfFile', compression=True)
9393
# for interactive file exploration, possible to read the file but not its data to save memory
94-
yop=mdfreader.mdf('NameOfFile',noDataLoading=True) # channel data will be loaded from file if needed
94+
yop=mdfreader.Mdf('NameOfFile', noDataLoading=True) # channel data will be loaded from file if needed
95+
# parsing xml metadata from mdf4.x for many channels can take more than just reading data.
96+
# You can reduce to minimum metadata reading with below argument (no source information, attachment, etc.)
97+
yop=mdfreader.Mdf('NameOfFile', metadata=0) # 0: full, 2: minimal
98+
# only for mdf4.x, you can search for the mdf key of a channel name that can have been recorded by different sources
99+
yop.get_channel_name4('channelName', 'source path or name') # returns list of mdf keys
95100
# to yield one channel and keep its content in mdf object
96-
yop.getChannel('channelName')
101+
yop.get_channel('channelName')
97102
# to yield one channel numpy array
98-
yop.getChannelData('channelName')
103+
yop.get_channel_data('channelName')
99104
# to get file mdf version
100105
yop.MDFVersionNumber
101106
# to get file structure or attachments, you can create a mdfinfo instance
102-
info=mdfreader.mdfinfo()
103-
info.listChannels('NameOfFile') # returns only the list of channels
104-
info.readinfo('NameOfFile') # complete file structure object
107+
info=mdfreader.MdfInfo()
108+
info.list_channels('NameOfFile') # returns only the list of channels
109+
info.read_info('NameOfFile') # complete file structure object
105110
yop.info # same class is stored in mdfreader class
106111
# to list channels names after reading
107112
yop.keys()
@@ -113,22 +118,22 @@ Command example in ipython:
113118
# file manipulations
114119
yop.resample(0.1)
115120
# or
116-
yop.resample(masterChannel='master3')
121+
yop.resample(master_channel='master3')
117122
# keep only data between begin and end
118123
yop.cut(begin=10, end=15)
119124
# export to other file formats :
120-
yop.exporToCSV(sampling=0.01)
121-
yop.exportToNetCDF()
122-
yop.exportToHDF5()
123-
yop.exportToMatlab()
124-
yop.exportToXlsx()
125+
yop.export_to_csv(sampling=0.01)
126+
yop.export_to_NetCDF()
127+
yop.export_to_hdf5()
128+
yop.export_to_matlab()
129+
yop.export_to_xlsx()
125130
# converts data groups into pandas dataframes
126-
yop.convertToPandas()
131+
yop.convert_to_pandas()
127132
# drops all the channels except the one in argument
128-
yop.keepChannels({'channel1','channel2','channel3'})
133+
yop.keep_channels({'channel1','channel2','channel3'})
129134
# merge 2 files
130-
yop2=mdfreader.mdf('NameOfFile_2')
131-
yop=mergeMDF(yop2)
135+
yop2=mdfreader.Mdf('NameOfFile_2')
136+
yop.merge_mdf(yop2)
132137
# can write mdf file after modifications or creation from scratch
133138
# write4 and write3 also allow to convert file versions
134139
yop.write('NewNameOfFile') # write in same version as original file after modifications

dataRead.c

+3,184-3,311
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dataRead.pyx

+397-411
Large diffs are not rendered by default.

docs/conf.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525

2626
# Add any Sphinx extension module names here, as strings. They can be extensions
2727
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
28-
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'numpydoc', 'rst2pdf.pdfbuilder']
28+
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'numpydoc', 'sphinx.ext.intersphinx',
29+
'sphinx.ext.coverage']
2930

3031
# Add any paths that contain templates here, relative to this directory.
3132
templates_path = ['_templates']
@@ -41,16 +42,16 @@
4142

4243
# General information about the project.
4344
project = u'mdfreader'
44-
copyright = u'2015, Aymeric Rateau'
45+
copyright = u'2018, Aymeric Rateau'
4546

4647
# The version info for the project you're documenting, acts as replacement for
4748
# |version| and |release|, also used in various other places throughout the
4849
# built documents.
4950
#
5051
# The short X.Y version.
51-
version = '2.7.5'
52+
version = '2.8'
5253
# The full version, including alpha/beta/rc tags.
53-
release = '2.7.5'
54+
release = '2.8'
5455

5556
# The language for content autogenerated by Sphinx. Refer to documentation
5657
# for a list of supported languages.
@@ -247,3 +248,6 @@
247248
# rst2pdf - name of the generated pdf
248249
# Sample rst2pdf doc - title of the pdf
249250
# Your Name - author name in the pdf
251+
252+
napoleon_numpy_docstring = True
253+
numpydoc_show_class_members = False

docs/index.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ Contents:
1111
.. toctree::
1212
:maxdepth: 3
1313

14-
mdf/index
15-
1614
mdfreader/index
1715

16+
mdf/index
17+
1818
mdf3reader/index
1919

2020
mdfinfo3/index

docs/mdfreader.pdf

-42.9 KB
Binary file not shown.

mdfForVeuszPlugin.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from veusz.plugins.datasetplugin import Dataset1D as ImportDataset1D
1818
from veusz.plugins.field import FieldFloat as ImportFieldFloat
1919
try:
20-
from mdfreader import mdf
21-
from mdfreader import mdfinfo
20+
from mdfreader import Mdf
21+
from mdfreader import MdfInfo
2222
except ImportError:
2323
try:
2424
from veusz.plugins.mdfreader import mdf
@@ -29,11 +29,11 @@
2929
import os.path
3030
sys.path.append(os.getcwdu())
3131
print(os.path.join(os.getcwdu(), 'plugins'))
32-
from mdfreader import mdf
33-
from mdfreader import mdfinfo
32+
from mdfreader import Mdf
33+
from mdfreader import MdfInfo
3434

3535

36-
class ImportPlugin(mdfinfo):
36+
class ImportPlugin(MdfInfo):
3737

3838
"""Define a plugin to read data in a particular format.
3939
@@ -58,7 +58,7 @@ def getPreview(self, params):
5858
Returns (text, okaytoimport)
5959
"""
6060

61-
info = mdfinfo(fileName=params.filename)
61+
info = MdfInfo()
6262

6363
if info.mdfversion < 400:
6464
f = ''
@@ -85,7 +85,7 @@ def getPreview(self, params):
8585
f += 'Project Name: ' + Comment['project'] + '\n'
8686
if 'subject' in Comment:
8787
f += 'Subject: ' + Comment['subject'] + '\n' + 'Channel List:\n'
88-
for channelName in info.listChannels():
88+
for channelName in info.list_channels():
8989
f += ' ' + channelName + '\n'
9090
return f, True
9191

@@ -97,7 +97,7 @@ def doImport(self, params):
9797
return []
9898

9999

100-
class MdfImportPlugin(ImportPlugin, mdf):
100+
class MdfImportPlugin(ImportPlugin, Mdf):
101101

102102
"""Plugin to import mdf (Mostly ETAS INCA or CANape files)"""
103103

@@ -115,8 +115,8 @@ def doImport(self, params):
115115
Return a list of ImportDataset1D, ImportDataset2D objects
116116
"""
117117

118-
data = mdf(params.filename)
119-
data.resample(samplingTime=params.field_results['mult'])
118+
data = Mdf(params.filename)
119+
data.resample(sampling_time=params.field_results['mult'])
120120
List = []
121121
for channelName in list(data.keys()):
122122
if len(data[channelName]['data']) > 0 and not data[channelName]['data'].dtype.kind in ['S', 'U']:

mdfconverter/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# along with this program. If not, see http://www.gnu.org/licenses.
1313
#
1414
# ----------------------------------------------------------------------
15-
__version__ = "2.7.8"
15+
__version__ = "3.0"

mdfconverter/mdfreaderui4.py

+19-19
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ def __init__(self, parent=None):
3535
QMainWindow.__init__(self, parent)
3636
self.setupUi(self)
3737
self.fileNames = [] # files to convert
38-
self.mdfClass = mdf() # instance of mdf
39-
self.mdfinfoClass = mdfinfo() # instance of mdfinfo
38+
self.mdfClass = Mdf() # instance of mdf
39+
self.mdfinfoClass = MdfInfo() # instance of mdfinfo
4040
self.convertSelection = 'Matlab' # by default Matlab conversion is selected
4141
self.MergeFiles = False # by default
4242
self.labFileName = [] # .lab file name
@@ -66,7 +66,7 @@ def on_browse_clicked(self):
6666
self.mdfinfoClass.__init__()
6767
self.cleanChannelList()
6868
self.cleanSelectedChannelList()
69-
ChannelList = convertChannelList(self.mdfinfoClass.listChannels(str(self.fileNames[0])))
69+
ChannelList = convertChannelList(self.mdfinfoClass.list_channels(str(self.fileNames[0])))
7070
self.SelectedChannelList.addItems(ChannelList)
7171
self.FileList.setItemSelected(self.FileList.item(0), True)
7272

@@ -145,20 +145,20 @@ def on_Convert_clicked(self):
145145
buffer.update(res[0]) # assigns next class to buffer
146146
buffer.masterChannelList = res[1]
147147
fileNameList.append(res[2])
148-
self.mdfClass.mergeMdf(buffer) # merge buffer to merged class mdfClass
148+
self.mdfClass.merge_mdf(buffer) # merge buffer to merged class mdfClass
149149
# Export
150150
if self.convertSelection == 'Matlab':
151-
self.mdfClass.exportToMatlab()
151+
self.mdfClass.export_to_matlab()
152152
elif self.convertSelection == 'csv':
153-
self.mdfClass.exportToCSV()
153+
self.mdfClass.export_to_csv()
154154
elif self.convertSelection == 'netcdf':
155-
self.mdfClass.exportToNetCDF()
155+
self.mdfClass.export_to_NetCDF()
156156
elif self.convertSelection == 'hdf5':
157-
self.mdfClass.exportToHDF5()
157+
self.mdfClass.export_to_hdf5()
158158
elif self.convertSelection == 'excel':
159-
self.mdfClass.exportToExcel()
159+
self.mdfClass.export_to_excel()
160160
elif self.convertSelection == 'excel2010':
161-
self.mdfClass.exportToXlsx()
161+
self.mdfClass.export_to_xlsx()
162162
elif self.convertSelection == 'mdf3':
163163
self.mdfClass.write(fileName + '_new')
164164
self.cleanChannelList()
@@ -176,7 +176,7 @@ def on_FileList_itemClicked(self, item):
176176
self.mdfinfoClass.__init__()
177177
# self.mdfinfoClass.readinfo(item)
178178
self.cleanChannelList()
179-
ChannelList = convertChannelList(self.mdfinfoClass.listChannels(str(item.text())))
179+
ChannelList = convertChannelList(self.mdfinfoClass.list_channels(str(item.text())))
180180
self.channelList.addItems(ChannelList)
181181
self.mdfinfoClass.__init__() # clean object to free memory
182182

@@ -301,26 +301,26 @@ def on_MergeFiles_toggled(self, checked):
301301

302302
def processMDF(fileName, channelist, resampleFlag, resampleValue, convertFlag, convertSelection):
303303
# Will process file according to defined options
304-
yop = mdf()
304+
yop = Mdf()
305305
yop.multiProc = False # already multiprocessed
306306
yop.convertAfterRead = True
307307
yop.read(fileName) # reads complete file
308-
yop.keepChannels(channelist) # removes unnecessary channels
308+
yop.keep_channels(channelist) # removes unnecessary channels
309309
if resampleFlag:
310310
yop.resample(resampleValue)
311311
if convertFlag:
312312
if convertSelection == 'Matlab':
313-
yop.exportToMatlab()
313+
yop.export_to_matlab()
314314
elif convertSelection == 'csv':
315-
yop.exportToCSV()
315+
yop.export_to_csv()
316316
elif convertSelection == 'netcdf':
317-
yop.exportToNetCDF()
317+
yop.export_to_NetCDF()
318318
elif convertSelection == 'hdf5':
319-
yop.exportToHDF5()
319+
yop.export_to_hdf5()
320320
elif convertSelection == 'excel':
321-
yop.exportToExcel()
321+
yop.export_to_excel()
322322
elif convertSelection == 'excel2010':
323-
yop.exportToXlsx()
323+
yop.export_to_xlsx()
324324
elif convertSelection == 'mdf3':
325325
yop.write(fileName + '_new')
326326
yopPicklable = {} # picklable dict and not object

mdfconverter/mdfreaderui5.py

+19-19
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ def __init__(self, parent=None):
3434
QMainWindow.__init__(self, parent)
3535
self.setupUi(self)
3636
self.fileNames = [] # files to convert
37-
self.mdfClass = mdfreader.mdf() # instance of mdf
38-
self.mdfinfoClass = mdfreader.mdfinfo() # instance of mdfinfo
37+
self.mdfClass = mdfreader.Mdf() # instance of mdf
38+
self.mdfinfoClass = mdfreader.MdfInfo() # instance of mdfinfo
3939
self.convertSelection = 'Matlab' # by default Matlab conversion is selected
4040
self.MergeFiles = False # by default
4141
self.labFileName = [] # .lab file name
@@ -64,7 +64,7 @@ def on_browse_clicked(self):
6464
self.mdfinfoClass.__init__()
6565
self.cleanChannelList()
6666
self.cleanSelectedChannelList()
67-
ChannelList = convertChannelList(self.mdfinfoClass.listChannels(str(self.fileNames[0])))
67+
ChannelList = convertChannelList(self.mdfinfoClass.list_channels(str(self.fileNames[0])))
6868
self.SelectedChannelList.addItems(ChannelList)
6969
self.FileList.item(0).setSelected(True)
7070

@@ -142,20 +142,20 @@ def on_Convert_clicked(self):
142142
buffer.update(res[0]) # assigns next class to buffer
143143
buffer.masterChannelList = res[1]
144144
fileNameList.append(res[2])
145-
self.mdfClass.mergeMdf(buffer) # merge buffer to merged class mdfClass
145+
self.mdfClass.merge_mdf(buffer) # merge buffer to merged class mdfClass
146146
# Export
147147
if self.convertSelection == 'Matlab':
148-
self.mdfClass.exportToMatlab()
148+
self.mdfClass.export_to_matlab()
149149
elif self.convertSelection == 'csv':
150-
self.mdfClass.exportToCSV()
150+
self.mdfClass.export_to_csv()
151151
elif self.convertSelection == 'netcdf':
152-
self.mdfClass.exportToNetCDF()
152+
self.mdfClass.export_to_NetCDF()
153153
elif self.convertSelection == 'hdf5':
154-
self.mdfClass.exportToHDF5()
154+
self.mdfClass.export_to_hdf5()
155155
elif self.convertSelection == 'excel':
156-
self.mdfClass.exportToExcel()
156+
self.mdfClass.export_to_excel()
157157
elif self.convertSelection == 'excel2010':
158-
self.mdfClass.exportToXlsx()
158+
self.mdfClass.export_to_xlsx()
159159
elif self.convertSelection == 'mdf3':
160160
self.mdfClass.write(fileName + '_new')
161161
self.cleanChannelList()
@@ -172,7 +172,7 @@ def on_FileList_itemClicked(self, item):
172172
self.mdfinfoClass.__init__()
173173
# self.mdfinfoClass.readinfo(item)
174174
self.cleanChannelList()
175-
ChannelList = convertChannelList(self.mdfinfoClass.listChannels(str(item.text())))
175+
ChannelList = convertChannelList(self.mdfinfoClass.list_channels(str(item.text())))
176176
self.channelList.addItems(ChannelList)
177177
self.mdfinfoClass.__init__() # clean object to free memory
178178

@@ -288,26 +288,26 @@ def on_MergeFiles_toggled(self):
288288

289289
def processMDF(fileName, channelist, resampleFlag, resampleValue, convertFlag, convertSelection):
290290
# Will process file according to defined options
291-
yop = mdfreader.mdf()
291+
yop = mdfreader.Mdf()
292292
yop.multiProc = False # already multiprocessed
293293
yop.convertAfterRead = True
294294
yop.read(fileName) # reads complete file
295-
yop.keepChannels(channelist) # removes unnecessary channels
295+
yop.keep_channels(channelist) # removes unnecessary channels
296296
if resampleFlag:
297297
yop.resample(resampleValue)
298298
if convertFlag:
299299
if convertSelection == 'Matlab':
300-
yop.exportToMatlab()
300+
yop.export_to_matlab()
301301
elif convertSelection == 'csv':
302-
yop.exportToCSV()
302+
yop.export_to_csv()
303303
elif convertSelection == 'netcdf':
304-
yop.exportToNetCDF()
304+
yop.export_to_NetCDF()
305305
elif convertSelection == 'hdf5':
306-
yop.exportToHDF5()
306+
yop.export_to_hdf5()
307307
elif convertSelection == 'excel':
308-
yop.exportToExcel()
308+
yop.export_to_excel()
309309
elif convertSelection == 'excel2010':
310-
yop.exportToXlsx()
310+
yop.export_to_xlsx()
311311
elif convertSelection == 'mdf3':
312312
yop.write(fileName + '_new')
313313
yopPicklable = {} # picklable dict and not object

0 commit comments

Comments
 (0)