mne-timefreq — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mne-timefreq (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Time-frequency analysis of neurophysiology data via the MNE MCP server. This skill is skeptical by design: most time-frequency mistakes (edge artifacts read as real low-frequency effects, an unstated or contaminated baseline, evoked-vs-induced confusion) run without any error — so the discipline is to grill before computing and critique before believing.
Companion skills:mne-mcp-guardfor technical execution safety (wavelet-length errors);mne-methodology-criticfor Phase 3. Loaded objects persist in one MNE session.
Do not compute a TFR until these are answered. If the user can't answer one, propose a sensible default and explicitly flag the open risk — never silently choose.
Design & claim
pre × post, post-stimulus × baseline)
corrected)?
The two questions that decide validity
consistency across trials (0–1). They answer different questions — a stimulus can drive ITC with little power change (and vice versa). State which, or both.
phase-locked activity; per-trial power then averaged (total/induced) also captures non-phase-locked oscillations. These are different claims; mixing them (e.g. computing total power but interpreting it as the evoked response) is the most common fatal error here.
Data & parameters
wavelet at f Hz with n_cycles cycles has half-length ≈ n_cycles / (2f) s — the epoch must extend that far beyond every time point you interpret, or you read edge artifacts.
freqs/2) and its time ↔ frequency resolution tradeoff: fewercycles = better time, worse frequency resolution (and shorter wavelet → less edge contamination).
baseline clean (no spillover from the previous trial, no anticipatory activity)?
Inference plan (pin this down NOW, not after seeing results)
are massively multiple and correlated → plan cluster-based permutation in time-frequency.
mne_check_status; mne_describe("epochs") to read the epochwindow. Check the epoch is wide enough: for the lowest frequency, you need ≈ n_cycles/(2·fmin) s of pad on each side of the interpretable window. If not, re-epoch wider (e.g. -0.5 to 1.0+ s) from raw before computing.
mne_tfr_morlet(fmin=, fmax=, n_freqs=). For ITCand full control use mne_run_code:
import numpy as np
freqs = np.linspace(4, 40, 20)
n_cycles = freqs / 2.0 # default tradeoff; raise for fine freq resolution
power, itc = mne.time_frequency.tfr_morlet(
epochs, freqs=freqs, n_cycles=n_cycles,
use_fft=True, return_itc=True, average=True) # average=True ⇒ total/induced power + ITC(Multitaper: tfr_multitaper(..., time_bandwidth=4.0). Stockwell: tfr_stockwell(epochs, fmin=4, fmax=40). Evoked power: compute on epochs.average() instead of per-trial.)
power.plot([0], baseline=(-0.5, 0), mode="logratio") # or: zscore / percent / meanlogratio/percent = relative to baseline; zscore = SD units. Baseline must sit in the clean pre-stimulus window, clear of edge and anticipatory activity.
(the cone of influence widens at low frequencies) and explicitly avoid interpreting it.
you used per-trial power (average=True over single-trial TFRs), not power of the evoked average.
mne-analyst archiving convention).Best-practice reminders: epoch wide then crop the display; report n_cycles, baseline window + mode, and method; mark the edge/cone region; prefer a time-freq window that was pre-specified.
Hand the design + result to `mne-methodology-critic` (invoke the skill, or dispatch it as a subagent with references/methodology-checklist.md). For time-frequency work it will specifically check:
Report its BLOCK / REVISE / PASS verdict to the user and act on it before stating conclusions.
See references/timefreq-methods.md for deeper recipes (Morlet vs multitaper vs Stockwell, ITC, baseline modes, the n_cycles/edge tradeoff, and time-frequency inference choices).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.