Every file MEEGqc produces
A run leaves behind a single, self-describing tree under
derivatives/MEEGqc/. Every file name is
BIDS-compliant: an alphanumeric
desc-<Label> entity followed by the modality
suffix (_meg or _eeg) and an
extension. This section lists every output, where it lands, and
what it holds, so you can read or post-process any of them
without opening MEEGqc.
Three writers populate the tree. The
calculation module writes the per-recording QA
and QC derivatives (TSV + JSON) plus a settings snapshot. The
Global Quality Index (GQI) step writes the
dataset-level scores. The plotting module
writes the interactive HTML reports. Nothing visual is required
to keep the data: every report is regenerated from the
derivatives.
Legacy mode vs profile mode
In legacy mode (the default) outputs sit directly under
derivatives/MEEGqc/. In profile mode
(--analysis_mode new-profile|reuse-profile|latest-profile) the exact same
subtree is nested one level deeper under
derivatives/MEEGqc/profiles/<analysis_id>/, so
several parameter configurations can coexist on one dataset
without overwriting each other. Per-modality files split into
meg/ and eeg/ subfolders; a multimodal
subject produces both.
The derivatives tree
Legacy-mode layout for a dataset that contains MEG recordings
(an EEG dataset mirrors this with eeg/ subfolders
and _eeg suffixes):
▾
<dataset>/derivatives/MEEGqc/
▾
calculation/meg/sub-XX/
per-recording QA + QC derivatives
•
sub-XX_..._desc-STDs_meg.tsv
per-channel standard deviation
•
sub-XX_..._desc-PtPsManual_meg.tsv
per-channel peak-to-peak
•
sub-XX_..._desc-PSDs_meg.tsv
per-channel power spectral density
•
sub-XX_..._desc-ECGs_meg.tsv
cardiac contamination ranking
•
sub-XX_..._desc-EOGs_meg.tsv
ocular contamination ranking
•
sub-XX_..._desc-Muscle_meg.tsv
muscle z-score time course + events
•
sub-XX_..._desc-Head_meg.tsv
continuous head position (MEG, cHPI)
•
sub-XX_..._desc-SimpleMetrics_meg.json
consolidated per-recording QC roll-up
•
sub-XX_..._desc-EventSummary_meg.json
event + epoching summary
•
sub-XX_..._desc-RawInfo_meg.fif
recording header snapshot (+ companion tables)
▾
config/
•
*_desc-UsedSettings_meg.ini
settings.ini snapshot for the run (+ .json manifest)
▾
reports/meg/
interactive HTML reports
•
sub-XX/sub-XX_desc-subjectQaReport_meg.html
subject-level QA
•
desc-datasetQaReport_meg.html
dataset-level QA
•
desc-datasetQcReportAttempt<N>_meg.html
dataset-level QC
•
desc-multiDatasetQaReportDate<...>Time<...>_meg.html
multi-dataset QA
•
desc-multiDatasetQcReportAttempt<N>Date<...>Time<...>_meg.html
multi-dataset QC
▾
summary_reports/
Global Quality Index outputs
•
group_metrics/meg/desc-GlobalQualityIndexAttempt<N>_meg.tsv
GQI attempt table (one row per recording)
•
global_quality_index_<N>/sub-XX/..._desc-GlobalSummaryReportAttempt<N>_meg.json
per-recording GQI summary
•
config/desc-GlobalQualityIndexAttempt<N>_settings.ini
GQI parameter snapshot for the attempt
•
profile_manifest.json
run metadata: mode, id, config hash, version
•
excluded_subjects, excluded_subjects_errors.json
subjects that failed, with the error trace
In profile mode the same tree is written under
derivatives/MEEGqc/profiles/<analysis_id>/:
▾
<dataset>/derivatives/MEEGqc/profiles/<analysis_id>/
▸
calculation/ · config/ · reports/ · summary_reports/
identical contents to the legacy tree above
Metric output dictionary
Each metric module writes one headline machine-readable table
per recording under
calculation/{meg,eeg}/sub-XX/. The
{Mag,Grad,Eeg} placeholder means one file is
written per analysed channel type (for example
desc-STDs covers all channel types in one table,
while the per-epoch flag tables are split by channel type).
| Metric module |
Representative output file |
Key columns |
Aggregation level |
| STD |
*_desc-STDs_meg.tsv |
channel name + identity, overall STD, per-epoch STD (STD epoch_0..N) |
channel x epoch |
| PtP (manual) |
*_desc-PtPsManual_meg.tsv |
channel name + identity, overall peak-to-peak, per-epoch PtP |
channel x epoch |
| PSD |
*_desc-PSDs_meg.tsv |
channel name + identity, amplitude at each frequency step |
channel x frequency |
| ECG |
*_desc-ECGs_meg.tsv |
channel name, correlation coefficient, p-value and amplitude ratio against the mean R-wave |
channel |
| EOG |
*_desc-EOGs_meg.tsv |
channel name, correlation coefficient, p-value and amplitude ratio against the mean blink |
channel |
| Muscle |
*_desc-Muscle_meg.tsv |
time index, muscle z-score, detected high-score event times, channel type |
recording time series + events |
| Head motion |
*_desc-Head_meg.tsv |
time, translation x / y / z, rotation quaternions q1 / q2 / q3, goodness-of-fit, error, velocity |
time series (MEG only) |
| Event summary |
*_desc-EventSummary_meg.json |
per-event-id counts, epoch onset times, sfreq, stim-channel event counts, BIDS events.tsv comparison |
recording |
| Consolidated QC |
*_desc-SimpleMetrics_meg.json |
per-recording roll-up of every metric (global / local noisy + flat counts, PSD noise, ECG / EOG ranking, head, muscle) |
recording |
| GQI |
desc-GlobalQualityIndexAttempt<N>_meg.tsv |
subject, task, composite GQI score, per-metric percentages, penalty terms, parameters |
recording (one row each) |
Companion derivatives written next to the headline tables
Alongside each headline table the calculation module writes
the intermediate tables the reports draw from. All live in the
same calculation/{meg,eeg}/sub-XX/ folder.
| File | What it holds |
*_desc-Sensors_meg.tsv | Baseline channel directory: name, type, lobe, colour, system, 3-D sensor location. |
*_desc-stimulus_meg.tsv | Raw stimulus / trigger channel time series (one column per stim channel). |
*_desc-STDPerEpochVsMeanRatio{Mag,Grad,Eeg}_meg.tsv | Per channel and epoch, the STD-to-mean ratio used to flag epochs. |
*_desc-NoisyEpochsOnSTDBase{Mag,Grad,Eeg}_meg.tsv | Boolean noisy-epoch flags (STD basis) plus per-epoch summary rows. |
*_desc-FlatEpochsOnSTDBase{Mag,Grad,Eeg}_meg.tsv | Boolean flat-epoch flags (STD basis) plus per-epoch summary rows. |
*_desc-PtPPerEpochVsMeanRatio{Mag,Grad,Eeg}_meg.tsv | Per channel and epoch, the PtP-to-mean ratio. |
*_desc-NoisyEpochsOnPtPBase{Mag,Grad,Eeg}_meg.tsv | Boolean noisy-epoch flags (PtP basis) plus summary rows. |
*_desc-FlatEpochsOnPtPBase{Mag,Grad,Eeg}_meg.tsv | Boolean flat-epoch flags (PtP basis) plus summary rows. |
*_desc-AbsAmpl{Mag,Grad,Eeg}_meg.tsv | Absolute amplitude (area under the PSD) per functional frequency band, per channel. |
*_desc-RelativeAmpl{Mag,Grad,Eeg}_meg.tsv | Each band's amplitude as a fraction of the channel's total amplitude. |
*_desc-AmplByNfreq{Mag,Grad,Eeg}_meg.tsv | Each band's amplitude divided by the number of frequency bins in the band. |
*_desc-PSDwaves{Mag,Grad,Eeg}_meg.tsv | Mean absolute and relative band amplitudes averaged across all channels of the type. |
*_desc-PSDnoise{Mag,Grad,Eeg}_meg.tsv | Detected noise frequencies on the average PSD, with absolute and relative noise amplitudes. |
*_desc-ECGchannel_meg.tsv | The ECG reference channel time series with detected R-wave events and the mean R-wave. |
*_desc-EOGchannel_meg.tsv | The EOG reference channel time series with detected blink events and the mean blink. |
The PerEpochVsMeanRatio, NoisyEpochsOn
and FlatEpochsOn tables are written only when the
recording was epoched (BIDS events present, or fixed-length
epoching enabled).
Output classes and paths
Grouped by output class, with the legacy-mode path and its
profile-mode equivalent. <label> is a subject
label, <N> a GQI attempt number,
<id> an analysis profile id.
| Output class |
Scope |
Format |
Typical path (legacy mode) |
Typical path (profile mode) |
| QA / QC metric derivatives |
recording / module |
TSV + JSON |
derivatives/MEEGqc/calculation/{meg,eeg}/sub-<label>/*_desc-<Metric>_<modality>.tsv |
derivatives/MEEGqc/profiles/<id>/calculation/... |
| Recording info snapshot |
recording |
FIF |
calculation/{meg,eeg}/sub-<label>/*_desc-RawInfo_<modality>.fif |
Same, under profiles/<id>/ |
| Run settings snapshot |
run |
INI + JSON |
derivatives/MEEGqc/config/*_desc-UsedSettings_<modality>.ini |
derivatives/MEEGqc/profiles/<id>/config/... |
| GQI attempt table |
dataset / attempt |
TSV |
summary_reports/group_metrics/{meg,eeg}/desc-GlobalQualityIndexAttempt<N>_<modality>.tsv |
Same, under profiles/<id>/ |
| Per-subject GQI summary |
recording |
JSON |
summary_reports/global_quality_index_<N>/sub-<label>/*_desc-GlobalSummaryReportAttempt<N>_<modality>.json |
Same, under profiles/<id>/ |
| GQI settings snapshot |
dataset / attempt |
INI |
summary_reports/config/desc-GlobalQualityIndexAttempt<N>_settings.ini |
Same, under profiles/<id>/ |
| Subject QA report |
subject |
HTML |
reports/{meg,eeg}/sub-<label>/sub-<label>_desc-subjectQaReport_<modality>.html |
profiles/<id>/reports/{meg,eeg}/sub-<label>/... |
| Dataset QA report |
dataset |
HTML |
reports/{meg,eeg}/desc-datasetQaReport_<modality>.html |
Same, under profiles/<id>/ |
| Dataset QC report |
dataset / attempt |
HTML |
reports/{meg,eeg}/desc-datasetQcReport[Attempt<N>]_<modality>.html |
Same, under profiles/<id>/ |
| Multi-dataset QA report |
multi-dataset |
HTML |
reports/{meg,eeg}/desc-multiDatasetQaReportDate<...>Time<...>_<modality>.html |
Same, or an explicit --output_report path |
| Multi-dataset QC report |
multi-dataset / attempt |
HTML |
reports/{meg,eeg}/desc-multiDatasetQcReport[Attempt<N>]Date<...>Time<...>_<modality>.html |
Same, or an explicit --output_report path |
| Run manifest + error logs |
run |
JSON / text |
derivatives/MEEGqc/{profile_manifest.json, excluded_subjects, excluded_subjects_errors.json} |
Same, under profiles/<id>/ |
The four HTML reports
The plotting module renders four report families. All are
self-contained: open them in any browser, no MEEGqc install
required. Single-dataset reports drop the dataset name from the
file name (it is implied by the folder); multi-dataset reports
carry a unique run id so repeated runs never collide.
| Report | File name | What it shows |
| Subject QA |
sub-<label>_desc-subjectQaReport_<modality>.html |
Every QA metric for one subject, in tabs: Overview, STD, PtP (manual), PtP (auto), PSD, ECG, EOG, Muscle, Head, Stimulus, QC summary, and a Settings tab. Topomaps appear as adjacent 2D and 3D views. |
| Dataset QA |
desc-datasetQaReport_<modality>.html |
QA derivatives pooled across every recording in the dataset, in channel-type tabs (Combined / MAG / GRAD / EEG) plus a Settings tab. |
| Dataset QC |
desc-datasetQcReport[Attempt<N>]_<modality>.html |
The GQI attempt table for the dataset: per-subject scores, penalty decomposition and the thresholds used. The Attempt<N> token appears once an attempt is resolved. |
| Multi-dataset QA / QC |
desc-multiDatasetQaReportDate<...>Time<...>_<modality>.html
desc-multiDatasetQcReport[Attempt<N>]Date<...>Time<...>_<modality>.html |
The dataset-level QA or QC views overlaid across two or more datasets for side-by-side comparison. Written next to the first dataset (or an explicit --output_report path). |
Provenance travels with the data
Three artefacts make any result reproducible: the
*_desc-UsedSettings_<modality>.ini snapshot of
the exact settings.ini used (with a JSON manifest of
the files processed), the
desc-GlobalQualityIndexAttempt<N>_settings.ini
snapshot of the GQI thresholds for each attempt, and the
profile_manifest.json recording the analysis mode,
profile id, config hash and MEEGqc version. Each GQI re-run adds
a new numbered attempt rather than overwriting the previous one.
Next: the reports reference or the
metrics + GQI page.