From 6be98476a0c6cc01e25ac39f3b9ec2f36929bd02 Mon Sep 17 00:00:00 2001 From: varshaa-1616 Date: Sat, 6 Dec 2025 01:41:42 +0530 Subject: [PATCH 1/7] Add QC + Full MNE Report tutorial --- doc/optipng-0.7.8-win64/OptiPNG.url | 2 + doc/optipng-0.7.8-win64/doc/authors.txt | 31 + doc/optipng-0.7.8-win64/doc/history.txt | 435 ++++++++++ doc/optipng-0.7.8-win64/doc/license.txt | 21 + doc/optipng-0.7.8-win64/doc/optipng.man.pdf | Bin 0 -> 42393 bytes doc/optipng-0.7.8-win64/doc/optipng.man.txt | 299 +++++++ doc/optipng-0.7.8-win64/doc/todo.txt | 42 + doc/optipng-0.7.8-win64/optipng.exe | Bin 0 -> 229888 bytes tutorials/intro/70_report.py | 880 +++++--------------- 9 files changed, 1054 insertions(+), 656 deletions(-) create mode 100644 doc/optipng-0.7.8-win64/OptiPNG.url create mode 100644 doc/optipng-0.7.8-win64/doc/authors.txt create mode 100644 doc/optipng-0.7.8-win64/doc/history.txt create mode 100644 doc/optipng-0.7.8-win64/doc/license.txt create mode 100644 doc/optipng-0.7.8-win64/doc/optipng.man.pdf create mode 100644 doc/optipng-0.7.8-win64/doc/optipng.man.txt create mode 100644 doc/optipng-0.7.8-win64/doc/todo.txt create mode 100644 doc/optipng-0.7.8-win64/optipng.exe diff --git a/doc/optipng-0.7.8-win64/OptiPNG.url b/doc/optipng-0.7.8-win64/OptiPNG.url new file mode 100644 index 00000000000..9796437165b --- /dev/null +++ b/doc/optipng-0.7.8-win64/OptiPNG.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=http://optipng.sourceforge.net/ diff --git a/doc/optipng-0.7.8-win64/doc/authors.txt b/doc/optipng-0.7.8-win64/doc/authors.txt new file mode 100644 index 00000000000..0245e5ab1be --- /dev/null +++ b/doc/optipng-0.7.8-win64/doc/authors.txt @@ -0,0 +1,31 @@ +# OptiPNG version 0.7.8 +# Copyright (C) 2001-2023 Cosmin Truta and the Contributing Authors. +# See the accompanying LICENSE file for details. +# +# A Contributing Author is a person or company who contributed code that +# is now part of OptiPNG. +# +# For the purpose of copyright and licensing, this is the official list +# of Contributing Authors, in alphabetic order. + +Adam Ciarcinski +Brian McQuade +Elias Pipping +Fabien Barbier +Friedrich Preuss +Maciej Pilichowski +Matthew Fearnley +Nelson A. de Oliveira +Niels de Koning +Oliver Schneider +Petr Gajdos +Piotr Bandurski +Priit Laes +Ramona C. Truta +Sebastian Pipping +Stefan Brüns +Thomas Hurst +Till Maas +Ville Skyttä +Vincent Lefèvre +Yuen Ho Wong diff --git a/doc/optipng-0.7.8-win64/doc/history.txt b/doc/optipng-0.7.8-win64/doc/history.txt new file mode 100644 index 00000000000..ccd3746dc2e --- /dev/null +++ b/doc/optipng-0.7.8-win64/doc/history.txt @@ -0,0 +1,435 @@ +OptiPNG - Revision history +========================== + +Legend +------ +++ Added or improved performance-related feature + (might improve compression ratio or processing speed). + + Added or improved feature. + - Removed feature. + ! Fixed bug. +!! Fixed critical bug + (crash, data/metadata loss or security hazard). + * Other modification (e.g. architectural improvement). + +Version 0.7.8 2023-nov-03 +------------- + * Upgraded libpng to version 1.6.40. + * Upgraded zlib to version 1.3-optipng. + * Upgraded cexcept to version 2.0.2-optipng. +!! Fixed a global-buffer-overflow vulnerability in the GIF reader. + [Reported by Zeng Yunxiang; fixed by Thomas Hurst] + ! Fixed a stack-print-after-scope defect in the error handler. + ! Fixed an assertion failure in the image reduction module. + ! Fixed the command-line wildargs expansion in the Windows port. + * Raised the minimum required libpng version from 1.2.9 to 1.6.35. + * Raised the minimum required zlib version from 1.2.1 to 1.2.8. + * Refactored the structured exception handling. + +Version 0.7.7 2017-dec-27 +------------- + * Upgraded libpng to version 1.6.34. + * Upgraded zlib to version 1.2.11-optipng. + * Upgraded minitiff to version 0.2. +!! Fixed a buffer overflow vulnerability in the GIF decoder. + [Reported by Joonun Jang] +!! Fixed an integer overflow vulnerability in the TIFF decoder. + [Reported by Jaeseung Choi] + ! Fixed the build on macOS High Sierra. + [Reported by various users] + [Fixed by Yuen Ho Wong and Friedrich Preuss] + ! Fixed the build on DJGPP. + * Disallowed out-of-bounds values in rangeset options. + +Version 0.7.6 2016-apr-03 [Released by Ramona C. Truta] +------------- + * Upgraded libpng to version 1.6.21. + ! Fixed an assertion failure in the image reduction code. + [Fixed by upgrading libpng] +!! Fixed various security-sensitive defects in the BMP decoder. + [Reported by Henri Salo and Hans Jerry Illikainen] + [Fixed by Ramona C. Truta] + ! Fixed a benign uninitialized memory read in the GIF decoder. + [Reported by Gustavo Grieco] + ! Fixed a build failure occurring under the Estonian (et_EE) locale. + [Reported by Sebastian Pipping] + [Fixed by Priit Laes] + ! Fixed a build failure occurring on Mac OS X, FreeBSD, and possibly + other systems that lack POSIX-compliant high-resolution timestamps. + [Reported by Ryan Schmidt and Dmitry Egorov] + [Contributed by Sebastian Pipping] + ! Fixed a typo causing build failures in 32-bit ANSI C compilation. + [Reported by various users] + +Version 0.7.5 2014-mar-24 +------------- + * Upgraded libpng to version 1.6.10-optipng. + * Upgraded zlib to version 1.2.8-optipng. + ! Fixed various build issues with libpng-1.5 and libpng-1.6. + [Fixed by Oliver Schneider] + * Allowed the handling of huge image files (> millions of pixels + per row or column) to be independent of the libpng version. + + Allowed the option -preserve to save the file ownership (UID/GID) + on Unix. + [Requested by Otto Kekäläinen] + ! Fixed a build issue with Clang. + + Added various enhancements to the configure script. + +Version 0.7.4 2012-oct-21 +------------- +!! Fixed the previous fix, which failed to fix the option -fix. + [Reported by Gynvael Coldwind and Mateusz Jurczyk] + +Version 0.7.3 2012-sep-16 +------------- +!! Fixed a use-after-free vulnerability in the palette reduction code. + This vulnerability was accidentally introduced in version 0.7. + +Version 0.7.2 2012-aug-24 +------------- + * Upgraded libpng to version 1.4.12. + * Upgraded zlib to version 1.2.7-optipng. + ! Fixed the display of huge (4GB+) file/IDAT sizes on 32-bit platforms. + ! Issued a proper error message if the output IDAT can't fit in 2GB. + Acknowledged this limitation in the user manual. + [Reported by John Sauter] + ! Fixed the output file cleanup that should occur after a write error. + * Added the option -debug and various undocumented debug features. + * Moved the PNG reduction module (opngreduc) to a separate sub-project. + +Version 0.7.1 2012-mar-19 [Released by Ramona C. Truta] +------------- +!! Fixed a regression in the reduction of palette-encoded grayscale + images. (This regression was introduced in version 0.7.) + [Fixed by Adam Ciarcinski] + +Version 0.7 2012-feb-29 [Released by Cosmin & Ramona C. Truta] +----------- + * Upgraded libpng to version 1.4.9. + * Upgraded zlib to version 1.2.6-optipng. +!! Fixed a rarely-occurring out-of-bounds memory access error in + the Z_RLE strategy in zlib. + [Reported by Christopher Wichura] + [Fixed by upgrading zlib] + + Added the popularly-requested option -strip. + The only suboption currently supported is "-strip all". + + Added the option -clobber. + [Contributed by Maciej Pilichowski] + + Added the option -backup, as an alias of -keep. + [Contributed by Ramona C. Truta] + + Added the option -silent, as an alias of -quiet. + [Contributed by Ramona C. Truta] + - Deprecated the option -log. + [Contributed by Ramona C. Truta] + * Changed the activity display output from STDOUT to STDERR. + + Allowed the option -preserve to save high-resolution timestamps + on Unix, if the POSIX-1.2008 API is available. + (This feature was previously available on Windows only.) + ! Fixed a minor precision error in the display of file size percents. + ! Fixed a memory leak that occurred when reading broken GIF images. + ! Fixed various build issues. + [Fixed by Sebastian Pipping and Ville Skyttä] + * Resolved all remaining compatibility issues with libpng-1.5. + [Contributed by Adam Ciarcinski] + * Added build support for clang. + * Reorganized the source directory structure. + +Version 0.6.5 2011-jan-24 +------------- + * Upgraded libpng to version 1.4.5-optipng. + * Upgraded zlib to version 1.2.5-optipng. +!! Fixed the I/O states (in libpng 1.4.5); + they caused incorrect file reads in some rare cases. + [Reported by Dmitry Marakasov] +!! Fixed processing of PNG files with chunks of size 0. + [Reported by Matthew Fearnley] + ! Fixed a display error in the TIFF import. + [Fixed by Piotr Bandurski] + + Improved checking of the arguments of -f, -zc, -zm and -zs. + - Removed quirks from the rangeset option argument syntax. + ! Fixed a build issue under the system-supplied libpng-1.4. + [Fixed by Petr Gajdos] + * Resolved forward-compatibility issues regarding libpng-1.5; + however, the system-supplied libpng-1.5 is not yet supported. + * Added various enhancements to the configure+make build system. + [Contributed by Elias Pipping and Dmitri Zubko] + +Version 0.6.4 2010-mar-14 +------------- + * Upgraded libpng to version 1.4.1-optipng. + * Upgraded zlib to version 1.2.4-optipng. + + Added the option -nx. + * Clarified the behavior of the option -nz and the relationship between + the options -nz and -o0. + + Added a filesystem check (resolving normalized paths, symlinks, etc.) + to better detect when the output overwrites the input. + + Enabled automatic wildcard expansion (i.e. globbing) on Win64. + ! Fixed a Unicode build issue on Windows. + [Fixed by Fabien Barbier] + +Version 0.6.3 2009-may-18 +------------- + * Upgraded libpng to version 1.2.36-optipng. +!! Fixed a use-after-free error in the GIF reader. + [Reported by Roy Tam] + [Fixed by Bryan McQuade] + ! Flushed the output log to display the current trial in real time. + This only worked on Windows in the previous version. + [Fixed by Vincent Lefèvre] + ! Fixed an error in reporting unrecognized file formats. + - Removed the requirement to "fix" TIFF files that contain unrecognized + metadata. + [Requested by Piotr Bandurski] + * Simplified the option abbreviation rules. Option names can now be + abbreviated to their shortest unique prefix, as in X11 applications. + +Version 0.6.2 2008-nov-09 +------------- + * Upgraded libpng to version 1.2.33-optipng. +++ Put back a speed optimization, accidentally removed in version 0.6, + allowing singleton trials (-o1) to be bypassed in certain conditions. +!! Fixed an array overflow in the BMP reader. +!! Fixed the loss of private chunks under the option -snip. + + Produced a more concise on-screen output in the non-verbose mode. + [Contributed by Vincent Lefèvre] + * Added a programming interface to the optimization engine, in order + to facilitate the development of PNG-optimizing GUI apps and plugins. + +Version 0.6.1 2008-jul-20 +------------- + * Upgraded cexcept to version 2.0.1. + + Added a configure script, to be used instead of unix-secure.mak. + ! Fixed a build issue that occurred when using libpng from the system. + [Reported by Nelson A. de Oliveira] + ! Fixed the processing when the image reduction yields an output larger + than the original. + [Reported by Michael Krishtopa] + ! Fixed the behavior of the option -preserve. + [Reported by Bill Koch] + - Removed displaying of partial progress when abandoning IDATs under + the option -v. (The percentages displayed were not very accurate.) + +Version 0.6 2008-jun-15 +----------- + * Upgraded libpng to version 1.2.29-optipng. +++ Implemented grayscale(alpha)-to-palette reductions. +++ Improved conversion of bKGD info during RGB-to-palette reductions. + [Contributed by Matthew Fearnley] +!! Fixed conversion of bKGD and tRNS during 16-to-8-bit reductions. + [Reported by Matthew Fearnley] + + Added support for compressed BMP (incl. PNG-compressed BMP, you bet!) + + Improved the speed of reading raw PNM files. + + Recognized PNG digital signatures (dSIG) and disabled optimization + in their presence, to preserve their integrity. + + Allowed the user to enforce the optimization of dSIG'ed files. + + Recognized APNG animation files and disabled reductions to preserve + their integrity. + + Added the option -snip, to allow the user to snip one image out of + a multi-image file, such as animated GIF, multi-page TIFF, or APNG. + + Improved recovery of PNG files with incomplete IDAT. +!! Fixed a crash triggered by the use of -log on some platforms. + [Fixed by Stefan Brüns] + ! Fixed the behavior of the options -out and -dir when the input is + already optimized. + [Reported by Christian Davideck] + * Provided more detailed image information at the start of processing. + * Provided a more detailed summary at the end of processing, under the + presence of the option -v and/or the occurrence of exceptional events. + +Version 0.5.5 2007-jan-28 +------------- + * Upgraded libpng to version 1.2.15-optipng. +++ Used a previously-missed RGB-to-palette reduction opportunity + for images containing 256 distinct colors. + [Reported by Joachim Kluge] +!! Fixed conversion of bKGD info during RGB-to-palette reductions. + [Reported by Matthew Fearnley] + ! Fixed pre-computation of iterations. + [Reported by Matthew Fearnley] + ! Eliminated a false alarm when processing RGB images with tRNS + in Unix-secure mode. + [Reported by Till Maas] + [Fixed by Nelson A. de Oliveira] + ! Fixed the behavior of the options -out and -dir when changing + interlacing. + [Reported by Martin Packman] + ! Fixed the behavior of "-dir [DRIVE]:" on Windows. + +Version 0.5.4 2006-aug-11 +------------- + + Added the options -out and -dir, to specify the name of the + output file or directory. + [Requested by Alexander Lucas] + * Added support for builds based on the system-supplied libpng. + [Contributed by Nelson A. de Oliveira] + +Version 0.5.3 2006-jul-23 +------------- + * Upgraded libpng to version 1.2.12-optipng. + + Implemented basic support for TIFF (grayscale, RGB and RGBA, + uncompressed). +++ Avoided the redundant trial when the search space is singular + (e.g. when running "optipng -o1 example.tif"). + + Prevented accidental file corruption when using the option -log. + ! Fixed (again) a small typo in the online help. + +Version 0.5.2 2006-may-07 +------------- + + Improved handling of inexact PNM-to-PNG conversions. + ! Fixed a typo that was breaking the build on some Unix platforms. + [Reported by Aaron Reitz] + +Version 0.5.1 2006-apr-30 +------------- +++ Implemented bit depth reduction for palette images. + * Upgraded libpng to version 1.2.10-optipng. + + Improved the BMP support. + + Added a Unix man page. + [Contributed by Nelson A. de Oliveira] + + Allowed abbreviation of command-line options. + + Changed the option -log to accept a file name as an argument. + * Renamed the option -no to -simulate. + ! Fixed an error in handling .bak files on Unix. + [Reported by Adam Szojda and Nelson A. de Oliveira] + ! Fixed a small typo in the help screen. + [Reported by A. Costa and Nelson A. de Oliveira] + +Version 0.5 2006-jan-14 +----------- +++ Added pngxtern, a libpng add-on for external image format + support: BMP (uncompressed), GIF, PNM. +++ Implemented RGB(A)-to-palette reductions. + * Upgraded zlib to version 1.2.3-optipng. + * Upgraded libpng to version 1.2.8-optipng. + + If trials are ended prematurely, detailed progression is only + reported under the option -v. + - Removed reporting of some IDAT sizes that exceeded the optimum. + (This was NOT a bug, but a "feature" that confused some users.) + ! Fixed an RGB-to-gray reduction problem that occurred under some + specific background colors. + * Added support for builds based on the system-supplied zlib. + [Requested by Nelson A. de Oliveira] + * Modified LICENSE. It is now a verbatim spell of the zlib license. + +Version 0.4.8 2005-may-10 +------------- + * Upgraded libpng to version 1.0.18-optipng. +!! Fixed a palette-to-gray reduction problem that occurred when an + RGB triple had both an alpha below max, and an alpha equal to max. + [Reported by Nicolas Le Gland] + + Packed the Windows executable using UPX. + +Version 0.4.7 2004-oct-30 +------------- +!! Fixed a palette-to-gray reduction problem that occurred when + having more than one alpha value per RGB triple. + [Reported by Larry Hastings] + ! Fixed the progress display, when processing very large images. + + Displayed the image info at the beginning of processing. +++ Reduced the IDAT buffer size, allowing abandoned trials to + terminate earlier in some circumstances. + + Implemented error recovery, when PLTE is too small, and/or + tRNS is too large. + +Version 0.4.6 2004-oct-25 +------------- + * Upgraded zlib to version 1.2.2-optipng. + * Upgraded libpng to version 1.0.17-optipng. + This provides safe handling of some ill-formed PNG images. + + Rewrote makefiles. + + Added project workspace to build under Visual C++ 6.0, + integrated with memory leak detection. +++ Implemented a premature termination of trials, in the moment + when IDAT grows beyond the smallest size previously achieved. + [Requested by Larry Hastings] + + Changed the order of trials, to perform the trials that are + more likely to yield a smaller IDAT, at the beginning. + + Added the option -full to avoid the premature termination of + trials; useful for debugging. + +Version 0.4.5 2004-may-31 +------------- + * Upgraded zlib to version 1.2.1.f-cos2. + * Upgraded libpng to version 1.0.15-cos2. + * Renamed the option -nx to -nz. + + Added the option -preserve to preserve file attributes + (file mode, time stamp, etc.) where applicable. + [Requested by Nehal Mistry] + ! Fixed an incorrect initialization of zlib window bits. + ! Displayed an error message when the search space was invalid. +!! Fixed a palette reduction problem for bit depths below 8. + ! Eliminated memory leaks. + [Contributed by Niels de Koning] + +Version 0.4.4 2003-nov-20 +------------- + * Upgraded zlib to version 1.2.1. +++ Added support for the Z_RLE strategy. + +Version 0.4.3 2003-aug-12 +------------- + ! Fixed a reduction problem that caused an assertion failure. + [Reported by Dimitri Papadopoulos] + +Version 0.4.2 2003-jun-30 +------------- +++ Enhanced the support for palette size reductions: + trailing sterile palette entries are removed even when + the bit depth is below 8. + ! Enforced recompression when the new IDAT has the same size, + but other chunks have been reduced. + + Displayed the IDAT size difference as a percentage. + [Requested by Nehal Mistry] + +Version 0.4.1 2003-may-19 +------------- + ! Fixed the removal of trailing sterile palette entries. + +Version 0.4 2003-may-12 +----------- +++ Added support for palette-to-gray reductions. +++ Added partial support for palette size reductions. + ! Fixed the reporting of invalid command-line options. + ! Eliminated a spurious warning when the zlib window size + is set to 256. + +Version 0.3.2 2003-mar-11 +------------- + + Added support for updating sBIT during reductions. + ! Fixed the reduction of the alpha channel. + +Version 0.3.1 2003-feb-25 +------------- + ! Fixed the encoding of interlaced images when they become + larger than the input. + [Reported by James H. Cloos, Jr.] + + Added the HISTORY document (this file). + +Version 0.3 2003-feb-24 +----------- + * Announced the first public release of OptiPNG. +++ Added support for iterating through zlib memory levels. +++ Added support for collapsing IDAT, avoiding calls to + png_set_compression_buffer_size(). + This reduces the memory requirements. +++ Added support for lossless reduction of the image type: + RGB[A] -> G[A], RGBA -> RGB, GA -> G + + Added many user options. + + Added documentation. + +Version 0.2 2001-dec-27 +----------- + + Added support for optimization level presets. + + Added a user option for changing the interlacing. + +Version 0.1 2001-dec-17 +----------- + + Added support for chunk I/O status annotation. + This improves the speed of OptiPNG significantly. + * Added structured exception handling via cexcept. + +Version 0.0.1 2001-dec-10 +------------- + * Introduced OptiPNG. +++ Compressed PNG IDAT data repeatedly, iterating through zlib + compression and strategy levels, as well as PNG delta filters. diff --git a/doc/optipng-0.7.8-win64/doc/license.txt b/doc/optipng-0.7.8-win64/doc/license.txt new file mode 100644 index 00000000000..58fbad30883 --- /dev/null +++ b/doc/optipng-0.7.8-win64/doc/license.txt @@ -0,0 +1,21 @@ +Copyright (C) 2001-2023 Cosmin Truta and the Contributing Authors. +For the purpose of copyright and licensing, the list of Contributing +Authors is available in the accompanying AUTHORS file. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author(s) be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. diff --git a/doc/optipng-0.7.8-win64/doc/optipng.man.pdf b/doc/optipng-0.7.8-win64/doc/optipng.man.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f8b7083bf4c48e3a60fb7a118bbf5825f78889b GIT binary patch literal 42393 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 outfile + optipng -stdout infile > outfile + +- Optimization of an entire directory, with and without subdirectory + recursion: + optipng dir/ + optipng -recursive dir/ + +- Support for conversion to a desired bit depth and color type: + optipng -b16 -c6 files ... + +- Support for handling metadata, e.g.: + optipng -set tEXt=, # add or update chunk + optipng -set sRGB=0 # add or update chunk + optipng -set image.precision= # set the precision of all samples + optipng -set image.alpha.precision= # set the precision of alpha samples + optipng -reset image.alpha # make the image fully opaque + optipng -strip hIST,sPLT # strip hIST and sPLT + optipng -strip all -protect iCCP # strip all metadata except iCCP + +- Parallelization on multi-processor/multi-core machines: + optipng -jobs 4 files ... diff --git a/doc/optipng-0.7.8-win64/optipng.exe b/doc/optipng-0.7.8-win64/optipng.exe new file mode 100644 index 0000000000000000000000000000000000000000..76920bad2dc1340a9e1dad6a34d64f29fda7f183 GIT binary patch literal 229888 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�&MO0F5&G? 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 z

+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 #7Ow0RQ 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 mri`` transformation obtained by -# "coregistration") can be visualized via :meth:`mne.Report.add_trans`. The -# method expects the transformation either as a `~mne.transforms.Transform` -# object or as a path to a ``trans.fif`` file, the FreeSurfer subject name and -# subjects directory, and a title. The ``alpha`` parameter can be used to -# control the transparency of the head, where a value of 1 means fully opaque. - -trans_path = sample_dir / "sample_audvis_raw-trans.fif" - -report = mne.Report(title="Coregistration example") -report.add_trans( - trans=trans_path, - info=raw_path, - subject="sample", - subjects_dir=subjects_dir, - alpha=1.0, - title="Coregistration", + +""" +This section computes evoked responses (averaged brain activity) for auditory and +visual events and plots topographic maps. It also loads the noise covariance +matrix and any projectors. Together, these help evaluate data cleanliness and +prepare for source analysis. +""" + +cov = mne.read_cov(cov_fname) +evokeds = [epochs[k].average() for k in event_id] +report.add_evokeds( + evokeds, titles=list(event_id.keys()), noise_cov=cov, n_time_points=5 ) -report.save("report_coregistration.html", overwrite=True) -# %% -# Adding a `~mne.Forward` solution -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# Forward solutions ("leadfields") can be added by passing a `~mne.Forward` -# object or the path to a forward solution stored on disk to -# meth:`mne.Report.add_forward`. +common_chs = list(set(cov.ch_names).intersection(raw.ch_names)) +cov = cov.copy().pick_channels(common_chs) +report.add_covariance(cov=cov, info=raw.info, title="Noise Covariance") -fwd_path = sample_dir / "sample_audvis-meg-oct-6-fwd.fif" +projs = mne.read_proj(proj_fname) +report.add_projs(info=raw, projs=projs, title="ECG Projectors") -report = mne.Report(title="Forward solution example") -report.add_forward( - forward=fwd_path, title="Forward solution", plot=True, subjects_dir=subjects_dir -) -report.save("report_forward_sol.html", overwrite=True) - -# %% -# Adding an `~mne.minimum_norm.InverseOperator` -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# An inverse operator can be added via :meth:`mne.Report.add_inverse_operator`. -# The method expects an `~mne.minimum_norm.InverseOperator` object or a path to -# one stored on disk, and a title. - -inverse_op_path = sample_dir / "sample_audvis-meg-oct-6-meg-inv.fif" - -report = mne.Report(title="Inverse operator example") -report.add_inverse_operator( - inverse_operator=inverse_op_path, - title="Inverse operator", - plot=True, - subjects_dir=subjects_dir, -) -report.save("report_inverse_op.html", overwrite=True) - -# %% -# Adding a `~mne.SourceEstimate` -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# An inverse solution (also called source estimate or source time course, STC) -# can be added via :meth:`mne.Report.add_stc`. The -# method expects an `~mne.SourceEstimate`, the corresponding FreeSurfer subject -# name and subjects directory, and a title. By default, it will produce -# snapshots at 51 equally-spaced time points (or fewer, if the data contains -# fewer time points). We can adjust this via the ``n_time_points`` parameter. - -stc_path = sample_dir / "sample_audvis-meg" - -report = mne.Report(title="Source estimate example") -report.add_stc( - stc=stc_path, - subject="sample", - subjects_dir=subjects_dir, - title="Source estimate", - n_time_points=2, # few for speed -) -report.save("report_inverse_sol.html", overwrite=True) - -# %% -# Adding source code (e.g., a Python script) -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# It is possible to add code or scripts (e.g., the scripts you used for -# analysis) to the report via :meth:`mne.Report.add_code`. The code blocks will -# be automatically syntax-highlighted. You may pass a string with the -# respective code snippet, or the path to a file. If you pass a path, it -# **must** be a `pathlib.Path` object (and not a string), otherwise it will be -# treated as a code literal. -# -# Optionally, you can specify which programming language to assume for syntax -# highlighting by passing the ``language`` parameter. By default, we'll assume -# the provided code is Python. - -mne_init_py_path = Path(mne.__file__) # __init__.py in the MNE-Python root -mne_init_py_content = mne_init_py_path.read_text(encoding="utf-8") - -report = mne.Report(title="Code example") -report.add_code(code=mne_init_py_path, title="Code from Path") -report.add_code(code=mne_init_py_content, title="Code from string") - -report.save("report_code.html", overwrite=True) - -# %% -# Adding custom figures -# ^^^^^^^^^^^^^^^^^^^^^ -# -# Custom Matplotlib figures can be added via :meth:`~mne.Report.add_figure`. -# Required parameters are the figure and a title. Optionally, may add a caption -# to appear below the figure. You can also specify the image format of the -# image file that will be generated from the figure, so it can be embedded in -# the HTML report. - -x = np.linspace(start=0, stop=10, num=100) -y = x**2 - -fig, ax = plt.subplots() -ax.plot(x, y, ls="--", lw=2, color="blue", label="my function") -ax.set_xlabel("x") -ax.set_ylabel("f(x)") -ax.legend() - -report = mne.Report(title="Figure example") -report.add_figure( - fig=fig, - title="A custom figure", - caption="A blue dashed line reaches up into the sky …", - image_format="PNG", -) -report.save("report_custom_figure.html", overwrite=True) -plt.close(fig) +""" +Here we try adding anatomical elements like the MRI surfaces (BEM), +sensor-to-MRI coregistration, and the forward and inverse operators. These steps +link sensor data to the brain and are needed for source estimation. They are +wrapped in try/except so the script still runs even if anatomy files are +missing. +""" -# %% -# Multiple figures can be grouped into a single section via the ``section`` -# parameter. - -fig_1, ax_1 = plt.subplots() -ax_1.plot([1, 2, 3]) - -fig_2, ax_2 = plt.subplots() -ax_2.plot([3, 2, 1]) - -section = "Section example" - -report = mne.Report(title="Figure section example") -report.add_figure(fig=fig_1, title="Figure 1", section=section, tags="fig-1") -report.add_figure(fig=fig_2, title="Figure 2", section=section, tags="fig-2") -report.save("report_custom_figure_sections.html", overwrite=True) -plt.close(fig_1) -plt.close(fig_2) - -# %% -# The :meth:`mne.Report.add_figure` method can also add multiple figures at -# once. In this case, a slider will appear, allowing users to intuitively -# browse the figures. To make this work, you need to provide a collection o -# figures, a title, and optionally a collection of captions. -# -# In the following example, we will read the MNE logo as a Matplotlib figure -# and rotate it with different angles. Each rotated figure and its respective -# caption will be added to a list, which is then used to create the slider. - -mne_logo_path = Path(mne.__file__).parent / "icons" / "mne_icon-cropped.png" -fig_array = plt.imread(mne_logo_path) -rotation_angles = np.linspace(start=0, stop=360, num=8, endpoint=False) - -figs = [] -captions = [] -for angle in rotation_angles: - # Rotate and remove some rounding errors to avoid Matplotlib warnings - fig_array_rotated = scipy.ndimage.rotate(input=fig_array, angle=angle) - fig_array_rotated = fig_array_rotated.clip(min=0, max=1) - - # Create the figure - fig, ax = plt.subplots(figsize=(3, 3), layout="constrained") - ax.imshow(fig_array_rotated) - ax.set_axis_off() - - # Store figure and caption - figs.append(fig) - captions.append(f"Rotation angle: {round(angle, 1)}°") - -report = mne.Report(title="Multiple figures example") -report.add_figure(fig=figs, title="Fun with figures! 🥳", caption=captions) -report.save("report_custom_figures.html", overwrite=True) -for fig in figs: - plt.close(fig) -del figs - -# %% -# Adding image files -# ^^^^^^^^^^^^^^^^^^ -# -# Existing images (e.g., photos, screenshots, sketches etc.) can be added -# to the report via :meth:`mne.Report.add_image`. Supported image formats -# include JPEG, PNG, GIF, and SVG (and possibly others). Like with Matplotlib -# figures, you can specify a caption to appear below the image. - -report = mne.Report(title="Image example") -report.add_image( - image=mne_logo_path, title="MNE", caption="Powered by 🧠 🧠 🧠 around the world!" -) -report.save("report_custom_image.html", overwrite=True) - -# %% -# Working with tags -# ^^^^^^^^^^^^^^^^^ -# -# Each ``add_*`` method accepts a keyword parameter ``tags``, which can be -# used to pass one or more tags to associate with the respective content -# elements. By default, each ``add_*`` method adds a tag describing the data -# type, e.g., ``evoked`` or ``source-estimate``. When viewing the HTML report, -# the ``Filter by tags`` dropdown menu can be used to interactively show or -# hide content with specific tags. This allows you e.g. to only view -# ``evoked`` or ``participant-001`` data, should you have added those tags. -# Visible tags will appear with blue, and hidden tags with gray background -# color. -# -# To toggle the visibility of **all** tags, use the respective checkbox in the -# ``Filter by tags`` dropdown menu, or press :kbd:`T`. - -report = mne.Report(title="Tags example") -report.add_image( - image=mne_logo_path, - title="MNE Logo", - tags=("image", "mne", "logo", "open-source"), -) -report.save("report_tags.html", overwrite=True) - -# %% -# Editing a saved report -# ^^^^^^^^^^^^^^^^^^^^^^ -# -# Saving to HTML is a write-only operation, meaning that we cannot read an -# ``.html`` file back as a :class:`~mne.Report` object. In order to be able -# to edit a report once it's no longer in-memory in an active Python session, -# save it as an HDF5 file instead of HTML: - -report = mne.Report(title="Saved report example", verbose=True) -report.add_image(image=mne_logo_path, title="MNE 1") -report.save("report_partial.hdf5", overwrite=True) - -# %% -# The saved report can be read back and modified or amended. This allows the -# possibility to e.g. run multiple scripts in a processing pipeline, where each -# script adds new content to an existing report. - -report_from_disk = mne.open_report("report_partial.hdf5") -report_from_disk.add_image(image=mne_logo_path, title="MNE 2") -report_from_disk.save("report_partial.hdf5", overwrite=True) - -# %% -# To make this even easier, :class:`mne.Report` can be used as a -# context manager (note the ``with`` statement)`): - -with mne.open_report("report_partial.hdf5") as report: - report.add_image(image=mne_logo_path, title="MNE 3") - report.save("report_final.html", overwrite=True) - -# %% -# With the context manager, the updated report is also automatically saved -# back to :file:`report.h5` upon leaving the block. -# -# Adding an entire folder of files -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# We also provide a way to add an entire **folder** of files to the report at -# once, without having to invoke the individual ``add_*`` methods outlined -# above for each file. This approach, while convenient, provides less -# flexibility with respect to content ordering, tags, titles, etc. -# -# Before getting started with :class:`mne.Report`, make sure the files you want -# to render follow the filename conventions defined by MNE: -# -# .. cssclass:: table-bordered -# .. rst-class:: midvalign -# -# =================================== ========================================= -# Data object Filename convention (ends with) -# =================================== ========================================= -# `~mne.io.Raw` ``-raw.fif(.gz)``, ``-raw_sss.fif(.gz)``, -# ``-raw_tsss.fif(.gz)``, -# ``_meg.fif(.gz)``, ``_eeg.fif(.gz)``, -# ``_ieeg.fif(.gz)`` -# events ``-eve.fif(.gz)`` -# `~mne.Epochs` ``-epo.fif(.gz)`` -# `~mne.Evoked` ``-ave.fif(.gz)`` -# `~mne.Covariance` ``-cov.fif(.gz)`` -# `~mne.Projection` ``-proj.fif(.gz)`` -# `~mne.transforms.Transform` ``-trans.fif(.gz)`` -# `~mne.Forward` ``-fwd.fif(.gz)`` -# `~mne.minimum_norm.InverseOperator` ``-inv.fif(.gz)`` -# `~mne.SourceEstimate` ``-lh.stc``, ``-rh.stc`` -# =================================== ========================================= -# -# Alternatively, the dash ``-`` in the filename may be replaced with an -# underscore ``_`` (except for the ``.stc`` files). -# -# For our first example, we'll generate a barebones report for all the -# :file:`.fif` files containing raw data in the sample dataset, by passing the -# pattern ``*raw.fif`` to :meth:`~mne.Report.parse_folder`. We'll omit the -# ``subject`` and ``subjects_dir`` parameters from the :class:`~mne.Report` -# constructor, but we'll also pass ``render_bem=False`` to the -# :meth:`~mne.Report.parse_folder` method — otherwise we would get a warning -# about not being able to render MRI and ``trans`` files without knowing the -# subject. To save some processing time in this tutorial, we're also going to -# disable rendering of the butterfly plots for the `~mne.io.Raw` data by -# passing ``raw_butterfly=False``. -# -# Which files are included depends on both the ``pattern`` parameter passed to -# :meth:`~mne.Report.parse_folder` and also the ``subject`` and -# ``subjects_dir`` parameters provided to the :class:`~mne.Report` constructor. - -report = mne.Report(title="parse_folder example") -report.parse_folder( - data_path=data_path, pattern="*raw.fif", render_bem=False, raw_butterfly=False -) -report.save("report_parse_folder_basic.html", overwrite=True) - -# %% -# By default, the power spectral density and SSP projectors of the -# :class:`~mne.io.Raw` files are not shown to speed up report generation. You -# can add them by passing ``raw_psd=True`` and ``projs=True`` to the -# :class:`~mne.Report` constructor. Like in the previous example, we're going -# to omit the butterfly plots by passing ``raw_butterfly=False``. Lastly, let's -# also refine our pattern to select only the filtered raw recording (omitting -# the unfiltered data and the empty-room noise recordings). - -pattern = "sample_audvis_filt-0-40_raw.fif" -report = mne.Report(title="parse_folder example 2", raw_psd=True, projs=True) -report.parse_folder( - data_path=data_path, pattern=pattern, render_bem=False, raw_butterfly=False -) -report.save("report_parse_folder_raw_psd_projs.html", overwrite=True) - -# %% -# This time we'll pass a specific ``subject`` and ``subjects_dir`` (even though -# there's only one subject in the sample dataset) and remove our -# ``render_bem=False`` parameter so we can see the MRI slices, with BEM -# contours overlaid on top if available. Since this is computationally -# expensive, we'll also pass the ``mri_decim`` parameter for the benefit of our -# documentation servers, and skip processing the :file:`.fif` files. - -report = mne.Report( - title="parse_folder example 3", subject="sample", subjects_dir=subjects_dir -) -report.parse_folder(data_path=data_path, pattern="", mri_decim=40) -report.save("report_parse_folder_mri_bem.html", overwrite=True) - -# %% -# Now let's look at how :class:`~mne.Report` handles :class:`~mne.Evoked` -# data (we will skip the MRIs to save computation time). -# -# The MNE sample dataset we're using in this example has **not** been -# baseline-corrected; so let's apply baseline correction this now for the -# report! -# -# To request baseline correction, pass a ``baseline`` argument to -# `~mne.Report`, which should be a tuple with the starting and ending time of -# the baseline period. For more details, see the documentation on -# `~mne.Evoked.apply_baseline`. Here, we will apply baseline correction for a -# baseline period from the beginning of the time interval to time point zero. -# -# Lastly, we want to render the "whitened" evoked data, too. Whitening -# requires us to specify the path to a covariance matrix file via the -# ``cov_fname`` parameter of `~mne.Report`. -# -# Now, let's put all of this together! Here we use a temporary directory -# for speed so we can render a single Evoked instance, using just EEG -# channels. - -baseline = (None, 0) -cov_fname = sample_dir / "sample_audvis-cov.fif" -pattern = "sample_audvis-ave.fif" -evoked = mne.read_evokeds(sample_dir / pattern)[0].pick("eeg").decimate(4) -report = mne.Report( - title="parse_folder example 4", baseline=baseline, cov_fname=cov_fname -) -with tempfile.TemporaryDirectory() as path: - evoked.save(Path(path) / pattern) - report.parse_folder( - path, pattern=pattern, render_bem=False, n_time_points_evokeds=5 +try: + report.add_bem(subject="sample", subjects_dir=subjects_dir, title="MRI & BEM") +except Exception: + print("BEM unavailable.") + +try: + report.add_trans( + trans=trans_fname, + info=raw, + subject="sample", + subjects_dir=subjects_dir, + title="Coregistration", + ) +except Exception: + print("Coreg unavailable.") + +try: + report.add_forward( + forward=fwd_fname, + title="Forward Solution", + plot=True, + subjects_dir=subjects_dir, + ) +except Exception: + print("Forward unavailable.") + +try: + report.add_inverse_operator( + inverse_operator=inv_fname, + title="Inverse Operator", + plot=True, + subjects_dir=subjects_dir, + ) +except Exception: + print("Inverse unavailable.") + +""" +This part adds source-level brain activity snapshots to the report. STCs show +how brain signals map onto cortex over time, giving a deeper understanding of +neural responses beyond sensor space. +""" + +try: + stc_path = sample_dir / "sample_audvis-meg" + report.add_stc( + stc=stc_path, + subject="sample", + subjects_dir=subjects_dir, + title="Source Estimate", + n_time_points=2, ) -report.save("report_parse_folder_evoked.html", overwrite=True) - -# %% -# -# Adding custom HTML (e.g., a description text) -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# -# The :meth:`~mne.Report.add_html` method allows you to add custom HTML to -# your report. This feature can be very convenient to add short descriptions, -# lists, or reminders to your report (among many other things you can think -# of encoding in HTML). - -report = mne.Report(title="Report on hypothesis 1") - -my_html = """ -

We have the following hypothesis:

+except Exception: + print("STC unavailable.") + +""" +A small HTML block is added to show that reports can include instructions, +interpretations, or descriptive text. This is useful for documentation, +explaining results, or guiding collaborators. +""" + +html = """ +

Example hypothesis:

    -
  1. There is a difference between images showing man-made vs. natural -environments
  2. -
  3. This difference manifests itself most strongly in the amplitude of the -N1 ERP component
  4. +
  5. Auditory vs Visual differences.
  6. +
  7. Predicted N1 amplitude change.
-

Below we show several plots and tests of the data.

""" +report.add_html(html, title="Hypothesis") + +""" +Finally, we add an MNE logo and save the entire report as an HTML file. The +output is fully interactive, self-contained, and easy to share, combining both +QC and full MNE processing elements in one report. +""" + +logo_path = Path(mne.__file__).parent / "icons" / "mne_icon-cropped.png" +report.add_image(logo_path, title="MNE Logo") -report.add_html(title="Hypothesis", html=my_html) -report.save("report_add_html.html", overwrite=True) +report.save("mne_report.html", overwrite=True) +print("Saved as mne_report.html") From e980448ffa9ec13772f78c3d5bfe580e990005c0 Mon Sep 17 00:00:00 2001 From: varshaa-1616 Date: Sat, 6 Dec 2025 17:34:13 +0530 Subject: [PATCH 2/7] Remove unintended files from commit --- doc/optipng-0.7.8-win64/OptiPNG.url | 2 -- doc/optipng-0.7.8-win64/doc/authors.txt | 31 ------------------------- 2 files changed, 33 deletions(-) delete mode 100644 doc/optipng-0.7.8-win64/OptiPNG.url delete mode 100644 doc/optipng-0.7.8-win64/doc/authors.txt diff --git a/doc/optipng-0.7.8-win64/OptiPNG.url b/doc/optipng-0.7.8-win64/OptiPNG.url deleted file mode 100644 index 9796437165b..00000000000 --- a/doc/optipng-0.7.8-win64/OptiPNG.url +++ /dev/null @@ -1,2 +0,0 @@ -[InternetShortcut] -URL=http://optipng.sourceforge.net/ diff --git a/doc/optipng-0.7.8-win64/doc/authors.txt b/doc/optipng-0.7.8-win64/doc/authors.txt deleted file mode 100644 index 0245e5ab1be..00000000000 --- a/doc/optipng-0.7.8-win64/doc/authors.txt +++ /dev/null @@ -1,31 +0,0 @@ -# OptiPNG version 0.7.8 -# Copyright (C) 2001-2023 Cosmin Truta and the Contributing Authors. -# See the accompanying LICENSE file for details. -# -# A Contributing Author is a person or company who contributed code that -# is now part of OptiPNG. -# -# For the purpose of copyright and licensing, this is the official list -# of Contributing Authors, in alphabetic order. - -Adam Ciarcinski -Brian McQuade -Elias Pipping -Fabien Barbier -Friedrich Preuss -Maciej Pilichowski -Matthew Fearnley -Nelson A. de Oliveira -Niels de Koning -Oliver Schneider -Petr Gajdos -Piotr Bandurski -Priit Laes -Ramona C. Truta -Sebastian Pipping -Stefan Brüns -Thomas Hurst -Till Maas -Ville Skyttä -Vincent Lefèvre -Yuen Ho Wong From 7657bb8a85a63336966e707e49611f6884db9bc9 Mon Sep 17 00:00:00 2001 From: varshaa-1616 Date: Tue, 16 Dec 2025 13:45:17 +0530 Subject: [PATCH 3/7] Remove unintended generated and unrelated files --- doc/optipng-0.7.8-win64/doc/history.txt | 435 -------------------- doc/optipng-0.7.8-win64/doc/license.txt | 21 - doc/optipng-0.7.8-win64/doc/optipng.man.pdf | Bin 42393 -> 0 bytes doc/optipng-0.7.8-win64/doc/optipng.man.txt | 299 -------------- doc/optipng-0.7.8-win64/doc/todo.txt | 42 -- doc/optipng-0.7.8-win64/optipng.exe | Bin 229888 -> 0 bytes 6 files changed, 797 deletions(-) delete mode 100644 doc/optipng-0.7.8-win64/doc/history.txt delete mode 100644 doc/optipng-0.7.8-win64/doc/license.txt delete mode 100644 doc/optipng-0.7.8-win64/doc/optipng.man.pdf delete mode 100644 doc/optipng-0.7.8-win64/doc/optipng.man.txt delete mode 100644 doc/optipng-0.7.8-win64/doc/todo.txt delete mode 100644 doc/optipng-0.7.8-win64/optipng.exe diff --git a/doc/optipng-0.7.8-win64/doc/history.txt b/doc/optipng-0.7.8-win64/doc/history.txt deleted file mode 100644 index ccd3746dc2e..00000000000 --- a/doc/optipng-0.7.8-win64/doc/history.txt +++ /dev/null @@ -1,435 +0,0 @@ -OptiPNG - Revision history -========================== - -Legend ------- -++ Added or improved performance-related feature - (might improve compression ratio or processing speed). - + Added or improved feature. - - Removed feature. - ! Fixed bug. -!! Fixed critical bug - (crash, data/metadata loss or security hazard). - * Other modification (e.g. architectural improvement). - -Version 0.7.8 2023-nov-03 -------------- - * Upgraded libpng to version 1.6.40. - * Upgraded zlib to version 1.3-optipng. - * Upgraded cexcept to version 2.0.2-optipng. -!! Fixed a global-buffer-overflow vulnerability in the GIF reader. - [Reported by Zeng Yunxiang; fixed by Thomas Hurst] - ! Fixed a stack-print-after-scope defect in the error handler. - ! Fixed an assertion failure in the image reduction module. - ! Fixed the command-line wildargs expansion in the Windows port. - * Raised the minimum required libpng version from 1.2.9 to 1.6.35. - * Raised the minimum required zlib version from 1.2.1 to 1.2.8. - * Refactored the structured exception handling. - -Version 0.7.7 2017-dec-27 -------------- - * Upgraded libpng to version 1.6.34. - * Upgraded zlib to version 1.2.11-optipng. - * Upgraded minitiff to version 0.2. -!! Fixed a buffer overflow vulnerability in the GIF decoder. - [Reported by Joonun Jang] -!! Fixed an integer overflow vulnerability in the TIFF decoder. - [Reported by Jaeseung Choi] - ! Fixed the build on macOS High Sierra. - [Reported by various users] - [Fixed by Yuen Ho Wong and Friedrich Preuss] - ! Fixed the build on DJGPP. - * Disallowed out-of-bounds values in rangeset options. - -Version 0.7.6 2016-apr-03 [Released by Ramona C. Truta] -------------- - * Upgraded libpng to version 1.6.21. - ! Fixed an assertion failure in the image reduction code. - [Fixed by upgrading libpng] -!! Fixed various security-sensitive defects in the BMP decoder. - [Reported by Henri Salo and Hans Jerry Illikainen] - [Fixed by Ramona C. Truta] - ! Fixed a benign uninitialized memory read in the GIF decoder. - [Reported by Gustavo Grieco] - ! Fixed a build failure occurring under the Estonian (et_EE) locale. - [Reported by Sebastian Pipping] - [Fixed by Priit Laes] - ! Fixed a build failure occurring on Mac OS X, FreeBSD, and possibly - other systems that lack POSIX-compliant high-resolution timestamps. - [Reported by Ryan Schmidt and Dmitry Egorov] - [Contributed by Sebastian Pipping] - ! Fixed a typo causing build failures in 32-bit ANSI C compilation. - [Reported by various users] - -Version 0.7.5 2014-mar-24 -------------- - * Upgraded libpng to version 1.6.10-optipng. - * Upgraded zlib to version 1.2.8-optipng. - ! Fixed various build issues with libpng-1.5 and libpng-1.6. - [Fixed by Oliver Schneider] - * Allowed the handling of huge image files (> millions of pixels - per row or column) to be independent of the libpng version. - + Allowed the option -preserve to save the file ownership (UID/GID) - on Unix. - [Requested by Otto Kekäläinen] - ! Fixed a build issue with Clang. - + Added various enhancements to the configure script. - -Version 0.7.4 2012-oct-21 -------------- -!! Fixed the previous fix, which failed to fix the option -fix. - [Reported by Gynvael Coldwind and Mateusz Jurczyk] - -Version 0.7.3 2012-sep-16 -------------- -!! Fixed a use-after-free vulnerability in the palette reduction code. - This vulnerability was accidentally introduced in version 0.7. - -Version 0.7.2 2012-aug-24 -------------- - * Upgraded libpng to version 1.4.12. - * Upgraded zlib to version 1.2.7-optipng. - ! Fixed the display of huge (4GB+) file/IDAT sizes on 32-bit platforms. - ! Issued a proper error message if the output IDAT can't fit in 2GB. - Acknowledged this limitation in the user manual. - [Reported by John Sauter] - ! Fixed the output file cleanup that should occur after a write error. - * Added the option -debug and various undocumented debug features. - * Moved the PNG reduction module (opngreduc) to a separate sub-project. - -Version 0.7.1 2012-mar-19 [Released by Ramona C. Truta] -------------- -!! Fixed a regression in the reduction of palette-encoded grayscale - images. (This regression was introduced in version 0.7.) - [Fixed by Adam Ciarcinski] - -Version 0.7 2012-feb-29 [Released by Cosmin & Ramona C. Truta] ------------ - * Upgraded libpng to version 1.4.9. - * Upgraded zlib to version 1.2.6-optipng. -!! Fixed a rarely-occurring out-of-bounds memory access error in - the Z_RLE strategy in zlib. - [Reported by Christopher Wichura] - [Fixed by upgrading zlib] - + Added the popularly-requested option -strip. - The only suboption currently supported is "-strip all". - + Added the option -clobber. - [Contributed by Maciej Pilichowski] - + Added the option -backup, as an alias of -keep. - [Contributed by Ramona C. Truta] - + Added the option -silent, as an alias of -quiet. - [Contributed by Ramona C. Truta] - - Deprecated the option -log. - [Contributed by Ramona C. Truta] - * Changed the activity display output from STDOUT to STDERR. - + Allowed the option -preserve to save high-resolution timestamps - on Unix, if the POSIX-1.2008 API is available. - (This feature was previously available on Windows only.) - ! Fixed a minor precision error in the display of file size percents. - ! Fixed a memory leak that occurred when reading broken GIF images. - ! Fixed various build issues. - [Fixed by Sebastian Pipping and Ville Skyttä] - * Resolved all remaining compatibility issues with libpng-1.5. - [Contributed by Adam Ciarcinski] - * Added build support for clang. - * Reorganized the source directory structure. - -Version 0.6.5 2011-jan-24 -------------- - * Upgraded libpng to version 1.4.5-optipng. - * Upgraded zlib to version 1.2.5-optipng. -!! Fixed the I/O states (in libpng 1.4.5); - they caused incorrect file reads in some rare cases. - [Reported by Dmitry Marakasov] -!! Fixed processing of PNG files with chunks of size 0. - [Reported by Matthew Fearnley] - ! Fixed a display error in the TIFF import. - [Fixed by Piotr Bandurski] - + Improved checking of the arguments of -f, -zc, -zm and -zs. - - Removed quirks from the rangeset option argument syntax. - ! Fixed a build issue under the system-supplied libpng-1.4. - [Fixed by Petr Gajdos] - * Resolved forward-compatibility issues regarding libpng-1.5; - however, the system-supplied libpng-1.5 is not yet supported. - * Added various enhancements to the configure+make build system. - [Contributed by Elias Pipping and Dmitri Zubko] - -Version 0.6.4 2010-mar-14 -------------- - * Upgraded libpng to version 1.4.1-optipng. - * Upgraded zlib to version 1.2.4-optipng. - + Added the option -nx. - * Clarified the behavior of the option -nz and the relationship between - the options -nz and -o0. - + Added a filesystem check (resolving normalized paths, symlinks, etc.) - to better detect when the output overwrites the input. - + Enabled automatic wildcard expansion (i.e. globbing) on Win64. - ! Fixed a Unicode build issue on Windows. - [Fixed by Fabien Barbier] - -Version 0.6.3 2009-may-18 -------------- - * Upgraded libpng to version 1.2.36-optipng. -!! Fixed a use-after-free error in the GIF reader. - [Reported by Roy Tam] - [Fixed by Bryan McQuade] - ! Flushed the output log to display the current trial in real time. - This only worked on Windows in the previous version. - [Fixed by Vincent Lefèvre] - ! Fixed an error in reporting unrecognized file formats. - - Removed the requirement to "fix" TIFF files that contain unrecognized - metadata. - [Requested by Piotr Bandurski] - * Simplified the option abbreviation rules. Option names can now be - abbreviated to their shortest unique prefix, as in X11 applications. - -Version 0.6.2 2008-nov-09 -------------- - * Upgraded libpng to version 1.2.33-optipng. -++ Put back a speed optimization, accidentally removed in version 0.6, - allowing singleton trials (-o1) to be bypassed in certain conditions. -!! Fixed an array overflow in the BMP reader. -!! Fixed the loss of private chunks under the option -snip. - + Produced a more concise on-screen output in the non-verbose mode. - [Contributed by Vincent Lefèvre] - * Added a programming interface to the optimization engine, in order - to facilitate the development of PNG-optimizing GUI apps and plugins. - -Version 0.6.1 2008-jul-20 -------------- - * Upgraded cexcept to version 2.0.1. - + Added a configure script, to be used instead of unix-secure.mak. - ! Fixed a build issue that occurred when using libpng from the system. - [Reported by Nelson A. de Oliveira] - ! Fixed the processing when the image reduction yields an output larger - than the original. - [Reported by Michael Krishtopa] - ! Fixed the behavior of the option -preserve. - [Reported by Bill Koch] - - Removed displaying of partial progress when abandoning IDATs under - the option -v. (The percentages displayed were not very accurate.) - -Version 0.6 2008-jun-15 ------------ - * Upgraded libpng to version 1.2.29-optipng. -++ Implemented grayscale(alpha)-to-palette reductions. -++ Improved conversion of bKGD info during RGB-to-palette reductions. - [Contributed by Matthew Fearnley] -!! Fixed conversion of bKGD and tRNS during 16-to-8-bit reductions. - [Reported by Matthew Fearnley] - + Added support for compressed BMP (incl. PNG-compressed BMP, you bet!) - + Improved the speed of reading raw PNM files. - + Recognized PNG digital signatures (dSIG) and disabled optimization - in their presence, to preserve their integrity. - + Allowed the user to enforce the optimization of dSIG'ed files. - + Recognized APNG animation files and disabled reductions to preserve - their integrity. - + Added the option -snip, to allow the user to snip one image out of - a multi-image file, such as animated GIF, multi-page TIFF, or APNG. - + Improved recovery of PNG files with incomplete IDAT. -!! Fixed a crash triggered by the use of -log on some platforms. - [Fixed by Stefan Brüns] - ! Fixed the behavior of the options -out and -dir when the input is - already optimized. - [Reported by Christian Davideck] - * Provided more detailed image information at the start of processing. - * Provided a more detailed summary at the end of processing, under the - presence of the option -v and/or the occurrence of exceptional events. - -Version 0.5.5 2007-jan-28 -------------- - * Upgraded libpng to version 1.2.15-optipng. -++ Used a previously-missed RGB-to-palette reduction opportunity - for images containing 256 distinct colors. - [Reported by Joachim Kluge] -!! Fixed conversion of bKGD info during RGB-to-palette reductions. - [Reported by Matthew Fearnley] - ! Fixed pre-computation of iterations. - [Reported by Matthew Fearnley] - ! Eliminated a false alarm when processing RGB images with tRNS - in Unix-secure mode. - [Reported by Till Maas] - [Fixed by Nelson A. de Oliveira] - ! Fixed the behavior of the options -out and -dir when changing - interlacing. - [Reported by Martin Packman] - ! Fixed the behavior of "-dir [DRIVE]:" on Windows. - -Version 0.5.4 2006-aug-11 -------------- - + Added the options -out and -dir, to specify the name of the - output file or directory. - [Requested by Alexander Lucas] - * Added support for builds based on the system-supplied libpng. - [Contributed by Nelson A. de Oliveira] - -Version 0.5.3 2006-jul-23 -------------- - * Upgraded libpng to version 1.2.12-optipng. - + Implemented basic support for TIFF (grayscale, RGB and RGBA, - uncompressed). -++ Avoided the redundant trial when the search space is singular - (e.g. when running "optipng -o1 example.tif"). - + Prevented accidental file corruption when using the option -log. - ! Fixed (again) a small typo in the online help. - -Version 0.5.2 2006-may-07 -------------- - + Improved handling of inexact PNM-to-PNG conversions. - ! Fixed a typo that was breaking the build on some Unix platforms. - [Reported by Aaron Reitz] - -Version 0.5.1 2006-apr-30 -------------- -++ Implemented bit depth reduction for palette images. - * Upgraded libpng to version 1.2.10-optipng. - + Improved the BMP support. - + Added a Unix man page. - [Contributed by Nelson A. de Oliveira] - + Allowed abbreviation of command-line options. - + Changed the option -log to accept a file name as an argument. - * Renamed the option -no to -simulate. - ! Fixed an error in handling .bak files on Unix. - [Reported by Adam Szojda and Nelson A. de Oliveira] - ! Fixed a small typo in the help screen. - [Reported by A. Costa and Nelson A. de Oliveira] - -Version 0.5 2006-jan-14 ------------ -++ Added pngxtern, a libpng add-on for external image format - support: BMP (uncompressed), GIF, PNM. -++ Implemented RGB(A)-to-palette reductions. - * Upgraded zlib to version 1.2.3-optipng. - * Upgraded libpng to version 1.2.8-optipng. - + If trials are ended prematurely, detailed progression is only - reported under the option -v. - - Removed reporting of some IDAT sizes that exceeded the optimum. - (This was NOT a bug, but a "feature" that confused some users.) - ! Fixed an RGB-to-gray reduction problem that occurred under some - specific background colors. - * Added support for builds based on the system-supplied zlib. - [Requested by Nelson A. de Oliveira] - * Modified LICENSE. It is now a verbatim spell of the zlib license. - -Version 0.4.8 2005-may-10 -------------- - * Upgraded libpng to version 1.0.18-optipng. -!! Fixed a palette-to-gray reduction problem that occurred when an - RGB triple had both an alpha below max, and an alpha equal to max. - [Reported by Nicolas Le Gland] - + Packed the Windows executable using UPX. - -Version 0.4.7 2004-oct-30 -------------- -!! Fixed a palette-to-gray reduction problem that occurred when - having more than one alpha value per RGB triple. - [Reported by Larry Hastings] - ! Fixed the progress display, when processing very large images. - + Displayed the image info at the beginning of processing. -++ Reduced the IDAT buffer size, allowing abandoned trials to - terminate earlier in some circumstances. - + Implemented error recovery, when PLTE is too small, and/or - tRNS is too large. - -Version 0.4.6 2004-oct-25 -------------- - * Upgraded zlib to version 1.2.2-optipng. - * Upgraded libpng to version 1.0.17-optipng. - This provides safe handling of some ill-formed PNG images. - + Rewrote makefiles. - + Added project workspace to build under Visual C++ 6.0, - integrated with memory leak detection. -++ Implemented a premature termination of trials, in the moment - when IDAT grows beyond the smallest size previously achieved. - [Requested by Larry Hastings] - + Changed the order of trials, to perform the trials that are - more likely to yield a smaller IDAT, at the beginning. - + Added the option -full to avoid the premature termination of - trials; useful for debugging. - -Version 0.4.5 2004-may-31 -------------- - * Upgraded zlib to version 1.2.1.f-cos2. - * Upgraded libpng to version 1.0.15-cos2. - * Renamed the option -nx to -nz. - + Added the option -preserve to preserve file attributes - (file mode, time stamp, etc.) where applicable. - [Requested by Nehal Mistry] - ! Fixed an incorrect initialization of zlib window bits. - ! Displayed an error message when the search space was invalid. -!! Fixed a palette reduction problem for bit depths below 8. - ! Eliminated memory leaks. - [Contributed by Niels de Koning] - -Version 0.4.4 2003-nov-20 -------------- - * Upgraded zlib to version 1.2.1. -++ Added support for the Z_RLE strategy. - -Version 0.4.3 2003-aug-12 -------------- - ! Fixed a reduction problem that caused an assertion failure. - [Reported by Dimitri Papadopoulos] - -Version 0.4.2 2003-jun-30 -------------- -++ Enhanced the support for palette size reductions: - trailing sterile palette entries are removed even when - the bit depth is below 8. - ! Enforced recompression when the new IDAT has the same size, - but other chunks have been reduced. - + Displayed the IDAT size difference as a percentage. - [Requested by Nehal Mistry] - -Version 0.4.1 2003-may-19 -------------- - ! Fixed the removal of trailing sterile palette entries. - -Version 0.4 2003-may-12 ------------ -++ Added support for palette-to-gray reductions. -++ Added partial support for palette size reductions. - ! Fixed the reporting of invalid command-line options. - ! Eliminated a spurious warning when the zlib window size - is set to 256. - -Version 0.3.2 2003-mar-11 -------------- - + Added support for updating sBIT during reductions. - ! Fixed the reduction of the alpha channel. - -Version 0.3.1 2003-feb-25 -------------- - ! Fixed the encoding of interlaced images when they become - larger than the input. - [Reported by James H. Cloos, Jr.] - + Added the HISTORY document (this file). - -Version 0.3 2003-feb-24 ------------ - * Announced the first public release of OptiPNG. -++ Added support for iterating through zlib memory levels. -++ Added support for collapsing IDAT, avoiding calls to - png_set_compression_buffer_size(). - This reduces the memory requirements. -++ Added support for lossless reduction of the image type: - RGB[A] -> G[A], RGBA -> RGB, GA -> G - + Added many user options. - + Added documentation. - -Version 0.2 2001-dec-27 ------------ - + Added support for optimization level presets. - + Added a user option for changing the interlacing. - -Version 0.1 2001-dec-17 ------------ - + Added support for chunk I/O status annotation. - This improves the speed of OptiPNG significantly. - * Added structured exception handling via cexcept. - -Version 0.0.1 2001-dec-10 -------------- - * Introduced OptiPNG. -++ Compressed PNG IDAT data repeatedly, iterating through zlib - compression and strategy levels, as well as PNG delta filters. diff --git a/doc/optipng-0.7.8-win64/doc/license.txt b/doc/optipng-0.7.8-win64/doc/license.txt deleted file mode 100644 index 58fbad30883..00000000000 --- a/doc/optipng-0.7.8-win64/doc/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (C) 2001-2023 Cosmin Truta and the Contributing Authors. -For the purpose of copyright and licensing, the list of Contributing -Authors is available in the accompanying AUTHORS file. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author(s) be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not - be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. diff --git a/doc/optipng-0.7.8-win64/doc/optipng.man.pdf b/doc/optipng-0.7.8-win64/doc/optipng.man.pdf deleted file mode 100644 index 4f8b7083bf4c48e3a60fb7a118bbf5825f78889b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42393 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 outfile - optipng -stdout infile > outfile - -- Optimization of an entire directory, with and without subdirectory - recursion: - optipng dir/ - optipng -recursive dir/ - -- Support for conversion to a desired bit depth and color type: - optipng -b16 -c6 files ... - -- Support for handling metadata, e.g.: - optipng -set tEXt=, # add or update chunk - optipng -set sRGB=0 # add or update chunk - optipng -set image.precision= # set the precision of all samples - optipng -set image.alpha.precision= # set the precision of alpha samples - optipng -reset image.alpha # make the image fully opaque - optipng -strip hIST,sPLT # strip hIST and sPLT - optipng -strip all -protect iCCP # strip all metadata except iCCP - -- Parallelization on multi-processor/multi-core machines: - optipng -jobs 4 files ... diff --git a/doc/optipng-0.7.8-win64/optipng.exe b/doc/optipng-0.7.8-win64/optipng.exe deleted file mode 100644 index 76920bad2dc1340a9e1dad6a34d64f29fda7f183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229888 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�&MO0F5&G? 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 z

Example hypothesis:

+report.save("report_parse_folder_evoked.html", overwrite=True) + +# %% +# +# Adding custom HTML (e.g., a description text) +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# The :meth:`~mne.Report.add_html` method allows you to add custom HTML to +# your report. This feature can be very convenient to add short descriptions, +# lists, or reminders to your report (among many other things you can think +# of encoding in HTML). + +report = mne.Report(title="Report on hypothesis 1") + +my_html = """ +

We have the following hypothesis:

    -
  1. Auditory vs Visual differences.
  2. -
  3. Predicted N1 amplitude change.
  4. +
  5. There is a difference between images showing man-made vs. natural +environments
  6. +
  7. This difference manifests itself most strongly in the amplitude of the +N1 ERP component
+

Below we show several plots and tests of the data.

""" -report.add_html(html, title="Hypothesis") - -""" -Finally, we add an MNE logo and save the entire report as an HTML file. The -output is fully interactive, self-contained, and easy to share, combining both -QC and full MNE processing elements in one report. -""" - -logo_path = Path(mne.__file__).parent / "icons" / "mne_icon-cropped.png" -report.add_image(logo_path, title="MNE Logo") -report.save("mne_report.html", overwrite=True) -print("Saved as mne_report.html") +report.add_html(title="Hypothesis", html=my_html) +report.save("report_add_html.html", overwrite=True) From 0f777723d393290de74d2be12f551309ac467596 Mon Sep 17 00:00:00 2001 From: varshaa-1616 Date: Thu, 18 Dec 2025 19:14:14 +0530 Subject: [PATCH 5/7] Wrap forbidden code for docs build; instructions for local execution --- .../14_quality_control_report.py | 368 ++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 tutorials/preprocessing/14_quality_control_report.py diff --git a/tutorials/preprocessing/14_quality_control_report.py b/tutorials/preprocessing/14_quality_control_report.py new file mode 100644 index 00000000000..e0d1bab5972 --- /dev/null +++ b/tutorials/preprocessing/14_quality_control_report.py @@ -0,0 +1,368 @@ +""" +.. _tut-qc-report: + +============================================= +Quality control (QC) reports with mne.Report +============================================ + +Quality control (QC) is the process of systematically inspecting M/EEG data +before any serious preprocessing, modeling, or source analysis is attempted. +Poor data quality at this stage will *always* propagate downstream and can +invalidate results, no matter how sophisticated later analyses may be. + +This tutorial demonstrates how to create a **single, narrative QC report** +using :class:`mne.Report`, focusing on **what should be inspected and how the +results should be interpreted**, rather than exhaustively covering the API. + +We use the MNE sample dataset for demonstration. Not all QC sections are +applicable to every dataset (e.g., continuous head-position tracking), and +this tutorial explicitly handles such cases. + +Authors: The MNE-Python contributors +License: BSD-3-Clause +""" + +# %% + +from pathlib import Path + +import mne + +# %% +# Load the sample dataset +# ---------------------- +# We load a pre-filtered MEG/EEG recording from the MNE sample dataset. +# Only channels relevant for QC (MEG, EEG, EOG, stimulus) are retained. + +data_path = Path(mne.datasets.sample.data_path(verbose=False)) +sample_dir = data_path / "MEG" / "sample" +subjects_dir = data_path / "subjects" + +raw_path = sample_dir / "sample_audvis_filt-0-40_raw.fif" +events_path = sample_dir / "sample_audvis_filt-0-40_raw-eve.fif" + +raw = mne.io.read_raw(raw_path, preload=True) +raw.pick(["meg", "eeg", "eog", "stim"]) + +sfreq = raw.info["sfreq"] + +# %% +# Create the QC report +# ------------------- +# The report acts as a container that collects figures, tables, and text +# into a single HTML document. + +report = mne.Report( + title="Sample dataset – Quality Control report", + subject="sample", + subjects_dir=subjects_dir, +) + +# %% +# Dataset overview +# ---------------- +# A brief overview helps the reviewer immediately understand the scale and +# basic properties of the dataset. + +html_overview = f""" + +
    +
  • Sampling frequency: {sfreq:.1f} Hz
  • +
  • Duration: {raw.times[-1]:.1f} s
  • +
  • Number of channels: {len(raw.ch_names)}
  • +
+

+These values should be checked for consistency with the experimental design. +Unexpected sampling rates, unusually short recordings, or missing channel +classes often indicate acquisition or conversion problems. +

+""" + +report.add_html( + title="Overview", + html=html_overview, + tags=("qc", "overview"), +) + +# %% +# Raw data inspection +# ------------------- +# Visual inspection of raw data is the single most important QC step. +# Here we inspect both the time series and the power spectral density (PSD). + +report.add_raw( + raw, + title="Raw data overview", + psd=True, + tags=("qc", "raw"), +) + +# Interpretation: +# - Look for channels with unusually large amplitudes or flat signals. +# - In the PSD, check for excessive low-frequency drift, strong line noise, +# or abnormal spectral shapes compared to neighboring channels. + +# %% +# Events and stimulus timing +# -------------------------- +# Correct event detection is crucial for all subsequent epoch-based analyses. + +events = mne.find_events(raw) + +report.add_events( + events, + sfreq=sfreq, + title="Detected events", + tags=("qc", "events"), +) + +# Interpretation: +# - Verify that the number of events matches expectations. +# - Check that event timing is plausible and evenly distributed. +# - Missing or duplicated events often indicate trigger channel issues. +# %% + +# Epoching and rejection statistics +# -------------------------------- +# Epoching allows inspection of data segments time-locked to events, along +# with automated rejection based on amplitude thresholds. + +event_id = { + "auditory/left": 1, + "auditory/right": 2, + "visual/left": 3, + "visual/right": 4, +} + +epochs = mne.Epochs( + raw, + events, + event_id=event_id, + tmin=-0.2, + tmax=0.5, + baseline=(None, 0), + reject=dict(eeg=150e-6), + preload=True, +) + +report.add_epochs( + epochs, + title="Epochs and rejection statistics", + tags=("qc", "epochs"), +) + +# Interpretation: +# - Excessive rejection rates suggest noisy data or overly strict thresholds. +# - Rejected epochs should be visually inspected to confirm true artifacts. + +# %% +# Evoked responses +# ---------------- +# Averaged responses should show physiologically plausible waveforms and +# reasonable signal-to-noise ratios. + +cov_path = sample_dir / "sample_audvis-cov.fif" +evokeds = mne.read_evokeds( + sample_dir / "sample_audvis-ave.fif", + baseline=(None, 0), +) + +report.add_evokeds( + evokeds=evokeds[:2], + noise_cov=cov_path, + n_time_points=5, + tags=("qc", "evoked"), +) + +# Interpretation: +# - Check that evoked responses have the expected polarity and timing. +# - Absence of clear evoked structure may indicate poor data quality or +# incorrect event definitions. + +# %% +# ICA for artifact inspection +# --------------------------- +# Independent Component Analysis (ICA) helps identify stereotypical artifacts +# such as eye blinks and eye movements. + +report.add_html( + title="ICA for artifact inspection (run locally)", + html=""" +

+ICA fitting is computationally expensive and therefore not executed +during documentation builds. To inspect ICA components locally, +copy and run the following code in your own Python session: +

+ +

+import mne
+
+ica = mne.preprocessing.ICA(
+    n_components=15,
+    random_state=97,
+    max_iter="auto",
+)
+ica.fit(raw)
+
+eog_epochs = mne.preprocessing.create_eog_epochs(raw)
+eog_inds, eog_scores = ica.find_bads_eog(eog_epochs)
+ica.exclude = eog_inds
+
+report.add_ica(
+    ica=ica,
+    inst=raw,
+    title="ICA components (EOG-related artifacts)",
+    tags=("qc", "ica"),
+)
+
+""", + tags=("qc", "ica"), +) + + +# Interpretation: +# - Components correlated with EOG should show frontal topographies and +# stereotyped time courses. +# - Only components clearly associated with artifacts should be excluded. + +# %% +# Head position / HPI quality control +# ---------------------------------- +# Continuous head-position tracking (cHPI) allows monitoring subject movement +# during MEG acquisition. Not all datasets contain usable cHPI information. +# This sample dataset does not contain usable cHPI information. + +report.add_html( + title="Head position / HPI (run locally)", + html=""" +

+Continuous head-position tracking (cHPI) estimation is not executed in the +documentation build environment. If your dataset contains cHPI information, +you can run the following code locally: +

+ +

+head_pos = mne.chpi.compute_head_pos(raw.info, raw)
+fig = mne.viz.plot_head_positions(
+    head_pos,
+    mode="traces",
+    show=True,
+)
+
+ +

+Stable traces indicate minimal head movement. Large drifts suggest +movement-related artifacts. +

+""", + tags=("qc", "hpi"), +) + + +# Interpretation: +# - Stable traces indicate minimal head movement. +# - Large translations or rotations suggest movement-related artifacts and +# may motivate movement compensation or data exclusion. + +# %% +# MEG–MRI coregistration +# --------------------- +# Accurate coregistration is critical for source localization. + +report.add_html( + title="MEG–MRI coregistration (run locally)", + html=""" +

+Coregistration visualization requires access to MRI surfaces and interactive +rendering, which are unavailable in documentation builds. +Run the following code locally to inspect coregistration quality: +

+ +

+trans_path = sample_dir / "sample_audvis_raw-trans.fif"
+report.add_trans(
+    trans=trans_path,
+    info=raw_path,
+    subject="sample",
+    subjects_dir=subjects_dir,
+)
+
+""", + tags=("qc", "coreg"), +) + + +# Interpretation: +# - Head shape points should align well with the MRI scalp surface. +# - Systematic misalignment indicates digitization or transformation errors. + +# %% +# MRI and BEM surfaces +# ------------------- +# Boundary Element Method (BEM) surfaces define the head model used for +# forward and inverse solutions. + +report.add_html( + title="MRI and BEM surfaces (run locally)", + html=""" +

+BEM surface visualization is not executed during documentation builds. +To inspect BEM surfaces locally, run: +

+ +

+report.add_bem(
+    subject="sample",
+    subjects_dir=subjects_dir,
+    decim=40,
+)
+
+""", + tags=("qc", "bem"), +) + + +# Interpretation: +# - Surfaces should be smooth, closed, and non-intersecting. +# - Poorly formed surfaces can severely degrade source estimates. + +# %% +# Summary +# ------- +# A concise summary provides a checklist-style confirmation of completed QC. + +html_summary = """ + +
    +
  • Raw data and spectra inspected
  • +
  • Events and epoch rejection verified
  • +
  • Evoked responses checked for plausibility
  • +
  • ICA components reviewed for artifacts
  • +
  • Head position stability assessed (if available)
  • +
  • Coregistration and BEM validated
  • +
+

+For automated, large-scale QC across BIDS datasets, see the reports generated +by mne-bids-pipeline, which follow a similar philosophy but operate +at scale. +

+""" + +report.add_html( + title="QC summary", + html=html_summary, + tags=("qc", "summary"), +) + +# %% +# Save report +# ----------- + +# %% +# Save report (local use only) +# ---------------------------- +# Writing files is disabled during documentation builds. +# Run this script locally to generate the HTML report. + +if __name__ == "__main__": + report.save("qc_report.html", overwrite=True) From df423a875b003daa564e2e8ba7c91add3be0f46d Mon Sep 17 00:00:00 2001 From: varshaa-1616 Date: Sat, 20 Dec 2025 21:17:37 +0530 Subject: [PATCH 6/7] DOC: add QC-focused tutorial using mne.Report --- .../14_quality_control_report.py | 102 +++++++++++------- 1 file changed, 61 insertions(+), 41 deletions(-) diff --git a/tutorials/preprocessing/14_quality_control_report.py b/tutorials/preprocessing/14_quality_control_report.py index e0d1bab5972..5f313f34fe7 100644 --- a/tutorials/preprocessing/14_quality_control_report.py +++ b/tutorials/preprocessing/14_quality_control_report.py @@ -6,27 +6,44 @@ ============================================ Quality control (QC) is the process of systematically inspecting M/EEG data -before any serious preprocessing, modeling, or source analysis is attempted. -Poor data quality at this stage will *always* propagate downstream and can -invalidate results, no matter how sophisticated later analyses may be. +**throughout all stages of an analysis pipeline**, including raw data, +intermediate preprocessing steps, and derived results. + +While QC often begins with an initial inspection of the raw recording, +it is equally important to verify that signals continue to "look reasonable" +after operations such as filtering, artifact correction, epoching, and +averaging. Issues introduced or missed at any stage can propagate downstream +and invalidate later analyses. This tutorial demonstrates how to create a **single, narrative QC report** using :class:`mne.Report`, focusing on **what should be inspected and how the results should be interpreted**, rather than exhaustively covering the API. +For clarity and reproducibility, the examples below focus on common QC checks +applied at representative stages of an analysis pipeline. The same reporting +approach can—and should—be reused whenever new processing steps are applied. + We use the MNE sample dataset for demonstration. Not all QC sections are applicable to every dataset (e.g., continuous head-position tracking), and this tutorial explicitly handles such cases. -Authors: The MNE-Python contributors -License: BSD-3-Clause +Note: +The generated HTML report is intended to be opened directly in a browser. +Some interactive elements (e.g., sliders) may not function correctly +when the file is served via a local HTTP server. + + """ +# Authors: The MNE-Python contributors +# License: BSD-3-Clause + # %% from pathlib import Path import mne +from mne.preprocessing import ICA, create_eog_epochs # %% # Load the sample dataset @@ -39,12 +56,15 @@ subjects_dir = data_path / "subjects" raw_path = sample_dir / "sample_audvis_filt-0-40_raw.fif" -events_path = sample_dir / "sample_audvis_filt-0-40_raw-eve.fif" + raw = mne.io.read_raw(raw_path, preload=True) + +# Retain only channels relevant for QC to simplify visualization and +# focus inspection on signals typically reviewed during data quality checks. raw.pick(["meg", "eeg", "eog", "stim"]) -sfreq = raw.info["sfreq"] +sfreq = raw.info["sfreq"] # Sampling Frequency (Hz) # %% # Create the QC report @@ -179,48 +199,45 @@ # - Absence of clear evoked structure may indicate poor data quality or # incorrect event definitions. + # %% # ICA for artifact inspection # --------------------------- -# Independent Component Analysis (ICA) helps identify stereotypical artifacts -# such as eye blinks and eye movements. - -report.add_html( - title="ICA for artifact inspection (run locally)", - html=""" -

-ICA fitting is computationally expensive and therefore not executed -during documentation builds. To inspect ICA components locally, -copy and run the following code in your own Python session: -

- -

-import mne
-
-ica = mne.preprocessing.ICA(
+# Independent Component Analysis (ICA) can be used during QC to identify
+# stereotypical artifacts such as eye blinks and eye movements.
+#
+# For QC purposes, ICA is typically run with a lightweight configuration
+# (e.g., fewer components or temporal decimation) to provide rapid feedback
+# on data quality, rather than an optimized decomposition for final analysis.
+
+ica = ICA(
     n_components=15,
     random_state=97,
     max_iter="auto",
 )
-ica.fit(raw)
 
-eog_epochs = mne.preprocessing.create_eog_epochs(raw)
+# Fit ICA using a decimated signal for speed
+ica.fit(raw, picks=("meg", "eeg"), decim=3)
+
+
+# Identify EOG-related components
+eog_epochs = create_eog_epochs(raw)
 eog_inds, eog_scores = ica.find_bads_eog(eog_epochs)
 ica.exclude = eog_inds
 
 report.add_ica(
     ica=ica,
-    inst=raw,
-    title="ICA components (EOG-related artifacts)",
+    inst=epochs,
+    title="ICA components (artifact inspection)",
     tags=("qc", "ica"),
 )
-
-""", - tags=("qc", "ica"), -) - # Interpretation: +# - Use the topographic maps to identify spatial patterns characteristic +# of artifacts (e.g., frontal patterns for eye blinks). +# - The component property viewer is intended for detailed inspection of +# individual components and is most informative when combined with +# qe epoched data or explicit artifact scoring. # - Components correlated with EOG should show frontal topographies and # stereotyped time courses. # - Only components clearly associated with artifacts should be excluded. @@ -236,8 +253,9 @@ title="Head position / HPI (run locally)", html="""

-Continuous head-position tracking (cHPI) estimation is not executed in the -documentation build environment. If your dataset contains cHPI information, +Continuous head-position tracking (cHPI) estimation can be computationally +expensive and is therefore typically run selectively during QC. +If your dataset contains cHPI information, you can run the following code locally:

@@ -274,7 +292,7 @@ html="""

Coregistration visualization requires access to MRI surfaces and interactive -rendering, which are unavailable in documentation builds. +rendering, which require MRI surfaces and interactive 3D visualization. Run the following code locally to inspect coregistration quality:

@@ -306,7 +324,8 @@ title="MRI and BEM surfaces (run locally)", html="""

-BEM surface visualization is not executed during documentation builds. +BEM surface visualization is typically performed interactively when preparing +source-space analyses. To inspect BEM surfaces locally, run:

@@ -359,10 +378,11 @@ # ----------- # %% -# Save report (local use only) +# Save report # ---------------------------- -# Writing files is disabled during documentation builds. # Run this script locally to generate the HTML report. - -if __name__ == "__main__": - report.save("qc_report.html", overwrite=True) +report.save( + "qc_report.html", + overwrite=True, + open_browser=False, +) From fc6036a29178b8ddfad2f6bb60737752e6ee8d1a Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 03:36:20 +0000 Subject: [PATCH 7/7] [autofix.ci] apply automated fixes --- tutorials/preprocessing/14_quality_control_report.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/preprocessing/14_quality_control_report.py b/tutorials/preprocessing/14_quality_control_report.py index 5f313f34fe7..1f3d162b02e 100644 --- a/tutorials/preprocessing/14_quality_control_report.py +++ b/tutorials/preprocessing/14_quality_control_report.py @@ -37,6 +37,7 @@ # Authors: The MNE-Python contributors # License: BSD-3-Clause +# Copyright the MNE-Python contributors. # %%

+p17;AT{qC+;?VWTWK9h+w?cQ2JmMUD((0x``kw#eU(m-HytvmBrE{EM_#P24N zQZr{#s#8kc;+M+KEY&o))Mb9DoXk?^3@-I`zf^8!so>yJ#eS*0%u;e(dO*M42REem zLo!RfMB;!_a==PT4b3bid}=_c-}E}=DJRn2n{Bm@v0AScvWsMUe@pYJko{D*1Ko|} zLb2uL+csuZS*^1PeqNs~CfgF>E#xc<6K+?)61KBd_@!yTC?fdtWGhbPUCQ>{!#G5%+u2J|6Y8y(&V##06y{7)))SK9 z-9h1pWRkmYf0!N&Dyfn5Q)9d*OC4E3bwz1akKU_TQ65qiPKF(;HoaPD zU5#jxJV~d$GkJPQrJW?@6o^lhG?jadq$!vVmo$}ofVR~%di$lTD)&`MQ+TjP($rka zg=PvPyr(5i53hN%0G=*IMB5CUBx00q%WwoRUert+wB}08CCzu~nR5FjJko~Mz z03|A&)Y~Uds-idKNj3Nvc~V2!CQqufo8(C~BQ8sN$oI>W>h|yDNwxKJc~YSHfjlW- z-pUjD#m}$=i9#X1a9W{o^PVJ4=@s6uAeU8o!Y`t{UeV2(@d&_V&*@1b&tyj$+R%%Z z4T<*#LZ97c61+)0Z8n>C#~C&T(xIYvwf>Noup3)89M`2G6;zY11TAg~Y_{cI zT9B;wME08er8dko0^ZRKrtm;T;- z=oV`9nt;Qqc+c>gPm^*lTqJ3EFfM9*Evk{orah*O%%8jV-?T`FSxPAj;x>tKx=J$|3v zDk=C%%QmyI<}Lv`zpLI*jlUGKcZPz`u|pghwkhP|*HroEo9a~K;iEM^OgG+oWa9-i zu9~uGeDh>CI&z=ch3dK^z89|qm4l0#@~v9A2iS?nlD$2Okq2#-T0_GKo^-AVPd#Av zL>TOm?VSr8Bum;;0r;goF7i%}=;FRWmC|Uh5}3*HmAhbpm4{hW)1qmAppi#mD3j*T z54+?9$$HC3M3^)CfU%~D5HIHjDi1g1<1Tlr%cpu|fKB%erSn#~H<{h|mJ{JJ@q@#S z+rGfp0@%F()_z4mEqH4MpRatzaPL(kex>V8Mrsb@obVzwZ~dd4TSk;@Ljk^u>pUM6 z0Hp2~1!qm4WgP3V8~Q-qFY>%OXKO!GF9D6!L))|5MDL>|S*IzAoHo zdMsPf0|C8;>A(fR2+zBnfa$0pY8T-Bx4<;)XkbdnrbY@x!g4e#a*(|68(|yvp$yo0 z;=0$ro{KiT5@}xdJMc`epHQHqcjby2ebDSSD_SPkO&aUg`c=fzA~E zW)zwwg_=dELE-EUx{+*i*j8O2Ra`CN*&k!@X{Z1VZ@$!>ju%Az@GSkMXC4xmDLgU> z;Too7d@sAH*h#k0%CN1bJ7Z|7evPj}|FeOpCn^E(h7qa4_~@9!y3#$mE5$41N>y)~ zDy!RJtsUqL4O{1}mVT|uw6{7c;<)A9E}#RWZK*^DJdh}z%}g3}5p~aAb7>&!aiOK| zD)u;C*j}fx=7wxz&2ex)S;xN@8unhWHwADDp?d3!d~F8cW{T|0$`_6JIFh2y&(%G% z_6w#vRnCV@Dq_%hp*~PhfIDgq4@E_C;O1cL4xUFF#sj^sqZAM~O3TKYApd`xOBnIt zdxy4b+=8Oeu%}J>5ZoQA?962R_sW2TA!}|sK^U(-itO27@`T}jhA;mt_uF)EPMO(?L#<|9tj~g-U43+7cv|)y27Q|k_Av{_ zikIPBU{KgSdo)v1EpWmW>Mqm%8ysN_8qf9FAuKGxk1V&yP;&9TewnCxq?lleHzSCo zPbsh{5TymOfJV)s>Qu;`c@{DelgDmaKk*8Vzxy23ne;P%vI!3GHT{Mz zS+?0-SVZ14hwU7MCigR*el*chVg*^2b!q;>Wd9@!`ck#rnXR5)mdmQT-cZ~foek9M zvMRf7nrb;!OmF}2On0_Gd~$06mwifB|IDYeinumf$y@QacdbG#?{}sK&s<&-zB`D%@4*ykIluTL%K&k>u(uO0(pb3`nAbJDrS|x_9DMBW)pD!* z1krQ3P9kLAbIb4eBHXa4@`al(LgTG#xOJJN*jr)Txhw1JCo8*_oPu^8Zs@6Nc=Tb( zBWJ?nQO+ZWDmTtIW0P${k^rYht8&Bq;-=qmlYZ+I@UbZsZ&uMx?tgpsx`_UW1 zY&BGHW$K4S+Tt2QmSobQl8}1=_;_CyY|C`Vo>kZIqA91DSH2r^MH~9)(L~iFk+u2Rq2SXJCe*lXolLtsm7^$9H($Mx7RL^x9r3T~{ce6s0v z6Ql8C;4RdvU`El^0yFs+3T}nS&e#}NUG2WW$NP{wCs5b$lx4peY2Tea%^f>JMLGxN zLiR3CqL=G1%v7y<%te9#A7-1C>U$`-gYMVK#Aq-OpIgAp)w2q&3fXlfVhUE6f&XDu zUBgasie|4R%tk@fvcHpG<4(eRd8u@_*3r`)X?W5;XkppC?Pbgabq$!di6kxOB+3By z*vD~cozOj|A19$F%T72lY733~wx?L7Ls$@1wBeq(BrBpS_-UQJ13U1NuV|`@Hr)S+ zWKw7815x_`RP~gx>|1=y!F2u#b*X-l@n`7kE?C2(YPgYxtyL9|9xqUxzf8_Um&gqg zWy~c1{6%e-Eg?*-*J3{<2%OVYjWh^SSYx%ZJ#n9m9ONkacWzU^=QJ4#qUnwtc?h{z20|5G zCP$nIXS<;_p|WM4sU+AF=8#pRZE}E!WkNMS?-Lr5y2OPzxrbvI?&N?V|7~Am;FkSS zoqd1}HyL+X$es3)Y&@gz2nZ%bo$2|`ltM0Omu}THZ1#tfLK$azadm25iGgE`jJMJd zKX>WAU$i{C`J+kTrE%LZmNitXNj}ULMg`aA8VR{>yK&XDhCeDSh}!Q)+Fu9ZC!K-# zo{Vl~EzbrQD%ajLM2_j$61jJBwprP`_`GPtK6p%GfwahW&Hl>Xn+t-^gd6%o&V+}p zz&?=Xs?*V})_j9#ypG_0DDXGqKRPVqKi(D4%N!9M{n8DM#^H7%Iw|tN01_~pdsLTK zN`w&QC|*Y=!Bv)4y<8>2QsgqYrdv?sRv!$ri&h0k0yieO)d$=gfarEX6t{Z6`&~AB z#2eiGF1L|JK|Oc=hvacZ$qk1*lm^TS2_Y-iQ_Ts6VcL5eF$A^DLBNx=j3kL|FG=U= zq@^n9eU)@Tf4D>?^{Aw?bg9KEX^Tqg)TM49370aJbdoN$NR`^7lK!AeT}P7a0+p!5 z&+2k9l?ZmI#AaP`z9hQUe^Y6Pm|OZQLCAp7UrB4anD?u7nGaN%*L0bybQu{zQ>9z| zp1_Tw-z8ZUdqx+Vt3TEK-K5hR^{4Nm|JOChrK50R6Q_MP9uqSJ3j`f%r@fjgogT!h=Mi4Y;!wB#Paq?QM?K4+|PRb5X zqxh}*_wJSax|61mvr4C|{yx9t`eys8~TLFS= z8|ydA5q9UN(xBAQ8DP!B!&Peoo5i+ELZ=WibTd=N+-qLf>r|C0$UqlvEOAJ@g+!9Q5pMr@l;$Dr|9*%&3?g*p-QR=vet_wY>1s%Im&U;fyeI=%R=fHka50{5|m zXnMQR9^%*1^e_%-1LN1A*Q0uQzhS#T>2Gl0`^O98t*yBK^YW|puMRJ+NG< zA>;jk3}K;YS1<_4S008rf_o31Ef^_!A+Wt&5J5J|FU0UADBb;4;ytjvMBeOdtMY|d zF_HIzFY#Io>w3uw+%2djdrlETmzxYG##UAvD6CkhS=oLQ9^O@4y_hlngJCR6a^hqe z2#9>>Zo#DD{RvGwWOHY6(i2N~$UZ2e{uz(5hO;+$ckmc#ScjMtX^G@iO?ZF9<{jc{ zaC8w_=kq8`qs+UU7mKN!;HOORW~l6~7Q$tMSKD89f>$Xo?iAF?^~e=7{vq1fPncS* zjah-`QInLMmicB%hxj@YW=BNVhf-2)eh}L}kXclgo&+ZVkW^a-x(b{rpn5KK)!A!> z%h%x@mCRJjFz;n*W{qjB%vSoTx0y{5HXsA)o4SVewf3)7|E9U4mm`%cfC_Yg5WKnROoO+yEmN8jgTzb*PETa-ZH9Wq#=8c6?~>&hfCG0)id@z(BzIu zSMNzw2>nUK{s8qFOz&PhU;)4`!YHqvfEn(nwfvwhN8K;n#Z%b6yffgOiYW8Eu)Uu5;&Zr5nX#=GC7UMtQNBh7TYCL9iqe$*R#=9NfyyC zECR>Ly@=cu_JE@;voo;F`WdniSMf~M+FhHx#WpMTJ5vYLrQ@DPZ4CP72O{uRIUu*v zrL&fOA-0l{AKQfVh|CVvkc>|5tWX_v>jUuC{Apz}@8`)y&|0n}vS83xL zMz{FE!q}OFMqF|#c3oIrvogjx5rD^;R2%CIX6?ALa^^R-|4wrA@u&QR!v7z2?;amj zbv68Fk_;q}Z~`V86(ne=jDmuf%2d!CGQl%2Be7_ON|hGnfoc_DhKnL3&P3+)I6!@D zwa;T8+qbp%)>c~tuStL;VATK?M7(gRa1P@IP$69Ne%C%T$pq>1d;k6M(ab*kvi9C< zuf6u#Yp=bwN?Mhr9`A-D7*WRytxESHNJ`(&(A5br<3W?$;m?e^$}gjSqtbndidjWv z^lN&ewBRdMc5CF*YL>4Kd>V|NG`Q`on!`{RE*Y1uC6ElN?w=8ScaK~Z6_#eMdOtbg z2#=Pl0~>tFiTB^$OD;SE#M2SF@(g*t(y8uR&xptF#Rob#O&>ALs{bR%W<@m2w}SG3 zGH#vTs7cPr*R>zFBBL$8klkI#!UXE4!l?AvLL(Q)jxuqRPq3)&Rx#663|qCM_IHS(h{&t*`6d@qXU1OJ4Wq$6-Rmr zK5)N&=%)SI{rVsG>s|NjVfX7f_v;DwYpeV9p!>C|N6yVX($o>Q)*#pFsQpbh?Fa7H ztM1oK_iLm3CEH+fHoIRH?pKTZHNpLo)5)CGgmcoS1b)JK%Y^eKjsCI5^UW0!wpNHr zfR~SX;g^d7;(H^2$Q^r)`I>`6fou4{!NJ_ZnmDIqe_#}>6-rs2tjX72SSFKDL_c+U zRVAx|*&4DYaTvJInlvm>$YmZ515K4LVBQMX;w&)zhOD+~g{y+bGZ;yMM3Ki@Ca~Q@ zt0sL*N7DElal&+Kw0%EQ(Z1U9ztJ2$S%=*=5^|%?ee*55sJ5nXQ^>j%wt-<{ zz+541448MwVPhXsrFm?opK$A*O5KtqT1r(-dU|fy(!rU>mu}Unva6|#uD&hhYs_u* zFkl`nY@# zgZ&!wE$PkwT3@bPpXyW3`b4|?L>E#~y|UKm$q8Qs%(hUnc;`(h_Eooab>4krvb4{O z>X_rcF8!)P*?sUjcMy|uV6cEr%5jwH<+JW02Ue4FR9YZ0oLZk%WFp79j&w2n`AqW( z849!Atuc&Y!&Mw`+~g5)iG%bfgk-U6;Y2J@XhTs;+LEN{Rb}&%FHd@DWcF$ zrGYtW_u?xkR|i#E`CiU|&SlXz%y*2WDK2AQT-w1h+8ewVuNzLcIdY^Bts8Axf}+!nHK$euL8?nyIACQSjTRs*Z8 zTILciPRdMXn7qlHJ!!TaW6q>8&12G?6A=88WeX=}##u0T>|d}zLCg~(zo{F;N_;Y> zi1aiav8p-h7$7tGgh+4ceb<@gwC3nOk-m~oh^Pj7e#?(cI*}^f^F{T7rVHN?_*Ejd z0l!u8BEhSYdqHssg4RQ64&Hr2?>R)ggWR{r;q8hf&Vs5 ztVDQyZ3xEZqRXk1wclesDbLvW)ys)o<(Z|Nc@+|QIG3SVG2VPZzD{7aeOnj0;_`i^G_YmbZ~uQ*FA57yf%l?^yT zcD%9G{lKdro;ek^`@hQXQTHoB-sb@W@XV zokz^nqY`}z9cTeckpj;F&+9}4Pg1RCha9Ywc;2b;yc>|e?E(3(iJK*;gxYk^Hu>zp z<71Iwb_D%LwT5e$E&=n{OZV6Ht_xx4FFiH1XSeXg)8(@_AB1J=zHKNPD6q9>yl-oe ztuA;&Sxagb9+$~YH*wKajynLYVUsXvszhIf-0~HEBYEOu$-~LNIE520k)C5179_{? z*OOOi0-kY0R4peH?oM;*N5FF`9nU=?p*iC7dc-4Q+4P0@{2uY#CTe%%y*=W&P_){O z@6{uoJ4HWt<9qjr=UP$1jmLp%R(lE~5$Y`L5!WX&owz?gHJk13a5(ocR)TlWvHD{IA^ETX&~9j#qMr7#DlXy1HBkn3>Zgc1lYY(` z8%)+7$jlL_CZB0)U@m1e?Is8f;Icwdhda0kGTN$Hx%`=)N1cT8wN(olimlqJIlZ)1 zQ+lgea)=C53iwl7sAkE2$O6YktBfKwNp=%ls4-LaGgFRvKKC4g_C4<^vWN0F1w5Pa zc|>+BU;^&sk!b+Riam$a%!yPoY#YeYug25n0ka#`JZaWFZ%Oc&M@SyJm#cpza!a>i z3^PR$b=NfE7Tl3{P{Za2lYyMi#Ql{PM;_pGllNG0O{2zfab*#6w@9%dxx>WV^>h!g zp?K8UZhRJD6A!`58-C=^B5dLz_`Pm?7GV<)!N2LoXAw5>5d11PK8vu4hv3B*1@N;7 zn|KKR5jQ@Iu!%2-%q4FYVG~yvxt+Ky!X~ayWCC$ngiT!E$k&O>B5dM{A{P=Tgq@zu z#1#u!>n>TV3C_hFMax3K-Q=tLTC)hdJKonKOhGO8N@7$YaRXC=a&8jL+xf0gd-{Bc z_0CzXRLybv%YFbxlz4(bz--hNL*x~_wE{gbyG>>d@n}z)SzZFZHbNW3bA#E8b%*vW zI{X)9s<7S2lyawh<;^zTFvz!^QS`N7Bdc>SR^Dq3H~h zuIqkl_xkhykM?F(>ys}tpox?-9?&3q>QTHK6&G&fa&lwJ#-2=j< zUJ$ZI@i2Qyh*v`J#UAp&c3Q*Mr0HSnzFBhqQDEtK2!B(zCe86Rj}XHyu0k3(-ED!7;-PSLsJkk?=IIZY_-vhcD?HM)N(A@KuDzh_=1lt(B;OLF0@mFNg0YrdEHv@h(OiO)Q#l`cN0z=JO{q&=IsI@`iPmt0jvQ{P;;@Ql z1A*=HWbm3LFfvpt*~Xaa7cXN!%lU0c=Hd>za0bsYOlCi_a;Kr7MvP<9Y0$7kS4Kf078ovyHBv= zJHS&L=J*1MF5z;a7OPUxjb1^XIljEcoMh1hTxRkF9gEf>ePk>T2^lz;!c{&ep;6xTe76>BcovJVgH+h3C*_U+%Y@5r_xty^r} za~wo#k8B5?wklLP@+C=sP5x}zb7aeqwZY^)KO-fq(53u&y$+fqe&;PI;htxi$K|G+ z_QH2^1;>VGJB5;8Eu=O4H)Udbsv>V<7PX$+r-r$tLT|mn_0lfhUfpqw?WtHJo;#v& zld;c}Z;iNdSDDR81`T@{i=C*zF8su3NTS>xD-tmna9W(+d$vz922IWlft`e zAX#~?K&qIK9L^1SC*c23d-!!Ee|ZgfeyyIo?PTou@cDy+$%U62m<+@^Z=YWx=Ota| z@i@L>1wNPUeI68@SCg1>lJBXf2%M5YCjrjLb^vd|7G)yPR}OYpovSCfT#D1{_(ZCc z$>1DfuSZ)3BEiP`(wFq1;60dukCnQ5dbFhaPC?ZIe?=xv_?3<8}?nyC6lXrB+ zj`x~>o|sHja4TUbPHoqRd>6=A&Q`=?b7#K9ipDYYfTom^s7?s8>{R)oww2FKNg@3;{=4&<}BT%%fr-Au)( z4fHy{FZ(mx4GHKsqMs5!CY;P49^yeQ-*(mOWxoKp^JO<3y(Z7K29vY$Ldoyu;ihKL z>vc}@%JgZr+&T*@?IPNbdk<`L%f z`7LqTYQ87l;U*<3?+iBmE1#ZruQ&J&`2pfktGpnI7{6Zpo!oWc^MH2WE!bOW_ch6% zjaq+RvDV(^J?c{}0j>Y7?R;#}`v1p)p#MblWq}|2*8yy>unJfjOb#D?Lo)wP{P5KH z)=q5$?@TK_Xm0-agAPn^(Oy zv1$@sn^uYWZ_R*27$f9KC5bTN;-vnGFjpWa4RG@whs22-AbC^dElY$4@O@Syd=@{Y zi7;=GO)7KqzUAgEle{*0%M;-;GM$|WpUuxXiSRk(b?49{zjX7KOWu#jdwwEZPNs7c z;dA*pFA+YEyyv@c7r1%Pm%O{ldqE<6KA8q4!UOpkln4(Z?*(q&iEiEtBri|K)C@_4 zFCf$4M0hYi6^U>Kd55@p2fKNPNZ$9zTbT$CA=8D4Fe2fkixT0B$Xn^={Tx*dk(H7c z5BoJ2C&HC{4^4!J^7FMs_-o|7*v;GO=Dk?*ZYA#}iSWf_8kPuiWH`x}2>Zx;iJSMo z-Mp8OZA2n`3F((6!k025?-)*|5!??SE?~AebIHh@#RpuIFge5L2%j7J+DKLn!}l5Q zm1)cS!{%UoBMtx2xqTh+v5y`z!|!l~1j}Py2LHdf-W!VRm7#@VNn?87ke^7CdP9yI z$=fYAcoUQIodZ}4unsI?2`y2J2g|5)O6()fz^7wV&}F%74_!i4n)ShgV0{46b$%Mx3;B1YS(68)pKvCp7Z6zn7qW5hv0N^oU77Xw!tRsG zgUKm*E@y&k{fwf*oQ`+1DNJbLL#J`72C1UyGsUTzlgL#`RGGHHp^4{ z66hauPPxN5Cf~wz_rr(sf)Saa(|W3Ayx330#Vna5#00NK72=Jf_%R5Zz@X zZqJQQ=V@^at0bcgi#S`{Y@E&_7U0D0boLPR|0DXT^Bxc}J+DG+KN~%&d3@A{rc}Ps zv?rg589{{7`d=k76xx*6qaX9^ym=zF>j0N5eE*PV%#=^}+K>k?)pu4_k!X0Fs>7|Q zRPe2*tiGz00kt0c7&G$|z2=V$A*I$%u zkg{En5;Q+HaAQ&>n0Z6kk9_fL6i)HY@L*Qf||mCx+d6F8=0WU%Uwmy$wX@#+F@ zs}c`+ln{Ojf7Zl;qla>1$HCDjZUi`bC@*##9KGj8fTM@bK>uv-%ddSP-qs3oT z5#T7?%lR|mG~Fyho%p}e4JdNtJpg3Ou}iLzrC?5LC(FkYEKKh6E|!>p_I8{6Y1Fj= z2U%;D93XIjb!N#y=eOcUIXSzKLn~R0%{J#zR#jqnj4TuLfW(ON!VjJM2ue+*U#V$; z#OPEaps87XOI>1YpZ!Den0K} zAlgNy&sBY8_Q*DYZF*bu69#0UnKGT&o&)BGIM|Sh%C=#Q;W-Y$bF(e}Jbg{h?v&k+ zkj7hJo>!D(XR$5DPu> zz)}1bHv-PFFgJD-8VI-%yqB;rFLo3fxYCW_xrBvW%!dXpbR&2zVWF1|k{0i;A|~=! zg3-&#=YxS@W0@IKzXfs zTuyfkHK!aAnyKL8(6Ux1PBD!BWLVtMVUS=h&QF>CT?#Dj{9vG7cJwwB!#M zo+6*a?8R3i5XRPx&fMqC_*YhDPn~7q|AUMuhr?x`<0%GbvE;3|E%iG#`L6!)wETm* z@~?IC+YhpTRTpaPAwT38Oy#G!VY7*cO_jpat|b9IswdhINTA^b!PRq+`h`lpwr6SvKNM7Ztn;DXRs5LM*|244x6n`c-?QH+AHx#^&d4 z=@9Lz2U~L-bQL!Gw?ujTV$d#Hj7Hw2a}2Z>7gJIDD5>ZeHqYrBcJFsnaF>7D`j1D` zH**WS5<%9#_^`_M;${bTwGA{5<&XF20lAzJU;QMNgpx!5s=mfH1KmJ-`tVj3s+Csp z?J-bl`Xf5bw*Id4G9IaGvG=6rM931f!0m@nPmxMW!B``zuA>(jmi#@G`}c^+&e{!jegp#sX>xb!+> z28?AwevK7>DyK?jXz>UAb3spTjg|itkfK7eon^b8f(OmWf6DJo{YW)pHMy2FTgB~s z>Q+21g>jUE*MINNNHV=k85lFS{%9vI9G8XzR@q!4LNhj?u&OrWk4pX<%+g00)*k`F zEMCT6yh$y-P_I9lgDC}O$es-`z~ts&{!x4nznS?QFh>j(V4{xx3m7!aGGBk1Avfi0 zn1c*bMwz^})vHrf{&n$7tN0S41pm8X<$iBDU#55SN>FF6H@)i#M0TW}@5*m(dKHK{ z$#EXD>!XEdN@) zw{(SWASCT;_4?CsT(4iggN$PCGj>i%t~>|N>XyuJkh1m#{Dfw_i971#3c+I4;TBJ1 zV5@grt=mn-&x0(#k@GV9>HKQ?G1n~p5%)o(pTv$AMXp&bc%G0PCqles6Xtb?Y*(?&hSlV-X_NKUbsThf?;0$ zuYQcF;i*mrM!>GtbDw|2!R11m$K|ir;jjG{1as5->*Z-$`6&VC5yUXdyPIT#ty2YT z++E+GFj>UjN4e6_xb&bdud{SI;yGc|VbJm8eoS?oGen6N42+Ev;e4Gur}1xheHm$R zP0<&`gr8Lun+o%&G6=FS6KNB_YQ7tSF0$cf4~-CRHvFd$Jt@OSU!%phF~;tPUyJYN zgKYCuwv$h)(N$JPGAQqhCWf<<5gIobQEc&-{m%xoI$y`7Prwv^2u)^n0e@X?%Ywbr z6WiSn_vLC1z;Yq}$!Ifg#v^@osW}-%As*??$pi7ej?+|X=L|A(xit|d#F1fEbva*W z;Ygp0H{NTjOXv1(tu7~%h#Mnik?dOM4-S`(O{T>uZb+r&ANg ze8X9S_4E0YmH*Q5TEpAm-Fc5ckan`P%1BPEuy-NP1*|;hJ2DEH{D#>-WY!OZ2fO#| zvu%ykJ?vY%Jsh#r8Zt5744Q8vV#)YF1U}8ySjTWJj@JgB!@ic+FzH;ZV~Exu2VatD z3Yo$jo5Y`{8caDWOLYWk9AJKuDvT^KTXfHtzAwWV1QgVtRHyro{5oB-rA|O$U-u3X zruVi-mALV`*}|klx?<bGb74KTYK1g}ui$Cr9?UJ>TjS@!3j;H4=)8-Kc-67u+8a;11p z5CQ3Xv^gm6T42HRAyw-fzn6f9`t_0{%vXW^DXW$At6`W_0g9qTNP&~oLzVk|LJ9`8 zwR*p2xkA#bWbJg?8B-Y-13!rPYkx;s)7kR6k0Gv0)O|1Ldo(vu$-oU;vH4&-#=X<; zZqys?-uyOm2lYldr)^}f*mxsHnnLu=O&wkmI3qpQOVPZCcbUy^LDrZnJw&@&$5(;` zP`RYhu+COgePby!UX(Y!z@Mwdc9CZ#jrUz5jkkX64*qR4&0LSQ!x9liMyRy=NK?b$ z3hoP`kA}uYl75j&pG11d`n6D{q8oe$W0ym6R0zLJS;7qLeKHO}|bbisjV>JO|Zs(%{ArGj!*K^-k(QshfJ9Kj6e%~7kr zGoK7@JwlAbfa&Z(d=NO+y_L>i6>wEP@5UnkgnTVFgeXVj4`}+cYVd#2V@GPt;_&i5 zvVp7L4bf|Y7O<)c;EhrAj>ytN9-h@QXeN%zGyM-Gt17Ij(vayPmioD0h`Pt4TUC{k zZKc|d@Tw+!i?xDFQUY**0n0Y$q34zdO4R-if1CDS7E=ewyTnid|GmXt)zE{F3BeGP zYGZ$71q+;O$e5NV>K-UP8bMWCd=`1x48BZenQyTNO7iAkVOZl>8cG`X=VDc0_9xiR zBf=i@rhI}bz>}J_e6v1O<(YcPS|A<8?-h{d0%>K}`$Bf=L16(G@xV0(J{7LOPJade z?JB7=vR~|mJ|bQ0qqo~@RCJ$6AI#3_-S=qpYEA`ndR)oN?AKn)`5N}8q`E6=7k&lM zLPk5*QL*46L;GdxTo}55I}322RrbK{qJ;RuKiN<2Pa5rpHTLK;BI3l37S6vQ^?GK! zxZ4WE3us!hwmo*NaKWY4*~y~Ek^!UL-#%|wYcJ~R?A%7C)|?B0XMg@cChL5j2CbNX zfm{9KKv2?MrUmKoz)F65XD4*lNn@Mmy_agwA}{cjc~3}u3AF0SNSPjM{XOhh?KsuN zI%*^5td@2F+C&WGZ^cd)EWjnj!Q{er`xa^x6m95P|J*g^wJ10jJcq0H z$UUmPvCdwR?;$@J$;kz>*?mxz^h8$>ftBGwTV|#hv^6|H17e+?$hEk17l%EQSrrc2 z6En%TN&CR%4_PJPCqHh4KRXkNRQvPQGFekkv{skMpr*EF@PGP!r+_s(-||@Z1N)!W zO$FR{3UQ-Ddv3`uG&o?tj6 zk17-%wO1@ugd5%Me4Cigvg?1z4khPoisHEO7Gk>hkE3?Dd{4R(yP71#SDF@fA@ByK zL~Z_U9TJp>hw4Fv$GrJxIYIxIDC=l;C|OQlbzrmlH zwG4lZgjmN&*X%vJNW(Wtan9$DqQju?Jw%V6!3b_l=08K*bL`o)Ld`Dc7=!^HoM*{R zcX)b@2nOoHZhV^unsyd=+Ounj%PZZ|$#>?fPMR(Dn}l3d*;~#Nq;{9@A&pijx)YKQ zS-+~RqcK6eLz?R$`~Z_6$Riv=HS>$r(#Z#33!;YKj@HVQz}X>Yi5yCH&^h-N%fsM z+7s~D#yn>MA2QAv`lEt*zZ`X#$9C*ZQJ3vnsMH`KD9pnxg4iLpAt;+mFA#dV4tjLy z4naIMxEnu0e+}(AZssq5+qEz+zKr~G(=o%pJ^C-|nEOA@H>g<(B{_UPi3EMYsLgaY z=zGWhITgDDIfgv0iZ_6Xp{3``mgXw{A8FlGM3lU-GF0L!V*cI>&bLHZ`X-xUV@BzZ z49~_+ahmO}AEV?oq=0lN&!w&Oen)tYx?++2-OQB}H(^M7I$q&B>wW}#kYQ4PV`Riw zHMUo%3x{K6Xy^AEwV8k*8O$|vfYB}tKRrI*csesa>IP71mui;_uYfz_)=l~HdQ%gx z1~SnD1)HMP@-W_Yy1ChGLQT=y2k%Qbo=aTr5L&P097~+ARE8(q8a&cVjaS5g? z6?#OFYyO{1y=r-t=75jRvfrzCSrfTczc-^$*Iw|@C?!%cHerM_4_Q zXJ+YZMU~gmuz6uvR+%5n<6_G@av#1??yMcOLqs4NiO7^z)w<(_Xu1ve>`cdWit}zE zGJn_o6w*!7?RCVao|(Bab}TP)DUU%%&Q_Fz!>uS+Ygfr`QuW^u6IImuojYAVYgm|8 z$Y(nJwDoIr$ogaD&%sI1e9PP#meuPGs?g%UB2KDVisMivvr0|V@bbg6fVYVDV7Ti~ zO&)O=uABK!$wV;x??-U{gy{QN0QjcWlTa`Q~mCSs*50N@EAQd&vJ^EMw@o(vd+Zt&zPgaV$ z1L6aWx)5dm>VCI%TEk}cj_6!(lZ`^CGU6}L8hRrHtPTSrlpG=c`a;R8KjsJBgu$`P z!jSpL$~saxMhTgJQ*S?s>NT=f_mp)y7?Ag)8&ibDe2!k)4$W?x9dPpT2f`utPWzk=_zDA zs$$&w)%7uIwSP8;q6`ubSBY$(+9BqJRcH%3|0$u-=6d?YyAkTD%vy5QpTZCZ5y6u$ z;geJ|KbZVUE+Y{;cKrf4=GEE-!lLqjVt5W@=#eWMR1%j;l8;u_QAkd(7Na4!P+``{ z&}nR)r^dfeYY>Sn^Hd4=OShXUrIq$a_hs6BR;Jxs!Cu2`GH`KX3Vic^UP}yN2U#2R zw`vW?DHxPDewK-}&gdWl8p)R{R}ybuj({X?pD?QA5WE8b(=x5J*OC@8k0~I(A+r@% zWm1LL=0CyJa%m4Y)}jaT55Zn%x(wl;CDM9uv{+}U?W*B_uww3FBlcibPBdz$2~6*< zH^heeD71!(@fFJC*fXVDNFoAd09`T6yQ^r;bho|svg7G?5_e}1eXdnq)z#4Rq!a#* z$dxX?O_u%meBm$K?RrH~WfKOvpL5;MaQbrwpK=-|Gp2j3l{x6bvAm<$SNRJfBbX#- z6SQ)02B`6Il-KZNw%jiioGiO8UEKfxrvAJ-2t20Guh4ZeeO}?md6^bw=C4Z+5gFvu z=wSez6k>@VgfJX2o0aw3%^x^Je(`_CNsL)t>%2yZG#$D5OV5!1Imurgavmdd*8DK5 zN2@Y%S+zv#vlz0+{^3sM({$%91vwxzBy{{Tg4gNo{Jb~z%&{##rc=QT?P+h&H(paO?ezXVKz`}`BU8!kyr>XT1p}D3jDwbn1vl28dMQTe?D|u)C8l5fsh1%Pt>F@~ zP zeNxXM|0m1#mb);1K{X2NN}iWV#&fAOPraXDpLGvNU?r3(^$P%p%!yrdCe4E67=4!g zUmZ{?3~!chdYmZLq~}pjZWSRHQ{A~)red;eeYy>wNE^gfh|b(eEz&8)m-(HZ{#Jau zi%&ZjyAXbPj@t`4t#QQO6sUt;sKUx;+08-|(k@3=)LiCC*ZDgs@h&B#-(9a?Rs^i? zqREl<4pB*Dr+L^3yb-d39KXagXnv;XYpIJ ziyIusSVtKo?b&UfX1g!S!=Nb}N5mSJ8{2n$pQ!>(M1xlKNTi%Au#M6d%*IE|YTCx> z6|W4z1S99kwR6uAX{WjI5@ex9PofrP)fzpJmVS`nU3rb(zt4>{p^XiI;PbIGf?jk# z=cQBs;C?>hrgnpIQ2(I+LEapFMnj3o1EkFuO7zrk+$yIhiwcZZX*ktyl!rKtR=rkz z`i{n$rht*pjX$)G8_6(q!XLYthv<{6V3oXS*xUK$Y}VbCJ(Ia#O@k^B$_#m!v@v>d z+AibobwZtDm$5^2q{*%ZxT~&RGfNt>sk7aFn$XJA>XSRiu|?%Mk*oNr$cc>LHC0x< z>nuHl(0&b(RXLaf#1_@&Ld&3 z-9Vnh5>AudixQTd`$`$dbboYoG14Ix1cWQsumh2^%6&(?v+SQsGyVIJ;u*UW=XUr} zMiO^_Wq-h$^3f9dY>76J3wla^M598frR_7UvR{hq zVde4$Fd8*KBT|8)*g+LMuvuPfOh%eJq;r~4PC3~tR(p{yqa<1Hck_p9L z!G$ZH1I(rgu`$hXj>hPL)SujV%lnOaa!3;C<;3{Y zCG0(S2<6xXD3<``kk+3obC3^`AYmjm`}Mn+6LK}IN^XSJ^7^PYj26%@9RIBq zd>k$Fho!V+8slCj{%wm%Kio&64!#m zTs-W!oln_A(&q#AMa&r*s8>$>!4x381;n_{)5^QXH)LV! zuy*cQ1}8VTfDL-u`P3f9GE1y#0#w1>!plpNrk zKeqdLq##+_7~B0?bU@5Ii6XROU9D)vnSW@A3>Li#xduI2UtLAP)%pAhXn{r}Z_rSw z!JLRb0ZsDclFqUKRlpKfb(ZZhuUXY|cx`%XBGjPIz!>Pc!ExBtFe8q9^8;wfYa zS%LC$`#O=2Kz6dYk~sTvVNX5z?Jb!Nri*yPNMa}(u!cSkG_I;exa4wI0d3DHWqG?^ z&A(Rfz2p$SVEdV27$zn2>-c{?CM~Q(I}h066E8}y)Ox@+SGj_DVJ>SQznAT8B8SRB@>UTHNh?$UIc@T%ZpNTs!nzWLwX;E&tx^x#H* zntERG#q_rpe_!(L%j8qkR6v`draAB(YhJ!}Ej?mj59eJcny+t5Gp-}w+&#{l6hoxK zsAK@c*3J%yuwTOK2n$bTeVoGNyyc!;4!%p3NHLU^AzoPr3Xsn$WJd%)!D+GPySZ{C zs{neA&UOl}o1*M5i_fL3Bm7n1rR9_URxZ5JY^vV{mMVBFy7~r)?loYJ{Yg$vOT$M~goL^!YQ!7Vr@nK6Vg4(RF|p&Sw9j3-nvk20;BzC3LpK50%m& zb$%B=KRhmR3zHq)y{`0lDJ)!uxi0mTg@Ij;%p=@NHo0`E|n@QJs*ev0soPc(D4S zwlZ5d32itWDP~0|G^}cb#)Akz)@>z}ioORZg)DWlz=?4?Wz*-mmbWjk#RwO5QnXL^ zLG6p>G}D#K&;1UggINv(bfsa=VI{fxQ+TgAT52h~QZ>>0GBJD`=Ah?PsG2ou7D=f; z#@aelze~$^miH+s`8sv=bG6p$SUn&lc=b4TL5j$sdT#5Y#n@`o8FDRP@nMm&t;H2K~vAm__d4x+X{u~`$FcL^1 z%X?~;tg2f4RpMH`AM*vRcZrD=w{^>p$hOgamiG-+Ao9K~8j94`Zu+;p #7Ow0RQ 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 Date: Tue, 16 Dec 2025 13:46:07 +0530 Subject: [PATCH 4/7] Revert changes to existing report tutorial --- tutorials/intro/70_report.py | 880 ++++++++++++++++++++++++++--------- 1 file changed, 656 insertions(+), 224 deletions(-) diff --git a/tutorials/intro/70_report.py b/tutorials/intro/70_report.py index b44d44f09f8..7fe30ff6b96 100644 --- a/tutorials/intro/70_report.py +++ b/tutorials/intro/70_report.py @@ -6,266 +6,698 @@ =============================== :class:`mne.Report` is a way to create interactive HTML summaries of your data. -These reports can show many different visualizations for one or multiple -participants. A common use case is creating diagnostic summaries to check data -quality at different stages in the processing pipeline. The report can show -things like plots of data before and after each preprocessing step, epoch -rejection statistics, MRI slices with overlaid BEM shells, all the way up to -plots of estimated cortical activity. - -Compared to a Jupyter notebook, :class:`mne.Report` is easier to deploy, as the -HTML pages it generates are self-contained and do not require a running Python -environment. However, it is less flexible as you can't change code and re-run -something directly within the browser. This tutorial covers the basics of -building a report. - -This tutorial demonstrates how to generate a full MNE-Python report combining: -- Quality Control (QC) steps: raw data, PSD, events, epochs, ICA -- Full MNE diagnostics: covariance, projectors, BEM, coregistration, - forward/inverse solutions, source estimates -- Custom figures and HTML content +These reports can show many different visualizations for one or multiple participants. +A common use case is creating diagnostic summaries to check data quality at different +stages in the processing pipeline. The report can show things like plots of data before +and after each preprocessing step, epoch rejection statistics, MRI slices with overlaid +BEM shells, all the way up to plots of estimated cortical activity. + +Compared to a Jupyter notebook, :class:`mne.Report` is easier to deploy, as the HTML +pages it generates are self-contained and do not require a running Python environment. +However, it is less flexible as you can't change code and re-run something directly +within the browser. This tutorial covers the basics of building a report. As usual, +we will start by importing the modules and data we need: """ # Authors: The MNE-Python contributors. # License: BSD-3-Clause # Copyright the MNE-Python contributors. +# %% -# This block imports all the Python libraries we need. These include MNE for M/EEG -# processing, NumPy for numerical operations, Matplotlib for plotting, and -# Pathlib for handling file paths. They provide all the basic tools required to -# load data, run QC, create figures, and build the final HTML report. - +import tempfile from pathlib import Path import matplotlib.pyplot as plt import numpy as np +import scipy.ndimage import mne -from mne.preprocessing import ICA - -""" -Here we load the MNE sample dataset, which contains raw data, events, evoked -responses, and anatomical files. Using this dataset allows us to demonstrate how -to generate a full QC + MNE report without requiring your own data. -""" data_path = Path(mne.datasets.sample.data_path(verbose=False)) sample_dir = data_path / "MEG" / "sample" subjects_dir = data_path / "subjects" -raw_fname = sample_dir / "sample_audvis_raw.fif" -events_fname = sample_dir / "sample_audvis_raw-eve.fif" -evoked_fname = sample_dir / "sample_audvis-ave.fif" -cov_fname = sample_dir / "sample_audvis-cov.fif" -fwd_fname = sample_dir / "sample_audvis-meg-oct-6-fwd.fif" -inv_fname = sample_dir / "sample_audvis-meg-oct-6-meg-inv.fif" -trans_fname = sample_dir / "sample_audvis_raw-trans.fif" -proj_fname = sample_dir / "sample_audvis_ecg-proj.fif" - -raw = mne.io.read_raw_fif(raw_fname, preload=True) -raw.pick_types(meg=True, eeg=True, eog=True, stim=True) - -events = mne.read_events(events_fname) - -""" -This function makes a simple static plot of the first few seconds of raw data. -It avoids the interactive browser and instead gives a quick visual check of -signal quality, channel behavior, and overall data shape, which is important for -QC reports. -""" - - -def make_raw_overview_figure(raw, n_channels=20, duration=10): - """Create a Matplotlib-only raw overview.""" - sfreq = raw.info["sfreq"] - start = 0 - stop = int(duration * sfreq) - - data, times = raw.get_data(start=start, stop=stop, return_times=True) - n = min(n_channels, data.shape[0]) - data = data[:n] - data_norm = data / np.max(np.abs(data), axis=1, keepdims=True) - - fig, ax = plt.subplots(figsize=(12, 6)) - offset = np.arange(n) * 1.5 - for i in range(n): - ax.plot(times, data_norm[i] + offset[i]) - ax.set_title(f"Raw Data Overview ({n} channels, {duration}s)") - ax.set_xlabel("Time (s)") - ax.set_ylabel("Channels (offset)") - return fig - - -""" -We create the MNE Report object and add basic QC components: a simple raw -overview, the power spectral density (PSD) plot, and the sensor layout. These -plots help verify noise levels, channel availability, and general data quality -before deeper analysis. -""" - -report = mne.Report(title="QC + Full MNE Report (Clean, No Duplicates)") - -fig = make_raw_overview_figure(raw) -report.add_figure(fig, title="Raw Data Overview") -plt.close(fig) - -psd = raw.compute_psd() -fig = psd.plot(show=False) -report.add_figure(fig, title="PSD of Raw Data") -plt.close(fig) - -fig = raw.plot_sensors(show_names=True) -report.add_figure(fig, title="Sensor Layout") -plt.close(fig) - -""" -This block loads event markers and creates epochs (short time windows around -stimulus events). Epochs allow us to check data quality trial-by-trial and -understand how different conditions were recorded, which is essential in QC. -""" - -event_id = dict(auditory=1, visual=3) -report.add_events(events, sfreq=raw.info["sfreq"], title="Events Overview") - -epochs = mne.Epochs( - raw, - events, - event_id=event_id, - tmin=-0.2, +# %% +# The basic process for creating an HTML report is to instantiate the +# :class:`~mne.Report` class and then use one or more of its many methods to +# add content, one element at a time. +# +# You may also use the :meth:`~mne.Report.parse_folder` method to select +# particular files to include in the report. But more on that later. +# +# .. sidebar: Viewing the report +# +# On successful creation of the report, the :meth:`~mne.Report.save` method +# will open the HTML in a new tab in your browser. To disable this, use the +# ``open_browser=False`` parameter of :meth:`~mne.Report.save`. +# +# Adding `~mne.io.Raw` data +# ^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# Raw data can be added via the :meth:`mne.Report.add_raw` method. It can +# operate with a path to a raw file and `~mne.io.Raw` objects, and will +# produce – among other output – a slider that allows you to scrub through 10 +# equally-spaced 1-second segments of the data: +# +# .. warning:: +# In the following example, we crop the raw data to 60 seconds merely to +# speed up processing; this is not usually recommended! + +raw_path = sample_dir / "sample_audvis_filt-0-40_raw.fif" +raw = mne.io.read_raw(raw_path) +raw.pick(picks=["eeg", "eog", "stim"]).crop(tmax=60).load_data() + +report = mne.Report(title="Raw example") +# This method also accepts a path, e.g., raw=raw_path +report.add_raw(raw=raw, title="Raw", psd=False) # omit PSD plot +report.save("report_raw.html", overwrite=True) + +# %% +# Adding events +# ^^^^^^^^^^^^^ +# +# Events can be added via :meth:`mne.Report.add_events`. You also need to +# supply the sampling frequency used during the recording; this information is +# used to generate a meaningful time axis. + +events_path = sample_dir / "sample_audvis_filt-0-40_raw-eve.fif" +events = mne.find_events(raw=raw) +sfreq = raw.info["sfreq"] + +report = mne.Report(title="Events example") +report.add_events(events=events_path, title="Events from Path", sfreq=sfreq) +report.add_events(events=events, title='Events from "events"', sfreq=sfreq) +report.save("report_events.html", overwrite=True) + +# %% +# Adding :class:`~mne.Epochs` +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# Epochs can be added via :meth:`mne.Report.add_epochs`. Note that although +# this method accepts a path to an epochs file too, in the following example +# we only add epochs that we create on the fly from raw data. To demonstrate +# the representation of epochs metadata, we'll add some of that, too. + +event_id = { + "auditory/left": 1, + "auditory/right": 2, + "visual/left": 3, + "visual/right": 4, + "face": 5, + "buttonpress": 32, +} + +metadata, _, _ = mne.epochs.make_metadata( + events=events, event_id=event_id, tmin=-0.2, tmax=0.5, sfreq=raw.info["sfreq"] +) +epochs = mne.Epochs(raw=raw, events=events, event_id=event_id, metadata=metadata) + +report = mne.Report(title="Epochs example") +report.add_epochs(epochs=epochs, title='Epochs from "epochs"') +report.save("report_epochs.html", overwrite=True) + +# %% +# Adding `~mne.Evoked` +# ^^^^^^^^^^^^^^^^^^^^ +# +# Evoked data can be added via :meth:`mne.Report.add_evokeds`. By default, the +# ``Evoked.comment`` attribute of each evoked will be used as a title. We can +# specify custom titles via the ``titles`` parameter. Again, this method +# also accepts the path to an evoked file stored on disk; in the following +# example, however, we load the evokeds manually first, since we only want to +# add a subset of them to the report. The evokeds are not baseline-corrected, so we +# apply baseline correction, too. Lastly, by providing an (optional) noise covariance, +# we can add plots evokeds that were "whitened" using this covariance matrix. +# +# By default, this method will produce topographic plots at 21 equally-spaced time +# points (or fewer, if the data contains fewer time points). We can adjust this +# via the ``n_time_points`` parameter. + +evoked_path = sample_dir / "sample_audvis-ave.fif" +cov_path = sample_dir / "sample_audvis-cov.fif" + +evokeds = mne.read_evokeds(evoked_path, baseline=(None, 0)) +evokeds_subset = evokeds[:2] # The first two +for evoked in evokeds_subset: + evoked.pick("eeg") # just for speed of plotting + +report = mne.Report(title="Evoked example") +report.add_evokeds( + evokeds=evokeds_subset, + titles=["evoked 1", "evoked 2"], # Manually specify titles + noise_cov=cov_path, + n_time_points=5, +) +report.save("report_evoked.html", overwrite=True) + +# %% +# Adding `~mne.Covariance` +# ^^^^^^^^^^^^^^^^^^^^^^^^ +# +# (Noise) covariance objects can be added via +# :meth:`mne.Report.add_covariance`. The method accepts `~mne.Covariance` +# objects and the path to a file on disk. It also expects us to pass an +# `~mne.Info` object or the path to a file to read the measurement info from, +# as well as a title. + +cov_path = sample_dir / "sample_audvis-cov.fif" + +report = mne.Report(title="Covariance example") +report.add_covariance(cov=cov_path, info=raw_path, title="Covariance") +report.save("report_cov.html", overwrite=True) + +# %% +# Adding `~mne.Projection` vectors +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# `~mne.Projection` vectors can be added via +# :meth:`mne.Report.add_projs`. The method requires an `~mne.Info` object +# (or the path to one) and a title. Projectors found in the `~mne.Info` will +# be visualized. You may also supply a list of `~mne.Projection` objects or +# a path to projectors stored on disk. In this case, the channel information +# is read from the `~mne.Info`, but projectors potentially included will be +# ignored; instead, only the explicitly passed projectors will be plotted. + +ecg_proj_path = sample_dir / "sample_audvis_ecg-proj.fif" +report = mne.Report(title="Projectors example") +report.add_projs(info=raw_path, title="Projs from info") + +# Now a joint plot +events = mne.read_events(sample_dir / "sample_audvis_ecg-eve.fif") +raw_full = mne.io.read_raw(sample_dir / "sample_audvis_raw.fif").crop(0, 60).load_data() +ecg_evoked = mne.Epochs( + raw=raw_full, + events=events, + tmin=-0.5, tmax=0.5, - baseline=(None, 0), - preload=True, - reject=dict(mag=4e-12, eeg=150e-6), + baseline=(None, None), +).average() +report.img_max_width = None # do not constrain image width +report.add_projs( + info=ecg_evoked, + projs=ecg_proj_path, + title="ECG projs from path", + joint=True, # use joint version of the plot +) +report.save("report_projs.html", overwrite=True) +del raw_full, events, ecg_evoked + +# %% +# Adding `~mne.preprocessing.ICA` +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# `~mne.preprocessing.ICA` objects can be added via +# :meth:`mne.Report.add_ica`. Aside from the parameters ``ica`` (that accepts +# an `~mne.preprocessing.ICA` instance or a path to an ICA object stored on +# disk) and the ``title``, there is a third required parameter, ``inst``. +# ``inst`` is used to specify a `~mne.io.Raw` or `~mne.Epochs` object for +# producing ICA property plots and overlay plots demonstrating +# the effects of ICA cleaning. If, instead, you only want to generate ICA +# component topography plots, explicitly pass ``inst=None``. +# +# .. note:: :meth:`mne.Report.add_ica` only works with fitted ICAs. +# +# You can optionally specify for which components to produce topography and +# properties plots by passing ``picks``. By default, all components will be +# shown. It is also possible to pass evoked signals based on ECG and EOG events +# via ``ecg_evoked`` and ``eog_evoked``. This allows you directly see the +# effects of ICA component removal on these artifactual signals. +# Artifact detection scores produced by +# :meth:`~mne.preprocessing.ICA.find_bads_ecg` +# and :meth:`~mne.preprocessing.ICA.find_bads_eog` can be passed via the +# ``ecg_scores`` and ``eog_scores`` parameters, respectively, producing +# visualizations of the scores for each ICA component. +# +# Lastly, by passing ``n_jobs``, you may largely speed up the generation of +# the properties plots by enabling parallel execution. +# +# .. warning:: +# In the following example, we request a small number of ICA components +# to estimate, set the threshold for assuming ICA convergence to a very +# liberal value, and only visualize 2 of the components. All of this is +# done to largely reduce the processing time of this tutorial, and is +# usually **not** recommended for an actual data analysis. + +ica = mne.preprocessing.ICA( + n_components=5, # fit 5 ICA components + fit_params=dict(tol=0.01), # assume very early on that ICA has converged ) -report.add_epochs(epochs, title="Epochs Overview") - -""" -Here we fit ICA to identify eye-movement components and mark them for removal. -We also add ICA diagnostics to the report, such as component maps and EOG -correlations. ICA is an important step in QC for detecting common artifacts. -""" -ica = ICA(n_components=20, random_state=97) -ica.fit(raw) +ica.fit(inst=raw) -eog_epochs = mne.preprocessing.create_eog_epochs(raw) -eog_comps, eog_scores = ica.find_bads_eog(eog_epochs, ch_name="EEG 001") -ica.exclude = eog_comps +# create epochs based on EOG events, find EOG artifacts in the data via pattern +# matching, and exclude the EOG-related ICA components +eog_epochs = mne.preprocessing.create_eog_epochs(raw=raw) +eog_components, eog_scores = ica.find_bads_eog( + inst=eog_epochs, + ch_name="EEG 001", # a channel close to the eye + threshold=1, # lower than the default threshold +) +ica.exclude = eog_components +report = mne.Report(title="ICA example") report.add_ica( ica=ica, + title="ICA cleaning", + picks=ica.exclude, # plot the excluded EOG components inst=raw, - title="ICA Components", eog_evoked=eog_epochs.average(), eog_scores=eog_scores, + n_jobs=None, # could be increased! ) - -""" -This section computes evoked responses (averaged brain activity) for auditory and -visual events and plots topographic maps. It also loads the noise covariance -matrix and any projectors. Together, these help evaluate data cleanliness and -prepare for source analysis. -""" - -cov = mne.read_cov(cov_fname) -evokeds = [epochs[k].average() for k in event_id] -report.add_evokeds( - evokeds, titles=list(event_id.keys()), noise_cov=cov, n_time_points=5 +report.save("report_ica.html", overwrite=True) + +# %% +# Adding MRI with BEM +# ^^^^^^^^^^^^^^^^^^^ +# +# MRI slices with superimposed traces of the boundary element model (BEM) +# surfaces can be added via :meth:`mne.Report.add_bem`. All you need to pass is +# the FreeSurfer subject name and subjects directory, and a title. To reduce +# the resulting file size, you may pass the ``decim`` parameter to only include +# every n-th volume slice, and ``width`` to specify the width of the resulting +# figures in pixels. + +report = mne.Report(title="BEM example") +report.add_bem( + subject="sample", + subjects_dir=subjects_dir, + title="MRI & BEM", + decim=40, + width=256, ) +report.save("report_mri_and_bem.html", overwrite=True) + +# %% +# Adding coregistration +# ^^^^^^^^^^^^^^^^^^^^^ +# +# The sensor alignment (``head -> mri`` transformation obtained by +# "coregistration") can be visualized via :meth:`mne.Report.add_trans`. The +# method expects the transformation either as a `~mne.transforms.Transform` +# object or as a path to a ``trans.fif`` file, the FreeSurfer subject name and +# subjects directory, and a title. The ``alpha`` parameter can be used to +# control the transparency of the head, where a value of 1 means fully opaque. + +trans_path = sample_dir / "sample_audvis_raw-trans.fif" + +report = mne.Report(title="Coregistration example") +report.add_trans( + trans=trans_path, + info=raw_path, + subject="sample", + subjects_dir=subjects_dir, + alpha=1.0, + title="Coregistration", +) +report.save("report_coregistration.html", overwrite=True) -common_chs = list(set(cov.ch_names).intersection(raw.ch_names)) -cov = cov.copy().pick_channels(common_chs) -report.add_covariance(cov=cov, info=raw.info, title="Noise Covariance") - -projs = mne.read_proj(proj_fname) -report.add_projs(info=raw, projs=projs, title="ECG Projectors") - -""" -Here we try adding anatomical elements like the MRI surfaces (BEM), -sensor-to-MRI coregistration, and the forward and inverse operators. These steps -link sensor data to the brain and are needed for source estimation. They are -wrapped in try/except so the script still runs even if anatomy files are -missing. -""" +# %% +# Adding a `~mne.Forward` solution +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# Forward solutions ("leadfields") can be added by passing a `~mne.Forward` +# object or the path to a forward solution stored on disk to +# meth:`mne.Report.add_forward`. -try: - report.add_bem(subject="sample", subjects_dir=subjects_dir, title="MRI & BEM") -except Exception: - print("BEM unavailable.") - -try: - report.add_trans( - trans=trans_fname, - info=raw, - subject="sample", - subjects_dir=subjects_dir, - title="Coregistration", - ) -except Exception: - print("Coreg unavailable.") - -try: - report.add_forward( - forward=fwd_fname, - title="Forward Solution", - plot=True, - subjects_dir=subjects_dir, - ) -except Exception: - print("Forward unavailable.") - -try: - report.add_inverse_operator( - inverse_operator=inv_fname, - title="Inverse Operator", - plot=True, - subjects_dir=subjects_dir, - ) -except Exception: - print("Inverse unavailable.") +fwd_path = sample_dir / "sample_audvis-meg-oct-6-fwd.fif" -""" -This part adds source-level brain activity snapshots to the report. STCs show -how brain signals map onto cortex over time, giving a deeper understanding of -neural responses beyond sensor space. -""" +report = mne.Report(title="Forward solution example") +report.add_forward( + forward=fwd_path, title="Forward solution", plot=True, subjects_dir=subjects_dir +) +report.save("report_forward_sol.html", overwrite=True) + +# %% +# Adding an `~mne.minimum_norm.InverseOperator` +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# An inverse operator can be added via :meth:`mne.Report.add_inverse_operator`. +# The method expects an `~mne.minimum_norm.InverseOperator` object or a path to +# one stored on disk, and a title. + +inverse_op_path = sample_dir / "sample_audvis-meg-oct-6-meg-inv.fif" + +report = mne.Report(title="Inverse operator example") +report.add_inverse_operator( + inverse_operator=inverse_op_path, + title="Inverse operator", + plot=True, + subjects_dir=subjects_dir, +) +report.save("report_inverse_op.html", overwrite=True) + +# %% +# Adding a `~mne.SourceEstimate` +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# An inverse solution (also called source estimate or source time course, STC) +# can be added via :meth:`mne.Report.add_stc`. The +# method expects an `~mne.SourceEstimate`, the corresponding FreeSurfer subject +# name and subjects directory, and a title. By default, it will produce +# snapshots at 51 equally-spaced time points (or fewer, if the data contains +# fewer time points). We can adjust this via the ``n_time_points`` parameter. + +stc_path = sample_dir / "sample_audvis-meg" + +report = mne.Report(title="Source estimate example") +report.add_stc( + stc=stc_path, + subject="sample", + subjects_dir=subjects_dir, + title="Source estimate", + n_time_points=2, # few for speed +) +report.save("report_inverse_sol.html", overwrite=True) + +# %% +# Adding source code (e.g., a Python script) +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# It is possible to add code or scripts (e.g., the scripts you used for +# analysis) to the report via :meth:`mne.Report.add_code`. The code blocks will +# be automatically syntax-highlighted. You may pass a string with the +# respective code snippet, or the path to a file. If you pass a path, it +# **must** be a `pathlib.Path` object (and not a string), otherwise it will be +# treated as a code literal. +# +# Optionally, you can specify which programming language to assume for syntax +# highlighting by passing the ``language`` parameter. By default, we'll assume +# the provided code is Python. + +mne_init_py_path = Path(mne.__file__) # __init__.py in the MNE-Python root +mne_init_py_content = mne_init_py_path.read_text(encoding="utf-8") + +report = mne.Report(title="Code example") +report.add_code(code=mne_init_py_path, title="Code from Path") +report.add_code(code=mne_init_py_content, title="Code from string") + +report.save("report_code.html", overwrite=True) + +# %% +# Adding custom figures +# ^^^^^^^^^^^^^^^^^^^^^ +# +# Custom Matplotlib figures can be added via :meth:`~mne.Report.add_figure`. +# Required parameters are the figure and a title. Optionally, may add a caption +# to appear below the figure. You can also specify the image format of the +# image file that will be generated from the figure, so it can be embedded in +# the HTML report. + +x = np.linspace(start=0, stop=10, num=100) +y = x**2 + +fig, ax = plt.subplots() +ax.plot(x, y, ls="--", lw=2, color="blue", label="my function") +ax.set_xlabel("x") +ax.set_ylabel("f(x)") +ax.legend() + +report = mne.Report(title="Figure example") +report.add_figure( + fig=fig, + title="A custom figure", + caption="A blue dashed line reaches up into the sky …", + image_format="PNG", +) +report.save("report_custom_figure.html", overwrite=True) +plt.close(fig) -try: - stc_path = sample_dir / "sample_audvis-meg" - report.add_stc( - stc=stc_path, - subject="sample", - subjects_dir=subjects_dir, - title="Source Estimate", - n_time_points=2, +# %% +# Multiple figures can be grouped into a single section via the ``section`` +# parameter. + +fig_1, ax_1 = plt.subplots() +ax_1.plot([1, 2, 3]) + +fig_2, ax_2 = plt.subplots() +ax_2.plot([3, 2, 1]) + +section = "Section example" + +report = mne.Report(title="Figure section example") +report.add_figure(fig=fig_1, title="Figure 1", section=section, tags="fig-1") +report.add_figure(fig=fig_2, title="Figure 2", section=section, tags="fig-2") +report.save("report_custom_figure_sections.html", overwrite=True) +plt.close(fig_1) +plt.close(fig_2) + +# %% +# The :meth:`mne.Report.add_figure` method can also add multiple figures at +# once. In this case, a slider will appear, allowing users to intuitively +# browse the figures. To make this work, you need to provide a collection o +# figures, a title, and optionally a collection of captions. +# +# In the following example, we will read the MNE logo as a Matplotlib figure +# and rotate it with different angles. Each rotated figure and its respective +# caption will be added to a list, which is then used to create the slider. + +mne_logo_path = Path(mne.__file__).parent / "icons" / "mne_icon-cropped.png" +fig_array = plt.imread(mne_logo_path) +rotation_angles = np.linspace(start=0, stop=360, num=8, endpoint=False) + +figs = [] +captions = [] +for angle in rotation_angles: + # Rotate and remove some rounding errors to avoid Matplotlib warnings + fig_array_rotated = scipy.ndimage.rotate(input=fig_array, angle=angle) + fig_array_rotated = fig_array_rotated.clip(min=0, max=1) + + # Create the figure + fig, ax = plt.subplots(figsize=(3, 3), layout="constrained") + ax.imshow(fig_array_rotated) + ax.set_axis_off() + + # Store figure and caption + figs.append(fig) + captions.append(f"Rotation angle: {round(angle, 1)}°") + +report = mne.Report(title="Multiple figures example") +report.add_figure(fig=figs, title="Fun with figures! 🥳", caption=captions) +report.save("report_custom_figures.html", overwrite=True) +for fig in figs: + plt.close(fig) +del figs + +# %% +# Adding image files +# ^^^^^^^^^^^^^^^^^^ +# +# Existing images (e.g., photos, screenshots, sketches etc.) can be added +# to the report via :meth:`mne.Report.add_image`. Supported image formats +# include JPEG, PNG, GIF, and SVG (and possibly others). Like with Matplotlib +# figures, you can specify a caption to appear below the image. + +report = mne.Report(title="Image example") +report.add_image( + image=mne_logo_path, title="MNE", caption="Powered by 🧠 🧠 🧠 around the world!" +) +report.save("report_custom_image.html", overwrite=True) + +# %% +# Working with tags +# ^^^^^^^^^^^^^^^^^ +# +# Each ``add_*`` method accepts a keyword parameter ``tags``, which can be +# used to pass one or more tags to associate with the respective content +# elements. By default, each ``add_*`` method adds a tag describing the data +# type, e.g., ``evoked`` or ``source-estimate``. When viewing the HTML report, +# the ``Filter by tags`` dropdown menu can be used to interactively show or +# hide content with specific tags. This allows you e.g. to only view +# ``evoked`` or ``participant-001`` data, should you have added those tags. +# Visible tags will appear with blue, and hidden tags with gray background +# color. +# +# To toggle the visibility of **all** tags, use the respective checkbox in the +# ``Filter by tags`` dropdown menu, or press :kbd:`T`. + +report = mne.Report(title="Tags example") +report.add_image( + image=mne_logo_path, + title="MNE Logo", + tags=("image", "mne", "logo", "open-source"), +) +report.save("report_tags.html", overwrite=True) + +# %% +# Editing a saved report +# ^^^^^^^^^^^^^^^^^^^^^^ +# +# Saving to HTML is a write-only operation, meaning that we cannot read an +# ``.html`` file back as a :class:`~mne.Report` object. In order to be able +# to edit a report once it's no longer in-memory in an active Python session, +# save it as an HDF5 file instead of HTML: + +report = mne.Report(title="Saved report example", verbose=True) +report.add_image(image=mne_logo_path, title="MNE 1") +report.save("report_partial.hdf5", overwrite=True) + +# %% +# The saved report can be read back and modified or amended. This allows the +# possibility to e.g. run multiple scripts in a processing pipeline, where each +# script adds new content to an existing report. + +report_from_disk = mne.open_report("report_partial.hdf5") +report_from_disk.add_image(image=mne_logo_path, title="MNE 2") +report_from_disk.save("report_partial.hdf5", overwrite=True) + +# %% +# To make this even easier, :class:`mne.Report` can be used as a +# context manager (note the ``with`` statement)`): + +with mne.open_report("report_partial.hdf5") as report: + report.add_image(image=mne_logo_path, title="MNE 3") + report.save("report_final.html", overwrite=True) + +# %% +# With the context manager, the updated report is also automatically saved +# back to :file:`report.h5` upon leaving the block. +# +# Adding an entire folder of files +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# We also provide a way to add an entire **folder** of files to the report at +# once, without having to invoke the individual ``add_*`` methods outlined +# above for each file. This approach, while convenient, provides less +# flexibility with respect to content ordering, tags, titles, etc. +# +# Before getting started with :class:`mne.Report`, make sure the files you want +# to render follow the filename conventions defined by MNE: +# +# .. cssclass:: table-bordered +# .. rst-class:: midvalign +# +# =================================== ========================================= +# Data object Filename convention (ends with) +# =================================== ========================================= +# `~mne.io.Raw` ``-raw.fif(.gz)``, ``-raw_sss.fif(.gz)``, +# ``-raw_tsss.fif(.gz)``, +# ``_meg.fif(.gz)``, ``_eeg.fif(.gz)``, +# ``_ieeg.fif(.gz)`` +# events ``-eve.fif(.gz)`` +# `~mne.Epochs` ``-epo.fif(.gz)`` +# `~mne.Evoked` ``-ave.fif(.gz)`` +# `~mne.Covariance` ``-cov.fif(.gz)`` +# `~mne.Projection` ``-proj.fif(.gz)`` +# `~mne.transforms.Transform` ``-trans.fif(.gz)`` +# `~mne.Forward` ``-fwd.fif(.gz)`` +# `~mne.minimum_norm.InverseOperator` ``-inv.fif(.gz)`` +# `~mne.SourceEstimate` ``-lh.stc``, ``-rh.stc`` +# =================================== ========================================= +# +# Alternatively, the dash ``-`` in the filename may be replaced with an +# underscore ``_`` (except for the ``.stc`` files). +# +# For our first example, we'll generate a barebones report for all the +# :file:`.fif` files containing raw data in the sample dataset, by passing the +# pattern ``*raw.fif`` to :meth:`~mne.Report.parse_folder`. We'll omit the +# ``subject`` and ``subjects_dir`` parameters from the :class:`~mne.Report` +# constructor, but we'll also pass ``render_bem=False`` to the +# :meth:`~mne.Report.parse_folder` method — otherwise we would get a warning +# about not being able to render MRI and ``trans`` files without knowing the +# subject. To save some processing time in this tutorial, we're also going to +# disable rendering of the butterfly plots for the `~mne.io.Raw` data by +# passing ``raw_butterfly=False``. +# +# Which files are included depends on both the ``pattern`` parameter passed to +# :meth:`~mne.Report.parse_folder` and also the ``subject`` and +# ``subjects_dir`` parameters provided to the :class:`~mne.Report` constructor. + +report = mne.Report(title="parse_folder example") +report.parse_folder( + data_path=data_path, pattern="*raw.fif", render_bem=False, raw_butterfly=False +) +report.save("report_parse_folder_basic.html", overwrite=True) + +# %% +# By default, the power spectral density and SSP projectors of the +# :class:`~mne.io.Raw` files are not shown to speed up report generation. You +# can add them by passing ``raw_psd=True`` and ``projs=True`` to the +# :class:`~mne.Report` constructor. Like in the previous example, we're going +# to omit the butterfly plots by passing ``raw_butterfly=False``. Lastly, let's +# also refine our pattern to select only the filtered raw recording (omitting +# the unfiltered data and the empty-room noise recordings). + +pattern = "sample_audvis_filt-0-40_raw.fif" +report = mne.Report(title="parse_folder example 2", raw_psd=True, projs=True) +report.parse_folder( + data_path=data_path, pattern=pattern, render_bem=False, raw_butterfly=False +) +report.save("report_parse_folder_raw_psd_projs.html", overwrite=True) + +# %% +# This time we'll pass a specific ``subject`` and ``subjects_dir`` (even though +# there's only one subject in the sample dataset) and remove our +# ``render_bem=False`` parameter so we can see the MRI slices, with BEM +# contours overlaid on top if available. Since this is computationally +# expensive, we'll also pass the ``mri_decim`` parameter for the benefit of our +# documentation servers, and skip processing the :file:`.fif` files. + +report = mne.Report( + title="parse_folder example 3", subject="sample", subjects_dir=subjects_dir +) +report.parse_folder(data_path=data_path, pattern="", mri_decim=40) +report.save("report_parse_folder_mri_bem.html", overwrite=True) + +# %% +# Now let's look at how :class:`~mne.Report` handles :class:`~mne.Evoked` +# data (we will skip the MRIs to save computation time). +# +# The MNE sample dataset we're using in this example has **not** been +# baseline-corrected; so let's apply baseline correction this now for the +# report! +# +# To request baseline correction, pass a ``baseline`` argument to +# `~mne.Report`, which should be a tuple with the starting and ending time of +# the baseline period. For more details, see the documentation on +# `~mne.Evoked.apply_baseline`. Here, we will apply baseline correction for a +# baseline period from the beginning of the time interval to time point zero. +# +# Lastly, we want to render the "whitened" evoked data, too. Whitening +# requires us to specify the path to a covariance matrix file via the +# ``cov_fname`` parameter of `~mne.Report`. +# +# Now, let's put all of this together! Here we use a temporary directory +# for speed so we can render a single Evoked instance, using just EEG +# channels. + +baseline = (None, 0) +cov_fname = sample_dir / "sample_audvis-cov.fif" +pattern = "sample_audvis-ave.fif" +evoked = mne.read_evokeds(sample_dir / pattern)[0].pick("eeg").decimate(4) +report = mne.Report( + title="parse_folder example 4", baseline=baseline, cov_fname=cov_fname +) +with tempfile.TemporaryDirectory() as path: + evoked.save(Path(path) / pattern) + report.parse_folder( + path, pattern=pattern, render_bem=False, n_time_points_evokeds=5 ) -except Exception: - print("STC unavailable.") - -""" -A small HTML block is added to show that reports can include instructions, -interpretations, or descriptive text. This is useful for documentation, -explaining results, or guiding collaborators. -""" - -html = """ -