mnelab-1.5.4-pyh76ed318_0.conda
CONDA
Verdict: BENIGN
| 97 |
@data_changed(invalidate_cache=False) |
| 98 |
def remove_data(self, index=-1): |
| 99 |
"""Remove data set at current index."""Delete verb (remove) |
| 100 |
if index == -1: |
| 101 |
index = self.index |
| 250 |
raise e |
| 251 |
self.history.append( |
| 252 |
f'data = read_epochs("{fname}", preload=True)'.replace("'", '"')Replaces quotes before JSON parsing |
| 253 |
) |
| 254 |
else: |
| 358 |
ext = ext if ext else ".csv" # automatically add extension |
| 359 |
fname = join(split(fname)[0], name + ext) |
| 360 |
with open(fname, "w") as f:Python open() file call |
| 361 |
f.write(",".join(self.current["data"].info["bads"])) |
| 410 |
"""Import bad channels info from a CSV file.""" |
| 411 |
with open(fname) as f: |
| 412 |
bads = f.read().replace(" ", "").strip().split(",")junk-char .replace stuffing removal |
| 413 |
unknown = set(bads) - set(self.current["data"].info["ch_names"]) |
| 414 |
if unknown: |
| 428 |
f.readline() # skip header |
| 429 |
for line in f: |
| 430 |
p, d = (int(token.strip()) for token in line.split(","))token keyword |
| 431 |
pos.append(p) |
| 432 |
desc.append(d) |
| 933 |
def _cleanup_dataset_cache(self, dataset): |
| 934 |
"""Delete the temp cache file for a dataset, if one exists."""Delete verb (delete) |
| 935 |
path = dataset["_cache_path"] |
| 936 |
if path: |
| 1004 |
for path in list(self._temp_files): |
| 1005 |
Path(path).unlink(missing_ok=True) |
| 1006 |
self._temp_files.clear()Cleanup verb (clear) |
| 18 |
QTreeWidget, |
| 19 |
QTreeWidgetItem, |
| 20 |
QVBoxLayout,Regex component marker |
| 21 |
QWidget, |
| 22 |
) |
| 88 |
self.setUniformRowHeights(True) |
| 89 |
self.setObjectName("sidebar") |
| 90 |
self.setMouseTracking(True)VirtualBox artifact token |
| 91 |
self.setTabKeyNavigation(False) |
| 92 |
# prevent double-click from toggling expand/collapse so it can trigger editing |
| 170 |
def dragEnterEvent(self, event): |
| 171 |
if event.mimeData().hasUrls(): |
| 172 |
event.accept()socket.accept() call |
| 173 |
else: |
| 174 |
event.ignore() |
| 263 |
def showCloseButton(self, hovered_item): |
| 264 |
"""Show the close button on the hovered item; remove it from all others."""Delete verb (remove) |
| 265 |
for item in self._all_items(): |
| 266 |
if item is hovered_item: |
| 305 |
) |
| 306 |
msg.setDefaultButton(QMessageBox.StandardButton.Cancel) |
| 307 |
if msg.exec() != QMessageBox.StandardButton.Ok:Python eval/exec dynamic sink |
| 308 |
return |
| 309 |
self.parent.window().model.remove_data_cascade(dataset_id) |
| 13 |
from pathlib import Path |
| 14 |
from sys import version_info |
| 15 |
from urllib.request import Request, urlopenSource imports urllib.request |
| 27 |
Slot, |
| 28 |
) |
| 29 |
from PySide6.QtGui import QAction, QDesktopServices, QIcon, QKeySequenceVM service-name artifact marker |
| 30 |
from PySide6.QtWidgets import ( |
| 31 |
QApplication, |
| 32 |
QFileDialog, |
| 124 |
# remove None entries from self.recentDelete verb (remove) |
| 125 |
self.recent = [recent for recent in self.recent if recent is not None] |
| 565 |
exception_text = str(value) |
| 566 |
traceback_text = "".join(traceback.format_exception(type, value, traceback_)) |
| 567 |
print(traceback_text, file=sys.stderr)Process output/status field names (stderr) |
| 568 |
ErrorMessageBox(self, exception_text, "", traceback_text).show() |
| 605 |
# itemChanged callbacks that would corrupt model.index or dataset names |
| 606 |
self.sidebar.blockSignals(True) |
| 607 |
self.sidebar.clear()Cleanup verb (clear) |
| 608 |
id_to_item = {} |
| 609 |
for dataset in self.model.data: |
| 747 |
fnames = [fname] |
| 748 |
for fname in fnames: |
| 749 |
if not (Path(fname).is_file() or Path(fname).is_dir()):Regex component marker |
| 750 |
self._remove_recent(fname) |
| 751 |
QMessageBox.critical( |
| 779 |
selected=None, |
| 780 |
) |
| 781 |
if dialog.exec():Python eval/exec dynamic sink |
| 782 |
fs_new = None |
| 783 |
gap_threshold = 0.0 |
| 875 |
if fname: |
| 876 |
self._set_last_dir(fname) |
| 877 |
exts = [ext.replace("*", "") for ext in ffilter.split()]junk-char .replace stuffing removal |
| 878 |
for ext in exts: |
| 879 |
if fname.endswith(ext): |
| 1722 |
f"<nobr><p>This program uses Python {version} and the following packages:" |
| 1723 |
f"</p></nobr><p>{', '.join(pkgs)}</p>" |
| 1724 |
f"<nobr><p>MNELAB repository: <a href=https://{mnelab_url}>{mnelab_url}</a>"Codebase/repository keyword (repository) |
| 1725 |
f"</p></nobr><nobr><p>MNE repository: " |
| 1726 |
f"<a href=https://{mne_url}>{mne_url}</a></p></nobr>" |
| 1739 |
try: |
| 1740 |
req = Request( |
| 1741 |
"https://api.github.com/repos/cbrnr/mnelab/releases/latest",GitHub releases API path |
| 1742 |
headers={"User-Agent": "MNELAB"}, |
| 1743 |
) |
| 1744 |
with urlopen(req, timeout=10) as response: |
| 1745 |
data = json.loads(response.read())Python json.loads call |
| 1746 |
latest = data["tag_name"].lstrip("v") |
| 1747 |
except Exception: |
| 2000 |
print(format_code("\n".join(self.model.history))) |
| 2001 |
self.model.cleanup() |
| 2002 |
event.accept()socket.accept() call |
| 2003 |
elif event.type() == QEvent.Type.PaletteChange: |
| 2004 |
color_scheme = QApplication.styleHints().colorScheme() |
| 0 |
{"dir_info": {}, "url": "file:///Users/runner/miniforge3/conda-bld/bld/rattler-bJSON data format |
| 1 |
Metadata-Version: 2.4PyPI package declares license metadata |
| 2 |
Name: mnelabPyPI package has basic metadata |
| 3 |
Version: 1.5.4PyPI package has rich metadata |
| 4 |
Summary: A graphical user interface for MNEPKG-INFO declares package summary |
| 5 |
Keywords: EEG,MEG,MNE,GUI,electrophysiology |
| 6 |
Author: Clemens Brunner |
| 7 |
Author-email: Clemens Brunner <[email protected]> |
| 8 |
License-Expression: BSD-3-ClausePKG-INFO declares license expression |
| 9 |
License-File: LICENSEPKG-INFO declares license file |
| 10 |
Classifier: Operating System :: OS Independent |
| 11 |
Classifier: Programming Language :: Python :: 3 |
| 13 |
Classifier: Programming Language :: Python :: 3.13 |
| 14 |
Classifier: Programming Language :: Python :: 3.14Python 3.14 classifier |
| 15 |
Requires-Dist: black>=25.3.1PyPI package declares runtime metadata |
| 16 |
Requires-Dist: edfio>=0.4.13 |
| 17 |
Requires-Dist: isort>=8.0.1 |
| 29 |
Requires-Dist: python-picard>=0.8.1 ; extra == 'full' |
| 30 |
Requires-Dist: scikit-learn>=1.8.0 ; extra == 'full' |
| 31 |
Requires-Python: >=3.12PyPI package has rich metadata |
| 32 |
Project-URL: homepage, https://github.com/cbrnr/mnelab |
| 33 |
Project-URL: documentation, https://mnelab.readthedocs.io/en/latest/ |
| 34 |
Project-URL: repository, https://github.com/cbrnr/mnelab |
| 35 |
Project-URL: changelog, https://github.com/cbrnr/mnelab/blob/main/CHANGELOG.md |
| 36 |
Provides-Extra: full |
| 37 |
Description-Content-Type: text/markdownPKG-INFO declares markdown description |
| 1 |
{JSON data format |
| 2 |
"paths": [ |
| 3 |
{ |
| 1 |
{JSON data format |
| 2 |
"build": "pyh76ed318_0", |
| 3 |
"build_number": 0, |
| 1 |
{JSON data format |
| 2 |
"channels": [ |
| 3 |
"https://conda.anaconda.org/conda-forge/" |
Objectives
-
mainwindow.py
30903
if dialog.exec():
-
model.py
14265
bads = f.read().replace(" ", "").strip().split(",")
-
mainwindow.py
35230
exts = [ext.replace("*", "") for ext in ffilter.split()]
-
sidebar.py
11294
if msg.exec() != QMessageBox.StandardButton.Ok:
notable severity, 82% confident.
supply-chain/metadata-anomaly
Sidecar stored as single JSON line
Micro-behaviors
-
mainwindow.py
295
from urllib.request import Request, urlopen
-
mainwindow.py
290
from urllib.request import Request, urlopen
-
mainwindow.py
290
from urllib.request import Request, urlopen
-
mainwindow.py
79469
event.accept()
×2
-
sidebar.py
5989
event.accept()
×2
-
mainwindow.py
69243
"https://api.github.com/repos/cbrnr/mnelab/releases/latest",
-
mainwindow.py
69437
data = json.loads(response.read())
-
model.py
8275
f'data = read_epochs("{fname}", preload=True)'.replace("'", '"')
notable severity, 78% confident.
fs/file/write
Python write() call
notable severity, 70% confident.
process/interpreter
python interpreter keyword (beyond shebang)
Metadata
-
mainwindow.py
295
from urllib.request import Request, urlopen
baseline severity, 95% confident.
import
imports mnelab
baseline severity, 95% confident.
import/python::importlib
imports importlib.metadata
baseline severity, 95% confident.
import/python::matplotlib
imports matplotlib.gridspec as gridspec
baseline severity, 95% confident.
import/python::matplotlib/backends
imports matplotlib.backends.backend_qtagg
baseline severity, 95% confident.
import/python::mne
imports mne.io
baseline severity, 95% confident.
import/python::mnelab
imports mnelab.utils
baseline severity, 95% confident.
import/python::mnelab/dialogs
imports mnelab.dialogs.utils
baseline severity, 95% confident.
import/python::mnelab/utils
imports mnelab.utils.dependencies
baseline severity, 100% confident.
library
Python standard library module group 1
20 of 56 traits shown
Identity
| SHA-256 |
ca03f447da08f5b7b9ee51901df79471eb5b09ec6e109f8c6ea78a9733425eb5 |
| Canonical SHA-256 |
02c92921fa6fac558467ecba9aeb09feaed7c7df374bdeb9045e8e891c19a229 |
| Filename |
mnelab-1.5.4-pyh76ed318_0.conda |
| Package |
mnelab |
| Version |
1.5.4-pyh76ed318_0 |
Origin
| Source |
harvest |
| Feed |
anaconda.org |
| Ecosystem |
python |
| Domain |
anaconda.org |
Timeline
| First seen |
16 Jun 2026 22:06 UTC |
| First analyzed |
16 Jun 2026 23:50 UTC |
| Last analyzed |
16 Jun 2026 23:50 UTC |
| Last updated |
16 Jun 2026 23:50 UTC |
Labeling
| Label |
unknown |
| Label source |
harvest |
| Traits version |
27202 |