From c037b5cced78cf2bee23ec6be7c78e580c4b9235 Mon Sep 17 00:00:00 2001 From: nordme Date: Mon, 9 Feb 2026 23:24:07 -0800 Subject: [PATCH 1/9] add defacing how-to example --- examples/forward/deface_dig_and_mri.py | 94 ++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 examples/forward/deface_dig_and_mri.py diff --git a/examples/forward/deface_dig_and_mri.py b/examples/forward/deface_dig_and_mri.py new file mode 100644 index 00000000000..be6e9339b1b --- /dev/null +++ b/examples/forward/deface_dig_and_mri.py @@ -0,0 +1,94 @@ +""" +.. _deface-dig-and-mri: + +================================================ +Deface MRI and MEG data for identity protection +================================================ + +Because facial information can be identifying, subject privacy can be protected +by removing facial information in MEG and MRI data before data sharing. + +To learn more about coordinate frames, see :ref:`tut-source-alignment`. +""" + +import nibabel as nib +import numpy as np +from scipy import linalg + +import mne +from mne.io.constants import FIFF + +data_path = mne.datasets.sample.data_path() +subjects_dir = data_path / "subjects" +raw_fname = data_path / "MEG" / "sample" / "sample_audvis_raw.fif" +trans_fname = data_path / "MEG" / "sample" / "sample_audvis_raw-trans.fif" +raw = mne.io.read_raw_fif(raw_fname) +trans = mne.read_trans(trans_fname) +src = mne.read_source_spaces(subjects_dir / "sample" / "bem" / "sample-oct-6-src.fif") + +# Load the T1 file and change the header information to the correct units +t1w = nib.load(data_path / "subjects" / "sample" / "mri" / "T1.mgz") +t1w = nib.Nifti1Image(t1w.dataobj, t1w.affine) +t1w.header["xyzt_units"] = np.array(10, dtype="uint8") +t1_mgh = nib.MGHImage(t1w.dataobj, t1w.affine) + + +def apply_smoothing(points, tris): + # TO DO: implement simple smoothing step + out_points = points + out_tris = tris + return out_points, out_tris + + +def add_head(renderer, points, color, opacity=0.95): + renderer.mesh(*points.T, triangles=seghead_tri, color=color, opacity=opacity) + + +# Smooth MRI +# The head surface is stored in "mri" coordinate frame +# (origin at center of volume, units=mm) +seghead_rr, seghead_tri = mne.read_surface( + subjects_dir / "sample" / "surf" / "lh.seghead" +) + +smooth_rr, smooth_tri = apply_smoothing(seghead_rr, seghead_tri) + +# The "mri_voxel"→"mri" transform is embedded in the header of the T1 image +# file. We'll invert it and then apply it to the original `seghead_rr` points. +# No unit conversion necessary: this transform expects mm and the scalp surface +# is defined in mm. +vox_to_mri = t1_mgh.header.get_vox2ras_tkr() +mri_to_vox = linalg.inv(vox_to_mri) +scalp_points_in_vox = mne.transforms.apply_trans(mri_to_vox, smooth_rr, move=True) + +# Get the nasion: +nasion = [ + p + for p in raw.info["dig"] + if p["kind"] == FIFF.FIFFV_POINT_CARDINAL and p["ident"] == FIFF.FIFFV_POINT_NASION +][0] +assert nasion["coord_frame"] == FIFF.FIFFV_COORD_HEAD +nasion = nasion["r"] # get just the XYZ values +smooth_nasion, _ = apply_smoothing(nasion, None) + +# Transform it from head to MRI space (recall that `trans` is head → mri) +nasion_mri = mne.transforms.apply_trans(trans, smooth_nasion, move=True) +# Then transform to voxel space, after converting from meters to millimeters +nasion_vox = mne.transforms.apply_trans(mri_to_vox, nasion_mri * 1e3, move=True) + + +# Plot smoothed results to make sure the transforms worked +renderer = mne.viz.backends.renderer.create_3d_figure( + size=(400, 400), bgcolor="w", scene=False +) +add_head(renderer, scalp_points_in_vox, "green", opacity=1) +# plot nasion location +renderer.sphere(center=nasion_vox, color="orange", scale=10) +mne.viz.set_3d_view( + figure=renderer.figure, + distance=600.0, + focalpoint=(0.0, 125.0, 250.0), + elevation=45, + azimuth=180, +) +renderer.show() From 57bdf5ae36191eb3a6deb0144778918fcf664514 Mon Sep 17 00:00:00 2001 From: nordme Date: Mon, 23 Feb 2026 02:32:22 -0800 Subject: [PATCH 2/9] add smoothing --- examples/forward/deface_dig_and_mri.py | 105 +++++++++++++++++++------ 1 file changed, 79 insertions(+), 26 deletions(-) diff --git a/examples/forward/deface_dig_and_mri.py b/examples/forward/deface_dig_and_mri.py index be6e9339b1b..a297fe99436 100644 --- a/examples/forward/deface_dig_and_mri.py +++ b/examples/forward/deface_dig_and_mri.py @@ -5,14 +5,16 @@ Deface MRI and MEG data for identity protection ================================================ -Because facial information can be identifying, subject privacy can be protected -by removing facial information in MEG and MRI data before data sharing. +Because facial information can be identifying, it is sometimes necessary to +clean MEG and MRI data of facial detail. This example shows how to do deface +MRI and MEG data without altering head volume or coregistration. To learn more about coordinate frames, see :ref:`tut-source-alignment`. """ import nibabel as nib import numpy as np +from pyvista import PolyData from scipy import linalg import mne @@ -34,14 +36,21 @@ def apply_smoothing(points, tris): - # TO DO: implement simple smoothing step - out_points = points - out_tris = tris + surf = PolyData.from_regular_faces(points, tris) + # taubin smoothing conserves volume + smooth_surf = surf.smooth_taubin(n_iter=10, pass_band=0.05) + out_points = smooth_surf.points + out_tris = smooth_surf.faces return out_points, out_tris -def add_head(renderer, points, color, opacity=0.95): - renderer.mesh(*points.T, triangles=seghead_tri, color=color, opacity=opacity) +def smooth_digitization(dig_p): + out_dig = dig_p + return out_dig + + +def add_head(renderer, points, tris, color, opacity=0.95): + renderer.mesh(*points.T, triangles=tris, color=color, opacity=opacity) # Smooth MRI @@ -51,39 +60,83 @@ def add_head(renderer, points, color, opacity=0.95): subjects_dir / "sample" / "surf" / "lh.seghead" ) -smooth_rr, smooth_tri = apply_smoothing(seghead_rr, seghead_tri) - # The "mri_voxel"→"mri" transform is embedded in the header of the T1 image # file. We'll invert it and then apply it to the original `seghead_rr` points. # No unit conversion necessary: this transform expects mm and the scalp surface # is defined in mm. vox_to_mri = t1_mgh.header.get_vox2ras_tkr() mri_to_vox = linalg.inv(vox_to_mri) -scalp_points_in_vox = mne.transforms.apply_trans(mri_to_vox, smooth_rr, move=True) +scalp_points_in_vox = mne.transforms.apply_trans(mri_to_vox, seghead_rr, move=True) + + +# Get fiducial points and extras: +# "r" selects just the XYZ values +fids = [p["r"] for p in raw.info["dig"] if p["kind"] == FIFF.FIFFV_POINT_CARDINAL] +assert raw.info["dig"][0]["coord_frame"] == FIFF.FIFFV_COORD_HEAD +extra = [e["r"] for e in raw.info["dig"] if e["kind"] == FIFF.FIFFV_POINT_EXTRA] + +dig_points = fids + extra +for dpi, dp in enumerate(dig_points): + # Transform it from head to MRI space (recall that `trans` is head → mri) + trans_dp = mne.transforms.apply_trans(trans, dp, move=True) + # Then transform to voxel space, after converting from meters to millimeters + dig_points[dpi] = mne.transforms.apply_trans(mri_to_vox, trans_dp * 1e3, move=True) + +dig_points = np.array(dig_points) + +# smooth the whole head + +smooth_scalp_points, smooth_scalp_tris = apply_smoothing( + scalp_points_in_vox, seghead_tri +) -# Get the nasion: -nasion = [ - p - for p in raw.info["dig"] - if p["kind"] == FIFF.FIFFV_POINT_CARDINAL and p["ident"] == FIFF.FIFFV_POINT_NASION -][0] -assert nasion["coord_frame"] == FIFF.FIFFV_COORD_HEAD -nasion = nasion["r"] # get just the XYZ values -smooth_nasion, _ = apply_smoothing(nasion, None) +# choose facial points from smooth head +fid_y = np.mean([dig_points[0, 1], dig_points[2, 1]]) +nasion_z = dig_points[1, 2] -# Transform it from head to MRI space (recall that `trans` is head → mri) -nasion_mri = mne.transforms.apply_trans(trans, smooth_nasion, move=True) -# Then transform to voxel space, after converting from meters to millimeters -nasion_vox = mne.transforms.apply_trans(mri_to_vox, nasion_mri * 1e3, move=True) +ahead_of_ears = scalp_points_in_vox[:, 1] > fid_y +under_eyebrows = scalp_points_in_vox[:, 2] < nasion_z + 5 +idxs_to_smooth = np.where(ahead_of_ears & under_eyebrows)[0] +# tri_mask = np.isin(seghead_tri, idxs_to_smooth).any(axis=1) +tris_to_smooth = np.isin(seghead_tri, idxs_to_smooth).all(axis=1) + + +# choose dig to smooth +dig_ahead_of_ears = dig_points[:, 1] > fid_y +dig_under_brows = dig_points[:, 2] < nasion_z + 5 +dig_to_smooth = np.where(dig_ahead_of_ears & dig_under_brows)[0] + +smooth_dig = smooth_digitization(dig_points[dig_to_smooth]) # Plot smoothed results to make sure the transforms worked renderer = mne.viz.backends.renderer.create_3d_figure( size=(400, 400), bgcolor="w", scene=False ) -add_head(renderer, scalp_points_in_vox, "green", opacity=1) -# plot nasion location -renderer.sphere(center=nasion_vox, color="orange", scale=10) + +original_head_surf = scalp_points_in_vox.copy() + +defaced_surf = scalp_points_in_vox.copy() +defaced_surf[idxs_to_smooth, :] = smooth_scalp_points[idxs_to_smooth, :] +defaced_tri = seghead_tri.copy() +defaced_tri[tris_to_smooth, :] = smooth_scalp_tris[tris_to_smooth, :] + +defaced_dig = dig_points.copy() +defaced_dig[dig_to_smooth] = smooth_dig + +# plot original head surface in grey +# add_head(renderer, original_head_surf, seghead_tri, "grey", opacity=0.4) + +add_head(renderer, defaced_surf, defaced_tri, "green", opacity=0.4) + +# plot fiducials +renderer.sphere(center=defaced_dig[0], color="orange", scale=10) +renderer.sphere(center=defaced_dig[1], color="orange", scale=10) +renderer.sphere(center=defaced_dig[2], color="orange", scale=10) +# plot dig points +for sd in defaced_dig[3:]: + renderer.sphere(center=sd, color="red", scale=3) +# show the plot mne.viz.set_3d_view( figure=renderer.figure, distance=600.0, From 7551250c91e4577b93f1f506ef47f5b867c3f1f3 Mon Sep 17 00:00:00 2001 From: nordme Date: Tue, 24 Feb 2026 00:45:12 -0800 Subject: [PATCH 3/9] fix face selection --- examples/forward/deface_dig_and_mri.py | 44 ++++++++++++++++---------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/examples/forward/deface_dig_and_mri.py b/examples/forward/deface_dig_and_mri.py index a297fe99436..59f3699b629 100644 --- a/examples/forward/deface_dig_and_mri.py +++ b/examples/forward/deface_dig_and_mri.py @@ -14,7 +14,7 @@ import nibabel as nib import numpy as np -from pyvista import PolyData +from pyvista import Plotter, PolyData from scipy import linalg import mne @@ -37,11 +37,11 @@ def apply_smoothing(points, tris): surf = PolyData.from_regular_faces(points, tris) - # taubin smoothing conserves volume - smooth_surf = surf.smooth_taubin(n_iter=10, pass_band=0.05) + surf.clean() + # taubin smoothing conserves volume and triangle face relationships + smooth_surf = surf.smooth_taubin(n_iter=1000, pass_band=0.0005) out_points = smooth_surf.points - out_tris = smooth_surf.faces - return out_points, out_tris + return out_points def smooth_digitization(dig_p): @@ -86,21 +86,35 @@ def add_head(renderer, points, tris, color, opacity=0.95): # smooth the whole head -smooth_scalp_points, smooth_scalp_tris = apply_smoothing( - scalp_points_in_vox, seghead_tri -) +smooth_scalp_points = apply_smoothing(scalp_points_in_vox, seghead_tri) # choose facial points from smooth head -fid_y = np.mean([dig_points[0, 1], dig_points[2, 1]]) -nasion_z = dig_points[1, 2] +# voxel points are in x, z, y +fid_y = np.mean([dig_points[0, 2], dig_points[2, 2]]) +nasion_z = dig_points[1, 1] -ahead_of_ears = scalp_points_in_vox[:, 1] > fid_y -under_eyebrows = scalp_points_in_vox[:, 2] < nasion_z + 5 +ahead_of_ears = scalp_points_in_vox[:, 2] > fid_y +under_eyebrows = scalp_points_in_vox[:, 1] > nasion_z - 25 idxs_to_smooth = np.where(ahead_of_ears & under_eyebrows)[0] -# tri_mask = np.isin(seghead_tri, idxs_to_smooth).any(axis=1) tris_to_smooth = np.isin(seghead_tri, idxs_to_smooth).all(axis=1) +preview = Plotter() + +preview.add_mesh( + scalp_points_in_vox[idxs_to_smooth, :], + color="red", + render_points_as_spheres=True, + point_size=2, +) + +preview.add_mesh( + smooth_scalp_points[idxs_to_smooth, :], + color="blue", + render_points_as_spheres=True, + point_size=2, +) +preview.show() # choose dig to smooth dig_ahead_of_ears = dig_points[:, 1] > fid_y @@ -118,8 +132,6 @@ def add_head(renderer, points, tris, color, opacity=0.95): defaced_surf = scalp_points_in_vox.copy() defaced_surf[idxs_to_smooth, :] = smooth_scalp_points[idxs_to_smooth, :] -defaced_tri = seghead_tri.copy() -defaced_tri[tris_to_smooth, :] = smooth_scalp_tris[tris_to_smooth, :] defaced_dig = dig_points.copy() defaced_dig[dig_to_smooth] = smooth_dig @@ -127,7 +139,7 @@ def add_head(renderer, points, tris, color, opacity=0.95): # plot original head surface in grey # add_head(renderer, original_head_surf, seghead_tri, "grey", opacity=0.4) -add_head(renderer, defaced_surf, defaced_tri, "green", opacity=0.4) +add_head(renderer, defaced_surf, seghead_tri, "green", opacity=0.4) # plot fiducials renderer.sphere(center=defaced_dig[0], color="orange", scale=10) From fb38a4b30a892a3f02fc893d1fb6b3a56fc31bbc Mon Sep 17 00:00:00 2001 From: nordme Date: Tue, 24 Feb 2026 15:37:35 -0800 Subject: [PATCH 4/9] dig smoothing --- examples/forward/deface_dig_and_mri.py | 35 +++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/examples/forward/deface_dig_and_mri.py b/examples/forward/deface_dig_and_mri.py index 59f3699b629..a3f15f50028 100644 --- a/examples/forward/deface_dig_and_mri.py +++ b/examples/forward/deface_dig_and_mri.py @@ -16,6 +16,7 @@ import numpy as np from pyvista import Plotter, PolyData from scipy import linalg +from scipy.spatial.distance import cdist import mne from mne.io.constants import FIFF @@ -44,8 +45,13 @@ def apply_smoothing(points, tris): return out_points -def smooth_digitization(dig_p): - out_dig = dig_p +def smooth_digitization(dig_p, orig_scalp, smooth_scalp): + out_dig = dig_p.copy() + all_dists = cdist(dig_p, orig_scalp) + closest_point_idxs = all_dists.argmin(axis=1) + diffs = orig_scalp[closest_point_idxs, :] - smooth_scalp[closest_point_idxs, :] + for ppi, pp in enumerate(dig_p): + out_dig[ppi] = pp - diffs[ppi] return out_dig @@ -93,16 +99,28 @@ def add_head(renderer, points, tris, color, opacity=0.95): fid_y = np.mean([dig_points[0, 2], dig_points[2, 2]]) nasion_z = dig_points[1, 1] -ahead_of_ears = scalp_points_in_vox[:, 2] > fid_y -under_eyebrows = scalp_points_in_vox[:, 1] > nasion_z - 25 +ahead_of_ears = scalp_points_in_vox[:, 2] > fid_y + 10 +under_eyebrows = scalp_points_in_vox[:, 1] > nasion_z - 15 idxs_to_smooth = np.where(ahead_of_ears & under_eyebrows)[0] tris_to_smooth = np.isin(seghead_tri, idxs_to_smooth).all(axis=1) +# choose dig to smooth +# dig_ahead_of_ears = dig_points[:, 1] > fid_y +# dig_under_brows = dig_points[:, 2] < nasion_z + 5 +dig_ahead_of_ears = dig_points[:, 2] > fid_y + 10 +dig_under_brows = dig_points[:, 1] > nasion_z - 15 +dig_to_smooth = np.where(dig_ahead_of_ears & dig_under_brows)[0] + +smooth_dig = smooth_digitization( + dig_points[dig_to_smooth], scalp_points_in_vox, smooth_scalp_points +) + +# preview the smoothed face and facial dig points preview = Plotter() preview.add_mesh( - scalp_points_in_vox[idxs_to_smooth, :], + smooth_dig, color="red", render_points_as_spheres=True, point_size=2, @@ -116,13 +134,6 @@ def add_head(renderer, points, tris, color, opacity=0.95): ) preview.show() -# choose dig to smooth -dig_ahead_of_ears = dig_points[:, 1] > fid_y -dig_under_brows = dig_points[:, 2] < nasion_z + 5 -dig_to_smooth = np.where(dig_ahead_of_ears & dig_under_brows)[0] - -smooth_dig = smooth_digitization(dig_points[dig_to_smooth]) - # Plot smoothed results to make sure the transforms worked renderer = mne.viz.backends.renderer.create_3d_figure( size=(400, 400), bgcolor="w", scene=False From a200217ea8fdce5f16c01ca8237d62a24ebef9f0 Mon Sep 17 00:00:00 2001 From: nordme Date: Wed, 25 Feb 2026 01:28:09 -0800 Subject: [PATCH 5/9] edits --- examples/forward/deface_dig_and_mri.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/forward/deface_dig_and_mri.py b/examples/forward/deface_dig_and_mri.py index a3f15f50028..9c195013ce9 100644 --- a/examples/forward/deface_dig_and_mri.py +++ b/examples/forward/deface_dig_and_mri.py @@ -6,7 +6,7 @@ ================================================ Because facial information can be identifying, it is sometimes necessary to -clean MEG and MRI data of facial detail. This example shows how to do deface +obscure facial detail in MEG and MRI data. This example shows how to do deface MRI and MEG data without altering head volume or coregistration. To learn more about coordinate frames, see :ref:`tut-source-alignment`. @@ -94,8 +94,11 @@ def add_head(renderer, points, tris, color, opacity=0.95): smooth_scalp_points = apply_smoothing(scalp_points_in_vox, seghead_tri) +# The voxel frame origin is located at the top right corner behind the +# subject's head with coordinates in the following order: +# right-to-left axis, superior-to-inferior axis, posterior-to-anterior axis. # choose facial points from smooth head -# voxel points are in x, z, y + fid_y = np.mean([dig_points[0, 2], dig_points[2, 2]]) nasion_z = dig_points[1, 1] @@ -106,8 +109,6 @@ def add_head(renderer, points, tris, color, opacity=0.95): tris_to_smooth = np.isin(seghead_tri, idxs_to_smooth).all(axis=1) # choose dig to smooth -# dig_ahead_of_ears = dig_points[:, 1] > fid_y -# dig_under_brows = dig_points[:, 2] < nasion_z + 5 dig_ahead_of_ears = dig_points[:, 2] > fid_y + 10 dig_under_brows = dig_points[:, 1] > nasion_z - 15 dig_to_smooth = np.where(dig_ahead_of_ears & dig_under_brows)[0] @@ -116,14 +117,14 @@ def add_head(renderer, points, tris, color, opacity=0.95): dig_points[dig_to_smooth], scalp_points_in_vox, smooth_scalp_points ) -# preview the smoothed face and facial dig points +# preview point selection from face and facial dig preview = Plotter() preview.add_mesh( smooth_dig, color="red", render_points_as_spheres=True, - point_size=2, + point_size=8, ) preview.add_mesh( @@ -133,6 +134,7 @@ def add_head(renderer, points, tris, color, opacity=0.95): point_size=2, ) preview.show() +preview.close() # Plot smoothed results to make sure the transforms worked renderer = mne.viz.backends.renderer.create_3d_figure( @@ -148,9 +150,9 @@ def add_head(renderer, points, tris, color, opacity=0.95): defaced_dig[dig_to_smooth] = smooth_dig # plot original head surface in grey -# add_head(renderer, original_head_surf, seghead_tri, "grey", opacity=0.4) +add_head(renderer, original_head_surf, seghead_tri, "grey", opacity=0.3) -add_head(renderer, defaced_surf, seghead_tri, "green", opacity=0.4) +add_head(renderer, defaced_surf, seghead_tri, "green", opacity=0.5) # plot fiducials renderer.sphere(center=defaced_dig[0], color="orange", scale=10) From 23004ceb6cb9b0c2bae513c577118fff7700d365 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:39:12 +0000 Subject: [PATCH 6/9] [autofix.ci] apply automated fixes --- examples/forward/deface_dig_and_mri.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/forward/deface_dig_and_mri.py b/examples/forward/deface_dig_and_mri.py index 9c195013ce9..e7445111ba5 100644 --- a/examples/forward/deface_dig_and_mri.py +++ b/examples/forward/deface_dig_and_mri.py @@ -12,6 +12,10 @@ To learn more about coordinate frames, see :ref:`tut-source-alignment`. """ +# Authors: The MNE-Python contributors. +# License: BSD-3-Clause +# Copyright the MNE-Python contributors. + import nibabel as nib import numpy as np from pyvista import Plotter, PolyData From 396a1c99db62390eedceff92e286f7bad72e8db5 Mon Sep 17 00:00:00 2001 From: Aniket <148300120+Aniketsy@users.noreply.github.com> Date: Wed, 25 Feb 2026 23:51:42 +0530 Subject: [PATCH 7/9] Doc- clarify return types as instance of original type (#13674) Co-authored-by: Marijn van Vliet --- doc/changes/dev/13674.other.rst | 1 + doc/conf.py | 5 +++++ mne/_fiff/meas_info.py | 12 +++++------ mne/_fiff/proj.py | 6 +++--- mne/_fiff/reference.py | 6 +++--- mne/channels/channels.py | 22 ++++++++++---------- mne/filter.py | 6 +++--- mne/io/base.py | 4 ++-- mne/preprocessing/_csd.py | 2 +- mne/preprocessing/_regress.py | 2 +- mne/preprocessing/eyetracking/eyetracking.py | 4 ++-- mne/preprocessing/ica.py | 4 ++-- mne/preprocessing/interpolate.py | 2 +- mne/preprocessing/stim.py | 2 +- mne/simulation/evoked.py | 2 +- mne/utils/mixin.py | 2 +- 16 files changed, 44 insertions(+), 38 deletions(-) create mode 100644 doc/changes/dev/13674.other.rst diff --git a/doc/changes/dev/13674.other.rst b/doc/changes/dev/13674.other.rst new file mode 100644 index 00000000000..576f70dcf57 --- /dev/null +++ b/doc/changes/dev/13674.other.rst @@ -0,0 +1 @@ +Improve documentation of return values to clarify that methods typically return the original instance type for chaining purposes, by `Aniket Singh Yadav`_. diff --git a/doc/conf.py b/doc/conf.py index 126d8f365a1..2fc68dca974 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -318,13 +318,18 @@ numpydoc_xref_ignore = { # words "and", + "as", "between", + "data", "instance", "instances", + "input", "of", "default", + "same", "shape", "or", + "the", "with", "length", "pair", diff --git a/mne/_fiff/meas_info.py b/mne/_fiff/meas_info.py index 92a4cf58531..fbb602caf2f 100644 --- a/mne/_fiff/meas_info.py +++ b/mne/_fiff/meas_info.py @@ -397,7 +397,7 @@ def set_montage( Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The instance, modified in-place. See Also @@ -539,7 +539,7 @@ def set_channel_types(self, mapping, *, on_unit_change="warn", verbose=None): Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The instance (modified in place). .. versionchanged:: 0.20 @@ -642,7 +642,7 @@ def rename_channels( Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The instance (modified in place). .. versionchanged:: 0.20 @@ -787,7 +787,7 @@ def anonymize(self, daysback=None, keep_his=False, verbose=None): Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The modified instance. Notes @@ -816,8 +816,8 @@ def set_meas_date(self, meas_date): Returns ------- - inst : instance of Raw | Epochs | Evoked - The modified raw instance. Operates in place. + inst : same type as the input data + The modified instance. Operates in place. See Also -------- diff --git a/mne/_fiff/proj.py b/mne/_fiff/proj.py index aa010085904..65125c45d3d 100644 --- a/mne/_fiff/proj.py +++ b/mne/_fiff/proj.py @@ -243,7 +243,7 @@ def add_proj(self, projs, remove_existing=False, verbose=None): Returns ------- - self : instance of Raw | Epochs | Evoked + self : same type as the input data The data container. """ if isinstance(projs, Projection): @@ -283,7 +283,7 @@ def apply_proj(self, verbose=None): Returns ------- - self : instance of Raw | Epochs | Evoked + self : same type as the input data The instance. Notes @@ -362,7 +362,7 @@ def del_proj(self, idx="all"): Returns ------- - self : instance of Raw | Epochs | Evoked + self : same type as the input data The instance. """ if isinstance(idx, str) and idx == "all": diff --git a/mne/_fiff/reference.py b/mne/_fiff/reference.py index 13fed0eebd2..3b654ee7784 100644 --- a/mne/_fiff/reference.py +++ b/mne/_fiff/reference.py @@ -228,7 +228,7 @@ def add_reference_channels(inst, ref_channels, copy=True): Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data Data with added EEG reference channels. Notes @@ -396,7 +396,7 @@ def set_eeg_reference( Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data Data with EEG channels re-referenced. If ``ref_channels="average"`` and ``projection=True`` a projection will be added instead of directly re-referencing the data. @@ -575,7 +575,7 @@ def set_bipolar_reference( Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data Data with the specified channels re-referenced. See Also diff --git a/mne/channels/channels.py b/mne/channels/channels.py index d337353c49c..ab54bf200dd 100644 --- a/mne/channels/channels.py +++ b/mne/channels/channels.py @@ -325,7 +325,7 @@ def set_eeg_reference( Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data Data with EEG channels re-referenced. If ``ref_channels='average'`` and ``projection=True`` a projection will be added instead of directly re-referencing the data. @@ -388,7 +388,7 @@ def pick_types( Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. See Also @@ -463,7 +463,7 @@ def pick_channels(self, ch_names, ordered=True, *, verbose=None): Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. See Also @@ -501,7 +501,7 @@ def pick(self, picks, exclude=(), *, verbose=None): Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. """ picks = _picks_to_idx(self.info, picks, "all", exclude, allow_empty=False) @@ -532,7 +532,7 @@ def reorder_channels(self, ch_names): Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. See Also @@ -569,7 +569,7 @@ def drop_channels(self, ch_names, on_missing="raise"): Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. See Also @@ -691,7 +691,7 @@ def add_channels(self, add_list, force_update_info=False): Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. See Also @@ -812,7 +812,7 @@ def add_reference_channels(self, ref_channels): Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The modified instance. """ return add_reference_channels(self, ref_channels, copy=False) @@ -878,7 +878,7 @@ def interpolate_bads( Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data The modified instance. Notes @@ -1006,7 +1006,7 @@ def interpolate_to( Returns ------- - inst : instance of Raw, Epochs, or Evoked + inst : same type as the input data A new instance with interpolated data and updated channel information. @@ -2015,7 +2015,7 @@ def combine_channels( Returns ------- - combined_inst : instance of Raw, Epochs, or Evoked + combined_inst : same type as the input data An MNE-Python object of the same type as the input ``inst``, containing one virtual channel for each group in ``groups`` (and, if ``keep_stim`` is ``True``, also containing stimulus channels). diff --git a/mne/filter.py b/mne/filter.py index 304afdf4de7..f8f4abf6499 100644 --- a/mne/filter.py +++ b/mne/filter.py @@ -2387,7 +2387,7 @@ def savgol_filter(self, h_freq, verbose=None): Returns ------- - inst : instance of Epochs, Evoked or SourceEstimate + inst : same type as the input data The object with the filtering applied. See Also @@ -2480,7 +2480,7 @@ def filter( Returns ------- - inst : instance of Epochs, Evoked, SourceEstimate, or Raw + inst : same type as the input data The filtered data. See Also @@ -2616,7 +2616,7 @@ def resample( Returns ------- - inst : instance of Epochs or Evoked + inst : same type as the input data The resampled object. See Also diff --git a/mne/io/base.py b/mne/io/base.py index e2cc3e3c757..ec5ce7594e4 100644 --- a/mne/io/base.py +++ b/mne/io/base.py @@ -2185,11 +2185,11 @@ def close(self): pass # noqa def copy(self): - """Return copy of Raw instance. + """Return copy of the instance. Returns ------- - inst : instance of Raw + inst : same type as the input data A copy of the instance. """ return deepcopy(self) diff --git a/mne/preprocessing/_csd.py b/mne/preprocessing/_csd.py index 35a32e90245..b2c9bf1fa8b 100644 --- a/mne/preprocessing/_csd.py +++ b/mne/preprocessing/_csd.py @@ -90,7 +90,7 @@ def compute_current_source_density( Returns ------- - inst_csd : instance of Raw, Epochs or Evoked + inst_csd : same type as the input data The transformed data. Output type will match input type. Notes diff --git a/mne/preprocessing/_regress.py b/mne/preprocessing/_regress.py index d7d54c637d6..6c866b6e421 100644 --- a/mne/preprocessing/_regress.py +++ b/mne/preprocessing/_regress.py @@ -63,7 +63,7 @@ def regress_artifact( Returns ------- - inst : instance of Epochs | Raw + inst : same type as the input data The processed data. betas : ndarray, shape (n_picks, n_picks_ref) The betas used during regression. diff --git a/mne/preprocessing/eyetracking/eyetracking.py b/mne/preprocessing/eyetracking/eyetracking.py index 5c95b5c4d78..afdf0d6c033 100644 --- a/mne/preprocessing/eyetracking/eyetracking.py +++ b/mne/preprocessing/eyetracking/eyetracking.py @@ -40,7 +40,7 @@ def set_channel_types_eyetrack(inst, mapping): Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The instance, modified in place. Notes @@ -179,7 +179,7 @@ def convert_units(inst, calibration, to="radians"): Returns ------- - inst : instance of Raw | Epochs | Evoked + inst : same type as the input data The Raw, Epochs, or Evoked instance, modified in place. Notes diff --git a/mne/preprocessing/ica.py b/mne/preprocessing/ica.py index 9b98ef9b2d4..38ce20a4318 100644 --- a/mne/preprocessing/ica.py +++ b/mne/preprocessing/ica.py @@ -1247,7 +1247,7 @@ def get_sources(self, inst, add_channels=None, start=None, stop=None): Returns ------- - sources : instance of Raw, Epochs or Evoked + sources : same type as the input data The ICA sources time series. """ if isinstance(inst, BaseRaw): @@ -2221,7 +2221,7 @@ def apply( Returns ------- - out : instance of Raw, Epochs or Evoked + out : same type as the input data The processed data. Notes diff --git a/mne/preprocessing/interpolate.py b/mne/preprocessing/interpolate.py index e0152bbf2dc..e934e158fab 100644 --- a/mne/preprocessing/interpolate.py +++ b/mne/preprocessing/interpolate.py @@ -101,7 +101,7 @@ def interpolate_bridged_electrodes(inst, bridged_idx, bad_limit=4): Returns ------- - inst : instance of Epochs, Evoked, or Raw + inst : same type as the input data The modified data object. See Also diff --git a/mne/preprocessing/stim.py b/mne/preprocessing/stim.py index a823820988b..ca8e15cf64e 100644 --- a/mne/preprocessing/stim.py +++ b/mne/preprocessing/stim.py @@ -94,7 +94,7 @@ def fix_stim_artifact( Returns ------- - inst : instance of Raw or Evoked or Epochs + inst : same type as the input data Instance with modified data. """ _check_option("mode", mode, ["linear", "window", "constant"]) diff --git a/mne/simulation/evoked.py b/mne/simulation/evoked.py index 2b225727dfe..9805e520496 100644 --- a/mne/simulation/evoked.py +++ b/mne/simulation/evoked.py @@ -117,7 +117,7 @@ def add_noise(inst, cov, iir_filter=None, random_state=None, verbose=None): Returns ------- - inst : instance of Evoked, Epochs, or Raw + inst : same type as the input data The instance, modified to have additional noise. Notes diff --git a/mne/utils/mixin.py b/mne/utils/mixin.py index 741636115e2..f0d4b9f7524 100644 --- a/mne/utils/mixin.py +++ b/mne/utils/mixin.py @@ -603,7 +603,7 @@ def crop(self, tmin=None, tmax=None, include_tmax=True, verbose=None): Returns ------- - inst : instance of Raw, Epochs, Evoked, AverageTFR, or SourceEstimate + inst : same type as the input data The cropped time-series object, modified in-place. Notes From dd6fa7b4f492c43e05de3fb27f8b822b94396d1a Mon Sep 17 00:00:00 2001 From: Daniel McCloy Date: Thu, 26 Feb 2026 12:41:15 -0600 Subject: [PATCH 8/9] update partner institution list (#13668) --- doc/_includes/institutional-partners.rst | 16 ++++++++-------- doc/conf.py | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/_includes/institutional-partners.rst b/doc/_includes/institutional-partners.rst index 89586058cf0..3316670b7b6 100644 --- a/doc/_includes/institutional-partners.rst +++ b/doc/_includes/institutional-partners.rst @@ -14,31 +14,31 @@ Current partners ~~~~~~~~~~~~~~~~ - `Aalto-yliopiston perustieteiden korkeakoulu `_ -- `AE Studio `_ -- `Athinoula A. Martinos Center for Biomedical Imaging `_ -- `Children’s Hospital of Philadelphia Research Institute `_ - `Donders Institute for Brain, Cognition and Behaviour at Radboud University `_ -- `Harvard Medical School `_ -- `Institut national de recherche en informatique et en automatique `_ - `Karl-Franzens-Universität Graz `_ -- `Massachusetts General Hospital `_ -- `Max-Planck-Institut für Bildungsforschung `_ -- `SWPS Uniwersytet Humanistycznospołeczny `_ - `University of Washington `_ Former partners ~~~~~~~~~~~~~~~ - `Aarhus Universitet `_ +- `AE Studio `_ +- `Athinoula A. Martinos Center for Biomedical Imaging `_ - `Berkeley Institute for Data Science `_ - `Boston University `_ +- `Children’s Hospital of Philadelphia Research Institute `_ - `Commissariat à l’énergie atomique et aux énergies alternatives `_ - `Fondation Campus Biotech Geneva `_ - `Forschungszentrum Jülich `_ +- `Harvard Medical School `_ - `Institut du Cerveau et de la Moelle épinière `_ - `Institut national de la santé et de la recherche médicale `_ +- `Institut national de recherche en informatique et en automatique `_ +- `Massachusetts General Hospital `_ - `Massachusetts Institute of Technology `_ +- `Max-Planck-Institut für Bildungsforschung `_ - `Macquarie University `_ - `New York University `_ +- `SWPS Uniwersytet Humanistycznospołeczny `_ - `Technische Universität Ilmenau `_ - `Télécom ParisTech `_ diff --git a/doc/conf.py b/doc/conf.py index 2fc68dca974..0d9fe79346e 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -992,7 +992,7 @@ def fix_sklearn_inherited_docstrings(app, what, name, obj, options, lines): klass="only-dark", ), dict( - name="Commissariat à l´énergie atomique et aux énergies alternatives", # noqa E501 + name="Commissariat à l´énergie atomique et aux énergies alternatives", img="CEA.png", url="http://www.cea.fr/", size=md, @@ -1097,7 +1097,7 @@ def fix_sklearn_inherited_docstrings(app, what, name, obj, options, lines): klass="only-dark", ), dict( - name="Institut national de recherche en informatique et en automatique", # noqa E501 + name="Institut national de recherche en informatique et en automatique", img="inria.png", url="https://www.inria.fr/", size=xl, @@ -1217,7 +1217,7 @@ def fix_sklearn_inherited_docstrings(app, what, name, obj, options, lines): ), dict( title="Machine Learning", - text="Advanced decoding models including time general\u00adiza\u00adtion.", # noqa E501 + text="Advanced decoding models including time general\u00adiza\u00adtion.", url="auto_tutorials/machine-learning/50_decoding.html", img="sphx_glr_50_decoding_006.png", alt="Decoding", @@ -1231,14 +1231,14 @@ def fix_sklearn_inherited_docstrings(app, what, name, obj, options, lines): ), dict( title="Statistics", - text="Parametric and non-parametric, permutation tests and clustering.", # noqa E501 + text="Parametric and non-parametric, permutation tests and clustering.", url="auto_tutorials/stats-source-space/index.html", img="sphx_glr_20_cluster_1samp_spatiotemporal_001.png", alt="Clusters", ), dict( title="Connectivity", - text="All-to-all spectral and effective connec\u00adtivity measures.", # noqa E501 + text="All-to-all spectral and effective connec\u00adtivity measures.", url="https://mne.tools/mne-connectivity/stable/auto_examples/mne_inverse_label_connectivity.html", # noqa E501 img="https://mne.tools/mne-connectivity/stable/_images/sphx_glr_mne_inverse_label_connectivity_001.png", # noqa E501 alt="Connectivity", From 806d8e448c4c5eada302daa070eb2eeb7db1adba Mon Sep 17 00:00:00 2001 From: "mne[bot]" <50266005+mne-bot@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:56:53 -0500 Subject: [PATCH 9/9] MAINT: Update code credit (#13709) Co-authored-by: Eric Larson --- .github/workflows/credit.yml | 4 +- .mailmap | 1 + doc/sphinxext/credit_tools.py | 1 + doc/sphinxext/prs/13024.json | 43 +++++++++ doc/sphinxext/prs/13196.json | 67 ++++++++++++++ doc/sphinxext/prs/13490.json | 83 +++++++++++++++++ doc/sphinxext/prs/13544.json | 23 +++++ doc/sphinxext/prs/13570.json | 35 +++++++ doc/sphinxext/prs/13595.json | 47 ++++++++++ doc/sphinxext/prs/13610.json | 91 ++++++++++++++++++ doc/sphinxext/prs/13624.json | 167 ++++++++++++++++++++++++++++++++++ doc/sphinxext/prs/13625.json | 27 ++++++ doc/sphinxext/prs/13626.json | 15 +++ doc/sphinxext/prs/13628.json | 23 +++++ doc/sphinxext/prs/13629.json | 15 +++ doc/sphinxext/prs/13630.json | 27 ++++++ doc/sphinxext/prs/13631.json | 15 +++ doc/sphinxext/prs/13632.json | 31 +++++++ doc/sphinxext/prs/13643.json | 19 ++++ doc/sphinxext/prs/13645.json | 23 +++++ doc/sphinxext/prs/13646.json | 23 +++++ doc/sphinxext/prs/13647.json | 27 ++++++ doc/sphinxext/prs/13649.json | 43 +++++++++ doc/sphinxext/prs/13652.json | 15 +++ doc/sphinxext/prs/13654.json | 23 +++++ doc/sphinxext/prs/13655.json | 27 ++++++ doc/sphinxext/prs/13658.json | 27 ++++++ doc/sphinxext/prs/13663.json | 19 ++++ doc/sphinxext/prs/13665.json | 15 +++ doc/sphinxext/prs/13668.json | 19 ++++ doc/sphinxext/prs/13669.json | 19 ++++ doc/sphinxext/prs/13670.json | 23 +++++ doc/sphinxext/prs/13672.json | 31 +++++++ doc/sphinxext/prs/13674.json | 79 ++++++++++++++++ doc/sphinxext/prs/13675.json | 19 ++++ doc/sphinxext/prs/13677.json | 23 +++++ doc/sphinxext/prs/13678.json | 19 ++++ doc/sphinxext/prs/13690.json | 27 ++++++ 38 files changed, 1233 insertions(+), 2 deletions(-) create mode 100644 doc/sphinxext/prs/13024.json create mode 100644 doc/sphinxext/prs/13196.json create mode 100644 doc/sphinxext/prs/13490.json create mode 100644 doc/sphinxext/prs/13544.json create mode 100644 doc/sphinxext/prs/13570.json create mode 100644 doc/sphinxext/prs/13595.json create mode 100644 doc/sphinxext/prs/13610.json create mode 100644 doc/sphinxext/prs/13624.json create mode 100644 doc/sphinxext/prs/13625.json create mode 100644 doc/sphinxext/prs/13626.json create mode 100644 doc/sphinxext/prs/13628.json create mode 100644 doc/sphinxext/prs/13629.json create mode 100644 doc/sphinxext/prs/13630.json create mode 100644 doc/sphinxext/prs/13631.json create mode 100644 doc/sphinxext/prs/13632.json create mode 100644 doc/sphinxext/prs/13643.json create mode 100644 doc/sphinxext/prs/13645.json create mode 100644 doc/sphinxext/prs/13646.json create mode 100644 doc/sphinxext/prs/13647.json create mode 100644 doc/sphinxext/prs/13649.json create mode 100644 doc/sphinxext/prs/13652.json create mode 100644 doc/sphinxext/prs/13654.json create mode 100644 doc/sphinxext/prs/13655.json create mode 100644 doc/sphinxext/prs/13658.json create mode 100644 doc/sphinxext/prs/13663.json create mode 100644 doc/sphinxext/prs/13665.json create mode 100644 doc/sphinxext/prs/13668.json create mode 100644 doc/sphinxext/prs/13669.json create mode 100644 doc/sphinxext/prs/13670.json create mode 100644 doc/sphinxext/prs/13672.json create mode 100644 doc/sphinxext/prs/13674.json create mode 100644 doc/sphinxext/prs/13675.json create mode 100644 doc/sphinxext/prs/13677.json create mode 100644 doc/sphinxext/prs/13678.json create mode 100644 doc/sphinxext/prs/13690.json diff --git a/.github/workflows/credit.yml b/.github/workflows/credit.yml index d31ddeb7abd..013e27e7214 100644 --- a/.github/workflows/credit.yml +++ b/.github/workflows/credit.yml @@ -37,10 +37,10 @@ jobs: set -xeo pipefail git config --global user.email "50266005+mne-bot@users.noreply.github.com" git config --global user.name "mne[bot]" - BRANCH=credit/$GITHUB_RUN_ID + BRANCH=credit/$(date '+%Y%m%d') git checkout -b $BRANCH git commit -am "mne[bot]: Update code credit" git push origin $BRANCH - PR_NUM=$(gh pr create --base main --head $BRANCH --title "MAINT: Update code credit" --body "Created by credit [GitHub action](https://github.com/mne-tools/mne-python/actions/runs/${{ github.run_id }}).

*Adjustments may need to be made to \`doc/changes/credit_tools.py\` or \`.mailmap\` etc. to get CircleCI to pass.*" --label "no-changelog-entry-needed") + PR_NUM=$(gh pr create --base main --head $BRANCH --title "MAINT: Update code credit" --body "Created by credit [GitHub action](https://github.com/mne-tools/mne-python/actions/runs/${{ github.run_id }}).

*Adjustments may need to be made to \`doc/sphinxext/credit_tools.py\` or \`.mailmap\` etc. to get CircleCI to pass.*" --label "no-changelog-entry-needed") echo "Opened https://github.com/mne-tools/mne-python/pull/${PR_NUM}" >> $GITHUB_STEP_SUMMARY if: steps.status.outputs.dirty == 'true' diff --git a/.mailmap b/.mailmap index f5bb38fe0b4..0f7caad8b04 100644 --- a/.mailmap +++ b/.mailmap @@ -20,6 +20,7 @@ Andrew Dykstra Andrew Quinn AJQuinn Andy Gilbert <7andy121@gmail.com> Andrew Gilbert Andy Gilbert <7andy121@gmail.com> Andrew Gilbert +Aniket Singh Yadav <148300120+Aniketsy@users.noreply.github.com> Aniket <148300120+Aniketsy@users.noreply.github.com> Anna Padee apadee <44297909+apadee@users.noreply.github.com> Anne-Sophie Dubarry annesodub Archit Singhal <43236121+architsinghal-mriirs@users.noreply.github.com> archit singhal diff --git a/doc/sphinxext/credit_tools.py b/doc/sphinxext/credit_tools.py index 8f8b8c00a22..4526a85838f 100644 --- a/doc/sphinxext/credit_tools.py +++ b/doc/sphinxext/credit_tools.py @@ -63,6 +63,7 @@ "akshay0724": "Akshay", # 4046, TODO: Check singleton "alexandra.corneyllie": "Alexandra Corneyllie", # 7600 "alexandra": "Alexandra Corneyllie", # 7600 + "Aniket": "Aniket Singh Yadav", # 13672 "AnneSo": "Anne-Sophie Dubarry", # 4910 "Basile": "Basile Pinsard", # 1791 "Bru": "Bruno Aristimunha", # 13489 diff --git a/doc/sphinxext/prs/13024.json b/doc/sphinxext/prs/13024.json new file mode 100644 index 00000000000..4feede48648 --- /dev/null +++ b/doc/sphinxext/prs/13024.json @@ -0,0 +1,43 @@ +{ + "merge_commit_sha": "a5bf268a1a8645a6b4addc467dec70eb0ec26ce3", + "authors": [ + { + "n": "Victor Férat", + "e": "victor.ferat@live.Fr" + }, + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "Marijn van Vliet", + "e": "w.m.vanvliet@gmail.com" + }, + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/changes/dev/13024.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/bem.py": { + "a": 61, + "d": 29 + }, + "mne/commands/mne_make_scalp_surfaces.py": { + "a": 8, + "d": 0 + }, + "mne/commands/tests/test_commands.py": { + "a": 102, + "d": 24 + }, + "mne/tests/test_bem.py": { + "a": 25, + "d": 3 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13196.json b/doc/sphinxext/prs/13196.json new file mode 100644 index 00000000000..cc4498f8c6a --- /dev/null +++ b/doc/sphinxext/prs/13196.json @@ -0,0 +1,67 @@ +{ + "merge_commit_sha": "437d79be7c5fb855a81d44da30bf9a51c9f60413", + "authors": [ + { + "n": "Konstantinos Tsilimparis", + "e": null + }, + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/api/preprocessing.rst": { + "a": 1, + "d": 0 + }, + "doc/changes/dev/13196.newfeature.rst": { + "a": 1, + "d": 0 + }, + "doc/changes/names.inc": { + "a": 1, + "d": 0 + }, + "examples/preprocessing/interpolate_to.py": { + "a": 71, + "d": 4 + }, + "mne/channels/__init__.pyi": { + "a": 2, + "d": 0 + }, + "mne/channels/channels.py": { + "a": 76, + "d": 133 + }, + "mne/channels/data/canonical_meg/ctf151.csv": { + "a": 152, + "d": 0 + }, + "mne/channels/data/canonical_meg/ctf275.csv": { + "a": 275, + "d": 0 + }, + "mne/channels/data/canonical_meg/neuromag306.csv": { + "a": 307, + "d": 0 + }, + "mne/channels/interpolation.py": { + "a": 138, + "d": 2 + }, + "mne/channels/montage.py": { + "a": 119, + "d": 0 + }, + "mne/channels/tests/test_interpolation.py": { + "a": 25, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13490.json b/doc/sphinxext/prs/13490.json new file mode 100644 index 00000000000..b57031be423 --- /dev/null +++ b/doc/sphinxext/prs/13490.json @@ -0,0 +1,83 @@ +{ + "merge_commit_sha": "4051f3102d39fd2dcc85e0b3079a86c11289816c", + "authors": [ + { + "n": "Daniel McCloy", + "e": null + }, + { + "n": "Carina Forster", + "e": "carinaforster0611@gmail.com" + }, + { + "n": "Thomas S. Binns", + "e": "t.s.binns@outlook.com" + }, + { + "n": "Scott Huberty", + "e": "52462026+scott-huberty@users.noreply.github.com" + }, + { + "n": "Erica Peterson", + "e": "nordme@uw.edu" + }, + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + }, + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + } + ], + "changes": { + ".github/workflows/spec_zero.yml": { + "a": 15, + "d": 7 + }, + ".github/workflows/tests.yml": { + "a": 12, + "d": 3 + }, + "environment.yml": { + "a": 11, + "d": 11 + }, + "pyproject.toml": { + "a": 40, + "d": 30 + }, + "tools/check_pyproject_helpers.py": { + "a": 61, + "d": 0 + }, + "tools/dev/spec_zero_update_versions.py": { + "a": 29, + "d": 22 + }, + "tools/github_actions_check_old.py": { + "a": 0, + "d": 35 + }, + "tools/github_actions_check_old_env.py": { + "a": 68, + "d": 0 + }, + "tools/github_actions_check_old_lockfile.py": { + "a": 68, + "d": 0 + }, + "tools/github_actions_dependencies.sh": { + "a": 28, + "d": 6 + }, + "tools/github_actions_env_vars.sh": { + "a": 5, + "d": 6 + }, + "tools/pylock.ci-old.toml": { + "a": 656, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13544.json b/doc/sphinxext/prs/13544.json new file mode 100644 index 00000000000..418cf3ca062 --- /dev/null +++ b/doc/sphinxext/prs/13544.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "8a11b2e8be48f7844b9b4b907a4a4e8f976b9ab7", + "authors": [ + { + "n": "Teemu Taivainen", + "e": "ttaiv@outlook.com" + }, + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/sphinxext/related_software.py": { + "a": 2, + "d": 1 + }, + "doc/sphinxext/related_software_nodeps.txt": { + "a": 2, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13570.json b/doc/sphinxext/prs/13570.json new file mode 100644 index 00000000000..0dfeb33ff0a --- /dev/null +++ b/doc/sphinxext/prs/13570.json @@ -0,0 +1,35 @@ +{ + "merge_commit_sha": "4a5479d6b496dc18bd325919bc6c346ce7563cfb", + "authors": [ + { + "n": "Aman Srivastava", + "e": null + }, + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "Daniel McCloy", + "e": "dan@mccloy.info" + } + ], + "changes": { + "doc/changes/dev/13570.newfeature.rst": { + "a": 3, + "d": 0 + }, + "doc/changes/names.inc": { + "a": 1, + "d": 0 + }, + "examples/visualization/eeg_on_scalp.py": { + "a": 1, + "d": 0 + }, + "mne/viz/_3d.py": { + "a": 23, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13595.json b/doc/sphinxext/prs/13595.json new file mode 100644 index 00000000000..56c48f814e8 --- /dev/null +++ b/doc/sphinxext/prs/13595.json @@ -0,0 +1,47 @@ +{ + "merge_commit_sha": "8b8edb0a70e2fabb4d6c80a5d72caf63349a4a5e", + "authors": [ + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "azure-pipelines.yml": { + "a": 2, + "d": 2 + }, + "doc/changes/dev/13595.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/minimum_norm/tests/test_inverse.py": { + "a": 20, + "d": 6 + }, + "mne/tests/test_cov.py": { + "a": 8, + "d": 0 + }, + "mne/viz/evoked.py": { + "a": 6, + "d": 10 + }, + "mne/viz/tests/test_evoked.py": { + "a": 18, + "d": 2 + }, + "mne/viz/utils.py": { + "a": 20, + "d": 14 + }, + "tools/azure_dependencies.sh": { + "a": 1, + "d": 1 + }, + "tools/github_actions_dependencies.sh": { + "a": 0, + "d": 4 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13610.json b/doc/sphinxext/prs/13610.json new file mode 100644 index 00000000000..fa64cbec87d --- /dev/null +++ b/doc/sphinxext/prs/13610.json @@ -0,0 +1,91 @@ +{ + "merge_commit_sha": "ab6346ecf025f6bdd3fbe5c83f92564fdfea9496", + "authors": [ + { + "n": "Bru", + "e": null + }, + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "autofix-ci[bot]", + "e": "114827586+autofix-ci[bot]@users.noreply.github.com" + } + ], + "changes": { + "azure-pipelines.yml": { + "a": 1, + "d": 1 + }, + "doc/_includes/data_formats.rst": { + "a": 3, + "d": 0 + }, + "doc/api/reading_raw_data.rst": { + "a": 1, + "d": 0 + }, + "doc/changes/dev/13610.newfeature.rst": { + "a": 1, + "d": 0 + }, + "doc/conf.py": { + "a": 1, + "d": 0 + }, + "environment.yml": { + "a": 1, + "d": 0 + }, + "mne/datasets/config.py": { + "a": 2, + "d": 2 + }, + "mne/io/__init__.pyi": { + "a": 2, + "d": 0 + }, + "mne/io/_read_raw.py": { + "a": 3, + "d": 0 + }, + "mne/io/mef/__init__.py": { + "a": 7, + "d": 0 + }, + "mne/io/mef/_utils.py": { + "a": 345, + "d": 0 + }, + "mne/io/mef/mef.py": { + "a": 300, + "d": 0 + }, + "mne/io/mef/tests/__init__.py": { + "a": 3, + "d": 0 + }, + "mne/io/mef/tests/test_mef.py": { + "a": 193, + "d": 0 + }, + "mne/tests/test_import_nesting.py": { + "a": 1, + "d": 1 + }, + "mne/utils/config.py": { + "a": 1, + "d": 0 + }, + "pyproject.toml": { + "a": 3, + "d": 0 + }, + "tools/hooks/update_environment_file.py": { + "a": 2, + "d": 2 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13624.json b/doc/sphinxext/prs/13624.json new file mode 100644 index 00000000000..1397a7e61bc --- /dev/null +++ b/doc/sphinxext/prs/13624.json @@ -0,0 +1,167 @@ +{ + "merge_commit_sha": "ee8502bdf9d6fada2b0159dc1dd36ac40175cf1a", + "authors": [ + { + "n": "mne[bot]", + "e": null + }, + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + ".mailmap": { + "a": 3, + "d": 0 + }, + "doc/changes/dev/13520.bugfix.rst": { + "a": 1, + "d": 1 + }, + "doc/changes/dev/13532.other.rst": { + "a": 1, + "d": 0 + }, + "doc/changes/dev/13541.other.rst": { + "a": 1, + "d": 0 + }, + "doc/changes/names.inc": { + "a": 2, + "d": 0 + }, + "doc/sphinxext/credit_tools.py": { + "a": 5, + "d": 1 + }, + "doc/sphinxext/prs/13408.json": { + "a": 59, + "d": 0 + }, + "doc/sphinxext/prs/13520.json": { + "a": 35, + "d": 0 + }, + "doc/sphinxext/prs/13532.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13541.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13551.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13558.json": { + "a": 39, + "d": 0 + }, + "doc/sphinxext/prs/13566.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13572.json": { + "a": 99, + "d": 0 + }, + "doc/sphinxext/prs/13574.json": { + "a": 15, + "d": 0 + }, + "doc/sphinxext/prs/13578.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13579.json": { + "a": 39, + "d": 0 + }, + "doc/sphinxext/prs/13580.json": { + "a": 43, + "d": 0 + }, + "doc/sphinxext/prs/13585.json": { + "a": 191, + "d": 0 + }, + "doc/sphinxext/prs/13586.json": { + "a": 15, + "d": 0 + }, + "doc/sphinxext/prs/13587.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13588.json": { + "a": 15, + "d": 0 + }, + "doc/sphinxext/prs/13590.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13591.json": { + "a": 35, + "d": 0 + }, + "doc/sphinxext/prs/13593.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13594.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13596.json": { + "a": 15, + "d": 0 + }, + "doc/sphinxext/prs/13599.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13600.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13601.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13602.json": { + "a": 19, + "d": 0 + }, + "doc/sphinxext/prs/13606.json": { + "a": 27, + "d": 0 + }, + "doc/sphinxext/prs/13607.json": { + "a": 15, + "d": 0 + }, + "doc/sphinxext/prs/13609.json": { + "a": 15, + "d": 0 + }, + "doc/sphinxext/prs/13611.json": { + "a": 107, + "d": 0 + }, + "doc/sphinxext/prs/13612.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13613.json": { + "a": 23, + "d": 0 + }, + "doc/sphinxext/prs/13620.json": { + "a": 15, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13625.json b/doc/sphinxext/prs/13625.json new file mode 100644 index 00000000000..db0214ca790 --- /dev/null +++ b/doc/sphinxext/prs/13625.json @@ -0,0 +1,27 @@ +{ + "merge_commit_sha": "8b9aeae77567a524aa14fa984e5f0905265277a4", + "authors": [ + { + "n": "mne[bot]", + "e": null + }, + { + "n": "autofix-ci[bot]", + "e": "114827586+autofix-ci[bot]@users.noreply.github.com" + }, + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + ".github/workflows/spec_zero.yml": { + "a": 1, + "d": 1 + }, + "doc/changes/dev/13625.dependency.rst": { + "a": 5, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13626.json b/doc/sphinxext/prs/13626.json new file mode 100644 index 00000000000..ead8fec3b3e --- /dev/null +++ b/doc/sphinxext/prs/13626.json @@ -0,0 +1,15 @@ +{ + "merge_commit_sha": "f3f1c96afb65db1199debc6b4319ee1fcae04cae", + "authors": [ + { + "n": "Daniel McCloy", + "e": null + } + ], + "changes": { + "tools/dev/check_steering_committee.py": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13628.json b/doc/sphinxext/prs/13628.json new file mode 100644 index 00000000000..29bcac35e28 --- /dev/null +++ b/doc/sphinxext/prs/13628.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "1138f8b254907362a69cc8d00830b1c12ba66610", + "authors": [ + { + "n": "Bru", + "e": null + } + ], + "changes": { + "doc/changes/dev/13628.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/io/snirf/_snirf.py": { + "a": 5, + "d": 0 + }, + "mne/io/snirf/tests/test_snirf.py": { + "a": 27, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13629.json b/doc/sphinxext/prs/13629.json new file mode 100644 index 00000000000..284a71fca50 --- /dev/null +++ b/doc/sphinxext/prs/13629.json @@ -0,0 +1,15 @@ +{ + "merge_commit_sha": "e127c0ea125cbfed0eca8b139ad2a33b80919ef7", + "authors": [ + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/sphinxext/related_software.py": { + "a": 1, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13630.json b/doc/sphinxext/prs/13630.json new file mode 100644 index 00000000000..6779c6e9397 --- /dev/null +++ b/doc/sphinxext/prs/13630.json @@ -0,0 +1,27 @@ +{ + "merge_commit_sha": "454fffa267e110a29e74a9ecb91355c8f5d83632", + "authors": [ + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/changes/dev/13630.bugfix.rst": { + "a": 1, + "d": 0 + }, + "examples/inverse/dics_epochs.py": { + "a": 4, + "d": 5 + }, + "mne/datasets/_fetch.py": { + "a": 4, + "d": 0 + }, + "mne/datasets/config.py": { + "a": 2, + "d": 2 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13631.json b/doc/sphinxext/prs/13631.json new file mode 100644 index 00000000000..a7af0a005b6 --- /dev/null +++ b/doc/sphinxext/prs/13631.json @@ -0,0 +1,15 @@ +{ + "merge_commit_sha": "b515c2098d2ae983a1fd0af7dd8733df34f7eb79", + "authors": [ + { + "n": "Daniel McCloy", + "e": null + } + ], + "changes": { + "doc/overview/people.rst": { + "a": 25, + "d": 6 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13632.json b/doc/sphinxext/prs/13632.json new file mode 100644 index 00000000000..587b80f3b9a --- /dev/null +++ b/doc/sphinxext/prs/13632.json @@ -0,0 +1,31 @@ +{ + "merge_commit_sha": "e1aa5ed77a22f961a36480c68109f770660d5069", + "authors": [ + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/changes/names.inc": { + "a": 1, + "d": 1 + }, + "doc/conf.py": { + "a": 1, + "d": 0 + }, + "doc/links.inc": { + "a": 1, + "d": 1 + }, + "doc/sphinxext/mne_doc_utils.py": { + "a": 2, + "d": 0 + }, + "mne/conftest.py": { + "a": 15, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13643.json b/doc/sphinxext/prs/13643.json new file mode 100644 index 00000000000..b206e6818f1 --- /dev/null +++ b/doc/sphinxext/prs/13643.json @@ -0,0 +1,19 @@ +{ + "merge_commit_sha": "cd888c17eaf1bb004550f969fc28ade808225430", + "authors": [ + { + "n": "dependabot[bot]", + "e": "49699333+dependabot[bot]@users.noreply.github.com" + }, + { + "n": "mne[bot]", + "e": "50266005+mne-bot@users.noreply.github.com" + } + ], + "changes": { + ".github/workflows/autofix.yml": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13645.json b/doc/sphinxext/prs/13645.json new file mode 100644 index 00000000000..026d02e7d33 --- /dev/null +++ b/doc/sphinxext/prs/13645.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "87d1051d6932383e825ba377b21a221b2670db11", + "authors": [ + { + "n": "Thomas S. Binns", + "e": "t.s.binns@outlook.com" + } + ], + "changes": { + "doc/changes/dev/13611.dependency.rst": { + "a": 0, + "d": 1 + }, + "doc/changes/dev/13625.dependency.rst": { + "a": 0, + "d": 5 + }, + "tools/dev/spec_zero_update_versions.py": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13646.json b/doc/sphinxext/prs/13646.json new file mode 100644 index 00000000000..917330c0dc1 --- /dev/null +++ b/doc/sphinxext/prs/13646.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "cd9ae4db0bfe7836a640c7f17a473788c5ca8e06", + "authors": [ + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "mne[bot]", + "e": "50266005+mne-bot@users.noreply.github.com" + } + ], + "changes": { + ".pre-commit-config.yaml": { + "a": 1, + "d": 1 + }, + "mne/io/hitachi/hitachi.py": { + "a": 6, + "d": 4 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13647.json b/doc/sphinxext/prs/13647.json new file mode 100644 index 00000000000..80e965fcf40 --- /dev/null +++ b/doc/sphinxext/prs/13647.json @@ -0,0 +1,27 @@ +{ + "merge_commit_sha": "8f75a7da57f8eac5159a8a0201b4a3f847585a99", + "authors": [ + { + "n": "Clemens Brunner", + "e": null + } + ], + "changes": { + "doc/changes/dev/13647.newfeature.rst": { + "a": 1, + "d": 0 + }, + "mne/_fiff/meas_info.py": { + "a": 19, + "d": 5 + }, + "mne/_fiff/tests/test_meas_info.py": { + "a": 45, + "d": 3 + }, + "mne/utils/docs.py": { + "a": 13, + "d": 8 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13649.json b/doc/sphinxext/prs/13649.json new file mode 100644 index 00000000000..e98a7247b1a --- /dev/null +++ b/doc/sphinxext/prs/13649.json @@ -0,0 +1,43 @@ +{ + "merge_commit_sha": "5e389d0a88206810f51f9e064158966a009f28b2", + "authors": [ + { + "n": "Daniel McCloy", + "e": null + } + ], + "changes": { + "doc/changes/dev/13630.bugfix.rst": { + "a": 1, + "d": 0 + }, + "doc/sphinxext/gh_substitutions.py": { + "a": 18, + "d": 2 + }, + "doc/sphinxext/mne_doc_utils.py": { + "a": 12, + "d": 0 + }, + "doc/sphinxext/related_software.txt": { + "a": 1, + "d": 0 + }, + "doc/sphinxext/related_software_nodeps.txt": { + "a": 1, + "d": 0 + }, + "examples/inverse/dics_epochs.py": { + "a": 4, + "d": 5 + }, + "mne/datasets/_fetch.py": { + "a": 4, + "d": 0 + }, + "mne/datasets/config.py": { + "a": 2, + "d": 2 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13652.json b/doc/sphinxext/prs/13652.json new file mode 100644 index 00000000000..388c5eedd08 --- /dev/null +++ b/doc/sphinxext/prs/13652.json @@ -0,0 +1,15 @@ +{ + "merge_commit_sha": "d6e978467ff4545f81876ce383c520d4d832c993", + "authors": [ + { + "n": "Himanshu Mahor", + "e": null + } + ], + "changes": { + "mne/utils/docs.py": { + "a": 3, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13654.json b/doc/sphinxext/prs/13654.json new file mode 100644 index 00000000000..70ddd2f5682 --- /dev/null +++ b/doc/sphinxext/prs/13654.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "70326482061245f1642619e764649e4dda8ead85", + "authors": [ + { + "n": "Clemens Brunner", + "e": null + } + ], + "changes": { + "doc/changes/dev/13654.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/viz/_mpl_figure.py": { + "a": 1, + "d": 1 + }, + "mne/viz/tests/test_epochs.py": { + "a": 4, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13655.json b/doc/sphinxext/prs/13655.json new file mode 100644 index 00000000000..e36a670a57a --- /dev/null +++ b/doc/sphinxext/prs/13655.json @@ -0,0 +1,27 @@ +{ + "merge_commit_sha": "f067dd7ea1a19d1f931a6f8433bf4052376f5349", + "authors": [ + { + "n": "Lumberbot (aka Jack)", + "e": null + }, + { + "n": "Clemens Brunner", + "e": "clemens.brunner@gmail.com" + } + ], + "changes": { + "doc/changes/dev/13654.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/viz/_mpl_figure.py": { + "a": 1, + "d": 1 + }, + "mne/viz/tests/test_epochs.py": { + "a": 4, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13658.json b/doc/sphinxext/prs/13658.json new file mode 100644 index 00000000000..e33cc255c13 --- /dev/null +++ b/doc/sphinxext/prs/13658.json @@ -0,0 +1,27 @@ +{ + "merge_commit_sha": "6589b8672bac9de0d8df31a6ad4afce916b3046c", + "authors": [ + { + "n": "Scott Huberty", + "e": null + } + ], + "changes": { + "doc/_includes/bem_model.rst": { + "a": 1, + "d": 1 + }, + "doc/links.inc": { + "a": 2, + "d": 0 + }, + "mne/bem.py": { + "a": 8, + "d": 1 + }, + "tutorials/forward/50_background_freesurfer_mne.py": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13663.json b/doc/sphinxext/prs/13663.json new file mode 100644 index 00000000000..ff4d1b297ac --- /dev/null +++ b/doc/sphinxext/prs/13663.json @@ -0,0 +1,19 @@ +{ + "merge_commit_sha": "a64cc193bd0d609ed3adbf94ada6245abf07d7e8", + "authors": [ + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "mne[bot]", + "e": "50266005+mne-bot@users.noreply.github.com" + } + ], + "changes": { + ".pre-commit-config.yaml": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13665.json b/doc/sphinxext/prs/13665.json new file mode 100644 index 00000000000..f7478b30125 --- /dev/null +++ b/doc/sphinxext/prs/13665.json @@ -0,0 +1,15 @@ +{ + "merge_commit_sha": "7de840cd5940c879feb1dad1a2e0c4e8ec6efee9", + "authors": [ + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/sphinxext/related_software.txt": { + "a": 1, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13668.json b/doc/sphinxext/prs/13668.json new file mode 100644 index 00000000000..8f85ad0ba5b --- /dev/null +++ b/doc/sphinxext/prs/13668.json @@ -0,0 +1,19 @@ +{ + "merge_commit_sha": "8dd298f48f27a678ccde2e2bfa6a5f57e274c584", + "authors": [ + { + "n": "Daniel McCloy", + "e": null + } + ], + "changes": { + "doc/_includes/institutional-partners.rst": { + "a": 8, + "d": 8 + }, + "doc/conf.py": { + "a": 5, + "d": 5 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13669.json b/doc/sphinxext/prs/13669.json new file mode 100644 index 00000000000..45cfbcfd398 --- /dev/null +++ b/doc/sphinxext/prs/13669.json @@ -0,0 +1,19 @@ +{ + "merge_commit_sha": "557eca671d50499cd584232334f636f76afe7c07", + "authors": [ + { + "n": "Scott Huberty", + "e": null + } + ], + "changes": { + "doc/changes/dev/13669.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/__init__.pyi": { + "a": 2, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13670.json b/doc/sphinxext/prs/13670.json new file mode 100644 index 00000000000..a0bde4d169a --- /dev/null +++ b/doc/sphinxext/prs/13670.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "b8496fa0b4bd482125822ed4b3baa01dd0042294", + "authors": [ + { + "n": "Lumberbot (aka Jack)", + "e": null + }, + { + "n": "Scott Huberty", + "e": "52462026+scott-huberty@users.noreply.github.com" + } + ], + "changes": { + "doc/changes/dev/13669.bugfix.rst": { + "a": 1, + "d": 0 + }, + "mne/__init__.pyi": { + "a": 2, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13672.json b/doc/sphinxext/prs/13672.json new file mode 100644 index 00000000000..08ed04fcbb6 --- /dev/null +++ b/doc/sphinxext/prs/13672.json @@ -0,0 +1,31 @@ +{ + "merge_commit_sha": "dcc711615a1e56275f17382aa8bea639e6ba8ae5", + "authors": [ + { + "n": "Aniket", + "e": null + }, + { + "n": "Daniel McCloy", + "e": "dan@mccloy.info" + } + ], + "changes": { + "doc/changes/dev/13672.bugfix.rst": { + "a": 1, + "d": 0 + }, + "doc/changes/names.inc": { + "a": 1, + "d": 0 + }, + "mne/io/snirf/_snirf.py": { + "a": 1, + "d": 1 + }, + "mne/io/tests/test_raw.py": { + "a": 7, + "d": 4 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13674.json b/doc/sphinxext/prs/13674.json new file mode 100644 index 00000000000..bf91bac06ae --- /dev/null +++ b/doc/sphinxext/prs/13674.json @@ -0,0 +1,79 @@ +{ + "merge_commit_sha": "e9f9bf68c2a0b9dea20fd440350531aa89d29b33", + "authors": [ + { + "n": "Aniket", + "e": null + }, + { + "n": "Marijn van Vliet", + "e": "w.m.vanvliet@gmail.com" + } + ], + "changes": { + "doc/changes/dev/13674.other.rst": { + "a": 1, + "d": 0 + }, + "doc/conf.py": { + "a": 5, + "d": 0 + }, + "mne/_fiff/meas_info.py": { + "a": 6, + "d": 6 + }, + "mne/_fiff/proj.py": { + "a": 3, + "d": 3 + }, + "mne/_fiff/reference.py": { + "a": 3, + "d": 3 + }, + "mne/channels/channels.py": { + "a": 11, + "d": 11 + }, + "mne/filter.py": { + "a": 3, + "d": 3 + }, + "mne/io/base.py": { + "a": 2, + "d": 2 + }, + "mne/preprocessing/_csd.py": { + "a": 1, + "d": 1 + }, + "mne/preprocessing/_regress.py": { + "a": 1, + "d": 1 + }, + "mne/preprocessing/eyetracking/eyetracking.py": { + "a": 2, + "d": 2 + }, + "mne/preprocessing/ica.py": { + "a": 2, + "d": 2 + }, + "mne/preprocessing/interpolate.py": { + "a": 1, + "d": 1 + }, + "mne/preprocessing/stim.py": { + "a": 1, + "d": 1 + }, + "mne/simulation/evoked.py": { + "a": 1, + "d": 1 + }, + "mne/utils/mixin.py": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13675.json b/doc/sphinxext/prs/13675.json new file mode 100644 index 00000000000..16502845ca3 --- /dev/null +++ b/doc/sphinxext/prs/13675.json @@ -0,0 +1,19 @@ +{ + "merge_commit_sha": "371920011756d14af038db4eb87b00a3e901b5c3", + "authors": [ + { + "n": "Clemens Brunner", + "e": null + } + ], + "changes": { + "doc/changes/dev/13675.other.rst": { + "a": 1, + "d": 0 + }, + "mne/epochs.py": { + "a": 13, + "d": 0 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13677.json b/doc/sphinxext/prs/13677.json new file mode 100644 index 00000000000..7bc06b8bd30 --- /dev/null +++ b/doc/sphinxext/prs/13677.json @@ -0,0 +1,23 @@ +{ + "merge_commit_sha": "6646cba043594cf413e4163f13e1c587adf848e5", + "authors": [ + { + "n": "Eric Larson", + "e": "larson.eric.d@gmail.com" + } + ], + "changes": { + "doc/sphinxext/mne_doc_utils.py": { + "a": 2, + "d": 0 + }, + "examples/inverse/morph_volume_stc.py": { + "a": 0, + "d": 1 + }, + "tutorials/inverse/50_beamformer_lcmv.py": { + "a": 2, + "d": 2 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13678.json b/doc/sphinxext/prs/13678.json new file mode 100644 index 00000000000..e07184afb7f --- /dev/null +++ b/doc/sphinxext/prs/13678.json @@ -0,0 +1,19 @@ +{ + "merge_commit_sha": "c089d8560de394be180b7a7b591cfd581b3d4532", + "authors": [ + { + "n": "pre-commit-ci[bot]", + "e": "66853113+pre-commit-ci[bot]@users.noreply.github.com" + }, + { + "n": "mne[bot]", + "e": "50266005+mne-bot@users.noreply.github.com" + } + ], + "changes": { + ".pre-commit-config.yaml": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file diff --git a/doc/sphinxext/prs/13690.json b/doc/sphinxext/prs/13690.json new file mode 100644 index 00000000000..9089f4c0b59 --- /dev/null +++ b/doc/sphinxext/prs/13690.json @@ -0,0 +1,27 @@ +{ + "merge_commit_sha": "ce94c0577b4ec0ee50bee00dddf82f062deb1bb3", + "authors": [ + { + "n": "Thomas S. Binns", + "e": "t.s.binns@outlook.com" + } + ], + "changes": { + "examples/datasets/limo_data.py": { + "a": 1, + "d": 1 + }, + "mne/io/edf/edf.py": { + "a": 6, + "d": 6 + }, + "tutorials/evoked/30_eeg_erp.py": { + "a": 1, + "d": 1 + }, + "tutorials/intro/70_report.py": { + "a": 1, + "d": 1 + } + } +} \ No newline at end of file