Skip to content
Snippets Groups Projects
Commit abbad5a0 authored by Paul McCarthy's avatar Paul McCarthy :mountain_bicyclist:
Browse files

ENH: fixlabels.loadLabelFile can now return list of noise components specified

in file.
parent ac3fd5c1
No related branches found
No related tags found
No related merge requests found
...@@ -19,7 +19,10 @@ ...@@ -19,7 +19,10 @@
import os.path as op import os.path as op
def loadLabelFile(filename, includeLabel=None, excludeLabel=None): def loadLabelFile(filename,
includeLabel=None,
excludeLabel=None,
returnIndices=False):
"""Loads component labels from the specified file. The file is assuemd """Loads component labels from the specified file. The file is assuemd
to be of the format generated by FIX, Melview or ICA-AROMA; such a file to be of the format generated by FIX, Melview or ICA-AROMA; such a file
should have a structure resembling the following:: should have a structure resembling the following::
...@@ -70,23 +73,30 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None): ...@@ -70,23 +73,30 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None):
*bad* components, i.e. those components which are not classified as *bad* components, i.e. those components which are not classified as
signal or unknown. signal or unknown.
:arg filename: Name of the label file to load. :arg filename: Name of the label file to load.
:arg includeLabel: If the file contains a single line containing a list :arg includeLabel: If the file contains a single line containing a list
component indices, this label will be used for the component indices, this label will be used for the
components in the list. Defaults to 'Unclassified components in the list. Defaults to 'Unclassified
noise' for FIX-like files, and 'Movement' for noise' for FIX-like files, and 'Movement' for
ICA-AROMA-like files. ICA-AROMA-like files.
:arg excludeLabel: If the file contains a single line containing component :arg excludeLabel: If the file contains a single line containing component
indices, this label will be used for the components indices, this label will be used for the components
that are not in the list. Defaults to 'Signal' for that are not in the list. Defaults to 'Signal' for
FIX-like files, and 'Unknown' for ICA-AROMA-like files. FIX-like files, and 'Unknown' for ICA-AROMA-like files.
:returns: A tuple containing the path to the melodic directory :arg returnIndices: Defaults to ``False``. If ``True``, a list containing
as specified in the label file, and a list of lists, one the noisy component numbers that were listed in the
list per component, with each list containing the labels for file is returned.
the corresponding component.
:returns: A tuple containing:
- The path to the melodic directory as specified in the label
file
- A list of lists, one list per component, with each list
containing the labels for the corresponding component.
- If ``returnIndices is True``, a list of the noisy component
indices (starting from 1) that were specified in the file.
""" """
signalLabels = None signalLabels = None
...@@ -176,7 +186,7 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None): ...@@ -176,7 +186,7 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None):
try: try:
compIdx = int(tokens[0]) compIdx = int(tokens[0])
except: except ValueError:
raise InvalidLabelFileError( raise InvalidLabelFileError(
'Invalid FIX classification file - ' 'Invalid FIX classification file - '
'line {}: {}'.format(i + 1, compLine)) 'line {}: {}'.format(i + 1, compLine))
...@@ -203,7 +213,6 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None): ...@@ -203,7 +213,6 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None):
noise = isNoisyComponent(labels, signalLabels) noise = isNoisyComponent(labels, signalLabels)
if noise and (comp not in noisyComps): if noise and (comp not in noisyComps):
print(signalLabels)
raise InvalidLabelFileError('Noisy component {} has invalid ' raise InvalidLabelFileError('Noisy component {} has invalid '
'labels: {}'.format(comp, labels)) 'labels: {}'.format(comp, labels))
...@@ -217,7 +226,8 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None): ...@@ -217,7 +226,8 @@ def loadLabelFile(filename, includeLabel=None, excludeLabel=None):
raise InvalidLabelFileError('Noisy component {} is missing ' raise InvalidLabelFileError('Noisy component {} is missing '
'a noise label'.format(comp)) 'a noise label'.format(comp))
return melDir, allLabels if returnIndices: return melDir, allLabels, noisyComps
else: return melDir, allLabels
def saveLabelFile(allLabels, def saveLabelFile(allLabels,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment