Skip to content

Commit

Permalink
Use black to lint python files
Browse files Browse the repository at this point in the history
  • Loading branch information
teekuningas committed Feb 22, 2024
1 parent e0bf7bc commit daedc67
Show file tree
Hide file tree
Showing 154 changed files with 4,182 additions and 3,450 deletions.
8 changes: 8 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.PHONY: format
format:
black -t py39 meggie

.PHONY: check
check:
black --check -t py39 meggie
pylama meggie
2 changes: 2 additions & 0 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
black
pylama
21 changes: 12 additions & 9 deletions meggie/actions/epochs_create/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,29 @@
from meggie.mainwindow.dynamic import Action
from meggie.mainwindow.dynamic import subject_action

from meggie.actions.epochs_create.dialogs.createEpochsFromEventsDialogMain import CreateEpochsFromEventsDialog
from meggie.actions.epochs_create.dialogs.createEpochsFromEventsDialogMain import (
CreateEpochsFromEventsDialog,
)
from meggie.actions.epochs_create.controller.epoching import create_epochs_from_events


class CreateEpochs(Action):
""" Shows a dialog for event selection and then creates epochs.
"""
"""Shows a dialog for event selection and then creates epochs."""

def run(self):
default_name = next_available_name(
self.experiment.active_subject.epochs.keys(), 'Epochs')
self.experiment.active_subject.epochs.keys(), "Epochs"
)

dialog = CreateEpochsFromEventsDialog(self.experiment, self.window,
default_name, self.handler)
dialog = CreateEpochsFromEventsDialog(
self.experiment, self.window, default_name, self.handler
)
dialog.show()


@subject_action
def handler(self, subject, params):
"""
"""
""" """

@threaded
def create():
create_epochs_from_events(subject, params)
Expand Down
91 changes: 51 additions & 40 deletions meggie/actions/epochs_create/controller/epoching.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,24 @@


def create_epochs_from_events(subject, params):
""" Creates epochs based on events.
"""
"""Creates epochs based on events."""
raw = subject.get_raw()

params = copy.deepcopy(params)
event_params = params['events']
reject_params = params['reject']
event_params = params["events"]
reject_params = params["reject"]

# convert reject params from human readable units to standard units
for key in reject_params:
reject_params[key] /= get_scaling(key)

# remove params that don't match with the channel types present in raw
if mne.pick_types(raw.info, meg='grad', eeg=False).size == 0:
reject_params.pop('grad', None)
if mne.pick_types(raw.info, meg='mag', eeg=False).size == 0:
reject_params.pop('mag', None)
if mne.pick_types(raw.info, meg="grad", eeg=False).size == 0:
reject_params.pop("grad", None)
if mne.pick_types(raw.info, meg="mag", eeg=False).size == 0:
reject_params.pop("mag", None)
if mne.pick_types(raw.info, meg=False, eeg=True).size == 0:
reject_params.pop('eeg', None)
reject_params.pop("eeg", None)

events = []
category = {}
Expand All @@ -44,67 +43,79 @@ def create_epochs_from_events(subject, params):
# so we just add placeholders as 1, 2, 3...
if len(event_params) > 0:
for idx, item in enumerate(event_params):
event_id = item['event_id']
mask = item['mask']
category_id = (
'id_' + str(event_id) + '_mask_' + str(mask))
event_id = item["event_id"]
mask = item["mask"]
category_id = "id_" + str(event_id) + "_mask_" + str(mask)

new_events = find_events(raw, stim_channel, mask, event_id)

if len(new_events) == 0:
logging.warning('No events found with setting ' +
str(category_id))
logging.warning("No events found with setting " + str(category_id))
continue

category[category_id] = idx + 1
new_events[:, 2] = idx + 1

events.extend([[event[0] + int(round(raw.info['sfreq']*params['delay'])),
event[1], event[2]]
for event in new_events])
events.extend(
[
[
event[0] + int(round(raw.info["sfreq"] * params["delay"])),
event[1],
event[2],
]
for event in new_events
]
)

if len(events) == 0:
raise ValueError(
'No matching events found. Please check rejection limits and other parameters.')
"No matching events found. Please check rejection limits and other parameters."
)

# prepare parameters for pick_types
if params['mag'] and params['grad']:
if params["mag"] and params["grad"]:
meg = True
elif params['mag']:
meg = 'mag'
elif params['grad']:
meg = 'grad'
elif params["mag"]:
meg = "mag"
elif params["grad"]:
meg = "grad"
else:
meg = False

eeg = params['eeg']
eeg = params["eeg"]

# find all proper picks, dont exclude bads
picks = mne.pick_types(raw.info, meg=meg, eeg=eeg, exclude=[])

if len(picks) == 0:
raise ValueError('You should select at least one channel type')

mne_epochs = mne.Epochs(raw, np.array(events),
category, params['tmin'], params['tmax'],
baseline=(params['bstart'], params['bend']),
picks=picks, reject=reject_params)
raise ValueError("You should select at least one channel type")

mne_epochs = mne.Epochs(
raw,
np.array(events),
category,
params["tmin"],
params["tmax"],
baseline=(params["bstart"], params["bend"]),
picks=picks,
reject=reject_params,
)

if len(mne_epochs.get_data()) == 0:
raise ValueError('Could not find any data. Perhaps the ' +
'rejection thresholds are too strict...')
raise ValueError(
"Could not find any data. Perhaps the "
+ "rejection thresholds are too strict..."
)

n_dropped = len(events) - len(mne_epochs.get_data())

if n_dropped > 0:
logging.getLogger('ui_logger').info(str(n_dropped) + ' epochs dropped.')
logging.getLogger("ui_logger").info(str(n_dropped) + " epochs dropped.")

epochs_directory = subject.epochs_directory
epochs = Epochs(params['collection_name'],
epochs_directory,
params,
content=mne_epochs)
epochs = Epochs(
params["collection_name"], epochs_directory, params, content=mne_epochs
)

epochs.save_content()
subject.add(epochs, 'epochs')

subject.add(epochs, "epochs")
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@

import numpy as np

from meggie.actions.epochs_create.dialogs.createEpochsFromEventsDialogUi import Ui_CreateEpochsFromEventsDialog
from meggie.actions.epochs_create.dialogs.createEpochsFromEventsDialogUi import (
Ui_CreateEpochsFromEventsDialog,
)
from meggie.actions.epochs_create.controller.epoching import create_epochs_from_events

from meggie.utilities.widgets.batchingWidgetMain import BatchingWidget
Expand All @@ -21,8 +23,7 @@


class CreateEpochsFromEventsDialog(QtWidgets.QDialog):
"""Dialog responsible for collecting parameters for epoch creation.
"""
"""Dialog responsible for collecting parameters for epoch creation."""

def __init__(self, experiment, parent, default_name, handler):
QtWidgets.QDialog.__init__(self, parent)
Expand All @@ -39,7 +40,8 @@ def __init__(self, experiment, parent, default_name, handler):
experiment_getter=self._experiment_getter,
parent=self,
container=self.ui.groupBoxBatching,
geometry=self.ui.batchingWidgetPlaceholder.geometry())
geometry=self.ui.batchingWidgetPlaceholder.geometry(),
)
self.ui.gridLayoutBatching.addWidget(self.batching_widget, 0, 0, 1, 1)

self.ui.lineEditCollectionName.setText(default_name)
Expand All @@ -54,10 +56,9 @@ def _update_events(self):

for event in events:
item = QtWidgets.QListWidgetItem(
'%s, %s' % (
'ID ' + str(event['event_id']),
'mask=' + str(event['mask'])
))
"%s, %s"
% ("ID " + str(event["event_id"]), "mask=" + str(event["mask"]))
)
self.ui.listWidgetEvents.addItem(item)

def _collect_parameter_values(self):
Expand All @@ -71,29 +72,34 @@ def _collect_parameter_values(self):
grad = self.ui.checkBoxGrad.isChecked()
eeg = self.ui.checkBoxEeg.isChecked()

collection_name = validate_name(
str(self.ui.lineEditCollectionName.text()))
collection_name = validate_name(str(self.ui.lineEditCollectionName.text()))

reject = dict()
if mag:
reject['mag'] = self.ui.doubleSpinBoxMagReject.value()
reject["mag"] = self.ui.doubleSpinBoxMagReject.value()
if grad:
reject['grad'] = self.ui.doubleSpinBoxGradReject.value()
reject["grad"] = self.ui.doubleSpinBoxGradReject.value()
if eeg:
reject['eeg'] = self.ui.doubleSpinBoxEEGReject.value()

params = {'mag': mag, 'grad': grad, 'eeg': eeg,
'reject': reject,
'tmin': tmin, 'tmax': tmax,
'bstart': bstart, 'bend': bend,
'delay': delay,
'collection_name': collection_name,
'events': self.events}
reject["eeg"] = self.ui.doubleSpinBoxEEGReject.value()

params = {
"mag": mag,
"grad": grad,
"eeg": eeg,
"reject": reject,
"tmin": tmin,
"tmax": tmax,
"bstart": bstart,
"bend": bend,
"delay": delay,
"collection_name": collection_name,
"events": self.events,
}
return params

def accept(self):
if self.ui.listWidgetEvents.count() == 0:
message = 'Cannot create epochs from empty list.'
message = "Cannot create epochs from empty list."
messagebox(self.parent, message)
return

Expand All @@ -120,7 +126,7 @@ def acceptBatch(self):
experiment = self.experiment

if self.ui.listWidgetEvents.count() == 0:
message = 'Cannot create epochs from empty list.'
message = "Cannot create epochs from empty list."
messagebox(self.parent, message)
return

Expand All @@ -137,9 +143,8 @@ def acceptBatch(self):
self.handler(subject, params)
subject.release_memory()
except Exception as exc:
self.batching_widget.failed_subjects.append((subject,
str(exc)))
logging.getLogger('ui_logger').exception('')
self.batching_widget.failed_subjects.append((subject, str(exc)))
logging.getLogger("ui_logger").exception("")

self.batching_widget.cleanup()

Expand All @@ -155,8 +160,9 @@ def on_pushButtonEdit_clicked(self, checked=None):
if checked is None:
return

self.bitDialog = BitSelectionDialog(self,
self.ui.spinBoxMask, self.ui.spinBoxEventID)
self.bitDialog = BitSelectionDialog(
self, self.ui.spinBoxMask, self.ui.spinBoxEventID
)

self.bitDialog.show()

Expand All @@ -178,17 +184,18 @@ def on_pushButtonHelp_clicked(self, checked=None):
"two digits can be 1 or 0, but anything else must be exactly as "
"in the event id. Thus events with following id's would be allowed:"
"\n\n0000010000010000 = 1040\n0000010000010001 = 1041\n"
"0000010000010010 = 1042\n0000010000010011 = 1043")
"0000010000010010 = 1042\n0000010000010011 = 1043"
)

messagebox(self.parent, help_message, 'Mask help')
messagebox(self.parent, help_message, "Mask help")

def on_pushButtonAdd_clicked(self, checked=None):
if checked is None:
return

event_params = {
'mask': self.ui.spinBoxMask.value(),
'event_id': self.ui.spinBoxEventID.value(),
"mask": self.ui.spinBoxMask.value(),
"event_id": self.ui.spinBoxEventID.value(),
}

if event_params not in self.events:
Expand All @@ -201,4 +208,3 @@ def on_pushButtonClear_clicked(self, checked=None):

self.events = []
self._update_events()

Loading

0 comments on commit daedc67

Please sign in to comment.