diff --git a/examples/datasets/hf_sef_data.py b/examples/datasets/hf_sef_data.py index 36ea2cbc2bb..f9240698231 100644 --- a/examples/datasets/hf_sef_data.py +++ b/examples/datasets/hf_sef_data.py @@ -14,8 +14,9 @@ # %% -import mne import os + +import mne from mne.datasets import hf_sef fname_evoked = os.path.join(hf_sef.data_path(), "MEG/subject_b/hf_sef_15min-ave.fif") diff --git a/examples/datasets/limo_data.py b/examples/datasets/limo_data.py index 4285411dd6c..62fb0322295 100644 --- a/examples/datasets/limo_data.py +++ b/examples/datasets/limo_data.py @@ -38,14 +38,13 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from mne import combine_evoked from mne.datasets.limo import load_data from mne.stats import linear_regression -from mne.viz import plot_events, plot_compare_evokeds -from mne import combine_evoked - +from mne.viz import plot_compare_evokeds, plot_events print(__doc__) diff --git a/examples/datasets/opm_data.py b/examples/datasets/opm_data.py index 184ea216866..60c4a08f8fe 100644 --- a/examples/datasets/opm_data.py +++ b/examples/datasets/opm_data.py @@ -13,6 +13,7 @@ # sphinx_gallery_thumbnail_number = 4 import numpy as np + import mne data_path = mne.datasets.opm.data_path() diff --git a/examples/datasets/spm_faces_dataset_sgskip.py b/examples/datasets/spm_faces_dataset_sgskip.py index 0bda341aa4f..cdc7dc9aab0 100644 --- a/examples/datasets/spm_faces_dataset_sgskip.py +++ b/examples/datasets/spm_faces_dataset_sgskip.py @@ -27,10 +27,10 @@ import matplotlib.pyplot as plt import mne +from mne import combine_evoked, io from mne.datasets import spm_face +from mne.minimum_norm import apply_inverse, make_inverse_operator from mne.preprocessing import ICA, create_eog_epochs -from mne import io, combine_evoked -from mne.minimum_norm import make_inverse_operator, apply_inverse print(__doc__) diff --git a/examples/decoding/decoding_csp_eeg.py b/examples/decoding/decoding_csp_eeg.py index 1ee2f0ce87d..896489252f2 100644 --- a/examples/decoding/decoding_csp_eeg.py +++ b/examples/decoding/decoding_csp_eeg.py @@ -20,18 +20,17 @@ # %% -import numpy as np import matplotlib.pyplot as plt - -from sklearn.pipeline import Pipeline +import numpy as np from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.model_selection import ShuffleSplit, cross_val_score +from sklearn.pipeline import Pipeline -from mne import Epochs, pick_types, events_from_annotations +from mne import Epochs, events_from_annotations, pick_types from mne.channels import make_standard_montage -from mne.io import concatenate_raws, read_raw_edf from mne.datasets import eegbci from mne.decoding import CSP +from mne.io import concatenate_raws, read_raw_edf print(__doc__) diff --git a/examples/decoding/decoding_csp_timefreq.py b/examples/decoding/decoding_csp_timefreq.py index e6d3daa725d..c1f88588326 100644 --- a/examples/decoding/decoding_csp_timefreq.py +++ b/examples/decoding/decoding_csp_timefreq.py @@ -21,20 +21,19 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from sklearn.discriminant_analysis import LinearDiscriminantAnalysis +from sklearn.model_selection import StratifiedKFold, cross_val_score +from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import LabelEncoder from mne import Epochs, create_info, events_from_annotations -from mne.io import concatenate_raws, read_raw_edf from mne.datasets import eegbci from mne.decoding import CSP +from mne.io import concatenate_raws, read_raw_edf from mne.time_frequency import AverageTFR -from sklearn.discriminant_analysis import LinearDiscriminantAnalysis -from sklearn.model_selection import StratifiedKFold, cross_val_score -from sklearn.pipeline import make_pipeline -from sklearn.preprocessing import LabelEncoder - # %% # Set parameters and read data event_id = dict(hands=2, feet=3) # motor imagery: hands vs feet diff --git a/examples/decoding/decoding_rsa_sgskip.py b/examples/decoding/decoding_rsa_sgskip.py index 3cc8467deb3..0b6b8e7a340 100644 --- a/examples/decoding/decoding_rsa_sgskip.py +++ b/examples/decoding/decoding_rsa_sgskip.py @@ -29,21 +29,19 @@ # %% +import matplotlib.pyplot as plt import numpy as np from pandas import read_csv -import matplotlib.pyplot as plt - +from sklearn.linear_model import LogisticRegression +from sklearn.manifold import MDS +from sklearn.metrics import roc_auc_score from sklearn.model_selection import StratifiedKFold from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler -from sklearn.linear_model import LogisticRegression -from sklearn.metrics import roc_auc_score -from sklearn.manifold import MDS import mne -from mne.io import read_raw_fif, concatenate_raws from mne.datasets import visual_92_categories - +from mne.io import concatenate_raws, read_raw_fif print(__doc__) diff --git a/examples/decoding/decoding_spatio_temporal_source.py b/examples/decoding/decoding_spatio_temporal_source.py index ad96720f640..3efbde4c047 100644 --- a/examples/decoding/decoding_spatio_temporal_source.py +++ b/examples/decoding/decoding_spatio_temporal_source.py @@ -21,17 +21,16 @@ # %% -import numpy as np import matplotlib.pyplot as plt - -from sklearn.pipeline import make_pipeline -from sklearn.preprocessing import StandardScaler +import numpy as np from sklearn.feature_selection import SelectKBest, f_classif from sklearn.linear_model import LogisticRegression +from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import StandardScaler import mne +from mne.decoding import LinearModel, SlidingEstimator, cross_val_multiscore, get_coef from mne.minimum_norm import apply_inverse_epochs, read_inverse_operator -from mne.decoding import cross_val_multiscore, LinearModel, SlidingEstimator, get_coef print(__doc__) diff --git a/examples/decoding/decoding_spoc_CMC.py b/examples/decoding/decoding_spoc_CMC.py index 4e689d338d5..ba3c23a08dc 100644 --- a/examples/decoding/decoding_spoc_CMC.py +++ b/examples/decoding/decoding_spoc_CMC.py @@ -24,15 +24,14 @@ # %% import matplotlib.pyplot as plt +from sklearn.linear_model import Ridge +from sklearn.model_selection import KFold, cross_val_predict +from sklearn.pipeline import make_pipeline import mne from mne import Epochs -from mne.decoding import SPoC from mne.datasets.fieldtrip_cmc import data_path - -from sklearn.pipeline import make_pipeline -from sklearn.linear_model import Ridge -from sklearn.model_selection import KFold, cross_val_predict +from mne.decoding import SPoC # Define parameters fname = data_path() / "SubjectCMC.ds" diff --git a/examples/decoding/decoding_time_generalization_conditions.py b/examples/decoding/decoding_time_generalization_conditions.py index a018ebbe75b..beb69831b8b 100644 --- a/examples/decoding/decoding_time_generalization_conditions.py +++ b/examples/decoding/decoding_time_generalization_conditions.py @@ -20,10 +20,9 @@ # %% import matplotlib.pyplot as plt - +from sklearn.linear_model import LogisticRegression from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler -from sklearn.linear_model import LogisticRegression import mne from mne.datasets import sample diff --git a/examples/decoding/decoding_unsupervised_spatial_filter.py b/examples/decoding/decoding_unsupervised_spatial_filter.py index d215203ac3c..07c18813ab8 100644 --- a/examples/decoding/decoding_unsupervised_spatial_filter.py +++ b/examples/decoding/decoding_unsupervised_spatial_filter.py @@ -17,15 +17,14 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from sklearn.decomposition import PCA, FastICA import mne from mne.datasets import sample from mne.decoding import UnsupervisedSpatialFilter -from sklearn.decomposition import PCA, FastICA - print(__doc__) # Preprocess data diff --git a/examples/decoding/decoding_xdawn_eeg.py b/examples/decoding/decoding_xdawn_eeg.py index e7fac8c52e6..221a16c380c 100644 --- a/examples/decoding/decoding_xdawn_eeg.py +++ b/examples/decoding/decoding_xdawn_eeg.py @@ -16,20 +16,18 @@ # %% -import numpy as np import matplotlib.pyplot as plt - -from sklearn.model_selection import StratifiedKFold -from sklearn.pipeline import make_pipeline +import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report, confusion_matrix +from sklearn.model_selection import StratifiedKFold +from sklearn.pipeline import make_pipeline from sklearn.preprocessing import MinMaxScaler -from mne import io, pick_types, read_events, Epochs, EvokedArray, create_info +from mne import Epochs, EvokedArray, create_info, io, pick_types, read_events from mne.datasets import sample -from mne.preprocessing import Xdawn from mne.decoding import Vectorizer - +from mne.preprocessing import Xdawn print(__doc__) diff --git a/examples/decoding/ems_filtering.py b/examples/decoding/ems_filtering.py index e3512a3591e..ff6296bf1f1 100644 --- a/examples/decoding/ems_filtering.py +++ b/examples/decoding/ems_filtering.py @@ -25,14 +25,14 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from sklearn.model_selection import StratifiedKFold import mne -from mne import io, EvokedArray +from mne import EvokedArray, io from mne.datasets import sample from mne.decoding import EMS, compute_ems -from sklearn.model_selection import StratifiedKFold print(__doc__) diff --git a/examples/decoding/linear_model_patterns.py b/examples/decoding/linear_model_patterns.py index 05b4c0591a6..4b23e5d1e56 100644 --- a/examples/decoding/linear_model_patterns.py +++ b/examples/decoding/linear_model_patterns.py @@ -22,17 +22,16 @@ # %% -import mne -from mne import io, EvokedArray -from mne.datasets import sample -from mne.decoding import Vectorizer, get_coef - -from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import StandardScaler + +import mne +from mne import EvokedArray, io +from mne.datasets import sample # import a linear classifier from mne.decoding -from mne.decoding import LinearModel +from mne.decoding import LinearModel, Vectorizer, get_coef print(__doc__) diff --git a/examples/decoding/receptive_field_mtrf.py b/examples/decoding/receptive_field_mtrf.py index e927cd3cf25..799920611bf 100644 --- a/examples/decoding/receptive_field_mtrf.py +++ b/examples/decoding/receptive_field_mtrf.py @@ -28,16 +28,16 @@ # %% # sphinx_gallery_thumbnail_number = 3 -import numpy as np -import matplotlib.pyplot as plt -from scipy.io import loadmat from os.path import join -import mne -from mne.decoding import ReceptiveField +import matplotlib.pyplot as plt +import numpy as np +from scipy.io import loadmat from sklearn.model_selection import KFold from sklearn.preprocessing import scale +import mne +from mne.decoding import ReceptiveField # %% # Load the data from the publication diff --git a/examples/decoding/ssd_spatial_filters.py b/examples/decoding/ssd_spatial_filters.py index 035f2b0cf2d..a2bdcabf9a1 100644 --- a/examples/decoding/ssd_spatial_filters.py +++ b/examples/decoding/ssd_spatial_filters.py @@ -21,6 +21,7 @@ import matplotlib.pyplot as plt + import mne from mne import Epochs from mne.datasets.fieldtrip_cmc import data_path diff --git a/examples/forward/forward_sensitivity_maps.py b/examples/forward/forward_sensitivity_maps.py index dca41bb9b12..db501375b86 100644 --- a/examples/forward/forward_sensitivity_maps.py +++ b/examples/forward/forward_sensitivity_maps.py @@ -18,12 +18,13 @@ # %% +import matplotlib.pyplot as plt import numpy as np + import mne from mne.datasets import sample -from mne.source_space import compute_distance_to_sensors from mne.source_estimate import SourceEstimate -import matplotlib.pyplot as plt +from mne.source_space import compute_distance_to_sensors print(__doc__) diff --git a/examples/inverse/compute_mne_inverse_epochs_in_label.py b/examples/inverse/compute_mne_inverse_epochs_in_label.py index e779444f6cf..b7938868058 100644 --- a/examples/inverse/compute_mne_inverse_epochs_in_label.py +++ b/examples/inverse/compute_mne_inverse_epochs_in_label.py @@ -14,13 +14,12 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne.datasets import sample -from mne.minimum_norm import apply_inverse_epochs, read_inverse_operator -from mne.minimum_norm import apply_inverse +from mne.minimum_norm import apply_inverse, apply_inverse_epochs, read_inverse_operator print(__doc__) diff --git a/examples/inverse/compute_mne_inverse_volume.py b/examples/inverse/compute_mne_inverse_volume.py index 7b5193a081b..501bc30199a 100644 --- a/examples/inverse/compute_mne_inverse_volume.py +++ b/examples/inverse/compute_mne_inverse_volume.py @@ -14,11 +14,11 @@ # %% -from nilearn.plotting import plot_stat_map from nilearn.image import index_img +from nilearn.plotting import plot_stat_map -from mne.datasets import sample from mne import read_evokeds +from mne.datasets import sample from mne.minimum_norm import apply_inverse, read_inverse_operator print(__doc__) diff --git a/examples/inverse/custom_inverse_solver.py b/examples/inverse/custom_inverse_solver.py index 8e2a495c1dd..6798d0c80a3 100644 --- a/examples/inverse/custom_inverse_solver.py +++ b/examples/inverse/custom_inverse_solver.py @@ -23,11 +23,11 @@ import numpy as np from scipy import linalg + import mne from mne.datasets import sample from mne.viz import plot_sparse_source_estimates - data_path = sample.data_path() meg_path = data_path / "MEG" / "sample" fwd_fname = meg_path / "sample_audvis-meg-eeg-oct-6-fwd.fif" @@ -95,10 +95,10 @@ def apply_solver(solver, evoked, forward, noise_cov, loose=0.2, depth=0.8): """ # Import the necessary private functions from mne.inverse_sparse.mxne_inverse import ( + _make_sparse_stc, _prepare_gain, - is_fixed_orient, _reapply_source_weighting, - _make_sparse_stc, + is_fixed_orient, ) all_ch_names = evoked.ch_names diff --git a/examples/inverse/dics_epochs.py b/examples/inverse/dics_epochs.py index 5ea93986fda..6370275e3b2 100644 --- a/examples/inverse/dics_epochs.py +++ b/examples/inverse/dics_epochs.py @@ -17,10 +17,11 @@ # License: BSD-3-Clause import numpy as np + import mne +from mne.beamformer import apply_dics_tfr_epochs, make_dics from mne.datasets import somato -from mne.time_frequency import tfr_morlet, csd_tfr -from mne.beamformer import make_dics, apply_dics_tfr_epochs +from mne.time_frequency import csd_tfr, tfr_morlet print(__doc__) diff --git a/examples/inverse/dics_source_power.py b/examples/inverse/dics_source_power.py index 68925202b17..a140b32e7e4 100644 --- a/examples/inverse/dics_source_power.py +++ b/examples/inverse/dics_source_power.py @@ -21,10 +21,11 @@ # %% import numpy as np + import mne +from mne.beamformer import apply_dics_csd, make_dics from mne.datasets import somato from mne.time_frequency import csd_morlet -from mne.beamformer import make_dics, apply_dics_csd print(__doc__) diff --git a/examples/inverse/evoked_ers_source_power.py b/examples/inverse/evoked_ers_source_power.py index 272b0518293..0ffcf90816d 100644 --- a/examples/inverse/evoked_ers_source_power.py +++ b/examples/inverse/evoked_ers_source_power.py @@ -18,12 +18,13 @@ # %% import numpy as np + import mne +from mne.beamformer import apply_dics_csd, apply_lcmv_cov, make_dics, make_lcmv from mne.cov import compute_covariance from mne.datasets import somato +from mne.minimum_norm import apply_inverse_cov, make_inverse_operator from mne.time_frequency import csd_morlet -from mne.beamformer import make_dics, apply_dics_csd, make_lcmv, apply_lcmv_cov -from mne.minimum_norm import make_inverse_operator, apply_inverse_cov print(__doc__) diff --git a/examples/inverse/gamma_map_inverse.py b/examples/inverse/gamma_map_inverse.py index da38204d3b2..2a11f32fd41 100644 --- a/examples/inverse/gamma_map_inverse.py +++ b/examples/inverse/gamma_map_inverse.py @@ -20,9 +20,9 @@ from mne.datasets import sample from mne.inverse_sparse import gamma_map, make_stc_from_dipoles from mne.viz import ( - plot_sparse_source_estimates, - plot_dipole_locations, plot_dipole_amplitudes, + plot_dipole_locations, + plot_sparse_source_estimates, ) print(__doc__) diff --git a/examples/inverse/label_activation_from_stc.py b/examples/inverse/label_activation_from_stc.py index 358de19bff2..a154b5b1aec 100644 --- a/examples/inverse/label_activation_from_stc.py +++ b/examples/inverse/label_activation_from_stc.py @@ -17,9 +17,10 @@ # %% +import matplotlib.pyplot as plt + import mne from mne.datasets import sample -import matplotlib.pyplot as plt print(__doc__) diff --git a/examples/inverse/label_from_stc.py b/examples/inverse/label_from_stc.py index 39469e8c68b..31d057b92e6 100644 --- a/examples/inverse/label_from_stc.py +++ b/examples/inverse/label_from_stc.py @@ -18,12 +18,12 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne -from mne.minimum_norm import read_inverse_operator, apply_inverse from mne.datasets import sample +from mne.minimum_norm import apply_inverse, read_inverse_operator print(__doc__) diff --git a/examples/inverse/label_source_activations.py b/examples/inverse/label_source_activations.py index 035533b4b9a..060e2506cf9 100644 --- a/examples/inverse/label_source_activations.py +++ b/examples/inverse/label_source_activations.py @@ -18,12 +18,12 @@ # %% -import matplotlib.pyplot as plt import matplotlib.patheffects as path_effects +import matplotlib.pyplot as plt import mne from mne.datasets import sample -from mne.minimum_norm import read_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, read_inverse_operator print(__doc__) diff --git a/examples/inverse/mixed_norm_inverse.py b/examples/inverse/mixed_norm_inverse.py index f64a9f55665..031483ae137 100644 --- a/examples/inverse/mixed_norm_inverse.py +++ b/examples/inverse/mixed_norm_inverse.py @@ -23,12 +23,12 @@ import mne from mne.datasets import sample -from mne.inverse_sparse import mixed_norm, make_stc_from_dipoles -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.inverse_sparse import make_stc_from_dipoles, mixed_norm +from mne.minimum_norm import apply_inverse, make_inverse_operator from mne.viz import ( - plot_sparse_source_estimates, - plot_dipole_locations, plot_dipole_amplitudes, + plot_dipole_locations, + plot_sparse_source_estimates, ) print(__doc__) diff --git a/examples/inverse/mixed_source_space_inverse.py b/examples/inverse/mixed_source_space_inverse.py index f069b5e89ac..ddf3e35db45 100644 --- a/examples/inverse/mixed_source_space_inverse.py +++ b/examples/inverse/mixed_source_space_inverse.py @@ -15,11 +15,10 @@ # %% import matplotlib.pyplot as plt - from nilearn import plotting import mne -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, make_inverse_operator # Set dir data_path = mne.datasets.sample.data_path() diff --git a/examples/inverse/mne_cov_power.py b/examples/inverse/mne_cov_power.py index 592664a72ef..79f3dd08a4e 100644 --- a/examples/inverse/mne_cov_power.py +++ b/examples/inverse/mne_cov_power.py @@ -27,7 +27,7 @@ import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse_cov +from mne.minimum_norm import apply_inverse_cov, make_inverse_operator data_path = sample.data_path() subjects_dir = data_path / "subjects" diff --git a/examples/inverse/morph_volume_stc.py b/examples/inverse/morph_volume_stc.py index adf20db7905..c5fc2b5130c 100644 --- a/examples/inverse/morph_volume_stc.py +++ b/examples/inverse/morph_volume_stc.py @@ -28,10 +28,11 @@ import os import nibabel as nib +from nilearn.plotting import plot_glass_brain + import mne -from mne.datasets import sample, fetch_fsaverage +from mne.datasets import fetch_fsaverage, sample from mne.minimum_norm import apply_inverse, read_inverse_operator -from nilearn.plotting import plot_glass_brain print(__doc__) diff --git a/examples/inverse/multi_dipole_model.py b/examples/inverse/multi_dipole_model.py index 6a66f89f624..b05ead57498 100644 --- a/examples/inverse/multi_dipole_model.py +++ b/examples/inverse/multi_dipole_model.py @@ -30,13 +30,14 @@ ############################################################################### # Importing everything and setting up the data paths for the MNE-Sample # dataset. -import mne -from mne.datasets import sample -from mne.channels import read_vectorview_selection -from mne.minimum_norm import make_inverse_operator, apply_inverse, apply_inverse_epochs import matplotlib.pyplot as plt import numpy as np +import mne +from mne.channels import read_vectorview_selection +from mne.datasets import sample +from mne.minimum_norm import apply_inverse, apply_inverse_epochs, make_inverse_operator + data_path = sample.data_path() meg_path = data_path / "MEG" / "sample" raw_fname = meg_path / "sample_audvis_raw.fif" diff --git a/examples/inverse/multidict_reweighted_tfmxne.py b/examples/inverse/multidict_reweighted_tfmxne.py index dcaaf5575e9..ce45efc8707 100644 --- a/examples/inverse/multidict_reweighted_tfmxne.py +++ b/examples/inverse/multidict_reweighted_tfmxne.py @@ -28,7 +28,7 @@ import mne from mne.datasets import somato -from mne.inverse_sparse import tf_mixed_norm, make_stc_from_dipoles +from mne.inverse_sparse import make_stc_from_dipoles, tf_mixed_norm from mne.viz import plot_sparse_source_estimates print(__doc__) diff --git a/examples/inverse/psf_ctf_label_leakage.py b/examples/inverse/psf_ctf_label_leakage.py index d74663d369a..1ca6d5de8a1 100644 --- a/examples/inverse/psf_ctf_label_leakage.py +++ b/examples/inverse/psf_ctf_label_leakage.py @@ -20,20 +20,18 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from mne_connectivity.viz import plot_connectivity_circle import mne from mne.datasets import sample from mne.minimum_norm import ( - read_inverse_operator, - make_inverse_resolution_matrix, get_point_spread, + make_inverse_resolution_matrix, + read_inverse_operator, ) - from mne.viz import circular_layout -from mne_connectivity.viz import plot_connectivity_circle - print(__doc__) diff --git a/examples/inverse/psf_ctf_vertices.py b/examples/inverse/psf_ctf_vertices.py index 0ec01a865dc..efbfe6ff470 100644 --- a/examples/inverse/psf_ctf_vertices.py +++ b/examples/inverse/psf_ctf_vertices.py @@ -17,9 +17,9 @@ import mne from mne.datasets import sample from mne.minimum_norm import ( - make_inverse_resolution_matrix, get_cross_talk, get_point_spread, + make_inverse_resolution_matrix, ) print(__doc__) diff --git a/examples/inverse/psf_ctf_vertices_lcmv.py b/examples/inverse/psf_ctf_vertices_lcmv.py index 7f3d2a4207e..cd5527c88c9 100644 --- a/examples/inverse/psf_ctf_vertices_lcmv.py +++ b/examples/inverse/psf_ctf_vertices_lcmv.py @@ -16,8 +16,8 @@ # %% import mne -from mne.datasets import sample from mne.beamformer import make_lcmv, make_lcmv_resolution_matrix +from mne.datasets import sample from mne.minimum_norm import get_cross_talk print(__doc__) diff --git a/examples/inverse/psf_volume.py b/examples/inverse/psf_volume.py index f2e465c1b20..1074527d6af 100644 --- a/examples/inverse/psf_volume.py +++ b/examples/inverse/psf_volume.py @@ -19,7 +19,7 @@ import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_resolution_matrix, get_point_spread +from mne.minimum_norm import get_point_spread, make_inverse_resolution_matrix print(__doc__) diff --git a/examples/inverse/rap_music.py b/examples/inverse/rap_music.py index f87d733ef37..4c294d06d7b 100644 --- a/examples/inverse/rap_music.py +++ b/examples/inverse/rap_music.py @@ -16,10 +16,9 @@ # %% import mne - -from mne.datasets import sample from mne.beamformer import rap_music -from mne.viz import plot_dipole_locations, plot_dipole_amplitudes +from mne.datasets import sample +from mne.viz import plot_dipole_amplitudes, plot_dipole_locations print(__doc__) diff --git a/examples/inverse/resolution_metrics.py b/examples/inverse/resolution_metrics.py index e3e98827bea..594a37a5161 100644 --- a/examples/inverse/resolution_metrics.py +++ b/examples/inverse/resolution_metrics.py @@ -19,8 +19,7 @@ import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_resolution_matrix -from mne.minimum_norm import resolution_metrics +from mne.minimum_norm import make_inverse_resolution_matrix, resolution_metrics print(__doc__) diff --git a/examples/inverse/snr_estimate.py b/examples/inverse/snr_estimate.py index 4a88a9d13c4..6422c0a1d05 100644 --- a/examples/inverse/snr_estimate.py +++ b/examples/inverse/snr_estimate.py @@ -14,9 +14,9 @@ # %% +from mne import read_evokeds from mne.datasets.sample import data_path from mne.minimum_norm import read_inverse_operator -from mne import read_evokeds from mne.viz import plot_snr_estimate print(__doc__) diff --git a/examples/inverse/source_space_snr.py b/examples/inverse/source_space_snr.py index c7077d091e5..690f16f7eb8 100644 --- a/examples/inverse/source_space_snr.py +++ b/examples/inverse/source_space_snr.py @@ -17,11 +17,12 @@ # sphinx_gallery_thumbnail_number = 2 +import matplotlib.pyplot as plt +import numpy as np + import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse -import numpy as np -import matplotlib.pyplot as plt +from mne.minimum_norm import apply_inverse, make_inverse_operator print(__doc__) diff --git a/examples/inverse/time_frequency_mixed_norm_inverse.py b/examples/inverse/time_frequency_mixed_norm_inverse.py index dd2b2db2b3a..5d1e680776a 100644 --- a/examples/inverse/time_frequency_mixed_norm_inverse.py +++ b/examples/inverse/time_frequency_mixed_norm_inverse.py @@ -30,12 +30,12 @@ import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse -from mne.inverse_sparse import tf_mixed_norm, make_stc_from_dipoles +from mne.inverse_sparse import make_stc_from_dipoles, tf_mixed_norm +from mne.minimum_norm import apply_inverse, make_inverse_operator from mne.viz import ( - plot_sparse_source_estimates, - plot_dipole_locations, plot_dipole_amplitudes, + plot_dipole_locations, + plot_sparse_source_estimates, ) print(__doc__) diff --git a/examples/inverse/trap_music.py b/examples/inverse/trap_music.py index 6a85d557188..5262b4b9515 100644 --- a/examples/inverse/trap_music.py +++ b/examples/inverse/trap_music.py @@ -16,10 +16,9 @@ # %% import mne - -from mne.datasets import sample from mne.beamformer import trap_music -from mne.viz import plot_dipole_locations, plot_dipole_amplitudes +from mne.datasets import sample +from mne.viz import plot_dipole_amplitudes, plot_dipole_locations print(__doc__) diff --git a/examples/inverse/vector_mne_solution.py b/examples/inverse/vector_mne_solution.py index 2733f40acd1..0511a2c7821 100644 --- a/examples/inverse/vector_mne_solution.py +++ b/examples/inverse/vector_mne_solution.py @@ -26,9 +26,10 @@ # %% import numpy as np + import mne from mne.datasets import sample -from mne.minimum_norm import read_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, read_inverse_operator print(__doc__) diff --git a/examples/io/elekta_epochs.py b/examples/io/elekta_epochs.py index f632b0fbae3..0b8a3a0f162 100644 --- a/examples/io/elekta_epochs.py +++ b/examples/io/elekta_epochs.py @@ -15,8 +15,9 @@ # %% -import mne import os + +import mne from mne.datasets import multimodal fname_raw = os.path.join(multimodal.data_path(), "multimodal_raw.fif") diff --git a/examples/io/read_neo_format.py b/examples/io/read_neo_format.py index 7847e23dcfa..2146764d522 100644 --- a/examples/io/read_neo_format.py +++ b/examples/io/read_neo_format.py @@ -14,6 +14,7 @@ # %% import neo + import mne # %% diff --git a/examples/preprocessing/css.py b/examples/preprocessing/css.py index 73e86c1b389..ab7309d98d3 100644 --- a/examples/preprocessing/css.py +++ b/examples/preprocessing/css.py @@ -17,12 +17,12 @@ """ # Author: John G Samuelsson -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne.datasets import sample -from mne.simulation import simulate_sparse_stc, simulate_evoked +from mne.simulation import simulate_evoked, simulate_sparse_stc ############################################################################### # Load sample subject data diff --git a/examples/preprocessing/define_target_events.py b/examples/preprocessing/define_target_events.py index 51e0fdbb960..86ed28c7505 100644 --- a/examples/preprocessing/define_target_events.py +++ b/examples/preprocessing/define_target_events.py @@ -21,11 +21,12 @@ # %% +import matplotlib.pyplot as plt + import mne from mne import io -from mne.event import define_target_events from mne.datasets import sample -import matplotlib.pyplot as plt +from mne.event import define_target_events print(__doc__) diff --git a/examples/preprocessing/eeg_bridging.py b/examples/preprocessing/eeg_bridging.py index 30cdde8502b..7eadb7239d2 100644 --- a/examples/preprocessing/eeg_bridging.py +++ b/examples/preprocessing/eeg_bridging.py @@ -35,8 +35,8 @@ # sphinx_gallery_thumbnail_number = 2 -import numpy as np import matplotlib.pyplot as plt +import numpy as np from matplotlib.colors import LinearSegmentedColormap import mne diff --git a/examples/preprocessing/eeg_csd.py b/examples/preprocessing/eeg_csd.py index 892f856e75e..98d968d4c94 100644 --- a/examples/preprocessing/eeg_csd.py +++ b/examples/preprocessing/eeg_csd.py @@ -20,8 +20,8 @@ # sphinx_gallery_thumbnail_number = 6 -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne.datasets import sample diff --git a/examples/preprocessing/eog_artifact_histogram.py b/examples/preprocessing/eog_artifact_histogram.py index 2d51370b571..0f9de66fda7 100644 --- a/examples/preprocessing/eog_artifact_histogram.py +++ b/examples/preprocessing/eog_artifact_histogram.py @@ -15,8 +15,8 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne import io diff --git a/examples/preprocessing/eog_regression.py b/examples/preprocessing/eog_regression.py index 2123974dde4..621195d5818 100644 --- a/examples/preprocessing/eog_regression.py +++ b/examples/preprocessing/eog_regression.py @@ -22,10 +22,11 @@ # We begin as always by importing the necessary Python modules and loading some # data, in this case the :ref:`MNE sample dataset `. +from matplotlib import pyplot as plt + import mne from mne.datasets import sample from mne.preprocessing import EOGRegression -from matplotlib import pyplot as plt print(__doc__) diff --git a/examples/preprocessing/find_ref_artifacts.py b/examples/preprocessing/find_ref_artifacts.py index f64e85372a4..ca6a2833298 100644 --- a/examples/preprocessing/find_ref_artifacts.py +++ b/examples/preprocessing/find_ref_artifacts.py @@ -32,11 +32,12 @@ # %% +import numpy as np + import mne from mne import io from mne.datasets import refmeg_noise from mne.preprocessing import ICA -import numpy as np print(__doc__) diff --git a/examples/preprocessing/fnirs_artifact_removal.py b/examples/preprocessing/fnirs_artifact_removal.py index d669d6ce09c..3d842ce92a3 100644 --- a/examples/preprocessing/fnirs_artifact_removal.py +++ b/examples/preprocessing/fnirs_artifact_removal.py @@ -16,8 +16,8 @@ # %% import os -import mne +import mne from mne.preprocessing.nirs import ( optical_density, temporal_derivative_distribution_repair, diff --git a/examples/preprocessing/ica_comparison.py b/examples/preprocessing/ica_comparison.py index 6aa601dd5fa..51d1bc7974e 100644 --- a/examples/preprocessing/ica_comparison.py +++ b/examples/preprocessing/ica_comparison.py @@ -18,9 +18,8 @@ from time import time import mne -from mne.preprocessing import ICA from mne.datasets import sample - +from mne.preprocessing import ICA print(__doc__) diff --git a/examples/preprocessing/muscle_detection.py b/examples/preprocessing/muscle_detection.py index 37bd021d853..011e6c23e30 100644 --- a/examples/preprocessing/muscle_detection.py +++ b/examples/preprocessing/muscle_detection.py @@ -32,11 +32,11 @@ import matplotlib.pyplot as plt import numpy as np + from mne.datasets.brainstorm import bst_auditory from mne.io import read_raw_ctf from mne.preprocessing import annotate_muscle_zscore - # Load data data_path = bst_auditory.data_path() raw_fname = data_path / "MEG" / "bst_auditory" / "S01_AEF_20131218_01.ds" diff --git a/examples/preprocessing/otp.py b/examples/preprocessing/otp.py index a05eaf5c6ce..7e5e28561fb 100644 --- a/examples/preprocessing/otp.py +++ b/examples/preprocessing/otp.py @@ -14,9 +14,9 @@ # %% -import mne import numpy as np +import mne from mne import find_events, fit_dipole from mne.datasets.brainstorm import bst_phantom_elekta from mne.io import read_raw_fif diff --git a/examples/preprocessing/shift_evoked.py b/examples/preprocessing/shift_evoked.py index c16becc679c..27c4bc45f02 100644 --- a/examples/preprocessing/shift_evoked.py +++ b/examples/preprocessing/shift_evoked.py @@ -13,6 +13,7 @@ # %% import matplotlib.pyplot as plt + import mne from mne.datasets import sample diff --git a/examples/preprocessing/xdawn_denoising.py b/examples/preprocessing/xdawn_denoising.py index b6eed43d142..67082d60947 100644 --- a/examples/preprocessing/xdawn_denoising.py +++ b/examples/preprocessing/xdawn_denoising.py @@ -25,7 +25,7 @@ # %% -from mne import io, compute_raw_covariance, read_events, pick_types, Epochs +from mne import Epochs, compute_raw_covariance, io, pick_types, read_events from mne.datasets import sample from mne.preprocessing import Xdawn from mne.viz import plot_epochs_image diff --git a/examples/simulation/plot_stc_metrics.py b/examples/simulation/plot_stc_metrics.py index 105c66d7e12..f7dfa657569 100644 --- a/examples/simulation/plot_stc_metrics.py +++ b/examples/simulation/plot_stc_metrics.py @@ -13,20 +13,21 @@ # # License: BSD (3-clause) -import numpy as np -import matplotlib.pyplot as plt from functools import partial +import matplotlib.pyplot as plt +import numpy as np + import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, make_inverse_operator from mne.simulation.metrics import ( - region_localization_error, + cosine_score, f1_score, + peak_position_error, precision_score, recall_score, - cosine_score, - peak_position_error, + region_localization_error, spatial_deviation_error, ) diff --git a/examples/simulation/simulate_evoked_data.py b/examples/simulation/simulate_evoked_data.py index 0a8d69a66ed..8f09c12e40c 100644 --- a/examples/simulation/simulate_evoked_data.py +++ b/examples/simulation/simulate_evoked_data.py @@ -14,14 +14,14 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne.datasets import sample +from mne.simulation import simulate_evoked, simulate_sparse_stc from mne.time_frequency import fit_iir_model_raw from mne.viz import plot_sparse_source_estimates -from mne.simulation import simulate_sparse_stc, simulate_evoked print(__doc__) diff --git a/examples/simulation/simulate_raw_data.py b/examples/simulation/simulate_raw_data.py index 902429717c2..4cf88a9930b 100644 --- a/examples/simulation/simulate_raw_data.py +++ b/examples/simulation/simulate_raw_data.py @@ -16,18 +16,18 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne -from mne import find_events, Epochs, compute_covariance, make_ad_hoc_cov +from mne import Epochs, compute_covariance, find_events, make_ad_hoc_cov from mne.datasets import sample from mne.simulation import ( - simulate_sparse_stc, - simulate_raw, - add_noise, add_ecg, add_eog, + add_noise, + simulate_raw, + simulate_sparse_stc, ) print(__doc__) @@ -50,7 +50,7 @@ def data_fun(times): - """Generate time-staggered sinusoids at harmonics of 10Hz""" + """Generate time-staggered sinusoids at harmonics of 10Hz.""" global n n_samp = len(times) window = np.zeros(n_samp) diff --git a/examples/stats/cluster_stats_evoked.py b/examples/stats/cluster_stats_evoked.py index 1e21cdb7617..112ee80d9ab 100644 --- a/examples/stats/cluster_stats_evoked.py +++ b/examples/stats/cluster_stats_evoked.py @@ -20,8 +20,8 @@ import mne from mne import io -from mne.stats import permutation_cluster_test from mne.datasets import sample +from mne.stats import permutation_cluster_test print(__doc__) diff --git a/examples/stats/fdr_stats_evoked.py b/examples/stats/fdr_stats_evoked.py index 94239f887df..0b0b1b5f935 100644 --- a/examples/stats/fdr_stats_evoked.py +++ b/examples/stats/fdr_stats_evoked.py @@ -16,9 +16,9 @@ # %% +import matplotlib.pyplot as plt import numpy as np from scipy import stats -import matplotlib.pyplot as plt import mne from mne import io diff --git a/examples/stats/sensor_permutation_test.py b/examples/stats/sensor_permutation_test.py index 5edca4f605a..ee548b364f3 100644 --- a/examples/stats/sensor_permutation_test.py +++ b/examples/stats/sensor_permutation_test.py @@ -20,8 +20,8 @@ import mne from mne import io -from mne.stats import permutation_t_test from mne.datasets import sample +from mne.stats import permutation_t_test print(__doc__) diff --git a/examples/stats/sensor_regression.py b/examples/stats/sensor_regression.py index 2b17927b28b..4d5b02782f3 100644 --- a/examples/stats/sensor_regression.py +++ b/examples/stats/sensor_regression.py @@ -32,10 +32,11 @@ # %% import pandas as pd + import mne -from mne.stats import linear_regression, fdr_correction -from mne.viz import plot_compare_evokeds from mne.datasets import kiloword +from mne.stats import fdr_correction, linear_regression +from mne.viz import plot_compare_evokeds # Load the data path = kiloword.data_path() / "kword_metadata-epo.fif" diff --git a/examples/time_frequency/compute_csd.py b/examples/time_frequency/compute_csd.py index 0de5482be1e..b87f284ec63 100644 --- a/examples/time_frequency/compute_csd.py +++ b/examples/time_frequency/compute_csd.py @@ -22,7 +22,7 @@ # %% import mne from mne.datasets import sample -from mne.time_frequency import csd_fourier, csd_multitaper, csd_morlet +from mne.time_frequency import csd_fourier, csd_morlet, csd_multitaper print(__doc__) diff --git a/examples/time_frequency/compute_source_psd_epochs.py b/examples/time_frequency/compute_source_psd_epochs.py index 745fc69717e..e28e28bf5e9 100644 --- a/examples/time_frequency/compute_source_psd_epochs.py +++ b/examples/time_frequency/compute_source_psd_epochs.py @@ -19,7 +19,7 @@ import mne from mne.datasets import sample -from mne.minimum_norm import read_inverse_operator, compute_source_psd_epochs +from mne.minimum_norm import compute_source_psd_epochs, read_inverse_operator print(__doc__) diff --git a/examples/time_frequency/source_label_time_frequency.py b/examples/time_frequency/source_label_time_frequency.py index 2e7cc4d3592..f88d1ce2c50 100644 --- a/examples/time_frequency/source_label_time_frequency.py +++ b/examples/time_frequency/source_label_time_frequency.py @@ -19,8 +19,8 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne import io diff --git a/examples/time_frequency/source_power_spectrum.py b/examples/time_frequency/source_power_spectrum.py index a2aab813930..5eaec30cb78 100644 --- a/examples/time_frequency/source_power_spectrum.py +++ b/examples/time_frequency/source_power_spectrum.py @@ -19,7 +19,7 @@ import mne from mne import io from mne.datasets import sample -from mne.minimum_norm import read_inverse_operator, compute_source_psd +from mne.minimum_norm import compute_source_psd, read_inverse_operator print(__doc__) diff --git a/examples/time_frequency/temporal_whitening.py b/examples/time_frequency/temporal_whitening.py index de70216461b..38863baf227 100644 --- a/examples/time_frequency/temporal_whitening.py +++ b/examples/time_frequency/temporal_whitening.py @@ -15,13 +15,13 @@ # %% +import matplotlib.pyplot as plt import numpy as np from scipy import signal -import matplotlib.pyplot as plt import mne -from mne.time_frequency import fit_iir_model_raw from mne.datasets import sample +from mne.time_frequency import fit_iir_model_raw print(__doc__) diff --git a/examples/time_frequency/time_frequency_erds.py b/examples/time_frequency/time_frequency_erds.py index 5b4040b608e..8f7f9a9d5fd 100644 --- a/examples/time_frequency/time_frequency_erds.py +++ b/examples/time_frequency/time_frequency_erds.py @@ -34,16 +34,17 @@ # %% # As usual, we import everything we need. -import numpy as np import matplotlib.pyplot as plt -from matplotlib.colors import TwoSlopeNorm +import numpy as np import pandas as pd import seaborn as sns +from matplotlib.colors import TwoSlopeNorm + import mne from mne.datasets import eegbci from mne.io import concatenate_raws, read_raw_edf -from mne.time_frequency import tfr_multitaper from mne.stats import permutation_cluster_1samp_test as pcluster_test +from mne.time_frequency import tfr_multitaper # %% # First, we load and preprocess the data. We use runs 6, 10, and 14 from diff --git a/examples/time_frequency/time_frequency_simulated.py b/examples/time_frequency/time_frequency_simulated.py index c6f00a9da32..7b3a08faee5 100644 --- a/examples/time_frequency/time_frequency_simulated.py +++ b/examples/time_frequency/time_frequency_simulated.py @@ -23,15 +23,15 @@ import numpy as np from matplotlib import pyplot as plt -from mne import create_info, Epochs +from mne import Epochs, create_info from mne.baseline import rescale from mne.io import RawArray from mne.time_frequency import ( + AverageTFR, + tfr_array_morlet, + tfr_morlet, tfr_multitaper, tfr_stockwell, - tfr_morlet, - tfr_array_morlet, - AverageTFR, ) from mne.viz import centers_to_edges diff --git a/examples/visualization/3d_to_2d.py b/examples/visualization/3d_to_2d.py index 966e97f76ac..586f8bac734 100644 --- a/examples/visualization/3d_to_2d.py +++ b/examples/visualization/3d_to_2d.py @@ -30,8 +30,12 @@ import mne from mne.io.fiff.raw import read_raw_fif -from mne.viz import ClickableImage # noqa: F401 -from mne.viz import plot_alignment, set_3d_view, snapshot_brain_montage +from mne.viz import ( + ClickableImage, # noqa: F401 + plot_alignment, + set_3d_view, + snapshot_brain_montage, +) misc_path = mne.datasets.misc.data_path() subjects_dir = misc_path / "ecog" diff --git a/examples/visualization/channel_epochs_image.py b/examples/visualization/channel_epochs_image.py index 618330ec44d..86c8f626db2 100644 --- a/examples/visualization/channel_epochs_image.py +++ b/examples/visualization/channel_epochs_image.py @@ -20,8 +20,8 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne import io diff --git a/examples/visualization/evoked_arrowmap.py b/examples/visualization/evoked_arrowmap.py index 312b1166370..01bb7bfb405 100644 --- a/examples/visualization/evoked_arrowmap.py +++ b/examples/visualization/evoked_arrowmap.py @@ -24,10 +24,11 @@ # %% import numpy as np + import mne +from mne import read_evokeds from mne.datasets import sample from mne.datasets.brainstorm import bst_raw -from mne import read_evokeds from mne.viz import plot_arrowmap print(__doc__) diff --git a/examples/visualization/evoked_topomap.py b/examples/visualization/evoked_topomap.py index dfd6be7f0f3..0f64f60cfe6 100644 --- a/examples/visualization/evoked_topomap.py +++ b/examples/visualization/evoked_topomap.py @@ -20,11 +20,11 @@ # %% # sphinx_gallery_thumbnail_number = 5 -import numpy as np import matplotlib.pyplot as plt +import numpy as np -from mne.datasets import sample from mne import read_evokeds +from mne.datasets import sample print(__doc__) diff --git a/examples/visualization/evoked_whitening.py b/examples/visualization/evoked_whitening.py index 1d1575a83b6..ce460778b07 100644 --- a/examples/visualization/evoked_whitening.py +++ b/examples/visualization/evoked_whitening.py @@ -24,10 +24,9 @@ # %% import mne - from mne import io -from mne.datasets import sample from mne.cov import compute_covariance +from mne.datasets import sample print(__doc__) diff --git a/examples/visualization/montage_sgskip.py b/examples/visualization/montage_sgskip.py index 521e4e87a16..95e9912c47d 100644 --- a/examples/visualization/montage_sgskip.py +++ b/examples/visualization/montage_sgskip.py @@ -15,6 +15,7 @@ # %% import os.path as op + import numpy as np import mne @@ -22,7 +23,6 @@ from mne.datasets import fetch_fsaverage from mne.viz import set_3d_title, set_3d_view - # %% # Check all montages against a sphere diff --git a/examples/visualization/roi_erpimage_by_rt.py b/examples/visualization/roi_erpimage_by_rt.py index 02264d8263e..770fa2e13e3 100644 --- a/examples/visualization/roi_erpimage_by_rt.py +++ b/examples/visualization/roi_erpimage_by_rt.py @@ -22,8 +22,8 @@ # %% import mne -from mne.event import define_target_events from mne.channels import make_1020_channel_selections +from mne.event import define_target_events print(__doc__) diff --git a/examples/visualization/ssp_projs_sensitivity_map.py b/examples/visualization/ssp_projs_sensitivity_map.py index d51c498e423..02e8efa45ec 100644 --- a/examples/visualization/ssp_projs_sensitivity_map.py +++ b/examples/visualization/ssp_projs_sensitivity_map.py @@ -17,7 +17,6 @@ import matplotlib.pyplot as plt from mne import read_forward_solution, read_proj, sensitivity_map - from mne.datasets import sample print(__doc__) diff --git a/examples/visualization/topo_compare_conditions.py b/examples/visualization/topo_compare_conditions.py index 742565fc1fd..208f5f16125 100644 --- a/examples/visualization/topo_compare_conditions.py +++ b/examples/visualization/topo_compare_conditions.py @@ -20,10 +20,10 @@ import matplotlib.pyplot as plt -import mne -from mne.viz import plot_evoked_topo +import mne from mne.datasets import sample +from mne.viz import plot_evoked_topo print(__doc__) diff --git a/examples/visualization/topo_customized.py b/examples/visualization/topo_customized.py index 02c0435b25f..62052d65aa9 100644 --- a/examples/visualization/topo_customized.py +++ b/examples/visualization/topo_customized.py @@ -19,13 +19,13 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne -from mne.viz import iter_topography from mne import io from mne.datasets import sample +from mne.viz import iter_topography print(__doc__) diff --git a/mne/__init__.pyi b/mne/__init__.pyi index 5492a3dfdb5..d4895473c16 100644 --- a/mne/__init__.pyi +++ b/mne/__init__.pyi @@ -221,13 +221,32 @@ from . import ( minimum_norm, preprocessing, report, - source_space, simulation, + source_space, stats, surface, time_frequency, viz, ) +from ._fiff.meas_info import Info, create_info +from ._fiff.pick import ( + channel_indices_by_type, + channel_type, + pick_channels, + pick_channels_cov, + pick_channels_forward, + pick_channels_regexp, + pick_info, + pick_types, + pick_types_forward, +) +from ._fiff.proj import Projection +from ._fiff.reference import ( + add_reference_channels, + set_bipolar_reference, + set_eeg_reference, +) +from ._fiff.what import what from ._freesurfer import ( get_volume_labels_from_aseg, head_to_mni, @@ -256,9 +275,9 @@ from .bem import ( ) from .channels import ( equalize_channels, - rename_channels, find_layout, read_vectorview_selection, + rename_channels, ) from .coreg import ( create_default_subject, @@ -300,8 +319,8 @@ from .event import ( from .evoked import Evoked, EvokedArray, combine_evoked, read_evokeds, write_evokeds from .forward import ( Forward, - apply_forward_raw, apply_forward, + apply_forward_raw, average_forward_solutions, convert_forward_solution, make_field_map, @@ -320,30 +339,11 @@ from .io import ( from .io.base import concatenate_raws, match_channel_orders from .io.eeglab import read_epochs_eeglab from .io.kit import read_epochs_kit -from ._fiff.meas_info import Info, create_info -from ._fiff.pick import ( - channel_indices_by_type, - channel_type, - pick_channels_cov, - pick_channels_forward, - pick_channels_regexp, - pick_channels, - pick_info, - pick_types_forward, - pick_types, -) -from ._fiff.proj import Projection -from ._fiff.reference import ( - add_reference_channels, - set_bipolar_reference, - set_eeg_reference, -) -from ._fiff.what import what from .label import ( BiHemiLabel, + Label, grow_labels, label_sign_flip, - Label, labels_to_stc, morph_labels, random_parcellation, @@ -355,13 +355,13 @@ from .label import ( write_labels_to_annot, ) from .misc import parse_config, read_reject_parameters -from .morph_map import read_morph_map from .morph import ( SourceMorph, compute_source_morph, grade_to_vertices, read_source_morph, ) +from .morph_map import read_morph_map from .proj import ( compute_proj_epochs, compute_proj_evoked, @@ -413,8 +413,8 @@ from .surface import ( ) from .transforms import Transform, read_trans, transform_surface_to, write_trans from .utils import ( - get_config_path, get_config, + get_config_path, grand_average, open_docs, set_cache_dir, diff --git a/mne/_fiff/_digitization.py b/mne/_fiff/_digitization.py index e70a9410af5..932429d9a11 100644 --- a/mne/_fiff/_digitization.py +++ b/mne/_fiff/_digitization.py @@ -11,11 +11,10 @@ import numpy as np -from ..utils import logger, warn, Bunch, _validate_type, _check_fname, verbose - +from ..utils import Bunch, _check_fname, _validate_type, logger, verbose, warn from .constants import FIFF, _coord_frame_named -from .tree import dir_tree_find from .tag import read_tag +from .tree import dir_tree_find from .write import start_and_end_file, write_dig_points _dig_kind_dict = { @@ -524,8 +523,8 @@ def _make_dig_points( def _call_make_dig_points(nasion, lpa, rpa, hpi, extra, convert=True): from ..transforms import ( - apply_trans, Transform, + apply_trans, get_ras_to_neuromag_trans, ) diff --git a/mne/_fiff/compensator.py b/mne/_fiff/compensator.py index 2a5334e7138..6b28c94d9ab 100644 --- a/mne/_fiff/compensator.py +++ b/mne/_fiff/compensator.py @@ -1,7 +1,7 @@ import numpy as np -from .constants import FIFF from ..utils import fill_doc +from .constants import FIFF def get_current_comp(info): diff --git a/mne/_fiff/ctf_comp.py b/mne/_fiff/ctf_comp.py index a16d1c79607..6fc2aa90c0b 100644 --- a/mne/_fiff/ctf_comp.py +++ b/mne/_fiff/ctf_comp.py @@ -8,13 +8,12 @@ import numpy as np +from ..utils import _pl, logger, verbose from .constants import FIFF +from .matrix import _read_named_matrix, write_named_matrix from .tag import read_tag from .tree import dir_tree_find -from .write import start_block, end_block, write_int -from .matrix import write_named_matrix, _read_named_matrix - -from ..utils import logger, verbose, _pl +from .write import end_block, start_block, write_int def _add_kind(one): diff --git a/mne/_fiff/matrix.py b/mne/_fiff/matrix.py index 3699278d2de..189f0dbf227 100644 --- a/mne/_fiff/matrix.py +++ b/mne/_fiff/matrix.py @@ -3,16 +3,16 @@ # # License: BSD-3-Clause +from ..utils import logger from .constants import FIFF from .tag import find_tag, has_tag from .write import ( - write_int, - start_block, end_block, + start_block, write_float_matrix, + write_int, write_name_list, ) -from ..utils import logger def _transpose_named_matrix(mat): diff --git a/mne/_fiff/meas_info.py b/mne/_fiff/meas_info.py index f1e67fa8306..7b74e8c0ead 100644 --- a/mne/_fiff/meas_info.py +++ b/mne/_fiff/meas_info.py @@ -5,97 +5,97 @@ # # License: BSD-3-Clause -from collections import Counter, OrderedDict -from collections.abc import Mapping import contextlib -from copy import deepcopy import datetime -from io import BytesIO import operator -from textwrap import shorten import string import uuid +from collections import Counter, OrderedDict +from collections.abc import Mapping +from copy import deepcopy +from io import BytesIO +from textwrap import shorten import numpy as np +from ..defaults import _handle_default +from ..html_templates import _get_html_template +from ..utils import ( + _check_fname, + _check_on_missing, + _check_option, + _dt_to_stamp, + _is_numeric, + _on_missing, + _pl, + _stamp_to_dt, + _validate_type, + check_fname, + fill_doc, + logger, + object_diff, + repr_html, + verbose, + warn, +) +from ._digitization import ( + DigPoint, + _dig_kind_ints, + _dig_kind_proper, + _dig_kind_rev, + _format_dig_points, + _get_data_as_dict_from_dig, + _read_dig_fif, + write_dig, +) +from .compensator import get_current_comp +from .constants import FIFF, _ch_unit_mul_named, _coord_frame_named +from .ctf_comp import _read_ctf_comp, write_ctf_comp +from .open import fiff_open from .pick import ( + _DATA_CH_TYPES_SPLIT, + _contains_ch_type, + _picks_to_idx, channel_type, get_channel_type_constants, pick_types, - _picks_to_idx, - _contains_ch_type, - _DATA_CH_TYPES_SPLIT, -) -from .constants import FIFF, _coord_frame_named, _ch_unit_mul_named -from .open import fiff_open -from .tree import dir_tree_find -from .tag import ( - read_tag, - find_tag, - _ch_coord_dict, - _update_ch_info_named, - _rename_list, - _int_item, - _float_item, ) +from .proc_history import _read_proc_history, _write_proc_history from .proj import ( - _read_proj, - _write_proj, - _uniquify_projs, + Projection, _normalize_proj, _proj_equal, - Projection, + _read_proj, + _uniquify_projs, + _write_proj, ) -from .ctf_comp import _read_ctf_comp, write_ctf_comp +from .tag import ( + _ch_coord_dict, + _float_item, + _int_item, + _rename_list, + _update_ch_info_named, + find_tag, + read_tag, +) +from .tree import dir_tree_find from .write import ( + DATE_NONE, + _safe_name_list, + end_block, start_and_end_file, start_block, - end_block, - write_string, + write_ch_info, + write_coord_trans, write_dig_points, write_float, - write_int, - write_coord_trans, - write_ch_info, - write_julian, write_float_matrix, write_id, - DATE_NONE, - _safe_name_list, + write_int, + write_julian, write_name_list_sanitized, + write_string, ) -from .proc_history import _read_proc_history, _write_proc_history -from ..html_templates import _get_html_template -from ..utils import ( - logger, - verbose, - warn, - object_diff, - _validate_type, - _stamp_to_dt, - _dt_to_stamp, - _pl, - _is_numeric, - _check_option, - _on_missing, - _check_on_missing, - fill_doc, - _check_fname, - check_fname, - repr_html, -) -from ._digitization import ( - _format_dig_points, - _dig_kind_proper, - DigPoint, - _dig_kind_rev, - _dig_kind_ints, - _read_dig_fif, -) -from ._digitization import write_dig, _get_data_as_dict_from_dig -from .compensator import get_current_comp -from ..defaults import _handle_default - b = bytes # alias @@ -636,8 +636,8 @@ def rename_channels(self, mapping, allow_duplicates=False, *, verbose=None): ----- .. versionadded:: 0.9.0 """ - from ..io import BaseRaw from ..channels.channels import rename_channels + from ..io import BaseRaw info = self if isinstance(self, Info) else self.info @@ -1638,7 +1638,7 @@ def normalize_proj(self): def __repr__(self): """Summarize info instead of printing all.""" from ..io.kit.constants import KIT_SYSNAMES - from ..transforms import _coord_frame_name, Transform + from ..transforms import Transform, _coord_frame_name MAX_WIDTH = 68 strs = [" # # License: BSD-3-Clause -from collections import OrderedDict import csv - import os.path as op -import numpy as np - +from collections import OrderedDict from functools import partial + +import numpy as np from defusedxml import ElementTree -from .montage import make_dig_montage from .._freesurfer import get_mni_fiducials from ..transforms import _sph_to_cart -from ..utils import warn, _pl +from ..utils import _pl, warn from . import __file__ as _CHANNELS_INIT_FILE +from .montage import make_dig_montage MONTAGE_PATH = op.join(op.dirname(_CHANNELS_INIT_FILE), "data", "montages") diff --git a/mne/channels/channels.py b/mne/channels/channels.py index 3ec53636a15..2fb73fa5654 100644 --- a/mne/channels/channels.py +++ b/mne/channels/channels.py @@ -12,13 +12,13 @@ import os.path as op -from pathlib import Path +import string import sys from collections import OrderedDict -from dataclasses import dataclass from copy import deepcopy +from dataclasses import dataclass from functools import partial -import string +from pathlib import Path from typing import Union import numpy as np @@ -27,45 +27,45 @@ from scipy.spatial import Delaunay from scipy.stats import zscore -from ..bem import _check_origin -from ..defaults import HEAD_SIZE_DEFAULT, _handle_default -from ..utils import ( - verbose, - logger, - warn, - _check_preload, - _validate_type, - fill_doc, - _check_option, - _get_stim_channel, - _check_fname, - _check_dict_keys, - _on_missing, - legacy, -) from .._fiff.constants import FIFF from .._fiff.meas_info import ( # noqa F401 Info, MontageMixin, - create_info, - _rename_comps, _merge_info, + _rename_comps, _unit2human, # TODO: pybv relies on this, should be made public + create_info, ) from .._fiff.pick import ( - channel_type, - pick_info, - pick_types, - _picks_by_type, _check_excludes_includes, + _pick_data_channels, + _picks_by_type, + _picks_to_idx, channel_indices_by_type, + channel_type, pick_channels, - _picks_to_idx, - _pick_data_channels, + pick_info, + pick_types, ) -from .._fiff.reference import set_eeg_reference, add_reference_channels -from .._fiff.tag import _rename_list from .._fiff.proj import setup_proj +from .._fiff.reference import add_reference_channels, set_eeg_reference +from .._fiff.tag import _rename_list +from ..bem import _check_origin +from ..defaults import HEAD_SIZE_DEFAULT, _handle_default +from ..utils import ( + _check_dict_keys, + _check_fname, + _check_option, + _check_preload, + _get_stim_channel, + _on_missing, + _validate_type, + fill_doc, + legacy, + logger, + verbose, + warn, +) def _get_meg_system(info): @@ -143,11 +143,11 @@ def equalize_channels(instances, copy=True, verbose=None): This function operates inplace. """ from ..cov import Covariance - from ..io import BaseRaw from ..epochs import BaseEpochs from ..evoked import Evoked from ..forward import Forward - from ..time_frequency import _BaseTFR, CrossSpectralDensity + from ..io import BaseRaw + from ..time_frequency import CrossSpectralDensity, _BaseTFR # Instances need to have a `ch_names` attribute and a `pick_channels` # method that supports `ordered=True`. @@ -239,9 +239,9 @@ def unify_bad_channels(insts): .. versionadded:: 1.6 """ - from ..io import BaseRaw from ..epochs import Epochs from ..evoked import Evoked + from ..io import BaseRaw from ..time_frequency.spectrum import BaseSpectrum # ensure input is list-like @@ -693,8 +693,8 @@ def add_channels(self, add_list, force_update_info=False): :obj:`numpy.memmap` instance, the memmap will be resized. """ # avoid circular imports - from ..io import BaseRaw from ..epochs import BaseEpochs + from ..io import BaseRaw _validate_type(add_list, (list, tuple), "Input") @@ -1585,8 +1585,8 @@ def _compute_ch_adjacency(info, ch_type): ch_names : list The list of channel names present in adjacency matrix. """ - from ..source_estimate import spatial_tris_adjacency from ..channels.layout import _find_topomap_coords, _pair_grad_sensors + from ..source_estimate import spatial_tris_adjacency combine_grads = ch_type == "grad" and any( [ @@ -1882,9 +1882,9 @@ def combine_channels( one virtual channel for each group in ``groups`` (and, if ``keep_stim`` is ``True``, also containing stimulus channels). """ - from ..io import BaseRaw, RawArray from ..epochs import BaseEpochs, EpochsArray from ..evoked import Evoked, EvokedArray + from ..io import BaseRaw, RawArray ch_axis = 1 if isinstance(inst, BaseEpochs) else 0 ch_idx = list(range(inst.info["nchan"])) diff --git a/mne/channels/interpolation.py b/mne/channels/interpolation.py index 8f5418f9b85..3b7eebac419 100644 --- a/mne/channels/interpolation.py +++ b/mne/channels/interpolation.py @@ -8,11 +8,10 @@ from scipy.linalg import pinv from scipy.spatial.distance import pdist, squareform -from ..utils import logger, warn, verbose from .._fiff.meas_info import _simplify_info -from .._fiff.pick import pick_types, pick_channels, pick_info +from .._fiff.pick import pick_channels, pick_info, pick_types from ..surface import _normalize_vectors -from ..utils import _check_option, _validate_type +from ..utils import _check_option, _validate_type, logger, verbose, warn def _calc_h(cosang, stiffness=4, n_legendre_terms=50): @@ -121,9 +120,9 @@ def _make_interpolation_matrix(pos_from, pos_to, alpha=1e-5): def _do_interp_dots(inst, interpolation, goods_idx, bads_idx): """Dot product of channel mapping matrix to channel data.""" - from ..io import BaseRaw from ..epochs import BaseEpochs from ..evoked import Evoked + from ..io import BaseRaw _validate_type(inst, (BaseRaw, BaseEpochs, Evoked), "inst") inst._data[..., bads_idx, :] = np.matmul( diff --git a/mne/channels/layout.py b/mne/channels/layout.py index 1604ca0d260..10b341d36b4 100644 --- a/mne/channels/layout.py +++ b/mne/channels/layout.py @@ -17,22 +17,22 @@ import numpy as np from scipy.spatial.distance import pdist, squareform -from ..transforms import _pol_to_cart, _cart_to_sph -from .._fiff.pick import pick_types, _picks_to_idx, _FNIRS_CH_TYPES_SPLIT from .._fiff.constants import FIFF from .._fiff.meas_info import Info +from .._fiff.pick import _FNIRS_CH_TYPES_SPLIT, _picks_to_idx, pick_types +from ..transforms import _cart_to_sph, _pol_to_cart from ..utils import ( - _clean_names, - warn, _check_ch_locs, - fill_doc, _check_fname, _check_option, _check_sphere, + _clean_names, + fill_doc, logger, + warn, ) -from .channels import _get_ch_info from ..viz.topomap import plot_layout +from .channels import _get_ch_info class Layout: diff --git a/mne/channels/montage.py b/mne/channels/montage.py index f23547b2ad5..b442c905908 100644 --- a/mne/channels/montage.py +++ b/mne/channels/montage.py @@ -11,60 +11,58 @@ # # License: Simplified BSD -from collections import OrderedDict -from dataclasses import dataclass -from copy import deepcopy import os.path as op import re +from collections import OrderedDict +from copy import deepcopy +from dataclasses import dataclass import numpy as np -from ..defaults import HEAD_SIZE_DEFAULT -from .._freesurfer import get_mni_fiducials -from ..viz import plot_montage -from ..transforms import ( - apply_trans, - get_ras_to_neuromag_trans, - _sph_to_cart, - _topo_to_sph, - _frame_to_str, - Transform, - _verbose_frames, - _fit_matched_points, - _quat_to_affine, - _ensure_trans, -) from .._fiff._digitization import ( + _coord_frame_const, _count_points_by_type, _ensure_fiducials_head, + _format_dig_points, + _get_data_as_dict_from_dig, _get_dig_eeg, + _get_fid_coords, _make_dig_points, - write_dig, _read_dig_fif, - _format_dig_points, - _get_fid_coords, - _coord_frame_const, - _get_data_as_dict_from_dig, + write_dig, ) +from .._fiff.constants import CHANNEL_LOC_ALIASES, FIFF from .._fiff.meas_info import create_info from .._fiff.open import fiff_open -from .._fiff.pick import pick_types, _picks_to_idx, channel_type -from .._fiff.constants import FIFF, CHANNEL_LOC_ALIASES +from .._fiff.pick import _picks_to_idx, channel_type, pick_types +from .._freesurfer import get_mni_fiducials +from ..defaults import HEAD_SIZE_DEFAULT +from ..transforms import ( + Transform, + _ensure_trans, + _fit_matched_points, + _frame_to_str, + _quat_to_affine, + _sph_to_cart, + _topo_to_sph, + _verbose_frames, + apply_trans, + get_ras_to_neuromag_trans, +) from ..utils import ( - warn, - copy_function_doc_to_method_doc, - _pl, - verbose, - _check_option, - _validate_type, _check_fname, + _check_option, _on_missing, + _pl, + _validate_type, + copy_function_doc_to_method_doc, fill_doc, + verbose, + warn, ) from ..utils.docs import docdict - -from ._dig_montage_utils import _read_dig_montage_egi -from ._dig_montage_utils import _parse_brainvision_dig_montage +from ..viz import plot_montage +from ._dig_montage_utils import _parse_brainvision_dig_montage, _read_dig_montage_egi @dataclass @@ -928,7 +926,7 @@ def read_dig_hpts(fname, unit="mm"): eeg F7 -6.1042 -68.2969 45.4939 ... """ - from ._standard_montage_utils import _str_names, _str + from ._standard_montage_utils import _str, _str_names fname = _check_fname(fname, overwrite="read", must_exist=True) _scale = _check_unit_and_get_scaling(unit) @@ -1592,12 +1590,12 @@ def read_custom_montage(fname, head_size=HEAD_SIZE_DEFAULT, coord_frame=None): :func:`make_dig_montage` that takes arrays as input. """ from ._standard_montage_utils import ( - _read_theta_phi_in_degrees, - _read_sfp, + _read_brainvision, _read_csd, _read_elc, _read_elp_besa, - _read_brainvision, + _read_sfp, + _read_theta_phi_in_degrees, _read_xyz, ) diff --git a/mne/channels/tests/test_channels.py b/mne/channels/tests/test_channels.py index 1ba186b4218..7e27f301048 100644 --- a/mne/channels/tests/test_channels.py +++ b/mne/channels/tests/test_channels.py @@ -3,53 +3,53 @@ # # License: BSD-3-Clause -from pathlib import Path +import hashlib from copy import deepcopy from functools import partial -import hashlib +from pathlib import Path -import pytest import numpy as np +import pytest +from numpy.testing import assert_allclose, assert_array_equal, assert_equal from scipy.io import savemat -from numpy.testing import assert_array_equal, assert_equal, assert_allclose +from mne import ( + Epochs, + EpochsArray, + EvokedArray, + create_info, + make_ad_hoc_cov, + pick_channels, + pick_types, + read_events, +) +from mne._fiff.constants import FIFF, _ch_unit_mul_named from mne.channels import ( - rename_channels, - read_ch_adjacency, combine_channels, + equalize_channels, find_ch_adjacency, + get_builtin_ch_adjacencies, make_1020_channel_selections, + read_ch_adjacency, read_custom_montage, - equalize_channels, - get_builtin_ch_adjacencies, + rename_channels, ) from mne.channels.channels import ( - _ch_neighbor_adjacency, - _compute_ch_adjacency, _BUILTIN_CHANNEL_ADJACENCIES, _BuiltinChannelAdjacency, + _ch_neighbor_adjacency, + _compute_ch_adjacency, ) +from mne.datasets import testing from mne.io import ( + RawArray, read_info, - read_raw_fif, - read_raw_ctf, read_raw_bti, + read_raw_ctf, read_raw_eeglab, + read_raw_fif, read_raw_kit, - RawArray, ) -from mne._fiff.constants import FIFF, _ch_unit_mul_named -from mne import ( - pick_types, - pick_channels, - EpochsArray, - EvokedArray, - make_ad_hoc_cov, - create_info, - read_events, - Epochs, -) -from mne.datasets import testing from mne.parallel import parallel_func from mne.utils import requires_good_network diff --git a/mne/channels/tests/test_interpolation.py b/mne/channels/tests/test_interpolation.py index 9e8032c915b..1eabb64de91 100644 --- a/mne/channels/tests/test_interpolation.py +++ b/mne/channels/tests/test_interpolation.py @@ -1,23 +1,22 @@ +from itertools import compress from pathlib import Path import numpy as np -from numpy.testing import assert_allclose, assert_array_equal import pytest -from itertools import compress +from numpy.testing import assert_allclose, assert_array_equal -from mne import io, pick_types, pick_channels, read_events, Epochs +from mne import Epochs, io, pick_channels, pick_types, read_events +from mne._fiff.proj import _has_eeg_average_ref_proj from mne.channels.interpolation import _make_interpolation_matrix from mne.datasets import testing +from mne.io import read_raw_nirx from mne.preprocessing.nirs import ( + beer_lambert_law, optical_density, scalp_coupling_index, - beer_lambert_law, ) -from mne.io import read_raw_nirx -from mne._fiff.proj import _has_eeg_average_ref_proj from mne.utils import _record_warnings - base_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = base_dir / "test_raw.fif" event_name = base_dir / "test-eve.fif" diff --git a/mne/channels/tests/test_layout.py b/mne/channels/tests/test_layout.py index b4a59720775..97fc882a666 100644 --- a/mne/channels/tests/test_layout.py +++ b/mne/channels/tests/test_layout.py @@ -8,28 +8,28 @@ import copy from pathlib import Path +import matplotlib.pyplot as plt import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, - assert_allclose, assert_equal, ) -import pytest -import matplotlib.pyplot as plt +from mne import pick_info, pick_types +from mne._fiff.constants import FIFF +from mne._fiff.meas_info import _empty_info from mne.channels import ( + find_layout, make_eeg_layout, make_grid_layout, read_layout, - find_layout, ) -from mne.defaults import HEAD_SIZE_DEFAULT from mne.channels.layout import _box_size, _find_topomap_coords, generate_2d_layout -from mne import pick_types, pick_info -from mne.io import read_raw_kit, read_info -from mne._fiff.meas_info import _empty_info -from mne._fiff.constants import FIFF +from mne.defaults import HEAD_SIZE_DEFAULT +from mne.io import read_info, read_raw_kit io_dir = Path(__file__).parent.parent.parent / "io" fif_fname = io_dir / "tests" / "data" / "test_raw.fif" diff --git a/mne/channels/tests/test_montage.py b/mne/channels/tests/test_montage.py index 4428158ea4e..bd61a6338fb 100644 --- a/mne/channels/tests/test_montage.py +++ b/mne/channels/tests/test_montage.py @@ -3,80 +3,77 @@ # # License: BSD-3-Clause +import shutil from contextlib import nullcontext +from functools import partial from itertools import chain from pathlib import Path -import shutil - -import pytest - -import numpy as np -from functools import partial from string import ascii_lowercase +import matplotlib.pyplot as plt +import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_equal, assert_array_less, - assert_allclose, assert_equal, ) -import matplotlib.pyplot as plt from mne import ( __file__ as _mne_file, +) +from mne import ( create_info, - read_evokeds, pick_types, + read_evokeds, ) -from mne.coreg import get_mni_fiducials -from mne.utils._testing import assert_object_equal +from mne._fiff._digitization import ( + _count_points_by_type, + _format_dig_points, + _get_dig_eeg, + _get_fid_coords, +) +from mne._fiff.constants import FIFF +from mne.bem import _fit_sphere from mne.channels import ( - get_builtin_montages, DigMontage, + compute_dev_head_t, + compute_native_head_t, + get_builtin_montages, + make_dig_montage, + make_standard_montage, + read_custom_montage, + read_dig_captrak, read_dig_dat, read_dig_egi, - read_dig_captrak, read_dig_fif, - make_standard_montage, - read_custom_montage, - compute_dev_head_t, - make_dig_montage, + read_dig_hpts, + read_dig_localite, read_dig_polhemus_isotrak, - compute_native_head_t, read_polhemus_fastscan, - read_dig_localite, - read_dig_hpts, ) from mne.channels.montage import ( - transform_to_head, - _check_get_coord_frame, _BUILTIN_STANDARD_MONTAGES, + _check_get_coord_frame, + transform_to_head, ) -from mne.preprocessing import compute_current_source_density -from mne.utils import assert_dig_allclose, _record_warnings -from mne.bem import _fit_sphere -from mne._fiff.constants import FIFF -from mne._fiff._digitization import ( - _format_dig_points, - _get_fid_coords, - _get_dig_eeg, - _count_points_by_type, -) -from mne.transforms import _ensure_trans, apply_trans, invert_transform, _get_trans -from mne.viz._3d import _fiducial_coords - -from mne.io.kit import read_mrk +from mne.coreg import get_mni_fiducials +from mne.datasets import testing from mne.io import ( + RawArray, + read_fiducials, read_raw_brainvision, read_raw_egi, read_raw_fif, - read_fiducials, read_raw_nirx, ) - -from mne.io import RawArray -from mne.datasets import testing - +from mne.io.kit import read_mrk +from mne.preprocessing import compute_current_source_density +from mne.transforms import _ensure_trans, _get_trans, apply_trans, invert_transform +from mne.utils import _record_warnings, assert_dig_allclose +from mne.utils._testing import assert_object_equal +from mne.viz._3d import _fiducial_coords data_path = testing.data_path(download=False) fif_dig_montage_fname = data_path / "montage" / "eeganes07.fif" diff --git a/mne/channels/tests/test_standard_montage.py b/mne/channels/tests/test_standard_montage.py index 2e1b41c7e90..d154a38b6cc 100644 --- a/mne/channels/tests/test_standard_montage.py +++ b/mne/channels/tests/test_standard_montage.py @@ -4,20 +4,18 @@ # License: BSD-3-Clause -import pytest - import numpy as np - +import pytest from numpy.testing import assert_allclose, assert_array_almost_equal, assert_raises from mne import create_info -from mne.channels import make_standard_montage, compute_native_head_t -from mne.channels.montage import get_builtin_montages, HEAD_SIZE_DEFAULT -from mne.io import RawArray from mne._fiff._digitization import _get_dig_eeg, _get_fid_coords from mne._fiff.constants import FIFF -from mne.preprocessing.nirs import optical_density, beer_lambert_law -from mne.transforms import _get_trans, _angle_between_quats, rot_to_quat +from mne.channels import compute_native_head_t, make_standard_montage +from mne.channels.montage import HEAD_SIZE_DEFAULT, get_builtin_montages +from mne.io import RawArray +from mne.preprocessing.nirs import beer_lambert_law, optical_density +from mne.transforms import _angle_between_quats, _get_trans, rot_to_quat @pytest.mark.parametrize("kind", get_builtin_montages()) diff --git a/mne/channels/tests/test_unify_bads.py b/mne/channels/tests/test_unify_bads.py index ac04983802b..a502f5ffb92 100644 --- a/mne/channels/tests/test_unify_bads.py +++ b/mne/channels/tests/test_unify_bads.py @@ -1,4 +1,5 @@ import pytest + from mne.channels import unify_bad_channels diff --git a/mne/chpi.py b/mne/chpi.py index 801ee1d2e73..939b22ac60e 100644 --- a/mne/chpi.py +++ b/mne/chpi.py @@ -19,62 +19,62 @@ # License: BSD-3-Clause import copy -from functools import partial import itertools +from functools import partial import numpy as np from scipy.linalg import orth from scipy.optimize import fmin_cobyla from scipy.spatial.distance import cdist -from .event import find_events -from .io import BaseRaw -from .io.ctf.trans import _make_ctf_coord_trans_set -from .io.kit.kit import RawKIT as _RawKIT -from .io.kit.constants import KIT -from .channels.channels import _get_meg_system -from ._fiff.meas_info import _simplify_info, Info +from ._fiff.constants import FIFF +from ._fiff.meas_info import Info, _simplify_info from ._fiff.pick import ( - pick_types, + _picks_to_idx, pick_channels, pick_channels_regexp, pick_info, - _picks_to_idx, + pick_types, ) from ._fiff.proj import Projection, setup_proj -from ._fiff.constants import FIFF -from .forward import _magnetic_dipole_field_vec, _create_meg_coils, _concatenate_coils -from .cov import make_ad_hoc_cov, compute_whitener +from .channels.channels import _get_meg_system +from .cov import compute_whitener, make_ad_hoc_cov from .dipole import _make_guesses +from .event import find_events from .fixes import jit +from .forward import _concatenate_coils, _create_meg_coils, _magnetic_dipole_field_vec +from .io import BaseRaw +from .io.ctf.trans import _make_ctf_coord_trans_set +from .io.kit.constants import KIT +from .io.kit.kit import RawKIT as _RawKIT from .preprocessing.maxwell import ( - _sss_basis, + _get_mf_picks_fix_mags, _prep_mf_coils, _regularize_out, - _get_mf_picks_fix_mags, + _sss_basis, ) from .transforms import ( - apply_trans, - invert_transform, _angle_between_quats, - quat_to_rot, - rot_to_quat, _fit_matched_points, _quat_to_affine, als_ras_trans, + apply_trans, + invert_transform, + quat_to_rot, + rot_to_quat, ) from .utils import ( - verbose, - logger, - use_log_level, - _check_fname, - warn, - _validate_type, ProgressBar, + _check_fname, _check_option, - _pl, _on_missing, + _pl, + _validate_type, _verbose_safe_false, + logger, + use_log_level, + verbose, + warn, ) # Eventually we should add: diff --git a/mne/commands/mne_anonymize.py b/mne/commands/mne_anonymize.py index d4b54000b78..65bb0c9e4f5 100644 --- a/mne/commands/mne_anonymize.py +++ b/mne/commands/mne_anonymize.py @@ -15,9 +15,10 @@ """ +import os.path as op import sys + import mne -import os.path as op ANONYMIZE_FILE_PREFIX = "anon" diff --git a/mne/commands/mne_browse_raw.py b/mne/commands/mne_browse_raw.py index 9c338518e85..c3a3d144e33 100644 --- a/mne/commands/mne_browse_raw.py +++ b/mne/commands/mne_browse_raw.py @@ -16,12 +16,13 @@ # Authors : Eric Larson, PhD import sys + import mne def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser from mne.viz import _RAW_CLIP_DEF parser = get_optparser(__file__, usage="usage: %prog raw [options]") diff --git a/mne/commands/mne_compare_fiff.py b/mne/commands/mne_compare_fiff.py index fe05d636592..d38e95761b0 100644 --- a/mne/commands/mne_compare_fiff.py +++ b/mne/commands/mne_compare_fiff.py @@ -12,6 +12,7 @@ # Authors : Eric Larson, PhD import sys + import mne diff --git a/mne/commands/mne_compute_proj_ecg.py b/mne/commands/mne_compute_proj_ecg.py index bb366f9d3e2..1e8b6aab973 100644 --- a/mne/commands/mne_compute_proj_ecg.py +++ b/mne/commands/mne_compute_proj_ecg.py @@ -15,6 +15,7 @@ import os import sys + import mne diff --git a/mne/commands/mne_compute_proj_eog.py b/mne/commands/mne_compute_proj_eog.py index 42c93513122..4b3dcae75dd 100644 --- a/mne/commands/mne_compute_proj_eog.py +++ b/mne/commands/mne_compute_proj_eog.py @@ -25,6 +25,7 @@ import os import sys + import mne diff --git a/mne/commands/mne_coreg.py b/mne/commands/mne_coreg.py index dad18d278aa..add4a65845b 100644 --- a/mne/commands/mne_coreg.py +++ b/mne/commands/mne_coreg.py @@ -18,7 +18,7 @@ def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) diff --git a/mne/commands/mne_freeview_bem_surfaces.py b/mne/commands/mne_freeview_bem_surfaces.py index 646049b6616..b428cd3f7d0 100644 --- a/mne/commands/mne_freeview_bem_surfaces.py +++ b/mne/commands/mne_freeview_bem_surfaces.py @@ -10,12 +10,12 @@ """ # Authors: Alexandre Gramfort -import sys import os import os.path as op +import sys import mne -from mne.utils import run_subprocess, get_subjects_dir +from mne.utils import get_subjects_dir, run_subprocess def freeview_bem_surfaces(subject, subjects_dir, method): diff --git a/mne/commands/mne_make_scalp_surfaces.py b/mne/commands/mne_make_scalp_surfaces.py index c5bf03e06a0..dffb97fd591 100644 --- a/mne/commands/mne_make_scalp_surfaces.py +++ b/mne/commands/mne_make_scalp_surfaces.py @@ -24,7 +24,7 @@ def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) subjects_dir = mne.get_config("SUBJECTS_DIR") diff --git a/mne/commands/mne_maxfilter.py b/mne/commands/mne_maxfilter.py index 182a2c6254b..c5f83b9176f 100644 --- a/mne/commands/mne_maxfilter.py +++ b/mne/commands/mne_maxfilter.py @@ -14,8 +14,9 @@ # Authors : Martin Luessi -import sys import os +import sys + import mne diff --git a/mne/commands/mne_prepare_bem_model.py b/mne/commands/mne_prepare_bem_model.py index ae43ae9533a..cc8620d0ecd 100644 --- a/mne/commands/mne_prepare_bem_model.py +++ b/mne/commands/mne_prepare_bem_model.py @@ -9,14 +9,15 @@ """ -import sys import os +import sys + import mne def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) diff --git a/mne/commands/mne_report.py b/mne/commands/mne_report.py index 79818d52bab..4b5dd54b30f 100644 --- a/mne/commands/mne_report.py +++ b/mne/commands/mne_report.py @@ -72,7 +72,7 @@ import mne from mne.report import Report -from mne.utils import verbose, logger +from mne.utils import logger, verbose @verbose @@ -83,7 +83,7 @@ def log_elapsed(t, verbose=None): def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) diff --git a/mne/commands/mne_setup_forward_model.py b/mne/commands/mne_setup_forward_model.py index df7fc5fff4b..c06b725a2d6 100644 --- a/mne/commands/mne_setup_forward_model.py +++ b/mne/commands/mne_setup_forward_model.py @@ -9,15 +9,16 @@ """ -import sys import os +import sys + import mne from mne.utils import get_subjects_dir, warn def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) diff --git a/mne/commands/mne_setup_source_space.py b/mne/commands/mne_setup_source_space.py index 0937a75bafe..963a27fca07 100644 --- a/mne/commands/mne_setup_source_space.py +++ b/mne/commands/mne_setup_source_space.py @@ -21,7 +21,7 @@ def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) diff --git a/mne/commands/mne_show_fiff.py b/mne/commands/mne_show_fiff.py index a14d5c129ea..128e8fee55f 100644 --- a/mne/commands/mne_show_fiff.py +++ b/mne/commands/mne_show_fiff.py @@ -19,6 +19,7 @@ # Authors : Eric Larson, PhD import sys + import mne diff --git a/mne/commands/mne_show_info.py b/mne/commands/mne_show_info.py index dc39491fb6c..80f546f6d80 100644 --- a/mne/commands/mne_show_info.py +++ b/mne/commands/mne_show_info.py @@ -12,6 +12,7 @@ # Authors : Alexandre Gramfort, Ph.D. import sys + import mne diff --git a/mne/commands/mne_sys_info.py b/mne/commands/mne_sys_info.py index 075ff446681..62bbf9afbfe 100644 --- a/mne/commands/mne_sys_info.py +++ b/mne/commands/mne_sys_info.py @@ -12,6 +12,7 @@ # Authors : Eric Larson import sys + import mne diff --git a/mne/commands/mne_watershed_bem.py b/mne/commands/mne_watershed_bem.py index c182c7a0ded..279cd826adc 100644 --- a/mne/commands/mne_watershed_bem.py +++ b/mne/commands/mne_watershed_bem.py @@ -19,7 +19,7 @@ def run(): """Run command.""" - from mne.commands.utils import get_optparser, _add_verbose_flag + from mne.commands.utils import _add_verbose_flag, get_optparser parser = get_optparser(__file__) diff --git a/mne/commands/tests/test_commands.py b/mne/commands/tests/test_commands.py index c3bac034339..fecd0235a87 100644 --- a/mne/commands/tests/test_commands.py +++ b/mne/commands/tests/test_commands.py @@ -1,54 +1,54 @@ import glob import os -from os import path as op import shutil +from os import path as op from pathlib import Path import numpy as np import pytest -from numpy.testing import assert_equal, assert_allclose +from numpy.testing import assert_allclose, assert_equal import mne from mne import ( concatenate_raws, + read_bem_solution, read_bem_surfaces, - read_surface, read_source_spaces, - read_bem_solution, + read_surface, ) from mne.bem import ConductorModel, convert_flash_mris from mne.commands import ( + mne_anonymize, mne_browse_raw, mne_bti2fiff, mne_clean_eog_ecg, + mne_compare_fiff, mne_compute_proj_ecg, mne_compute_proj_eog, mne_coreg, + mne_flash_bem, mne_kit2fiff, mne_make_scalp_surfaces, mne_maxfilter, + mne_prepare_bem_model, mne_report, - mne_surf2bem, - mne_watershed_bem, - mne_compare_fiff, - mne_flash_bem, + mne_setup_forward_model, + mne_setup_source_space, mne_show_fiff, mne_show_info, - mne_what, - mne_setup_source_space, - mne_setup_forward_model, - mne_anonymize, - mne_prepare_bem_model, + mne_surf2bem, mne_sys_info, + mne_watershed_bem, + mne_what, ) from mne.datasets import testing -from mne.io import read_raw_fif, read_info +from mne.io import read_info, read_raw_fif from mne.utils import ( - requires_mne, - requires_freesurfer, ArgvSetter, - _stamp_to_dt, _record_warnings, + _stamp_to_dt, + requires_freesurfer, + requires_mne, ) base_dir = op.join(op.dirname(__file__), "..", "..", "io", "tests", "data") diff --git a/mne/commands/utils.py b/mne/commands/utils.py index 80d04ab1729..68ede4e807f 100644 --- a/mne/commands/utils.py +++ b/mne/commands/utils.py @@ -9,8 +9,8 @@ import importlib import os import os.path as op -from optparse import OptionParser import sys +from optparse import OptionParser import mne @@ -41,7 +41,7 @@ def load_module(name, path): Imported module. """ - from importlib.util import spec_from_file_location, module_from_spec + from importlib.util import module_from_spec, spec_from_file_location spec = spec_from_file_location(name, path) mod = module_from_spec(spec) diff --git a/mne/conftest.py b/mne/conftest.py index a0eeaf18dfb..908e7f53dba 100644 --- a/mne/conftest.py +++ b/mne/conftest.py @@ -2,37 +2,37 @@ # # License: BSD-3-Clause -from contextlib import contextmanager -import inspect -from textwrap import dedent import gc +import inspect import os import os.path as op -from pathlib import Path import shutil import sys import warnings -import pytest -from pytest import StashKey +from contextlib import contextmanager +from pathlib import Path +from textwrap import dedent from unittest import mock import numpy as np +import pytest +from pytest import StashKey import mne -from mne import read_events, pick_types, Epochs +from mne import Epochs, pick_types, read_events from mne.channels import read_layout from mne.coreg import create_default_subject from mne.datasets import testing -from mne.fixes import has_numba, _compare_version -from mne.io import read_raw_fif, read_raw_ctf, read_raw_nirx, read_raw_snirf +from mne.fixes import _compare_version, has_numba +from mne.io import read_raw_ctf, read_raw_fif, read_raw_nirx, read_raw_snirf from mne.stats import cluster_level from mne.utils import ( - _pl, - _assert_no_instances, - numerics, Bunch, + _assert_no_instances, _check_qt_version, + _pl, _TempDir, + numerics, ) # data from sample dataset @@ -599,12 +599,12 @@ def _use_backend(backend_name, interactive): def _check_skip_backend(name): + from mne.viz.backends._utils import _notebook_vtk_works from mne.viz.backends.tests._utils import ( - has_pyvista, has_imageio_ffmpeg, + has_pyvista, has_pyvistaqt, ) - from mne.viz.backends._utils import _notebook_vtk_works if not has_pyvista(): pytest.skip("Test skipped, requires pyvista.") @@ -629,8 +629,8 @@ def pixel_ratio(): # _check_qt_version will init an app for us, so no need for us to do it if not has_pyvista() or not _check_qt_version(): return 1.0 - from qtpy.QtWidgets import QMainWindow from qtpy.QtCore import Qt + from qtpy.QtWidgets import QMainWindow app = _init_mne_qtapp() app.processEvents() @@ -1005,10 +1005,10 @@ def numba_conditional(monkeypatch, request): def _nbclient(): try: import nbformat + import trame # noqa + from ipywidgets import Button # noqa from jupyter_client import AsyncKernelManager from nbclient import NotebookClient - from ipywidgets import Button # noqa - import trame # noqa except Exception as exc: return pytest.skip(f"Skipping Notebook test: {exc}") km = AsyncKernelManager(config=None) diff --git a/mne/coreg.py b/mne/coreg.py index cd9158b7cba..c50d3d00274 100644 --- a/mne/coreg.py +++ b/mne/coreg.py @@ -6,75 +6,74 @@ import configparser import fnmatch -from glob import glob, iglob import os import os.path as op -import stat -import sys import re import shutil +import stat +import sys from functools import reduce +from glob import glob, iglob import numpy as np from scipy.optimize import leastsq from scipy.spatial.distance import cdist -from ._fiff.meas_info import read_fiducials, write_fiducials, read_info -from ._fiff.constants import FIFF -from ._fiff.meas_info import Info from ._fiff._digitization import _get_data_as_dict_from_dig +from ._fiff.constants import FIFF +from ._fiff.meas_info import Info, read_fiducials, read_info, write_fiducials # keep get_mni_fiducials for backward compat (no burden to keep in this # namespace, too) from ._freesurfer import ( _read_mri_info, - get_mni_fiducials, estimate_head_mri_t, # noqa: F401 + get_mni_fiducials, ) -from .label import read_label, Label +from .bem import read_bem_surfaces, write_bem_surfaces +from .channels import make_dig_montage +from .label import Label, read_label from .source_space import ( add_source_space_distances, read_source_spaces, # noqa: F401 write_source_spaces, ) from .surface import ( - read_surface, - write_surface, + _DistanceQuery, _normalize_vectors, complete_surface_info, decimate_surface, - _DistanceQuery, + read_surface, + write_surface, ) -from .bem import read_bem_surfaces, write_bem_surfaces from .transforms import ( - rotation, - rotation3d, - scaling, - translation, Transform, + _angle_between_quats, + _fit_matched_points, + _quat_to_euler, _read_fs_xfm, _write_fs_xfm, - invert_transform, - combine_transforms, - _quat_to_euler, - _fit_matched_points, apply_trans, + combine_transforms, + invert_transform, rot_to_quat, - _angle_between_quats, + rotation, + rotation3d, + scaling, + translation, ) -from .channels import make_dig_montage from .utils import ( + _check_option, + _check_subject, + _import_nibabel, + _validate_type, + fill_doc, get_config, get_subjects_dir, logger, pformat, verbose, warn, - fill_doc, - _validate_type, - _check_subject, - _check_option, - _import_nibabel, ) from .viz._3d import _fiducial_coords diff --git a/mne/cov.py b/mne/cov.py index 4fa6fe44e6c..db4b2126a3d 100644 --- a/mne/cov.py +++ b/mne/cov.py @@ -4,78 +4,80 @@ # # License: BSD-3-Clause -from copy import deepcopy import itertools as itt +from copy import deepcopy from math import log import numpy as np from scipy.sparse import issparse -from .defaults import ( - _INTERPOLATION_DEFAULT, - _EXTRAPOLATE_DEFAULT, - _BORDER_DEFAULT, - DEFAULTS, +from . import viz +from ._fiff.constants import FIFF +from ._fiff.meas_info import _read_bad_channels, _write_bad_channels, create_info +from ._fiff.pick import ( + _DATA_CH_TYPES_SPLIT, + _pick_data_channels, + _picks_by_type, + _picks_to_idx, + pick_channels, + pick_channels_cov, + pick_info, + pick_types, ) -from .fixes import _safe_svd from ._fiff.proj import ( - make_projector as _make_projector, - _proj_equal, - activate_proj as _activate_proj, _check_projs, - _needs_eeg_average_ref_proj, _has_eeg_average_ref_proj, + _needs_eeg_average_ref_proj, + _proj_equal, _read_proj, _write_proj, ) -from ._fiff.pick import ( - pick_types, - pick_channels_cov, - pick_channels, - pick_info, - _picks_by_type, - _pick_data_channels, - _picks_to_idx, - _DATA_CH_TYPES_SPLIT, +from ._fiff.proj import ( + activate_proj as _activate_proj, +) +from ._fiff.proj import ( + make_projector as _make_projector, ) - -from ._fiff.constants import FIFF -from ._fiff.meas_info import _read_bad_channels, create_info, _write_bad_channels from ._fiff.tag import find_tag from ._fiff.tree import dir_tree_find -from .defaults import _handle_default +from .defaults import ( + _BORDER_DEFAULT, + _EXTRAPOLATE_DEFAULT, + _INTERPOLATION_DEFAULT, + DEFAULTS, + _handle_default, +) from .epochs import Epochs from .event import make_fixed_length_events from .evoked import EvokedArray +from .fixes import ( + BaseEstimator, + EmpiricalCovariance, + _logdet, + _safe_svd, + empirical_covariance, + log_likelihood, +) from .rank import compute_rank from .utils import ( - check_fname, - logger, - verbose, - check_version, - _time_mask, - warn, - copy_function_doc_to_method_doc, + _check_fname, + _check_on_missing, + _check_option, + _on_missing, _pl, - _undo_scaling_cov, _scaled_array, + _time_mask, + _undo_scaling_cov, _validate_type, - _check_option, + _verbose_safe_false, + check_fname, + check_version, + copy_function_doc_to_method_doc, eigh, fill_doc, - _on_missing, - _check_on_missing, - _check_fname, - _verbose_safe_false, -) -from . import viz - -from .fixes import ( - BaseEstimator, - EmpiricalCovariance, - _logdet, - empirical_covariance, - log_likelihood, + logger, + verbose, + warn, ) @@ -1330,8 +1332,8 @@ def _compute_covariance_auto( del sc elif method_ == "shrunk": - from sklearn.model_selection import GridSearchCV from sklearn.covariance import ShrunkCovariance + from sklearn.model_selection import GridSearchCV shrinkage = mp.pop("shrinkage") tuned_parameters = [{"shrinkage": shrinkage}] @@ -2428,13 +2430,13 @@ def _read_cov(fid, node, cov_kind, limited=False, verbose=None): def _write_cov(fid, cov): """Write a noise covariance matrix.""" from ._fiff.write import ( - start_block, end_block, - write_int, + start_block, write_double, write_float_matrix, - write_string, + write_int, write_name_list_sanitized, + write_string, ) start_block(fid, FIFF.FIFFB_MNE_COV) diff --git a/mne/cuda.py b/mne/cuda.py index 602d29a2f7d..410a81fd36e 100644 --- a/mne/cuda.py +++ b/mne/cuda.py @@ -6,14 +6,14 @@ from scipy.fft import irfft, rfft from .utils import ( - sizeof_fmt, - logger, - get_config, - warn, + _check_option, _explain_exception, - verbose, fill_doc, - _check_option, + get_config, + logger, + sizeof_fmt, + verbose, + warn, ) _cuda_capable = False diff --git a/mne/datasets/__init__.pyi b/mne/datasets/__init__.pyi index 96964148d3e..c028314c233 100644 --- a/mne/datasets/__init__.pyi +++ b/mne/datasets/__init__.pyi @@ -34,31 +34,31 @@ __all__ = [ "visual_92_categories", ] from . import ( - fieldtrip_cmc, + _fake, brainstorm, - visual_92_categories, - kiloword, eegbci, + epilepsy_ecog, + erp_core, + eyelink, + fieldtrip_cmc, + fnirs_motor, hf_sef, + kiloword, + limo, misc, mtrf, - sample, - somato, multimodal, - fnirs_motor, opm, - spm_face, - testing, - _fake, phantom_4dbti, - sleep_physionet, - limo, refmeg_noise, + sample, + sleep_physionet, + somato, + spm_face, ssvep, - erp_core, - epilepsy_ecog, - eyelink, + testing, ucl_opm_auditory, + visual_92_categories, ) from ._fetch import fetch_dataset from ._fsaverage.base import fetch_fsaverage @@ -66,7 +66,7 @@ from ._infant.base import fetch_infant_template from ._phantom.base import fetch_phantom from .utils import ( _download_all_example_data, - fetch_hcp_mmp_parcellation, fetch_aparc_sub_parcellation, + fetch_hcp_mmp_parcellation, has_dataset, ) diff --git a/mne/datasets/_fetch.py b/mne/datasets/_fetch.py index 6dbfe41c2bf..48fb609d81a 100644 --- a/mne/datasets/_fetch.py +++ b/mne/datasets/_fetch.py @@ -2,30 +2,29 @@ # # License: BSD Style. -import sys import os import os.path as op +import sys +import time from pathlib import Path from shutil import rmtree -import time from .. import __version__ as mne_version -from ..utils import logger, warn, _safe_input +from ..fixes import _compare_version +from ..utils import _safe_input, logger, warn from .config import ( - _bst_license_text, + MISC_VERSIONED, RELEASES, TESTING_VERSIONED, - MISC_VERSIONED, + _bst_license_text, ) from .utils import ( _dataset_version, _do_path_update, + _downloader_params, _get_path, _log_time_size, - _downloader_params, ) -from ..fixes import _compare_version - _FAKE_VERSION = None # used for monkeypatching while testing versioning diff --git a/mne/datasets/_fsaverage/base.py b/mne/datasets/_fsaverage/base.py index daa01dc64c2..934f76ca520 100644 --- a/mne/datasets/_fsaverage/base.py +++ b/mne/datasets/_fsaverage/base.py @@ -4,8 +4,8 @@ import os import os.path as op -from ..utils import _manifest_check_download, _get_path -from ...utils import verbose, get_subjects_dir, set_config +from ...utils import get_subjects_dir, set_config, verbose +from ..utils import _get_path, _manifest_check_download FSAVERAGE_MANIFEST_PATH = op.dirname(__file__) diff --git a/mne/datasets/_infant/base.py b/mne/datasets/_infant/base.py index 196faa7bfc2..e709b740691 100644 --- a/mne/datasets/_infant/base.py +++ b/mne/datasets/_infant/base.py @@ -4,8 +4,8 @@ import os import os.path as op +from ...utils import _check_option, _validate_type, get_subjects_dir, verbose from ..utils import _manifest_check_download -from ...utils import verbose, get_subjects_dir, _check_option, _validate_type _AGES = "2wk 1mo 2mo 3mo 4.5mo 6mo 7.5mo 9mo 10.5mo 12mo 15mo 18mo 2yr" # https://github.com/christian-oreilly/infant_template_paper/releases diff --git a/mne/datasets/_phantom/base.py b/mne/datasets/_phantom/base.py index 3d8af0e68ac..19ab1db89ee 100644 --- a/mne/datasets/_phantom/base.py +++ b/mne/datasets/_phantom/base.py @@ -4,8 +4,8 @@ import os import os.path as op +from ...utils import _check_option, _validate_type, get_subjects_dir, verbose from ..utils import _manifest_check_download -from ...utils import verbose, get_subjects_dir, _check_option, _validate_type PHANTOM_MANIFEST_PATH = op.dirname(__file__) diff --git a/mne/datasets/brainstorm/bst_auditory.py b/mne/datasets/brainstorm/bst_auditory.py index f6cbd7c4e43..6dbbe45407b 100644 --- a/mne/datasets/brainstorm/bst_auditory.py +++ b/mne/datasets/brainstorm/bst_auditory.py @@ -3,10 +3,10 @@ # License: BSD-3-Clause from ...utils import verbose from ..utils import ( - _get_version, - _version_doc, _data_path_doc_accept, _download_mne_dataset, + _get_version, + _version_doc, ) _description = """ diff --git a/mne/datasets/brainstorm/bst_phantom_ctf.py b/mne/datasets/brainstorm/bst_phantom_ctf.py index 9a64a438e89..c73e8798623 100644 --- a/mne/datasets/brainstorm/bst_phantom_ctf.py +++ b/mne/datasets/brainstorm/bst_phantom_ctf.py @@ -3,10 +3,10 @@ # License: BSD-3-Clause from ...utils import verbose from ..utils import ( - _get_version, - _version_doc, _data_path_doc_accept, _download_mne_dataset, + _get_version, + _version_doc, ) _description = """ diff --git a/mne/datasets/brainstorm/bst_phantom_elekta.py b/mne/datasets/brainstorm/bst_phantom_elekta.py index b5e13d385f3..b30770bbe34 100644 --- a/mne/datasets/brainstorm/bst_phantom_elekta.py +++ b/mne/datasets/brainstorm/bst_phantom_elekta.py @@ -3,10 +3,10 @@ # License: BSD-3-Clause from ...utils import verbose from ..utils import ( - _get_version, - _version_doc, _data_path_doc_accept, _download_mne_dataset, + _get_version, + _version_doc, ) _description = """ diff --git a/mne/datasets/brainstorm/bst_raw.py b/mne/datasets/brainstorm/bst_raw.py index 3aeef5e49d2..3c9ea2ae965 100644 --- a/mne/datasets/brainstorm/bst_raw.py +++ b/mne/datasets/brainstorm/bst_raw.py @@ -3,16 +3,15 @@ # License: BSD-3-Clause from functools import partial -from ...utils import verbose, get_config +from ...utils import get_config, verbose from ..utils import ( - has_dataset, - _get_version, - _version_doc, _data_path_doc_accept, _download_mne_dataset, + _get_version, + _version_doc, + has_dataset, ) - has_brainstorm_data = partial(has_dataset, name="bst_raw") _description = """ diff --git a/mne/datasets/brainstorm/bst_resting.py b/mne/datasets/brainstorm/bst_resting.py index cef6ab986c6..efe86c0ce69 100644 --- a/mne/datasets/brainstorm/bst_resting.py +++ b/mne/datasets/brainstorm/bst_resting.py @@ -3,10 +3,10 @@ # License: BSD-3-Clause from ...utils import verbose from ..utils import ( - _get_version, - _version_doc, _data_path_doc_accept, _download_mne_dataset, + _get_version, + _version_doc, ) _description = """ diff --git a/mne/datasets/eegbci/eegbci.py b/mne/datasets/eegbci/eegbci.py index 76db5ef99ac..00f7fff4767 100644 --- a/mne/datasets/eegbci/eegbci.py +++ b/mne/datasets/eegbci/eegbci.py @@ -5,12 +5,12 @@ import os import re +import time from os import path as op from pathlib import Path -import time -from ...utils import _url_to_local_path, verbose, logger -from ..utils import _do_path_update, _get_path, _log_time_size, _downloader_params +from ...utils import _url_to_local_path, logger, verbose +from ..utils import _do_path_update, _downloader_params, _get_path, _log_time_size # TODO: remove try/except when our min version is py 3.9 try: diff --git a/mne/datasets/epilepsy_ecog/_data.py b/mne/datasets/epilepsy_ecog/_data.py index b6cc93b92bd..8192a7bf369 100644 --- a/mne/datasets/epilepsy_ecog/_data.py +++ b/mne/datasets/epilepsy_ecog/_data.py @@ -3,7 +3,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/erp_core/erp_core.py b/mne/datasets/erp_core/erp_core.py index 8f3aa1e2663..843777412bc 100644 --- a/mne/datasets/erp_core/erp_core.py +++ b/mne/datasets/erp_core/erp_core.py @@ -1,5 +1,5 @@ from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/eyelink/eyelink.py b/mne/datasets/eyelink/eyelink.py index f0a349c3c16..596f0f79e47 100644 --- a/mne/datasets/eyelink/eyelink.py +++ b/mne/datasets/eyelink/eyelink.py @@ -2,7 +2,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/fieldtrip_cmc/fieldtrip_cmc.py b/mne/datasets/fieldtrip_cmc/fieldtrip_cmc.py index cdce53d57a8..c825eafef05 100644 --- a/mne/datasets/fieldtrip_cmc/fieldtrip_cmc.py +++ b/mne/datasets/fieldtrip_cmc/fieldtrip_cmc.py @@ -3,7 +3,7 @@ # # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/fnirs_motor/fnirs_motor.py b/mne/datasets/fnirs_motor/fnirs_motor.py index 2c49a32c891..9ae0844dacd 100644 --- a/mne/datasets/fnirs_motor/fnirs_motor.py +++ b/mne/datasets/fnirs_motor/fnirs_motor.py @@ -2,7 +2,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/hf_sef/hf_sef.py b/mne/datasets/hf_sef/hf_sef.py index 66c25ad12be..dc1586cac9f 100644 --- a/mne/datasets/hf_sef/hf_sef.py +++ b/mne/datasets/hf_sef/hf_sef.py @@ -3,11 +3,12 @@ # License: BSD Style. -import os.path as op import os -from ...utils import verbose, _check_option -from ..utils import _get_path, _do_path_update, _download_mne_dataset +import os.path as op + +from ...utils import _check_option, verbose from ..config import MNE_DATASETS +from ..utils import _do_path_update, _download_mne_dataset, _get_path @verbose diff --git a/mne/datasets/kiloword/kiloword.py b/mne/datasets/kiloword/kiloword.py index c6f437ab36e..67014bcadb9 100644 --- a/mne/datasets/kiloword/kiloword.py +++ b/mne/datasets/kiloword/kiloword.py @@ -1,7 +1,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _get_version, _version_doc, _download_mne_dataset +from ..utils import _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/limo/limo.py b/mne/datasets/limo/limo.py index 8e90ed01fc2..9c5b3861b88 100644 --- a/mne/datasets/limo/limo.py +++ b/mne/datasets/limo/limo.py @@ -3,17 +3,17 @@ # License: BSD-3-Clause import os.path as op -from pathlib import Path import time +from pathlib import Path import numpy as np from scipy.io import loadmat +from ..._fiff.meas_info import create_info from ...channels import make_standard_montage from ...epochs import EpochsArray -from ..._fiff.meas_info import create_info -from ...utils import _check_pandas_installed, verbose, logger -from ..utils import _get_path, _do_path_update, _log_time_size, _downloader_params +from ...utils import _check_pandas_installed, logger, verbose +from ..utils import _do_path_update, _downloader_params, _get_path, _log_time_size # root url for LIMO files root_url = "https://files.de-1.osf.io/v1/resources/52rea/providers/osfstorage/" diff --git a/mne/datasets/misc/_misc.py b/mne/datasets/misc/_misc.py index 443aa24787b..65f873af635 100644 --- a/mne/datasets/misc/_misc.py +++ b/mne/datasets/misc/_misc.py @@ -4,7 +4,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import has_dataset, _data_path_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, has_dataset @verbose diff --git a/mne/datasets/mtrf/mtrf.py b/mne/datasets/mtrf/mtrf.py index 1ce4f741a4f..fdcb6bf9c3b 100644 --- a/mne/datasets/mtrf/mtrf.py +++ b/mne/datasets/mtrf/mtrf.py @@ -3,8 +3,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset - +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc data_name = "mtrf" diff --git a/mne/datasets/multimodal/multimodal.py b/mne/datasets/multimodal/multimodal.py index 84fbf662e5f..a1789e30623 100644 --- a/mne/datasets/multimodal/multimodal.py +++ b/mne/datasets/multimodal/multimodal.py @@ -4,7 +4,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/opm/opm.py b/mne/datasets/opm/opm.py index b2b24f2e3f8..b21ed9ffd1c 100644 --- a/mne/datasets/opm/opm.py +++ b/mne/datasets/opm/opm.py @@ -4,7 +4,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/phantom_4dbti/phantom_4dbti.py b/mne/datasets/phantom_4dbti/phantom_4dbti.py index 59c42416d5a..6963b72fb09 100644 --- a/mne/datasets/phantom_4dbti/phantom_4dbti.py +++ b/mne/datasets/phantom_4dbti/phantom_4dbti.py @@ -3,7 +3,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/refmeg_noise/refmeg_noise.py b/mne/datasets/refmeg_noise/refmeg_noise.py index e77f3eefaf0..5c27a469a2d 100644 --- a/mne/datasets/refmeg_noise/refmeg_noise.py +++ b/mne/datasets/refmeg_noise/refmeg_noise.py @@ -2,7 +2,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/sample/sample.py b/mne/datasets/sample/sample.py index f5ca6de24c4..06118fa8409 100644 --- a/mne/datasets/sample/sample.py +++ b/mne/datasets/sample/sample.py @@ -4,7 +4,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/sleep_physionet/_utils.py b/mne/datasets/sleep_physionet/_utils.py index bca3284d73b..ff89155ece7 100644 --- a/mne/datasets/sleep_physionet/_utils.py +++ b/mne/datasets/sleep_physionet/_utils.py @@ -8,8 +8,8 @@ import numpy as np -from ...utils import verbose, _TempDir, _check_pandas_installed, _on_missing -from ..utils import _get_path, _downloader_params +from ...utils import _check_pandas_installed, _on_missing, _TempDir, verbose +from ..utils import _downloader_params, _get_path AGE_SLEEP_RECORDS = op.join(op.dirname(__file__), "age_records.csv") TEMAZEPAM_SLEEP_RECORDS = op.join(op.dirname(__file__), "temazepam_records.csv") diff --git a/mne/datasets/sleep_physionet/age.py b/mne/datasets/sleep_physionet/age.py index b0d23a94b07..bdc98f1be9e 100644 --- a/mne/datasets/sleep_physionet/age.py +++ b/mne/datasets/sleep_physionet/age.py @@ -10,8 +10,13 @@ from ...utils import verbose from ..utils import _log_time_size -from ._utils import _fetch_one, _data_path, _on_missing, AGE_SLEEP_RECORDS -from ._utils import _check_subjects +from ._utils import ( + AGE_SLEEP_RECORDS, + _check_subjects, + _data_path, + _fetch_one, + _on_missing, +) data_path = _data_path # expose _data_path(..) as data_path(..) diff --git a/mne/datasets/sleep_physionet/temazepam.py b/mne/datasets/sleep_physionet/temazepam.py index 8a6efc19a9a..a20cde1e366 100644 --- a/mne/datasets/sleep_physionet/temazepam.py +++ b/mne/datasets/sleep_physionet/temazepam.py @@ -10,8 +10,7 @@ from ...utils import verbose from ..utils import _log_time_size -from ._utils import _fetch_one, _data_path, TEMAZEPAM_SLEEP_RECORDS -from ._utils import _check_subjects +from ._utils import TEMAZEPAM_SLEEP_RECORDS, _check_subjects, _data_path, _fetch_one data_path = _data_path # expose _data_path(..) as data_path(..) diff --git a/mne/datasets/sleep_physionet/tests/test_physionet.py b/mne/datasets/sleep_physionet/tests/test_physionet.py index bab7a17c32b..db3600290b1 100644 --- a/mne/datasets/sleep_physionet/tests/test_physionet.py +++ b/mne/datasets/sleep_physionet/tests/test_physionet.py @@ -4,15 +4,17 @@ # License: BSD Style. from pathlib import Path -import pytest +import pytest -from mne.utils import requires_good_network from mne.datasets.sleep_physionet import age, temazepam -from mne.datasets.sleep_physionet._utils import _update_sleep_temazepam_records -from mne.datasets.sleep_physionet._utils import _update_sleep_age_records -from mne.datasets.sleep_physionet._utils import AGE_SLEEP_RECORDS -from mne.datasets.sleep_physionet._utils import TEMAZEPAM_SLEEP_RECORDS +from mne.datasets.sleep_physionet._utils import ( + AGE_SLEEP_RECORDS, + TEMAZEPAM_SLEEP_RECORDS, + _update_sleep_age_records, + _update_sleep_temazepam_records, +) +from mne.utils import requires_good_network @pytest.fixture(scope="session") diff --git a/mne/datasets/somato/somato.py b/mne/datasets/somato/somato.py index 4dcdeffa4a5..507cc3d32a8 100644 --- a/mne/datasets/somato/somato.py +++ b/mne/datasets/somato/somato.py @@ -4,7 +4,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/spm_face/spm_data.py b/mne/datasets/spm_face/spm_data.py index 5fc1d47691f..d622e4b8453 100644 --- a/mne/datasets/spm_face/spm_data.py +++ b/mne/datasets/spm_face/spm_data.py @@ -4,16 +4,15 @@ from functools import partial -from ...utils import verbose, get_config +from ...utils import get_config, verbose from ..utils import ( - has_dataset, _data_path_doc, + _download_mne_dataset, _get_version, _version_doc, - _download_mne_dataset, + has_dataset, ) - has_spm_data = partial(has_dataset, name="spm") diff --git a/mne/datasets/ssvep/ssvep.py b/mne/datasets/ssvep/ssvep.py index 91f682a6728..6d1861ffca2 100644 --- a/mne/datasets/ssvep/ssvep.py +++ b/mne/datasets/ssvep/ssvep.py @@ -2,7 +2,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/datasets/testing/_testing.py b/mne/datasets/testing/_testing.py index 7f2a1c0074e..aee35e59372 100644 --- a/mne/datasets/testing/_testing.py +++ b/mne/datasets/testing/_testing.py @@ -5,13 +5,13 @@ from functools import partial -from ...utils import verbose, get_config +from ...utils import get_config, verbose from ..utils import ( - has_dataset, _data_path_doc, + _download_mne_dataset, _get_version, _version_doc, - _download_mne_dataset, + has_dataset, ) has_testing_data = partial(has_dataset, name="testing") diff --git a/mne/datasets/tests/test_datasets.py b/mne/datasets/tests/test_datasets.py index 211dd4d0b1c..f1569317f8e 100644 --- a/mne/datasets/tests/test_datasets.py +++ b/mne/datasets/tests/test_datasets.py @@ -1,31 +1,29 @@ -from functools import partial import os -from os import path as op import re import shutil import zipfile +from functools import partial +from os import path as op import pooch import pytest from mne import datasets, read_labels_from_annot, write_labels_to_annot -from mne.datasets import testing, fetch_infant_template, fetch_phantom, fetch_dataset +from mne.datasets import fetch_dataset, fetch_infant_template, fetch_phantom, testing from mne.datasets._fsaverage.base import _set_montage_coreg_path from mne.datasets._infant import base as infant_base from mne.datasets._phantom import base as phantom_base from mne.datasets.utils import _manifest_check_download - from mne.utils import ( - requires_good_network, - get_subjects_dir, ArgvSetter, _pl, - use_log_level, catch_logging, + get_subjects_dir, hashfunc, + requires_good_network, + use_log_level, ) - subjects_dir = testing.data_path(download=False) / "subjects" diff --git a/mne/datasets/ucl_opm_auditory/ucl_opm_auditory.py b/mne/datasets/ucl_opm_auditory/ucl_opm_auditory.py index 09853e640de..205dd2ec8ac 100644 --- a/mne/datasets/ucl_opm_auditory/ucl_opm_auditory.py +++ b/mne/datasets/ucl_opm_auditory/ucl_opm_auditory.py @@ -2,8 +2,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _data_path_doc, _get_version, _version_doc, _download_mne_dataset - +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc _NAME = "ucl_opm_auditory" _PROCESSOR = "unzip" diff --git a/mne/datasets/utils.py b/mne/datasets/utils.py index 041baf32812..9ff4efd3400 100644 --- a/mne/datasets/utils.py +++ b/mne/datasets/utils.py @@ -8,34 +8,33 @@ # # License: BSD Style. -from collections import OrderedDict import importlib import inspect import logging import os import os.path as op -from pathlib import Path import sys -import time import tempfile +import time import zipfile +from collections import OrderedDict +from pathlib import Path import numpy as np -from .config import _hcp_mmp_license_text, MNE_DATASETS -from ..label import read_labels_from_annot, Label, write_labels_to_annot +from ..label import Label, read_labels_from_annot, write_labels_to_annot from ..utils import ( + _pl, + _safe_input, + _validate_type, get_config, - set_config, + get_subjects_dir, logger, - _validate_type, + set_config, verbose, - get_subjects_dir, - _pl, - _safe_input, ) -from ..utils.docs import docdict, _docformat - +from ..utils.docs import _docformat, docdict +from .config import MNE_DATASETS, _hcp_mmp_license_text _data_path_doc = """Get path to local copy of {name} dataset. @@ -213,6 +212,7 @@ def _download_mne_dataset( ): """Aux function for downloading internal MNE datasets.""" import pooch + from mne.datasets._fetch import fetch_dataset _check_in_testing_and_raise(name, download) @@ -341,12 +341,12 @@ def _download_all_example_data(verbose=True): # Now for the exceptions: from . import ( eegbci, - sleep_physionet, - limo, fetch_fsaverage, - fetch_infant_template, fetch_hcp_mmp_parcellation, + fetch_infant_template, fetch_phantom, + limo, + sleep_physionet, ) eegbci.load_data(1, [6, 10, 14], update_path=True) diff --git a/mne/datasets/visual_92_categories/visual_92_categories.py b/mne/datasets/visual_92_categories/visual_92_categories.py index d5fb1c1c8bb..e3a3dfaaae7 100644 --- a/mne/datasets/visual_92_categories/visual_92_categories.py +++ b/mne/datasets/visual_92_categories/visual_92_categories.py @@ -1,7 +1,7 @@ # License: BSD Style. from ...utils import verbose -from ..utils import _download_mne_dataset, _data_path_doc, _get_version, _version_doc +from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc @verbose diff --git a/mne/decoding/base.py b/mne/decoding/base.py index 6489b7f113a..88838efeeb1 100644 --- a/mne/decoding/base.py +++ b/mne/decoding/base.py @@ -6,12 +6,14 @@ # # License: BSD-3-Clause -import numpy as np import datetime as dt import numbers + +import numpy as np + +from ..fixes import BaseEstimator, _check_fit_params, _get_check_scoring from ..parallel import parallel_func -from ..fixes import BaseEstimator, _get_check_scoring, _check_fit_params -from ..utils import warn, verbose +from ..utils import verbose, warn class LinearModel(BaseEstimator): @@ -155,7 +157,7 @@ def _set_cv(cv, estimator=None, X=None, y=None): est_is_classifier = is_classifier(estimator) # Setup CV from sklearn import model_selection as models - from sklearn.model_selection import check_cv, StratifiedKFold, KFold + from sklearn.model_selection import KFold, StratifiedKFold, check_cv if isinstance(cv, (int, np.int64)): XFold = StratifiedKFold if est_is_classifier else KFold @@ -366,8 +368,8 @@ def cross_val_multiscore( """ # This code is copied from sklearn from sklearn.base import clone, is_classifier - from sklearn.utils import indexable from sklearn.model_selection._split import check_cv + from sklearn.utils import indexable check_scoring = _get_check_scoring() diff --git a/mne/decoding/csp.py b/mne/decoding/csp.py index abb85afc2e9..53cecd53ab0 100644 --- a/mne/decoding/csp.py +++ b/mne/decoding/csp.py @@ -11,13 +11,13 @@ import numpy as np from scipy.linalg import eigh -from .base import BaseEstimator -from .mixin import TransformerMixin from ..cov import _regularized_covariance from ..defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT -from ..fixes import pinv from ..evoked import EvokedArray -from ..utils import fill_doc, _check_option, _validate_type, copy_doc +from ..fixes import pinv +from ..utils import _check_option, _validate_type, copy_doc, fill_doc +from .base import BaseEstimator +from .mixin import TransformerMixin @fill_doc diff --git a/mne/decoding/ems.py b/mne/decoding/ems.py index efad63cc643..e8b3ac1da43 100644 --- a/mne/decoding/ems.py +++ b/mne/decoding/ems.py @@ -8,11 +8,11 @@ import numpy as np -from .mixin import TransformerMixin, EstimatorMixin -from .base import _set_cv -from .._fiff.pick import _picks_to_idx, pick_types, pick_info +from .._fiff.pick import _picks_to_idx, pick_info, pick_types from ..parallel import parallel_func from ..utils import logger, verbose +from .base import _set_cv +from .mixin import EstimatorMixin, TransformerMixin class EMS(TransformerMixin, EstimatorMixin): diff --git a/mne/decoding/receptive_field.py b/mne/decoding/receptive_field.py index b31fc411a61..4a274fd3997 100644 --- a/mne/decoding/receptive_field.py +++ b/mne/decoding/receptive_field.py @@ -8,10 +8,10 @@ import numpy as np from scipy.stats import pearsonr -from .base import get_coef, BaseEstimator, _check_estimator from ..fixes import pinv +from ..utils import _validate_type, fill_doc, verbose +from .base import BaseEstimator, _check_estimator, get_coef from .time_delaying_ridge import TimeDelayingRidge -from ..utils import _validate_type, verbose, fill_doc @fill_doc diff --git a/mne/decoding/search_light.py b/mne/decoding/search_light.py index 0b476a45e9a..a176c4accac 100644 --- a/mne/decoding/search_light.py +++ b/mne/decoding/search_light.py @@ -2,13 +2,14 @@ # # License: BSD-3-Clause import logging + import numpy as np -from .mixin import TransformerMixin -from .base import BaseEstimator, _check_estimator from ..fixes import _get_check_scoring from ..parallel import parallel_func -from ..utils import array_split_idx, ProgressBar, verbose, fill_doc, _parse_verbose +from ..utils import ProgressBar, _parse_verbose, array_split_idx, fill_doc, verbose +from .base import BaseEstimator, _check_estimator +from .mixin import TransformerMixin @fill_doc diff --git a/mne/decoding/ssd.py b/mne/decoding/ssd.py index 17e8ff11a2d..04c42a1970a 100644 --- a/mne/decoding/ssd.py +++ b/mne/decoding/ssd.py @@ -6,22 +6,22 @@ import numpy as np from scipy.linalg import eigh -from .mixin import TransformerMixin -from ..fixes import BaseEstimator -from ..cov import _regularized_covariance, Covariance +from .._fiff.pick import _picks_to_idx +from ..cov import Covariance, _regularized_covariance from ..defaults import _handle_default from ..filter import filter_data -from .._fiff.pick import _picks_to_idx +from ..fixes import BaseEstimator from ..rank import compute_rank from ..time_frequency import psd_array_welch from ..utils import ( - fill_doc, - logger, _check_option, _time_mask, _validate_type, _verbose_safe_false, + fill_doc, + logger, ) +from .mixin import TransformerMixin @fill_doc diff --git a/mne/decoding/tests/test_base.py b/mne/decoding/tests/test_base.py index 5aa2ebdc7d9..09dc43c1f8d 100644 --- a/mne/decoding/tests/test_base.py +++ b/mne/decoding/tests/test_base.py @@ -4,26 +4,25 @@ # License: BSD-3-Clause import numpy as np +import pytest from numpy.testing import ( - assert_array_equal, - assert_array_almost_equal, - assert_equal, assert_allclose, + assert_array_almost_equal, + assert_array_equal, assert_array_less, + assert_equal, ) -import pytest -from mne import create_info, EpochsArray +from mne import EpochsArray, create_info +from mne.decoding import GeneralizingEstimator, Scaler, TransformerMixin, Vectorizer from mne.decoding.base import ( - _get_inverse_funcs, + BaseEstimator, LinearModel, - get_coef, + _get_inverse_funcs, cross_val_multiscore, - BaseEstimator, + get_coef, ) from mne.decoding.search_light import SlidingEstimator -from mne.decoding import Scaler, TransformerMixin, Vectorizer, GeneralizingEstimator - pytest.importorskip("sklearn") @@ -69,17 +68,17 @@ def _make_data(n_samples=1000, n_features=5, n_targets=3): def test_get_coef(): """Test getting linear coefficients (filters/patterns) from estimators.""" + from sklearn import svm from sklearn.base import ( - TransformerMixin, BaseEstimator, + TransformerMixin, is_classifier, is_regressor, ) - from sklearn.pipeline import make_pipeline - from sklearn.preprocessing import StandardScaler - from sklearn import svm from sklearn.linear_model import Ridge from sklearn.model_selection import GridSearchCV + from sklearn.pipeline import make_pipeline + from sklearn.preprocessing import StandardScaler lm_classification = LinearModel() assert is_classifier(lm_classification) @@ -298,9 +297,9 @@ def test_get_coef_multiclass(n_features, n_targets): ) def test_get_coef_multiclass_full(n_classes, n_channels, n_times): """Test a full example with pattern extraction.""" - from sklearn.pipeline import make_pipeline from sklearn.linear_model import LogisticRegression from sklearn.model_selection import StratifiedKFold + from sklearn.pipeline import make_pipeline data = np.zeros((10 * n_classes, n_channels, n_times)) # Make only the first channel informative @@ -393,8 +392,8 @@ def test_linearmodel(): def test_cross_val_multiscore(): """Test cross_val_multiscore for computing scores on decoding over time.""" + from sklearn.linear_model import LinearRegression, LogisticRegression from sklearn.model_selection import KFold, StratifiedKFold, cross_val_score - from sklearn.linear_model import LogisticRegression, LinearRegression logreg = LogisticRegression(solver="liblinear", random_state=0) @@ -455,8 +454,8 @@ def test_cross_val_multiscore(): def test_sklearn_compliance(): """Test LinearModel compliance with sklearn.""" pytest.importorskip("sklearn") - from sklearn.utils.estimator_checks import check_estimator from sklearn.linear_model import LogisticRegression + from sklearn.utils.estimator_checks import check_estimator lm = LinearModel(LogisticRegression()) ignores = ( diff --git a/mne/decoding/tests/test_csp.py b/mne/decoding/tests/test_csp.py index 3ad04e8c8e3..788a4040de8 100644 --- a/mne/decoding/tests/test_csp.py +++ b/mne/decoding/tests/test_csp.py @@ -11,8 +11,8 @@ import pytest from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_equal -from mne import io, Epochs, read_events, pick_types -from mne.decoding.csp import CSP, _ajd_pham, SPoC +from mne import Epochs, io, pick_types, read_events +from mne.decoding.csp import CSP, SPoC, _ajd_pham data_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_dir / "test_raw.fif" @@ -283,8 +283,8 @@ def test_regularized_csp(): def test_csp_pipeline(): """Test if CSP works in a pipeline.""" pytest.importorskip("sklearn") - from sklearn.svm import SVC from sklearn.pipeline import Pipeline + from sklearn.svm import SVC csp = CSP(reg=1, norm_trace=False) svc = SVC() diff --git a/mne/decoding/tests/test_ems.py b/mne/decoding/tests/test_ems.py index 70260cf2e8f..6238058658d 100644 --- a/mne/decoding/tests/test_ems.py +++ b/mne/decoding/tests/test_ems.py @@ -5,11 +5,11 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_array_almost_equal, assert_equal import pytest +from numpy.testing import assert_array_almost_equal, assert_equal -from mne import io, Epochs, read_events, pick_types -from mne.decoding import compute_ems, EMS +from mne import Epochs, io, pick_types, read_events +from mne.decoding import EMS, compute_ems data_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_dir / "test_raw.fif" diff --git a/mne/decoding/tests/test_receptive_field.py b/mne/decoding/tests/test_receptive_field.py index 3153fccc846..6322b7506b1 100644 --- a/mne/decoding/tests/test_receptive_field.py +++ b/mne/decoding/tests/test_receptive_field.py @@ -4,21 +4,20 @@ from pathlib import Path -import pytest import numpy as np +import pytest from numpy import einsum -from numpy.fft import rfft, irfft -from numpy.testing import assert_array_equal, assert_allclose, assert_equal +from numpy.fft import irfft, rfft +from numpy.testing import assert_allclose, assert_array_equal, assert_equal from mne.decoding import ReceptiveField, TimeDelayingRidge from mne.decoding.receptive_field import ( - _delay_time_series, _SCORERS, - _times_to_delays, + _delay_time_series, _delays_to_slice, + _times_to_delays, ) -from mne.decoding.time_delaying_ridge import _compute_reg_neighbors, _compute_corrs - +from mne.decoding.time_delaying_ridge import _compute_corrs, _compute_reg_neighbors data_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_dir / "test_raw.fif" diff --git a/mne/decoding/tests/test_search_light.py b/mne/decoding/tests/test_search_light.py index 69fce9c7e6f..00b4f98f997 100644 --- a/mne/decoding/tests/test_search_light.py +++ b/mne/decoding/tests/test_search_light.py @@ -5,12 +5,12 @@ from inspect import signature import numpy as np -from numpy.testing import assert_array_equal, assert_equal import pytest +from numpy.testing import assert_array_equal, assert_equal -from mne.utils import _record_warnings, use_log_level -from mne.decoding.search_light import SlidingEstimator, GeneralizingEstimator +from mne.decoding.search_light import GeneralizingEstimator, SlidingEstimator from mne.decoding.transformer import Vectorizer +from mne.utils import _record_warnings, use_log_level pytest.importorskip("sklearn") @@ -29,9 +29,9 @@ def make_data(): def test_search_light(): """Test SlidingEstimator.""" - from sklearn.linear_model import Ridge, LogisticRegression + from sklearn.linear_model import LogisticRegression, Ridge + from sklearn.metrics import make_scorer, roc_auc_score from sklearn.pipeline import make_pipeline - from sklearn.metrics import roc_auc_score, make_scorer with _record_warnings(): # NumPy module import from sklearn.ensemble import BaggingClassifier @@ -172,9 +172,9 @@ def transform(self, X): def test_generalization_light(): """Test GeneralizingEstimator.""" - from sklearn.pipeline import make_pipeline from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_auc_score + from sklearn.pipeline import make_pipeline logreg = LogisticRegression(solver="liblinear", multi_class="ovr", random_state=0) @@ -283,9 +283,9 @@ def test_verbose_arg(capsys, n_jobs, verbose): def test_cross_val_predict(): """Test cross_val_predict with predict_proba.""" - from sklearn.linear_model import LinearRegression - from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.base import BaseEstimator, clone + from sklearn.discriminant_analysis import LinearDiscriminantAnalysis + from sklearn.linear_model import LinearRegression from sklearn.model_selection import cross_val_predict rng = np.random.RandomState(42) @@ -320,8 +320,8 @@ def predict_proba(self, X): def test_sklearn_compliance(): """Test LinearModel compliance with sklearn.""" pytest.importorskip("sklearn") - from sklearn.utils.estimator_checks import check_estimator from sklearn.linear_model import LogisticRegression + from sklearn.utils.estimator_checks import check_estimator est = SlidingEstimator(LogisticRegression(), allow_2d=True) diff --git a/mne/decoding/tests/test_ssd.py b/mne/decoding/tests/test_ssd.py index b9dcfc361c2..18ab707137a 100644 --- a/mne/decoding/tests/test_ssd.py +++ b/mne/decoding/tests/test_ssd.py @@ -6,12 +6,12 @@ import numpy as np import pytest from numpy.testing import assert_array_almost_equal, assert_array_equal -from mne import io -from mne.time_frequency import psd_array_welch + +from mne import create_info, io +from mne.decoding import CSP from mne.decoding.ssd import SSD from mne.filter import filter_data -from mne import create_info -from mne.decoding import CSP +from mne.time_frequency import psd_array_welch freqs_sig = 9, 12 freqs_noise = 8, 13 diff --git a/mne/decoding/tests/test_time_frequency.py b/mne/decoding/tests/test_time_frequency.py index ba2031675e1..c2c24f5d808 100644 --- a/mne/decoding/tests/test_time_frequency.py +++ b/mne/decoding/tests/test_time_frequency.py @@ -4,8 +4,8 @@ import numpy as np -from numpy.testing import assert_array_equal import pytest +from numpy.testing import assert_array_equal from mne.decoding.time_frequency import TimeFrequency diff --git a/mne/decoding/tests/test_transformer.py b/mne/decoding/tests/test_transformer.py index 95076f7d0b4..f1a84c5d41d 100644 --- a/mne/decoding/tests/test_transformer.py +++ b/mne/decoding/tests/test_transformer.py @@ -6,23 +6,22 @@ from pathlib import Path import numpy as np - import pytest from numpy.testing import ( - assert_array_equal, - assert_array_almost_equal, assert_allclose, + assert_array_almost_equal, + assert_array_equal, assert_equal, ) -from mne import io, read_events, Epochs, pick_types +from mne import Epochs, io, pick_types, read_events from mne.decoding import ( - Scaler, FilterEstimator, PSDEstimator, - Vectorizer, - UnsupervisedSpatialFilter, + Scaler, TemporalFilter, + UnsupervisedSpatialFilter, + Vectorizer, ) from mne.defaults import DEFAULTS from mne.utils import check_version, use_log_level diff --git a/mne/decoding/time_delaying_ridge.py b/mne/decoding/time_delaying_ridge.py index 8a979d4a764..849719d56aa 100644 --- a/mne/decoding/time_delaying_ridge.py +++ b/mne/decoding/time_delaying_ridge.py @@ -9,11 +9,11 @@ from scipy.signal import fftconvolve from scipy.sparse.csgraph import laplacian -from .base import BaseEstimator from ..cuda import _setup_cuda_fft_multiply_repeated from ..filter import next_fast_len from ..fixes import jit -from ..utils import warn, ProgressBar, logger, _validate_type, _check_option +from ..utils import ProgressBar, _check_option, _validate_type, logger, warn +from .base import BaseEstimator def _compute_corrs( diff --git a/mne/decoding/time_frequency.py b/mne/decoding/time_frequency.py index d6ed4f6dd56..a138f085b59 100644 --- a/mne/decoding/time_frequency.py +++ b/mne/decoding/time_frequency.py @@ -3,10 +3,11 @@ # License: BSD-3-Clause import numpy as np -from .mixin import TransformerMixin -from .base import BaseEstimator + from ..time_frequency.tfr import _compute_tfr -from ..utils import fill_doc, _check_option, verbose +from ..utils import _check_option, fill_doc, verbose +from .base import BaseEstimator +from .mixin import TransformerMixin @fill_doc diff --git a/mne/decoding/transformer.py b/mne/decoding/transformer.py index 9675f7bef0c..97482dec64e 100644 --- a/mne/decoding/transformer.py +++ b/mne/decoding/transformer.py @@ -6,20 +6,19 @@ import numpy as np -from .mixin import TransformerMixin -from .base import BaseEstimator - -from ..filter import filter_data -from ..time_frequency import psd_array_multitaper -from ..utils import fill_doc, _check_option, _validate_type, verbose from .._fiff.pick import ( - pick_info, - pick_types, _pick_data_channels, _picks_by_type, _picks_to_idx, + pick_info, + pick_types, ) from ..cov import _check_scalings_user +from ..filter import filter_data +from ..time_frequency import psd_array_multitaper +from ..utils import _check_option, _validate_type, fill_doc, verbose +from .base import BaseEstimator +from .mixin import TransformerMixin class _ConstantScaler: diff --git a/mne/dipole.py b/mne/dipole.py index a71bbc590b9..810955011a2 100644 --- a/mne/dipole.py +++ b/mne/dipole.py @@ -5,58 +5,55 @@ # # License: Simplified BSD -from copy import deepcopy import functools -from functools import partial import re +from copy import deepcopy +from functools import partial import numpy as np from scipy.linalg import eigh from scipy.optimize import fmin_cobyla -from .cov import compute_whitener, _ensure_cov from ._fiff.constants import FIFF from ._fiff.pick import pick_types -from ._fiff.proj import make_projector, _needs_eeg_average_ref_proj -from .bem import _fit_sphere -from .evoked import _read_evoked, _aspect_rev, _write_evokeds -from .fixes import pinvh, _safe_svd -from ._freesurfer import read_freesurfer_lut, _get_aseg -from .transforms import _print_coord_trans, _coord_frame_name, apply_trans -from .viz.evoked import _plot_evoked -from ._freesurfer import head_to_mni, head_to_mri +from ._fiff.proj import _needs_eeg_average_ref_proj, make_projector +from ._freesurfer import _get_aseg, head_to_mni, head_to_mri, read_freesurfer_lut +from .bem import _bem_find_surface, _bem_surf_name, _fit_sphere +from .cov import _ensure_cov, compute_whitener +from .evoked import _aspect_rev, _read_evoked, _write_evokeds +from .fixes import _safe_svd, pinvh +from .forward._compute_forward import _compute_forwards_meeg, _prep_field_computation from .forward._make_forward import ( _get_trans, - _setup_bem, - _prep_meg_channels, _prep_eeg_channels, + _prep_meg_channels, + _setup_bem, ) -from .forward._compute_forward import _compute_forwards_meeg, _prep_field_computation - -from .surface import transform_surface_to, _compute_nearest, _points_outside_surface -from .bem import _bem_find_surface, _bem_surf_name -from .source_space._source_space import _make_volume_source_space, SourceSpaces from .parallel import parallel_func +from .source_space._source_space import SourceSpaces, _make_volume_source_space +from .surface import _compute_nearest, _points_outside_surface, transform_surface_to +from .transforms import _coord_frame_name, _print_coord_trans, apply_trans from .utils import ( - logger, - verbose, - _time_mask, - warn, + ExtendedTimeMixin, + TimeMixin, _check_fname, - check_fname, - _pl, - fill_doc, _check_option, - _svd_lwork, - _repeated_svd, _get_blas_funcs, + _pl, + _repeated_svd, + _svd_lwork, + _time_mask, _validate_type, - copy_function_doc_to_method_doc, - ExtendedTimeMixin, - TimeMixin, _verbose_safe_false, + check_fname, + copy_function_doc_to_method_doc, + fill_doc, + logger, + verbose, + warn, ) -from .viz import plot_dipole_locations, plot_dipole_amplitudes +from .viz import plot_dipole_amplitudes, plot_dipole_locations +from .viz.evoked import _plot_evoked @fill_doc diff --git a/mne/epochs.py b/mne/epochs.py index e66826b6f50..5af8f382c88 100644 --- a/mne/epochs.py +++ b/mne/epochs.py @@ -9,105 +9,104 @@ # # License: BSD-3-Clause -from functools import partial -from collections import Counter -from copy import deepcopy import json import operator import os.path as op +from collections import Counter +from copy import deepcopy +from functools import partial import numpy as np from scipy.interpolate import interp1d -from .event import make_fixed_length_events, _read_events_fif, match_event_names -from ._fiff.utils import _make_split_fnames -from ._fiff.write import ( - start_and_end_file, - start_block, - end_block, - write_int, - write_float, - write_float_matrix, - write_double_matrix, - write_complex_float_matrix, - write_complex_double_matrix, - write_id, - write_string, - _get_split_size, - _NEXT_FILE_BUFFER, - INT32_MAX, -) +from ._fiff.constants import FIFF from ._fiff.meas_info import ( + ContainsMixin, + SetChannelsMixin, + _ensure_infos_match, read_meas_info, write_meas_info, - _ensure_infos_match, - ContainsMixin, ) -from ._fiff.open import fiff_open, _get_next_fname -from ._fiff.tree import dir_tree_find -from ._fiff.tag import read_tag, read_tag_info -from ._fiff.constants import FIFF +from ._fiff.open import _get_next_fname, fiff_open from ._fiff.pick import ( + _DATA_CH_TYPES_SPLIT, + _pick_data_channels, + _picks_to_idx, channel_indices_by_type, channel_type, pick_channels, pick_info, - _pick_data_channels, - _DATA_CH_TYPES_SPLIT, - _picks_to_idx, ) -from ._fiff.proj import setup_proj, ProjMixin -from ._fiff.meas_info import SetChannelsMixin +from ._fiff.proj import ProjMixin, setup_proj +from ._fiff.tag import read_tag, read_tag_info +from ._fiff.tree import dir_tree_find +from ._fiff.utils import _make_split_fnames +from ._fiff.write import ( + _NEXT_FILE_BUFFER, + INT32_MAX, + _get_split_size, + end_block, + start_and_end_file, + start_block, + write_complex_double_matrix, + write_complex_float_matrix, + write_double_matrix, + write_float, + write_float_matrix, + write_id, + write_int, + write_string, +) +from .annotations import ( + EpochAnnotationsMixin, + _read_annotations_fif, + _write_annotations, +) +from .baseline import _check_baseline, _log_rescale, rescale from .bem import _check_origin +from .channels.channels import InterpolationMixin, ReferenceMixin, UpdateChannelsMixin +from .event import _read_events_fif, make_fixed_length_events, match_event_names from .evoked import EvokedArray -from .baseline import rescale, _log_rescale, _check_baseline +from .filter import FilterMixin, _check_fun, detrend +from .fixes import rng_uniform from .html_templates import _get_html_template -from .channels.channels import UpdateChannelsMixin, InterpolationMixin, ReferenceMixin -from .filter import detrend, FilterMixin, _check_fun from .parallel import parallel_func - -from .fixes import rng_uniform from .time_frequency.spectrum import EpochsSpectrum, SpectrumMixin, _validate_method -from .viz import plot_epochs, plot_epochs_image, plot_topo_image_epochs, plot_drop_log from .utils import ( - _check_fname, - check_fname, - logger, - verbose, - repr_html, - check_random_state, - warn, - _pl, - sizeof_fmt, - SizeMixin, - copy_function_doc_to_method_doc, - _check_pandas_installed, - _check_preload, + ExtendedTimeMixin, GetEpochsMixin, - _prepare_read_metadata, - _prepare_write_metadata, + SizeMixin, + _build_data_frame, + _check_combine, _check_event_id, - _gen_events, + _check_fname, _check_option, - _check_combine, - _build_data_frame, _check_pandas_index_arguments, - _convert_times, - _scale_dataframe_data, + _check_pandas_installed, + _check_preload, _check_time_format, - object_size, - _on_missing, - _validate_type, + _convert_times, _ensure_events, + _gen_events, + _on_missing, _path_like, - ExtendedTimeMixin, + _pl, + _prepare_read_metadata, + _prepare_write_metadata, + _scale_dataframe_data, + _validate_type, + check_fname, + check_random_state, + copy_function_doc_to_method_doc, + logger, + object_size, + repr_html, + sizeof_fmt, + verbose, + warn, ) from .utils.docs import fill_doc -from .annotations import ( - _write_annotations, - _read_annotations_fif, - EpochAnnotationsMixin, -) +from .viz import plot_drop_log, plot_epochs, plot_epochs_image, plot_topo_image_epochs def _pack_reject_params(epochs): @@ -4315,17 +4314,17 @@ def average_movements( estimation, and compensation. NeuroImage 40:541–550, 2008. """ # noqa: E501 from .preprocessing.maxwell import ( - _trans_sss_basis, - _reset_meg_bads, + _check_destination, _check_usable, _col_norm_pinv, - _get_n_moments, + _get_coil_scale, _get_mf_picks_fix_mags, + _get_n_moments, + _get_sensor_operator, _prep_mf_coils, - _check_destination, _remove_meg_projs_comps, - _get_coil_scale, - _get_sensor_operator, + _reset_meg_bads, + _trans_sss_basis, ) if head_pos is None: diff --git a/mne/event.py b/mne/event.py index 625d8033490..17e45707844 100644 --- a/mne/event.py +++ b/mne/event.py @@ -12,26 +12,26 @@ import numpy as np +from ._fiff.constants import FIFF +from ._fiff.open import fiff_open +from ._fiff.pick import pick_channels +from ._fiff.tag import read_tag +from ._fiff.tree import dir_tree_find +from ._fiff.write import end_block, start_and_end_file, start_block, write_int from .utils import ( + _check_fname, + _check_integer_or_list, + _check_on_missing, + _check_option, + _get_stim_channel, + _on_missing, + _validate_type, check_fname, + fill_doc, logger, verbose, - _get_stim_channel, warn, - _validate_type, - _check_option, - fill_doc, - _check_fname, - _on_missing, - _check_on_missing, - _check_integer_or_list, ) -from ._fiff.constants import FIFF -from ._fiff.tree import dir_tree_find -from ._fiff.tag import read_tag -from ._fiff.open import fiff_open -from ._fiff.write import write_int, start_block, start_and_end_file, end_block -from ._fiff.pick import pick_channels @fill_doc diff --git a/mne/evoked.py b/mne/evoked.py index 63b0a93d8ba..f2c75f3754b 100644 --- a/mne/evoked.py +++ b/mne/evoked.py @@ -11,72 +11,71 @@ import numpy as np -from .baseline import rescale, _log_rescale, _check_baseline -from .channels.channels import UpdateChannelsMixin, InterpolationMixin, ReferenceMixin -from .channels.layout import _merge_ch_data, _pair_grad_sensors -from .defaults import _INTERPOLATION_DEFAULT, _EXTRAPOLATE_DEFAULT, _BORDER_DEFAULT -from .filter import detrend, FilterMixin, _check_fun -from .html_templates import _get_html_template -from .utils import ( - check_fname, - logger, - verbose, - warn, - sizeof_fmt, - repr_html, - SizeMixin, - copy_function_doc_to_method_doc, - _validate_type, - fill_doc, - _check_option, - _build_data_frame, - _check_pandas_installed, - _check_pandas_index_arguments, - _convert_times, - _scale_dataframe_data, - _check_time_format, - _check_preload, - _check_fname, - ExtendedTimeMixin, -) -from .viz import ( - plot_evoked, - plot_evoked_topomap, - plot_evoked_field, - plot_evoked_image, - plot_evoked_topo, -) -from .viz.evoked import plot_evoked_white, plot_evoked_joint -from .viz.topomap import _topomap_animation - from ._fiff.constants import FIFF -from ._fiff.open import fiff_open -from ._fiff.tag import read_tag -from ._fiff.tree import dir_tree_find -from ._fiff.pick import pick_types, _picks_to_idx, _FNIRS_CH_TYPES_SPLIT from ._fiff.meas_info import ( ContainsMixin, SetChannelsMixin, - read_meas_info, - write_meas_info, + _ensure_infos_match, _read_extended_ch_info, _rename_list, - _ensure_infos_match, + read_meas_info, + write_meas_info, ) +from ._fiff.open import fiff_open +from ._fiff.pick import _FNIRS_CH_TYPES_SPLIT, _picks_to_idx, pick_types from ._fiff.proj import ProjMixin +from ._fiff.tag import read_tag +from ._fiff.tree import dir_tree_find from ._fiff.write import ( + end_block, start_and_end_file, start_block, - end_block, - write_int, - write_string, + write_complex_float_matrix, + write_float, write_float_matrix, write_id, - write_float, - write_complex_float_matrix, + write_int, + write_string, ) +from .baseline import _check_baseline, _log_rescale, rescale +from .channels.channels import InterpolationMixin, ReferenceMixin, UpdateChannelsMixin +from .channels.layout import _merge_ch_data, _pair_grad_sensors +from .defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT +from .filter import FilterMixin, _check_fun, detrend +from .html_templates import _get_html_template from .parallel import parallel_func from .time_frequency.spectrum import Spectrum, SpectrumMixin, _validate_method +from .utils import ( + ExtendedTimeMixin, + SizeMixin, + _build_data_frame, + _check_fname, + _check_option, + _check_pandas_index_arguments, + _check_pandas_installed, + _check_preload, + _check_time_format, + _convert_times, + _scale_dataframe_data, + _validate_type, + check_fname, + copy_function_doc_to_method_doc, + fill_doc, + logger, + repr_html, + sizeof_fmt, + verbose, + warn, +) +from .viz import ( + plot_evoked, + plot_evoked_field, + plot_evoked_image, + plot_evoked_topo, + plot_evoked_topomap, +) +from .viz.evoked import plot_evoked_joint, plot_evoked_white +from .viz.topomap import _topomap_animation _aspect_dict = { "average": FIFF.FIFFV_ASPECT_AVERAGE, diff --git a/mne/export/__init__.pyi b/mne/export/__init__.pyi index e5376ed94e3..6cd2a374ef3 100644 --- a/mne/export/__init__.pyi +++ b/mne/export/__init__.pyi @@ -1,3 +1,3 @@ __all__ = ["export_epochs", "export_evokeds", "export_evokeds_mff", "export_raw"] -from ._export import export_raw, export_epochs, export_evokeds from ._egimff import export_evokeds_mff +from ._export import export_epochs, export_evokeds, export_raw diff --git a/mne/export/_edf.py b/mne/export/_edf.py index f0bad43e66a..ae141d64f28 100644 --- a/mne/export/_edf.py +++ b/mne/export/_edf.py @@ -3,6 +3,7 @@ # License: BSD-3-Clause from contextlib import contextmanager + import numpy as np from ..utils import _check_edflib_installed, warn diff --git a/mne/export/_eeglab.py b/mne/export/_eeglab.py index 3fd1cc55902..6d9173f1329 100644 --- a/mne/export/_eeglab.py +++ b/mne/export/_eeglab.py @@ -7,8 +7,8 @@ from ..utils import _check_eeglabio_installed _check_eeglabio_installed() -import eeglabio.raw # noqa: E402 import eeglabio.epochs # noqa: E402 +import eeglabio.raw # noqa: E402 def _export_raw(fname, raw): diff --git a/mne/export/_egimff.py b/mne/export/_egimff.py index 7666ae6db99..0e44bd9531b 100644 --- a/mne/export/_egimff.py +++ b/mne/export/_egimff.py @@ -2,16 +2,16 @@ # # License: BSD-3-Clause -import os -import shutil import datetime +import os import os.path as op +import shutil import numpy as np +from .._fiff.pick import pick_channels, pick_types from ..io.egi.egimff import _import_mffpy -from .._fiff.pick import pick_types, pick_channels -from ..utils import verbose, warn, _check_fname +from ..utils import _check_fname, verbose, warn @verbose diff --git a/mne/export/_export.py b/mne/export/_export.py index 5afa420540c..faeebbb7cec 100644 --- a/mne/export/_export.py +++ b/mne/export/_export.py @@ -4,8 +4,8 @@ import os.path as op +from ..utils import _check_fname, _validate_type, logger, verbose, warn from ._egimff import export_evokeds_mff -from ..utils import logger, verbose, warn, _check_fname, _validate_type @verbose diff --git a/mne/export/tests/test_export.py b/mne/export/tests/test_export.py index 7aeb47a424d..723bac9606a 100644 --- a/mne/export/tests/test_export.py +++ b/mne/export/tests/test_export.py @@ -8,35 +8,35 @@ from os import remove from pathlib import Path -import pytest import numpy as np +import pytest from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal from mne import ( - read_epochs_eeglab, + Annotations, Epochs, + create_info, + read_epochs_eeglab, read_evokeds, read_evokeds_mff, - Annotations, - create_info, ) -from mne.datasets import testing, misc +from mne.datasets import misc, testing from mne.export import export_evokeds, export_evokeds_mff from mne.fixes import _compare_version from mne.io import ( RawArray, - read_raw_fif, - read_raw_eeglab, - read_raw_edf, read_raw_brainvision, + read_raw_edf, + read_raw_eeglab, + read_raw_fif, ) +from mne.tests.test_epochs import _get_data from mne.utils import ( - object_diff, _check_edflib_installed, - _resource_path, _record_warnings, + _resource_path, + object_diff, ) -from mne.tests.test_epochs import _get_data fname_evoked = _resource_path("mne.io.tests.data", "test-ave.fif") fname_raw = _resource_path("mne.io.tests.data", "test_raw.fif") diff --git a/mne/filter.py b/mne/filter.py index b9ef55841be..0592aaf6fbb 100644 --- a/mne/filter.py +++ b/mne/filter.py @@ -9,27 +9,26 @@ from scipy.stats import f as fstat from ._fiff.pick import _picks_to_idx +from ._ola import _COLA from .cuda import ( - _setup_cuda_fft_multiply_repeated, _fft_multiply_repeated, - _setup_cuda_fft_resample, _fft_resample, + _setup_cuda_fft_multiply_repeated, + _setup_cuda_fft_resample, _smart_pad, ) from .parallel import parallel_func from .utils import ( + _check_option, + _check_preload, + _ensure_int, + _pl, + _validate_type, logger, - verbose, sum_squared, + verbose, warn, - _pl, - _check_preload, - _validate_type, - _check_option, - _ensure_int, ) -from ._ola import _COLA - # These values from Ifeachor and Jervis. _length_factors = dict(hann=3.1, hamming=3.3, blackman=5.0) @@ -1858,9 +1857,9 @@ def _check_filterable(x, kind="filtered", alternative="filter"): # using these low-level functions. At the same time, let's # help people who might accidentally use low-level functions that they # shouldn't use by pushing them in the right direction - from .io import BaseRaw from .epochs import BaseEpochs from .evoked import Evoked + from .io import BaseRaw if isinstance(x, (BaseRaw, BaseEpochs, Evoked)): try: @@ -2583,8 +2582,8 @@ def filter( .. versionadded:: 0.15 """ - from .io import BaseRaw from .annotations import _annotations_starts_stops + from .io import BaseRaw _check_preload(self, "inst.filter") if pad is None and method != "iir": diff --git a/mne/fixes.py b/mne/fixes.py index bb7cb1fca01..fe9396f1996 100644 --- a/mne/fixes.py +++ b/mne/fixes.py @@ -16,14 +16,14 @@ # Imports for SciPy submodules need to stay nested in this module # because this module is imported many places (but not always used)! -from contextlib import contextmanager import inspect import operator as operator_module -from math import log -from pprint import pprint -from io import StringIO import os import warnings +from contextlib import contextmanager +from io import StringIO +from math import log +from pprint import pprint import numpy as np @@ -817,9 +817,10 @@ def bincount(x, weights, minlength): # noqa: D103 # scheduled to be fixed by MPL 3.6 def _close_event(fig): """Force calling of the MPL figure close event.""" - from .utils import logger from matplotlib import backend_bases + from .utils import logger + try: fig.canvas.callbacks.process( "close_event", diff --git a/mne/forward/__init__.pyi b/mne/forward/__init__.pyi index 36d35b913ca..dcac0d30881 100644 --- a/mne/forward/__init__.pyi +++ b/mne/forward/__init__.pyi @@ -39,48 +39,48 @@ __all__ = [ "write_forward_solution", ] from . import _lead_dots -from .forward import ( - Forward, - read_forward_solution, - write_forward_solution, - is_fixed_orient, - _read_forward_meas_info, - _select_orient_forward, - compute_orient_prior, - compute_depth_prior, - apply_forward, - apply_forward_raw, - restrict_forward_to_stc, - restrict_forward_to_label, - average_forward_solutions, - _stc_src_sel, - _fill_measurement_info, - _apply_forward, - _subject_from_forward, - convert_forward_solution, - _merge_fwds, - _do_forward_solution, -) from ._compute_forward import ( - _magnetic_dipole_field_vec, _compute_forwards, _concatenate_coils, + _magnetic_dipole_field_vec, ) from ._field_interpolation import ( - _make_surface_mapping, - make_field_map, _as_meg_type_inst, + _make_surface_mapping, _map_meg_or_eeg_channels, + make_field_map, ) from ._make_forward import ( - make_forward_solution, - _prepare_for_forward, - _prep_meg_channels, - _prep_eeg_channels, - _to_forward_dict, _create_meg_coils, + _prep_eeg_channels, + _prep_meg_channels, + _prepare_for_forward, _read_coil_defs, + _to_forward_dict, _transform_orig_meg_coils, make_forward_dipole, + make_forward_solution, use_coil_def, ) +from .forward import ( + Forward, + _apply_forward, + _do_forward_solution, + _fill_measurement_info, + _merge_fwds, + _read_forward_meas_info, + _select_orient_forward, + _stc_src_sel, + _subject_from_forward, + apply_forward, + apply_forward_raw, + average_forward_solutions, + compute_depth_prior, + compute_orient_prior, + convert_forward_solution, + is_fixed_orient, + read_forward_solution, + restrict_forward_to_label, + restrict_forward_to_stc, + write_forward_solution, +) diff --git a/mne/forward/_compute_forward.py b/mne/forward/_compute_forward.py index 970ce2a008c..e6e0ec22d81 100644 --- a/mne/forward/_compute_forward.py +++ b/mne/forward/_compute_forward.py @@ -15,17 +15,17 @@ # 2) EEG and MEG: forward solutions for inverse methods. Mosher, Leahy, and # Lewis, 1999. Generalized discussion of forward solutions. -import numpy as np from copy import deepcopy -from ..fixes import jit, bincount +import numpy as np + from .._fiff.constants import FIFF +from ..bem import _import_openmeeg, _make_openmeeg_geometry +from ..fixes import bincount, jit from ..parallel import parallel_func -from ..surface import _project_onto_surface, _jit_cross +from ..surface import _jit_cross, _project_onto_surface from ..transforms import apply_trans, invert_transform -from ..utils import logger, verbose, _pl, warn, fill_doc, _check_option -from ..bem import _make_openmeeg_geometry, _import_openmeeg - +from ..utils import _check_option, _pl, fill_doc, logger, verbose, warn # ############################################################################# # COIL SPECIFICATION AND FIELD COMPUTATION MATRIX diff --git a/mne/forward/_field_interpolation.py b/mne/forward/_field_interpolation.py index 8a609f29952..43196bcddbf 100644 --- a/mne/forward/_field_interpolation.py +++ b/mne/forward/_field_interpolation.py @@ -10,25 +10,25 @@ import numpy as np from scipy.interpolate import interp1d -from ..bem import _check_origin -from ..cov import make_ad_hoc_cov -from ..fixes import _safe_svd from .._fiff.constants import FIFF -from .._fiff.pick import pick_types, pick_info from .._fiff.meas_info import _simplify_info +from .._fiff.pick import pick_info, pick_types from .._fiff.proj import _has_eeg_average_ref_proj, make_projector +from ..bem import _check_origin +from ..cov import make_ad_hoc_cov +from ..epochs import BaseEpochs, EpochsArray +from ..evoked import Evoked, EvokedArray +from ..fixes import _safe_svd from ..surface import get_head_surf, get_meg_helmet_surf -from ..transforms import transform_surface_to, _find_trans, _get_trans -from ._make_forward import _create_meg_coils, _create_eeg_els, _read_coil_defs +from ..transforms import _find_trans, _get_trans, transform_surface_to +from ..utils import _check_fname, _check_option, _pl, _reg_pinv, logger, verbose from ._lead_dots import ( + _do_cross_dots, _do_self_dots, _do_surface_dots, _get_legen_table, - _do_cross_dots, ) -from ..utils import logger, verbose, _check_option, _reg_pinv, _pl, _check_fname -from ..epochs import EpochsArray, BaseEpochs -from ..evoked import Evoked, EvokedArray +from ._make_forward import _create_eeg_els, _create_meg_coils, _read_coil_defs def _setup_dots(mode, info, coils, ch_type): diff --git a/mne/forward/_lead_dots.py b/mne/forward/_lead_dots.py index 3eda719ac59..8aef9d77002 100644 --- a/mne/forward/_lead_dots.py +++ b/mne/forward/_lead_dots.py @@ -14,8 +14,7 @@ from numpy.polynomial import legendre from ..parallel import parallel_func -from ..utils import logger, verbose, _get_extra_data_path, fill_doc - +from ..utils import _get_extra_data_path, fill_doc, logger, verbose ############################################################################## # FAST LEGENDRE (DERIVATIVE) POLYNOMIALS USING LOOKUP TABLE diff --git a/mne/forward/_make_forward.py b/mne/forward/_make_forward.py index 8bd50339529..d8d4509c19c 100644 --- a/mne/forward/_make_forward.py +++ b/mne/forward/_make_forward.py @@ -8,43 +8,41 @@ # The computations in this code were primarily derived from Matti Hämäläinen's # C code. -from copy import deepcopy -from contextlib import contextmanager -from pathlib import Path import os import os.path as op +from contextlib import contextmanager +from copy import deepcopy +from pathlib import Path import numpy as np -from ._compute_forward import _compute_forwards -from .._fiff.meas_info import read_info, Info -from .._fiff.tag import _loc_to_coil_trans, _loc_to_eeg_loc from .._fiff.compensator import get_current_comp, make_compensator -from .._fiff.pick import _has_kit_refs, pick_types, pick_info from .._fiff.constants import FIFF, FWD +from .._fiff.meas_info import Info, read_info +from .._fiff.pick import _has_kit_refs, pick_info, pick_types +from .._fiff.tag import _loc_to_coil_trans, _loc_to_eeg_loc +from ..bem import ConductorModel, _bem_find_surface, read_bem_solution +from ..source_estimate import VolSourceEstimate +from ..source_space._source_space import ( + _complete_vol_src, + _ensure_src, + _filter_source_spaces, + _make_discrete_source_space, +) +from ..surface import _CheckInside, _normalize_vectors from ..transforms import ( + Transform, + _coord_frame_name, _ensure_trans, - transform_surface_to, - apply_trans, _get_trans, _print_coord_trans, - _coord_frame_name, - Transform, + apply_trans, invert_transform, + transform_surface_to, ) -from ..utils import logger, verbose, warn, _pl, _validate_type, _check_fname -from ..source_space._source_space import ( - _ensure_src, - _filter_source_spaces, - _make_discrete_source_space, - _complete_vol_src, -) -from ..source_estimate import VolSourceEstimate -from ..surface import _normalize_vectors, _CheckInside -from ..bem import read_bem_solution, _bem_find_surface, ConductorModel - -from .forward import Forward, _merge_fwds, convert_forward_solution, _FWD_ORDER - +from ..utils import _check_fname, _pl, _validate_type, logger, verbose, warn +from ._compute_forward import _compute_forwards +from .forward import _FWD_ORDER, Forward, _merge_fwds, convert_forward_solution _accuracy_dict = dict( point=FWD.COIL_ACCURACY_POINT, diff --git a/mne/forward/forward.py b/mne/forward/forward.py index 31aa3c2bdfc..03f5b8f5eae 100644 --- a/mne/forward/forward.py +++ b/mne/forward/forward.py @@ -7,83 +7,82 @@ # The computations in this code were primarily derived from Matti Hämäläinen's # C code. +import os import re +import shutil +import tempfile from copy import deepcopy from os import PathLike +from os import path as op from pathlib import Path from time import time import numpy as np from scipy import sparse -import shutil -import os -from os import path as op -import tempfile - -from ..io import RawArray, BaseRaw -from ..html_templates import _get_html_template from .._fiff.constants import FIFF -from .._fiff.open import fiff_open -from .._fiff.tree import dir_tree_find -from .._fiff.tag import find_tag, read_tag from .._fiff.matrix import ( _read_named_matrix, _transpose_named_matrix, write_named_matrix, ) from .._fiff.meas_info import ( + Info, + _make_ch_names_mapping, _read_bad_channels, - write_info, - _write_ch_infos, _read_extended_ch_info, - _make_ch_names_mapping, _write_bad_channels, - Info, + _write_ch_infos, + write_info, ) -from .._fiff.pick import pick_channels_forward, pick_info, pick_channels, pick_types +from .._fiff.open import fiff_open +from .._fiff.pick import pick_channels, pick_channels_forward, pick_info, pick_types +from .._fiff.tag import find_tag, read_tag +from .._fiff.tree import dir_tree_find from .._fiff.write import ( - write_int, - start_block, end_block, - write_coord_trans, - write_string, start_and_end_file, + start_block, + write_coord_trans, write_id, + write_int, + write_string, ) -from ..evoked import Evoked, EvokedArray from ..epochs import BaseEpochs +from ..evoked import Evoked, EvokedArray +from ..html_templates import _get_html_template +from ..io import BaseRaw, RawArray +from ..label import Label +from ..source_estimate import _BaseSourceEstimate, _BaseVectorSourceEstimate from ..source_space._source_space import ( + _get_src_nn, _read_source_spaces_from_tree, - find_source_space_hemi, _set_source_space_vertices, - _write_source_spaces_to_fid, - _get_src_nn, _src_kind_dict, + _write_source_spaces_to_fid, + find_source_space_hemi, ) -from ..source_estimate import _BaseVectorSourceEstimate, _BaseSourceEstimate from ..surface import _normal_orth -from ..transforms import transform_surface_to, invert_transform, write_trans +from ..transforms import invert_transform, transform_surface_to, write_trans from ..utils import ( - _check_fname, - get_subjects_dir, - has_mne_c, - warn, - run_subprocess, - check_fname, - logger, - verbose, - fill_doc, - _validate_type, _check_compensation_grade, + _check_fname, _check_option, _check_stc_units, - _stamp_to_dt, + _import_h5io_funcs, _on_missing, + _stamp_to_dt, + _validate_type, + check_fname, + fill_doc, + get_subjects_dir, + has_mne_c, + logger, repr_html, - _import_h5io_funcs, + run_subprocess, + verbose, + warn, ) -from ..label import Label class Forward(dict): diff --git a/mne/forward/tests/test_field_interpolation.py b/mne/forward/tests/test_field_interpolation.py index e7a509f7687..d7d0cb5ac3c 100644 --- a/mne/forward/tests/test_field_interpolation.py +++ b/mne/forward/tests/test_field_interpolation.py @@ -2,32 +2,30 @@ from pathlib import Path import numpy as np +import pytest from numpy.polynomial import legendre from numpy.testing import ( assert_allclose, + assert_array_almost_equal, assert_array_equal, assert_equal, - assert_array_almost_equal, ) from scipy.interpolate import interp1d -import pytest - import mne +from mne import Epochs, make_fixed_length_events, pick_types, read_evokeds +from mne.datasets import testing from mne.forward import _make_surface_mapping, make_field_map +from mne.forward._field_interpolation import _setup_dots from mne.forward._lead_dots import ( _comp_sum_eeg, _comp_sums_meg, - _get_legen_table, _do_cross_dots, + _get_legen_table, ) from mne.forward._make_forward import _create_meg_coils -from mne.forward._field_interpolation import _setup_dots -from mne.surface import get_meg_helmet_surf, get_head_surf -from mne.datasets import testing -from mne import read_evokeds, pick_types, make_fixed_length_events, Epochs from mne.io import read_raw_fif - +from mne.surface import get_head_surf, get_meg_helmet_surf base_dir = op.join(op.dirname(__file__), "..", "..", "io", "tests", "data") raw_fname = op.join(base_dir, "test_raw.fif") diff --git a/mne/forward/tests/test_forward.py b/mne/forward/tests/test_forward.py index ee37f11676c..fe9fe9b52bc 100644 --- a/mne/forward/tests/test_forward.py +++ b/mne/forward/tests/test_forward.py @@ -1,41 +1,41 @@ import gc from pathlib import Path -import pytest import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, - assert_equal, assert_array_equal, - assert_allclose, + assert_equal, ) -from mne._fiff.pick import pick_channels_forward -from mne.datasets import testing from mne import ( - read_forward_solution, + SourceEstimate, + VectorSourceEstimate, apply_forward, apply_forward_raw, average_forward_solutions, - write_forward_solution, convert_forward_solution, - SourceEstimate, pick_types_forward, read_evokeds, - VectorSourceEstimate, + read_forward_solution, + write_forward_solution, ) -from mne.io import read_info -from mne.label import read_label -from mne.utils import requires_mne, run_subprocess +from mne._fiff.pick import pick_channels_forward +from mne.channels import equalize_channels +from mne.datasets import testing from mne.forward import ( - restrict_forward_to_stc, - restrict_forward_to_label, Forward, - is_fixed_orient, - compute_orient_prior, compute_depth_prior, + compute_orient_prior, + is_fixed_orient, + restrict_forward_to_label, + restrict_forward_to_stc, ) -from mne.channels import equalize_channels +from mne.io import read_info +from mne.label import read_label +from mne.utils import requires_mne, run_subprocess data_path = testing.data_path(download=False) fname_meeg = data_path / "MEG" / "sample" / "sample_audvis_trunc-meg-eeg-oct-4-fwd.fif" diff --git a/mne/forward/tests/test_make_forward.py b/mne/forward/tests/test_make_forward.py index 0a2c82b3698..86f3bf2556b 100644 --- a/mne/forward/tests/test_make_forward.py +++ b/mne/forward/tests/test_make_forward.py @@ -1,55 +1,53 @@ from itertools import product from pathlib import Path -import pytest import numpy as np -from numpy.testing import assert_allclose, assert_array_equal -from numpy.testing import assert_array_less +import pytest +from numpy.testing import assert_allclose, assert_array_equal, assert_array_less -from mne.bem import read_bem_surfaces, make_bem_solution -from mne.channels import make_standard_montage -from mne.datasets import testing -from mne.io import read_raw_fif, read_raw_kit, read_raw_bti, read_info -from mne._fiff.constants import FIFF from mne import ( - read_forward_solution, - write_forward_solution, - make_forward_solution, convert_forward_solution, - setup_volume_source_space, - read_source_spaces, create_info, + get_volume_labels_from_aseg, + make_forward_solution, make_sphere_model, - pick_types_forward, pick_info, pick_types, - read_evokeds, + pick_types_forward, read_cov, read_dipole, - get_volume_labels_from_aseg, -) -from mne.surface import _get_ico_surface -from mne.transforms import Transform -from mne.utils import ( - requires_mne, - run_subprocess, - catch_logging, - requires_mne_mark, - requires_openmeeg_mark, + read_evokeds, + read_forward_solution, + read_source_spaces, + setup_volume_source_space, + write_forward_solution, ) -from mne.forward._make_forward import _create_meg_coils, make_forward_dipole -from mne.forward._compute_forward import _magnetic_dipole_field_vec -from mne.forward import Forward, _do_forward_solution, use_coil_def +from mne._fiff.constants import FIFF +from mne.bem import make_bem_solution, read_bem_surfaces +from mne.channels import make_standard_montage +from mne.datasets import testing from mne.dipole import Dipole, fit_dipole +from mne.forward import Forward, _do_forward_solution, use_coil_def +from mne.forward._compute_forward import _magnetic_dipole_field_vec +from mne.forward._make_forward import _create_meg_coils, make_forward_dipole +from mne.forward.tests.test_forward import assert_forward_allclose +from mne.io import read_info, read_raw_bti, read_raw_fif, read_raw_kit from mne.simulation import simulate_evoked from mne.source_estimate import VolSourceEstimate from mne.source_space._source_space import ( - write_source_spaces, _compare_source_spaces, setup_source_space, + write_source_spaces, +) +from mne.surface import _get_ico_surface +from mne.transforms import Transform +from mne.utils import ( + catch_logging, + requires_mne, + requires_mne_mark, + requires_openmeeg_mark, + run_subprocess, ) - -from mne.forward.tests.test_forward import assert_forward_allclose data_path = testing.data_path(download=False) fname_meeg = data_path / "MEG" / "sample" / "sample_audvis_trunc-meg-eeg-oct-4-fwd.fif" diff --git a/mne/gui/__init__.pyi b/mne/gui/__init__.pyi index 77a7310e4ad..086c51a4904 100644 --- a/mne/gui/__init__.pyi +++ b/mne/gui/__init__.pyi @@ -1,2 +1,2 @@ __all__ = ["_GUIScraper", "coregistration"] -from ._gui import coregistration, _GUIScraper +from ._gui import _GUIScraper, coregistration diff --git a/mne/gui/_coreg.py b/mne/gui/_coreg.py index e11b61ed898..3782303c58e 100644 --- a/mne/gui/_coreg.py +++ b/mne/gui/_coreg.py @@ -1,66 +1,65 @@ -from contextlib import contextmanager -from functools import partial import inspect import os import os.path as op import platform -from pathlib import Path -import time import queue -import threading import re +import threading +import time +from contextlib import contextmanager +from functools import partial +from pathlib import Path import numpy as np -from traitlets import observe, HasTraits, Unicode, Bool, Float +from traitlets import Bool, Float, HasTraits, Unicode, observe -from ..defaults import DEFAULTS from .._fiff.constants import FIFF -from .._fiff.meas_info import read_info, read_fiducials, write_fiducials +from .._fiff.meas_info import _empty_info, read_fiducials, read_info, write_fiducials +from .._fiff.open import dir_tree_find, fiff_open from .._fiff.pick import pick_types -from .._fiff.open import fiff_open, dir_tree_find -from .._fiff.meas_info import _empty_info -from ..io._read_raw import _get_supported, read_raw from ..bem import make_bem_solution, write_bem_solution +from ..channels import read_dig_fif from ..coreg import ( Coregistration, + _find_head_bem, _is_mri_subject, - scale_mri, - bem_fname, + _map_fid_name_to_idx, _mri_subject_has_bem, + bem_fname, fid_fname, - _map_fid_name_to_idx, - _find_head_bem, -) -from ..viz._3d import ( - _plot_head_surface, - _plot_head_fiducials, - _plot_head_shape_points, - _plot_mri_fiducials, - _plot_hpi_coils, - _plot_sensors, - _plot_helmet, + scale_mri, ) -from ..viz.backends._utils import _qt_app_exec, _qt_safe_window -from ..viz.utils import safe_event +from ..defaults import DEFAULTS +from ..io._read_raw import _get_supported, read_raw +from ..surface import _CheckInside, _DistanceQuery from ..transforms import ( - read_trans, - write_trans, _ensure_trans, _get_trans, - rotation_angles, _get_transforms_to_coord_frame, + read_trans, + rotation_angles, + write_trans, ) from ..utils import ( - get_subjects_dir, - check_fname, _check_fname, + _validate_type, + check_fname, fill_doc, - verbose, + get_subjects_dir, logger, - _validate_type, + verbose, ) -from ..surface import _DistanceQuery, _CheckInside -from ..channels import read_dig_fif +from ..viz._3d import ( + _plot_head_fiducials, + _plot_head_shape_points, + _plot_head_surface, + _plot_helmet, + _plot_hpi_coils, + _plot_mri_fiducials, + _plot_sensors, +) +from ..viz.backends._utils import _qt_app_exec, _qt_safe_window +from ..viz.utils import safe_event class _WorkerData: diff --git a/mne/gui/_gui.py b/mne/gui/_gui.py index 122e2dc772c..de6e35482b8 100644 --- a/mne/gui/_gui.py +++ b/mne/gui/_gui.py @@ -2,7 +2,7 @@ # # License: BSD-3-Clause -from ..utils import verbose, get_config, warn +from ..utils import get_config, verbose, warn @verbose @@ -238,13 +238,13 @@ def __call__(self, block, block_vars, gallery_conf): try: from mne_gui_addons._ieeg_locate import ( IntracranialElectrodeLocator, - ) # noqa: E501 + ) except Exception: pass else: gui_classes = gui_classes + (IntracranialElectrodeLocator,) - from sphinx_gallery.scrapers import figure_rst from qtpy import QtGui + from sphinx_gallery.scrapers import figure_rst for gui in block_vars["example_globals"].values(): if ( diff --git a/mne/gui/tests/test_coreg.py b/mne/gui/tests/test_coreg.py index a0e52a2afd9..1805755d0ff 100644 --- a/mne/gui/tests/test_coreg.py +++ b/mne/gui/tests/test_coreg.py @@ -6,21 +6,20 @@ from contextlib import nullcontext from pathlib import Path +import numpy as np import pytest from numpy.testing import assert_allclose -import numpy as np import mne -from mne.datasets import testing -from mne.io import read_info -from mne.io.kit.tests import data_dir as kit_data_dir from mne._fiff.constants import FIFF -from mne.utils import get_config, catch_logging from mne.channels import DigMontage from mne.coreg import Coregistration +from mne.datasets import testing +from mne.io import read_info +from mne.io.kit.tests import data_dir as kit_data_dir +from mne.utils import catch_logging, get_config from mne.viz import _3d - data_path = testing.data_path(download=False) raw_path = data_path / "MEG" / "sample" / "sample_audvis_trunc_raw.fif" fname_trans = data_path / "MEG" / "sample" / "sample_audvis_trunc-trans.fif" @@ -335,6 +334,7 @@ def test_coreg_gui_scraper(tmp_path, renderer_interactive_pyvistaqt): def test_coreg_gui_notebook(renderer_notebook, nbexec): """Test the coregistration UI in a notebook.""" import pytest + import mne from mne.datasets import testing from mne.gui import coregistration diff --git a/mne/gui/tests/test_gui_api.py b/mne/gui/tests/test_gui_api.py index 26a3d59e581..8f805a18878 100644 --- a/mne/gui/tests/test_gui_api.py +++ b/mne/gui/tests/test_gui_api.py @@ -13,9 +13,10 @@ def test_gui_api(renderer_notebook, nbexec, *, n_warn=0, backend="qt"): """Test GUI API.""" import contextlib - import mne - import warnings import sys + import warnings + + import mne try: # Function diff --git a/mne/inverse_sparse/__init__.pyi b/mne/inverse_sparse/__init__.pyi index 5cd096d92c1..557921114ca 100644 --- a/mne/inverse_sparse/__init__.pyi +++ b/mne/inverse_sparse/__init__.pyi @@ -1,3 +1,3 @@ __all__ = ["gamma_map", "make_stc_from_dipoles", "mixed_norm", "tf_mixed_norm"] -from .mxne_inverse import mixed_norm, tf_mixed_norm, make_stc_from_dipoles from ._gamma_map import gamma_map +from .mxne_inverse import make_stc_from_dipoles, mixed_norm, tf_mixed_norm diff --git a/mne/inverse_sparse/_gamma_map.py b/mne/inverse_sparse/_gamma_map.py index 7cbb82dbe4e..999e0274a25 100644 --- a/mne/inverse_sparse/_gamma_map.py +++ b/mne/inverse_sparse/_gamma_map.py @@ -10,11 +10,11 @@ from ..utils import logger, verbose, warn from .mxne_inverse import ( _check_ori, + _compute_residual, + _make_dipoles_sparse, _make_sparse_stc, _prepare_gain, _reapply_source_weighting, - _compute_residual, - _make_dipoles_sparse, ) diff --git a/mne/inverse_sparse/mxne_debiasing.py b/mne/inverse_sparse/mxne_debiasing.py index 472afc1242c..6cb0159dde9 100644 --- a/mne/inverse_sparse/mxne_debiasing.py +++ b/mne/inverse_sparse/mxne_debiasing.py @@ -4,9 +4,10 @@ # License: BSD-3-Clause from math import sqrt + import numpy as np -from ..utils import check_random_state, logger, verbose, fill_doc +from ..utils import check_random_state, fill_doc, logger, verbose @fill_doc diff --git a/mne/inverse_sparse/mxne_inverse.py b/mne/inverse_sparse/mxne_inverse.py index 640e4df11a1..48da331ff6d 100644 --- a/mne/inverse_sparse/mxne_inverse.py +++ b/mne/inverse_sparse/mxne_inverse.py @@ -5,37 +5,36 @@ import numpy as np -from ..source_estimate import SourceEstimate, _BaseSourceEstimate, _make_stc +from .._fiff.proj import deactivate_proj +from ..dipole import Dipole +from ..fixes import _safe_svd +from ..forward import is_fixed_orient from ..minimum_norm.inverse import ( - combine_xyz, - _prepare_forward, _check_reference, _log_exp_var, + _prepare_forward, + combine_xyz, ) -from ..fixes import _safe_svd -from ..forward import is_fixed_orient -from .._fiff.proj import deactivate_proj +from ..source_estimate import SourceEstimate, _BaseSourceEstimate, _make_stc from ..utils import ( - logger, - verbose, _check_depth, _check_option, - sum_squared, _validate_type, check_random_state, + logger, + sum_squared, + verbose, warn, ) -from ..dipole import Dipole - from .mxne_optim import ( - mixed_norm_solver, - iterative_mixed_norm_solver, _Phi, - tf_mixed_norm_solver, + groups_norm2, + iterative_mixed_norm_solver, iterative_tf_mixed_norm_solver, - norm_l2inf, + mixed_norm_solver, norm_epsilon_inf, - groups_norm2, + norm_l2inf, + tf_mixed_norm_solver, ) diff --git a/mne/inverse_sparse/mxne_optim.py b/mne/inverse_sparse/mxne_optim.py index e4e29912b68..c9d4fc83618 100644 --- a/mne/inverse_sparse/mxne_optim.py +++ b/mne/inverse_sparse/mxne_optim.py @@ -8,17 +8,17 @@ import numpy as np -from .mxne_debiasing import compute_bias +from ..time_frequency._stft import istft, stft, stft_norm1, stft_norm2 from ..utils import ( + _check_option, + _get_blas_funcs, + _validate_type, logger, - verbose, sum_squared, + verbose, warn, - _get_blas_funcs, - _validate_type, - _check_option, ) -from ..time_frequency._stft import stft_norm1, stft_norm2, stft, istft +from .mxne_debiasing import compute_bias @functools.lru_cache(None) diff --git a/mne/inverse_sparse/tests/test_gamma_map.py b/mne/inverse_sparse/tests/test_gamma_map.py index c6b94c7d9eb..8aabf13352f 100644 --- a/mne/inverse_sparse/tests/test_gamma_map.py +++ b/mne/inverse_sparse/tests/test_gamma_map.py @@ -2,26 +2,26 @@ # # License: Simplified BSD -import pytest import numpy as np -from numpy.testing import assert_array_almost_equal, assert_allclose +import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal import mne -from mne.datasets import testing from mne import ( + VectorSourceEstimate, + convert_forward_solution, + pick_types_forward, read_cov, - read_forward_solution, read_evokeds, - convert_forward_solution, - VectorSourceEstimate, + read_forward_solution, ) from mne.cov import regularize +from mne.datasets import testing +from mne.dipole import Dipole from mne.inverse_sparse import gamma_map from mne.inverse_sparse.mxne_inverse import make_stc_from_dipoles from mne.minimum_norm.tests.test_inverse import assert_stc_res, assert_var_exp_log -from mne import pick_types_forward from mne.utils import assert_stcs_equal, catch_logging -from mne.dipole import Dipole data_path = testing.data_path(download=False) fname_evoked = data_path / "MEG" / "sample" / "sample_audvis-ave.fif" diff --git a/mne/inverse_sparse/tests/test_mxne_inverse.py b/mne/inverse_sparse/tests/test_mxne_inverse.py index 19b26bc7483..0376ed83f93 100644 --- a/mne/inverse_sparse/tests/test_mxne_inverse.py +++ b/mne/inverse_sparse/tests/test_mxne_inverse.py @@ -4,29 +4,31 @@ # License: Simplified BSD import numpy as np +import pytest from numpy.testing import ( - assert_array_almost_equal, assert_allclose, - assert_array_less, + assert_array_almost_equal, assert_array_equal, + assert_array_less, ) -import pytest import mne +from mne import convert_forward_solution, read_cov, read_evokeds, read_forward_solution from mne.datasets import testing -from mne.label import read_label -from mne import read_cov, read_forward_solution, read_evokeds, convert_forward_solution +from mne.dipole import Dipole from mne.inverse_sparse import mixed_norm, tf_mixed_norm -from mne.inverse_sparse.mxne_inverse import make_stc_from_dipoles, _split_gof -from mne.inverse_sparse.mxne_inverse import _compute_mxne_sure +from mne.inverse_sparse.mxne_inverse import ( + _compute_mxne_sure, + _split_gof, + make_stc_from_dipoles, +) from mne.inverse_sparse.mxne_optim import norm_l2inf +from mne.label import read_label from mne.minimum_norm import apply_inverse, make_inverse_operator -from mne.minimum_norm.tests.test_inverse import assert_var_exp_log, assert_stc_res -from mne.utils import assert_stcs_equal, catch_logging, _record_warnings -from mne.dipole import Dipole +from mne.minimum_norm.tests.test_inverse import assert_stc_res, assert_var_exp_log +from mne.simulation import simulate_evoked, simulate_sparse_stc from mne.source_estimate import VolSourceEstimate -from mne.simulation import simulate_sparse_stc, simulate_evoked - +from mne.utils import _record_warnings, assert_stcs_equal, catch_logging data_path = testing.data_path(download=False) # NOTE: These use the ave and cov from sample dataset (no _trunc) diff --git a/mne/inverse_sparse/tests/test_mxne_optim.py b/mne/inverse_sparse/tests/test_mxne_optim.py index b0779c01e7c..bc1ed349acb 100644 --- a/mne/inverse_sparse/tests/test_mxne_optim.py +++ b/mne/inverse_sparse/tests/test_mxne_optim.py @@ -3,28 +3,28 @@ # # License: Simplified BSD -import pytest import numpy as np +import pytest from numpy.testing import ( - assert_array_equal, - assert_array_almost_equal, assert_allclose, + assert_array_almost_equal, + assert_array_equal, assert_array_less, ) from mne.inverse_sparse.mxne_optim import ( - mixed_norm_solver, - tf_mixed_norm_solver, - iterative_mixed_norm_solver, - iterative_tf_mixed_norm_solver, - norm_epsilon_inf, - norm_epsilon, _Phi, _PhiT, dgap_l21l1, + iterative_mixed_norm_solver, + iterative_tf_mixed_norm_solver, + mixed_norm_solver, + norm_epsilon, + norm_epsilon_inf, + tf_mixed_norm_solver, ) from mne.time_frequency._stft import stft_norm2 -from mne.utils import catch_logging, _record_warnings +from mne.utils import _record_warnings, catch_logging def _generate_tf_data(): diff --git a/mne/io/__init__.pyi b/mne/io/__init__.pyi index e7fba58667a..1a0cccf8c54 100644 --- a/mne/io/__init__.pyi +++ b/mne/io/__init__.pyi @@ -48,40 +48,40 @@ __all__ = [ "write_info", ] from . import constants, pick -from .base import BaseRaw, concatenate_raws, match_channel_orders +from ._fiff_wrap import ( + anonymize_info, + get_channel_type_constants, + read_fiducials, + read_info, + show_fiff, + write_fiducials, + write_info, +) +from ._read_raw import read_raw from .array import RawArray +from .artemis123 import read_raw_artemis123 +from .base import BaseRaw, concatenate_raws, match_channel_orders from .besa import read_evoked_besa +from .boxy import read_raw_boxy from .brainvision import read_raw_brainvision from .bti import read_raw_bti from .cnt import read_raw_cnt from .ctf import read_raw_ctf from .curry import read_raw_curry -from .edf import read_raw_edf, read_raw_bdf, read_raw_gdf -from .egi import read_raw_egi, read_evokeds_mff -from .kit import read_raw_kit, read_epochs_kit -from .fiff import read_raw_fif, Raw +from .edf import read_raw_bdf, read_raw_edf, read_raw_gdf +from .eeglab import read_epochs_eeglab, read_raw_eeglab +from .egi import read_evokeds_mff, read_raw_egi +from .eximia import read_raw_eximia +from .eyelink import read_raw_eyelink +from .fieldtrip import read_epochs_fieldtrip, read_evoked_fieldtrip, read_raw_fieldtrip +from .fiff import Raw, read_raw_fif from .fil import read_raw_fil +from .hitachi import read_raw_hitachi +from .kit import read_epochs_kit, read_raw_kit from .nedf import read_raw_nedf from .nicolet import read_raw_nicolet -from .artemis123 import read_raw_artemis123 -from .eeglab import read_raw_eeglab, read_epochs_eeglab -from .eximia import read_raw_eximia -from .hitachi import read_raw_hitachi -from .nirx import read_raw_nirx -from .boxy import read_raw_boxy -from .snirf import read_raw_snirf -from .persyst import read_raw_persyst -from .fieldtrip import read_raw_fieldtrip, read_epochs_fieldtrip, read_evoked_fieldtrip from .nihon import read_raw_nihon +from .nirx import read_raw_nirx from .nsx import read_raw_nsx -from ._read_raw import read_raw -from .eyelink import read_raw_eyelink -from ._fiff_wrap import ( - read_info, - write_info, - anonymize_info, - read_fiducials, - write_fiducials, - show_fiff, - get_channel_type_constants, -) +from .persyst import read_raw_persyst +from .snirf import read_raw_snirf diff --git a/mne/io/_fiff_wrap.py b/mne/io/_fiff_wrap.py index 974b08c3041..df9e48e7644 100644 --- a/mne/io/_fiff_wrap.py +++ b/mne/io/_fiff_wrap.py @@ -3,13 +3,15 @@ # Backward compat since these were in the public API before switching to _fiff # (and _empty_info is convenient to keep here for tests and is private) from .._fiff.meas_info import ( - read_info, - write_info, + Info as _info, +) +from .._fiff.meas_info import ( + _empty_info, anonymize_info, read_fiducials, + read_info, write_fiducials, - _empty_info, - Info as _info, + write_info, ) from .._fiff.open import show_fiff from .._fiff.pick import get_channel_type_constants # moved up a level diff --git a/mne/io/_read_raw.py b/mne/io/_read_raw.py index d82df247181..fafc43a0d9a 100644 --- a/mne/io/_read_raw.py +++ b/mne/io/_read_raw.py @@ -5,8 +5,8 @@ # License: BSD-3-Clause -from pathlib import Path from functools import partial +from pathlib import Path from ..utils import fill_doc @@ -24,27 +24,27 @@ def _read_unsupported(fname, **kwargs): # supported read file formats def _get_supported(): from . import ( - read_raw_edf, + read_raw_artemis123, read_raw_bdf, - read_raw_gdf, + read_raw_boxy, read_raw_brainvision, - read_raw_fif, - read_raw_eeglab, read_raw_cnt, + read_raw_ctf, + read_raw_curry, + read_raw_edf, + read_raw_eeglab, read_raw_egi, read_raw_eximia, - read_raw_nirx, read_raw_fieldtrip, - read_raw_artemis123, - read_raw_nicolet, - read_raw_kit, - read_raw_ctf, - read_raw_boxy, - read_raw_snirf, + read_raw_fif, read_raw_fil, - read_raw_nihon, - read_raw_curry, + read_raw_gdf, + read_raw_kit, read_raw_nedf, + read_raw_nicolet, + read_raw_nihon, + read_raw_nirx, + read_raw_snirf, ) return { diff --git a/mne/io/array/array.py b/mne/io/array/array.py index 7e7ffded42a..5b75ef838cb 100644 --- a/mne/io/array/array.py +++ b/mne/io/array/array.py @@ -6,8 +6,8 @@ import numpy as np +from ...utils import _check_option, _validate_type, fill_doc, logger, verbose from ..base import BaseRaw -from ...utils import verbose, logger, _validate_type, fill_doc, _check_option @fill_doc diff --git a/mne/io/array/tests/test_array.py b/mne/io/array/tests/test_array.py index e7b276ab903..315e921e1ab 100644 --- a/mne/io/array/tests/test_array.py +++ b/mne/io/array/tests/test_array.py @@ -4,18 +4,18 @@ from pathlib import Path +import matplotlib.pyplot as plt import numpy as np -from numpy.testing import assert_array_almost_equal, assert_allclose, assert_equal import pytest -import matplotlib.pyplot as plt +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_equal -from mne import find_events, Epochs, pick_types -from mne.io import read_raw_fif -from mne.io.array import RawArray -from mne.io.tests.test_raw import _test_raw_reader +from mne import Epochs, find_events, pick_types from mne._fiff.meas_info import create_info from mne._fiff.pick import get_channel_type_constants from mne.channels import make_dig_montage +from mne.io import read_raw_fif +from mne.io.array import RawArray +from mne.io.tests.test_raw import _test_raw_reader base_dir = Path(__file__).parent.parent.parent / "tests" / "data" fif_fname = base_dir / "test_raw.fif" diff --git a/mne/io/artemis123/artemis123.py b/mne/io/artemis123/artemis123.py index 8d937067a5d..1d131da8376 100644 --- a/mne/io/artemis123/artemis123.py +++ b/mne/io/artemis123/artemis123.py @@ -2,21 +2,21 @@ # # License: BSD-3-Clause -import numpy as np -import os.path as op -import datetime import calendar +import datetime +import os.path as op +import numpy as np from scipy.spatial.distance import cdist -from .utils import _load_mne_locs, _read_pos -from ..base import BaseRaw -from ...utils import logger, warn, verbose, _check_fname -from ..._fiff.utils import _read_segments_file -from ..._fiff.meas_info import _empty_info -from ..._fiff._digitization import _make_dig_points, DigPoint +from ..._fiff._digitization import DigPoint, _make_dig_points from ..._fiff.constants import FIFF -from ...transforms import get_ras_to_neuromag_trans, apply_trans, Transform +from ..._fiff.meas_info import _empty_info +from ..._fiff.utils import _read_segments_file +from ...transforms import Transform, apply_trans, get_ras_to_neuromag_trans +from ...utils import _check_fname, logger, verbose, warn +from ..base import BaseRaw +from .utils import _load_mne_locs, _read_pos @verbose @@ -341,9 +341,9 @@ def __init__( add_head_trans=True, ): # noqa: D102 from ...chpi import ( + _fit_coil_order_dev_head_trans, compute_chpi_amplitudes, compute_chpi_locs, - _fit_coil_order_dev_head_trans, ) input_fname = str(_check_fname(input_fname, "read", True, "input_fname")) diff --git a/mne/io/artemis123/tests/test_artemis123.py b/mne/io/artemis123/tests/test_artemis123.py index 7587dfd0d96..ed17ab0f118 100644 --- a/mne/io/artemis123/tests/test_artemis123.py +++ b/mne/io/artemis123/tests/test_artemis123.py @@ -3,16 +3,16 @@ # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_allclose, assert_equal import pytest +from numpy.testing import assert_allclose, assert_equal -from mne.io import read_raw_artemis123 -from mne.io.tests.test_raw import _test_raw_reader -from mne.datasets import testing -from mne.io.artemis123.utils import _generate_mne_locs_file, _load_mne_locs from mne import pick_types -from mne.transforms import rot_to_quat, _angle_between_quats from mne._fiff.constants import FIFF +from mne.datasets import testing +from mne.io import read_raw_artemis123 +from mne.io.artemis123.utils import _generate_mne_locs_file, _load_mne_locs +from mne.io.tests.test_raw import _test_raw_reader +from mne.transforms import _angle_between_quats, rot_to_quat artemis123_dir = testing.data_path(download=False) / "ARTEMIS123" short_HPI_dip_fname = ( diff --git a/mne/io/artemis123/utils.py b/mne/io/artemis123/utils.py index f478ecc5e28..fb2e72f01bf 100644 --- a/mne/io/artemis123/utils.py +++ b/mne/io/artemis123/utils.py @@ -1,8 +1,10 @@ -import numpy as np import os.path as op + +import numpy as np + from ..._fiff._digitization import _artemis123_read_pos -from ...utils import logger from ...transforms import rotation3d_align_z_axis +from ...utils import logger def _load_mne_locs(fname=None): diff --git a/mne/io/base.py b/mne/io/base.py index 5b1125a8115..4c1d13ffaf7 100644 --- a/mne/io/base.py +++ b/mne/io/base.py @@ -9,56 +9,49 @@ # # License: BSD-3-Clause -from contextlib import nullcontext -from copy import deepcopy -from datetime import timedelta import os import os.path as op import shutil from collections import defaultdict +from contextlib import nullcontext +from copy import deepcopy from dataclasses import dataclass, field +from datetime import timedelta import numpy as np -from ..filter import _check_resamp_noop -from ..event import find_events, concatenate_events +from .._fiff.compensator import make_compensator, set_current_comp from .._fiff.constants import FIFF -from .._fiff.utils import _make_split_fnames, _check_orig_units -from .._fiff.pick import ( - pick_types, - pick_channels, - pick_info, - _picks_to_idx, - channel_type, -) from .._fiff.meas_info import ( - write_meas_info, - _ensure_infos_match, ContainsMixin, SetChannelsMixin, + _ensure_infos_match, _unit2human, + write_meas_info, ) -from .._fiff.proj import setup_proj, activate_proj, _proj_equal, ProjMixin -from ..channels.channels import ( - UpdateChannelsMixin, - InterpolationMixin, - ReferenceMixin, +from .._fiff.pick import ( + _picks_to_idx, + channel_type, + pick_channels, + pick_info, + pick_types, ) -from .._fiff.compensator import set_current_comp, make_compensator +from .._fiff.proj import ProjMixin, _proj_equal, activate_proj, setup_proj +from .._fiff.utils import _check_orig_units, _make_split_fnames from .._fiff.write import ( + _NEXT_FILE_BUFFER, + _get_split_size, + end_block, start_and_end_file, start_block, - end_block, - write_dau_pack16, - write_float, - write_double, write_complex64, write_complex128, - write_int, + write_dau_pack16, + write_double, + write_float, write_id, + write_int, write_string, - _get_split_size, - _NEXT_FILE_BUFFER, ) from ..annotations import ( Annotations, @@ -68,49 +61,56 @@ _sync_onset, _write_annotations, ) +from ..channels.channels import ( + InterpolationMixin, + ReferenceMixin, + UpdateChannelsMixin, +) +from ..defaults import _handle_default +from ..event import concatenate_events, find_events from ..filter import ( FilterMixin, - notch_filter, - resample, + _check_fun, + _check_resamp_noop, _resamp_ratio_len, _resample_stim_channels, - _check_fun, + notch_filter, + resample, ) from ..html_templates import _get_html_template from ..parallel import parallel_func +from ..time_frequency.spectrum import Spectrum, SpectrumMixin, _validate_method from ..utils import ( + SizeMixin, + TimeMixin, + _arange_div, + _build_data_frame, _check_fname, - _check_pandas_installed, - sizeof_fmt, + _check_option, _check_pandas_index_arguments, - fill_doc, - copy_doc, - check_fname, + _check_pandas_installed, + _check_preload, + _check_time_format, + _convert_times, + _file_like, + _get_argvalues, _get_stim_channel, + _pl, + _scale_dataframe_data, _stamp_to_dt, - logger, - verbose, _time_mask, - warn, - SizeMixin, - copy_function_doc_to_method_doc, _validate_type, - _check_preload, - _get_argvalues, - _check_option, - _build_data_frame, - _convert_times, - _scale_dataframe_data, - _check_time_format, - _arange_div, - TimeMixin, + check_fname, + copy_doc, + copy_function_doc_to_method_doc, + fill_doc, + logger, repr_html, - _pl, - _file_like, + sizeof_fmt, + verbose, + warn, ) -from ..defaults import _handle_default -from ..viz import plot_raw, _RAW_CLIP_DEF -from ..time_frequency.spectrum import Spectrum, SpectrumMixin, _validate_method +from ..viz import _RAW_CLIP_DEF, plot_raw @fill_doc diff --git a/mne/io/besa/besa.py b/mne/io/besa/besa.py index dba8193d2bd..07fa1ee9eef 100644 --- a/mne/io/besa/besa.py +++ b/mne/io/besa/besa.py @@ -1,10 +1,11 @@ from collections import OrderedDict from pathlib import Path + import numpy as np -from ...utils import logger, fill_doc, verbose from ..._fiff.meas_info import create_info from ...evoked import EvokedArray +from ...utils import fill_doc, logger, verbose @fill_doc diff --git a/mne/io/besa/tests/test_besa.py b/mne/io/besa/tests/test_besa.py index fcaf32d651c..527ef86bff4 100644 --- a/mne/io/besa/tests/test_besa.py +++ b/mne/io/besa/tests/test_besa.py @@ -1,11 +1,11 @@ """Test reading BESA fileformats.""" import inspect -import pytest from pathlib import Path -from mne.io import read_evoked_besa -from mne.channels import read_custom_montage +import pytest +from mne.channels import read_custom_montage +from mne.io import read_evoked_besa FILE = Path(inspect.getfile(inspect.currentframe())) data_dir = FILE.parent / "data" diff --git a/mne/io/boxy/boxy.py b/mne/io/boxy/boxy.py index f2fa35f5ba2..9d4351df67f 100644 --- a/mne/io/boxy/boxy.py +++ b/mne/io/boxy/boxy.py @@ -6,11 +6,11 @@ import numpy as np -from ..base import BaseRaw from ..._fiff.meas_info import create_info from ..._fiff.utils import _mult_cal_one -from ...utils import logger, verbose, fill_doc, _check_fname from ...annotations import Annotations +from ...utils import _check_fname, fill_doc, logger, verbose +from ..base import BaseRaw @fill_doc diff --git a/mne/io/boxy/tests/test_boxy.py b/mne/io/boxy/tests/test_boxy.py index 0058075f107..e557980f2f8 100644 --- a/mne/io/boxy/tests/test_boxy.py +++ b/mne/io/boxy/tests/test_boxy.py @@ -2,10 +2,10 @@ # # License: BSD-3-Clause -import pytest import numpy as np -from numpy.testing import assert_allclose, assert_array_equal, assert_array_less +import pytest import scipy.io as spio +from numpy.testing import assert_allclose, assert_array_equal, assert_array_less from mne import pick_types from mne.datasets import testing diff --git a/mne/io/brainvision/brainvision.py b/mne/io/brainvision/brainvision.py index 444f3d2acef..2d75910ec4a 100644 --- a/mne/io/brainvision/brainvision.py +++ b/mne/io/brainvision/brainvision.py @@ -18,15 +18,15 @@ import numpy as np -from ..base import BaseRaw -from ...utils import verbose, logger, warn, fill_doc, _DefaultEventParser from ..._fiff.constants import FIFF from ..._fiff.meas_info import _empty_info -from ..._fiff.utils import _read_segments_file, _mult_cal_one +from ..._fiff.utils import _mult_cal_one, _read_segments_file from ...annotations import Annotations, read_annotations from ...channels import make_dig_montage from ...defaults import HEAD_SIZE_DEFAULT from ...transforms import _sph_to_cart +from ...utils import _DefaultEventParser, fill_doc, logger, verbose, warn +from ..base import BaseRaw @fill_doc diff --git a/mne/io/brainvision/tests/test_brainvision.py b/mne/io/brainvision/tests/test_brainvision.py index 5334941cb20..6aa222db1ec 100644 --- a/mne/io/brainvision/tests/test_brainvision.py +++ b/mne/io/brainvision/tests/test_brainvision.py @@ -4,22 +4,22 @@ # # License: BSD-3-Clause +import datetime import re import shutil from pathlib import Path import numpy as np -from numpy.testing import assert_array_equal, assert_allclose import pytest +from numpy.testing import assert_allclose, assert_array_equal -import datetime -from mne.utils import _stamp_to_dt, object_diff -from mne import pick_types, read_annotations, concatenate_raws +from mne import concatenate_raws, pick_types, read_annotations from mne._fiff.constants import FIFF -from mne.io import read_raw_fif, read_raw_brainvision -from mne.io.tests.test_raw import _test_raw_reader -from mne.datasets import testing from mne.annotations import events_from_annotations +from mne.datasets import testing +from mne.io import read_raw_brainvision, read_raw_fif +from mne.io.tests.test_raw import _test_raw_reader +from mne.utils import _stamp_to_dt, object_diff data_dir = Path(__file__).parent / "data" vhdr_path = data_dir / "test.vhdr" diff --git a/mne/io/bti/bti.py b/mne/io/bti/bti.py index a9a40b72a04..07e0d60d153 100644 --- a/mne/io/bti/bti.py +++ b/mne/io/bti/bti.py @@ -15,29 +15,29 @@ import numpy as np -from ..base import BaseRaw -from ..._fiff.tag import _coil_trans_to_loc, _loc_to_coil_trans -from ..._fiff.meas_info import _empty_info from ..._fiff._digitization import _make_bti_dig_points -from ...utils import logger, verbose, _stamp_to_dt, path_like, _validate_type -from ...transforms import combine_transforms, invert_transform, Transform from ..._fiff.constants import FIFF +from ..._fiff.meas_info import _empty_info +from ..._fiff.tag import _coil_trans_to_loc, _loc_to_coil_trans from ..._fiff.utils import _mult_cal_one, read_str +from ...transforms import Transform, combine_transforms, invert_transform +from ...utils import _stamp_to_dt, _validate_type, logger, path_like, verbose +from ..base import BaseRaw from .constants import BTI from .read import ( - read_int32, - read_int16, - read_float, - read_double, - read_transform, read_char, - read_int64, - read_uint16, - read_uint32, + read_dev_header, + read_double, read_double_matrix, + read_float, read_float_matrix, + read_int16, read_int16_matrix, - read_dev_header, + read_int32, + read_int64, + read_transform, + read_uint16, + read_uint32, ) FIFF_INFO_DIG_FIELDS = ("kind", "ident", "r", "coord_frame") diff --git a/mne/io/bti/tests/test_bti.py b/mne/io/bti/tests/test_bti.py index 7b15e3aa7a1..dfeb7ecab40 100644 --- a/mne/io/bti/tests/test_bti.py +++ b/mne/io/bti/tests/test_bti.py @@ -2,42 +2,42 @@ # # License: BSD-3-Clause +import os from collections import Counter -from functools import reduce, partial +from functools import partial, reduce from io import BytesIO -import os from pathlib import Path import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, - assert_allclose, assert_equal, ) -import pytest import mne -from mne.datasets import testing -from mne.io import read_raw_fif, read_raw_bti +from mne import pick_info, pick_types from mne._fiff._digitization import _make_bti_dig_points +from mne._fiff.constants import FIFF +from mne.datasets import testing +from mne.io import read_raw_bti, read_raw_fif from mne.io.bti.bti import ( - _read_config, - _read_head_shape, - _read_bti_header, - _get_bti_dev_t, + _check_nan_dev_head_t, + _convert_coil_trans, _correct_trans, + _get_bti_dev_t, _get_bti_info, _loc_to_coil_trans, - _convert_coil_trans, - _check_nan_dev_head_t, + _read_bti_header, + _read_config, + _read_head_shape, _rename_channels, ) from mne.io.tests.test_raw import _test_raw_reader -from mne._fiff.constants import FIFF -from mne import pick_types, pick_info -from mne.utils import assert_dig_allclose from mne.transforms import Transform, combine_transforms, invert_transform +from mne.utils import assert_dig_allclose base_dir = Path(__file__).parent / "data" diff --git a/mne/io/cnt/_utils.py b/mne/io/cnt/_utils.py index dd13e688b8f..0cc5d277b48 100644 --- a/mne/io/cnt/_utils.py +++ b/mne/io/cnt/_utils.py @@ -2,13 +2,13 @@ # # License: BSD-3-Clause -from struct import Struct from collections import namedtuple -from math import modf from datetime import datetime +from math import modf from os import SEEK_END -import numpy as np +from struct import Struct +import numpy as np from ...utils import warn diff --git a/mne/io/cnt/cnt.py b/mne/io/cnt/cnt.py index 1a6aa15b7f3..249497fdf73 100644 --- a/mne/io/cnt/cnt.py +++ b/mne/io/cnt/cnt.py @@ -8,22 +8,20 @@ import numpy as np -from ..base import BaseRaw -from ...utils import warn, fill_doc, _check_option -from ...channels.layout import _topo_to_sphere -from ..._fiff.constants import FIFF from ..._fiff._digitization import _make_dig_points -from ..._fiff.utils import _mult_cal_one, _find_channels, _create_chs, read_str +from ..._fiff.constants import FIFF from ..._fiff.meas_info import _empty_info +from ..._fiff.utils import _create_chs, _find_channels, _mult_cal_one, read_str from ...annotations import Annotations - - +from ...channels.layout import _topo_to_sphere +from ...utils import _check_option, fill_doc, warn +from ..base import BaseRaw from ._utils import ( - _read_teeg, + CNTEventType3, + _compute_robust_event_table_position, _get_event_parser, + _read_teeg, _session_date_2_meas_date, - _compute_robust_event_table_position, - CNTEventType3, ) diff --git a/mne/io/cnt/tests/test_cnt.py b/mne/io/cnt/tests/test_cnt.py index 76cd5c0acc1..a5e5788eff3 100644 --- a/mne/io/cnt/tests/test_cnt.py +++ b/mne/io/cnt/tests/test_cnt.py @@ -4,14 +4,14 @@ # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_array_equal import pytest +from numpy.testing import assert_array_equal from mne import pick_types +from mne.annotations import read_annotations from mne.datasets import testing -from mne.io.tests.test_raw import _test_raw_reader from mne.io.cnt import read_raw_cnt -from mne.annotations import read_annotations +from mne.io.tests.test_raw import _test_raw_reader data_path = testing.data_path(download=False) fname = data_path / "CNT" / "scan41_short.cnt" diff --git a/mne/io/ctf/ctf.py b/mne/io/ctf/ctf.py index 350ad757626..7f42da183d6 100644 --- a/mne/io/ctf/ctf.py +++ b/mne/io/ctf/ctf.py @@ -9,26 +9,24 @@ import numpy as np +from ..._fiff._digitization import _format_dig_points +from ..._fiff.utils import _blk_read_lims, _mult_cal_one from ...utils import ( - verbose, - logger, + _check_fname, + _check_option, _clean_names, fill_doc, - _check_option, - _check_fname, + logger, + verbose, ) - from ..base import BaseRaw -from ..._fiff.utils import _mult_cal_one, _blk_read_lims -from ..._fiff._digitization import _format_dig_points - -from .res4 import _read_res4, _make_ctf_name -from .hc import _read_hc -from .eeg import _read_eeg, _read_pos -from .trans import _make_ctf_coord_trans_set -from .info import _compose_meas_info, _read_bad_chans, _annotate_bad_segments from .constants import CTF +from .eeg import _read_eeg, _read_pos +from .hc import _read_hc +from .info import _annotate_bad_segments, _compose_meas_info, _read_bad_chans from .markers import _read_annotations_ctf_call +from .res4 import _make_ctf_name, _read_res4 +from .trans import _make_ctf_coord_trans_set @fill_doc diff --git a/mne/io/ctf/eeg.py b/mne/io/ctf/eeg.py index be827a469a9..c70fe8b626d 100644 --- a/mne/io/ctf/eeg.py +++ b/mne/io/ctf/eeg.py @@ -4,15 +4,15 @@ # # License: BSD-3-Clause -import numpy as np -from os.path import join from os import listdir +from os.path import join + +import numpy as np -from .res4 import _make_ctf_name -from ...utils import logger, warn from ..._fiff.constants import FIFF from ...transforms import apply_trans - +from ...utils import logger, warn +from .res4 import _make_ctf_name _cardinal_dict = dict( nasion=FIFF.FIFFV_POINT_NASION, diff --git a/mne/io/ctf/hc.py b/mne/io/ctf/hc.py index dc934aa297a..5bb94e4ec13 100644 --- a/mne/io/ctf/hc.py +++ b/mne/io/ctf/hc.py @@ -6,11 +6,10 @@ import numpy as np +from ..._fiff.constants import FIFF from ...utils import logger -from .res4 import _make_ctf_name from .constants import CTF -from ..._fiff.constants import FIFF - +from .res4 import _make_ctf_name _kind_dict = { "nasion": CTF.CTFV_COIL_NAS, diff --git a/mne/io/ctf/info.py b/mne/io/ctf/info.py index 66b7ad075e9..9e2b594dd9f 100644 --- a/mne/io/ctf/info.py +++ b/mne/io/ctf/info.py @@ -4,28 +4,26 @@ # # License: BSD-3-Clause -from time import strptime -from calendar import timegm import os.path as op +from calendar import timegm +from time import strptime import numpy as np -from ...utils import logger, warn, _clean_names +from ..._fiff.constants import FIFF +from ..._fiff.ctf_comp import _add_kind, _calibrate_comp +from ..._fiff.meas_info import _empty_info +from ..._fiff.write import get_new_file_id +from ...annotations import Annotations from ...transforms import ( - apply_trans, _coord_frame_name, - invert_transform, + apply_trans, combine_transforms, + invert_transform, ) -from ...annotations import Annotations -from ..._fiff.meas_info import _empty_info -from ..._fiff.write import get_new_file_id -from ..._fiff.ctf_comp import _add_kind, _calibrate_comp -from ..._fiff.constants import FIFF - +from ...utils import _clean_names, logger, warn from .constants import CTF - _ctf_to_fiff = { CTF.CTFV_COIL_LPA: FIFF.FIFFV_POINT_LPA, CTF.CTFV_COIL_RPA: FIFF.FIFFV_POINT_RPA, diff --git a/mne/io/ctf/markers.py b/mne/io/ctf/markers.py index 1d000c00aff..34d8c45b5a1 100644 --- a/mne/io/ctf/markers.py +++ b/mne/io/ctf/markers.py @@ -2,13 +2,14 @@ # # License: BSD-3-Clause -import numpy as np import os.path as op from io import BytesIO +import numpy as np + from ...annotations import Annotations -from .res4 import _read_res4 from .info import _convert_time +from .res4 import _read_res4 def _get_markers(fname): diff --git a/mne/io/ctf/tests/test_ctf.py b/mne/io/ctf/tests/test_ctf.py index 436ffdcf3f8..992f7f6ae37 100644 --- a/mne/io/ctf/tests/test_ctf.py +++ b/mne/io/ctf/tests/test_ctf.py @@ -3,36 +3,36 @@ # License: BSD-3-Clause import copy -from datetime import datetime, timezone import os -from os import path as op import shutil +from datetime import datetime, timezone +from os import path as op import numpy as np +import pytest from numpy import array_equal from numpy.testing import assert_allclose, assert_array_equal -import pytest import mne import mne.io.ctf.info from mne import ( - pick_types, - read_annotations, create_info, events_from_annotations, make_forward_solution, + pick_types, + read_annotations, ) -from mne.transforms import apply_trans -from mne.io import read_raw_fif, read_raw_ctf, RawArray from mne._fiff.compensator import get_current_comp +from mne._fiff.constants import FIFF from mne._fiff.pick import _picks_to_idx +from mne.datasets import brainstorm, spm_face, testing +from mne.io import RawArray, read_raw_ctf, read_raw_fif from mne.io.ctf.constants import CTF from mne.io.ctf.info import _convert_time from mne.io.tests.test_raw import _test_raw_reader from mne.tests.test_annotations import _assert_annotations_equal -from mne.utils import _clean_names, catch_logging, _stamp_to_dt, _record_warnings -from mne.datasets import testing, spm_face, brainstorm -from mne._fiff.constants import FIFF +from mne.transforms import apply_trans +from mne.utils import _clean_names, _record_warnings, _stamp_to_dt, catch_logging ctf_dir = testing.data_path(download=False) / "CTF" ctf_fname_continuous = "testdata_ctf.ds" diff --git a/mne/io/ctf/trans.py b/mne/io/ctf/trans.py index cc68116921e..3555dec7bff 100644 --- a/mne/io/ctf/trans.py +++ b/mne/io/ctf/trans.py @@ -6,18 +6,18 @@ import numpy as np -from .constants import CTF +from ..._fiff.constants import FIFF from ...transforms import ( - combine_transforms, - invert_transform, Transform, - _quat_to_affine, _fit_matched_points, + _quat_to_affine, apply_trans, + combine_transforms, get_ras_to_neuromag_trans, + invert_transform, ) from ...utils import logger -from ..._fiff.constants import FIFF +from .constants import CTF def _make_transform_card(fro, to, r_lpa, r_nasion, r_rpa): diff --git a/mne/io/curry/curry.py b/mne/io/curry/curry.py index 696d5969e10..2d1e342ea8b 100644 --- a/mne/io/curry/curry.py +++ b/mne/io/curry/curry.py @@ -5,33 +5,33 @@ # # License: BSD-3-Clause +import os.path as op +import re from collections import namedtuple from datetime import datetime, timezone -import os.path as op from pathlib import Path -import re import numpy as np -from ..base import BaseRaw -from ..ctf.trans import _quaternion_align from ..._fiff._digitization import _make_dig_points +from ..._fiff.constants import FIFF from ..._fiff.meas_info import create_info from ..._fiff.tag import _coil_trans_to_loc -from ..._fiff.utils import _read_segments_file, _mult_cal_one -from ..._fiff.constants import FIFF +from ..._fiff.utils import _mult_cal_one, _read_segments_file +from ...annotations import Annotations from ...surface import _normal_orth from ...transforms import ( - apply_trans, Transform, - get_ras_to_neuromag_trans, + _angle_between_quats, + apply_trans, combine_transforms, + get_ras_to_neuromag_trans, invert_transform, - _angle_between_quats, rot_to_quat, ) -from ...utils import check_fname, logger, verbose, _check_fname -from ...annotations import Annotations +from ...utils import _check_fname, check_fname, logger, verbose +from ..base import BaseRaw +from ..ctf.trans import _quaternion_align FILE_EXTENSIONS = { "Curry 7": { diff --git a/mne/io/curry/tests/test_curry.py b/mne/io/curry/tests/test_curry.py index 3ccb1aa035c..5e437101811 100644 --- a/mne/io/curry/tests/test_curry.py +++ b/mne/io/curry/tests/test_curry.py @@ -8,28 +8,27 @@ from pathlib import Path from shutil import copyfile -import pytest import numpy as np +import pytest from numpy.testing import assert_allclose, assert_array_equal -from mne.annotations import events_from_annotations +from mne._fiff.constants import FIFF +from mne._fiff.tag import _loc_to_coil_trans +from mne.annotations import events_from_annotations, read_annotations from mne.bem import _fit_sphere from mne.datasets import testing from mne.event import find_events -from mne._fiff.tag import _loc_to_coil_trans -from mne._fiff.constants import FIFF -from mne.io.edf import read_raw_bdf from mne.io.bti import read_raw_bti from mne.io.curry import read_raw_curry -from mne.io.tests.test_raw import _test_raw_reader -from mne.utils import catch_logging -from mne.annotations import read_annotations from mne.io.curry.curry import ( - _get_curry_version, + FILE_EXTENSIONS, _get_curry_file_structure, + _get_curry_version, _read_events_curry, - FILE_EXTENSIONS, ) +from mne.io.edf import read_raw_bdf +from mne.io.tests.test_raw import _test_raw_reader +from mne.utils import catch_logging data_dir = testing.data_path(download=False) curry_dir = data_dir / "curry" diff --git a/mne/io/edf/edf.py b/mne/io/edf/edf.py index a1dce08c049..8831989860c 100644 --- a/mne/io/edf/edf.py +++ b/mne/io/edf/edf.py @@ -10,21 +10,20 @@ # # License: BSD-3-Clause -from datetime import datetime, timezone, timedelta import os import re +from datetime import datetime, timedelta, timezone import numpy as np from scipy.interpolate import interp1d -from ..base import BaseRaw, _get_scaling -from ...utils import verbose, logger, warn, _validate_type -from ..._fiff.utils import _blk_read_lims, _mult_cal_one -from ..._fiff.meas_info import _empty_info, _unique_channel_names from ..._fiff.constants import FIFF -from ...filter import resample -from ...utils import fill_doc +from ..._fiff.meas_info import _empty_info, _unique_channel_names +from ..._fiff.utils import _blk_read_lims, _mult_cal_one from ...annotations import Annotations +from ...filter import resample +from ...utils import _validate_type, fill_doc, logger, verbose, warn +from ..base import BaseRaw, _get_scaling # common channel type names mapped to internal ch types CH_TYPE_MAPPING = { diff --git a/mne/io/edf/tests/test_edf.py b/mne/io/edf/tests/test_edf.py index e1c176c7e4c..6dec227800a 100644 --- a/mne/io/edf/tests/test_edf.py +++ b/mne/io/edf/tests/test_edf.py @@ -13,30 +13,29 @@ from pathlib import Path import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, assert_equal, - assert_allclose, ) from scipy.io import loadmat -import pytest - -from mne import pick_types, Annotations +from mne import Annotations, pick_types +from mne._fiff.pick import channel_indices_by_type, get_channel_type_constants from mne.annotations import _ndarray_ch_names, events_from_annotations, read_annotations from mne.datasets import testing -from mne.io import read_raw_edf, read_raw_bdf, read_raw_fif, edf, read_raw_gdf -from mne.io.tests.test_raw import _test_raw_reader +from mne.io import edf, read_raw_bdf, read_raw_edf, read_raw_fif, read_raw_gdf from mne.io.edf.edf import ( + _edf_str, + _parse_prefilter_string, _read_annotations_edf, _read_ch, - _parse_prefilter_string, - _edf_str, _read_edf_header, _read_header, ) -from mne._fiff.pick import channel_indices_by_type, get_channel_type_constants +from mne.io.tests.test_raw import _test_raw_reader from mne.tests.test_annotations import _assert_annotations_equal td_mark = testing._pytest_mark() diff --git a/mne/io/edf/tests/test_gdf.py b/mne/io/edf/tests/test_gdf.py index 211230ca9b1..a851e372cee 100644 --- a/mne/io/edf/tests/test_gdf.py +++ b/mne/io/edf/tests/test_gdf.py @@ -3,18 +3,18 @@ # # License: BSD-3-Clause -from datetime import datetime, timezone, timedelta import shutil +from datetime import datetime, timedelta, timezone -import pytest -from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_equal import numpy as np +import pytest import scipy.io as sio +from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_equal +from mne import events_from_annotations, find_events, pick_types from mne.datasets import testing from mne.io import read_raw_gdf from mne.io.tests.test_raw import _test_raw_reader -from mne import pick_types, find_events, events_from_annotations data_path = testing.data_path(download=False) gdf1_path = data_path / "GDF" / "test_gdf_1.25" diff --git a/mne/io/eeglab/eeglab.py b/mne/io/eeglab/eeglab.py index 56a254b3a33..9e08807db49 100644 --- a/mne/io/eeglab/eeglab.py +++ b/mne/io/eeglab/eeglab.py @@ -9,29 +9,30 @@ from pathlib import Path import numpy as np + from mne.utils.check import _check_option -from ._eeglab import _readmat -from ..base import BaseRaw -from ...event import read_events from ..._fiff._digitization import _ensure_fiducials_head from ..._fiff.constants import FIFF from ..._fiff.meas_info import create_info from ..._fiff.pick import _PICK_TYPES_KEYS -from ..._fiff.utils import _read_segments_file, _find_channels +from ..._fiff.utils import _find_channels, _read_segments_file +from ...annotations import Annotations, read_annotations +from ...channels import make_dig_montage from ...defaults import DEFAULTS +from ...epochs import BaseEpochs +from ...event import read_events from ...utils import ( - logger, - verbose, - warn, - fill_doc, Bunch, _check_fname, _check_head_radius, + fill_doc, + logger, + verbose, + warn, ) -from ...channels import make_dig_montage -from ...epochs import BaseEpochs -from ...annotations import Annotations, read_annotations +from ..base import BaseRaw +from ._eeglab import _readmat # just fix the scaling for now, EEGLAB doesn't seem to provide this info CAL = 1e-6 diff --git a/mne/io/eeglab/tests/test_eeglab.py b/mne/io/eeglab/tests/test_eeglab.py index d441fbcfc14..c8519eb335d 100644 --- a/mne/io/eeglab/tests/test_eeglab.py +++ b/mne/io/eeglab/tests/test_eeglab.py @@ -9,25 +9,25 @@ from copy import deepcopy import numpy as np +import pytest from numpy.testing import ( - assert_array_equal, + assert_allclose, assert_array_almost_equal, + assert_array_equal, assert_equal, - assert_allclose, ) -import pytest from scipy import io import mne -from mne import write_events, read_epochs_eeglab +from mne import read_epochs_eeglab, write_events +from mne.annotations import events_from_annotations, read_annotations from mne.channels import read_custom_montage +from mne.datasets import testing from mne.io import read_raw_eeglab -from mne.io.eeglab.eeglab import _get_montage_information, _dol_to_lod from mne.io.eeglab._eeglab import _readmat +from mne.io.eeglab.eeglab import _dol_to_lod, _get_montage_information from mne.io.tests.test_raw import _test_raw_reader -from mne.datasets import testing from mne.utils import Bunch, _check_pymatreader_installed -from mne.annotations import events_from_annotations, read_annotations base_dir = testing.data_path(download=False) / "EEGLAB" raw_fname_mat = base_dir / "test_raw.set" diff --git a/mne/io/egi/egi.py b/mne/io/egi/egi.py index 8b7408d74bb..d6ba4b884f6 100644 --- a/mne/io/egi/egi.py +++ b/mne/io/egi/egi.py @@ -8,13 +8,13 @@ import numpy as np +from ..._fiff.constants import FIFF +from ..._fiff.meas_info import _empty_info +from ..._fiff.utils import _create_chs, _read_segments_file +from ...utils import _check_fname, _validate_type, logger, verbose, warn +from ..base import BaseRaw from .egimff import _read_raw_egi_mff from .events import _combine_triggers -from ..base import BaseRaw -from ..._fiff.utils import _create_chs, _read_segments_file -from ..._fiff.meas_info import _empty_info -from ..._fiff.constants import FIFF -from ...utils import verbose, logger, warn, _validate_type, _check_fname def _read_header(fid): diff --git a/mne/io/egi/egimff.py b/mne/io/egi/egimff.py index 5375cfadf60..b584acf9abd 100644 --- a/mne/io/egi/egimff.py +++ b/mne/io/egi/egimff.py @@ -1,33 +1,33 @@ """EGI NetStation Load Function.""" -from collections import OrderedDict import datetime import math import os.path as op import re -from defusedxml.minidom import parse +from collections import OrderedDict from pathlib import Path import numpy as np +from defusedxml.minidom import parse -from .events import _read_events, _combine_triggers -from .general import ( - _get_signalfname, - _get_ep_info, - _extract, - _get_blocks, - _get_gains, - _block_r, -) -from ..base import BaseRaw from ..._fiff.constants import FIFF -from ..._fiff.meas_info import _empty_info, create_info, _ensure_meas_date_none_or_dt +from ..._fiff.meas_info import _empty_info, _ensure_meas_date_none_or_dt, create_info from ..._fiff.proj import setup_proj from ..._fiff.utils import _create_chs, _mult_cal_one from ...annotations import Annotations from ...channels.montage import make_dig_montage -from ...utils import verbose, logger, warn, _check_option, _check_fname from ...evoked import EvokedArray +from ...utils import _check_fname, _check_option, logger, verbose, warn +from ..base import BaseRaw +from .events import _combine_triggers, _read_events +from .general import ( + _block_r, + _extract, + _get_blocks, + _get_ep_info, + _get_gains, + _get_signalfname, +) REFERENCE_NAMES = ("VREF", "Vertex Reference") diff --git a/mne/io/egi/events.py b/mne/io/egi/events.py index 9e5088d7617..8e035d42681 100644 --- a/mne/io/egi/events.py +++ b/mne/io/egi/events.py @@ -4,9 +4,9 @@ from datetime import datetime from glob import glob from os.path import basename, join, splitext -from defusedxml.ElementTree import parse import numpy as np +from defusedxml.ElementTree import parse from ...utils import logger diff --git a/mne/io/egi/general.py b/mne/io/egi/general.py index a82f087b59a..ed20fce0fbd 100644 --- a/mne/io/egi/general.py +++ b/mne/io/egi/general.py @@ -2,10 +2,10 @@ # License: BSD-3-Clause import os -from defusedxml.minidom import parse import re import numpy as np +from defusedxml.minidom import parse from ...utils import _pl diff --git a/mne/io/egi/tests/test_egi.py b/mne/io/egi/tests/test_egi.py index 7ed2743249d..7772d38f2d3 100644 --- a/mne/io/egi/tests/test_egi.py +++ b/mne/io/egi/tests/test_egi.py @@ -2,24 +2,24 @@ # simplified BSD-3 license -from copy import deepcopy -from pathlib import Path import os import shutil +from copy import deepcopy from datetime import datetime, timezone +from pathlib import Path import numpy as np -from numpy.testing import assert_array_equal, assert_allclose import pytest +from numpy.testing import assert_allclose, assert_array_equal from scipy import io as sio from mne import find_events, pick_types -from mne.io import read_raw_egi, read_evokeds_mff, read_raw_fif from mne._fiff.constants import FIFF +from mne.datasets.testing import data_path, requires_testing_data +from mne.io import read_evokeds_mff, read_raw_egi, read_raw_fif from mne.io.egi.egi import _combine_triggers from mne.io.tests.test_raw import _test_raw_reader from mne.utils import object_diff -from mne.datasets.testing import data_path, requires_testing_data base_dir = Path(__file__).parent / "data" egi_fname = base_dir / "test_egi.raw" diff --git a/mne/io/eximia/eximia.py b/mne/io/eximia/eximia.py index 03ab01eff04..2f13049fa2c 100644 --- a/mne/io/eximia/eximia.py +++ b/mne/io/eximia/eximia.py @@ -5,10 +5,10 @@ import os.path as op -from ..base import BaseRaw -from ..._fiff.utils import _read_segments_file, _file_size from ..._fiff.meas_info import create_info -from ...utils import logger, verbose, warn, fill_doc, _check_fname +from ..._fiff.utils import _file_size, _read_segments_file +from ...utils import _check_fname, fill_doc, logger, verbose, warn +from ..base import BaseRaw @fill_doc diff --git a/mne/io/eximia/tests/test_eximia.py b/mne/io/eximia/tests/test_eximia.py index 59a0ba8c784..d42e6b174a5 100644 --- a/mne/io/eximia/tests/test_eximia.py +++ b/mne/io/eximia/tests/test_eximia.py @@ -4,9 +4,9 @@ from numpy.testing import assert_array_equal from scipy import io as sio +from mne.datasets.testing import data_path, requires_testing_data from mne.io import read_raw_eximia from mne.io.tests.test_raw import _test_raw_reader -from mne.datasets.testing import data_path, requires_testing_data testing_path = data_path(download=False) diff --git a/mne/io/eyelink/_utils.py b/mne/io/eyelink/_utils.py index 23c9cb38329..65641e9cc43 100644 --- a/mne/io/eyelink/_utils.py +++ b/mne/io/eyelink/_utils.py @@ -3,8 +3,8 @@ # License: BSD-3-Clause -from datetime import datetime, timezone, timedelta import re +from datetime import datetime, timedelta, timezone import numpy as np diff --git a/mne/io/eyelink/eyelink.py b/mne/io/eyelink/eyelink.py index 501b8ad798b..9a465d76ce9 100644 --- a/mne/io/eyelink/eyelink.py +++ b/mne/io/eyelink/eyelink.py @@ -8,14 +8,14 @@ from pathlib import Path -from ._utils import _parse_eyelink_ascii, _make_eyelink_annots, _make_gap_annots -from ..base import BaseRaw from ...utils import ( _check_fname, fill_doc, logger, verbose, ) +from ..base import BaseRaw +from ._utils import _make_eyelink_annots, _make_gap_annots, _parse_eyelink_ascii @fill_doc diff --git a/mne/io/eyelink/tests/test_eyelink.py b/mne/io/eyelink/tests/test_eyelink.py index c482826dde8..a578bce25a5 100644 --- a/mne/io/eyelink/tests/test_eyelink.py +++ b/mne/io/eyelink/tests/test_eyelink.py @@ -1,16 +1,15 @@ from pathlib import Path -import pytest - import numpy as np +import pytest from numpy.testing import assert_allclose +from mne._fiff.constants import FIFF +from mne._fiff.pick import _DATA_CH_TYPES_SPLIT from mne.datasets.testing import data_path, requires_testing_data from mne.io import read_raw_eyelink -from mne.io.tests.test_raw import _test_raw_reader -from mne._fiff.constants import FIFF from mne.io.eyelink._utils import _adjust_times, _find_overlaps -from mne._fiff.pick import _DATA_CH_TYPES_SPLIT +from mne.io.tests.test_raw import _test_raw_reader pd = pytest.importorskip("pandas") diff --git a/mne/io/fieldtrip/fieldtrip.py b/mne/io/fieldtrip/fieldtrip.py index e5678522432..a3d13512146 100644 --- a/mne/io/fieldtrip/fieldtrip.py +++ b/mne/io/fieldtrip/fieldtrip.py @@ -6,17 +6,17 @@ import numpy as np +from ...epochs import EpochsArray +from ...evoked import EvokedArray +from ...utils import _check_fname, _import_pymatreader_funcs +from ..array.array import RawArray from .utils import ( + _create_event_metadata, + _create_events, _create_info, _set_tmin, - _create_events, - _create_event_metadata, _validate_ft_struct, ) -from ..array.array import RawArray -from ...utils import _check_fname, _import_pymatreader_funcs -from ...epochs import EpochsArray -from ...evoked import EvokedArray def read_raw_fieldtrip(fname, info, data_name="data"): diff --git a/mne/io/fieldtrip/tests/helpers.py b/mne/io/fieldtrip/tests/helpers.py index d93e6ad126e..cf0102a8139 100644 --- a/mne/io/fieldtrip/tests/helpers.py +++ b/mne/io/fieldtrip/tests/helpers.py @@ -3,15 +3,14 @@ # Dirk Gütlin # # License: BSD-3-Clause -from functools import partial import os +from functools import partial import numpy as np import mne from mne.utils import object_diff - info_ignored_fields = ( "file_id", "hpi_results", diff --git a/mne/io/fieldtrip/tests/test_fieldtrip.py b/mne/io/fieldtrip/tests/test_fieldtrip.py index 948edf6d7a3..37b5bb2cd41 100644 --- a/mne/io/fieldtrip/tests/test_fieldtrip.py +++ b/mne/io/fieldtrip/tests/test_fieldtrip.py @@ -8,24 +8,24 @@ import itertools from contextlib import nullcontext -import pytest import numpy as np +import pytest import mne from mne.datasets import testing from mne.io import read_raw_fieldtrip -from mne.io.fieldtrip.utils import NOINFO_WARNING, _create_events from mne.io.fieldtrip.tests.helpers import ( + assert_warning_in_record, + check_data, check_info_fields, get_data_paths, - get_raw_data, get_epochs, get_evoked, - pandas_not_found_warning_msg, + get_raw_data, get_raw_info, - check_data, - assert_warning_in_record, + pandas_not_found_warning_msg, ) +from mne.io.fieldtrip.utils import NOINFO_WARNING, _create_events from mne.io.tests.test_raw import _test_raw_reader from mne.utils import _check_pandas_installed, _record_warnings diff --git a/mne/io/fieldtrip/utils.py b/mne/io/fieldtrip/utils.py index a32fd680ead..ae975dc309c 100644 --- a/mne/io/fieldtrip/utils.py +++ b/mne/io/fieldtrip/utils.py @@ -10,7 +10,7 @@ from ..._fiff.meas_info import create_info from ..._fiff.pick import pick_info from ...transforms import rotation3d_align_z_axis -from ...utils import warn, _check_pandas_installed +from ...utils import _check_pandas_installed, warn _supported_megs = ["neuromag306"] diff --git a/mne/io/fiff/raw.py b/mne/io/fiff/raw.py index ea8aaa33d59..eab274ba108 100644 --- a/mne/io/fiff/raw.py +++ b/mne/io/fiff/raw.py @@ -12,33 +12,31 @@ import numpy as np -from ...channels import fix_mag_coil_types -from ...event import AcqParserFIF from ..._fiff.constants import FIFF -from ..._fiff.open import fiff_open, _fiff_get_fid, _get_next_fname from ..._fiff.meas_info import read_meas_info -from ..._fiff.tree import dir_tree_find +from ..._fiff.open import _fiff_get_fid, _get_next_fname, fiff_open from ..._fiff.tag import read_tag, read_tag_info -from ..base import ( - BaseRaw, - _RawShell, - _check_raw_compatibility, - _check_maxshield, - _get_fname_rep, -) +from ..._fiff.tree import dir_tree_find from ..._fiff.utils import _mult_cal_one - from ...annotations import Annotations, _read_annotations_fif - +from ...channels import fix_mag_coil_types +from ...event import AcqParserFIF from ...utils import ( + _check_fname, + _file_like, + _on_missing, check_fname, + fill_doc, logger, verbose, warn, - fill_doc, - _file_like, - _on_missing, - _check_fname, +) +from ..base import ( + BaseRaw, + _check_maxshield, + _check_raw_compatibility, + _get_fname_rep, + _RawShell, ) diff --git a/mne/io/fiff/tests/test_raw_fiff.py b/mne/io/fiff/tests/test_raw_fiff.py index 9b24930fb69..ed94c4c527a 100644 --- a/mne/io/fiff/tests/test_raw_fiff.py +++ b/mne/io/fiff/tests/test_raw_fiff.py @@ -3,47 +3,47 @@ # # License: BSD-3-Clause -from copy import deepcopy -from pathlib import Path -from functools import partial -from io import BytesIO import os import pathlib import pickle import shutil import sys +from copy import deepcopy +from functools import partial +from io import BytesIO +from pathlib import Path import numpy as np -from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_allclose import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal -from mne.datasets import testing -from mne.filter import filter_data -from mne._fiff.constants import FIFF -from mne.io import RawArray, concatenate_raws, read_raw_fif, match_channel_orders, base -from mne._fiff.open import read_tag, read_tag_info -from mne._fiff.tag import _read_tag_header -from mne.io.tests.test_raw import _test_concat, _test_raw_reader from mne import ( + compute_proj_raw, concatenate_events, - find_events, + create_info, equalize_channels, - compute_proj_raw, - pick_types, + find_events, + make_fixed_length_epochs, pick_channels, - create_info, pick_info, - make_fixed_length_epochs, + pick_types, ) +from mne._fiff.constants import FIFF +from mne._fiff.open import read_tag, read_tag_info +from mne._fiff.tag import _read_tag_header +from mne.annotations import Annotations +from mne.datasets import testing +from mne.filter import filter_data +from mne.io import RawArray, base, concatenate_raws, match_channel_orders, read_raw_fif +from mne.io.tests.test_raw import _test_concat, _test_raw_reader from mne.utils import ( - assert_object_equal, _dt_to_stamp, - requires_mne, - run_subprocess, _record_warnings, assert_and_remove_boundary_annot, + assert_object_equal, + requires_mne, + run_subprocess, ) -from mne.annotations import Annotations testing_path = testing.data_path(download=False) data_dir = testing_path / "MEG" / "sample" diff --git a/mne/io/fil/fil.py b/mne/io/fil/fil.py index 616c8e9fc1b..fc6472d0043 100644 --- a/mne/io/fil/fil.py +++ b/mne/io/fil/fil.py @@ -2,25 +2,24 @@ # # License: BSD-3-Clause -import pathlib import json +import pathlib import numpy as np -from ..base import BaseRaw +from ..._fiff._digitization import _make_dig_points from ..._fiff.constants import FIFF from ..._fiff.meas_info import _empty_info -from ..._fiff.write import get_new_file_id from ..._fiff.utils import _read_segments_file -from ..._fiff._digitization import _make_dig_points -from ...transforms import get_ras_to_neuromag_trans, apply_trans, Transform -from ...utils import warn, fill_doc, verbose, _check_fname - +from ..._fiff.write import get_new_file_id +from ...transforms import Transform, apply_trans, get_ras_to_neuromag_trans +from ...utils import _check_fname, fill_doc, verbose, warn +from ..base import BaseRaw from .sensors import ( - _refine_sensor_orientation, + _get_plane_vectors, _get_pos_units, + _refine_sensor_orientation, _size2units, - _get_plane_vectors, ) diff --git a/mne/io/fil/sensors.py b/mne/io/fil/sensors.py index ab94e65ccbc..3e251202fcf 100644 --- a/mne/io/fil/sensors.py +++ b/mne/io/fil/sensors.py @@ -3,6 +3,7 @@ # License: BSD-3-Clause from copy import deepcopy + import numpy as np from ...utils import logger diff --git a/mne/io/fil/tests/test_fil.py b/mne/io/fil/tests/test_fil.py index 9f9570f5adb..a88c4fe4d12 100644 --- a/mne/io/fil/tests/test_fil.py +++ b/mne/io/fil/tests/test_fil.py @@ -2,22 +2,19 @@ # # License: BSD-3-Clause -from numpy import isnan, empty, array -from numpy.testing import assert_array_equal, assert_array_almost_equal +import shutil from os import remove import pytest -import shutil - +import scipy.io +from numpy import array, empty, isnan +from numpy.testing import assert_array_almost_equal, assert_array_equal from mne import pick_types from mne.datasets import testing from mne.io import read_raw_fil from mne.io.fil.sensors import _get_pos_units -import scipy.io - - fil_path = testing.data_path(download=False) / "FIL" diff --git a/mne/io/hitachi/hitachi.py b/mne/io/hitachi/hitachi.py index 9af5a1354c3..12219dacd8b 100644 --- a/mne/io/hitachi/hitachi.py +++ b/mne/io/hitachi/hitachi.py @@ -7,12 +7,12 @@ import numpy as np -from ..base import BaseRaw -from ..nirx.nirx import _read_csv_rows_cols from ..._fiff.constants import FIFF -from ..._fiff.meas_info import create_info, _merge_info +from ..._fiff.meas_info import _merge_info, create_info from ..._fiff.utils import _mult_cal_one -from ...utils import logger, verbose, fill_doc, warn, _check_fname, _check_option +from ...utils import _check_fname, _check_option, fill_doc, logger, verbose, warn +from ..base import BaseRaw +from ..nirx.nirx import _read_csv_rows_cols @fill_doc diff --git a/mne/io/hitachi/tests/test_hitachi.py b/mne/io/hitachi/tests/test_hitachi.py index 89b94fd7a06..72fa846c6fb 100644 --- a/mne/io/hitachi/tests/test_hitachi.py +++ b/mne/io/hitachi/tests/test_hitachi.py @@ -4,8 +4,8 @@ import datetime as dt -import pytest import numpy as np +import pytest from numpy.testing import assert_allclose, assert_array_less from mne.channels import make_standard_montage @@ -13,14 +13,13 @@ from mne.io.hitachi.hitachi import _compute_pairs from mne.io.tests.test_raw import _test_raw_reader from mne.preprocessing.nirs import ( - source_detector_distances, - optical_density, - tddr, beer_lambert_law, + optical_density, scalp_coupling_index, + source_detector_distances, + tddr, ) - CONTENTS = dict() CONTENTS[ "1.18" diff --git a/mne/io/kit/coreg.py b/mne/io/kit/coreg.py index 881e63fb87a..209728dbaab 100644 --- a/mne/io/kit/coreg.py +++ b/mne/io/kit/coreg.py @@ -12,22 +12,21 @@ import numpy as np -from .constants import KIT, FIFF +from ..._fiff._digitization import _make_dig_points from ...channels.montage import ( - read_polhemus_fastscan, - read_dig_polhemus_isotrak, - read_custom_montage, _check_dig_shape, + read_custom_montage, + read_dig_polhemus_isotrak, + read_polhemus_fastscan, ) -from ..._fiff._digitization import _make_dig_points from ...transforms import ( Transform, + als_ras_trans, apply_trans, get_ras_to_neuromag_trans, - als_ras_trans, ) -from ...utils import warn, _check_option, _check_fname - +from ...utils import _check_fname, _check_option, warn +from .constants import FIFF, KIT INT32 = " # simplified BSD-3 license -import shutil -import os import datetime as dt -import numpy as np +import os +import shutil +import numpy as np import pytest from numpy.testing import assert_allclose, assert_array_equal from mne import pick_types +from mne._fiff.constants import FIFF from mne.datasets.testing import data_path, requires_testing_data from mne.io import read_raw_nirx from mne.io.tests.test_raw import _test_raw_reader from mne.preprocessing import annotate_nan -from mne.transforms import apply_trans, _get_trans from mne.preprocessing.nirs import ( - source_detector_distances, - short_channels, _reorder_nirx, + short_channels, + source_detector_distances, ) -from mne._fiff.constants import FIFF +from mne.transforms import _get_trans, apply_trans testing_path = data_path(download=False) fname_nirx_15_0 = testing_path / "NIRx" / "nirscout" / "nirx_15_0_recording" diff --git a/mne/io/nsx/nsx.py b/mne/io/nsx/nsx.py index 08cd5bc29a6..5d3b2e7a659 100644 --- a/mne/io/nsx/nsx.py +++ b/mne/io/nsx/nsx.py @@ -6,14 +6,12 @@ import numpy as np -from ..base import BaseRaw, _get_scaling from ..._fiff.constants import FIFF from ..._fiff.meas_info import _empty_info -from ..._fiff.utils import _read_segments_file, _file_size - +from ..._fiff.utils import _file_size, _read_segments_file from ...annotations import Annotations -from ...utils import logger, fill_doc, warn - +from ...utils import fill_doc, logger, warn +from ..base import BaseRaw, _get_scaling CH_TYPE_MAPPING = { "CC": "SEEG", diff --git a/mne/io/nsx/tests/test_nsx.py b/mne/io/nsx/tests/test_nsx.py index 8aa22677552..03b6ebb8606 100644 --- a/mne/io/nsx/tests/test_nsx.py +++ b/mne/io/nsx/tests/test_nsx.py @@ -2,19 +2,18 @@ # # License: BSD-3-Clause import os + import numpy as np import pytest - from numpy.testing import assert_allclose -from mne.io import read_raw_nsx -from mne.io.nsx.nsx import _decode_online_filters, _read_header -from mne._fiff.meas_info import _empty_info +from mne import make_fixed_length_epochs from mne._fiff.constants import FIFF +from mne._fiff.meas_info import _empty_info from mne.datasets.testing import data_path, requires_testing_data +from mne.io import read_raw_nsx +from mne.io.nsx.nsx import _decode_online_filters, _read_header from mne.io.tests.test_raw import _test_raw_reader -from mne import make_fixed_length_epochs - testing_path = data_path(download=False) nsx_21_fname = os.path.join(testing_path, "nsx", "test_NEURALSG_raw.ns3") diff --git a/mne/io/persyst/persyst.py b/mne/io/persyst/persyst.py index 3030c1ad1d4..873131ffad3 100644 --- a/mne/io/persyst/persyst.py +++ b/mne/io/persyst/persyst.py @@ -8,12 +8,12 @@ import numpy as np -from ..base import BaseRaw from ..._fiff.constants import FIFF from ..._fiff.meas_info import create_info from ..._fiff.utils import _mult_cal_one from ...annotations import Annotations -from ...utils import logger, verbose, fill_doc, warn, _check_fname +from ...utils import _check_fname, fill_doc, logger, verbose, warn +from ..base import BaseRaw @fill_doc diff --git a/mne/io/persyst/tests/test_persyst.py b/mne/io/persyst/tests/test_persyst.py index 88c4c3e2770..ac527157834 100644 --- a/mne/io/persyst/tests/test_persyst.py +++ b/mne/io/persyst/tests/test_persyst.py @@ -5,9 +5,9 @@ import os import shutil +import numpy as np import pytest from numpy.testing import assert_array_equal -import numpy as np from mne.datasets.testing import data_path, requires_testing_data from mne.io import read_raw_persyst diff --git a/mne/io/pick.py b/mne/io/pick.py index 5ae287de324..7b9b38b8b2d 100644 --- a/mne/io/pick.py +++ b/mne/io/pick.py @@ -5,9 +5,9 @@ from .._fiff import _io_dep_getattr from .._fiff.pick import ( - _picks_to_idx, _DATA_CH_TYPES_ORDER_DEFAULT, _DATA_CH_TYPES_SPLIT, + _picks_to_idx, ) __all__ = [ diff --git a/mne/io/snirf/_snirf.py b/mne/io/snirf/_snirf.py index 5da8642301f..a0de3550c88 100644 --- a/mne/io/snirf/_snirf.py +++ b/mne/io/snirf/_snirf.py @@ -2,20 +2,21 @@ # # License: BSD-3-Clause +import datetime import re + import numpy as np -import datetime -from ..base import BaseRaw -from ..nirx.nirx import _convert_fnirs_to_head -from ..._fiff.meas_info import create_info, _format_dig_points +from ..._fiff._digitization import _make_dig_points +from ..._fiff.constants import FIFF +from ..._fiff.meas_info import _format_dig_points, create_info from ..._fiff.utils import _mult_cal_one +from ..._freesurfer import get_mni_fiducials from ...annotations import Annotations -from ...utils import logger, verbose, fill_doc, warn, _check_fname, _import_h5py -from ..._fiff.constants import FIFF -from ..._fiff._digitization import _make_dig_points from ...transforms import _frame_to_str, apply_trans -from ..._freesurfer import get_mni_fiducials +from ...utils import _check_fname, _import_h5py, fill_doc, logger, verbose, warn +from ..base import BaseRaw +from ..nirx.nirx import _convert_fnirs_to_head @fill_doc diff --git a/mne/io/snirf/tests/test_snirf.py b/mne/io/snirf/tests/test_snirf.py index 141e34d00c6..276d003b791 100644 --- a/mne/io/snirf/tests/test_snirf.py +++ b/mne/io/snirf/tests/test_snirf.py @@ -1,26 +1,26 @@ # Authors: Robert Luke # simplified BSD-3 license -import numpy as np -from numpy.testing import assert_allclose, assert_almost_equal, assert_equal import shutil + +import numpy as np import pytest +from numpy.testing import assert_allclose, assert_almost_equal, assert_equal +from mne._fiff.constants import FIFF from mne.datasets.testing import data_path, requires_testing_data -from mne.io import read_raw_snirf, read_raw_nirx +from mne.io import read_raw_nirx, read_raw_snirf from mne.io.tests.test_raw import _test_raw_reader from mne.preprocessing.nirs import ( - optical_density, + _reorder_nirx, beer_lambert_law, + optical_density, short_channels, source_detector_distances, - _reorder_nirx, ) -from mne.transforms import apply_trans, _get_trans -from mne._fiff.constants import FIFF +from mne.transforms import _get_trans, apply_trans from mne.utils import catch_logging - testing_path = data_path(download=False) # SfNIRS files sfnirs_homer_103_wShort = ( diff --git a/mne/io/tests/test_apply_function.py b/mne/io/tests/test_apply_function.py index 920dd404dc6..94388ccf86e 100644 --- a/mne/io/tests/test_apply_function.py +++ b/mne/io/tests/test_apply_function.py @@ -7,7 +7,7 @@ from mne import create_info from mne.io import RawArray -from mne.utils import logger, catch_logging +from mne.utils import catch_logging, logger def bad_1(x): diff --git a/mne/io/tests/test_raw.py b/mne/io/tests/test_raw.py index 44640427108..362fb293fdf 100644 --- a/mne/io/tests/test_raw.py +++ b/mne/io/tests/test_raw.py @@ -4,16 +4,16 @@ # # License: BSD-3-Clause -from contextlib import redirect_stdout -from io import StringIO import math import os +import re +from contextlib import redirect_stdout +from io import StringIO from os import path as op from pathlib import Path -import re -import pytest import numpy as np +import pytest from numpy.testing import ( assert_allclose, assert_array_almost_equal, @@ -22,26 +22,26 @@ ) import mne -from mne import concatenate_raws, create_info, Annotations, pick_types +from mne import Annotations, concatenate_raws, create_info, pick_types +from mne._fiff._digitization import DigPoint, _dig_kind_dict +from mne._fiff.constants import FIFF +from mne._fiff.meas_info import Info, _get_valid_units, _writing_info_hdf5 +from mne._fiff.pick import _ELECTRODE_CH_TYPES, _FNIRS_CH_TYPES_SPLIT +from mne._fiff.proj import Projection +from mne._fiff.utils import _mult_cal_one from mne.datasets import testing from mne.fixes import _numpy_h5py_dep -from mne.io import read_raw_fif, RawArray, BaseRaw +from mne.io import BaseRaw, RawArray, read_raw_fif from mne.io.base import _get_scaling -from mne._fiff.meas_info import Info, _writing_info_hdf5, _get_valid_units -from mne._fiff._digitization import _dig_kind_dict, DigPoint -from mne._fiff.pick import _ELECTRODE_CH_TYPES, _FNIRS_CH_TYPES_SPLIT from mne.utils import ( - _TempDir, - catch_logging, + _import_h5io_funcs, _raw_annot, _stamp_to_dt, - object_diff, + _TempDir, + catch_logging, check_version, - _import_h5io_funcs, + object_diff, ) -from mne._fiff.proj import Projection -from mne._fiff.utils import _mult_cal_one -from mne._fiff.constants import FIFF raw_fname = op.join( op.dirname(__file__), "..", "..", "io", "tests", "data", "test_raw.fif" diff --git a/mne/io/tests/test_read_raw.py b/mne/io/tests/test_read_raw.py index db9244dee5a..4f44b9c7473 100644 --- a/mne/io/tests/test_read_raw.py +++ b/mne/io/tests/test_read_raw.py @@ -11,8 +11,7 @@ from mne.datasets import testing from mne.io import read_raw -from mne.io._read_raw import split_name_ext, _get_readers - +from mne.io._read_raw import _get_readers, split_name_ext base = Path(__file__).parent.parent test_base = Path(testing.data_path(download=False)) diff --git a/mne/label.py b/mne/label.py index 19eb21ffdc7..58db1379068 100644 --- a/mne/label.py +++ b/mne/label.py @@ -4,12 +4,12 @@ # # License: BSD-3-Clause -from collections import defaultdict -from colorsys import hsv_to_rgb, rgb_to_hsv import copy as cp import os import os.path as op import re +from collections import defaultdict +from colorsys import hsv_to_rgb, rgb_to_hsv import numpy as np from scipy import linalg, sparse @@ -25,30 +25,30 @@ spatial_src_adjacency, ) from .source_space._source_space import ( - add_source_space_distances, SourceSpaces, _ensure_src, + add_source_space_distances, ) from .stats.cluster_level import _find_clusters, _get_components from .surface import ( + _mesh_borders, complete_surface_info, - read_surface, fast_cross_3d, - _mesh_borders, - mesh_edges, mesh_dist, + mesh_edges, + read_surface, ) from .utils import ( - get_subjects_dir, + _check_fname, + _check_option, _check_subject, + _validate_type, + check_random_state, + fill_doc, + get_subjects_dir, logger, verbose, warn, - check_random_state, - _validate_type, - fill_doc, - _check_option, - _check_fname, ) diff --git a/mne/minimum_norm/__init__.pyi b/mne/minimum_norm/__init__.pyi index bf8e3fc90ca..fb800479383 100644 --- a/mne/minimum_norm/__init__.pyi +++ b/mne/minimum_norm/__init__.pyi @@ -22,29 +22,29 @@ __all__ = [ "write_inverse_operator", ] from .inverse import ( + INVERSE_METHODS, InverseOperator, - read_inverse_operator, apply_inverse, - apply_inverse_raw, - make_inverse_operator, + apply_inverse_cov, apply_inverse_epochs, + apply_inverse_raw, apply_inverse_tfr_epochs, - write_inverse_operator, compute_rank_inverse, - prepare_inverse_operator, estimate_snr, - apply_inverse_cov, - INVERSE_METHODS, -) -from .time_frequency import ( - source_band_induced_power, - source_induced_power, - compute_source_psd, - compute_source_psd_epochs, + make_inverse_operator, + prepare_inverse_operator, + read_inverse_operator, + write_inverse_operator, ) from .resolution_matrix import ( - make_inverse_resolution_matrix, - get_point_spread, get_cross_talk, + get_point_spread, + make_inverse_resolution_matrix, ) from .spatial_resolution import resolution_metrics +from .time_frequency import ( + compute_source_psd, + compute_source_psd_epochs, + source_band_induced_power, + source_induced_power, +) diff --git a/mne/minimum_norm/_eloreta.py b/mne/minimum_norm/_eloreta.py index ec534503f79..0e497536825 100644 --- a/mne/minimum_norm/_eloreta.py +++ b/mne/minimum_norm/_eloreta.py @@ -3,12 +3,12 @@ # License: BSD-3-Clause from functools import partial + import numpy as np from ..defaults import _handle_default from ..fixes import _safe_svd -from ..utils import warn, logger, sqrtm_sym, eigh - +from ..utils import eigh, logger, sqrtm_sym, warn # For the reference implementation of eLORETA (force_equal=False), # 0 < loose <= 1 all produce solutions that are (more or less) @@ -26,7 +26,7 @@ def _compute_eloreta(inv, lambda2, options): """Compute the eLORETA solution.""" - from .inverse import compute_rank_inverse, _compute_reginv + from .inverse import _compute_reginv, compute_rank_inverse options = _handle_default("eloreta_options", options) eps, max_iter = options["eps"], options["max_iter"] diff --git a/mne/minimum_norm/inverse.py b/mne/minimum_norm/inverse.py index 7b23d137858..b8f1cdc11bd 100644 --- a/mne/minimum_norm/inverse.py +++ b/mne/minimum_norm/inverse.py @@ -11,77 +11,75 @@ from scipy import linalg from scipy.stats import chi2 -from ._eloreta import _compute_eloreta -from ..fixes import _safe_svd -from ..io import BaseRaw from .._fiff.constants import FIFF -from .._fiff.open import fiff_open -from .._fiff.tag import find_tag from .._fiff.matrix import ( _read_named_matrix, _transpose_named_matrix, write_named_matrix, ) +from .._fiff.open import fiff_open +from .._fiff.pick import channel_type, pick_channels, pick_info, pick_types from .._fiff.proj import ( + _electrode_types, + _needs_eeg_average_ref_proj, _read_proj, - make_projector, _write_proj, - _needs_eeg_average_ref_proj, - _electrode_types, + make_projector, ) +from .._fiff.tag import find_tag from .._fiff.tree import dir_tree_find from .._fiff.write import ( - write_int, - write_float_matrix, + end_block, start_and_end_file, start_block, - end_block, - write_float, write_coord_trans, + write_float, + write_float_matrix, + write_int, write_string, ) - -from .._fiff.pick import channel_type, pick_info, pick_types, pick_channels -from ..cov import compute_whitener, _read_cov, _write_cov, Covariance, prepare_noise_cov +from ..cov import Covariance, _read_cov, _write_cov, compute_whitener, prepare_noise_cov from ..epochs import BaseEpochs, EpochsArray -from ..evoked import EvokedArray, Evoked +from ..evoked import Evoked, EvokedArray +from ..fixes import _safe_svd from ..forward import ( - compute_depth_prior, _read_forward_meas_info, - is_fixed_orient, + _select_orient_forward, + compute_depth_prior, compute_orient_prior, convert_forward_solution, - _select_orient_forward, + is_fixed_orient, ) -from ..forward.forward import write_forward_meas_info, _triage_loose +from ..forward.forward import _triage_loose, write_forward_meas_info from ..html_templates import _get_html_template +from ..io import BaseRaw +from ..source_estimate import _get_src_type, _make_stc from ..source_space._source_space import ( - _read_source_spaces_from_tree, _get_src_nn, - find_source_space_hemi, _get_vertno, + _read_source_spaces_from_tree, _write_source_spaces_to_fid, + find_source_space_hemi, label_src_vertno_sel, ) from ..surface import _normal_orth -from ..transforms import _ensure_trans, transform_surface_to from ..time_frequency.tfr import _check_tfr_complex -from ..source_estimate import _make_stc, _get_src_type +from ..transforms import _ensure_trans, transform_surface_to from ..utils import ( - check_fname, - logger, - verbose, - warn, - _validate_type, _check_compensation_grade, - _check_option, - repr_html, _check_depth, - _check_src_normal, _check_fname, + _check_option, + _check_src_normal, + _validate_type, _verbose_safe_false, + check_fname, + logger, + repr_html, + verbose, + warn, ) - +from ._eloreta import _compute_eloreta INVERSE_METHODS = ("MNE", "dSPM", "sLORETA", "eLORETA") diff --git a/mne/minimum_norm/resolution_matrix.py b/mne/minimum_norm/resolution_matrix.py index a01ece26ccb..2d419c11484 100644 --- a/mne/minimum_norm/resolution_matrix.py +++ b/mne/minimum_norm/resolution_matrix.py @@ -8,15 +8,15 @@ from mne.minimum_norm.inverse import InverseOperator -from .inverse import apply_inverse -from ..evoked import EvokedArray from .._fiff.constants import FIFF from .._fiff.pick import pick_channels_forward -from ..utils import logger, verbose, _validate_type -from ..forward.forward import convert_forward_solution, Forward -from ..source_estimate import _prepare_label_extraction, _make_stc, _get_src_type -from ..source_space._source_space import SourceSpaces, _get_vertno +from ..evoked import EvokedArray +from ..forward.forward import Forward, convert_forward_solution from ..label import Label +from ..source_estimate import _get_src_type, _make_stc, _prepare_label_extraction +from ..source_space._source_space import SourceSpaces, _get_vertno +from ..utils import _validate_type, logger, verbose +from .inverse import apply_inverse @verbose diff --git a/mne/minimum_norm/spatial_resolution.py b/mne/minimum_norm/spatial_resolution.py index b075529120d..b72e3cebdfd 100644 --- a/mne/minimum_norm/spatial_resolution.py +++ b/mne/minimum_norm/spatial_resolution.py @@ -9,7 +9,7 @@ import numpy as np from ..source_estimate import SourceEstimate -from ..utils import logger, verbose, _check_option +from ..utils import _check_option, logger, verbose @verbose diff --git a/mne/minimum_norm/tests/test_inverse.py b/mne/minimum_norm/tests/test_inverse.py index 0bfb60fe0b1..bf9537306e1 100644 --- a/mne/minimum_norm/tests/test_inverse.py +++ b/mne/minimum_norm/tests/test_inverse.py @@ -1,61 +1,60 @@ +import copy import re from pathlib import Path import numpy as np +import pytest from numpy.testing import ( - assert_array_almost_equal, - assert_equal, assert_allclose, + assert_array_almost_equal, assert_array_equal, assert_array_less, + assert_equal, ) from scipy import sparse -import pytest -import copy - import mne -from mne.datasets import testing -from mne.label import read_label, label_sign_flip -from mne.event import read_events -from mne.epochs import Epochs, EpochsArray, make_fixed_length_epochs -from mne.forward import restrict_forward_to_stc, apply_forward, is_fixed_orient -from mne.source_estimate import read_source_estimate, VolSourceEstimate -from mne.source_space._source_space import _get_src_nn -from mne.surface import _normal_orth from mne import ( - read_cov, - read_forward_solution, - read_evokeds, - pick_types, - pick_types_forward, - make_forward_solution, - EvokedArray, - convert_forward_solution, Covariance, - combine_evoked, + EvokedArray, SourceEstimate, - make_sphere_model, + combine_evoked, + compute_raw_covariance, + convert_forward_solution, make_ad_hoc_cov, + make_forward_solution, + make_sphere_model, pick_channels_forward, - compute_raw_covariance, + pick_types, + pick_types_forward, + read_cov, + read_evokeds, + read_forward_solution, ) -from mne.io import read_raw_fif, read_info +from mne.datasets import testing +from mne.epochs import Epochs, EpochsArray, make_fixed_length_epochs +from mne.event import read_events +from mne.forward import apply_forward, is_fixed_orient, restrict_forward_to_stc +from mne.io import read_info, read_raw_fif +from mne.label import label_sign_flip, read_label from mne.minimum_norm import ( + INVERSE_METHODS, apply_inverse, - read_inverse_operator, - apply_inverse_raw, + apply_inverse_cov, apply_inverse_epochs, + apply_inverse_raw, apply_inverse_tfr_epochs, + compute_rank_inverse, make_inverse_operator, - apply_inverse_cov, - write_inverse_operator, prepare_inverse_operator, - compute_rank_inverse, - INVERSE_METHODS, + read_inverse_operator, + write_inverse_operator, ) +from mne.source_estimate import VolSourceEstimate, read_source_estimate +from mne.source_space._source_space import _get_src_nn +from mne.surface import _normal_orth from mne.time_frequency import EpochsTFR -from mne.utils import catch_logging, _record_warnings +from mne.utils import _record_warnings, catch_logging test_path = testing.data_path(download=False) s_path = test_path / "MEG" / "sample" diff --git a/mne/minimum_norm/tests/test_resolution_matrix.py b/mne/minimum_norm/tests/test_resolution_matrix.py index f976a59ec8e..6b2d56fd522 100644 --- a/mne/minimum_norm/tests/test_resolution_matrix.py +++ b/mne/minimum_norm/tests/test_resolution_matrix.py @@ -5,17 +5,18 @@ # License: BSD-3-Clause from contextlib import nullcontext + import numpy as np -from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_allclose import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal import mne from mne.datasets import testing from mne.minimum_norm.resolution_matrix import ( - make_inverse_resolution_matrix, + _vertices_for_get_psf_ctf, get_cross_talk, get_point_spread, - _vertices_for_get_psf_ctf, + make_inverse_resolution_matrix, ) data_path = testing.data_path(download=False) diff --git a/mne/minimum_norm/tests/test_resolution_metrics.py b/mne/minimum_norm/tests/test_resolution_metrics.py index 700b9243ba0..72afd2eb406 100644 --- a/mne/minimum_norm/tests/test_resolution_metrics.py +++ b/mne/minimum_norm/tests/test_resolution_metrics.py @@ -12,14 +12,14 @@ import numpy as np import pytest -from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_ +from numpy.testing import assert_, assert_array_almost_equal, assert_array_equal import mne from mne.datasets import testing from mne.minimum_norm.resolution_matrix import make_inverse_resolution_matrix from mne.minimum_norm.spatial_resolution import ( - resolution_metrics, _rectify_resolution_matrix, + resolution_metrics, ) data_path = testing.data_path(download=False) diff --git a/mne/minimum_norm/tests/test_snr.py b/mne/minimum_norm/tests/test_snr.py index bfd4d1ed001..92d8132dcce 100644 --- a/mne/minimum_norm/tests/test_snr.py +++ b/mne/minimum_norm/tests/test_snr.py @@ -5,13 +5,13 @@ import os from os import path as op + import numpy as np from numpy.testing import assert_allclose from mne import read_evokeds from mne.datasets import testing -from mne.minimum_norm import read_inverse_operator, estimate_snr - +from mne.minimum_norm import estimate_snr, read_inverse_operator from mne.utils import requires_mne, run_subprocess s_path = op.join(testing.data_path(download=False), "MEG", "sample") diff --git a/mne/minimum_norm/tests/test_time_frequency.py b/mne/minimum_norm/tests/test_time_frequency.py index 82c73d6c575..e581b4ae694 100644 --- a/mne/minimum_norm/tests/test_time_frequency.py +++ b/mne/minimum_norm/tests/test_time_frequency.py @@ -1,26 +1,24 @@ import numpy as np -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose +from mne import Epochs, find_events, pick_types +from mne._fiff.constants import FIFF from mne.datasets import testing -from mne import find_events, Epochs, pick_types from mne.io import read_raw_fif -from mne._fiff.constants import FIFF from mne.label import read_label from mne.minimum_norm import ( - read_inverse_operator, + INVERSE_METHODS, apply_inverse_epochs, prepare_inverse_operator, - INVERSE_METHODS, + read_inverse_operator, ) from mne.minimum_norm.time_frequency import ( - source_band_induced_power, - source_induced_power, compute_source_psd, compute_source_psd_epochs, + source_band_induced_power, + source_induced_power, ) - - from mne.time_frequency.multitaper import psd_array_multitaper data_path = testing.data_path(download=False) diff --git a/mne/minimum_norm/time_frequency.py b/mne/minimum_norm/time_frequency.py index aee85601d16..3c037c67085 100644 --- a/mne/minimum_norm/time_frequency.py +++ b/mne/minimum_norm/time_frequency.py @@ -5,32 +5,32 @@ import numpy as np +from .._fiff.constants import FIFF +from .._fiff.pick import pick_info +from ..baseline import _log_rescale, rescale from ..epochs import Epochs from ..event import make_fixed_length_events from ..evoked import EvokedArray from ..fixes import _safe_svd -from .._fiff.constants import FIFF -from .._fiff.pick import pick_info +from ..parallel import parallel_func from ..source_estimate import _make_stc -from ..time_frequency.tfr import cwt, morlet from ..time_frequency.multitaper import ( - _psd_from_mt, _compute_mt_params, - _psd_from_mt_adaptive, _mt_spectra, + _psd_from_mt, + _psd_from_mt_adaptive, ) -from ..baseline import rescale, _log_rescale +from ..time_frequency.tfr import cwt, morlet +from ..utils import ProgressBar, _check_option, logger, verbose from .inverse import ( - combine_xyz, - _check_or_prepare, - _assemble_kernel, - _pick_channels_inverse_operator, INVERSE_METHODS, + _assemble_kernel, + _check_or_prepare, _check_ori, + _pick_channels_inverse_operator, _subject_from_inverse, + combine_xyz, ) -from ..parallel import parallel_func -from ..utils import logger, verbose, ProgressBar, _check_option def _prepare_source_params( diff --git a/mne/morph.py b/mne/morph.py index e74ed3a8f77..edfa6643c9c 100644 --- a/mne/morph.py +++ b/mne/morph.py @@ -15,31 +15,33 @@ from .morph_map import read_morph_map from .parallel import parallel_func from .source_estimate import ( + _BaseSourceEstimate, _BaseSurfaceSourceEstimate, _BaseVolSourceEstimate, - _BaseSourceEstimate, _get_ico_tris, ) from .source_space._source_space import SourceSpaces, _ensure_src, _grid_interp -from .surface import mesh_edges, read_surface, _compute_nearest +from .surface import _compute_nearest, mesh_edges, read_surface from .utils import ( - logger, - verbose, - check_version, - get_subjects_dir, - warn as warn_, - fill_doc, - _check_option, - _validate_type, BunchConst, + ProgressBar, _check_fname, - warn, + _check_option, _custom_lru_cache, _ensure_int, - ProgressBar, - use_log_level, - _import_nibabel, _import_h5io_funcs, + _import_nibabel, + _validate_type, + check_version, + fill_doc, + get_subjects_dir, + logger, + use_log_level, + verbose, + warn, +) +from .utils import ( + warn as warn_, ) @@ -1026,10 +1028,12 @@ def _get_src_data(src, mri_resolution=True): def _triage_output(output): _check_option("output", output, ["nifti", "nifti1", "nifti2"]) if output in ("nifti", "nifti1"): - from nibabel import Nifti1Image as NiftiImage, Nifti1Header as NiftiHeader + from nibabel import Nifti1Header as NiftiHeader + from nibabel import Nifti1Image as NiftiImage else: assert output == "nifti2" - from nibabel import Nifti2Image as NiftiImage, Nifti2Header as NiftiHeader + from nibabel import Nifti2Header as NiftiHeader + from nibabel import Nifti2Image as NiftiImage return NiftiImage, NiftiHeader @@ -1140,9 +1144,10 @@ def _interpolate_data(stc, morph, mri_resolution, mri_space, output): def _compute_morph_sdr(mri_from, mri_to, niter_affine, niter_sdr, zooms): """Get a matrix that morphs data from one subject to another.""" - from .transforms import _compute_volume_registration from dipy.align.imaffine import AffineMap + from .transforms import _compute_volume_registration + pipeline = "all" if niter_sdr else "affines" niter = dict( translation=niter_affine, diff --git a/mne/morph_map.py b/mne/morph_map.py index 83f68715357..b1153123174 100644 --- a/mne/morph_map.py +++ b/mne/morph_map.py @@ -18,22 +18,22 @@ from ._fiff.tag import find_tag from ._fiff.tree import dir_tree_find from ._fiff.write import ( - start_block, end_block, - write_string, start_and_end_file, + start_block, write_float_sparse_rcs, write_int, + write_string, ) from .surface import ( - read_surface, - _triangle_neighbors, _compute_nearest, - _normalize_vectors, - _get_tri_supp_geom, _find_nearest_tri_pts, + _get_tri_supp_geom, + _normalize_vectors, + _triangle_neighbors, + read_surface, ) -from .utils import get_subjects_dir, warn, logger, verbose +from .utils import get_subjects_dir, logger, verbose, warn @verbose diff --git a/mne/parallel.py b/mne/parallel.py index 7d314f05718..2598d93ae92 100644 --- a/mne/parallel.py +++ b/mne/parallel.py @@ -9,13 +9,13 @@ import os from .utils import ( - logger, - verbose, - warn, ProgressBar, - _validate_type, _ensure_int, + _validate_type, get_config, + logger, + verbose, + warn, ) diff --git a/mne/preprocessing/__init__.pyi b/mne/preprocessing/__init__.pyi index bd4dd7f44c4..7d0741ab30a 100644 --- a/mne/preprocessing/__init__.pyi +++ b/mne/preprocessing/__init__.pyi @@ -47,45 +47,45 @@ __all__ = [ ] from . import eyetracking, ieeg, nirs from ._annotate_amplitude import annotate_amplitude -from .maxfilter import apply_maxfilter -from .ssp import compute_proj_ecg, compute_proj_eog -from .eog import find_eog_events, create_eog_epochs -from .ecg import find_ecg_events, create_ecg_epochs +from ._annotate_nan import annotate_nan +from ._csd import compute_bridged_electrodes, compute_current_source_density +from ._css import cortical_signal_suppression +from ._fine_cal import ( + compute_fine_calibration, + read_fine_calibration, + write_fine_calibration, +) +from ._peak_finder import peak_finder +from ._regress import EOGRegression, read_eog_regression, regress_artifact +from .artifact_detection import ( + annotate_break, + annotate_movement, + annotate_muscle_zscore, + compute_average_dev_head_t, +) +from .ecg import create_ecg_epochs, find_ecg_events +from .eog import create_eog_epochs, find_eog_events +from .hfc import compute_proj_hfc from .ica import ( ICA, - ica_find_eog_events, - ica_find_ecg_events, + corrmap, get_score_funcs, + ica_find_ecg_events, + ica_find_eog_events, read_ica, - corrmap, read_ica_eeglab, ) -from .otp import oversampled_temporal_projection -from ._peak_finder import peak_finder from .infomax_ import infomax -from .stim import fix_stim_artifact +from .interpolate import equalize_bads, interpolate_bridged_electrodes +from .maxfilter import apply_maxfilter from .maxwell import ( - maxwell_filter, - find_bad_channels_maxwell, compute_maxwell_basis, + find_bad_channels_maxwell, + maxwell_filter, maxwell_filter_prepare_emptyroom, ) +from .otp import oversampled_temporal_projection from .realign import realign_raw +from .ssp import compute_proj_ecg, compute_proj_eog +from .stim import fix_stim_artifact from .xdawn import Xdawn -from ._csd import compute_current_source_density, compute_bridged_electrodes -from .artifact_detection import ( - annotate_movement, - compute_average_dev_head_t, - annotate_muscle_zscore, - annotate_break, -) -from ._regress import regress_artifact, EOGRegression, read_eog_regression -from ._fine_cal import ( - compute_fine_calibration, - read_fine_calibration, - write_fine_calibration, -) -from ._annotate_nan import annotate_nan -from .interpolate import equalize_bads, interpolate_bridged_electrodes -from ._css import cortical_signal_suppression -from .hfc import compute_proj_hfc diff --git a/mne/preprocessing/_annotate_amplitude.py b/mne/preprocessing/_annotate_amplitude.py index 1a0a7053cc8..85c796258a2 100644 --- a/mne/preprocessing/_annotate_amplitude.py +++ b/mne/preprocessing/_annotate_amplitude.py @@ -4,15 +4,15 @@ import numpy as np -from ..fixes import jit -from ..io import BaseRaw +from .._fiff.pick import _picks_by_type, _picks_to_idx from ..annotations import ( Annotations, _adjust_onset_meas_date, _annotations_starts_stops, ) -from .._fiff.pick import _picks_to_idx, _picks_by_type -from ..utils import _validate_type, verbose, logger, _mask_to_onsets_offsets +from ..fixes import jit +from ..io import BaseRaw +from ..utils import _mask_to_onsets_offsets, _validate_type, logger, verbose @verbose diff --git a/mne/preprocessing/_csd.py b/mne/preprocessing/_csd.py index 022c94e8130..27f1481fcc0 100644 --- a/mne/preprocessing/_csd.py +++ b/mne/preprocessing/_csd.py @@ -13,17 +13,17 @@ # permission from authors of original GPL code import numpy as np -from scipy.stats import gaussian_kde from scipy.optimize import minimize_scalar +from scipy.stats import gaussian_kde -from ..utils import _validate_type, _ensure_int, _check_preload, verbose, logger -from ..io import BaseRaw from .._fiff.constants import FIFF from .._fiff.pick import pick_types -from ..epochs import BaseEpochs, make_fixed_length_epochs -from ..evoked import Evoked from ..bem import fit_sphere_to_headshape from ..channels.interpolation import _calc_g, _calc_h +from ..epochs import BaseEpochs, make_fixed_length_epochs +from ..evoked import Evoked +from ..io import BaseRaw +from ..utils import _check_preload, _ensure_int, _validate_type, logger, verbose def _prepare_G(G, lambda2): diff --git a/mne/preprocessing/_css.py b/mne/preprocessing/_css.py index a930d8f2fd2..9132d578331 100644 --- a/mne/preprocessing/_css.py +++ b/mne/preprocessing/_css.py @@ -2,9 +2,9 @@ import numpy as np -from ..evoked import Evoked from .._fiff.pick import _picks_to_idx -from ..utils import verbose, _validate_type, _ensure_int +from ..evoked import Evoked +from ..utils import _ensure_int, _validate_type, verbose def _temp_proj(ref_2, ref_1, raw_data, n_proj=6): diff --git a/mne/preprocessing/_fine_cal.py b/mne/preprocessing/_fine_cal.py index a3a124c60f9..1b89b758e9a 100644 --- a/mne/preprocessing/_fine_cal.py +++ b/mne/preprocessing/_fine_cal.py @@ -8,30 +8,29 @@ import numpy as np from scipy.optimize import fmin_cobyla +from .._fiff.pick import pick_info, pick_types +from .._fiff.tag import _coil_trans_to_loc, _loc_to_coil_trans from ..bem import _check_origin from ..io import BaseRaw -from .._fiff.pick import pick_info, pick_types -from .._fiff.tag import _loc_to_coil_trans, _coil_trans_to_loc from ..transforms import _find_vector_rotation from ..utils import ( - logger, - verbose, - check_fname, _check_fname, - _pl, - _ensure_int, _check_option, - _validate_type, + _ensure_int, + _pl, _reg_pinv, + _validate_type, + check_fname, + logger, + verbose, ) - from .maxwell import ( _col_norm_pinv, - _trans_sss_basis, - _prep_mf_coils, _get_grad_point_coilsets, - _read_cross_talk, _prep_fine_cal, + _prep_mf_coils, + _read_cross_talk, + _trans_sss_basis, ) diff --git a/mne/preprocessing/_peak_finder.py b/mne/preprocessing/_peak_finder.py index a9137d2bb4b..ec43aeb2ff4 100644 --- a/mne/preprocessing/_peak_finder.py +++ b/mne/preprocessing/_peak_finder.py @@ -1,6 +1,6 @@ import numpy as np -from ..utils import logger, verbose, _pl +from ..utils import _pl, logger, verbose @verbose diff --git a/mne/preprocessing/_regress.py b/mne/preprocessing/_regress.py index 4174736e68b..f748f7020be 100644 --- a/mne/preprocessing/_regress.py +++ b/mne/preprocessing/_regress.py @@ -5,22 +5,22 @@ import numpy as np -from ..defaults import _INTERPOLATION_DEFAULT, _EXTRAPOLATE_DEFAULT, _BORDER_DEFAULT +from .._fiff.pick import _picks_to_idx +from ..defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT from ..epochs import BaseEpochs from ..evoked import Evoked -from .._fiff.pick import _picks_to_idx from ..io import BaseRaw +from ..minimum_norm.inverse import _needs_eeg_average_ref_proj from ..utils import ( + _check_fname, + _check_option, _check_preload, + _import_h5io_funcs, _validate_type, - _check_option, - verbose, - fill_doc, copy_function_doc_to_method_doc, - _check_fname, - _import_h5io_funcs, + fill_doc, + verbose, ) -from ..minimum_norm.inverse import _needs_eeg_average_ref_proj from ..viz import plot_regression_weights diff --git a/mne/preprocessing/artifact_detection.py b/mne/preprocessing/artifact_detection.py index 12f4a1e1538..2a34401734a 100644 --- a/mne/preprocessing/artifact_detection.py +++ b/mne/preprocessing/artifact_detection.py @@ -4,27 +4,27 @@ import numpy as np +from scipy.ndimage import distance_transform_edt, label from scipy.signal import find_peaks from scipy.stats import zscore -from scipy.ndimage import distance_transform_edt, label -from ..io.base import BaseRaw from ..annotations import ( Annotations, + _adjust_onset_meas_date, _annotations_starts_stops, annotations_from_events, - _adjust_onset_meas_date, ) +from ..filter import filter_data +from ..io.base import BaseRaw from ..transforms import ( - quat_to_rot, - _average_quats, + Transform, _angle_between_quats, - apply_trans, + _average_quats, _quat_to_affine, + apply_trans, + quat_to_rot, ) -from ..filter import filter_data -from ..transforms import Transform -from ..utils import _mask_to_onsets_offsets, logger, verbose, _validate_type, _pl +from ..utils import _mask_to_onsets_offsets, _pl, _validate_type, logger, verbose @verbose diff --git a/mne/preprocessing/ecg.py b/mne/preprocessing/ecg.py index 388fe9e416d..4ba1a4c0d1d 100644 --- a/mne/preprocessing/ecg.py +++ b/mne/preprocessing/ecg.py @@ -6,14 +6,14 @@ import numpy as np +from .._fiff.meas_info import create_info +from .._fiff.pick import _picks_to_idx, pick_channels, pick_types from ..annotations import _annotations_starts_stops -from ..utils import logger, verbose, sum_squared, warn, int_like +from ..epochs import BaseEpochs, Epochs +from ..evoked import Evoked from ..filter import filter_data -from ..epochs import Epochs, BaseEpochs from ..io import BaseRaw, RawArray -from ..evoked import Evoked -from .._fiff.meas_info import create_info -from .._fiff.pick import _picks_to_idx, pick_types, pick_channels +from ..utils import int_like, logger, sum_squared, verbose, warn @verbose diff --git a/mne/preprocessing/eog.py b/mne/preprocessing/eog.py index abd10c5ef88..a169ada87f3 100644 --- a/mne/preprocessing/eog.py +++ b/mne/preprocessing/eog.py @@ -6,11 +6,11 @@ import numpy as np -from ._peak_finder import peak_finder -from .._fiff.pick import pick_types, pick_channels -from ..utils import logger, verbose, _pl, _validate_type -from ..filter import filter_data +from .._fiff.pick import pick_channels, pick_types from ..epochs import Epochs +from ..filter import filter_data +from ..utils import _pl, _validate_type, logger, verbose +from ._peak_finder import peak_finder @verbose diff --git a/mne/preprocessing/eyetracking/_pupillometry.py b/mne/preprocessing/eyetracking/_pupillometry.py index 805b15de41a..859e413ce6a 100644 --- a/mne/preprocessing/eyetracking/_pupillometry.py +++ b/mne/preprocessing/eyetracking/_pupillometry.py @@ -4,9 +4,9 @@ import numpy as np -from ...io import BaseRaw from ..._fiff.constants import FIFF -from ...utils import logger, _check_preload, _validate_type, warn +from ...io import BaseRaw +from ...utils import _check_preload, _validate_type, logger, warn def interpolate_blinks(raw, buffer=0.05, match="BAD_blink", interpolate_gaze=False): diff --git a/mne/preprocessing/eyetracking/tests/test_calibration.py b/mne/preprocessing/eyetracking/tests/test_calibration.py index 55caad14cda..26320688ed5 100644 --- a/mne/preprocessing/eyetracking/tests/test_calibration.py +++ b/mne/preprocessing/eyetracking/tests/test_calibration.py @@ -1,8 +1,8 @@ -import pytest - import numpy as np +import pytest from mne.datasets.testing import data_path, requires_testing_data + from ..calibration import Calibration, read_eyelink_calibration # for test_read_eylink_calibration diff --git a/mne/preprocessing/eyetracking/tests/test_pupillometry.py b/mne/preprocessing/eyetracking/tests/test_pupillometry.py index 00d3518aa97..5bdd4866a53 100644 --- a/mne/preprocessing/eyetracking/tests/test_pupillometry.py +++ b/mne/preprocessing/eyetracking/tests/test_pupillometry.py @@ -6,7 +6,7 @@ from mne import create_info from mne.datasets.testing import data_path, requires_testing_data -from mne.io import read_raw_eyelink, RawArray +from mne.io import RawArray, read_raw_eyelink from mne.preprocessing.eyetracking import interpolate_blinks fname = data_path(download=False) / "eyetrack" / "test_eyelink.asc" diff --git a/mne/preprocessing/hfc.py b/mne/preprocessing/hfc.py index 25084aedc69..71870330dcc 100644 --- a/mne/preprocessing/hfc.py +++ b/mne/preprocessing/hfc.py @@ -4,10 +4,10 @@ import numpy as np -from .maxwell import _prep_mf_coils, _sss_basis from .._fiff.pick import _picks_to_idx, pick_info from .._fiff.proj import Projection from ..utils import verbose +from .maxwell import _prep_mf_coils, _sss_basis @verbose diff --git a/mne/preprocessing/ica.py b/mne/preprocessing/ica.py index fdb7d920267..c0139427a4a 100644 --- a/mne/preprocessing/ica.py +++ b/mne/preprocessing/ica.py @@ -5,102 +5,99 @@ # # License: BSD-3-Clause -from inspect import isfunction, signature, Parameter +import json +import math +import warnings from collections import namedtuple from collections.abc import Sequence from copy import deepcopy +from dataclasses import dataclass, is_dataclass +from inspect import Parameter, isfunction, signature from numbers import Integral from time import time -from dataclasses import dataclass, is_dataclass -from typing import Optional, List, Literal -import warnings - -import math -import json +from typing import List, Literal, Optional import numpy as np from scipy import linalg, stats from scipy.spatial import distance from scipy.special import expit -from .ecg import qrs_detector, _get_ecg_channel_index, _make_ecg, create_ecg_epochs -from .eog import _find_eog_events, _get_eog_channel_index -from ..html_templates import _get_html_template -from .infomax_ import infomax - -from ..cov import compute_whitener, Covariance -from ..evoked import Evoked -from ..defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT +from .._fiff.constants import FIFF +from .._fiff.meas_info import ContainsMixin, read_meas_info, write_meas_info +from .._fiff.open import fiff_open from .._fiff.pick import ( - pick_types, + _DATA_CH_TYPES_SPLIT, + _contains_ch_type, + _picks_by_type, + _picks_to_idx, pick_channels, + pick_channels_regexp, pick_info, - _picks_to_idx, - _DATA_CH_TYPES_SPLIT, + pick_types, ) from .._fiff.proj import make_projector +from .._fiff.tag import read_tag +from .._fiff.tree import dir_tree_find from .._fiff.write import ( + end_block, + start_and_end_file, + start_block, write_double_matrix, - write_string, - write_name_list, + write_id, write_int, - start_block, - end_block, -) -from .._fiff.tree import dir_tree_find -from .._fiff.open import fiff_open -from .._fiff.tag import read_tag -from .._fiff.meas_info import write_meas_info, read_meas_info, ContainsMixin -from .._fiff.constants import FIFF -from .._fiff.write import start_and_end_file, write_id -from .._fiff.pick import pick_channels_regexp, _picks_by_type, _contains_ch_type -from ..io import BaseRaw -from ..io.eeglab.eeglab import _get_info, _check_load_mat - -from ..epochs import BaseEpochs -from ..viz import ( - plot_ica_components, - plot_ica_scores, - plot_ica_sources, - plot_ica_overlay, + write_name_list, + write_string, ) -from ..viz.ica import plot_ica_properties -from ..viz.topomap import _plot_corrmap - from ..channels.layout import _find_topomap_coords +from ..cov import Covariance, compute_whitener +from ..defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT +from ..epochs import BaseEpochs +from ..evoked import Evoked +from ..filter import filter_data +from ..fixes import _safe_svd +from ..html_templates import _get_html_template +from ..io import BaseRaw +from ..io.eeglab.eeglab import _check_load_mat, _get_info from ..utils import ( - logger, - check_fname, + _PCA, + Bunch, + _check_all_same_channel_names, + _check_compensation_grade, _check_fname, - verbose, + _check_on_missing, + _check_option, + _check_preload, + _ensure_int, + _get_inst_data, + _on_missing, + _pl, _reject_data_segments, - check_random_state, + _require_version, _validate_type, + check_fname, + check_random_state, compute_corr, - _get_inst_data, - _ensure_int, - repr_html, copy_function_doc_to_method_doc, - _pl, - warn, - Bunch, - _check_preload, - _check_compensation_grade, fill_doc, - _check_option, - _PCA, int_like, - _require_version, - _check_all_same_channel_names, - _check_on_missing, - _on_missing, + logger, + repr_html, + verbose, + warn, ) - -from ..fixes import _safe_svd -from ..filter import filter_data +from ..viz import ( + plot_ica_components, + plot_ica_overlay, + plot_ica_scores, + plot_ica_sources, +) +from ..viz.ica import plot_ica_properties +from ..viz.topomap import _plot_corrmap from .bads import _find_outliers from .ctps_ import ctps - +from .ecg import _get_ecg_channel_index, _make_ecg, create_ecg_epochs, qrs_detector +from .eog import _find_eog_events, _get_eog_channel_index +from .infomax_ import infomax __all__ = ( "ICA", diff --git a/mne/preprocessing/ieeg/_projection.py b/mne/preprocessing/ieeg/_projection.py index 3df134e6a59..72292dd577d 100644 --- a/mne/preprocessing/ieeg/_projection.py +++ b/mne/preprocessing/ieeg/_projection.py @@ -3,20 +3,21 @@ # License: BSD-3-Clause from itertools import combinations + import numpy as np from scipy.spatial.distance import pdist, squareform -from ...channels import make_dig_montage from ..._fiff.pick import _picks_to_idx +from ...channels import make_dig_montage from ...surface import ( + _compute_nearest, _read_mri_surface, + _read_patch, fast_cross_3d, read_surface, - _read_patch, - _compute_nearest, ) -from ...transforms import apply_trans, invert_transform, _cart_to_sph, _ensure_trans -from ...utils import verbose, get_subjects_dir, _validate_type, _ensure_int +from ...transforms import _cart_to_sph, _ensure_trans, apply_trans, invert_transform +from ...utils import _ensure_int, _validate_type, get_subjects_dir, verbose @verbose diff --git a/mne/preprocessing/ieeg/_volume.py b/mne/preprocessing/ieeg/_volume.py index 9a35b802207..0e35e69de6d 100644 --- a/mne/preprocessing/ieeg/_volume.py +++ b/mne/preprocessing/ieeg/_volume.py @@ -6,8 +6,8 @@ from ...channels import DigMontage, make_dig_montage from ...surface import _voxel_neighbors -from ...transforms import apply_trans, _frame_to_str, Transform -from ...utils import verbose, warn, _pl, _validate_type, _require_version, _check_option +from ...transforms import Transform, _frame_to_str, apply_trans +from ...utils import _check_option, _pl, _require_version, _validate_type, verbose, warn @verbose @@ -35,9 +35,9 @@ def warp_montage(montage, moving, static, reg_affine, sdr_morph, verbose=None): _require_version("nibabel", "warp montage", "2.1.0") _require_version("dipy", "warping points using SDR", "1.6.0") + from dipy.align.imwarp import DiffeomorphicMap from nibabel import MGHImage from nibabel.spatialimages import SpatialImage - from dipy.align.imwarp import DiffeomorphicMap _validate_type(moving, SpatialImage, "moving") _validate_type(static, SpatialImage, "static") diff --git a/mne/preprocessing/ieeg/tests/test_projection.py b/mne/preprocessing/ieeg/tests/test_projection.py index 45e49e2ad7e..bd1ebffbc06 100644 --- a/mne/preprocessing/ieeg/tests/test_projection.py +++ b/mne/preprocessing/ieeg/tests/test_projection.py @@ -5,14 +5,15 @@ import os from shutil import copyfile + import numpy as np -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose import mne +from mne.datasets import testing from mne.preprocessing.ieeg import project_sensors_onto_brain from mne.preprocessing.ieeg._projection import _project_sensors_onto_inflated -from mne.datasets import testing from mne.transforms import _get_trans data_path = testing.data_path(download=False) diff --git a/mne/preprocessing/ieeg/tests/test_volume.py b/mne/preprocessing/ieeg/tests/test_volume.py index 5b264e2d023..d08df4ecd30 100644 --- a/mne/preprocessing/ieeg/tests/test_volume.py +++ b/mne/preprocessing/ieeg/tests/test_volume.py @@ -6,8 +6,8 @@ import numpy as np import pytest -from mne.coreg import get_mni_fiducials from mne.channels import make_dig_montage +from mne.coreg import get_mni_fiducials from mne.datasets import testing from mne.preprocessing.ieeg import make_montage_volume, warp_montage from mne.transforms import apply_trans, compute_volume_registration diff --git a/mne/preprocessing/infomax_.py b/mne/preprocessing/infomax_.py index f66b7a3df83..556a7b4e4ad 100644 --- a/mne/preprocessing/infomax_.py +++ b/mne/preprocessing/infomax_.py @@ -10,7 +10,7 @@ from scipy.special import expit from scipy.stats import kurtosis -from ..utils import logger, verbose, check_random_state, random_permutation +from ..utils import check_random_state, logger, random_permutation, verbose @verbose diff --git a/mne/preprocessing/interpolate.py b/mne/preprocessing/interpolate.py index 45cb1d439a7..830f0bfb57a 100644 --- a/mne/preprocessing/interpolate.py +++ b/mne/preprocessing/interpolate.py @@ -7,12 +7,12 @@ import numpy as np from scipy.sparse.csgraph import connected_components -from ..utils import _validate_type, _ensure_int -from ..io import BaseRaw, RawArray from .._fiff.meas_info import create_info from ..epochs import BaseEpochs, EpochsArray from ..evoked import Evoked, EvokedArray -from ..transforms import _sph_to_cart, _cart_to_sph +from ..io import BaseRaw, RawArray +from ..transforms import _cart_to_sph, _sph_to_cart +from ..utils import _ensure_int, _validate_type def equalize_bads(insts, interp_thresh=1.0, copy=True): diff --git a/mne/preprocessing/maxfilter.py b/mne/preprocessing/maxfilter.py index 886e3f13637..54fbaf532e2 100644 --- a/mne/preprocessing/maxfilter.py +++ b/mne/preprocessing/maxfilter.py @@ -8,7 +8,7 @@ from ..bem import fit_sphere_to_headshape from ..io import read_raw_fif -from ..utils import logger, verbose, warn, deprecated +from ..utils import deprecated, logger, verbose, warn def _mxwarn(msg): diff --git a/mne/preprocessing/maxwell.py b/mne/preprocessing/maxwell.py index 60af14dbf5a..37521b0abeb 100644 --- a/mne/preprocessing/maxwell.py +++ b/mne/preprocessing/maxwell.py @@ -16,51 +16,50 @@ from scipy.special import lpmv, sph_harm from .. import __version__ +from .._fiff.compensator import make_compensator +from .._fiff.constants import FIFF, FWD +from .._fiff.meas_info import Info, _simplify_info +from .._fiff.pick import pick_info, pick_types +from .._fiff.proc_history import _read_ctc +from .._fiff.proj import Projection +from .._fiff.tag import _coil_trans_to_loc, _loc_to_coil_trans +from .._fiff.write import DATE_NONE, _generate_meas_id from ..annotations import _annotations_starts_stops from ..bem import _check_origin +from ..channels.channels import _get_T1T2_mag_inds, fix_mag_coil_types +from ..fixes import _safe_svd, bincount +from ..forward import _concatenate_coils, _create_meg_coils, _prep_meg_channels +from ..io import BaseRaw, RawArray +from ..surface import _normalize_vectors from ..transforms import ( - _str_to_frame, - _get_trans, Transform, - apply_trans, - _find_vector_rotation, + _average_quats, _cart_to_sph, - _get_n_moments, - _sph_to_cart_partials, _deg_ord_idx, - _average_quats, + _find_vector_rotation, + _get_n_moments, + _get_trans, _sh_complex_to_real, - _sh_real_to_complex, _sh_negate, + _sh_real_to_complex, + _sph_to_cart_partials, + _str_to_frame, + apply_trans, quat_to_rot, rot_to_quat, ) -from ..forward import _concatenate_coils, _prep_meg_channels, _create_meg_coils -from ..surface import _normalize_vectors -from .._fiff.compensator import make_compensator -from .._fiff.constants import FIFF, FWD -from .._fiff.meas_info import _simplify_info, Info -from .._fiff.pick import pick_types, pick_info -from .._fiff.proj import Projection -from .._fiff.proc_history import _read_ctc -from .._fiff.write import _generate_meas_id, DATE_NONE -from .._fiff.tag import _loc_to_coil_trans, _coil_trans_to_loc -from ..io import BaseRaw, RawArray from ..utils import ( - verbose, - logger, - _clean_names, - warn, - _time_mask, - _pl, _check_option, + _clean_names, _ensure_int, + _pl, + _time_mask, _validate_type, + logger, use_log_level, + verbose, + warn, ) -from ..fixes import _safe_svd, bincount -from ..channels.channels import _get_T1T2_mag_inds, fix_mag_coil_types - # Note: MF uses single precision and some algorithms might use # truncated versions of constants (e.g., μ0), which could lead to small diff --git a/mne/preprocessing/nirs/_beer_lambert_law.py b/mne/preprocessing/nirs/_beer_lambert_law.py index 2d66216bf36..52ee73c13e8 100644 --- a/mne/preprocessing/nirs/_beer_lambert_law.py +++ b/mne/preprocessing/nirs/_beer_lambert_law.py @@ -11,10 +11,10 @@ from scipy.interpolate import interp1d from scipy.io import loadmat -from ...io import BaseRaw from ..._fiff.constants import FIFF +from ...io import BaseRaw from ...utils import _validate_type, warn -from ..nirs import source_detector_distances, _validate_nirs_info +from ..nirs import _validate_nirs_info, source_detector_distances def beer_lambert_law(raw, ppf=6.0): diff --git a/mne/preprocessing/nirs/_optical_density.py b/mne/preprocessing/nirs/_optical_density.py index 826a2d8d521..a296ff94dec 100644 --- a/mne/preprocessing/nirs/_optical_density.py +++ b/mne/preprocessing/nirs/_optical_density.py @@ -6,10 +6,10 @@ import numpy as np -from ..nirs import _validate_nirs_info -from ...io import BaseRaw from ..._fiff.constants import FIFF -from ...utils import _validate_type, warn, verbose +from ...io import BaseRaw +from ...utils import _validate_type, verbose, warn +from ..nirs import _validate_nirs_info @verbose diff --git a/mne/preprocessing/nirs/nirs.py b/mne/preprocessing/nirs/nirs.py index 36d73658216..2a1d821b4a6 100644 --- a/mne/preprocessing/nirs/nirs.py +++ b/mne/preprocessing/nirs/nirs.py @@ -5,11 +5,11 @@ # License: BSD-3-Clause import re + import numpy as np from ..._fiff.pick import _picks_to_idx, pick_types -from ...utils import fill_doc, _check_option, _validate_type - +from ...utils import _check_option, _validate_type, fill_doc # Standardized fNIRS channel name regexs _S_D_F_RE = re.compile(r"S(\d+)_D(\d+) (\d+\.?\d*)") diff --git a/mne/preprocessing/nirs/tests/test_beer_lambert_law.py b/mne/preprocessing/nirs/tests/test_beer_lambert_law.py index 440b06590dc..6fe7fd96803 100644 --- a/mne/preprocessing/nirs/tests/test_beer_lambert_law.py +++ b/mne/preprocessing/nirs/tests/test_beer_lambert_law.py @@ -4,14 +4,14 @@ # # License: BSD-3-Clause -import pytest import numpy as np +import pytest +from mne.datasets import testing from mne.datasets.testing import data_path -from mne.io import read_raw_nirx, BaseRaw, read_raw_fif -from mne.preprocessing.nirs import optical_density, beer_lambert_law +from mne.io import BaseRaw, read_raw_fif, read_raw_nirx +from mne.preprocessing.nirs import beer_lambert_law, optical_density from mne.utils import _validate_type -from mne.datasets import testing testing_path = data_path(download=False) fname_nirx_15_0 = testing_path / "NIRx" / "nirscout" / "nirx_15_0_recording" diff --git a/mne/preprocessing/nirs/tests/test_nirs.py b/mne/preprocessing/nirs/tests/test_nirs.py index 5536f6cf2f6..43850482c9c 100644 --- a/mne/preprocessing/nirs/tests/test_nirs.py +++ b/mne/preprocessing/nirs/tests/test_nirs.py @@ -4,30 +4,29 @@ # # License: BSD-3-Clause -import pytest import numpy as np -from numpy.testing import assert_array_equal, assert_array_almost_equal, assert_allclose +import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal from mne import create_info +from mne._fiff.constants import FIFF +from mne._fiff.pick import _picks_to_idx +from mne.datasets import testing from mne.datasets.testing import data_path -from mne.io import read_raw_nirx, RawArray +from mne.io import RawArray, read_raw_nirx from mne.preprocessing.nirs import ( - optical_density, - beer_lambert_law, - _fnirs_spread_bads, - _validate_nirs_info, - _check_channels_ordered, - tddr, - _channel_frequencies, _channel_chromophore, + _channel_frequencies, + _check_channels_ordered, _fnirs_optode_names, + _fnirs_spread_bads, _optode_position, + _validate_nirs_info, + beer_lambert_law, + optical_density, scalp_coupling_index, + tddr, ) -from mne._fiff.pick import _picks_to_idx - -from mne.datasets import testing -from mne._fiff.constants import FIFF fname_nirx_15_0 = ( data_path(download=False) / "NIRx" / "nirscout" / "nirx_15_0_recording" diff --git a/mne/preprocessing/nirs/tests/test_optical_density.py b/mne/preprocessing/nirs/tests/test_optical_density.py index 45f362c1111..b25fcc4a8cc 100644 --- a/mne/preprocessing/nirs/tests/test_optical_density.py +++ b/mne/preprocessing/nirs/tests/test_optical_density.py @@ -4,15 +4,15 @@ # # License: BSD-3-Clause -import pytest as pytest import numpy as np +import pytest as pytest from numpy.testing import assert_allclose +from mne.datasets import testing from mne.datasets.testing import data_path -from mne.io import read_raw_nirx, BaseRaw +from mne.io import BaseRaw, read_raw_nirx from mne.preprocessing.nirs import optical_density from mne.utils import _validate_type -from mne.datasets import testing fname_nirx = ( data_path(download=False) / "NIRx" / "nirscout" / "nirx_15_2_recording_w_short" diff --git a/mne/preprocessing/nirs/tests/test_scalp_coupling_index.py b/mne/preprocessing/nirs/tests/test_scalp_coupling_index.py index 3adda7002f4..240b50e8048 100644 --- a/mne/preprocessing/nirs/tests/test_scalp_coupling_index.py +++ b/mne/preprocessing/nirs/tests/test_scalp_coupling_index.py @@ -4,18 +4,18 @@ # # License: BSD-3-Clause -import pytest import numpy as np +import pytest from numpy.testing import assert_allclose, assert_array_less +from mne.datasets import testing from mne.datasets.testing import data_path from mne.io import read_raw_nirx from mne.preprocessing.nirs import ( + beer_lambert_law, optical_density, scalp_coupling_index, - beer_lambert_law, ) -from mne.datasets import testing fname_nirx_15_0 = ( data_path(download=False) / "NIRx" / "nirscout" / "nirx_15_0_recording" diff --git a/mne/preprocessing/nirs/tests/test_temporal_derivative_distribution_repair.py b/mne/preprocessing/nirs/tests/test_temporal_derivative_distribution_repair.py index c17fa10d5d2..c89d3180908 100644 --- a/mne/preprocessing/nirs/tests/test_temporal_derivative_distribution_repair.py +++ b/mne/preprocessing/nirs/tests/test_temporal_derivative_distribution_repair.py @@ -2,14 +2,14 @@ # # License: BSD-3-Clause -import pytest import numpy as np +import pytest from numpy.testing import assert_allclose +from mne.datasets import testing from mne.datasets.testing import data_path from mne.io import read_raw_nirx from mne.preprocessing.nirs import beer_lambert_law, optical_density, tddr -from mne.datasets import testing fname_nirx_15_2 = ( data_path(download=False) / "NIRx" / "nirscout" / "nirx_15_2_recording" diff --git a/mne/preprocessing/otp.py b/mne/preprocessing/otp.py index 5e4adeb9b2b..b110c0903c8 100644 --- a/mne/preprocessing/otp.py +++ b/mne/preprocessing/otp.py @@ -7,8 +7,8 @@ import numpy as np -from .._ola import _COLA, _Storer from .._fiff.pick import _picks_to_idx +from .._ola import _COLA, _Storer from ..surface import _normalize_vectors from ..utils import logger, verbose diff --git a/mne/preprocessing/realign.py b/mne/preprocessing/realign.py index e3710fa9d58..396e4ba33e6 100644 --- a/mne/preprocessing/realign.py +++ b/mne/preprocessing/realign.py @@ -8,7 +8,7 @@ from scipy.stats import pearsonr from ..io import BaseRaw -from ..utils import _validate_type, warn, logger, verbose +from ..utils import _validate_type, logger, verbose, warn @verbose diff --git a/mne/preprocessing/ssp.py b/mne/preprocessing/ssp.py index 9efc5710b04..82c5b78a741 100644 --- a/mne/preprocessing/ssp.py +++ b/mne/preprocessing/ssp.py @@ -8,11 +8,11 @@ import numpy as np -from ..epochs import Epochs -from ..proj import compute_proj_evoked, compute_proj_epochs -from ..utils import logger, verbose, warn from .._fiff.pick import pick_types from .._fiff.reference import make_eeg_average_ref_proj +from ..epochs import Epochs +from ..proj import compute_proj_epochs, compute_proj_evoked +from ..utils import logger, verbose, warn from .ecg import find_ecg_events from .eog import find_eog_events diff --git a/mne/preprocessing/stim.py b/mne/preprocessing/stim.py index c027a0d0497..a9d00dd66cc 100644 --- a/mne/preprocessing/stim.py +++ b/mne/preprocessing/stim.py @@ -6,13 +6,12 @@ from scipy.interpolate import interp1d from scipy.signal.windows import hann -from ..evoked import Evoked +from .._fiff.pick import _picks_to_idx from ..epochs import BaseEpochs -from ..io import BaseRaw from ..event import find_events - -from .._fiff.pick import _picks_to_idx -from ..utils import _check_preload, _check_option, fill_doc +from ..evoked import Evoked +from ..io import BaseRaw +from ..utils import _check_option, _check_preload, fill_doc def _get_window(start, end): diff --git a/mne/preprocessing/tests/test_annotate_amplitude.py b/mne/preprocessing/tests/test_annotate_amplitude.py index 108438fb7cc..9eb35084b09 100644 --- a/mne/preprocessing/tests/test_annotate_amplitude.py +++ b/mne/preprocessing/tests/test_annotate_amplitude.py @@ -4,8 +4,8 @@ import datetime import itertools -from pathlib import Path import re +from pathlib import Path import numpy as np import pytest @@ -16,7 +16,6 @@ from mne.io import RawArray, read_raw_fif from mne.preprocessing import annotate_amplitude - date = datetime.datetime(2021, 12, 10, 7, 52, 24, 405305, tzinfo=datetime.timezone.utc) data_path = Path(testing.data_path(download=False)) skip_fname = data_path / "misc" / "intervalrecording_raw.fif" diff --git a/mne/preprocessing/tests/test_annotate_nan.py b/mne/preprocessing/tests/test_annotate_nan.py index c313a581b6d..b5d4ba7b22e 100644 --- a/mne/preprocessing/tests/test_annotate_nan.py +++ b/mne/preprocessing/tests/test_annotate_nan.py @@ -5,13 +5,12 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_array_equal import pytest +from numpy.testing import assert_array_equal import mne from mne.preprocessing import annotate_nan - raw_fname = ( Path(__file__).parent.parent.parent / "io" / "tests" / "data" / "test_raw.fif" ) diff --git a/mne/preprocessing/tests/test_artifact_detection.py b/mne/preprocessing/tests/test_artifact_detection.py index f122714f87a..19094068019 100644 --- a/mne/preprocessing/tests/test_artifact_detection.py +++ b/mne/preprocessing/tests/test_artifact_detection.py @@ -4,18 +4,18 @@ import numpy as np import pytest - from numpy.testing import assert_allclose, assert_array_equal + +from mne import Annotations, events_from_annotations from mne.chpi import read_head_pos from mne.datasets import testing from mne.io import read_raw_fif from mne.preprocessing import ( + annotate_break, annotate_movement, - compute_average_dev_head_t, annotate_muscle_zscore, - annotate_break, + compute_average_dev_head_t, ) -from mne import Annotations, events_from_annotations from mne.tests.test_annotations import _assert_annotations_equal data_path = testing.data_path(download=False) diff --git a/mne/preprocessing/tests/test_csd.py b/mne/preprocessing/tests/test_csd.py index 3ea6578daca..1387b6b4465 100644 --- a/mne/preprocessing/tests/test_csd.py +++ b/mne/preprocessing/tests/test_csd.py @@ -9,20 +9,18 @@ from pathlib import Path import numpy as np - import pytest from numpy.testing import assert_allclose -from scipy.io import loadmat from scipy import linalg +from scipy.io import loadmat -from mne.channels import make_dig_montage -from mne import create_info, EvokedArray, pick_types, Epochs, find_events, read_epochs -from mne.io import read_raw_fif, RawArray +from mne import Epochs, EvokedArray, create_info, find_events, pick_types, read_epochs from mne._fiff.constants import FIFF -from mne.utils import object_diff +from mne.channels import make_dig_montage from mne.datasets import testing - -from mne.preprocessing import compute_current_source_density, compute_bridged_electrodes +from mne.io import RawArray, read_raw_fif +from mne.preprocessing import compute_bridged_electrodes, compute_current_source_density +from mne.utils import object_diff data_path = testing.data_path(download=False) / "preprocessing" eeg_fname = data_path / "test_eeg.mat" diff --git a/mne/preprocessing/tests/test_css.py b/mne/preprocessing/tests/test_css.py index 96f01eac95b..88f196ee969 100644 --- a/mne/preprocessing/tests/test_css.py +++ b/mne/preprocessing/tests/test_css.py @@ -2,9 +2,9 @@ import numpy as np -from mne.preprocessing._css import cortical_signal_suppression from mne import pick_types, read_evokeds from mne.datasets import testing +from mne.preprocessing._css import cortical_signal_suppression data_path = testing.data_path(download=False) fname_evoked = data_path / "MEG" / "sample" / "sample_audvis-ave.fif" diff --git a/mne/preprocessing/tests/test_ctps.py b/mne/preprocessing/tests/test_ctps.py index 9407c650ea4..ec7918ac72a 100644 --- a/mne/preprocessing/tests/test_ctps.py +++ b/mne/preprocessing/tests/test_ctps.py @@ -3,11 +3,11 @@ # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_array_equal import pytest +from numpy.testing import assert_array_equal +from mne.preprocessing.ctps_ import _compute_normalized_phase, _prob_kuiper, ctps from mne.time_frequency import morlet -from mne.preprocessing.ctps_ import ctps, _prob_kuiper, _compute_normalized_phase ############################################################################### # Generate testing signal diff --git a/mne/preprocessing/tests/test_ecg.py b/mne/preprocessing/tests/test_ecg.py index 3b1f2a5aa70..b540f0b2895 100644 --- a/mne/preprocessing/tests/test_ecg.py +++ b/mne/preprocessing/tests/test_ecg.py @@ -2,9 +2,9 @@ import numpy as np -from mne.io import read_raw_fif from mne import pick_types -from mne.preprocessing import find_ecg_events, create_ecg_epochs +from mne.io import read_raw_fif +from mne.preprocessing import create_ecg_epochs, find_ecg_events data_path = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_path / "test_raw.fif" diff --git a/mne/preprocessing/tests/test_eeglab_infomax.py b/mne/preprocessing/tests/test_eeglab_infomax.py index b493c633688..dd98fc080da 100644 --- a/mne/preprocessing/tests/test_eeglab_infomax.py +++ b/mne/preprocessing/tests/test_eeglab_infomax.py @@ -1,17 +1,16 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_almost_equal import pytest - -from scipy.linalg import svd, pinv import scipy.io as sio +from numpy.testing import assert_almost_equal +from scipy.linalg import pinv, svd -from mne.io import read_raw_fif from mne import pick_types +from mne.datasets import testing +from mne.io import read_raw_fif from mne.preprocessing.infomax_ import infomax from mne.utils import random_permutation -from mne.datasets import testing base_dir = Path(__file__).parent / "data" testing_path = testing.data_path(download=False) diff --git a/mne/preprocessing/tests/test_fine_cal.py b/mne/preprocessing/tests/test_fine_cal.py index 4e153017548..d4adb0c1280 100644 --- a/mne/preprocessing/tests/test_fine_cal.py +++ b/mne/preprocessing/tests/test_fine_cal.py @@ -3,21 +3,21 @@ # # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose from mne import pick_types -from mne.io import read_raw_fif -from mne.datasets import testing from mne._fiff.tag import _loc_to_coil_trans +from mne.datasets import testing +from mne.io import read_raw_fif from mne.preprocessing import ( - read_fine_calibration, - write_fine_calibration, compute_fine_calibration, maxwell_filter, + read_fine_calibration, + write_fine_calibration, ) from mne.preprocessing.tests.test_maxwell import _assert_shielding -from mne.transforms import rot_to_quat, _angle_between_quats +from mne.transforms import _angle_between_quats, rot_to_quat from mne.utils import object_diff # Define fine calibration filepaths diff --git a/mne/preprocessing/tests/test_hfc.py b/mne/preprocessing/tests/test_hfc.py index 4e9b727b0cc..46ecc49037f 100644 --- a/mne/preprocessing/tests/test_hfc.py +++ b/mne/preprocessing/tests/test_hfc.py @@ -6,14 +6,13 @@ import numpy as np import pytest - from numpy.testing import assert_allclose from scipy.io import loadmat +from mne._fiff.pick import pick_channels, pick_info, pick_types from mne.datasets import testing -from mne.io import read_raw_fil, read_info +from mne.io import read_info, read_raw_fil from mne.preprocessing.hfc import compute_proj_hfc -from mne._fiff.pick import pick_types, pick_info, pick_channels fil_path = testing.data_path(download=False) / "FIL" fname_root = "sub-noise_ses-001_task-noise220622_run-001" diff --git a/mne/preprocessing/tests/test_ica.py b/mne/preprocessing/tests/test_ica.py index a9110efea28..4f623e202ff 100644 --- a/mne/preprocessing/tests/test_ica.py +++ b/mne/preprocessing/tests/test_ica.py @@ -8,51 +8,53 @@ from contextlib import nullcontext from pathlib import Path -import pytest +import matplotlib.pyplot as plt import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, - assert_allclose, assert_equal, ) -from scipy import stats, linalg +from scipy import linalg, stats from scipy.io import loadmat, savemat -import matplotlib.pyplot as plt from mne import ( + Annotations, Epochs, - Info, - read_events, - pick_types, - create_info, EpochsArray, EvokedArray, - Annotations, - pick_channels_regexp, + Info, + create_info, make_ad_hoc_cov, + pick_channels_regexp, + pick_types, + read_events, ) +from mne._fiff.pick import _DATA_CH_TYPES_SPLIT, get_channel_type_constants from mne.cov import read_cov +from mne.datasets import testing +from mne.event import make_fixed_length_events +from mne.io import RawArray, read_raw_ctf, read_raw_eeglab, read_raw_fif +from mne.io.eeglab.eeglab import _check_load_mat from mne.preprocessing import ( ICA as _ICA, +) +from mne.preprocessing import ( ica_find_ecg_events, ica_find_eog_events, read_ica, ) from mne.preprocessing.ica import ( - get_score_funcs, - corrmap, - _sort_components, _ica_explained_variance, + _sort_components, + corrmap, + get_score_funcs, read_ica_eeglab, ) -from mne.io import read_raw_fif, RawArray, read_raw_ctf, read_raw_eeglab -from mne._fiff.pick import _DATA_CH_TYPES_SPLIT, get_channel_type_constants -from mne.io.eeglab.eeglab import _check_load_mat from mne.rank import _compute_rank_int -from mne.utils import catch_logging, _record_warnings, check_version -from mne.datasets import testing -from mne.event import make_fixed_length_events +from mne.utils import _record_warnings, catch_logging, check_version data_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_dir / "test_raw.fif" diff --git a/mne/preprocessing/tests/test_infomax.py b/mne/preprocessing/tests/test_infomax.py index 76e23be5e4a..647f3de53fa 100644 --- a/mne/preprocessing/tests/test_infomax.py +++ b/mne/preprocessing/tests/test_infomax.py @@ -4,13 +4,10 @@ # Parts of this code are taken from scikit-learn -import pytest - import numpy as np +import pytest from numpy.testing import assert_almost_equal - -from scipy import stats -from scipy import linalg +from scipy import linalg, stats from mne.preprocessing.infomax_ import infomax diff --git a/mne/preprocessing/tests/test_interpolate.py b/mne/preprocessing/tests/test_interpolate.py index 1746251611b..01309dbb250 100644 --- a/mne/preprocessing/tests/test_interpolate.py +++ b/mne/preprocessing/tests/test_interpolate.py @@ -4,7 +4,7 @@ import numpy as np import pytest -from mne import create_info, io, pick_types, read_events, Epochs +from mne import Epochs, create_info, io, pick_types, read_events from mne.channels import make_standard_montage from mne.preprocessing import equalize_bads, interpolate_bridged_electrodes from mne.preprocessing.interpolate import _find_centroid_sphere diff --git a/mne/preprocessing/tests/test_maxwell.py b/mne/preprocessing/tests/test_maxwell.py index 13a5c4358d7..f6466047f40 100644 --- a/mne/preprocessing/tests/test_maxwell.py +++ b/mne/preprocessing/tests/test_maxwell.py @@ -8,53 +8,52 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_allclose, assert_array_equal import pytest +from numpy.testing import assert_allclose, assert_array_equal from scipy import sparse from scipy.special import sph_harm import mne -from mne import compute_raw_covariance, pick_types, concatenate_raws, pick_info +from mne import compute_raw_covariance, concatenate_raws, pick_info, pick_types +from mne._fiff.constants import FIFF from mne.annotations import _annotations_starts_stops -from mne.chpi import read_head_pos, filter_chpi -from mne.forward import _prep_meg_channels +from mne.chpi import filter_chpi, read_head_pos from mne.datasets import testing -from mne.forward import use_coil_def +from mne.forward import _prep_meg_channels, use_coil_def from mne.io import ( - read_raw_fif, + BaseRaw, read_info, read_raw_bti, - read_raw_kit, - BaseRaw, read_raw_ctf, + read_raw_fif, + read_raw_kit, ) -from mne._fiff.constants import FIFF from mne.preprocessing import ( - maxwell_filter, - find_bad_channels_maxwell, annotate_amplitude, + annotate_movement, compute_maxwell_basis, + find_bad_channels_maxwell, + maxwell_filter, maxwell_filter_prepare_emptyroom, - annotate_movement, ) from mne.preprocessing.maxwell import ( + _bases_complex_to_real, + _bases_real_to_complex, _get_n_moments, - _sss_basis_basic, + _prep_mf_coils, _sh_complex_to_real, - _sh_real_to_complex, _sh_negate, - _bases_complex_to_real, + _sh_real_to_complex, + _sss_basis_basic, _trans_sss_basis, - _bases_real_to_complex, - _prep_mf_coils, ) -from mne.rank import _get_rank_sss, _compute_rank_int, compute_rank +from mne.rank import _compute_rank_int, _get_rank_sss, compute_rank from mne.utils import ( + _record_warnings, assert_meg_snr, + buggy_mkl_svd, catch_logging, - _record_warnings, object_diff, - buggy_mkl_svd, use_log_level, ) diff --git a/mne/preprocessing/tests/test_otp.py b/mne/preprocessing/tests/test_otp.py index eccb17bda9b..ae10d683d2e 100644 --- a/mne/preprocessing/tests/test_otp.py +++ b/mne/preprocessing/tests/test_otp.py @@ -2,15 +2,14 @@ # # License: BSD-3-Clause -import pytest - import numpy as np +import pytest from numpy.fft import rfft, rfftfreq from mne import create_info +from mne._fiff.pick import _pick_data_channels from mne.datasets import testing from mne.io import RawArray, read_raw_fif -from mne._fiff.pick import _pick_data_channels from mne.preprocessing import oversampled_temporal_projection from mne.utils import catch_logging diff --git a/mne/preprocessing/tests/test_peak_finder.py b/mne/preprocessing/tests/test_peak_finder.py index f474f508a43..0ba97893d67 100644 --- a/mne/preprocessing/tests/test_peak_finder.py +++ b/mne/preprocessing/tests/test_peak_finder.py @@ -1,6 +1,6 @@ -from numpy.testing import assert_array_equal, assert_equal -import pytest import numpy as np +import pytest +from numpy.testing import assert_array_equal, assert_equal from mne.preprocessing import peak_finder diff --git a/mne/preprocessing/tests/test_realign.py b/mne/preprocessing/tests/test_realign.py index f9a2d7af79a..6ab16276290 100644 --- a/mne/preprocessing/tests/test_realign.py +++ b/mne/preprocessing/tests/test_realign.py @@ -4,11 +4,11 @@ # License: BSD-3-Clause import numpy as np +import pytest from numpy.testing import assert_allclose from scipy.interpolate import interp1d -import pytest -from mne import create_info, find_events, Epochs, Annotations +from mne import Annotations, Epochs, create_info, find_events from mne.io import RawArray from mne.preprocessing import realign_raw diff --git a/mne/preprocessing/tests/test_regress.py b/mne/preprocessing/tests/test_regress.py index 290c47bbac5..ab2a640343b 100644 --- a/mne/preprocessing/tests/test_regress.py +++ b/mne/preprocessing/tests/test_regress.py @@ -10,10 +10,10 @@ from mne.datasets import testing from mne.io import read_raw_fif from mne.preprocessing import ( - regress_artifact, - create_eog_epochs, EOGRegression, + create_eog_epochs, read_eog_regression, + regress_artifact, ) data_path = testing.data_path(download=False) diff --git a/mne/preprocessing/tests/test_ssp.py b/mne/preprocessing/tests/test_ssp.py index 110f3959d1f..181629541bf 100644 --- a/mne/preprocessing/tests/test_ssp.py +++ b/mne/preprocessing/tests/test_ssp.py @@ -1,14 +1,14 @@ from pathlib import Path +import numpy as np import pytest from numpy.testing import assert_array_almost_equal -import numpy as np -from mne.io import read_raw_fif, read_raw_ctf -from mne._fiff.proj import make_projector, activate_proj -from mne.preprocessing.ssp import compute_proj_ecg, compute_proj_eog -from mne.datasets import testing from mne import pick_types +from mne._fiff.proj import activate_proj, make_projector +from mne.datasets import testing +from mne.io import read_raw_ctf, read_raw_fif +from mne.preprocessing.ssp import compute_proj_ecg, compute_proj_eog data_path = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_path / "test_raw.fif" diff --git a/mne/preprocessing/tests/test_stim.py b/mne/preprocessing/tests/test_stim.py index 57805bc0679..a639ad5e5d1 100644 --- a/mne/preprocessing/tests/test_stim.py +++ b/mne/preprocessing/tests/test_stim.py @@ -5,12 +5,12 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_array_almost_equal import pytest +from numpy.testing import assert_array_almost_equal -from mne.io import read_raw_fif -from mne.event import read_events from mne.epochs import Epochs +from mne.event import read_events +from mne.io import read_raw_fif from mne.preprocessing.stim import fix_stim_artifact data_path = Path(__file__).parent.parent.parent / "io" / "tests" / "data" diff --git a/mne/preprocessing/tests/test_xdawn.py b/mne/preprocessing/tests/test_xdawn.py index 6551eada581..047a35d75dd 100644 --- a/mne/preprocessing/tests/test_xdawn.py +++ b/mne/preprocessing/tests/test_xdawn.py @@ -6,18 +6,17 @@ from pathlib import Path import numpy as np - -from numpy.testing import assert_array_equal, assert_array_almost_equal, assert_allclose import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal from scipy import stats from mne import ( Epochs, - read_events, - pick_types, + EpochsArray, compute_raw_covariance, create_info, - EpochsArray, + pick_types, + read_events, ) from mne.decoding import Vectorizer from mne.fixes import _safe_svd @@ -349,11 +348,11 @@ def _simulate_erplike_mixed_data(n_epochs=100, n_channels=10): def test_xdawn_decoding_performance(): """Test decoding performance and extracted pattern on synthetic data.""" pytest.importorskip("sklearn") + from sklearn.linear_model import LogisticRegression + from sklearn.metrics import accuracy_score from sklearn.model_selection import KFold from sklearn.pipeline import make_pipeline - from sklearn.linear_model import LogisticRegression from sklearn.preprocessing import MinMaxScaler - from sklearn.metrics import accuracy_score n_xdawn_comps = 3 expected_accuracy = 0.98 diff --git a/mne/preprocessing/xdawn.py b/mne/preprocessing/xdawn.py index f2cb819d563..ab9684cd07d 100644 --- a/mne/preprocessing/xdawn.py +++ b/mne/preprocessing/xdawn.py @@ -7,13 +7,13 @@ import numpy as np from scipy import linalg +from .._fiff.pick import _pick_data_channels, pick_info from ..cov import Covariance, _regularized_covariance -from ..decoding import TransformerMixin, BaseEstimator +from ..decoding import BaseEstimator, TransformerMixin from ..epochs import BaseEpochs -from ..evoked import EvokedArray, Evoked +from ..evoked import Evoked, EvokedArray from ..io import BaseRaw -from .._fiff.pick import _pick_data_channels, pick_info -from ..utils import logger, _check_option +from ..utils import _check_option, logger def _construct_signal_from_epochs(epochs, events, sfreq, tmin): diff --git a/mne/proj.py b/mne/proj.py index ff4182bd8a3..e8079d151b9 100644 --- a/mne/proj.py +++ b/mne/proj.py @@ -4,33 +4,33 @@ import numpy as np -from .epochs import Epochs -from .fixes import _safe_svd -from .utils import ( - check_fname, - logger, - verbose, - _check_option, - _check_fname, - _validate_type, -) from ._fiff.constants import FIFF from ._fiff.open import fiff_open -from ._fiff.pick import pick_types, pick_types_forward, _picks_to_idx +from ._fiff.pick import _picks_to_idx, pick_types, pick_types_forward from ._fiff.proj import ( Projection, _has_eeg_average_ref_proj, _read_proj, - make_projector, - make_eeg_average_ref_proj, _write_proj, + make_eeg_average_ref_proj, + make_projector, ) from ._fiff.write import start_and_end_file +from .cov import _check_n_samples +from .epochs import Epochs from .event import make_fixed_length_events +from .fixes import _safe_svd +from .forward import _subject_from_forward, convert_forward_solution, is_fixed_orient from .parallel import parallel_func -from .cov import _check_n_samples -from .forward import is_fixed_orient, _subject_from_forward, convert_forward_solution from .source_estimate import _make_stc +from .utils import ( + _check_fname, + _check_option, + _validate_type, + check_fname, + logger, + verbose, +) @verbose diff --git a/mne/rank.py b/mne/rank.py index fe4ccf83927..0cab1f3a563 100644 --- a/mne/rank.py +++ b/mne/rank.py @@ -6,24 +6,24 @@ import numpy as np from scipy import linalg -from .defaults import _handle_default -from ._fiff.meas_info import _simplify_info, Info -from ._fiff.pick import _picks_by_type, pick_info, pick_channels_cov, _picks_to_idx +from ._fiff.meas_info import Info, _simplify_info +from ._fiff.pick import _picks_by_type, _picks_to_idx, pick_channels_cov, pick_info from ._fiff.proj import make_projector +from .defaults import _handle_default from .utils import ( - logger, - _compute_row_norms, - _pl, - _validate_type, _apply_scaling_cov, - _undo_scaling_cov, - _scaled_array, - warn, + _check_on_missing, _check_rank, + _compute_row_norms, _on_missing, - verbose, - _check_on_missing, + _pl, + _scaled_array, + _undo_scaling_cov, + _validate_type, fill_doc, + logger, + verbose, + warn, ) @@ -351,9 +351,9 @@ def compute_rank( ----- .. versionadded:: 0.18 """ - from .io import BaseRaw - from .epochs import BaseEpochs from .cov import Covariance + from .epochs import BaseEpochs + from .io import BaseRaw rank = _check_rank(rank) scalings = _handle_default("scalings_cov_rank", scalings) diff --git a/mne/report/__init__.pyi b/mne/report/__init__.pyi index 5f62e1eafbf..fa99d6e3ea1 100644 --- a/mne/report/__init__.pyi +++ b/mne/report/__init__.pyi @@ -1,2 +1,2 @@ __all__ = ["Report", "_ReportScraper", "open_report"] -from .report import Report, open_report, _ReportScraper +from .report import Report, _ReportScraper, open_report diff --git a/mne/report/js_and_css/bootstrap-icons/gen_css_for_mne.py b/mne/report/js_and_css/bootstrap-icons/gen_css_for_mne.py index 54fa40b2d09..4b0626ab1e0 100644 --- a/mne/report/js_and_css/bootstrap-icons/gen_css_for_mne.py +++ b/mne/report/js_and_css/bootstrap-icons/gen_css_for_mne.py @@ -15,10 +15,10 @@ # License: BSD-3-Clause -from pathlib import Path import base64 -import rcssmin +from pathlib import Path +import rcssmin base_dir = Path(".") css_path_in = base_dir / "bootstrap-icons.css" diff --git a/mne/report/report.py b/mne/report/report.py index faf12a79bd6..5abee10e1eb 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -6,86 +6,85 @@ # # License: BSD-3-Clause -import io -import dataclasses -from dataclasses import dataclass -from functools import partial -from typing import Tuple, Optional -from collections.abc import Sequence import base64 -from io import BytesIO, StringIO +import dataclasses +import fnmatch +import io import os import os.path as op -from pathlib import Path -import fnmatch import re -from shutil import copyfile import time import warnings import webbrowser +from collections.abc import Sequence +from dataclasses import dataclass +from functools import partial +from io import BytesIO, StringIO +from pathlib import Path +from shutil import copyfile +from typing import Optional, Tuple import numpy as np from .. import __version__ as MNE_VERSION -from ..evoked import read_evokeds, Evoked +from .._fiff.meas_info import Info, read_info +from .._fiff.pick import _DATA_CH_TYPES_SPLIT +from .._freesurfer import _mri_orientation, _reorient_image +from ..cov import Covariance, read_cov +from ..defaults import _handle_default +from ..epochs import BaseEpochs, read_epochs from ..event import read_events -from ..cov import read_cov, Covariance +from ..evoked import Evoked, read_evokeds +from ..forward import Forward, read_forward_solution from ..html_templates import _get_html_template -from ..source_estimate import read_source_estimate, SourceEstimate -from ..transforms import read_trans, Transform -from ..utils import sys_info -from .._fiff.meas_info import Info -from ..defaults import _handle_default -from ..io import read_raw, BaseRaw +from ..io import BaseRaw, read_raw from ..io._read_raw import _get_supported as _get_extension_reader_map -from .._fiff.meas_info import read_info -from .._fiff.pick import _DATA_CH_TYPES_SPLIT +from ..minimum_norm import InverseOperator, read_inverse_operator +from ..parallel import parallel_func +from ..preprocessing.ica import read_ica from ..proj import read_proj -from .._freesurfer import _reorient_image, _mri_orientation +from ..source_estimate import SourceEstimate, read_source_estimate +from ..surface import dig_mri_distances +from ..transforms import Transform, read_trans from ..utils import ( - logger, - verbose, - get_subjects_dir, - warn, - _ensure_int, - fill_doc, + _check_ch_locs, + _check_fname, _check_option, - _validate_type, - _safe_input, + _ensure_int, + _import_h5io_funcs, + _import_nibabel, _path_like, - use_log_level, - _check_fname, _pl, - _check_ch_locs, - _import_h5io_funcs, + _safe_input, + _validate_type, _verbose_safe_false, check_version, - _import_nibabel, + fill_doc, + get_subjects_dir, + logger, + sys_info, + use_log_level, + verbose, + warn, ) from ..utils.spectrum import _split_psd_kwargs from ..viz import ( - plot_events, + Figure3D, + _get_plot_ch_type, + create_3d_figure, + get_3d_backend, plot_alignment, + plot_compare_evokeds, plot_cov, + plot_events, plot_projs_topomap, - plot_compare_evokeds, set_3d_view, - get_3d_backend, - Figure3D, use_browser_backend, - _get_plot_ch_type, - create_3d_figure, ) from ..viz._brain.view import views_dicts -from ..viz.misc import _plot_mri_contours, _get_bem_plotting_surfaces -from ..viz.utils import _ndarray_to_fig from ..viz._scraper import _mne_qt_browser_screenshot -from ..forward import read_forward_solution, Forward -from ..epochs import read_epochs, BaseEpochs -from ..preprocessing.ica import read_ica -from ..surface import dig_mri_distances -from ..minimum_norm import read_inverse_operator, InverseOperator -from ..parallel import parallel_func +from ..viz.misc import _get_bem_plotting_surfaces, _plot_mri_contours +from ..viz.utils import _ndarray_to_fig _BEM_VIEWS = ("axial", "sagittal", "coronal") @@ -391,7 +390,7 @@ def _fig_to_img(fig, *, image_format="png", own_figure=True): if fig.__class__.__name__ in ("MNEQtBrowser", "PyQtGraphBrowser"): img = _mne_qt_browser_screenshot(fig, return_type="ndarray") elif isinstance(fig, Figure3D): - from ..viz.backends.renderer import backend, MNE_3D_BACKEND_TESTING + from ..viz.backends.renderer import MNE_3D_BACKEND_TESTING, backend backend._check_3d_figure(figure=fig) if not MNE_3D_BACKEND_TESTING: diff --git a/mne/report/tests/test_report.py b/mne/report/tests/test_report.py index 4ed7ab2e557..7577774e313 100644 --- a/mne/report/tests/test_report.py +++ b/mne/report/tests/test_report.py @@ -19,28 +19,27 @@ from mne import ( Epochs, + create_info, + pick_channels_cov, + read_cov, read_events, read_evokeds, - read_cov, - pick_channels_cov, - create_info, ) +from mne._fiff.write import DATE_NONE +from mne.datasets import testing +from mne.epochs import make_metadata +from mne.io import RawArray, read_info, read_raw_fif +from mne.preprocessing import ICA +from mne.report import Report, _ReportScraper, open_report, report from mne.report import report as report_mod from mne.report.report import ( - CONTENT_ORDER, _ALLOWED_IMAGE_FORMATS, + CONTENT_ORDER, _webp_supported, ) -from mne.io import read_raw_fif, read_info, RawArray -from mne.datasets import testing -from mne.report import Report, open_report, _ReportScraper, report from mne.utils import Bunch from mne.utils._testing import assert_object_equal from mne.viz import plot_alignment -from mne._fiff.write import DATE_NONE -from mne.preprocessing import ICA -from mne.epochs import make_metadata - data_dir = testing.data_path(download=False) subjects_dir = data_dir / "subjects" diff --git a/mne/simulation/__init__.pyi b/mne/simulation/__init__.pyi index 1a49e48a882..9e0612f53a8 100644 --- a/mne/simulation/__init__.pyi +++ b/mne/simulation/__init__.pyi @@ -12,11 +12,11 @@ __all__ = [ "simulate_stc", ] from . import metrics -from .evoked import simulate_evoked, add_noise -from .raw import simulate_raw, add_ecg, add_eog, add_chpi +from .evoked import add_noise, simulate_evoked +from .raw import add_chpi, add_ecg, add_eog, simulate_raw from .source import ( + SourceSimulator, select_source_in_label, - simulate_stc, simulate_sparse_stc, - SourceSimulator, + simulate_stc, ) diff --git a/mne/simulation/evoked.py b/mne/simulation/evoked.py index d66c8dc9759..53112df695e 100644 --- a/mne/simulation/evoked.py +++ b/mne/simulation/evoked.py @@ -8,13 +8,13 @@ import numpy as np from scipy.signal import lfilter +from .._fiff.pick import pick_info from ..cov import Covariance, compute_whitener from ..epochs import BaseEpochs from ..evoked import Evoked -from .._fiff.pick import pick_info from ..forward import apply_forward from ..io import BaseRaw -from ..utils import logger, verbose, check_random_state, _check_preload, _validate_type +from ..utils import _check_preload, _validate_type, check_random_state, logger, verbose @verbose diff --git a/mne/simulation/metrics/metrics.py b/mne/simulation/metrics/metrics.py index 41630029880..4d904623b2e 100644 --- a/mne/simulation/metrics/metrics.py +++ b/mne/simulation/metrics/metrics.py @@ -10,7 +10,7 @@ import numpy as np from scipy.spatial.distance import cdist -from ...utils import _check_option, fill_doc, _validate_type +from ...utils import _check_option, _validate_type, fill_doc def _check_stc(stc1, stc2): diff --git a/mne/simulation/metrics/tests/test_metrics.py b/mne/simulation/metrics/tests/test_metrics.py index 908b8069f1c..a9abcd9ffad 100644 --- a/mne/simulation/metrics/tests/test_metrics.py +++ b/mne/simulation/metrics/tests/test_metrics.py @@ -5,22 +5,21 @@ import numpy as np -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose from scipy.linalg import norm -from mne import SourceEstimate -from mne import read_source_spaces +from mne import SourceEstimate, read_source_spaces from mne.datasets import testing from mne.simulation import metrics from mne.simulation.metrics import ( cosine_score, - region_localization_error, + f1_score, + peak_position_error, precision_score, recall_score, - f1_score, + region_localization_error, roc_auc_score, - peak_position_error, spatial_deviation_error, ) diff --git a/mne/simulation/raw.py b/mne/simulation/raw.py index 4de9c8f0704..37b15aa1dbc 100644 --- a/mne/simulation/raw.py +++ b/mne/simulation/raw.py @@ -10,47 +10,47 @@ import numpy as np -from ..event import _get_stim_channel -from .._ola import _Interp2 from .._fiff.constants import FIFF from .._fiff.meas_info import Info -from .._fiff.pick import pick_types, pick_info, pick_channels, pick_channels_forward -from ..cov import make_ad_hoc_cov, read_cov, Covariance +from .._fiff.pick import pick_channels, pick_channels_forward, pick_info, pick_types +from .._ola import _Interp2 from ..bem import fit_sphere_to_headshape, make_sphere_model, read_bem_solution -from ..io import RawArray, BaseRaw from ..chpi import ( - read_head_pos, - head_pos_to_trans_rot_t, - get_chpi_info, _get_hpi_initial_fit, + get_chpi_info, + head_pos_to_trans_rot_t, + read_head_pos, ) +from ..cov import Covariance, make_ad_hoc_cov, read_cov +from ..event import _get_stim_channel from ..forward import ( + _compute_forwards, _magnetic_dipole_field_vec, _merge_fwds, - _stc_src_sel, - convert_forward_solution, + _prep_meg_channels, _prepare_for_forward, - _transform_orig_meg_coils, - _compute_forwards, + _stc_src_sel, _to_forward_dict, + _transform_orig_meg_coils, + convert_forward_solution, restrict_forward_to_stc, - _prep_meg_channels, ) -from ..transforms import _get_trans, transform_surface_to +from ..io import BaseRaw, RawArray +from ..source_estimate import _BaseSourceEstimate from ..source_space._source_space import ( _ensure_src, _set_source_space_vertices, setup_volume_source_space, ) -from ..source_estimate import _BaseSourceEstimate from ..surface import _CheckInside +from ..transforms import _get_trans, transform_surface_to from ..utils import ( - logger, - verbose, - check_random_state, + _check_preload, _pl, _validate_type, - _check_preload, + check_random_state, + logger, + verbose, ) from .source import SourceSimulator diff --git a/mne/simulation/source.py b/mne/simulation/source.py index d103b5c0374..62f14ebe67c 100644 --- a/mne/simulation/source.py +++ b/mne/simulation/source.py @@ -10,19 +10,19 @@ import numpy as np +from ..fixes import rng_uniform +from ..label import Label from ..source_estimate import SourceEstimate, VolSourceEstimate from ..source_space._source_space import _ensure_src -from ..fixes import rng_uniform +from ..surface import _compute_nearest from ..utils import ( - check_random_state, - warn, _check_option, - fill_doc, - _ensure_int, _ensure_events, + _ensure_int, + check_random_state, + fill_doc, + warn, ) -from ..label import Label -from ..surface import _compute_nearest @fill_doc diff --git a/mne/simulation/tests/test_evoked.py b/mne/simulation/tests/test_evoked.py index 179f613c732..3fb21933fdb 100644 --- a/mne/simulation/tests/test_evoked.py +++ b/mne/simulation/tests/test_evoked.py @@ -5,30 +5,30 @@ from pathlib import Path import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, assert_equal, - assert_allclose, ) -import pytest from mne import ( - read_cov, - read_forward_solution, - convert_forward_solution, - pick_types_forward, - read_evokeds, - pick_types, EpochsArray, compute_covariance, compute_raw_covariance, + convert_forward_solution, pick_channels_cov, + pick_types, + pick_types_forward, + read_cov, + read_evokeds, + read_forward_solution, ) +from mne.cov import regularize, whiten_evoked from mne.datasets import testing -from mne.simulation import simulate_sparse_stc, simulate_evoked, add_noise from mne.io import read_raw_fif -from mne.cov import regularize, whiten_evoked +from mne.simulation import add_noise, simulate_evoked, simulate_sparse_stc from mne.utils import catch_logging data_path = testing.data_path(download=False) diff --git a/mne/simulation/tests/test_metrics.py b/mne/simulation/tests/test_metrics.py index c4c31393951..d5902660b5f 100644 --- a/mne/simulation/tests/test_metrics.py +++ b/mne/simulation/tests/test_metrics.py @@ -4,8 +4,8 @@ # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose from mne import read_source_spaces from mne.datasets import testing diff --git a/mne/simulation/tests/test_raw.py b/mne/simulation/tests/test_raw.py index df2f0be1119..3fa07537956 100644 --- a/mne/simulation/tests/test_raw.py +++ b/mne/simulation/tests/test_raw.py @@ -8,54 +8,54 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_allclose, assert_array_equal import pytest +from numpy.testing import assert_allclose, assert_array_equal from mne import ( - read_source_spaces, - pick_types, - read_trans, - read_cov, - make_sphere_model, + Epochs, + SourceEstimate, + VolSourceEstimate, + convert_forward_solution, create_info, - setup_volume_source_space, find_events, - Epochs, fit_dipole, - transform_surface_to, make_ad_hoc_cov, - SourceEstimate, - setup_source_space, - read_bem_solution, - make_forward_solution, - convert_forward_solution, - VolSourceEstimate, make_bem_solution, + make_forward_solution, + make_sphere_model, + pick_types, + read_bem_solution, + read_cov, + read_source_spaces, + read_trans, + setup_source_space, + setup_volume_source_space, + transform_surface_to, ) +from mne._fiff.constants import FIFF from mne.bem import _surfaces_to_bem from mne.chpi import ( - read_head_pos, compute_chpi_amplitudes, compute_chpi_locs, compute_head_pos, get_chpi_info, + read_head_pos, ) -from mne.tests.test_chpi import _assert_quats from mne.datasets import testing +from mne.io import RawArray, read_raw_fif +from mne.label import Label from mne.simulation import ( - simulate_sparse_stc, - simulate_raw, - add_eog, - add_ecg, add_chpi, + add_ecg, + add_eog, add_noise, + simulate_raw, + simulate_sparse_stc, ) -from mne.source_space._source_space import _compare_source_spaces from mne.simulation.source import SourceSimulator -from mne.label import Label +from mne.source_space._source_space import _compare_source_spaces from mne.surface import _get_ico_surface -from mne.io import read_raw_fif, RawArray -from mne._fiff.constants import FIFF +from mne.tests.test_chpi import _assert_quats from mne.utils import catch_logging raw_fname_short = ( diff --git a/mne/simulation/tests/test_source.py b/mne/simulation/tests/test_source.py index aa86b8a539b..96ae9d7630e 100644 --- a/mne/simulation/tests/test_source.py +++ b/mne/simulation/tests/test_source.py @@ -4,19 +4,18 @@ # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_equal import pytest +from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_equal -from mne.datasets import testing from mne import ( - read_label, - read_forward_solution, - pick_types_forward, convert_forward_solution, + pick_types_forward, + read_forward_solution, + read_label, ) +from mne.datasets import testing from mne.label import Label -from mne.simulation import simulate_stc, simulate_sparse_stc, SourceSimulator - +from mne.simulation import SourceSimulator, simulate_sparse_stc, simulate_stc data_path = testing.data_path(download=False) fname_fwd = data_path / "MEG" / "sample" / "sample_audvis_trunc-meg-eeg-oct-6-fwd.fif" diff --git a/mne/source_estimate.py b/mne/source_estimate.py index 211d109222c..afdb5085c6e 100644 --- a/mne/source_estimate.py +++ b/mne/source_estimate.py @@ -14,58 +14,58 @@ from scipy import sparse from scipy.spatial.distance import cdist, pdist +from ._fiff.constants import FIFF +from ._fiff.meas_info import Info +from ._fiff.pick import pick_types +from ._freesurfer import _get_atlas_values, _get_mri_info_data, read_freesurfer_lut from .baseline import rescale from .cov import Covariance from .evoked import _get_peak from .filter import resample from .fixes import _safe_svd -from ._freesurfer import _get_mri_info_data, _get_atlas_values, read_freesurfer_lut -from ._fiff.constants import FIFF -from ._fiff.pick import pick_types -from .surface import read_surface, _get_ico_surface, mesh_edges, _project_onto_surface from .source_space._source_space import ( + SourceSpaces, + _check_volume_labels, _ensure_src, - _get_morph_src_reordering, _ensure_src_subject, - SourceSpaces, + _get_morph_src_reordering, _get_src_nn, - _check_volume_labels, ) +from .surface import _get_ico_surface, _project_onto_surface, mesh_edges, read_surface from .transforms import _get_trans, apply_trans from .utils import ( - get_subjects_dir, - _check_subject, - logger, - verbose, - _pl, - _time_mask, - warn, - copy_function_doc_to_method_doc, - fill_doc, + TimeMixin, + _build_data_frame, + _check_fname, _check_option, - _validate_type, + _check_pandas_index_arguments, + _check_pandas_installed, _check_src_normal, _check_stc_units, - _check_pandas_installed, - _import_nibabel, - _check_pandas_index_arguments, + _check_subject, + _check_time_format, _convert_times, _ensure_int, - _build_data_frame, - _check_time_format, + _import_h5io_funcs, + _import_nibabel, _path_like, - sizeof_fmt, + _pl, + _time_mask, + _validate_type, + copy_function_doc_to_method_doc, + fill_doc, + get_subjects_dir, + logger, object_size, - _check_fname, - _import_h5io_funcs, - TimeMixin, + sizeof_fmt, + verbose, + warn, ) from .viz import ( plot_source_estimates, plot_vector_source_estimates, plot_volume_source_estimates, ) -from ._fiff.meas_info import Info def _read_stc(filename): @@ -1528,7 +1528,7 @@ def in_label(self, label): The source estimate restricted to the given label. """ # make sure label and stc are compatible - from .label import Label, BiHemiLabel + from .label import BiHemiLabel, Label _validate_type(label, (Label, BiHemiLabel), "label") if ( @@ -1853,7 +1853,7 @@ def estimate_snr(self, info, fwd, cov, verbose=None): ---------- .. footbibliography:: """ - from .forward import convert_forward_solution, Forward + from .forward import Forward, convert_forward_solution from .minimum_norm.inverse import _prepare_forward _validate_type(fwd, Forward, "fwd") @@ -3283,7 +3283,7 @@ def _prepare_label_extraction(stc, labels, src, mode, allow_empty, use_sparse): # of vol src space. # If stc=None (i.e. no activation time courses provided) and mode='mean', # only computes vertex indices and label_flip will be list of None. - from .label import label_sign_flip, Label, BiHemiLabel + from .label import BiHemiLabel, Label, label_sign_flip # if source estimate provided in stc, get vertices from source space and # check that they are the same as in the stcs diff --git a/mne/source_space/__init__.pyi b/mne/source_space/__init__.pyi index fab90945882..aeb7657bd33 100644 --- a/mne/source_space/__init__.pyi +++ b/mne/source_space/__init__.pyi @@ -11,12 +11,12 @@ __all__ = [ ] from . import _source_space from ._source_space import ( + SourceSpaces, + add_source_space_distances, compute_distance_to_sensors, get_decimated_surfaces, - SourceSpaces, read_source_spaces, - write_source_spaces, setup_source_space, setup_volume_source_space, - add_source_space_distances, + write_source_spaces, ) diff --git a/mne/source_space/_source_space.py b/mne/source_space/_source_space.py index 653645a59ed..7368cf4a0d5 100644 --- a/mne/source_space/_source_space.py +++ b/mne/source_space/_source_space.py @@ -6,95 +6,94 @@ # Many of the computations in this code were derived from Matti Hämäläinen's # C code. -from copy import deepcopy -from functools import partial import os import os.path as op +from copy import deepcopy +from functools import partial import numpy as np from scipy.sparse import csr_matrix, triu from scipy.sparse.csgraph import dijkstra from scipy.spatial.distance import cdist -from ..bem import read_bem_surfaces, ConductorModel from .._fiff.constants import FIFF -from .._fiff.meas_info import create_info, Info +from .._fiff.meas_info import Info, create_info from .._fiff.open import fiff_open -from .._fiff.pick import channel_type, _picks_to_idx +from .._fiff.pick import _picks_to_idx, channel_type from .._fiff.tag import find_tag, read_tag from .._fiff.tree import dir_tree_find from .._fiff.write import ( - start_block, - start_and_end_file, end_block, + start_and_end_file, + start_block, + write_coord_trans, + write_float_matrix, + write_float_sparse_rcs, write_id, write_int, - write_float_sparse_rcs, - write_string, - write_float_matrix, write_int_matrix, - write_coord_trans, + write_string, +) + +# Remove get_mni_fiducials in 1.6 (deprecated) +from .._freesurfer import ( + _check_mri, + _get_atlas_values, + _get_mri_info_data, + get_mni_fiducials, # noqa: F401 + get_volume_labels_from_aseg, + read_freesurfer_lut, ) +from ..bem import ConductorModel, read_bem_surfaces from ..fixes import _get_img_fdata +from ..parallel import parallel_func from ..surface import ( - read_surface, + _CheckInside, + _compute_nearest, _create_surf_spacing, _get_ico_surface, - _tessellate_sphere_surf, _get_surf_neighbors, _normalize_vectors, + _tessellate_sphere_surf, _triangle_neighbors, - mesh_dist, complete_surface_info, - _compute_nearest, fast_cross_3d, - _CheckInside, + mesh_dist, + read_surface, ) -from ..viz import plot_alignment - -# Remove get_mni_fiducials in 1.6 (deprecated) -from .._freesurfer import ( - _get_mri_info_data, - _get_atlas_values, - read_freesurfer_lut, - get_mni_fiducials, # noqa: F401 - get_volume_labels_from_aseg, - _check_mri, +from ..transforms import ( + Transform, + _coord_frame_name, + _ensure_trans, + _get_trans, + _print_coord_trans, + _str_to_frame, + apply_trans, + combine_transforms, + invert_transform, ) from ..utils import ( - get_subjects_dir, - check_fname, - logger, - verbose, - fill_doc, - _ensure_int, - _get_call_line, - warn, - object_size, - sizeof_fmt, _check_fname, - _path_like, + _check_option, _check_sphere, + _ensure_int, + _get_call_line, _import_nibabel, - _validate_type, - _check_option, _is_numeric, + _path_like, _pl, _suggest, + _validate_type, + check_fname, + fill_doc, + get_subjects_dir, + logger, + object_size, + sizeof_fmt, + verbose, + warn, ) -from ..parallel import parallel_func -from ..transforms import ( - invert_transform, - apply_trans, - _print_coord_trans, - combine_transforms, - _get_trans, - _coord_frame_name, - Transform, - _str_to_frame, - _ensure_trans, -) - +from ..viz import plot_alignment _src_kind_dict = { "vol": "volume", @@ -3093,11 +3092,11 @@ def _compare_source_spaces(src0, src1, mode="exact", nearest=True, dist_tol=1.5e Note: this function is also used by forward/tests/test_make_forward.py """ from numpy.testing import ( + assert_, assert_allclose, assert_array_equal, - assert_equal, - assert_, assert_array_less, + assert_equal, ) if mode != "exact" and "approx" not in mode: # 'nointerp' can be appended diff --git a/mne/source_space/tests/test_source_space.py b/mne/source_space/tests/test_source_space.py index b29751aa08f..a0fe8dde4a1 100644 --- a/mne/source_space/tests/test_source_space.py +++ b/mne/source_space/tests/test_source_space.py @@ -6,44 +6,45 @@ from pathlib import Path from shutil import copytree -import pytest import numpy as np +import pytest from numpy.testing import ( - assert_array_equal, assert_allclose, - assert_equal, + assert_array_equal, assert_array_less, + assert_equal, ) -from mne.datasets import testing + import mne from mne import ( - read_source_spaces, - write_source_spaces, - setup_source_space, - setup_volume_source_space, - add_source_space_distances, - read_bem_surfaces, - morph_source_spaces, SourceEstimate, - make_sphere_model, + add_source_space_distances, compute_source_morph, + get_volume_labels_from_src, + make_sphere_model, + morph_source_spaces, pick_types, read_bem_solution, + read_bem_surfaces, read_freesurfer_lut, + read_source_spaces, read_trans, - get_volume_labels_from_src, + setup_source_space, + setup_volume_source_space, + write_source_spaces, ) +from mne._fiff.constants import FIFF +from mne._fiff.pick import _picks_to_idx +from mne.datasets import testing from mne.fixes import _get_img_fdata -from mne.utils import run_subprocess, _record_warnings, requires_mne -from mne.surface import _accumulate_normals, _triangle_neighbors from mne.source_estimate import _get_src_type -from mne.source_space._source_space import _compare_source_spaces from mne.source_space import ( - get_decimated_surfaces, compute_distance_to_sensors, + get_decimated_surfaces, ) -from mne._fiff.pick import _picks_to_idx -from mne._fiff.constants import FIFF +from mne.source_space._source_space import _compare_source_spaces +from mne.surface import _accumulate_normals, _triangle_neighbors +from mne.utils import _record_warnings, requires_mne, run_subprocess data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/stats/__init__.pyi b/mne/stats/__init__.pyi index ac47d6c3680..5d15a0462be 100644 --- a/mne/stats/__init__.pyi +++ b/mne/stats/__init__.pyi @@ -20,23 +20,23 @@ __all__ = [ "ttest_1samp_no_p", "ttest_ind_no_p", ] +from ._adjacency import combine_adjacency +from .cluster_level import ( + _st_mask_from_s_inds, + permutation_cluster_1samp_test, + permutation_cluster_test, + spatio_temporal_cluster_1samp_test, + spatio_temporal_cluster_test, + summarize_clusters_stc, +) +from .multi_comp import bonferroni_correction, fdr_correction from .parametric import ( - f_threshold_mway_rm, + _parametric_ci, f_mway_rm, f_oneway, - _parametric_ci, + f_threshold_mway_rm, ttest_1samp_no_p, ttest_ind_no_p, ) -from .permutations import permutation_t_test, _ci, bootstrap_confidence_interval -from .cluster_level import ( - permutation_cluster_test, - permutation_cluster_1samp_test, - spatio_temporal_cluster_test, - spatio_temporal_cluster_1samp_test, - _st_mask_from_s_inds, - summarize_clusters_stc, -) -from .multi_comp import fdr_correction, bonferroni_correction +from .permutations import _ci, bootstrap_confidence_interval, permutation_t_test from .regression import linear_regression, linear_regression_raw -from ._adjacency import combine_adjacency diff --git a/mne/stats/_adjacency.py b/mne/stats/_adjacency.py index ccae2062a29..516733c8aed 100644 --- a/mne/stats/_adjacency.py +++ b/mne/stats/_adjacency.py @@ -6,7 +6,7 @@ import numpy as np from scipy import sparse -from ..utils import _validate_type, _check_option +from ..utils import _check_option, _validate_type from ..utils.check import int_like diff --git a/mne/stats/cluster_level.py b/mne/stats/cluster_level.py index 94159c351e6..d428df8cef8 100644 --- a/mne/stats/cluster_level.py +++ b/mne/stats/cluster_level.py @@ -12,25 +12,25 @@ import numpy as np from scipy import ndimage, sparse from scipy.sparse.csgraph import connected_components -from scipy.stats import t as tstat, f as fstat +from scipy.stats import f as fstat +from scipy.stats import t as tstat - -from .parametric import f_oneway, ttest_1samp_no_p +from ..fixes import has_numba, jit from ..parallel import parallel_func -from ..fixes import jit, has_numba +from ..source_estimate import MixedSourceEstimate, SourceEstimate, VolSourceEstimate +from ..source_space import SourceSpaces from ..utils import ( - split_list, - logger, - verbose, ProgressBar, - warn, - _pl, - check_random_state, _check_option, + _pl, _validate_type, + check_random_state, + logger, + split_list, + verbose, + warn, ) -from ..source_estimate import SourceEstimate, VolSourceEstimate, MixedSourceEstimate -from ..source_space import SourceSpaces +from .parametric import f_oneway, ttest_1samp_no_p def _get_buddies_fallback(r, s, neighbors, indices=None): diff --git a/mne/stats/parametric.py b/mne/stats/parametric.py index 6de66fe6dc0..68e424e1a2f 100644 --- a/mne/stats/parametric.py +++ b/mne/stats/parametric.py @@ -8,8 +8,8 @@ from string import ascii_uppercase import numpy as np -from scipy.signal import detrend from scipy import stats +from scipy.signal import detrend from ..utils import _check_option diff --git a/mne/stats/permutations.py b/mne/stats/permutations.py index 53a75686102..ac983208670 100644 --- a/mne/stats/permutations.py +++ b/mne/stats/permutations.py @@ -5,10 +5,11 @@ # License: Simplified BSD from math import sqrt + import numpy as np -from ..utils import check_random_state, verbose, logger from ..parallel import parallel_func +from ..utils import check_random_state, logger, verbose def _max_stat(X, X2, perms, dof_scaling): diff --git a/mne/stats/regression.py b/mne/stats/regression.py index d32853f1420..e005832824b 100644 --- a/mne/stats/regression.py +++ b/mne/stats/regression.py @@ -6,17 +6,17 @@ # # License: BSD-3-Clause -from inspect import isgenerator from collections import namedtuple +from inspect import isgenerator import numpy as np from scipy import linalg, sparse, stats -from ..source_estimate import SourceEstimate +from .._fiff.pick import _picks_to_idx, pick_info, pick_types from ..epochs import BaseEpochs from ..evoked import Evoked, EvokedArray -from ..utils import logger, _reject_data_segments, warn, fill_doc -from .._fiff.pick import pick_types, pick_info, _picks_to_idx +from ..source_estimate import SourceEstimate +from ..utils import _reject_data_segments, fill_doc, logger, warn def linear_regression(inst, design_matrix, names=None): diff --git a/mne/stats/tests/test_adjacency.py b/mne/stats/tests/test_adjacency.py index c0f4a08a001..9c3ec8a3133 100644 --- a/mne/stats/tests/test_adjacency.py +++ b/mne/stats/tests/test_adjacency.py @@ -2,8 +2,8 @@ # # License: Simplified BSD -import pytest import numpy as np +import pytest from numpy.testing import assert_array_equal from mne.stats import combine_adjacency diff --git a/mne/stats/tests/test_cluster_level.py b/mne/stats/tests/test_cluster_level.py index 5623c706bbc..7f185042329 100644 --- a/mne/stats/tests/test_cluster_level.py +++ b/mne/stats/tests/test_cluster_level.py @@ -3,32 +3,31 @@ # # License: BSD-3-Clause -from functools import partial import os +from functools import partial import numpy as np -from scipy import sparse, linalg, stats +import pytest from numpy.testing import ( - assert_equal, - assert_array_equal, - assert_array_almost_equal, assert_allclose, + assert_array_almost_equal, + assert_array_equal, + assert_equal, ) -import pytest +from scipy import linalg, sparse, stats -from mne import SourceEstimate, VolSourceEstimate, MixedSourceEstimate, SourceSpaces -from mne.stats import ttest_ind_no_p, combine_adjacency +from mne import MixedSourceEstimate, SourceEstimate, SourceSpaces, VolSourceEstimate +from mne.stats import combine_adjacency, ttest_ind_no_p from mne.stats.cluster_level import ( - permutation_cluster_test, f_oneway, permutation_cluster_1samp_test, - spatio_temporal_cluster_test, + permutation_cluster_test, spatio_temporal_cluster_1samp_test, - ttest_1samp_no_p, + spatio_temporal_cluster_test, summarize_clusters_stc, + ttest_1samp_no_p, ) -from mne.utils import catch_logging, _record_warnings - +from mne.utils import _record_warnings, catch_logging n_space = 50 diff --git a/mne/stats/tests/test_multi_comp.py b/mne/stats/tests/test_multi_comp.py index 84470e0fdf1..6bd2edd4f2a 100644 --- a/mne/stats/tests/test_multi_comp.py +++ b/mne/stats/tests/test_multi_comp.py @@ -1,9 +1,9 @@ import numpy as np -from numpy.testing import assert_almost_equal, assert_allclose, assert_array_equal -from scipy import stats import pytest +from numpy.testing import assert_allclose, assert_almost_equal, assert_array_equal +from scipy import stats -from mne.stats import fdr_correction, bonferroni_correction +from mne.stats import bonferroni_correction, fdr_correction def test_bonferroni_pval_clip(): diff --git a/mne/stats/tests/test_parametric.py b/mne/stats/tests/test_parametric.py index c945626b22e..698a4b9271e 100644 --- a/mne/stats/tests/test_parametric.py +++ b/mne/stats/tests/test_parametric.py @@ -1,13 +1,13 @@ from functools import partial from itertools import product -import pytest -from numpy.testing import assert_array_almost_equal, assert_allclose, assert_array_less import numpy as np +import pytest import scipy.stats +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_less import mne -from mne.stats.parametric import f_mway_rm, f_threshold_mway_rm, _map_effects +from mne.stats.parametric import _map_effects, f_mway_rm, f_threshold_mway_rm # hardcoded external test results, manually transferred test_external = { diff --git a/mne/stats/tests/test_permutations.py b/mne/stats/tests/test_permutations.py index 245ac140182..891b0fa8529 100644 --- a/mne/stats/tests/test_permutations.py +++ b/mne/stats/tests/test_permutations.py @@ -2,16 +2,16 @@ # # License: BSD-3-Clause -from numpy.testing import assert_array_equal, assert_allclose import numpy as np -from scipy import stats, sparse import pytest +from numpy.testing import assert_allclose, assert_array_equal +from scipy import sparse, stats from mne.stats import permutation_cluster_1samp_test from mne.stats.permutations import ( - permutation_t_test, _ci, bootstrap_confidence_interval, + permutation_t_test, ) diff --git a/mne/stats/tests/test_regression.py b/mne/stats/tests/test_regression.py index 1e9f8f8384f..190e3ceff87 100644 --- a/mne/stats/tests/test_regression.py +++ b/mne/stats/tests/test_regression.py @@ -5,16 +5,15 @@ # License: BSD-3-Clause import numpy as np -from numpy.testing import assert_array_equal, assert_allclose, assert_equal import pytest - +from numpy.testing import assert_allclose, assert_array_equal, assert_equal from scipy.signal.windows import hann import mne from mne import read_source_estimate from mne.datasets import testing -from mne.stats.regression import linear_regression, linear_regression_raw from mne.io import RawArray +from mne.stats.regression import linear_regression, linear_regression_raw data_path = testing.data_path(download=False) stc_fname = data_path / "MEG" / "sample" / "sample_audvis_trunc-meg-lh.stc" diff --git a/mne/surface.py b/mne/surface.py index 1f75a764aaf..b042361305a 100644 --- a/mne/surface.py +++ b/mne/surface.py @@ -8,13 +8,13 @@ # Many of the computations in this code were derived from Matti Hämäläinen's # C code. -from copy import deepcopy -from functools import partial, lru_cache +import time +import warnings from collections import OrderedDict +from copy import deepcopy +from functools import lru_cache, partial from glob import glob from os import path as op -import time -import warnings import numpy as np from scipy.ndimage import binary_dilation @@ -22,37 +22,36 @@ from scipy.spatial import ConvexHull, Delaunay from scipy.spatial.distance import cdist -from .fixes import jit, prange, bincount from ._fiff.constants import FIFF from ._fiff.pick import pick_types +from .fixes import bincount, jit, prange from .parallel import parallel_func from .transforms import ( - transform_surface_to, - _pol_to_cart, + Transform, _cart_to_sph, _get_trans, + _pol_to_cart, apply_trans, - Transform, + transform_surface_to, ) from .utils import ( - logger, - verbose, - get_subjects_dir, - warn, _check_fname, + _check_freesurfer_home, _check_option, _ensure_int, - _TempDir, - run_subprocess, - _check_freesurfer_home, _hashable_ndarray, - fill_doc, - _validate_type, - _pl, _import_nibabel, + _pl, + _TempDir, + _validate_type, + fill_doc, + get_subjects_dir, + logger, + run_subprocess, + verbose, + warn, ) - ############################################################################### # AUTOMATED SURFACE FINDING @@ -181,7 +180,7 @@ def get_meg_helmet_surf(info, trans=None, verbose=None): A built-in helmet is loaded if possible. If not, a helmet surface will be approximated based on the sensor locations. """ - from .bem import read_bem_surfaces, _fit_sphere + from .bem import _fit_sphere, read_bem_surfaces from .channels.channels import _get_meg_system system, have_helmet = _get_meg_system(info) @@ -1332,8 +1331,8 @@ def _decimate_surface_vtk(points, triangles, n_triangles): """Aux function.""" try: from vtkmodules.util.numpy_support import numpy_to_vtk, numpy_to_vtkIdTypeArray - from vtkmodules.vtkCommonDataModel import vtkPolyData, vtkCellArray from vtkmodules.vtkCommonCore import vtkPoints + from vtkmodules.vtkCommonDataModel import vtkCellArray, vtkPolyData from vtkmodules.vtkFiltersCore import vtkQuadricDecimation except ImportError: raise ValueError("This function requires the VTK package to be " "installed") @@ -1882,14 +1881,14 @@ def _marching_cubes(image, level, smooth=0, fill_hole_size=None, use_flying_edge # Also vtkDiscreteFlyingEdges3D should be faster. # If we ever want not-discrete (continuous/float) marching cubes, # we should probably use vtkFlyingEdges3D rather than vtkMarchingCubes. - from vtkmodules.vtkCommonDataModel import vtkImageData, vtkDataSetAttributes + from vtkmodules.util.numpy_support import numpy_to_vtk, vtk_to_numpy + from vtkmodules.vtkCommonDataModel import vtkDataSetAttributes, vtkImageData from vtkmodules.vtkFiltersCore import vtkThreshold from vtkmodules.vtkFiltersGeneral import ( vtkDiscreteFlyingEdges3D, vtkDiscreteMarchingCubes, ) from vtkmodules.vtkFiltersGeometry import vtkGeometryFilter - from vtkmodules.util.numpy_support import vtk_to_numpy, numpy_to_vtk if image.ndim != 3: raise ValueError(f"3D data must be supplied, got {image.shape}") @@ -2033,8 +2032,8 @@ def get_montage_volume_labels( colors : dict The Freesurfer lookup table colors for the labels. """ + from ._freesurfer import _get_aseg, read_freesurfer_lut from .channels import DigMontage - from ._freesurfer import read_freesurfer_lut, _get_aseg _validate_type(montage, DigMontage, "montage") _validate_type(dist, (int, float), "dist") diff --git a/mne/tests/test_annotations.py b/mne/tests/test_annotations.py index be1082575a9..10325544fcc 100644 --- a/mne/tests/test_annotations.py +++ b/mne/tests/test_annotations.py @@ -5,46 +5,46 @@ import sys from collections import OrderedDict -from datetime import datetime, timezone, timedelta +from datetime import datetime, timedelta, timezone from itertools import repeat from pathlib import Path +import numpy as np import pytest -from pytest import approx from numpy.testing import ( - assert_equal, - assert_array_equal, - assert_array_almost_equal, assert_allclose, + assert_array_almost_equal, + assert_array_equal, + assert_equal, ) - -import numpy as np +from pytest import approx import mne from mne import ( - create_info, - read_annotations, + Annotations, + Epochs, annotations_from_events, - events_from_annotations, count_annotations, + create_info, + events_from_annotations, + read_annotations, ) -from mne import Epochs, Annotations -from mne.utils import ( - catch_logging, - assert_and_remove_boundary_annot, - _raw_annot, - _dt_to_stamp, - _stamp_to_dt, - check_version, - _record_warnings, -) -from mne.io import read_raw_fif, RawArray, concatenate_raws from mne.annotations import ( - _sync_onset, _handle_meas_date, _read_annotations_txt_parse_header, + _sync_onset, ) from mne.datasets import testing +from mne.io import RawArray, concatenate_raws, read_raw_fif +from mne.utils import ( + _dt_to_stamp, + _raw_annot, + _record_warnings, + _stamp_to_dt, + assert_and_remove_boundary_annot, + catch_logging, + check_version, +) data_path = testing.data_path(download=False) data_dir = data_path / "MEG" / "sample" diff --git a/mne/tests/test_bem.py b/mne/tests/test_bem.py index e99bbda260e..82c40553622 100644 --- a/mne/tests/test_bem.py +++ b/mne/tests/test_bem.py @@ -10,40 +10,40 @@ import numpy as np import pytest -from numpy.testing import assert_equal, assert_allclose +from numpy.testing import assert_allclose, assert_equal import mne from mne import ( + Info, + Transform, make_bem_model, - read_bem_surfaces, - write_bem_surfaces, make_bem_solution, + make_sphere_model, read_bem_solution, + read_bem_surfaces, write_bem_solution, - make_sphere_model, - Transform, - Info, - write_surface, + write_bem_surfaces, write_head_bem, + write_surface, ) -from mne.preprocessing.maxfilter import fit_sphere_to_headshape from mne._fiff.constants import FIFF -from mne.transforms import translation -from mne.datasets import testing -from mne.utils import catch_logging, check_version from mne.bem import ( - _ico_downsample, - _get_ico_map, - _order_surfaces, _assert_complete_surface, _assert_inside, - _check_surface_size, _bem_find_surface, - make_scalp_surfaces, + _check_surface_size, + _get_ico_map, + _ico_downsample, + _order_surfaces, distance_to_bem, + make_scalp_surfaces, ) -from mne.surface import read_surface, _get_ico_surface +from mne.datasets import testing from mne.io import read_info +from mne.preprocessing.maxfilter import fit_sphere_to_headshape +from mne.surface import _get_ico_surface, read_surface +from mne.transforms import translation +from mne.utils import catch_logging, check_version fname_raw = Path(__file__).parent.parent / "io" / "tests" / "data" / "test_raw.fif" subjects_dir = testing.data_path(download=False) / "subjects" diff --git a/mne/tests/test_chpi.py b/mne/tests/test_chpi.py index 1e9b249ce02..21145445ed9 100644 --- a/mne/tests/test_chpi.py +++ b/mne/tests/test_chpi.py @@ -5,44 +5,44 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_allclose, assert_array_less, assert_array_equal +import pytest +from numpy.testing import assert_allclose, assert_array_equal, assert_array_less from scipy.interpolate import interp1d from scipy.spatial.distance import cdist -import pytest -from mne import pick_types, pick_info -from mne.forward._compute_forward import _MAG_FACTOR -from mne.io import ( - read_raw_fif, - read_raw_artemis123, - read_raw_ctf, - read_info, - RawArray, - read_raw_kit, -) +from mne import pick_info, pick_types from mne._fiff.constants import FIFF from mne.chpi import ( + _chpi_locs_to_times_dig, + _compute_good_distances, + _get_hpi_initial_fit, + _setup_ext_proj, compute_chpi_amplitudes, compute_chpi_locs, compute_chpi_snr, compute_head_pos, - _setup_ext_proj, - _chpi_locs_to_times_dig, - _compute_good_distances, extract_chpi_locs_ctf, - head_pos_to_trans_rot_t, - read_head_pos, - write_head_pos, + extract_chpi_locs_kit, filter_chpi, get_active_chpi, get_chpi_info, - _get_hpi_initial_fit, - extract_chpi_locs_kit, + head_pos_to_trans_rot_t, + read_head_pos, + write_head_pos, ) from mne.datasets import testing +from mne.forward._compute_forward import _MAG_FACTOR +from mne.io import ( + RawArray, + read_info, + read_raw_artemis123, + read_raw_ctf, + read_raw_fif, + read_raw_kit, +) from mne.simulation import add_chpi -from mne.transforms import rot_to_quat, _angle_between_quats -from mne.utils import catch_logging, assert_meg_snr, verbose, object_diff +from mne.transforms import _angle_between_quats, rot_to_quat +from mne.utils import assert_meg_snr, catch_logging, object_diff, verbose from mne.viz import plot_head_positions base_dir = Path(__file__).parent.parent / "io" / "tests" / "data" diff --git a/mne/tests/test_coreg.py b/mne/tests/test_coreg.py index fa80eff9dd7..b106b14c4b2 100644 --- a/mne/tests/test_coreg.py +++ b/mne/tests/test_coreg.py @@ -3,44 +3,44 @@ from glob import glob from shutil import copyfile -import pytest import numpy as np +import pytest from numpy.testing import ( - assert_array_almost_equal, assert_allclose, + assert_array_almost_equal, assert_array_equal, assert_array_less, ) import mne +from mne._fiff.constants import FIFF +from mne.channels import DigMontage +from mne.coreg import ( + Coregistration, + _is_mri_subject, + coregister_fiducials, + create_default_subject, + fit_matched_points, + get_mni_fiducials, + scale_labels, + scale_mri, + scale_source_space, +) from mne.datasets import testing +from mne.io import read_fiducials, read_info +from mne.source_space import write_source_spaces from mne.transforms import ( Transform, + _angle_between_quats, apply_trans, - rotation, - translation, - scaling, + invert_transform, read_trans, - _angle_between_quats, rot_to_quat, - invert_transform, -) -from mne.coreg import ( - fit_matched_points, - create_default_subject, - scale_mri, - _is_mri_subject, - scale_labels, - scale_source_space, - coregister_fiducials, - get_mni_fiducials, - Coregistration, + rotation, + scaling, + translation, ) -from mne.io import read_fiducials, read_info -from mne._fiff.constants import FIFF from mne.utils import catch_logging -from mne.source_space import write_source_spaces -from mne.channels import DigMontage data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/tests/test_cov.py b/mne/tests/test_cov.py index 2a87f94d666..f7dd2ffce9e 100644 --- a/mne/tests/test_cov.py +++ b/mne/tests/test_cov.py @@ -8,50 +8,49 @@ from inspect import signature from pathlib import Path +import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, assert_equal, - assert_allclose, -) -import pytest -import numpy as np - -from mne.cov import ( - regularize, - whiten_evoked, - _auto_low_rank_model, - prepare_noise_cov, - compute_whitener, - _regularized_covariance, ) from mne import ( - read_cov, - write_cov, Epochs, - merge_events, - find_events, - compute_raw_covariance, compute_covariance, - read_evokeds, compute_proj_raw, - pick_channels_cov, - pick_types, + compute_rank, + compute_raw_covariance, + create_info, + find_events, make_ad_hoc_cov, make_fixed_length_events, - create_info, + merge_events, + pick_channels_cov, pick_info, - compute_rank, + pick_types, + read_cov, + read_evokeds, + write_cov, ) +from mne._fiff.pick import _DATA_CH_TYPES_SPLIT from mne.channels import equalize_channels +from mne.cov import ( + _auto_low_rank_model, + _regularized_covariance, + compute_whitener, + prepare_noise_cov, + regularize, + whiten_evoked, +) from mne.datasets import testing from mne.fixes import _safe_svd -from mne.io import read_raw_fif, RawArray, read_raw_ctf, read_info -from mne._fiff.pick import _DATA_CH_TYPES_SPLIT +from mne.io import RawArray, read_info, read_raw_ctf, read_raw_fif from mne.preprocessing import maxwell_filter from mne.rank import _compute_rank_int -from mne.utils import catch_logging, assert_snr, _record_warnings +from mne.utils import _record_warnings, assert_snr, catch_logging base_dir = Path(__file__).parent.parent / "io" / "tests" / "data" cov_fname = base_dir / "test-cov.fif" diff --git a/mne/tests/test_defaults.py b/mne/tests/test_defaults.py index 58d5979fff3..235f8457623 100644 --- a/mne/tests/test_defaults.py +++ b/mne/tests/test_defaults.py @@ -2,6 +2,7 @@ import pytest from numpy.testing import assert_allclose + from mne.defaults import _handle_default from mne.io.base import _get_scaling diff --git a/mne/tests/test_dipole.py b/mne/tests/test_dipole.py index f5750a2bd44..26cde7a3ea4 100644 --- a/mne/tests/test_dipole.py +++ b/mne/tests/test_dipole.py @@ -4,47 +4,45 @@ import os -import numpy as np -from numpy.testing import assert_allclose, assert_array_equal, assert_array_less import matplotlib.pyplot as plt +import numpy as np import pytest +from numpy.testing import assert_allclose, assert_array_equal, assert_array_less from mne import ( - read_dipole, - read_forward_solution, - convert_forward_solution, - read_evokeds, - read_cov, - SourceEstimate, - write_evokeds, - fit_dipole, - transform_surface_to, - make_sphere_model, - pick_types, - pick_info, - EvokedArray, - read_source_spaces, - make_ad_hoc_cov, - make_forward_solution, Dipole, DipoleFixed, Epochs, - make_fixed_length_events, Evoked, + EvokedArray, + SourceEstimate, + convert_forward_solution, + fit_dipole, head_to_mni, + make_ad_hoc_cov, + make_fixed_length_events, + make_forward_solution, + make_sphere_model, + pick_info, + pick_types, + read_cov, + read_dipole, + read_evokeds, + read_forward_solution, + read_source_spaces, + transform_surface_to, + write_evokeds, ) -from mne.dipole import get_phantom_dipoles, _BDIP_ERROR_KEYS -from mne.simulation import simulate_evoked +from mne._fiff.constants import FIFF +from mne.bem import _bem_find_surface, read_bem_solution from mne.datasets import testing -from mne.utils import requires_mne, run_subprocess, _record_warnings +from mne.dipole import _BDIP_ERROR_KEYS, get_phantom_dipoles +from mne.io import read_raw_ctf, read_raw_fif from mne.proj import make_eeg_average_ref_proj - -from mne.io import read_raw_fif, read_raw_ctf -from mne._fiff.constants import FIFF - +from mne.simulation import simulate_evoked from mne.surface import _compute_nearest -from mne.bem import _bem_find_surface, read_bem_solution -from mne.transforms import apply_trans, _get_trans +from mne.transforms import _get_trans, apply_trans +from mne.utils import _record_warnings, requires_mne, run_subprocess data_path = testing.data_path(download=False) meg_path = data_path / "MEG" / "sample" diff --git a/mne/tests/test_docstring_parameters.py b/mne/tests/test_docstring_parameters.py index d18d9672c48..181a757d0d2 100644 --- a/mne/tests/test_docstring_parameters.py +++ b/mne/tests/test_docstring_parameters.py @@ -4,9 +4,9 @@ import importlib import inspect +import re from pathlib import Path from pkgutil import walk_packages -import re import pytest diff --git a/mne/tests/test_epochs.py b/mne/tests/test_epochs.py index 3a7f0a7451e..9f72be1803a 100644 --- a/mne/tests/test_epochs.py +++ b/mne/tests/test_epochs.py @@ -11,62 +11,62 @@ from io import BytesIO from pathlib import Path +import numpy as np import pytest +import scipy.signal +from numpy.fft import rfft, rfftfreq from numpy.testing import ( - assert_array_equal, - assert_array_almost_equal, assert_allclose, - assert_equal, + assert_array_almost_equal, + assert_array_equal, assert_array_less, + assert_equal, ) -import numpy as np -from numpy.fft import rfft, rfftfreq -import scipy.signal import mne from mne import ( - Epochs, Annotations, - read_events, - pick_events, - read_epochs, + Epochs, + combine_evoked, + create_info, equalize_channels, - pick_types, + make_fixed_length_epochs, + make_fixed_length_events, pick_channels, + pick_events, + pick_types, + read_epochs, + read_events, read_evokeds, write_evokeds, - create_info, - make_fixed_length_events, - make_fixed_length_epochs, - combine_evoked, ) +from mne._fiff.constants import FIFF +from mne._fiff.proj import _has_eeg_average_ref_proj +from mne._fiff.write import INT32_MAX, _get_split_size, write_float, write_int from mne.annotations import _handle_meas_date from mne.baseline import rescale +from mne.chpi import head_pos_to_trans_rot_t, read_head_pos from mne.datasets import testing -from mne.chpi import read_head_pos, head_pos_to_trans_rot_t -from mne.event import merge_events -from mne.io import RawArray, read_raw_fif -from mne._fiff.constants import FIFF -from mne._fiff.proj import _has_eeg_average_ref_proj -from mne._fiff.write import write_int, INT32_MAX, _get_split_size, write_float -from mne.preprocessing import maxwell_filter from mne.epochs import ( + BaseEpochs, + EpochsArray, + _handle_event_repeated, + average_movements, bootstrap, - equalize_epoch_counts, combine_event_ids, - EpochsArray, concatenate_epochs, - BaseEpochs, - average_movements, - _handle_event_repeated, + equalize_epoch_counts, make_metadata, ) +from mne.event import merge_events +from mne.io import RawArray, read_raw_fif +from mne.preprocessing import maxwell_filter from mne.utils import ( + _dt_to_stamp, + assert_meg_snr, + catch_logging, object_diff, use_log_level, - catch_logging, - assert_meg_snr, - _dt_to_stamp, ) data_path = testing.data_path(download=False) diff --git a/mne/tests/test_event.py b/mne/tests/test_event.py index 212bc8a9d98..3f2b8137345 100644 --- a/mne/tests/test_event.py +++ b/mne/tests/test_event.py @@ -6,38 +6,38 @@ from pathlib import Path import numpy as np +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, assert_equal, - assert_allclose, ) -import pytest from mne import ( - read_events, - write_events, - make_fixed_length_events, + Annotations, + Epochs, + compute_raw_covariance, + count_events, + create_info, find_events, - pick_events, find_stim_steps, + make_fixed_length_events, pick_channels, + pick_events, + read_events, read_evokeds, - Epochs, - create_info, - compute_raw_covariance, - Annotations, - count_events, + write_events, ) -from mne.io import read_raw_fif, RawArray +from mne.datasets import testing from mne.event import ( + AcqParserFIF, define_target_events, + match_event_names, merge_events, - AcqParserFIF, shift_time_events, - match_event_names, ) -from mne.datasets import testing +from mne.io import RawArray, read_raw_fif base_dir = Path(__file__).parent.parent / "io" / "tests" / "data" fname = base_dir / "test-eve.fif" diff --git a/mne/tests/test_evoked.py b/mne/tests/test_evoked.py index 040978c9ff9..9820dcdb5e3 100644 --- a/mne/tests/test_evoked.py +++ b/mne/tests/test_evoked.py @@ -10,29 +10,29 @@ from pathlib import Path import numpy as np -from scipy import fftpack +import pytest from numpy.testing import ( + assert_allclose, assert_array_almost_equal, - assert_equal, assert_array_equal, - assert_allclose, + assert_equal, ) -import pytest +from scipy import fftpack from mne import ( + Epochs, + EpochsArray, + combine_evoked, + create_info, equalize_channels, pick_types, + read_events, read_evokeds, write_evokeds, - combine_evoked, - create_info, - read_events, - Epochs, - EpochsArray, ) -from mne.evoked import _get_peak, Evoked, EvokedArray -from mne.io import read_raw_fif from mne._fiff.constants import FIFF +from mne.evoked import Evoked, EvokedArray, _get_peak +from mne.io import read_raw_fif from mne.utils import grand_average base_dir = Path(__file__).parent.parent / "io" / "tests" / "data" diff --git a/mne/tests/test_filter.py b/mne/tests/test_filter.py index b3770abb7c4..552489f45d1 100644 --- a/mne/tests/test_filter.py +++ b/mne/tests/test_filter.py @@ -1,34 +1,34 @@ import numpy as np +import pytest +from numpy.fft import fft, fftfreq from numpy.testing import ( - assert_array_almost_equal, + assert_allclose, assert_almost_equal, + assert_array_almost_equal, assert_array_equal, - assert_allclose, assert_array_less, ) -import pytest -from scipy.signal import resample as sp_resample, butter, freqz, sosfreqz +from scipy.signal import butter, freqz, sosfreqz +from scipy.signal import resample as sp_resample -from mne import create_info, Epochs -from numpy.fft import fft, fftfreq -from mne.io import RawArray, read_raw_fif +from mne import Epochs, create_info from mne._fiff.pick import _DATA_CH_TYPES_SPLIT from mne.filter import ( - filter_data, - resample, - _resample_stim_channels, - construct_iir_filter, - notch_filter, - detrend, + _length_factors, _overlap_add_filter, + _resample_stim_channels, _smart_pad, + construct_iir_filter, + create_filter, design_mne_c_filter, + detrend, estimate_ringing_samples, - create_filter, - _length_factors, + filter_data, + notch_filter, + resample, ) - -from mne.utils import sum_squared, catch_logging, requires_mne, run_subprocess +from mne.io import RawArray, read_raw_fif +from mne.utils import catch_logging, requires_mne, run_subprocess, sum_squared def test_filter_array(): diff --git a/mne/tests/test_freesurfer.py b/mne/tests/test_freesurfer.py index 30c8e39d5dd..f60993bddf1 100644 --- a/mne/tests/test_freesurfer.py +++ b/mne/tests/test_freesurfer.py @@ -6,20 +6,20 @@ import mne from mne import ( - vertex_to_mni, + get_volume_labels_from_aseg, head_to_mni, - read_talxfm, read_freesurfer_lut, - get_volume_labels_from_aseg, + read_talxfm, + vertex_to_mni, ) -from mne.datasets import testing from mne._freesurfer import ( - _get_mgz_header, _check_subject_dir, - read_lta, _estimate_talxfm_rigid, + _get_mgz_header, + read_lta, ) -from mne.transforms import apply_trans, _get_trans, rot_to_quat, _angle_between_quats +from mne.datasets import testing +from mne.transforms import _angle_between_quats, _get_trans, apply_trans, rot_to_quat data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/tests/test_import_nesting.py b/mne/tests/test_import_nesting.py index f52a2bf837b..f4fe63d1469 100644 --- a/mne/tests/test_import_nesting.py +++ b/mne/tests/test_import_nesting.py @@ -5,14 +5,14 @@ import ast import glob import os -from pathlib import Path import sys +from pathlib import Path from types import ModuleType + import pytest import mne -from mne.utils import run_subprocess, logger, _pl - +from mne.utils import _pl, logger, run_subprocess # To avoid circular import issues, we have a defined order of submodule # priority. A submodule should nest an import from another submodule if and @@ -141,12 +141,12 @@ def generic_visit(self, node): ("mne/utils/docs.py", " import mne", "non-relative mne import"), ( "mne/io/_read_raw.py", - " from . import read_raw_edf, read_raw_bdf, read_raw_gdf, read_raw_brainvision, read_raw_fif, read_raw_eeglab, read_raw_cnt, read_raw_egi, read_raw_eximia, read_raw_nirx, read_raw_fieldtrip, read_raw_artemis123, read_raw_nicolet, read_raw_kit, read_raw_ctf, read_raw_boxy, read_raw_snirf, read_raw_fil, read_raw_nihon, read_raw_curry, read_raw_nedf", # noqa: E501 + " from . import read_raw_artemis123, read_raw_bdf, read_raw_boxy, read_raw_brainvision, read_raw_cnt, read_raw_ctf, read_raw_curry, read_raw_edf, read_raw_eeglab, read_raw_egi, read_raw_eximia, read_raw_fieldtrip, read_raw_fif, read_raw_fil, read_raw_gdf, read_raw_kit, read_raw_nedf, read_raw_nicolet, read_raw_nihon, read_raw_nirx, read_raw_snirf", # noqa: E501 "non-explicit relative import", ), ( "mne/datasets/utils.py", - " from . import eegbci, sleep_physionet, limo, fetch_fsaverage, fetch_infant_template, fetch_hcp_mmp_parcellation, fetch_phantom", # noqa: E501 + " from . import eegbci, fetch_fsaverage, fetch_hcp_mmp_parcellation, fetch_infant_template, fetch_phantom, limo, sleep_physionet", # noqa: E501 "non-explicit relative import", ), ( diff --git a/mne/tests/test_label.py b/mne/tests/test_label.py index a7126401997..a3b4f74435c 100644 --- a/mne/tests/test_label.py +++ b/mne/tests/test_label.py @@ -10,48 +10,46 @@ from pathlib import Path import numpy as np -from scipy import sparse - +import pytest from numpy.testing import ( - assert_array_equal, - assert_array_almost_equal, - assert_equal, assert_allclose, + assert_array_almost_equal, + assert_array_equal, assert_array_less, + assert_equal, ) -import pytest +from scipy import sparse -from mne.datasets import testing from mne import ( + grow_labels, + labels_to_stc, + morph_labels, + random_parcellation, read_label, - stc_to_label, + read_labels_from_annot, read_source_estimate, read_source_spaces, - grow_labels, - read_labels_from_annot, - write_labels_to_annot, - split_label, - spatial_tris_adjacency, read_surface, - random_parcellation, - morph_labels, - labels_to_stc, + spatial_tris_adjacency, + split_label, + stc_to_label, + write_labels_to_annot, ) +from mne.datasets import testing from mne.label import ( Label, _blend_colors, - label_sign_flip, _load_vert_pos, - select_sources, _n_colors, _read_annot, _read_annot_cands, + label_sign_flip, + select_sources, ) -from mne.source_space import SourceSpaces from mne.source_estimate import mesh_edges +from mne.source_space import SourceSpaces from mne.surface import _mesh_borders -from mne.utils import get_subjects_dir, _record_warnings - +from mne.utils import _record_warnings, get_subjects_dir data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/tests/test_line_endings.py b/mne/tests/test_line_endings.py index bc5744c4e8f..6dcacf554a2 100644 --- a/mne/tests/test_line_endings.py +++ b/mne/tests/test_line_endings.py @@ -4,14 +4,13 @@ # License: BSD-3-Clause import os -from os import path as op import sys +from os import path as op import pytest from mne.utils import _get_root_dir - skip_files = ( # known crlf "FreeSurferColorLUT.txt", diff --git a/mne/tests/test_morph.py b/mne/tests/test_morph.py index 0dc6ae2e086..f26da4ca6b2 100644 --- a/mne/tests/test_morph.py +++ b/mne/tests/test_morph.py @@ -3,39 +3,40 @@ # License: BSD-3-Clause from inspect import signature -import pytest import numpy as np -from numpy.testing import assert_array_less, assert_allclose, assert_array_equal +import pytest +from numpy.testing import assert_allclose, assert_array_equal, assert_array_less +from scipy.sparse import csr_matrix +from scipy.sparse import eye as speye from scipy.spatial.distance import cdist -from scipy.sparse import csr_matrix, eye as speye import mne from mne import ( SourceEstimate, - VolSourceEstimate, - VectorSourceEstimate, - read_evokeds, SourceMorph, + VectorSourceEstimate, + VolSourceEstimate, + VolVectorSourceEstimate, compute_source_morph, - read_source_morph, - read_source_estimate, - read_forward_solution, + get_volume_labels_from_aseg, grade_to_vertices, - setup_volume_source_space, + make_ad_hoc_cov, make_forward_solution, make_sphere_model, - make_ad_hoc_cov, - VolVectorSourceEstimate, - get_volume_labels_from_aseg, + read_evokeds, + read_forward_solution, read_freesurfer_lut, + read_source_estimate, + read_source_morph, + setup_volume_source_space, ) +from mne._freesurfer import _get_atlas_values, _get_mri_info_data from mne.datasets import testing from mne.fixes import _get_img_fdata -from mne._freesurfer import _get_mri_info_data, _get_atlas_values -from mne.minimum_norm import apply_inverse, read_inverse_operator, make_inverse_operator +from mne.minimum_norm import apply_inverse, make_inverse_operator, read_inverse_operator from mne.source_space._source_space import _add_interpolator, _grid_interp from mne.transforms import quat_to_rot -from mne.utils import catch_logging, _record_warnings +from mne.utils import _record_warnings, catch_logging # Setup paths diff --git a/mne/tests/test_morph_map.py b/mne/tests/test_morph_map.py index 036b7fa17b7..a5dfe563027 100644 --- a/mne/tests/test_morph_map.py +++ b/mne/tests/test_morph_map.py @@ -5,14 +5,14 @@ import os from shutil import copyfile -import pytest import numpy as np +import pytest from numpy.testing import assert_allclose from scipy import sparse -from mne.datasets import testing -from mne.utils import catch_logging, _record_warnings from mne import read_morph_map +from mne.datasets import testing +from mne.utils import _record_warnings, catch_logging data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/tests/test_ola.py b/mne/tests/test_ola.py index a364c534518..ab8935added 100644 --- a/mne/tests/test_ola.py +++ b/mne/tests/test_ola.py @@ -1,6 +1,6 @@ import numpy as np -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose from mne._ola import _COLA, _Interp2, _Storer diff --git a/mne/tests/test_parallel.py b/mne/tests/test_parallel.py index 80d60a02f7c..6f90e12de1b 100644 --- a/mne/tests/test_parallel.py +++ b/mne/tests/test_parallel.py @@ -2,9 +2,9 @@ # # License: BSD-3-Clause -from contextlib import nullcontext import multiprocessing import os +from contextlib import nullcontext import pytest diff --git a/mne/tests/test_proj.py b/mne/tests/test_proj.py index 7f4a79ae723..562d4e846f6 100644 --- a/mne/tests/test_proj.py +++ b/mne/tests/test_proj.py @@ -2,40 +2,40 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_array_almost_equal, assert_allclose, assert_equal import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_equal from scipy import linalg from mne import ( + Epochs, compute_proj_epochs, compute_proj_evoked, compute_proj_raw, - pick_types, - read_events, - Epochs, - sensitivity_map, - read_source_estimate, compute_raw_covariance, + convert_forward_solution, create_info, + pick_types, + read_events, read_forward_solution, - convert_forward_solution, + read_source_estimate, + sensitivity_map, ) -from mne.cov import regularize, compute_whitener -from mne.datasets import testing -from mne.io import read_raw_fif, RawArray from mne._fiff.proj import ( - make_projector, + _EEG_AVREF_PICK_DICT, + _needs_eeg_average_ref_proj, activate_proj, + make_projector, setup_proj, - _needs_eeg_average_ref_proj, - _EEG_AVREF_PICK_DICT, ) +from mne.cov import compute_whitener, regularize +from mne.datasets import testing +from mne.io import RawArray, read_raw_fif from mne.preprocessing import maxwell_filter from mne.proj import ( + _has_eeg_average_ref_proj, + make_eeg_average_ref_proj, read_proj, write_proj, - make_eeg_average_ref_proj, - _has_eeg_average_ref_proj, ) from mne.rank import _compute_rank_int from mne.utils import _record_warnings diff --git a/mne/tests/test_rank.py b/mne/tests/test_rank.py index 4a513975684..f88dd68e282 100644 --- a/mne/tests/test_rank.py +++ b/mne/tests/test_rank.py @@ -1,27 +1,25 @@ import itertools from pathlib import Path -from numpy.testing import assert_array_equal import numpy as np - import pytest +from numpy.testing import assert_array_equal -from mne import read_evokeds, read_cov, compute_raw_covariance, pick_types, pick_info +from mne import compute_raw_covariance, pick_info, pick_types, read_cov, read_evokeds +from mne._fiff.pick import _picks_by_type +from mne._fiff.proj import _has_eeg_average_ref_proj from mne.cov import prepare_noise_cov from mne.datasets import testing from mne.io import read_raw_fif -from mne._fiff.pick import _picks_by_type -from mne._fiff.proj import _has_eeg_average_ref_proj from mne.proj import compute_proj_raw from mne.rank import ( - estimate_rank, - compute_rank, - _get_rank_sss, _compute_rank_int, _estimate_rank_raw, + _get_rank_sss, + compute_rank, + estimate_rank, ) - base_dir = Path(__file__).parent.parent / "io" / "tests" / "data" cov_fname = base_dir / "test-cov.fif" raw_fname = base_dir / "test_raw.fif" diff --git a/mne/tests/test_source_estimate.py b/mne/tests/test_source_estimate.py index 9b78113127c..2bfba7ce5fb 100644 --- a/mne/tests/test_source_estimate.py +++ b/mne/tests/test_source_estimate.py @@ -9,76 +9,75 @@ from shutil import copyfile import numpy as np +import pytest from numpy.fft import fft from numpy.testing import ( + assert_allclose, assert_array_almost_equal, assert_array_equal, - assert_allclose, - assert_equal, assert_array_less, + assert_equal, ) -import pytest from scipy import sparse from scipy.optimize import fmin_cobyla from scipy.spatial.distance import cdist import mne from mne import ( - stats, + Epochs, + EvokedArray, + Label, + MixedSourceEstimate, + MixedVectorSourceEstimate, SourceEstimate, + SourceSpaces, VectorSourceEstimate, VolSourceEstimate, - Label, - read_source_spaces, - read_evokeds, - MixedSourceEstimate, - find_events, - Epochs, - read_source_estimate, + VolVectorSourceEstimate, + compute_source_morph, + convert_forward_solution, extract_label_time_course, - spatio_temporal_tris_adjacency, - stc_near_sensors, - spatio_temporal_src_adjacency, - read_cov, - EvokedArray, - spatial_inter_hemi_adjacency, - read_forward_solution, - spatial_src_adjacency, - spatial_tris_adjacency, + find_events, + labels_to_stc, pick_info, - SourceSpaces, - VolVectorSourceEstimate, - read_trans, pick_types, - MixedVectorSourceEstimate, - setup_volume_source_space, - convert_forward_solution, pick_types_forward, - compute_source_morph, - labels_to_stc, + read_cov, + read_evokeds, + read_forward_solution, + read_source_estimate, + read_source_spaces, + read_trans, scale_mri, + setup_volume_source_space, + spatial_inter_hemi_adjacency, + spatial_src_adjacency, + spatial_tris_adjacency, + spatio_temporal_src_adjacency, + spatio_temporal_tris_adjacency, + stats, + stc_near_sensors, write_source_spaces, ) +from mne._fiff.constants import FIFF from mne.datasets import testing from mne.fixes import _get_img_fdata -from mne.io import read_info -from mne._fiff.constants import FIFF -from mne.morph_map import _make_morph_map_hemi -from mne.source_estimate import grade_to_tris, _get_vol_mask -from mne.source_space._source_space import _get_src_nn -from mne.transforms import apply_trans, invert_transform, transform_surface_to +from mne.io import read_info, read_raw_fif +from mne.label import label_sign_flip, read_labels_from_annot from mne.minimum_norm import ( - read_inverse_operator, apply_inverse, apply_inverse_epochs, make_inverse_operator, + read_inverse_operator, ) -from mne.label import read_labels_from_annot, label_sign_flip +from mne.morph_map import _make_morph_map_hemi +from mne.source_estimate import _get_vol_mask, grade_to_tris +from mne.source_space._source_space import _get_src_nn +from mne.transforms import apply_trans, invert_transform, transform_surface_to from mne.utils import ( - catch_logging, _record_warnings, + catch_logging, ) -from mne.io import read_raw_fif data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/tests/test_surface.py b/mne/tests/test_surface.py index 066632904d6..60b9fed5a17 100644 --- a/mne/tests/test_surface.py +++ b/mne/tests/test_surface.py @@ -4,38 +4,38 @@ from pathlib import Path -import pytest import numpy as np -from numpy.testing import assert_array_equal, assert_allclose, assert_equal +import pytest +from numpy.testing import assert_allclose, assert_array_equal, assert_equal from mne import ( - read_surface, - write_surface, decimate_surface, - pick_types, dig_mri_distances, get_montage_volume_labels, + pick_types, + read_surface, + write_surface, ) +from mne._fiff.constants import FIFF from mne.channels import make_dig_montage from mne.datasets import testing from mne.io import read_info -from mne._fiff.constants import FIFF from mne.surface import ( _compute_nearest, + _get_ico_surface, + _marching_cubes, + _normal_orth, + _project_onto_surface, + _read_patch, _tessellate_sphere, + _voxel_neighbors, fast_cross_3d, get_head_surf, - read_curvature, get_meg_helmet_surf, - _normal_orth, - _read_patch, - _marching_cubes, - _voxel_neighbors, - _project_onto_surface, - _get_ico_surface, + read_curvature, ) from mne.transforms import _get_trans -from mne.utils import catch_logging, object_diff, requires_freesurfer, _record_warnings +from mne.utils import _record_warnings, catch_logging, object_diff, requires_freesurfer data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/tests/test_transforms.py b/mne/tests/test_transforms.py index 4a533d9bf38..a09071d571b 100644 --- a/mne/tests/test_transforms.py +++ b/mne/tests/test_transforms.py @@ -6,52 +6,54 @@ import os from pathlib import Path -import pytest import numpy as np +import pytest from numpy.testing import ( - assert_array_equal, - assert_equal, assert_allclose, - assert_array_less, assert_almost_equal, + assert_array_equal, + assert_array_less, + assert_equal, ) import mne +from mne import read_trans, write_trans from mne.datasets import testing from mne.fixes import _get_img_fdata -from mne import read_trans, write_trans from mne.io import read_info from mne.transforms import ( - invert_transform, - _get_trans, - rotation, - rotation3d, - rotation_angles, + _angle_between_quats, + _average_quats, + _cart_to_sph, + _compute_r2, + _euler_to_quat, _find_trans, - combine_transforms, + _find_vector_rotation, + _fit_matched_points, + _get_trans, + _pol_to_cart, + _quat_real, + _quat_to_affine, + _quat_to_euler, + _read_fs_xfm, + _sph_to_cart, + _topo_to_sph, + _validate_pipeline, + _write_fs_xfm, apply_trans, - translation, + combine_transforms, get_ras_to_neuromag_trans, - _pol_to_cart, + invert_transform, quat_to_rot, rot_to_quat, - _angle_between_quats, - _find_vector_rotation, - _sph_to_cart, - _cart_to_sph, - _topo_to_sph, - _average_quats, - _SphericalSurfaceWarp as SphericalSurfaceWarp, + rotation, + rotation3d, rotation3d_align_z_axis, - _read_fs_xfm, - _write_fs_xfm, - _quat_real, - _fit_matched_points, - _quat_to_euler, - _euler_to_quat, - _quat_to_affine, - _compute_r2, - _validate_pipeline, + rotation_angles, + translation, +) +from mne.transforms import ( + _SphericalSurfaceWarp as SphericalSurfaceWarp, ) data_path = testing.data_path(download=False) diff --git a/mne/time_frequency/__init__.pyi b/mne/time_frequency/__init__.pyi index 258fa5ef96c..9fc0c271cc4 100644 --- a/mne/time_frequency/__init__.pyi +++ b/mne/time_frequency/__init__.pyi @@ -60,9 +60,9 @@ from .spectrum import ( read_spectrum, ) from .tfr import ( - _BaseTFR, AverageTFR, EpochsTFR, + _BaseTFR, fwhm, morlet, read_tfrs, diff --git a/mne/time_frequency/_stockwell.py b/mne/time_frequency/_stockwell.py index 6196ae59c92..e8c94be08ad 100644 --- a/mne/time_frequency/_stockwell.py +++ b/mne/time_frequency/_stockwell.py @@ -9,8 +9,8 @@ from scipy.fft import fft, fftfreq, ifft from .._fiff.pick import _pick_data_channels, pick_info -from ..utils import verbose, logger, fill_doc, _validate_type from ..parallel import parallel_func +from ..utils import _validate_type, fill_doc, logger, verbose from .tfr import AverageTFR, _get_data diff --git a/mne/time_frequency/ar.py b/mne/time_frequency/ar.py index ab3110f23d2..0baccac31f0 100644 --- a/mne/time_frequency/ar.py +++ b/mne/time_frequency/ar.py @@ -6,9 +6,9 @@ import numpy as np from scipy import linalg +from .._fiff.pick import _picks_by_type, _picks_to_idx, pick_info from ..defaults import _handle_default -from .._fiff.pick import _picks_to_idx, _picks_by_type, pick_info -from ..utils import verbose, _apply_scaling_array +from ..utils import _apply_scaling_array, verbose def _yule_walker(X, order=1): diff --git a/mne/time_frequency/csd.py b/mne/time_frequency/csd.py index 1adf684950e..78ff9d95bcc 100644 --- a/mne/time_frequency/csd.py +++ b/mne/time_frequency/csd.py @@ -10,26 +10,26 @@ import numpy as np from scipy.fft import rfftfreq -from .tfr import _cwt_array, morlet, _get_nfft, EpochsTFR -from .._fiff.pick import pick_channels, _picks_to_idx +from .._fiff.pick import _picks_to_idx, pick_channels +from ..parallel import parallel_func +from ..time_frequency.multitaper import ( + _compute_mt_params, + _csd_from_mt, + _mt_spectra, + _psd_from_mt_adaptive, +) from ..utils import ( - logger, - verbose, - warn, - copy_function_doc_to_method_doc, ProgressBar, _check_fname, _import_h5io_funcs, _validate_type, + copy_function_doc_to_method_doc, + logger, + verbose, + warn, ) from ..viz.misc import plot_csd -from ..time_frequency.multitaper import ( - _compute_mt_params, - _mt_spectra, - _csd_from_mt, - _psd_from_mt_adaptive, -) -from ..parallel import parallel_func +from .tfr import EpochsTFR, _cwt_array, _get_nfft, morlet @verbose diff --git a/mne/time_frequency/multitaper.py b/mne/time_frequency/multitaper.py index 8810926f817..5cb42e7b9b7 100644 --- a/mne/time_frequency/multitaper.py +++ b/mne/time_frequency/multitaper.py @@ -9,9 +9,8 @@ from scipy.signal import get_window from scipy.signal.windows import dpss as sp_dpss - from ..parallel import parallel_func -from ..utils import warn, verbose, logger, _check_option +from ..utils import _check_option, logger, verbose, warn def dpss_windows(N, half_nbw, Kmax, *, sym=True, norm=None, low_bias=True): diff --git a/mne/time_frequency/psd.py b/mne/time_frequency/psd.py index 2c88e1adafe..79b269b645e 100644 --- a/mne/time_frequency/psd.py +++ b/mne/time_frequency/psd.py @@ -8,7 +8,7 @@ from scipy.signal import spectrogram from ..parallel import parallel_func -from ..utils import logger, verbose, _check_option, _ensure_int +from ..utils import _check_option, _ensure_int, logger, verbose # adapted from SciPy diff --git a/mne/time_frequency/spectrum.py b/mne/time_frequency/spectrum.py index 1fc2c6ce2bd..3d6acbc3914 100644 --- a/mne/time_frequency/spectrum.py +++ b/mne/time_frequency/spectrum.py @@ -10,6 +10,8 @@ import numpy as np +from .._fiff.meas_info import ContainsMixin, Info +from .._fiff.pick import _pick_data_channels, _picks_to_idx, pick_info from ..channels.channels import UpdateChannelsMixin from ..channels.layout import _merge_ch_data, find_layout from ..defaults import ( @@ -19,8 +21,6 @@ _handle_default, ) from ..html_templates import _get_html_template -from .._fiff.meas_info import ContainsMixin, Info -from .._fiff.pick import _pick_data_channels, _picks_to_idx, pick_info from ..utils import ( GetEpochsMixin, _build_data_frame, @@ -50,13 +50,13 @@ from ..viz.topomap import _make_head_outlines, _prepare_topomap_plot, plot_psds_topomap from ..viz.utils import ( _format_units_psd, + _get_plot_ch_type, _plot_psd, _prepare_sensor_names, plt_show, - _get_plot_ch_type, ) from .multitaper import psd_array_multitaper -from .psd import psd_array_welch, _check_nfft +from .psd import _check_nfft, psd_array_welch def _identity_function(x): @@ -658,8 +658,8 @@ def plot( """ # Must nest this _mpl_figure import because of the BACKEND global # stuff - from .multitaper import _psd_from_mt from ..viz._mpl_figure import _line_figure, _split_picks_by_type + from .multitaper import _psd_from_mt # arg checking ci = _check_ci(ci) diff --git a/mne/time_frequency/tests/test_ar.py b/mne/time_frequency/tests/test_ar.py index e5bcaa2b049..7d1d06d46dc 100644 --- a/mne/time_frequency/tests/test_ar.py +++ b/mne/time_frequency/tests/test_ar.py @@ -1,14 +1,13 @@ from pathlib import Path -import pytest import numpy as np -from numpy.testing import assert_array_almost_equal, assert_allclose +import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal from scipy.signal import lfilter from mne import io from mne.time_frequency.ar import _yule_walker, fit_iir_model_raw - raw_fname = ( Path(__file__).parent.parent.parent / "io" / "tests" / "data" / "test_raw.fif" ) diff --git a/mne/time_frequency/tests/test_csd.py b/mne/time_frequency/tests/test_csd.py index 0c3aef6014c..6c306188699 100644 --- a/mne/time_frequency/tests/test_csd.py +++ b/mne/time_frequency/tests/test_csd.py @@ -1,29 +1,30 @@ +import pickle +from itertools import product +from os import path as op + import numpy as np import pytest +from numpy.testing import assert_allclose, assert_array_equal from pytest import raises -from numpy.testing import assert_array_equal, assert_allclose -from os import path as op -import pickle -from itertools import product import mne from mne.channels import equalize_channels -from mne.utils import sum_squared +from mne.proj import Projection from mne.time_frequency import ( - csd_fourier, - csd_multitaper, - csd_morlet, + CrossSpectralDensity, csd_array_fourier, - csd_array_multitaper, csd_array_morlet, - tfr_morlet, + csd_array_multitaper, + csd_fourier, + csd_morlet, + csd_multitaper, csd_tfr, - CrossSpectralDensity, - read_csd, pick_channels_csd, + read_csd, + tfr_morlet, ) from mne.time_frequency.csd import _sym_mat_to_vector, _vector_to_sym_mat -from mne.proj import Projection +from mne.utils import sum_squared base_dir = op.join(op.dirname(__file__), "..", "..", "io", "tests", "data") raw_fname = op.join(base_dir, "test_raw.fif") diff --git a/mne/time_frequency/tests/test_psd.py b/mne/time_frequency/tests/test_psd.py index b39fd431fd0..3631363083d 100644 --- a/mne/time_frequency/tests/test_psd.py +++ b/mne/time_frequency/tests/test_psd.py @@ -1,12 +1,12 @@ import numpy as np -from numpy.testing import assert_array_almost_equal, assert_allclose, assert_array_equal -from scipy.signal import welch import pytest +from numpy.testing import assert_allclose, assert_array_almost_equal, assert_array_equal +from scipy.signal import welch -from mne.utils import catch_logging -from mne.time_frequency import psd_array_welch, psd_array_multitaper +from mne.time_frequency import psd_array_multitaper, psd_array_welch from mne.time_frequency.multitaper import _psd_from_mt from mne.time_frequency.psd import _median_biases +from mne.utils import catch_logging def test_psd_nan(): diff --git a/mne/time_frequency/tests/test_spectrum.py b/mne/time_frequency/tests/test_spectrum.py index 6a296808b20..7aaa5b40ea6 100644 --- a/mne/time_frequency/tests/test_spectrum.py +++ b/mne/time_frequency/tests/test_spectrum.py @@ -1,17 +1,16 @@ from contextlib import nullcontext from functools import partial +import matplotlib.pyplot as plt import numpy as np import pytest -from numpy.testing import assert_array_equal, assert_allclose -import matplotlib.pyplot as plt +from numpy.testing import assert_allclose, assert_array_equal -from mne import create_info, make_fixed_length_epochs +from mne import Annotations, create_info, make_fixed_length_epochs from mne.io import RawArray -from mne import Annotations from mne.time_frequency import read_spectrum from mne.time_frequency.multitaper import _psd_from_mt -from mne.time_frequency.spectrum import SpectrumArray, EpochsSpectrumArray +from mne.time_frequency.spectrum import EpochsSpectrumArray, SpectrumArray def test_compute_psd_errors(raw): diff --git a/mne/time_frequency/tests/test_stft.py b/mne/time_frequency/tests/test_stft.py index 7609b5c45cb..4829d975aad 100644 --- a/mne/time_frequency/tests/test_stft.py +++ b/mne/time_frequency/tests/test_stft.py @@ -3,12 +3,12 @@ # # License : BSD-3-Clause -import pytest import numpy as np -from scipy import linalg +import pytest from numpy.testing import assert_almost_equal, assert_array_almost_equal +from scipy import linalg -from mne.time_frequency import stft, istft, stftfreq +from mne.time_frequency import istft, stft, stftfreq from mne.time_frequency._stft import stft_norm2 diff --git a/mne/time_frequency/tests/test_stockwell.py b/mne/time_frequency/tests/test_stockwell.py index 77f2e88383b..dcb202a959a 100644 --- a/mne/time_frequency/tests/test_stockwell.py +++ b/mne/time_frequency/tests/test_stockwell.py @@ -5,28 +5,26 @@ from pathlib import Path -import pytest import numpy as np +import pytest from numpy.testing import ( - assert_array_almost_equal, assert_allclose, - assert_equal, + assert_array_almost_equal, assert_array_less, + assert_equal, ) - from scipy import fftpack -from mne import read_events, Epochs, make_fixed_length_events +from mne import Epochs, make_fixed_length_events, read_events from mne.io import read_raw_fif +from mne.time_frequency import AverageTFR, tfr_array_stockwell from mne.time_frequency._stockwell import ( - tfr_stockwell, - _st, - _precompute_st_windows, _check_input_st, + _precompute_st_windows, + _st, _st_power_itc, + tfr_stockwell, ) - -from mne.time_frequency import AverageTFR, tfr_array_stockwell from mne.utils import _record_warnings base_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" diff --git a/mne/time_frequency/tests/test_tfr.py b/mne/time_frequency/tests/test_tfr.py index b96cb11e567..58943b10e48 100644 --- a/mne/time_frequency/tests/test_tfr.py +++ b/mne/time_frequency/tests/test_tfr.py @@ -3,41 +3,41 @@ from itertools import product from pathlib import Path +import matplotlib.pyplot as plt import numpy as np -from numpy.testing import assert_array_equal, assert_equal, assert_allclose import pytest -import matplotlib.pyplot as plt +from numpy.testing import assert_allclose, assert_array_equal, assert_equal from scipy.signal import morlet2 import mne from mne import ( Epochs, - read_events, - pick_types, - create_info, EpochsArray, Info, Transform, + create_info, + pick_types, + read_events, ) from mne.io import read_raw_fif -from mne.utils import grand_average, catch_logging +from mne.tests.test_epochs import assert_metadata_equal +from mne.time_frequency import tfr_array_morlet, tfr_array_multitaper from mne.time_frequency.tfr import ( - morlet, - tfr_morlet, - _make_dpss, - tfr_multitaper, AverageTFR, - read_tfrs, - write_tfrs, + EpochsTFR, + _compute_tfr, + _make_dpss, combine_tfr, cwt, - _compute_tfr, - EpochsTFR, fwhm, + morlet, + read_tfrs, + tfr_morlet, + tfr_multitaper, + write_tfrs, ) -from mne.time_frequency import tfr_array_multitaper, tfr_array_morlet +from mne.utils import catch_logging, grand_average from mne.viz.utils import _fake_click, _fake_keypress, _fake_scroll -from mne.tests.test_epochs import assert_metadata_equal data_path = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = data_path / "test_raw.fif" diff --git a/mne/time_frequency/tfr.py b/mne/time_frequency/tfr.py index 83445a64690..09745e9a1b1 100644 --- a/mne/time_frequency/tfr.py +++ b/mne/time_frequency/tfr.py @@ -16,65 +16,64 @@ from scipy.fft import fft, ifft from scipy.signal import argrelmax -from .multitaper import dpss_windows - -from ..baseline import rescale, _check_baseline +from .._fiff.meas_info import ContainsMixin, Info +from .._fiff.pick import ( + _picks_to_idx, + channel_type, + pick_info, +) +from ..baseline import _check_baseline, rescale +from ..channels.channels import UpdateChannelsMixin +from ..channels.layout import _find_topomap_coords, _merge_ch_data, _pair_grad_sensors +from ..defaults import _BORDER_DEFAULT, _EXTRAPOLATE_DEFAULT, _INTERPOLATION_DEFAULT from ..filter import next_fast_len from ..parallel import parallel_func from ..utils import ( - logger, - verbose, - _time_mask, - _freq_mask, - check_fname, - sizeof_fmt, - GetEpochsMixin, ExtendedTimeMixin, - _prepare_read_metadata, - fill_doc, - _prepare_write_metadata, - _check_event_id, - _gen_events, + GetEpochsMixin, SizeMixin, - _is_numeric, - _check_option, - _validate_type, + _build_data_frame, _check_combine, - _check_pandas_installed, + _check_event_id, + _check_option, _check_pandas_index_arguments, + _check_pandas_installed, _check_time_format, _convert_times, - _build_data_frame, - warn, + _freq_mask, + _gen_events, _import_h5io_funcs, + _is_numeric, + _prepare_read_metadata, + _prepare_write_metadata, + _time_mask, + _validate_type, + check_fname, copy_function_doc_to_method_doc, + fill_doc, + logger, + sizeof_fmt, + verbose, + warn, ) -from ..channels.channels import UpdateChannelsMixin -from ..channels.layout import _merge_ch_data, _pair_grad_sensors, _find_topomap_coords -from ..defaults import _INTERPOLATION_DEFAULT, _EXTRAPOLATE_DEFAULT, _BORDER_DEFAULT -from .._fiff.pick import ( - pick_info, - _picks_to_idx, - channel_type, -) -from .._fiff.meas_info import Info, ContainsMixin -from ..viz.topo import _imshow_tfr, _plot_topo, _imshow_tfr_unified +from ..viz.topo import _imshow_tfr, _imshow_tfr_unified, _plot_topo from ..viz.topomap import ( - _set_contour_locator, - plot_topomap, + _add_colorbar, _get_pos_outlines, + _set_contour_locator, plot_tfr_topomap, - _add_colorbar, + plot_topomap, ) from ..viz.utils import ( - figure_nobar, - plt_show, - _setup_cmap, _prepare_joint_axes, - _setup_vmin_vmax, _set_title_multiple_electrodes, + _setup_cmap, + _setup_vmin_vmax, add_background_image, + figure_nobar, + plt_show, ) +from .multitaper import dpss_windows @fill_doc diff --git a/mne/transforms.py b/mne/transforms.py index 58f88450c56..f8a4c813025 100644 --- a/mne/transforms.py +++ b/mne/transforms.py @@ -5,8 +5,8 @@ # # License: BSD-3-Clause -import os import glob +import os from copy import deepcopy from pathlib import Path @@ -15,29 +15,28 @@ from scipy.spatial.distance import cdist from scipy.special import sph_harm -from .fixes import jit, _get_img_fdata from ._fiff.constants import FIFF from ._fiff.open import fiff_open from ._fiff.tag import read_tag from ._fiff.write import start_and_end_file, write_coord_trans from .defaults import _handle_default +from .fixes import _get_img_fdata, jit from .utils import ( - check_fname, - logger, - verbose, - _ensure_int, - _validate_type, - _path_like, - get_subjects_dir, - fill_doc, _check_fname, _check_option, + _ensure_int, + _import_nibabel, + _path_like, _require_version, + _validate_type, + check_fname, + fill_doc, + get_subjects_dir, + logger, + verbose, wrapped_stdout, - _import_nibabel, ) - # transformation from anterior/left/superior coordinate system to # right/anterior/superior: als_ras_trans = np.array([[0, -1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) @@ -1783,16 +1782,16 @@ def _compute_volume_registration( nib = _import_nibabel("SDR morph") _require_version("dipy", "SDR morph", "0.10.1") with np.testing.suppress_warnings(): - from dipy.align.imaffine import AffineMap from dipy.align import ( + affine, affine_registration, center_of_mass, - translation, - rigid, - affine, imwarp, metrics, + rigid, + translation, ) + from dipy.align.imaffine import AffineMap # input validation _validate_type(moving, nib.spatialimages.SpatialImage, "moving") @@ -1927,9 +1926,9 @@ def apply_volume_registration( """ _require_version("dipy", "SDR morph", "0.10.1") _import_nibabel("SDR morph") - from nibabel.spatialimages import SpatialImage - from dipy.align.imwarp import DiffeomorphicMap from dipy.align.imaffine import AffineMap + from dipy.align.imwarp import DiffeomorphicMap + from nibabel.spatialimages import SpatialImage _validate_type(moving, SpatialImage, "moving") _validate_type(static, SpatialImage, "static") @@ -2001,9 +2000,9 @@ def apply_volume_registration_points( from .channels import compute_native_head_t, make_dig_montage _require_version("nibabel", "volume registration", "2.1.0") + from dipy.align.imwarp import DiffeomorphicMap from nibabel import MGHImage from nibabel.spatialimages import SpatialImage - from dipy.align.imwarp import DiffeomorphicMap _validate_type(moving, SpatialImage, "moving") _validate_type(static, SpatialImage, "static") diff --git a/mne/utils/__init__.pyi b/mne/utils/__init__.pyi index 8dfc4a6bdc4..b2c611f7d1c 100644 --- a/mne/utils/__init__.pyi +++ b/mne/utils/__init__.pyi @@ -183,202 +183,202 @@ __all__ = [ "wrapped_stdout", ] from ._bunch import Bunch, BunchConst, BunchConstNamed +from ._logging import ( + ClosingStringIO, + _get_call_line, + _parse_verbose, + _record_warnings, + _verbose_safe_false, + catch_logging, + filter_out_warnings, + logger, + set_log_file, + set_log_level, + use_log_level, + verbose, + warn, + wrapped_stdout, +) +from ._testing import ( + ArgvSetter, + SilenceStdout, + _click_ch_name, + _raw_annot, + _TempDir, + assert_and_remove_boundary_annot, + assert_dig_allclose, + assert_meg_snr, + assert_object_equal, + assert_snr, + assert_stcs_equal, + buggy_mkl_svd, + has_freesurfer, + has_mne_c, + requires_freesurfer, + requires_good_network, + requires_mne, + requires_mne_mark, + requires_openmeeg_mark, + run_command_if_main, +) from .check import ( - check_fname, - check_version, - check_random_state, - _check_fname, - _check_subject, - _check_pandas_installed, - _check_pandas_index_arguments, - _check_event_id, + _check_all_same_channel_names, _check_ch_locs, + _check_channels_spatial_filter, + _check_combine, _check_compensation_grade, + _check_depth, + _check_dict_keys, + _check_edflib_installed, + _check_eeglabio_installed, + _check_event_id, + _check_fname, + _check_freesurfer_home, + _check_head_radius, _check_if_nan, - _is_numeric, - _ensure_int, + _check_info_inv, _check_integer_or_list, + _check_on_missing, + _check_one_ch_type, + _check_option, + _check_pandas_index_arguments, + _check_pandas_installed, _check_preload, - _validate_type, + _check_pybv_installed, + _check_pymatreader_installed, + _check_qt_version, _check_range, - _check_info_inv, - _check_channels_spatial_filter, - _check_one_ch_type, _check_rank, - _check_option, - _check_depth, - _check_combine, - _path_like, + _check_sphere, _check_src_normal, _check_stc_units, - _check_qt_version, - _check_sphere, + _check_subject, _check_time_format, - _check_freesurfer_home, - _suggest, - _require_version, - _on_missing, - _check_on_missing, - int_like, - _safe_input, - _check_all_same_channel_names, - path_like, _ensure_events, - _check_eeglabio_installed, - _check_pybv_installed, - _check_edflib_installed, - _to_rgb, - _soft_import, - _check_dict_keys, - _check_pymatreader_installed, - _import_h5py, + _ensure_int, _import_h5io_funcs, + _import_h5py, _import_nibabel, _import_pymatreader_funcs, - _check_head_radius, + _is_numeric, + _on_missing, + _path_like, + _require_version, + _safe_input, + _soft_import, + _suggest, + _to_rgb, + _validate_type, + check_fname, + check_random_state, + check_version, + int_like, + path_like, ) from .config import ( - set_config, + _get_extra_data_path, + _get_numpy_libs, + _get_root_dir, + _get_stim_channel, get_config, get_config_path, + get_subjects_dir, set_cache_dir, + set_config, set_memmap_min_size, - get_subjects_dir, - _get_stim_channel, sys_info, - _get_extra_data_path, - _get_root_dir, - _get_numpy_libs, +) +from .dataframe import ( + _build_data_frame, + _convert_times, + _scale_dataframe_data, + _set_pandas_dtype, ) from .docs import ( - copy_function_doc_to_method_doc, + _doc_special_members, + copy_base_doc_to_subclass_doc, copy_doc, - linkcode_resolve, - open_docs, + copy_function_doc_to_method_doc, deprecated, - fill_doc, deprecated_alias, + fill_doc, legacy, - copy_base_doc_to_subclass_doc, - _doc_special_members, + linkcode_resolve, + open_docs, ) from .fetching import _url_to_local_path -from ._logging import ( - verbose, - logger, - set_log_level, - set_log_file, - use_log_level, - catch_logging, - warn, - filter_out_warnings, - wrapped_stdout, - _get_call_line, - _record_warnings, - ClosingStringIO, - _verbose_safe_false, - _parse_verbose, +from .linalg import ( + _get_blas_funcs, + _repeated_svd, + _svd_lwork, + _sym_mat_pow, + eigh, + sqrtm_sym, ) from .misc import ( - run_subprocess, - _pl, + _assert_no_instances, + _auto_weakref, _clean_names, - pformat, - _file_like, + _DefaultEventParser, _empty_hash, _explain_exception, + _file_like, _get_argvalues, - sizeof_fmt, - running_subprocess, - _DefaultEventParser, - _assert_no_instances, + _pl, _resource_path, + pformat, repr_html, - _auto_weakref, + run_subprocess, + running_subprocess, + sizeof_fmt, ) -from .progressbar import ProgressBar -from ._testing import ( - run_command_if_main, - requires_mne, - requires_good_network, - ArgvSetter, - SilenceStdout, - has_freesurfer, - has_mne_c, - _TempDir, - buggy_mkl_svd, - requires_freesurfer, - requires_mne_mark, - assert_object_equal, - assert_and_remove_boundary_annot, - _raw_annot, - assert_dig_allclose, - assert_meg_snr, - assert_snr, - assert_stcs_equal, - _click_ch_name, - requires_openmeeg_mark, +from .mixin import ( + ExtendedTimeMixin, + GetEpochsMixin, + SizeMixin, + TimeMixin, + _check_decim, + _prepare_read_metadata, + _prepare_write_metadata, ) from .numerics import ( - hashfunc, + _PCA, + _apply_scaling_array, + _apply_scaling_cov, + _arange_div, + _array_equal_nan, + _cal_to_julian, + _check_dt, _compute_row_norms, + _custom_lru_cache, + _dt_to_julian, + _dt_to_stamp, + _freq_mask, + _gen_events, + _get_inst_data, + _hashable_ndarray, + _julian_to_cal, + _julian_to_dt, + _mask_to_onsets_offsets, _reg_pinv, - random_permutation, _reject_data_segments, - compute_corr, - _get_inst_data, + _replace_md5, + _ReuseCycle, + _scaled_array, + _stamp_to_dt, + _time_mask, + _undo_scaling_array, + _undo_scaling_cov, array_split_idx, - sum_squared, - split_list, - _gen_events, + compute_corr, create_slices, - _time_mask, - _freq_mask, grand_average, + hashfunc, object_diff, object_hash, object_size, - _apply_scaling_cov, - _undo_scaling_cov, - _apply_scaling_array, - _undo_scaling_array, - _scaled_array, - _replace_md5, - _PCA, - _mask_to_onsets_offsets, - _array_equal_nan, - _julian_to_cal, - _cal_to_julian, - _dt_to_julian, - _julian_to_dt, - _dt_to_stamp, - _stamp_to_dt, - _check_dt, - _ReuseCycle, - _arange_div, - _hashable_ndarray, - _custom_lru_cache, -) -from .mixin import ( - SizeMixin, - GetEpochsMixin, - TimeMixin, - ExtendedTimeMixin, - _prepare_read_metadata, - _prepare_write_metadata, - _check_decim, -) -from .linalg import ( - _svd_lwork, - _repeated_svd, - _sym_mat_pow, - sqrtm_sym, - eigh, - _get_blas_funcs, -) -from .dataframe import ( - _set_pandas_dtype, - _scale_dataframe_data, - _convert_times, - _build_data_frame, + random_permutation, + split_list, + sum_squared, ) +from .progressbar import ProgressBar diff --git a/mne/utils/_bunch.py b/mne/utils/_bunch.py index 3ede4290111..9b9af35a7ad 100644 --- a/mne/utils/_bunch.py +++ b/mne/utils/_bunch.py @@ -7,7 +7,6 @@ from copy import deepcopy - ############################################################################### # Create a Bunch class that acts like a struct (mybunch.key = val) diff --git a/mne/utils/_logging.py b/mne/utils/_logging.py index 9cec6f4c7be..84c8bcb2e69 100644 --- a/mne/utils/_logging.py +++ b/mne/utils/_logging.py @@ -4,19 +4,19 @@ # License: BSD-3-Clause import contextlib -from decorator import FunctionMaker import importlib import inspect -from io import StringIO -import re -import sys import logging import os.path as op +import re +import sys import warnings +from io import StringIO from typing import Any, Callable, TypeVar -from .docs import fill_doc +from decorator import FunctionMaker +from .docs import fill_doc logger = logging.getLogger("mne") # one selection here used across mne-python logger.propagate = False # don't propagate (in case of multiple imports) @@ -220,8 +220,8 @@ def set_log_level(verbose=None, return_old_level=False, add_frames=None): def _parse_verbose(verbose): - from .config import get_config from .check import _check_option, _validate_type + from .config import get_config _validate_type(verbose, (bool, str, int, None), "verbose") if verbose is None: diff --git a/mne/utils/_testing.py b/mne/utils/_testing.py index da907bb52c9..4f1a2eaf9b5 100644 --- a/mne/utils/_testing.py +++ b/mne/utils/_testing.py @@ -3,21 +3,21 @@ # # License: BSD-3-Clause -from functools import wraps -import os import inspect -from io import StringIO -from shutil import rmtree +import os import sys import tempfile import traceback +from functools import wraps +from io import StringIO +from shutil import rmtree from unittest import SkipTest import numpy as np -from numpy.testing import assert_array_equal, assert_allclose +from numpy.testing import assert_allclose, assert_array_equal from scipy import linalg -from ._logging import warn, ClosingStringIO +from ._logging import ClosingStringIO, warn from .check import check_version from .misc import run_subprocess from .numerics import object_diff @@ -315,9 +315,9 @@ def _dig_sort_key(dig): def assert_dig_allclose(info_py, info_bin, limit=None): """Assert dig allclose.""" - from ..bem import fit_sphere_to_headshape from .._fiff.constants import FIFF from .._fiff.meas_info import Info + from ..bem import fit_sphere_to_headshape from ..channels.montage import DigMontage # test dig positions diff --git a/mne/utils/check.py b/mne/utils/check.py index d13f2d1a1f1..a26495106e4 100644 --- a/mne/utils/check.py +++ b/mne/utils/check.py @@ -3,23 +3,23 @@ # # License: BSD-3-Clause +import numbers +import operator +import os +import re from builtins import input # no-op here but facilitates testing from collections.abc import Sequence from difflib import get_close_matches from importlib import import_module from importlib.metadata import version -import operator -import os -from packaging.version import parse from pathlib import Path -import re -import numbers import numpy as np +from packaging.version import parse -from ..defaults import _handle_default, HEAD_SIZE_DEFAULT -from ..fixes import _median_complex, _compare_version -from ._logging import warn, logger, verbose, _record_warnings, _verbose_safe_false +from ..defaults import HEAD_SIZE_DEFAULT, _handle_default +from ..fixes import _compare_version, _median_complex +from ._logging import _record_warnings, _verbose_safe_false, logger, verbose, warn def _ensure_int(x, name="unknown", must_be="an int", *, extra=""): @@ -316,9 +316,9 @@ def _check_preload(inst, msg): def _check_compensation_grade(info1, info2, name1, name2="data", ch_names=None): """Ensure that objects have same compensation_grade.""" + from .._fiff.compensator import get_current_comp from .._fiff.meas_info import Info from .._fiff.pick import pick_channels, pick_info - from .._fiff.compensator import get_current_comp for t_info in (info1, info2): if t_info is None: @@ -754,9 +754,9 @@ def _check_rank(rank): def _check_one_ch_type(method, info, forward, data_cov=None, noise_cov=None): """Check number of sensor types and presence of noise covariance matrix.""" - from ..cov import make_ad_hoc_cov, Covariance + from .._fiff.pick import _contains_ch_type, pick_info + from ..cov import Covariance, make_ad_hoc_cov from ..time_frequency.csd import CrossSpectralDensity - from .._fiff.pick import pick_info, _contains_ch_type if isinstance(data_cov, CrossSpectralDensity): _validate_type(noise_cov, [None, CrossSpectralDensity], "noise_cov") @@ -946,7 +946,8 @@ def _check_qt_version(*, return_api=False, check_usable_display=True): from ..viz.backends._utils import _init_mne_qtapp try: - from qtpy import QtCore, API_NAME as api + from qtpy import API_NAME as api + from qtpy import QtCore except Exception: api = version = None else: @@ -969,7 +970,7 @@ def _check_qt_version(*, return_api=False, check_usable_display=True): def _check_sphere(sphere, info=None, sphere_units="m"): - from ..bem import fit_sphere_to_headshape, ConductorModel, get_fitting_dig + from ..bem import ConductorModel, fit_sphere_to_headshape, get_fitting_dig if sphere is None: sphere = HEAD_SIZE_DEFAULT diff --git a/mne/utils/config.py b/mne/utils/config.py index 47a26e8109d..aa4e0b9dd90 100644 --- a/mne/utils/config.py +++ b/mne/utils/config.py @@ -18,11 +18,10 @@ from importlib import import_module from pathlib import Path -from .check import _validate_type, _check_qt_version, _check_option, _check_fname +from ._logging import logger, warn +from .check import _check_fname, _check_option, _check_qt_version, _validate_type from .docs import fill_doc from .misc import _pl -from ._logging import warn, logger - _temp_home_dir = None diff --git a/mne/utils/dataframe.py b/mne/utils/dataframe.py index a6d262bf8ee..2c9cbad78af 100644 --- a/mne/utils/dataframe.py +++ b/mne/utils/dataframe.py @@ -7,8 +7,8 @@ import numpy as np -from ._logging import logger, verbose from ..defaults import _handle_default +from ._logging import logger, verbose @verbose @@ -74,6 +74,7 @@ def _build_data_frame( """Build DataFrame from MNE-object-derived data array.""" # private function; pandas already checked in calling function from pandas import DataFrame + from ..source_estimate import _BaseSourceEstimate # build DataFrame diff --git a/mne/utils/docs.py b/mne/utils/docs.py index ef311f30a71..9e72685e738 100644 --- a/mne/utils/docs.py +++ b/mne/utils/docs.py @@ -16,7 +16,6 @@ from ..defaults import HEAD_SIZE_DEFAULT from ._bunch import BunchConst - # # # WARNING # # # # This list must also be updated in doc/_templates/autosummary/class.rst if it # is changed here! diff --git a/mne/utils/misc.py b/mne/utils/misc.py index 79a23e9a0e6..470caf671f2 100644 --- a/mne/utils/misc.py +++ b/mne/utils/misc.py @@ -3,27 +3,27 @@ # # License: BSD-3-Clause -from contextlib import contextmanager, ExitStack import fnmatch import gc import hashlib import inspect -from math import log import os -from queue import Queue, Empty -from string import Formatter import subprocess import sys -from textwrap import dedent -from threading import Thread import traceback import weakref +from contextlib import ExitStack, contextmanager +from math import log +from queue import Empty, Queue +from string import Formatter +from textwrap import dedent +from threading import Thread import numpy as np from decorator import FunctionMaker -from .check import _check_option, _validate_type from ._logging import logger, verbose, warn +from .check import _check_option, _validate_type # TODO: remove try/except when our min version is py 3.9 try: diff --git a/mne/utils/mixin.py b/mne/utils/mixin.py index 8f4adc43d15..e9f30116454 100644 --- a/mne/utils/mixin.py +++ b/mne/utils/mixin.py @@ -3,17 +3,16 @@ # # License: BSD-3-Clause +import json +import logging from collections import OrderedDict from copy import deepcopy -import logging -import json import numpy as np +from ._logging import verbose, warn from .check import _check_pandas_installed, _check_preload, _validate_type -from ._logging import warn, verbose -from .numerics import object_size, object_hash, _time_mask - +from .numerics import _time_mask, object_hash, object_size logger = logging.getLogger("mne") # one selection here used across mne-python logger.propagate = False # don't propagate (in case of multiple imports) @@ -59,9 +58,9 @@ def __hash__(self): hash : int The hash """ - from ..io import BaseRaw from ..epochs import BaseEpochs from ..evoked import Evoked + from ..io import BaseRaw if isinstance(self, Evoked): return object_hash(dict(info=self.info, data=self.data)) @@ -672,9 +671,9 @@ def decimate(self, decim, offset=0, *, verbose=None): # if epochs have frequencies, they are not in time (EpochsTFR) # and so do not need to be checked whether they have been # appropriately filtered to avoid aliasing - from ..evoked import Evoked from ..epochs import BaseEpochs - from ..time_frequency import EpochsTFR, AverageTFR + from ..evoked import Evoked + from ..time_frequency import AverageTFR, EpochsTFR # This should be the list of classes that inherit _validate_type(self, (BaseEpochs, Evoked, EpochsTFR, AverageTFR), "inst") @@ -736,8 +735,8 @@ def shift_time(self, tshift, relative=True): def _update_first_last(self): """Update self.first and self.last (sample indices).""" - from ..evoked import Evoked from ..dipole import DipoleFixed + from ..evoked import Evoked if isinstance(self, (Evoked, DipoleFixed)): self.first = int(round(self.times[0] * self.info["sfreq"])) diff --git a/mne/utils/numerics.py b/mne/utils/numerics.py index 67a15d789e4..44cf8210771 100644 --- a/mne/utils/numerics.py +++ b/mne/utils/numerics.py @@ -19,18 +19,18 @@ import numpy as np from scipy import sparse -from ._logging import logger, warn, verbose -from .check import check_random_state, _ensure_int, _validate_type -from .misc import _empty_hash from ..fixes import ( _infer_dimension_, - svd_flip, - stable_cumsum, _safe_svd, - jit, has_numba, + jit, + stable_cumsum, + svd_flip, ) +from ._logging import logger, verbose, warn +from .check import _ensure_int, _validate_type, check_random_state from .docs import fill_doc +from .misc import _empty_hash def split_list(v, n, idx=False): @@ -209,8 +209,8 @@ def _gen_events(n_epochs): def _reject_data_segments(data, reject, flat, decim, info, tstep): """Reject data segments using peak-to-peak amplitude.""" - from ..epochs import _is_good from .._fiff.pick import channel_indices_by_type + from ..epochs import _is_good data_clean = np.empty_like(data) idx_by_type = channel_indices_by_type(info) @@ -251,9 +251,9 @@ def _reject_data_segments(data, reject, flat, decim, info, tstep): def _get_inst_data(inst): """Get data view from MNE object instance like Raw, Epochs or Evoked.""" - from ..io import BaseRaw from ..epochs import BaseEpochs from ..evoked import Evoked + from ..io import BaseRaw from ..time_frequency.tfr import _BaseTFR _validate_type(inst, (BaseRaw, BaseEpochs, Evoked, _BaseTFR), "Instance") @@ -576,9 +576,9 @@ def grand_average(all_inst, interpolate_bads=True, drop_bads=True): .. versionadded:: 0.11.0 """ # check if all elements in the given list are evoked data + from ..channels.channels import equalize_channels from ..evoked import Evoked from ..time_frequency import AverageTFR - from ..channels.channels import equalize_channels if not all_inst: raise ValueError("Please pass a list of Evoked or AverageTFR objects.") diff --git a/mne/utils/progressbar.py b/mne/utils/progressbar.py index a47c2e340d0..220a103a2b3 100644 --- a/mne/utils/progressbar.py +++ b/mne/utils/progressbar.py @@ -3,19 +3,19 @@ # # License: BSD-3-Clause -from collections.abc import Iterable +import logging import os import os.path as op -import logging import tempfile -from threading import Thread import time +from collections.abc import Iterable +from threading import Thread import numpy as np +from ._logging import logger from .check import _check_option from .config import get_config -from ._logging import logger class ProgressBar: diff --git a/mne/utils/spectrum.py b/mne/utils/spectrum.py index 0b0fffc9e5a..2ea3b058c58 100644 --- a/mne/utils/spectrum.py +++ b/mne/utils/spectrum.py @@ -1,4 +1,5 @@ from inspect import currentframe, getargvalues, signature + from ..utils import warn diff --git a/mne/utils/tests/test_bunch.py b/mne/utils/tests/test_bunch.py index 757fa8e3072..93d87387c55 100644 --- a/mne/utils/tests/test_bunch.py +++ b/mne/utils/tests/test_bunch.py @@ -4,8 +4,9 @@ # License: BSD-3-Clause import pickle + from mne.utils import BunchConstNamed -from mne.utils._bunch import NamedInt, NamedFloat +from mne.utils._bunch import NamedFloat, NamedInt def test_pickle(): diff --git a/mne/utils/tests/test_check.py b/mne/utils/tests/test_check.py index 9ad25d9843a..2856d9ea37b 100644 --- a/mne/utils/tests/test_check.py +++ b/mne/utils/tests/test_check.py @@ -6,32 +6,32 @@ import os import sys +from pathlib import Path import numpy as np import pytest -from pathlib import Path import mne -from mne import read_vectorview_selection, pick_channels_cov -from mne.datasets import testing +from mne import pick_channels_cov, read_vectorview_selection from mne._fiff.pick import _picks_to_idx +from mne.datasets import testing from mne.utils import ( - check_random_state, + Bunch, + _check_ch_locs, _check_fname, - check_fname, - _suggest, - _check_subject, _check_info_inv, _check_option, - Bunch, - check_version, - _path_like, - _validate_type, + _check_range, + _check_sphere, + _check_subject, _on_missing, + _path_like, _safe_input, - _check_ch_locs, - _check_sphere, - _check_range, + _suggest, + _validate_type, + check_fname, + check_random_state, + check_version, ) data_path = testing.data_path(download=False) diff --git a/mne/utils/tests/test_config.py b/mne/utils/tests/test_config.py index 07f555df157..d29aa43feda 100644 --- a/mne/utils/tests/test_config.py +++ b/mne/utils/tests/test_config.py @@ -1,17 +1,18 @@ import os import platform -import pytest from pathlib import Path +import pytest + from mne.utils import ( - set_config, + ClosingStringIO, + _get_stim_channel, get_config, get_config_path, + get_subjects_dir, + set_config, set_memmap_min_size, - _get_stim_channel, sys_info, - ClosingStringIO, - get_subjects_dir, ) diff --git a/mne/utils/tests/test_docs.py b/mne/utils/tests/test_docs.py index a89e266c53a..7e744202e95 100644 --- a/mne/utils/tests/test_docs.py +++ b/mne/utils/tests/test_docs.py @@ -1,16 +1,17 @@ +import webbrowser + import pytest -from mne import open_docs, grade_to_tris +from mne import grade_to_tris, open_docs from mne.utils import ( - copy_function_doc_to_method_doc, + catch_logging, copy_doc, - linkcode_resolve, + copy_function_doc_to_method_doc, deprecated, deprecated_alias, legacy, - catch_logging, + linkcode_resolve, ) -import webbrowser @pytest.mark.parametrize("obj", (grade_to_tris,)) diff --git a/mne/utils/tests/test_linalg.py b/mne/utils/tests/test_linalg.py index 45e05bba94f..3a470c3073b 100644 --- a/mne/utils/tests/test_linalg.py +++ b/mne/utils/tests/test_linalg.py @@ -4,11 +4,11 @@ # License: BSD-3-Clause import numpy as np +import pytest from numpy.testing import assert_allclose, assert_array_equal from scipy import linalg -import pytest -from mne.utils import _sym_mat_pow, _reg_pinv, _record_warnings +from mne.utils import _record_warnings, _reg_pinv, _sym_mat_pow @pytest.mark.parametrize("dtype", (np.float64, np.complex128)) # real, complex diff --git a/mne/utils/tests/test_logging.py b/mne/utils/tests/test_logging.py index 9225d3548f9..2b9b6a8aeee 100644 --- a/mne/utils/tests/test_logging.py +++ b/mne/utils/tests/test_logging.py @@ -6,19 +6,19 @@ import numpy as np import pytest -from mne import read_evokeds, Epochs, create_info -from mne.io import read_raw_fif, RawArray +from mne import Epochs, create_info, read_evokeds +from mne.io import RawArray, read_raw_fif from mne.utils import ( - warn, - set_log_level, - set_log_file, - filter_out_warnings, - verbose, _get_call_line, - use_log_level, catch_logging, - logger, check, + filter_out_warnings, + logger, + set_log_file, + set_log_level, + use_log_level, + verbose, + warn, ) from mne.utils._logging import _frame_info diff --git a/mne/utils/tests/test_misc.py b/mne/utils/tests/test_misc.py index 1309feafbec..aca5efa5fbc 100644 --- a/mne/utils/tests/test_misc.py +++ b/mne/utils/tests/test_misc.py @@ -1,12 +1,12 @@ -from contextlib import nullcontext import os import subprocess import sys +from contextlib import nullcontext import pytest import mne -from mne.utils import sizeof_fmt, run_subprocess, catch_logging +from mne.utils import catch_logging, run_subprocess, sizeof_fmt def test_sizeof_fmt(): diff --git a/mne/utils/tests/test_mixin.py b/mne/utils/tests/test_mixin.py index 23b6a950aa4..32c7abe6a32 100644 --- a/mne/utils/tests/test_mixin.py +++ b/mne/utils/tests/test_mixin.py @@ -2,8 +2,8 @@ # # License: BSD-3-Clause -from numpy.testing import assert_allclose import pytest +from numpy.testing import assert_allclose import mne from mne.datasets import testing diff --git a/mne/utils/tests/test_numerics.py b/mne/utils/tests/test_numerics.py index 8b87e19a68a..71b1a349cd1 100644 --- a/mne/utils/tests/test_numerics.py +++ b/mne/utils/tests/test_numerics.py @@ -4,45 +4,44 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_array_equal, assert_allclose import pytest +from numpy.testing import assert_allclose, assert_array_equal from scipy import sparse -from mne import read_evokeds, read_cov, pick_types +from mne import pick_types, read_cov, read_evokeds from mne._fiff.pick import _picks_by_type from mne.epochs import make_fixed_length_epochs from mne.io import read_raw_fif from mne.time_frequency import tfr_morlet from mne.utils import ( - _get_inst_data, - hashfunc, - sum_squared, - compute_corr, - create_slices, - _time_mask, - _freq_mask, - random_permutation, - _reg_pinv, - object_size, - object_hash, - object_diff, - _apply_scaling_cov, - _undo_scaling_cov, - _apply_scaling_array, - _undo_scaling_array, _PCA, + _apply_scaling_array, + _apply_scaling_cov, _array_equal_nan, - _julian_to_cal, _cal_to_julian, + _custom_lru_cache, _dt_to_julian, + _freq_mask, + _get_inst_data, + _julian_to_cal, _julian_to_dt, - grand_average, + _reg_pinv, _ReuseCycle, + _time_mask, + _undo_scaling_array, + _undo_scaling_cov, + compute_corr, + create_slices, + grand_average, + hashfunc, numerics, - _custom_lru_cache, + object_diff, + object_hash, + object_size, + random_permutation, + sum_squared, ) -from mne.utils.numerics import _LRU_CACHES, _LRU_CACHE_MAXSIZES - +from mne.utils.numerics import _LRU_CACHE_MAXSIZES, _LRU_CACHES base_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" fname_raw = base_dir / "test_raw.fif" diff --git a/mne/utils/tests/test_progressbar.py b/mne/utils/tests/test_progressbar.py index 6f39f45fcc1..4d2438bb7d5 100644 --- a/mne/utils/tests/test_progressbar.py +++ b/mne/utils/tests/test_progressbar.py @@ -5,11 +5,11 @@ from pathlib import Path import numpy as np -from numpy.testing import assert_array_equal import pytest +from numpy.testing import assert_array_equal from mne.parallel import parallel_func -from mne.utils import ProgressBar, array_split_idx, use_log_level, catch_logging +from mne.utils import ProgressBar, array_split_idx, catch_logging, use_log_level def test_progressbar(monkeypatch): diff --git a/mne/viz/_3d.py b/mne/viz/_3d.py index 680d52022b5..feb01f9c850 100644 --- a/mne/viz/_3d.py +++ b/mne/viz/_3d.py @@ -9,89 +9,89 @@ # # License: Simplified BSD -from collections import defaultdict import os import os.path as op import warnings +from collections import defaultdict from collections.abc import Iterable from dataclasses import dataclass from functools import partial from itertools import cycle -from typing import Optional from pathlib import Path +from typing import Optional import numpy as np -from scipy.stats import rankdata from scipy.spatial import ConvexHull, Delaunay from scipy.spatial.distance import cdist +from scipy.stats import rankdata -from ._dipole import _check_concat_dipoles, _plot_dipole_mri_outlines, _plot_dipole_3d -from ..defaults import DEFAULTS -from ..fixes import _crop_colorbar, _get_img_fdata +from .._fiff.constants import FIFF +from .._fiff.meas_info import Info, create_info, read_fiducials +from .._fiff.pick import ( + _FNIRS_CH_TYPES_SPLIT, + _MEG_CH_TYPES_SPLIT, + channel_type, + pick_info, + pick_types, +) +from .._fiff.tag import _loc_to_coil_trans from .._freesurfer import ( - _read_mri_info, _check_mri, _get_head_surface, _get_skull_surface, + _read_mri_info, read_freesurfer_lut, ) -from .._fiff.tag import _loc_to_coil_trans -from .._fiff.pick import ( - pick_types, - channel_type, - pick_info, - _FNIRS_CH_TYPES_SPLIT, - _MEG_CH_TYPES_SPLIT, -) -from .._fiff.constants import FIFF -from .._fiff.meas_info import read_fiducials, create_info, Info +from ..defaults import DEFAULTS +from ..fixes import _crop_colorbar, _get_img_fdata from ..surface import ( - get_meg_helmet_surf, - _read_mri_surface, + _CheckInside, _DistanceQuery, _project_onto_surface, + _read_mri_surface, _reorder_ccw, - _CheckInside, + get_meg_helmet_surf, ) from ..transforms import ( - apply_trans, - rot_to_quat, - combine_transforms, - _get_trans, - _ensure_trans, Transform, - rotation, - read_ras_mni_t, - _print_coord_trans, + _ensure_trans, _find_trans, - transform_surface_to, _frame_to_str, + _get_trans, _get_transforms_to_coord_frame, + _print_coord_trans, + apply_trans, + combine_transforms, + read_ras_mni_t, + rot_to_quat, + rotation, + transform_surface_to, ) from ..utils import ( - get_subjects_dir, - logger, + _check_option, _check_subject, - verbose, - warn, + _ensure_int, + _import_nibabel, + _pl, + _to_rgb, + _validate_type, check_version, fill_doc, - _pl, get_config, - _import_nibabel, - _ensure_int, - _validate_type, - _check_option, - _to_rgb, + get_subjects_dir, + logger, + verbose, + warn, ) +from ._dipole import _check_concat_dipoles, _plot_dipole_3d, _plot_dipole_mri_outlines +from .evoked_field import EvokedField from .utils import ( - _get_color_list, + _check_time_unit, _get_cmap, - plt_show, + _get_color_list, figure_nobar, - _check_time_unit, + plt_show, ) -from .evoked_field import EvokedField verbose_dec = verbose FIDUCIAL_ORDER = (FIFF.FIFFV_POINT_LPA, FIFF.FIFFV_POINT_NASION, FIFF.FIFFV_POINT_RPA) @@ -177,9 +177,10 @@ def plot_head_positions( fig : instance of matplotlib.figure.Figure The figure. """ + import matplotlib.pyplot as plt + from ..chpi import head_pos_to_trans_rot_t from ..preprocessing.maxwell import _check_destination - import matplotlib.pyplot as plt _check_option("mode", mode, ["traces", "field"]) dest_info = dict(dev_head_t=None) if info is None else info @@ -310,8 +311,8 @@ def plot_head_positions( else: # mode == 'field': from matplotlib.colors import Normalize - from mpl_toolkits.mplot3d.art3d import Line3DCollection from mpl_toolkits.mplot3d import Axes3D # noqa: F401, analysis:ignore + from mpl_toolkits.mplot3d.art3d import Line3DCollection fig, ax = plt.subplots( 1, subplot_kw=dict(projection="3d"), layout="constrained" @@ -633,9 +634,9 @@ def plot_alignment( .. versionadded:: 0.15 """ # Update the backend - from .backends.renderer import _get_renderer from ..bem import ConductorModel, _bem_find_surface, _ensure_bem_surfaces from ..source_space._source_space import _ensure_src + from .backends.renderer import _get_renderer meg, eeg, fnirs, warn_meg = _handle_sensor_types(meg, eeg, fnirs) _check_option("interaction", interaction, ["trackball", "terrain"]) @@ -1983,11 +1984,12 @@ def _plot_mpl_stc( ): """Plot source estimate using mpl.""" import matplotlib.pyplot as plt - from mpl_toolkits.mplot3d import Axes3D - from matplotlib.widgets import Slider import nibabel as nib + from matplotlib.widgets import Slider + from mpl_toolkits.mplot3d import Axes3D + from ..morph import _get_subject_sphere_tris - from ..source_space._source_space import _create_surf_spacing, _check_spacing + from ..source_space._source_space import _check_spacing, _create_surf_spacing if hemi not in ["lh", "rh"]: raise ValueError( @@ -2175,7 +2177,7 @@ def link_brains(brains, time=True, camera=False, colorbar=True, picking=False): def _check_volume(stc, src, surface, backend_name): - from ..source_estimate import _BaseSurfaceSourceEstimate, _BaseMixedSourceEstimate + from ..source_estimate import _BaseMixedSourceEstimate, _BaseSurfaceSourceEstimate from ..source_space import SourceSpaces if isinstance(stc, _BaseSurfaceSourceEstimate): @@ -2347,8 +2349,8 @@ def plot_source_estimates( - https://surfer.nmr.mgh.harvard.edu/fswiki/FreeSurferOccipitalFlattenedPatch - https://openwetware.org/wiki/Beauchamp:FreeSurfer """ # noqa: E501 - from .backends.renderer import _get_3d_backend, use_3d_backend from ..source_estimate import _BaseSourceEstimate, _check_stc_src + from .backends.renderer import _get_3d_backend, use_3d_backend _check_stc_src(stc, src) _validate_type(stc, _BaseSourceEstimate, "stc", "source estimate") @@ -2436,8 +2438,8 @@ def _plot_stc( add_data_kwargs, brain_kwargs, ): - from .backends.renderer import _get_3d_backend, get_brain_class from ..source_estimate import _BaseVolSourceEstimate + from .backends.renderer import _get_3d_backend, get_brain_class vec = stc._data_ndim == 3 subjects_dir = str(get_subjects_dir(subjects_dir=subjects_dir, raise_error=True)) @@ -2709,7 +2711,8 @@ def plot_volume_source_estimates( >>> fig = stc_vol_sample.plot(morph) # doctest: +SKIP """ # noqa: E501 import nibabel as nib - from matplotlib import pyplot as plt, colors + from matplotlib import colors + from matplotlib import pyplot as plt from ..morph import SourceMorph from ..source_estimate import VolSourceEstimate @@ -2718,8 +2721,8 @@ def plot_volume_source_estimates( if not check_version("nilearn", "0.4"): raise RuntimeError("This function requires nilearn >= 0.4") - from nilearn.plotting import plot_stat_map, plot_glass_brain from nilearn.image import index_img + from nilearn.plotting import plot_glass_brain, plot_stat_map _check_option("mode", mode, ("stat_map", "glass_brain")) plot_func = dict(stat_map=plot_stat_map, glass_brain=plot_glass_brain)[mode] @@ -3050,8 +3053,8 @@ def plot_and_correct(*args, **kwargs): def _check_views(surf, views, hemi, stc=None, backend=None): - from ._brain.view import views_dicts from ..source_estimate import SourceEstimate + from ._brain.view import views_dicts _validate_type(views, (list, tuple, str), "views") views = [views] if isinstance(views, str) else list(views) diff --git a/mne/viz/_3d_overlay.py b/mne/viz/_3d_overlay.py index eff5d400035..8eb7c7313f7 100644 --- a/mne/viz/_3d_overlay.py +++ b/mne/viz/_3d_overlay.py @@ -22,9 +22,10 @@ def __init__(self, scalars, colormap, rng, opacity, name): self._name = name def to_colors(self): - from ._3d import _get_cmap from matplotlib.colors import Colormap, ListedColormap + from ._3d import _get_cmap + if isinstance(self._colormap, str): cmap = _get_cmap(self._colormap) elif isinstance(self._colormap, Colormap): diff --git a/mne/viz/__init__.pyi b/mne/viz/__init__.pyi index b709ebc2a05..dfebec1f5dc 100644 --- a/mne/viz/__init__.pyi +++ b/mne/viz/__init__.pyi @@ -86,91 +86,91 @@ __all__ = [ "use_3d_backend", "use_browser_backend", ] -from . import backends, _scraper, ui_events +from . import _scraper, backends, ui_events +from ._3d import ( + link_brains, + plot_alignment, + plot_brain_colorbar, + plot_dipole_locations, + plot_evoked_field, + plot_head_positions, + plot_source_estimates, + plot_sparse_source_estimates, + plot_vector_source_estimates, + plot_volume_source_estimates, + set_3d_options, + snapshot_brain_montage, +) +from ._brain import Brain +from ._figure import get_browser_backend, set_browser_backend, use_browser_backend +from ._proj import plot_projs_joint from .backends._abstract import Figure3D from .backends.renderer import ( - set_3d_backend, - get_3d_backend, - use_3d_backend, - set_3d_view, - set_3d_title, - create_3d_figure, close_3d_figure, close_all_3d_figures, + create_3d_figure, + get_3d_backend, get_brain_class, + set_3d_backend, + set_3d_title, + set_3d_view, + use_3d_backend, ) from .circle import circular_layout, plot_channel_labels_circle -from .epochs import plot_drop_log, plot_epochs, plot_epochs_psd, plot_epochs_image +from .epochs import plot_drop_log, plot_epochs, plot_epochs_image, plot_epochs_psd from .evoked import ( + plot_compare_evokeds, plot_evoked, plot_evoked_image, + plot_evoked_joint, + plot_evoked_topo, plot_evoked_white, plot_snr_estimate, - plot_evoked_topo, - plot_evoked_joint, - plot_compare_evokeds, ) from .evoked_field import EvokedField from .ica import ( - plot_ica_scores, - plot_ica_sources, - plot_ica_overlay, _plot_sources, + plot_ica_overlay, plot_ica_properties, + plot_ica_scores, + plot_ica_sources, ) from .misc import ( + _get_presser, + adjust_axes, + plot_bem, + plot_chpi_snr, plot_cov, plot_csd, - plot_bem, - plot_events, - plot_source_spectrogram, - _get_presser, plot_dipole_amplitudes, - plot_ideal_filter, + plot_events, plot_filter, - adjust_axes, - plot_chpi_snr, + plot_ideal_filter, + plot_source_spectrogram, ) from .montage import plot_montage -from .raw import plot_raw, plot_raw_psd, plot_raw_psd_topo, _RAW_CLIP_DEF -from .topo import plot_topo_image_epochs, iter_topography +from .raw import _RAW_CLIP_DEF, plot_raw, plot_raw_psd, plot_raw_psd_topo +from .topo import iter_topography, plot_topo_image_epochs from .topomap import ( - plot_evoked_topomap, - plot_projs_topomap, plot_arrowmap, - plot_ica_components, - plot_tfr_topomap, - plot_topomap, - plot_epochs_psd_topomap, - plot_layout, plot_bridged_electrodes, plot_ch_adjacency, + plot_epochs_psd_topomap, + plot_evoked_topomap, + plot_ica_components, + plot_layout, + plot_projs_topomap, plot_regression_weights, + plot_tfr_topomap, + plot_topomap, ) from .utils import ( - mne_analyze_colormap, - compare_fiff, ClickableImage, + _get_plot_ch_type, add_background_image, - plot_sensors, centers_to_edges, + compare_fiff, concatenate_images, - _get_plot_ch_type, -) -from ._3d import ( - plot_sparse_source_estimates, - plot_source_estimates, - plot_vector_source_estimates, - plot_evoked_field, - plot_dipole_locations, - snapshot_brain_montage, - plot_head_positions, - plot_alignment, - plot_brain_colorbar, - plot_volume_source_estimates, - link_brains, - set_3d_options, + mne_analyze_colormap, + plot_sensors, ) -from ._brain import Brain -from ._figure import get_browser_backend, set_browser_backend, use_browser_backend -from ._proj import plot_projs_joint diff --git a/mne/viz/_brain/_brain.py b/mne/viz/_brain/_brain.py index 4c4aeb531ba..80c9d313924 100644 --- a/mne/viz/_brain/_brain.py +++ b/mne/viz/_brain/_brain.py @@ -7,89 +7,87 @@ # # License: Simplified BSD -from functools import partial -from io import BytesIO +import copy import os import os.path as op import time -import copy import traceback import warnings +from functools import partial +from io import BytesIO import numpy as np from scipy.interpolate import interp1d from scipy.sparse import csr_matrix from scipy.spatial.distance import cdist -from .colormap import calculate_lut -from .surface import _Surface -from .view import views_dicts, _lh_views_dict - -from ..utils import ( - _show_help_fig, - _get_color_list, - concatenate_images, - _generate_default_filename, - _save_ndarray_img, - safe_event, -) -from .._3d import ( - _process_clim, - _handle_time, - _check_views, - _handle_sensor_types, - _plot_sensors, - _plot_forward, -) -from .._3d_overlay import _LayeredMesh -from ...defaults import _handle_default, DEFAULTS +from ..._fiff.meas_info import Info +from ..._fiff.pick import pick_types from ..._freesurfer import ( - vertex_to_mni, - read_talxfm, - read_freesurfer_lut, + _estimate_talxfm_rigid, _get_head_surface, _get_skull_surface, - _estimate_talxfm_rigid, + read_freesurfer_lut, + read_talxfm, + vertex_to_mni, ) -from ..._fiff.pick import pick_types -from ..._fiff.meas_info import Info -from ...surface import mesh_edges, _mesh_borders, _marching_cubes, get_meg_helmet_surf +from ...defaults import DEFAULTS, _handle_default +from ...surface import _marching_cubes, _mesh_borders, get_meg_helmet_surf, mesh_edges from ...transforms import ( Transform, - apply_trans, _frame_to_str, _get_trans, _get_transforms_to_coord_frame, + apply_trans, ) from ...utils import ( - _check_option, - logger, - verbose, - fill_doc, - _validate_type, - use_log_level, Bunch, - _ReuseCycle, - warn, - get_subjects_dir, + _auto_weakref, _check_fname, - _to_rgb, + _check_option, _ensure_int, - _auto_weakref, _path_like, + _ReuseCycle, + _to_rgb, + _validate_type, + fill_doc, + get_subjects_dir, + logger, + use_log_level, + verbose, + warn, ) - +from .._3d import ( + _check_views, + _handle_sensor_types, + _handle_time, + _plot_forward, + _plot_sensors, + _process_clim, +) +from .._3d_overlay import _LayeredMesh from ..ui_events import ( - publish, - subscribe, - unsubscribe, - TimeChange, - PlaybackSpeed, ColormapRange, + PlaybackSpeed, + TimeChange, VertexSelect, - disable_ui_events, _get_event_channel, + disable_ui_events, + publish, + subscribe, + unsubscribe, ) +from ..utils import ( + _generate_default_filename, + _get_color_list, + _save_ndarray_img, + _show_help_fig, + concatenate_images, + safe_event, +) +from .colormap import calculate_lut +from .surface import _Surface +from .view import _lh_views_dict, views_dicts @fill_doc @@ -307,7 +305,7 @@ def __init__( show=True, block=False, ): - from ..backends.renderer import backend, _get_renderer + from ..backends.renderer import _get_renderer, backend _validate_type(subject, str, "subject") self._surf = surf @@ -987,8 +985,8 @@ def _set_label_mode(mode): self.mpl_canvas.update_plot() self._renderer._update() - from ...source_estimate import _get_allowed_label_modes from ...label import _read_annot_cands + from ...source_estimate import _get_allowed_label_modes dir_name = op.join(self._subjects_dir, self._subject, "label") cands = _read_annot_cands(dir_name, raise_error=False) @@ -1677,9 +1675,10 @@ def interaction(self, interaction): def _cortex_colormap(self, cortex): """Return the colormap corresponding to the cortex.""" - from .._3d import _get_cmap from matplotlib.colors import ListedColormap + from .._3d import _get_cmap + colormap_map = dict( classic=dict(colormap="Greys", vmin=-1, vmax=2), high_contrast=dict(colormap="Greys", vmin=-0.1, vmax=1.3), @@ -2053,8 +2052,8 @@ def remove_annotations(self): self._renderer._update() def _add_volume_data(self, hemi, src, volume_options): - from ..backends._pyvista import _hide_testing_actor from ...source_space import SourceSpaces + from ..backends._pyvista import _hide_testing_actor _validate_type(src, SourceSpaces, "src") _check_option("src.kind", src.kind, ("volume",)) @@ -4012,9 +4011,9 @@ def _iter_time(self, time_idx, callback): def _check_stc(self, hemi, array, vertices): from ...source_estimate import ( + _BaseMixedSourceEstimate, _BaseSourceEstimate, _BaseSurfaceSourceEstimate, - _BaseMixedSourceEstimate, _BaseVolSourceEstimate, ) diff --git a/mne/viz/_brain/_linkviewer.py b/mne/viz/_brain/_linkviewer.py index a69311db003..df2edb79bd2 100644 --- a/mne/viz/_brain/_linkviewer.py +++ b/mne/viz/_brain/_linkviewer.py @@ -4,6 +4,7 @@ # # License: Simplified BSD import numpy as np + from ...utils import warn from ..ui_events import link diff --git a/mne/viz/_brain/_scraper.py b/mne/viz/_brain/_scraper.py index 8c2aa7ed96f..08ad985e7b5 100644 --- a/mne/viz/_brain/_scraper.py +++ b/mne/viz/_brain/_scraper.py @@ -18,7 +18,8 @@ def __call__(self, block, block_vars, gallery_conf): # PyVista and matplotlib scrapers can just do the work if (not isinstance(brain, Brain)) or brain._closed: continue - from matplotlib import animation, pyplot as plt + from matplotlib import animation + from matplotlib import pyplot as plt from sphinx_gallery.scrapers import matplotlib_scraper img = brain.screenshot(time_viewer=True) diff --git a/mne/viz/_brain/surface.py b/mne/viz/_brain/surface.py index ce7bb9c974a..919d6f2aa09 100644 --- a/mne/viz/_brain/surface.py +++ b/mne/viz/_brain/surface.py @@ -9,8 +9,9 @@ from os import path as path import numpy as np -from ...utils import _check_option, get_subjects_dir, _check_fname, _validate_type -from ...surface import complete_surface_info, read_surface, read_curvature, _read_patch + +from ...surface import _read_patch, complete_surface_info, read_curvature, read_surface +from ...utils import _check_fname, _check_option, _validate_type, get_subjects_dir class _Surface: diff --git a/mne/viz/_brain/tests/test_brain.py b/mne/viz/_brain/tests/test_brain.py index e9ea19c748d..9f7f7c1cac5 100644 --- a/mne/viz/_brain/tests/test_brain.py +++ b/mne/viz/_brain/tests/test_brain.py @@ -12,39 +12,38 @@ from pathlib import Path from shutil import copyfile -import pytest import numpy as np +import pytest +from matplotlib import image +from matplotlib.lines import Line2D from numpy.testing import assert_allclose, assert_array_equal from mne import ( - read_source_estimate, - read_evokeds, - read_cov, - read_forward_solution, - pick_types_forward, - SourceEstimate, + Dipole, MixedSourceEstimate, - write_surface, + SourceEstimate, VolSourceEstimate, - vertex_to_mni, - Dipole, create_info, + pick_types_forward, + read_cov, + read_evokeds, + read_forward_solution, + read_source_estimate, + vertex_to_mni, + write_surface, ) from mne.channels import make_dig_montage +from mne.datasets import testing +from mne.io import read_info +from mne.label import read_label from mne.minimum_norm import apply_inverse, make_inverse_operator from mne.source_estimate import _BaseSourceEstimate from mne.source_space import read_source_spaces, setup_volume_source_space -from mne.datasets import testing -from mne.io import read_info from mne.utils import check_version -from mne.label import read_label -from mne.viz._brain import Brain, _LinkViewer, _BrainScraper, _LayeredMesh +from mne.viz import ui_events +from mne.viz._brain import Brain, _BrainScraper, _LayeredMesh, _LinkViewer from mne.viz._brain.colormap import calculate_lut from mne.viz.utils import _get_cmap -from mne.viz import ui_events - -from matplotlib import image -from matplotlib.lines import Line2D data_path = testing.data_path(download=False) subject = "sample" diff --git a/mne/viz/_brain/tests/test_notebook.py b/mne/viz/_brain/tests/test_notebook.py index 928f2eded53..f2da02bc467 100644 --- a/mne/viz/_brain/tests/test_notebook.py +++ b/mne/viz/_brain/tests/test_notebook.py @@ -5,6 +5,7 @@ # executed in a separate IPython kernel. import pytest + from mne.datasets import testing @@ -12,6 +13,7 @@ def test_notebook_alignment(renderer_notebook, brain_gc, nbexec): """Test plot alignment in a notebook.""" import pytest + import mne with pytest.MonkeyPatch().context() as mp: @@ -39,14 +41,16 @@ def test_notebook_alignment(renderer_notebook, brain_gc, nbexec): @testing.requires_testing_data def test_notebook_interactive(renderer_notebook, brain_gc, nbexec): """Test interactive modes.""" - from contextlib import contextmanager - from pathlib import Path import tempfile import time + from contextlib import contextmanager + from pathlib import Path + + import matplotlib.pyplot as plt import pytest - from numpy.testing import assert_allclose from ipywidgets import Button - import matplotlib.pyplot as plt + from numpy.testing import assert_allclose + import mne from mne.datasets import testing @@ -128,9 +132,10 @@ def interactive(on): @testing.requires_testing_data def test_notebook_button_counts(renderer_notebook, brain_gc, nbexec): """Test button counts.""" - import mne from ipywidgets import Button + import mne + mne.viz.set_3d_backend("notebook") rend = mne.viz.create_3d_figure(size=(100, 100), scene=False) fig = rend.scene() diff --git a/mne/viz/_dipole.py b/mne/viz/_dipole.py index 24fc4735f3c..809a7f45876 100644 --- a/mne/viz/_dipole.py +++ b/mne/viz/_dipole.py @@ -9,11 +9,11 @@ import numpy as np from scipy.spatial import ConvexHull -from .utils import plt_show, _validate_if_list_of_axes -from .._freesurfer import _get_head_surface, _estimate_talxfm_rigid +from .._freesurfer import _estimate_talxfm_rigid, _get_head_surface from ..surface import read_surface -from ..transforms import apply_trans, invert_transform, _get_trans -from ..utils import _validate_type, _check_option, get_subjects_dir +from ..transforms import _get_trans, apply_trans, invert_transform +from ..utils import _check_option, _validate_type, get_subjects_dir +from .utils import _validate_if_list_of_axes, plt_show def _check_concat_dipoles(dipole): @@ -41,9 +41,9 @@ def _plot_dipole_mri_outlines( surf, width, ): + import matplotlib.pyplot as plt from matplotlib.collections import LineCollection, PatchCollection from matplotlib.patches import Circle - import matplotlib.pyplot as plt extra = 'when mode is "outlines"' trans = _get_trans(trans, fro="head", to="mri")[0] diff --git a/mne/viz/_figure.py b/mne/viz/_figure.py index 738bf838ce3..f53e079c6b5 100644 --- a/mne/viz/_figure.py +++ b/mne/viz/_figure.py @@ -13,15 +13,21 @@ import numpy as np -from .backends._utils import VALID_BROWSE_BACKENDS -from .utils import _get_color_list, _setup_plot_projector, _show_browser - -from ..defaults import _handle_default -from ..filter import _overlap_add_filter, _iir_filter -from ..utils import logger, _validate_type, _check_option from .._fiff.pick import _DATA_CH_TYPES_SPLIT -from ..utils import verbose, get_config, set_config, _get_stim_channel +from ..defaults import _handle_default +from ..filter import _iir_filter, _overlap_add_filter from ..fixes import _compare_version +from ..utils import ( + _check_option, + _get_stim_channel, + _validate_type, + get_config, + logger, + set_config, + verbose, +) +from .backends._utils import VALID_BROWSE_BACKENDS +from .utils import _get_color_list, _setup_plot_projector, _show_browser MNE_BROWSER_BACKEND = None backend = None @@ -498,8 +504,8 @@ def _create_ica_properties_fig(self, idx): """Show ICA properties for the selected component.""" from mne.viz.ica import ( _create_properties_layout, - _prepare_data_ica_properties, _fast_plot_ica_properties, + _prepare_data_ica_properties, ) ch_name = self.mne.ch_names[idx] @@ -529,6 +535,7 @@ def _create_ica_properties_fig(self, idx): def _create_epoch_image_fig(self, pick): """Show epochs image for the selected channel.""" from matplotlib.gridspec import GridSpec + from mne.viz import plot_epochs_image ch_name = self.mne.ch_names[pick] @@ -663,6 +670,7 @@ def _get_browser(show, block, **kwargs): # Check mne-qt-browser compatibility if backend_name == "qt": import mne_qt_browser + from ..epochs import BaseEpochs is_ica = kwargs.get("ica", False) diff --git a/mne/viz/_mpl_figure.py b/mne/viz/_mpl_figure.py index c313bfe1edf..2149aa73d1f 100644 --- a/mne/viz/_mpl_figure.py +++ b/mne/viz/_mpl_figure.py @@ -47,30 +47,30 @@ from matplotlib import get_backend from matplotlib.figure import Figure -from ..fixes import _close_event from .._fiff.pick import ( _DATA_CH_TYPES_ORDER_DEFAULT, _DATA_CH_TYPES_SPLIT, - _FNIRS_CH_TYPES_SPLIT, _EYETRACK_CH_TYPES_SPLIT, + _FNIRS_CH_TYPES_SPLIT, _VALID_CHANNEL_TYPES, channel_indices_by_type, pick_types, ) -from ..utils import Bunch, _click_ch_name, logger, check_version +from ..fixes import _close_event +from ..utils import Bunch, _click_ch_name, check_version, logger from ._figure import BrowserBase from .utils import ( DraggableLine, _events_off, _fake_click, _fake_keypress, + _fake_scroll, _merge_annotations, _prop_kw, _set_window_title, _validate_if_list_of_axes, - plt_show, - _fake_scroll, plot_sensors, + plt_show, ) name = "matplotlib" @@ -791,6 +791,7 @@ def _keypress(self, event): def _buttonpress(self, event): """Handle mouse clicks.""" from matplotlib.collections import PolyCollection + from ..annotations import _sync_onset butterfly = self.mne.butterfly diff --git a/mne/viz/_proj.py b/mne/viz/_proj.py index 0f8f02a3089..0493d0ce8fb 100644 --- a/mne/viz/_proj.py +++ b/mne/viz/_proj.py @@ -8,12 +8,12 @@ import numpy as np +from .._fiff.pick import _picks_to_idx +from ..defaults import DEFAULTS +from ..utils import _pl, _validate_type, verbose, warn from .evoked import _plot_evoked from .topomap import _plot_projs_topomap -from .utils import plt_show, _check_type_projs -from ..defaults import DEFAULTS -from .._fiff.pick import _picks_to_idx -from ..utils import _validate_type, warn, _pl, verbose +from .utils import _check_type_projs, plt_show @verbose @@ -62,6 +62,7 @@ def plot_projs_joint( .. versionadded:: 1.1 """ import matplotlib.pyplot as plt + from ..evoked import Evoked _validate_type(evoked, Evoked, "evoked") diff --git a/mne/viz/backends/_abstract.py b/mne/viz/backends/_abstract.py index e924e7deae9..f6520244c3a 100644 --- a/mne/viz/backends/_abstract.py +++ b/mne/viz/backends/_abstract.py @@ -6,10 +6,10 @@ # # License: Simplified BSD -from abc import ABC, abstractmethod, abstractclassmethod import warnings +from abc import ABC, abstractclassmethod, abstractmethod -from ..ui_events import publish, TimeChange +from ..ui_events import TimeChange, publish class Figure3D(ABC): diff --git a/mne/viz/backends/_notebook.py b/mne/viz/backends/_notebook.py index 1c53c968b55..319d294a8a5 100644 --- a/mne/viz/backends/_notebook.py +++ b/mne/viz/backends/_notebook.py @@ -10,85 +10,83 @@ import re from contextlib import contextmanager, nullcontext -from IPython.display import display, clear_output +from ipyevents import Event +from IPython.display import clear_output, display from ipywidgets import ( - Widget, - HBox, - VBox, + HTML, + Accordion, + BoundedFloatText, Button, + Checkbox, Dropdown, + # non-object-based-abstraction-only widgets, deprecate + FloatSlider, + GridBox, + HBox, + IntProgress, IntSlider, IntText, - Text, - IntProgress, - Play, Label, - HTML, - Checkbox, - RadioButtons, - Accordion, - link, Layout, + Play, + RadioButtons, Select, - GridBox, - # non-object-based-abstraction-only widgets, deprecate - FloatSlider, - BoundedFloatText, + Text, + VBox, + Widget, jsdlink, + link, ) -from ipyevents import Event -from .renderer import _TimeInteraction +from ...utils import _soft_import, check_version from ._abstract import ( + _AbstractAction, _AbstractAppWindow, - _AbstractHBoxLayout, - _AbstractVBoxLayout, - _AbstractGridLayout, - _AbstractWidget, - _AbstractCanvas, - _AbstractPopup, - _AbstractLabel, + _AbstractBrainMplCanvas, _AbstractButton, - _AbstractSlider, + _AbstractCanvas, _AbstractCheckBox, - _AbstractSpinBox, _AbstractComboBox, - _AbstractRadioButtons, - _AbstractGroupBox, - _AbstractText, + _AbstractDialog, + _AbstractDock, _AbstractFileButton, + _AbstractGridLayout, + _AbstractGroupBox, + _AbstractHBoxLayout, + _AbstractKeyPress, + _AbstractLabel, + _AbstractLayout, + _AbstractMenuBar, + _AbstractMplCanvas, + _AbstractMplInterface, + _AbstractPlayback, _AbstractPlayMenu, + _AbstractPopup, _AbstractProgressBar, -) -from ._abstract import ( - _AbstractDock, - _AbstractToolBar, - _AbstractMenuBar, + _AbstractRadioButtons, + _AbstractSlider, + _AbstractSpinBox, _AbstractStatusBar, - _AbstractLayout, + _AbstractText, + _AbstractToolBar, + _AbstractVBoxLayout, _AbstractWdgt, - _AbstractWindow, - _AbstractMplCanvas, - _AbstractPlayback, - _AbstractBrainMplCanvas, - _AbstractMplInterface, + _AbstractWidget, _AbstractWidgetList, - _AbstractAction, - _AbstractDialog, - _AbstractKeyPress, + _AbstractWindow, ) -from ._pyvista import _PyVistaRenderer, Plotter from ._pyvista import ( - _close_3d_figure, # noqa: F401 + Plotter, _check_3d_figure, # noqa: F401 + _close_3d_figure, # noqa: F401 _close_all, # noqa: F401 - _set_3d_view, # noqa: F401 + _PyVistaRenderer, _set_3d_title, # noqa: F401 + _set_3d_view, # noqa: F401 _take_3d_screenshot, # noqa: F401 ) from ._utils import _notebook_vtk_works -from ...utils import check_version, _soft_import - +from .renderer import _TimeInteraction # dict values are icon names from: https://fontawesome.com/icons _ICON_LUT = dict( diff --git a/mne/viz/backends/_pyvista.py b/mne/viz/backends/_pyvista.py index 700ff9e6870..b09314462dc 100644 --- a/mne/viz/backends/_pyvista.py +++ b/mne/viz/backends/_pyvista.py @@ -11,37 +11,36 @@ # # License: Simplified BSD -from contextlib import contextmanager -from inspect import signature import platform import re import warnings +from contextlib import contextmanager +from inspect import signature import numpy as np -from ._abstract import _AbstractRenderer, Figure3D -from ._utils import ( - _get_colormap_from_array, - _alpha_blend_background, - ALLOWED_QUIVER_MODES, - _init_mne_qtapp, -) from ...fixes import _compare_version -from ...transforms import apply_trans, _cart_to_sph, _sph_to_cart +from ...transforms import _cart_to_sph, _sph_to_cart, apply_trans from ...utils import ( - copy_base_doc_to_subclass_doc, _check_option, _require_version, _validate_type, - warn, + copy_base_doc_to_subclass_doc, deprecated, + warn, +) +from ._abstract import Figure3D, _AbstractRenderer +from ._utils import ( + ALLOWED_QUIVER_MODES, + _alpha_blend_background, + _get_colormap_from_array, + _init_mne_qtapp, ) - with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=DeprecationWarning) import pyvista - from pyvista import Plotter, PolyData, Line, close_all, UnstructuredGrid + from pyvista import Line, Plotter, PolyData, UnstructuredGrid, close_all from pyvistaqt import BackgroundPlotter try: @@ -49,36 +48,36 @@ except Exception: # PV < 0.40 from pyvista.plotting.plotting import _ALL_PLOTTERS -from vtkmodules.vtkCommonCore import vtkCommand, vtkLookupTable, VTK_UNSIGNED_CHAR +from vtkmodules.util.numpy_support import numpy_to_vtk +from vtkmodules.vtkCommonCore import VTK_UNSIGNED_CHAR, vtkCommand, vtkLookupTable from vtkmodules.vtkCommonDataModel import VTK_VERTEX, vtkPiecewiseFunction from vtkmodules.vtkCommonTransforms import vtkTransform from vtkmodules.vtkFiltersCore import vtkCellDataToPointData, vtkGlyph3D from vtkmodules.vtkFiltersGeneral import ( - vtkTransformPolyDataFilter, vtkMarchingContourFilter, + vtkTransformPolyDataFilter, ) from vtkmodules.vtkFiltersHybrid import vtkPolyDataSilhouette from vtkmodules.vtkFiltersSources import ( - vtkSphereSource, + vtkArrowSource, vtkConeSource, vtkCylinderSource, - vtkArrowSource, - vtkPlatonicSolidSource, vtkGlyphSource2D, + vtkPlatonicSolidSource, + vtkSphereSource, ) from vtkmodules.vtkImagingCore import vtkImageReslice from vtkmodules.vtkRenderingCore import ( - vtkMapper, vtkActor, vtkCellPicker, vtkColorTransferFunction, - vtkPolyDataMapper, - vtkVolume, vtkCoordinate, vtkDataSetMapper, + vtkMapper, + vtkPolyDataMapper, + vtkVolume, ) from vtkmodules.vtkRenderingVolumeOpenGL2 import vtkSmartVolumeMapper -from vtkmodules.util.numpy_support import numpy_to_vtk _FIGURES = dict() diff --git a/mne/viz/backends/_qt.py b/mne/viz/backends/_qt.py index 5f33920f3b4..7bb87537d10 100644 --- a/mne/viz/backends/_qt.py +++ b/mne/viz/backends/_qt.py @@ -6,121 +6,121 @@ # # License: Simplified BSD -from contextlib import contextmanager import os import platform import sys import weakref +from contextlib import contextmanager + +# importing anything from qtpy forces a Qt API choice as a side effect, which is then +# used by matplotlib and pyvistaqt +from qtpy import API_NAME # noqa: F401, isort: skip import pyvista -from pyvistaqt.plotting import FileDialog, MainWindow -from .renderer import _TimeInteraction +from matplotlib.backends.backend_qtagg import FigureCanvas from matplotlib.figure import Figure -from matplotlib.backends.backend_qt5agg import FigureCanvas - +from pyvistaqt.plotting import FileDialog, MainWindow from qtpy.QtCore import ( + QEvent, + QLibraryInfo, + QLocale, + QObject, Qt, QTimer, - QLocale, - QLibraryInfo, - QEvent, # non-object-based-abstraction-only, deprecate Signal, - QObject, ) -from qtpy.QtGui import QIcon, QCursor, QKeyEvent +from qtpy.QtGui import QCursor, QIcon, QKeyEvent from qtpy.QtWidgets import ( + QButtonGroup, + QCheckBox, QComboBox, + # non-object-based-abstraction-only, deprecate + QDockWidget, + QDoubleSpinBox, + QFileDialog, + QGridLayout, QGroupBox, QHBoxLayout, QLabel, - QSlider, - QDoubleSpinBox, - QVBoxLayout, - QWidget, - QSizePolicy, - QProgressBar, - QScrollArea, QLayout, - QCheckBox, - QButtonGroup, - QRadioButton, QLineEdit, - QGridLayout, - QFileDialog, - QPushButton, - QMessageBox, - # non-object-based-abstraction-only, deprecate - QDockWidget, - QToolButton, QMenuBar, + QMessageBox, + QProgressBar, + QPushButton, + QRadioButton, + QScrollArea, + QSizePolicy, + QSlider, QSpinBox, QStyle, QStyleOptionSlider, + QToolButton, + QVBoxLayout, + QWidget, ) -from ._pyvista import _PyVistaRenderer -from ._pyvista import ( - _close_3d_figure, # noqa: F401 - _check_3d_figure, # noqa: F401 - _close_all, # noqa: F401 - _set_3d_view, # noqa: F401 - _set_3d_title, # noqa: F401 - _take_3d_screenshot, # noqa: F401 - _is_mesa, # noqa: F401 -) +from ...fixes import _compare_version +from ...utils import _check_option, get_config +from ..utils import safe_event from ._abstract import ( + _AbstractAction, _AbstractAppWindow, - _AbstractHBoxLayout, - _AbstractVBoxLayout, - _AbstractGridLayout, - _AbstractWidget, - _AbstractCanvas, - _AbstractPopup, - _AbstractLabel, + _AbstractBrainMplCanvas, _AbstractButton, - _AbstractSlider, + _AbstractCanvas, _AbstractCheckBox, - _AbstractSpinBox, _AbstractComboBox, - _AbstractRadioButtons, - _AbstractGroupBox, - _AbstractText, + _AbstractDialog, + _AbstractDock, _AbstractFileButton, + _AbstractGridLayout, + _AbstractGroupBox, + _AbstractHBoxLayout, + _AbstractKeyPress, + _AbstractLabel, + _AbstractLayout, + _AbstractMenuBar, + _AbstractMplCanvas, + _AbstractMplInterface, + _AbstractPlayback, _AbstractPlayMenu, + _AbstractPopup, _AbstractProgressBar, -) -from ._abstract import ( - _AbstractDock, - _AbstractToolBar, - _AbstractMenuBar, + _AbstractRadioButtons, + _AbstractSlider, + _AbstractSpinBox, _AbstractStatusBar, - _AbstractLayout, + _AbstractText, + _AbstractToolBar, + _AbstractVBoxLayout, _AbstractWdgt, - _AbstractWindow, - _AbstractMplCanvas, - _AbstractPlayback, - _AbstractBrainMplCanvas, - _AbstractMplInterface, + _AbstractWidget, _AbstractWidgetList, - _AbstractAction, - _AbstractDialog, - _AbstractKeyPress, + _AbstractWindow, +) +from ._pyvista import ( + _check_3d_figure, # noqa: F401 + _close_3d_figure, # noqa: F401 + _close_all, # noqa: F401 + _is_mesa, # noqa: F401 + _PyVistaRenderer, + _set_3d_title, # noqa: F401 + _set_3d_view, # noqa: F401 + _take_3d_screenshot, # noqa: F401 ) from ._utils import ( + _init_mne_qtapp, + _qt_app_exec, + _qt_detect_theme, _qt_disable_paint, _qt_get_stylesheet, _qt_is_dark, - _qt_detect_theme, _qt_raise_window, - _init_mne_qtapp, - _qt_app_exec, _qt_safe_window, ) -from ..utils import safe_event -from ...utils import _check_option, get_config -from ...fixes import _compare_version - +from .renderer import _TimeInteraction # Adapted from matplotlib if ( @@ -1416,8 +1416,8 @@ def _playback_initialize(self, func, timeout, value, rng, time_widget, play_widg class _QtMplInterface(_AbstractMplInterface): def _mpl_initialize(self): - from qtpy import QtWidgets from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg + from qtpy import QtWidgets self.canvas = FigureCanvasQTAgg(self.fig) FigureCanvasQTAgg.setSizePolicy( diff --git a/mne/viz/backends/_utils.py b/mne/viz/backends/_utils.py index afb66f09213..b114e99e349 100644 --- a/mne/viz/backends/_utils.py +++ b/mne/viz/backends/_utils.py @@ -5,21 +5,21 @@ # Guillaume Favelier # # License: Simplified BSD -from ctypes import cdll, c_void_p, c_char_p import collections.abc -from colorsys import rgb_to_hls -from contextlib import contextmanager import functools import os import platform import signal import sys - +from colorsys import rgb_to_hls +from contextlib import contextmanager +from ctypes import c_char_p, c_void_p, cdll from pathlib import Path + import numpy as np from ...fixes import _compare_version -from ...utils import logger, warn, _validate_type, _check_qt_version +from ...utils import _check_qt_version, _validate_type, logger, warn from ..utils import _get_cmap VALID_BROWSE_BACKENDS = ( @@ -131,7 +131,7 @@ def _init_mne_qtapp(enable_icon=True, pg_app=False, splash=False): string. """ from qtpy.QtCore import Qt - from qtpy.QtGui import QIcon, QPixmap, QGuiApplication + from qtpy.QtGui import QGuiApplication, QIcon, QPixmap from qtpy.QtWidgets import QApplication, QSplashScreen app_name = "MNE-Python" diff --git a/mne/viz/backends/renderer.py b/mne/viz/backends/renderer.py index 960e32978f3..e0120e5ae70 100644 --- a/mne/viz/backends/renderer.py +++ b/mne/viz/backends/renderer.py @@ -7,25 +7,25 @@ # # License: Simplified BSD -from contextlib import contextmanager import importlib -from functools import partial import time +from contextlib import contextmanager +from functools import partial import numpy as np -from ._utils import VALID_3D_BACKENDS -from .._3d import _get_3d_option -from ..utils import safe_event from ...utils import ( - logger, - verbose, - get_config, + _auto_weakref, _check_option, - fill_doc, _validate_type, - _auto_weakref, + fill_doc, + get_config, + logger, + verbose, ) +from .._3d import _get_3d_option +from ..utils import safe_event +from ._utils import VALID_3D_BACKENDS MNE_3D_BACKEND = None MNE_3D_BACKEND_TESTING = False @@ -398,10 +398,10 @@ def _enable_time_interaction( playback_speed_range=[0.01, 0.1], ): from ..ui_events import ( + PlaybackSpeed, + TimeChange, publish, subscribe, - TimeChange, - PlaybackSpeed, ) self._fig = fig @@ -521,7 +521,7 @@ def _on_playback_speed(self, event): def _toggle_playback(self, value=None): """Toggle time playback.""" - from ..ui_events import publish, TimeChange + from ..ui_events import TimeChange, publish if value is None: self._playback = not self._playback @@ -538,7 +538,7 @@ def _toggle_playback(self, value=None): def _reset_time(self): """Reset time and playback speed to initial values.""" - from ..ui_events import publish, TimeChange, PlaybackSpeed + from ..ui_events import PlaybackSpeed, TimeChange, publish publish(self._fig, TimeChange(time=self._init_time)) publish(self._fig, PlaybackSpeed(speed=self._init_playback_speed)) @@ -553,7 +553,7 @@ def _play(self): raise def _advance(self): - from ..ui_events import publish, TimeChange + from ..ui_events import TimeChange, publish this_time = time.time() delta = this_time - self._last_tick diff --git a/mne/viz/backends/tests/_utils.py b/mne/viz/backends/tests/_utils.py index bac1b2a5c70..ca4961e784f 100644 --- a/mne/viz/backends/tests/_utils.py +++ b/mne/viz/backends/tests/_utils.py @@ -5,9 +5,10 @@ # # License: Simplified BSD -import pytest import warnings +import pytest + def has_pyvista(): """Check that PyVista is installed.""" diff --git a/mne/viz/backends/tests/test_abstract.py b/mne/viz/backends/tests/test_abstract.py index b5d72f03537..4130611a18a 100644 --- a/mne/viz/backends/tests/test_abstract.py +++ b/mne/viz/backends/tests/test_abstract.py @@ -117,10 +117,12 @@ def test_widget_abstraction_pyvistaqt(renderer_pyvistaqt): def test_widget_abstraction_notebook(renderer_notebook, nbexec): """Test the GUI widgets abstraction in notebook.""" from pathlib import Path + + from IPython import get_ipython + from mne.viz import set_3d_backend from mne.viz.backends.renderer import _get_backend from mne.viz.backends.tests.test_abstract import _do_widget_tests - from IPython import get_ipython set_3d_backend("notebook") backend = _get_backend() diff --git a/mne/viz/backends/tests/test_renderer.py b/mne/viz/backends/tests/test_renderer.py index eef1b7c459f..9de7862a597 100644 --- a/mne/viz/backends/tests/test_renderer.py +++ b/mne/viz/backends/tests/test_renderer.py @@ -9,14 +9,14 @@ import platform import sys -import pytest import numpy as np +import pytest from mne.utils import run_subprocess -from mne.viz import set_3d_backend, get_3d_backend, Figure3D +from mne.viz import Figure3D, get_3d_backend, set_3d_backend +from mne.viz.backends._utils import ALLOWED_QUIVER_MODES from mne.viz.backends.renderer import _get_renderer from mne.viz.backends.tests._utils import skips_if_not_pyvistaqt -from mne.viz.backends._utils import ALLOWED_QUIVER_MODES @pytest.mark.parametrize( diff --git a/mne/viz/backends/tests/test_utils.py b/mne/viz/backends/tests/test_utils.py index cfa0c65535f..b5ff72fc584 100644 --- a/mne/viz/backends/tests/test_utils.py +++ b/mne/viz/backends/tests/test_utils.py @@ -5,27 +5,27 @@ # # License: Simplified BSD +import platform from colorsys import rgb_to_hls from contextlib import nullcontext -import platform import numpy as np import pytest from mne import create_info from mne.io import RawArray +from mne.utils import _check_qt_version from mne.viz.backends._utils import ( - _get_colormap_from_array, _check_color, - _qt_is_dark, + _get_colormap_from_array, _pixmap_to_ndarray, + _qt_is_dark, ) -from mne.utils import _check_qt_version def test_get_colormap_from_array(): """Test setting a colormap.""" - from matplotlib.colors import ListedColormap, LinearSegmentedColormap + from matplotlib.colors import LinearSegmentedColormap, ListedColormap cmap = _get_colormap_from_array() assert isinstance(cmap, LinearSegmentedColormap) diff --git a/mne/viz/circle.py b/mne/viz/circle.py index 983eef69c5c..2877bebe382 100644 --- a/mne/viz/circle.py +++ b/mne/viz/circle.py @@ -7,13 +7,13 @@ # License: Simplified BSD -from itertools import cycle from functools import partial +from itertools import cycle import numpy as np -from .utils import plt_show, _get_cmap from ..utils import _validate_type +from .utils import _get_cmap, plt_show def circular_layout( @@ -154,9 +154,9 @@ def _plot_connectivity_circle( node_linewidth=2.0, show=True, ): - import matplotlib.pyplot as plt - import matplotlib.path as m_path import matplotlib.patches as m_patches + import matplotlib.path as m_path + import matplotlib.pyplot as plt from matplotlib.projections.polar import PolarAxes _validate_type(ax, (None, PolarAxes)) diff --git a/mne/viz/conftest.py b/mne/viz/conftest.py index ae4f6f5a979..0b46923ffc6 100644 --- a/mne/viz/conftest.py +++ b/mne/viz/conftest.py @@ -4,16 +4,16 @@ # # License: BSD-3-Clause -import pytest -import numpy as np import os.path as op -from mne import create_info, EvokedArray, events_from_annotations, Epochs +import numpy as np +import pytest + +from mne import Epochs, EvokedArray, create_info, events_from_annotations from mne.channels import make_standard_montage -from mne.datasets.testing import data_path, _pytest_param +from mne.datasets.testing import _pytest_param, data_path from mne.io import read_raw_nirx -from mne.preprocessing.nirs import optical_density, beer_lambert_law - +from mne.preprocessing.nirs import beer_lambert_law, optical_density fname_nirx = op.join( data_path(download=False), "NIRx", "nirscout", "nirx_15_2_recording_w_overlap" diff --git a/mne/viz/epochs.py b/mne/viz/epochs.py index 7bd1785ada9..5918d6d6aec 100644 --- a/mne/viz/epochs.py +++ b/mne/viz/epochs.py @@ -17,33 +17,32 @@ import numpy as np from scipy.ndimage import gaussian_filter1d -from .raw import _setup_channel_selections -from ..fixes import _sharex -from ..defaults import _handle_default -from ..utils import legacy, verbose, logger, warn, fill_doc, _check_option -from ..utils.spectrum import _split_psd_kwargs from .._fiff.meas_info import create_info - from .._fiff.pick import ( - _picks_to_idx, _DATA_CH_TYPES_SPLIT, _VALID_CHANNEL_TYPES, + _picks_to_idx, ) +from ..defaults import _handle_default +from ..fixes import _sharex +from ..utils import _check_option, fill_doc, legacy, logger, verbose, warn +from ..utils.spectrum import _split_psd_kwargs +from .raw import _setup_channel_selections from .utils import ( - _setup_vmin_vmax, - plt_show, + DraggableColorbar, _check_cov, - _handle_precompute, _compute_scalings, - DraggableColorbar, - _setup_cmap, + _get_channel_plotting_order, _handle_decim, - _set_title_multiple_electrodes, + _handle_precompute, _make_combine_callable, - _set_window_title, _make_event_color_dict, - _get_channel_plotting_order, + _set_title_multiple_electrodes, + _set_window_title, + _setup_cmap, + _setup_vmin_vmax, _validate_type, + plt_show, ) @@ -430,7 +429,7 @@ def plot_epochs_image( def _validate_fig_and_axes(fig, axes, group_by, evoked, colorbar, clear=False): """Check user-provided fig/axes compatibility with plot_epochs_image.""" - from matplotlib.pyplot import figure, Axes, subplot2grid + from matplotlib.pyplot import Axes, figure, subplot2grid n_axes = 1 + int(evoked) + int(colorbar) ax_names = ("image", "evoked", "colorbar") @@ -711,6 +710,7 @@ def plot_drop_log( The figure. """ import matplotlib.pyplot as plt + from ..epochs import _drop_log_stats percent = _drop_log_stats(drop_log, ignore) diff --git a/mne/viz/evoked.py b/mne/viz/evoked.py index 5886bb26db3..88340295d78 100644 --- a/mne/viz/evoked.py +++ b/mne/viz/evoked.py @@ -17,66 +17,65 @@ import numpy as np -from ..fixes import _is_last_row from .._fiff.pick import ( - channel_type, - _VALID_CHANNEL_TYPES, - channel_indices_by_type, _DATA_CH_TYPES_SPLIT, _PICK_TYPES_DATA_DICT, + _VALID_CHANNEL_TYPES, _picks_to_idx, + channel_indices_by_type, + channel_type, pick_info, ) from ..defaults import _handle_default -from .utils import ( - _draw_proj_checkbox, - _check_delayed_ssp, - plt_show, - _process_times, - DraggableColorbar, - _setup_cmap, - _setup_vmin_vmax, - _check_cov, - _make_combine_callable, - _validate_if_list_of_axes, - _triage_rank_sss, - _get_color_list, - _setup_ax_spines, - _setup_plot_projector, - _prepare_joint_axes, - _check_option, - _set_title_multiple_electrodes, - _check_time_unit, - _plot_masked_image, - _trim_ticks, - _set_window_title, - _prop_kw, - _get_cmap, -) +from ..fixes import _is_last_row from ..utils import ( - logger, + _check_ch_locs, + _check_if_nan, _clean_names, - warn, + _is_numeric, _pl, - verbose, + _to_rgb, _validate_type, - _check_if_nan, - _check_ch_locs, fill_doc, - _is_numeric, - _to_rgb, + logger, + verbose, + warn, ) - from .topo import _plot_evoked_topo from .topomap import ( - _prepare_topomap_plot, - plot_topomap, - _get_pos_outlines, + _check_sphere, _draw_outlines, + _get_pos_outlines, + _make_head_outlines, _prepare_topomap, + _prepare_topomap_plot, _set_contour_locator, - _check_sphere, - _make_head_outlines, + plot_topomap, +) +from .utils import ( + DraggableColorbar, + _check_cov, + _check_delayed_ssp, + _check_option, + _check_time_unit, + _draw_proj_checkbox, + _get_cmap, + _get_color_list, + _make_combine_callable, + _plot_masked_image, + _prepare_joint_axes, + _process_times, + _prop_kw, + _set_title_multiple_electrodes, + _set_window_title, + _setup_ax_spines, + _setup_cmap, + _setup_plot_projector, + _setup_vmin_vmax, + _triage_rank_sss, + _trim_ticks, + _validate_if_list_of_axes, + plt_show, ) @@ -134,6 +133,7 @@ def _line_plot_onselect( ): """Draw topomaps from the selected area.""" import matplotlib.pyplot as plt + from ..channels.layout import _pair_grad_sensors ch_types = [type_ for type_ in ch_types if type_ in ("eeg", "grad", "mag")] @@ -607,7 +607,8 @@ def _plot_lines( highlight, ): """Plot data as butterfly plot.""" - from matplotlib import patheffects, pyplot as plt + from matplotlib import patheffects + from matplotlib import pyplot as plt from matplotlib.widgets import SpanSelector assert len(axes) == len(ch_types_used) @@ -1569,9 +1570,10 @@ def plot_evoked_white( covariance estimation and spatial whitening of MEG and EEG signals, vol. 108, 328-342, NeuroImage. """ - from ..cov import whiten_evoked, Covariance, _ensure_cov import matplotlib.pyplot as plt + from ..cov import Covariance, _ensure_cov, whiten_evoked + time_unit, times = _check_time_unit(time_unit, evoked.times) _validate_type(noise_cov, (list, tuple, Covariance, "path-like")) @@ -1768,6 +1770,7 @@ def plot_snr_estimate(evoked, inv, show=True, axes=None, verbose=None): .. versionadded:: 0.9.0 """ import matplotlib.pyplot as plt + from ..minimum_norm import estimate_snr snr, snr_est = estimate_snr(evoked, inv) @@ -2328,9 +2331,9 @@ def _evoked_sensor_legend(info, picks, ymin, ymax, show_sensors, ax, sphere): def _draw_colorbar_pce(ax, colors, cmap, colorbar_title, colorbar_ticks): """Draw colorbar for plot_compare_evokeds.""" - from mpl_toolkits.axes_grid1 import make_axes_locatable from matplotlib.colorbar import ColorbarBase from matplotlib.transforms import Bbox + from mpl_toolkits.axes_grid1 import make_axes_locatable # create colorbar axes orig_bbox = ax.get_position() @@ -2827,6 +2830,7 @@ def plot_compare_evokeds( +-------------+----------------+------------------------------------------+ """ import matplotlib.pyplot as plt + from ..evoked import Evoked, _check_evokeds_ch_names_times # build up evokeds into a dict, if it's not already @@ -3009,8 +3013,8 @@ def plot_compare_evokeds( if np.array(picks).ndim < 2: picks = [picks] # enables zipping w/ axes else: - from .topo import iter_topography from ..channels.layout import find_layout + from .topo import iter_topography fig = plt.figure(figsize=(18, 14), layout=None) # Not "constrained" for topo diff --git a/mne/viz/evoked_field.py b/mne/viz/evoked_field.py index 9e314a917ed..3757d2c00dd 100644 --- a/mne/viz/evoked_field.py +++ b/mne/viz/evoked_field.py @@ -3,34 +3,30 @@ author: Marijn van Vliet """ from functools import partial + import numpy as np from scipy.interpolate import interp1d - +from .._fiff.pick import pick_types +from ..defaults import DEFAULTS +from ..utils import ( + _auto_weakref, + _check_option, + _ensure_int, + _to_rgb, + _validate_type, + fill_doc, +) from ._3d_overlay import _LayeredMesh -from .utils import mne_analyze_colormap - from .ui_events import ( - publish, - subscribe, ColormapRange, Contours, TimeChange, disable_ui_events, + publish, + subscribe, ) - -from ..defaults import DEFAULTS - -from ..utils import ( - _ensure_int, - _validate_type, - _check_option, - _to_rgb, - _auto_weakref, - fill_doc, -) - -from .._fiff.pick import pick_types +from .utils import mne_analyze_colormap @fill_doc @@ -118,7 +114,7 @@ def __init__( time_viewer="auto", verbose=None, ): - from .backends.renderer import _get_renderer, _get_3d_backend + from .backends.renderer import _get_3d_backend, _get_renderer # Setup figure parameters self._evoked = evoked diff --git a/mne/viz/ica.py b/mne/viz/ica.py index d80ed9aec65..2b16c5f6837 100644 --- a/mne/viz/ica.py +++ b/mne/viz/ica.py @@ -7,34 +7,34 @@ # # License: Simplified BSD -from functools import partial import warnings +from functools import partial import numpy as np from scipy.stats import gaussian_kde -from .utils import ( - _make_event_color_dict, - _get_cmap, - plt_show, - _convert_psds, - _compute_scalings, - _handle_precompute, - _get_plot_ch_type, -) -from .topomap import _plot_ica_topomap -from .epochs import plot_epochs_image -from .evoked import _butterfly_on_button_press, _butterfly_onpick +from .._fiff.meas_info import create_info +from .._fiff.pick import _picks_to_idx, pick_types +from .._fiff.proj import _has_eeg_average_ref_proj +from ..defaults import DEFAULTS, _handle_default from ..utils import ( + _reject_data_segments, _validate_type, fill_doc, - _reject_data_segments, verbose, ) -from ..defaults import _handle_default, DEFAULTS -from .._fiff.meas_info import create_info -from .._fiff.pick import pick_types, _picks_to_idx -from .._fiff.proj import _has_eeg_average_ref_proj +from .epochs import plot_epochs_image +from .evoked import _butterfly_on_button_press, _butterfly_onpick +from .topomap import _plot_ica_topomap +from .utils import ( + _compute_scalings, + _convert_psds, + _get_cmap, + _get_plot_ch_type, + _handle_precompute, + _make_event_color_dict, + plt_show, +) @fill_doc @@ -114,9 +114,9 @@ def plot_ica_sources( .. versionadded:: 0.10.0 """ - from ..io import BaseRaw - from ..evoked import Evoked from ..epochs import BaseEpochs + from ..evoked import Evoked + from ..io import BaseRaw exclude = ica.exclude picks = _picks_to_idx(ica.n_components_, picks, picks_on="components") @@ -694,8 +694,8 @@ def _prepare_data_ica_properties(inst, ica, reject_by_annotation=True, reject="a data : array of shape (n_epochs, n_ica_sources, n_times) A view on epochs ICA sources data. """ - from ..io import BaseRaw, RawArray from ..epochs import BaseEpochs + from ..io import BaseRaw, RawArray _validate_type(inst, (BaseRaw, BaseEpochs), "inst", "Raw or Epochs") if isinstance(inst, BaseRaw): @@ -1069,8 +1069,8 @@ def plot_ica_overlay( The figure. """ # avoid circular imports - from ..io import BaseRaw from ..evoked import Evoked + from ..io import BaseRaw from ..preprocessing.ica import _check_start_stop if ica.current_fit == "unfitted": @@ -1268,9 +1268,9 @@ def _plot_sources( overview_mode=None, ): """Plot the ICA components as a RawArray or EpochsArray.""" + from ..epochs import BaseEpochs, EpochsArray + from ..io import BaseRaw, RawArray from ._figure import _get_browser - from ..epochs import EpochsArray, BaseEpochs - from ..io import RawArray, BaseRaw # handle defaults / check arg validity is_raw = isinstance(inst, BaseRaw) diff --git a/mne/viz/misc.py b/mne/viz/misc.py index c903244f9ff..3b20c9cb572 100644 --- a/mne/viz/misc.py +++ b/mne/viz/misc.py @@ -20,41 +20,41 @@ from pathlib import Path import numpy as np -from scipy.signal import freqz, group_delay, lfilter, filtfilt, sosfilt, sosfiltfilt +from scipy.signal import filtfilt, freqz, group_delay, lfilter, sosfilt, sosfiltfilt -from .._freesurfer import _check_mri, _reorient_image, _read_mri_info, _mri_orientation -from ..defaults import DEFAULTS -from ..fixes import _safe_svd -from ..rank import compute_rank -from ..surface import read_surface from .._fiff.constants import FIFF -from .._fiff.proj import make_projector from .._fiff.pick import ( _DATA_CH_TYPES_SPLIT, - pick_types, - pick_info, - pick_channels, _picks_by_type, + pick_channels, + pick_info, + pick_types, ) -from ..transforms import apply_trans, _frame_to_str +from .._fiff.proj import make_projector +from .._freesurfer import _check_mri, _mri_orientation, _read_mri_info, _reorient_image +from ..defaults import DEFAULTS +from ..filter import estimate_ringing_samples +from ..fixes import _safe_svd +from ..rank import compute_rank +from ..surface import read_surface +from ..transforms import _frame_to_str, apply_trans from ..utils import ( - logger, - verbose, - warn, _check_option, - get_subjects_dir, _mask_to_onsets_offsets, - _pl, _on_missing, + _pl, fill_doc, + get_subjects_dir, + logger, + verbose, + warn, ) -from ..filter import estimate_ringing_samples from .utils import ( + _figure_agg, _get_color_list, _prepare_trellis, - plt_show, - _figure_agg, _validate_type, + plt_show, ) @@ -145,6 +145,7 @@ def plot_cov( """ import matplotlib.pyplot as plt from matplotlib.colors import Normalize + from ..cov import Covariance info, C, ch_names, idx_names = _index_info_cov(info, cov, exclude) @@ -390,6 +391,7 @@ def _plot_mri_contours( """ import matplotlib.pyplot as plt from matplotlib import patheffects + from ..source_space._source_space import _ensure_src # For ease of plotting, we will do everything in voxel coordinates. @@ -678,7 +680,7 @@ def plot_bem( on top of the midpoint MRI slice with the BEM boundary drawn for that slice. """ - from ..source_space import read_source_spaces, SourceSpaces + from ..source_space import SourceSpaces, read_source_spaces subjects_dir = get_subjects_dir(subjects_dir, raise_error=True) mri_fname = _check_mri(mri, subject, subjects_dir) diff --git a/mne/viz/montage.py b/mne/viz/montage.py index 19cd8c12a1b..afce1ce8dcb 100644 --- a/mne/viz/montage.py +++ b/mne/viz/montage.py @@ -4,10 +4,10 @@ import numpy as np from scipy.spatial.distance import cdist -from .utils import plot_sensors from .._fiff._digitization import _get_fid_coords from .._fiff.meas_info import create_info -from ..utils import logger, _check_option, _validate_type, verbose +from ..utils import _check_option, _validate_type, logger, verbose +from .utils import plot_sensors @verbose diff --git a/mne/viz/raw.py b/mne/viz/raw.py index b06eaa361f2..ec5c95f57ab 100644 --- a/mne/viz/raw.py +++ b/mne/viz/raw.py @@ -10,19 +10,19 @@ import numpy as np +from .._fiff.pick import pick_channels, pick_types +from ..defaults import _handle_default from ..filter import create_filter -from .._fiff.pick import pick_types, pick_channels -from ..utils import legacy, verbose, _validate_type, _check_option, _get_stim_channel +from ..utils import _check_option, _get_stim_channel, _validate_type, legacy, verbose from ..utils.spectrum import _split_psd_kwargs -from ..defaults import _handle_default from .utils import ( + _check_cov, _compute_scalings, + _get_channel_plotting_order, _handle_decim, - _check_cov, - _shorten_path_from_middle, _handle_precompute, - _get_channel_plotting_order, _make_event_color_dict, + _shorten_path_from_middle, ) _RAW_CLIP_DEF = 1.5 @@ -230,9 +230,9 @@ def plot_raw( %(notes_2d_backend)s """ + from ..annotations import _annotations_starts_stops from ..io import BaseRaw from ._figure import _get_browser - from ..annotations import _annotations_starts_stops info = raw.info.copy() sfreq = info["sfreq"] @@ -559,10 +559,10 @@ def plot_raw_psd_topo( def _setup_channel_selections(raw, kind, order): """Get dictionary of channel groupings.""" from ..channels import ( - read_vectorview_selection, - _SELECTIONS, _EEG_SELECTIONS, + _SELECTIONS, _divide_to_regions, + read_vectorview_selection, ) _check_option("group_by", kind, ("position", "selection")) diff --git a/mne/viz/tests/test_3d.py b/mne/viz/tests/test_3d.py index f7993111543..8b02b8e228f 100644 --- a/mne/viz/tests/test_3d.py +++ b/mne/viz/tests/test_3d.py @@ -9,54 +9,53 @@ from pathlib import Path +import matplotlib.pyplot as plt import numpy as np -from numpy.testing import assert_array_equal, assert_allclose import pytest -import matplotlib.pyplot as plt from matplotlib.colors import Colormap from matplotlib.figure import Figure +from numpy.testing import assert_allclose, assert_array_equal from mne import ( - make_field_map, - read_evokeds, - read_trans, - read_dipole, + MixedSourceEstimate, SourceEstimate, + convert_forward_solution, + make_field_map, make_sphere_model, - use_coil_def, + pick_info, pick_types, - setup_volume_source_space, + read_dipole, + read_evokeds, read_forward_solution, - convert_forward_solution, - MixedSourceEstimate, - pick_info, + read_trans, + setup_volume_source_space, + use_coil_def, ) -from mne.source_estimate import _BaseVolSourceEstimate -from mne.io import read_raw_ctf, read_raw_bti, read_raw_kit, read_info, read_raw_nirx from mne._fiff._digitization import write_dig from mne._fiff.constants import FIFF +from mne.bem import read_bem_solution, read_bem_surfaces +from mne.datasets import testing +from mne.io import read_info, read_raw_bti, read_raw_ctf, read_raw_kit, read_raw_nirx from mne.minimum_norm import apply_inverse +from mne.source_estimate import _BaseVolSourceEstimate +from mne.source_space import read_source_spaces +from mne.transforms import Transform +from mne.utils import _record_warnings, catch_logging from mne.viz import ( - plot_sparse_source_estimates, - plot_source_estimates, - snapshot_brain_montage, - plot_head_positions, - plot_alignment, + Brain, + EvokedField, Figure3D, - plot_brain_colorbar, link_brains, mne_analyze_colormap, - Brain, - EvokedField, + plot_alignment, + plot_brain_colorbar, + plot_head_positions, + plot_source_estimates, + plot_sparse_source_estimates, + snapshot_brain_montage, ) -from mne.viz._3d import _process_clim, _linearize_map, _get_map_ticks +from mne.viz._3d import _get_map_ticks, _linearize_map, _process_clim from mne.viz.utils import _fake_click, _fake_keypress, _fake_scroll, _get_cmap -from mne.utils import catch_logging, _record_warnings -from mne.datasets import testing -from mne.source_space import read_source_spaces -from mne.transforms import Transform -from mne.bem import read_bem_solution, read_bem_surfaces - data_dir = testing.data_path(download=False) subjects_dir = data_dir / "subjects" @@ -208,9 +207,10 @@ def test_plot_evoked_field(renderer): def test_plot_evoked_field_notebook(renderer_notebook, nbexec): """Test plotting the evoked field inside a notebook.""" import pytest - from mne import read_evokeds, make_field_map + + from mne import make_field_map, read_evokeds from mne.datasets import testing - from mne.viz import set_3d_backend, Brain, EvokedField, Figure3D + from mne.viz import Brain, EvokedField, Figure3D, set_3d_backend set_3d_backend("notebook") diff --git a/mne/viz/tests/test_3d_mpl.py b/mne/viz/tests/test_3d_mpl.py index 2060de1ebbe..ae4f72d4dd3 100644 --- a/mne/viz/tests/test_3d_mpl.py +++ b/mne/viz/tests/test_3d_mpl.py @@ -13,6 +13,9 @@ import pytest from mne import ( + SourceEstimate, + VolSourceEstimate, + VolVectorSourceEstimate, compute_covariance, compute_source_morph, make_fixed_length_epochs, @@ -21,14 +24,11 @@ read_forward_solution, read_trans, setup_volume_source_space, - SourceEstimate, - VolSourceEstimate, - VolVectorSourceEstimate, ) from mne.datasets import testing from mne.io import read_raw_fif from mne.minimum_norm import apply_inverse, make_inverse_operator -from mne.utils import catch_logging, _record_warnings +from mne.utils import _record_warnings, catch_logging from mne.viz import plot_volume_source_estimates from mne.viz.utils import _fake_click, _fake_keypress diff --git a/mne/viz/tests/test_circle.py b/mne/viz/tests/test_circle.py index 7abd14568ec..f95aca2c8a5 100644 --- a/mne/viz/tests/test_circle.py +++ b/mne/viz/tests/test_circle.py @@ -5,8 +5,8 @@ # License: Simplified BSD -import pytest import matplotlib +import pytest from mne.viz import plot_channel_labels_circle diff --git a/mne/viz/tests/test_epochs.py b/mne/viz/tests/test_epochs.py index bfe5d07eebf..77f45ed1598 100644 --- a/mne/viz/tests/test_epochs.py +++ b/mne/viz/tests/test_epochs.py @@ -13,7 +13,7 @@ import numpy as np import pytest -from mne import Epochs, create_info, EpochsArray +from mne import Epochs, EpochsArray, create_info from mne.datasets import testing from mne.event import make_fixed_length_events from mne.viz import plot_drop_log diff --git a/mne/viz/tests/test_evoked.py b/mne/viz/tests/test_evoked.py index 644b2fb4e3e..c089b064d4a 100644 --- a/mne/viz/tests/test_evoked.py +++ b/mne/viz/tests/test_evoked.py @@ -11,30 +11,30 @@ from pathlib import Path +import matplotlib.pyplot as plt import numpy as np -from numpy.testing import assert_allclose import pytest -import matplotlib.pyplot as plt from matplotlib import gridspec from matplotlib.collections import PolyCollection from mpl_toolkits.axes_grid1.parasite_axes import HostAxes # spatial_colors +from numpy.testing import assert_allclose import mne from mne import ( - read_events, Epochs, - read_cov, compute_covariance, - make_fixed_length_events, compute_proj_evoked, + make_fixed_length_events, + read_cov, + read_events, ) +from mne._fiff.constants import FIFF +from mne.datasets import testing from mne.io import read_raw_fif +from mne.stats.parametric import _parametric_ci from mne.utils import catch_logging from mne.viz import plot_compare_evokeds, plot_evoked_white from mne.viz.utils import _fake_click, _get_cmap -from mne.datasets import testing -from mne._fiff.constants import FIFF -from mne.stats.parametric import _parametric_ci base_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" evoked_fname = base_dir / "test-ave.fif" diff --git a/mne/viz/tests/test_figure.py b/mne/viz/tests/test_figure.py index 927d8c2f19c..19d4e163dd1 100644 --- a/mne/viz/tests/test_figure.py +++ b/mne/viz/tests/test_figure.py @@ -3,6 +3,7 @@ # License: Simplified BSD import pytest + from mne.viz._figure import _get_browser diff --git a/mne/viz/tests/test_ica.py b/mne/viz/tests/test_ica.py index 729a949e8e9..d01542f3da5 100644 --- a/mne/viz/tests/test_ica.py +++ b/mne/viz/tests/test_ica.py @@ -9,19 +9,19 @@ import matplotlib.pyplot as plt import numpy as np import pytest -from numpy.testing import assert_equal, assert_array_equal, assert_allclose +from numpy.testing import assert_allclose, assert_array_equal, assert_equal from mne import ( - read_events, - Epochs, - read_cov, - pick_types, Annotations, + Epochs, make_fixed_length_events, + pick_types, + read_cov, + read_events, ) from mne.io import read_raw_fif from mne.preprocessing import ICA, create_ecg_epochs, create_eog_epochs -from mne.utils import catch_logging, _record_warnings +from mne.utils import _record_warnings, catch_logging from mne.viz.ica import _create_properties_layout, plot_ica_properties from mne.viz.utils import _fake_click, _fake_keypress diff --git a/mne/viz/tests/test_misc.py b/mne/viz/tests/test_misc.py index cedceab21e1..fcc6d9e1566 100644 --- a/mne/viz/tests/test_misc.py +++ b/mne/viz/tests/test_misc.py @@ -9,37 +9,37 @@ from pathlib import Path +import matplotlib.pyplot as plt import numpy as np -from numpy.testing import assert_array_equal import pytest -import matplotlib.pyplot as plt +from numpy.testing import assert_array_equal from mne import ( - read_events, - read_cov, - read_source_spaces, - read_evokeds, - read_dipole, SourceEstimate, pick_events, + read_cov, + read_dipole, + read_events, + read_evokeds, + read_source_spaces, ) from mne.chpi import compute_chpi_snr from mne.datasets import testing from mne.filter import create_filter from mne.io import read_raw_fif from mne.minimum_norm import read_inverse_operator +from mne.time_frequency import CrossSpectralDensity from mne.viz import ( plot_bem, + plot_chpi_snr, + plot_csd, plot_events, - plot_source_spectrogram, - plot_snr_estimate, plot_filter, - plot_csd, - plot_chpi_snr, + plot_snr_estimate, + plot_source_spectrogram, ) from mne.viz.misc import _handle_event_colors from mne.viz.utils import _get_color_list -from mne.time_frequency import CrossSpectralDensity data_path = testing.data_path(download=False) subjects_dir = data_path / "subjects" diff --git a/mne/viz/tests/test_montage.py b/mne/viz/tests/test_montage.py index 7d77bd3d87f..bed0d212a6b 100644 --- a/mne/viz/tests/test_montage.py +++ b/mne/viz/tests/test_montage.py @@ -8,12 +8,11 @@ from pathlib import Path +import matplotlib.pyplot as plt import numpy as np - import pytest -import matplotlib.pyplot as plt -from mne.channels import read_dig_fif, make_dig_montage, make_standard_montage +from mne.channels import make_dig_montage, make_standard_montage, read_dig_fif p_dir = Path(__file__).parent.parent.parent / "io" / "kit" / "tests" / "data" elp = p_dir / "test_elp.txt" diff --git a/mne/viz/tests/test_proj.py b/mne/viz/tests/test_proj.py index 278128666d9..05f9207a75f 100644 --- a/mne/viz/tests/test_proj.py +++ b/mne/viz/tests/test_proj.py @@ -5,7 +5,7 @@ import numpy as np import pytest -from mne import read_evokeds, pick_types, compute_proj_evoked +from mne import compute_proj_evoked, pick_types, read_evokeds from mne.datasets import testing from mne.viz import plot_projs_joint diff --git a/mne/viz/tests/test_raw.py b/mne/viz/tests/test_raw.py index c413496ba27..a4c73e76075 100644 --- a/mne/viz/tests/test_raw.py +++ b/mne/viz/tests/test_raw.py @@ -7,23 +7,23 @@ from copy import deepcopy import matplotlib.pyplot as plt -from matplotlib import backend_bases import numpy as np import pytest +from matplotlib import backend_bases from numpy.testing import assert_allclose from mne import Annotations, create_info, pick_types +from mne._fiff.pick import _DATA_CH_TYPES_ORDER_DEFAULT, _PICK_TYPES_DATA_DICT from mne.annotations import _sync_onset from mne.datasets import testing from mne.io import RawArray -from mne._fiff.pick import _DATA_CH_TYPES_ORDER_DEFAULT, _PICK_TYPES_DATA_DICT from mne.utils import ( + _assert_no_instances, _dt_to_stamp, _record_warnings, + check_version, get_config, set_config, - _assert_no_instances, - check_version, ) from mne.viz import plot_raw, plot_sensors from mne.viz.utils import _fake_click, _fake_keypress diff --git a/mne/viz/tests/test_scraper.py b/mne/viz/tests/test_scraper.py index 4c7be550ac9..7a2c8e734b1 100644 --- a/mne/viz/tests/test_scraper.py +++ b/mne/viz/tests/test_scraper.py @@ -3,7 +3,9 @@ # License: Simplified BSD import os.path as op + import pytest + import mne diff --git a/mne/viz/tests/test_topo.py b/mne/viz/tests/test_topo.py index 4642d5375a8..da4fe116330 100644 --- a/mne/viz/tests/test_topo.py +++ b/mne/viz/tests/test_topo.py @@ -9,28 +9,26 @@ from collections import namedtuple from pathlib import Path -import numpy as np -import pytest import matplotlib import matplotlib.pyplot as plt +import numpy as np +import pytest -from mne import read_events, Epochs, read_cov, compute_proj_evoked +from mne import Epochs, compute_proj_evoked, read_cov, read_events from mne.channels import read_layout from mne.io import read_raw_fif from mne.time_frequency.tfr import AverageTFR from mne.utils import _record_warnings - from mne.viz import ( - plot_topo_image_epochs, _get_presser, mne_analyze_colormap, plot_evoked_topo, + plot_topo_image_epochs, ) from mne.viz.evoked import _line_plot_onselect +from mne.viz.topo import _imshow_tfr, _plot_update_evoked_topo_proj, iter_topography from mne.viz.utils import _fake_click -from mne.viz.topo import _plot_update_evoked_topo_proj, iter_topography, _imshow_tfr - base_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" evoked_fname = base_dir / "test-ave.fif" raw_fname = base_dir / "test_raw.fif" diff --git a/mne/viz/tests/test_topomap.py b/mne/viz/tests/test_topomap.py index e20b1987dd1..972b07ce83c 100644 --- a/mne/viz/tests/test_topomap.py +++ b/mne/viz/tests/test_topomap.py @@ -9,55 +9,53 @@ from functools import partial from pathlib import Path -import numpy as np -from numpy.testing import assert_array_equal, assert_equal, assert_almost_equal -import pytest import matplotlib import matplotlib.pyplot as plt +import numpy as np +import pytest from matplotlib.patches import Circle +from numpy.testing import assert_almost_equal, assert_array_equal, assert_equal from mne import ( - read_evokeds, - read_proj, - make_fixed_length_events, Epochs, + EvokedArray, + Projection, compute_proj_evoked, + compute_proj_raw, + create_info, find_layout, + make_fixed_length_events, pick_types, - create_info, read_cov, - EvokedArray, - compute_proj_raw, - Projection, + read_evokeds, + read_proj, ) -from mne._fiff.proj import make_eeg_average_ref_proj -from mne.io import read_raw_fif, read_info, RawArray -from mne._fiff.constants import FIFF -from mne._fiff.pick import pick_info, channel_indices_by_type, _picks_to_idx from mne._fiff.compensator import get_current_comp +from mne._fiff.constants import FIFF +from mne._fiff.pick import _picks_to_idx, channel_indices_by_type, pick_info +from mne._fiff.proj import make_eeg_average_ref_proj from mne.channels import ( - read_layout, + find_ch_adjacency, make_dig_montage, make_standard_montage, - find_ch_adjacency, + read_layout, ) from mne.datasets import testing +from mne.io import RawArray, read_info, read_raw_fif from mne.preprocessing import compute_bridged_electrodes from mne.time_frequency.tfr import AverageTFR - from mne.viz import plot_evoked_topomap, plot_projs_topomap, topomap +from mne.viz.tests.test_raw import _proj_status from mne.viz.topomap import ( _get_pos_outlines, _onselect, - plot_topomap, plot_arrowmap, - plot_psds_topomap, plot_bridged_electrodes, plot_ch_adjacency, + plot_psds_topomap, + plot_topomap, ) -from mne.viz.utils import _find_peaks, _fake_click, _fake_keypress, _fake_scroll - -from mne.viz.tests.test_raw import _proj_status +from mne.viz.utils import _fake_click, _fake_keypress, _fake_scroll, _find_peaks data_dir = testing.data_path(download=False) subjects_dir = data_dir / "subjects" @@ -770,8 +768,7 @@ def test_plot_cov_topomap(): def test_plot_topomap_cnorm(): """Test colormap normalization.""" - from matplotlib.colors import TwoSlopeNorm - from matplotlib.colors import PowerNorm + from matplotlib.colors import PowerNorm, TwoSlopeNorm rng = np.random.default_rng(42) v = rng.uniform(low=-1, high=2.5, size=64) diff --git a/mne/viz/tests/test_utils.py b/mne/viz/tests/test_utils.py index c7f339c9997..5450e4d5789 100644 --- a/mne/viz/tests/test_utils.py +++ b/mne/viz/tests/test_utils.py @@ -4,30 +4,30 @@ from pathlib import Path +import matplotlib.pyplot as plt import numpy as np -from numpy.testing import assert_allclose import pytest -import matplotlib.pyplot as plt +from numpy.testing import assert_allclose +from mne import read_evokeds +from mne.epochs import Epochs +from mne.event import read_events +from mne.io import read_raw_fif +from mne.viz import ClickableImage, add_background_image, mne_analyze_colormap +from mne.viz.ui_events import ColormapRange, link, subscribe from mne.viz.utils import ( - compare_fiff, + _compute_scalings, _fake_click, _fake_keypress, _fake_scroll, - _compute_scalings, - _validate_if_list_of_axes, _get_color_list, + _make_event_color_dict, _setup_vmin_vmax, + _validate_if_list_of_axes, centers_to_edges, - _make_event_color_dict, + compare_fiff, concatenate_images, ) -from mne.viz.ui_events import link, subscribe, ColormapRange -from mne.viz import ClickableImage, add_background_image, mne_analyze_colormap -from mne.io import read_raw_fif -from mne.event import read_events -from mne.epochs import Epochs -from mne import read_evokeds base_dir = Path(__file__).parent.parent.parent / "io" / "tests" / "data" raw_fname = base_dir / "test_raw.fif" diff --git a/mne/viz/topo.py b/mne/viz/topo.py index 5a832c954a3..8e363d117e9 100644 --- a/mne/viz/topo.py +++ b/mne/viz/topo.py @@ -14,18 +14,18 @@ from scipy import ndimage from .._fiff.pick import channel_type, pick_types -from ..utils import _clean_names, _check_option, Bunch, fill_doc, _to_rgb from ..defaults import _handle_default +from ..utils import Bunch, _check_option, _clean_names, _to_rgb, fill_doc from .utils import ( + DraggableColorbar, + _check_cov, _check_delayed_ssp, _draw_proj_checkbox, + _plot_masked_image, + _setup_ax_spines, + _setup_vmin_vmax, add_background_image, plt_show, - _setup_vmin_vmax, - DraggableColorbar, - _setup_ax_spines, - _check_cov, - _plot_masked_image, ) @@ -141,7 +141,9 @@ def _iter_topography( If True, a single axis will be constructed. The former is useful for custom plotting, the latter for speed. """ - from matplotlib import pyplot as plt, collections + from matplotlib import collections + from matplotlib import pyplot as plt + from ..channels.layout import find_layout if fig is None: @@ -929,8 +931,9 @@ def _plot_evoked_topo( Images of evoked responses at sensor locations """ import matplotlib.pyplot as plt - from ..cov import whiten_evoked + from ..channels.layout import _merge_ch_data, _pair_grad_sensors, find_layout + from ..cov import whiten_evoked if type(evoked) not in (tuple, list): evoked = [evoked] diff --git a/mne/viz/topomap.py b/mne/viz/topomap.py index a90400c6421..a778c72dc1e 100644 --- a/mne/viz/topomap.py +++ b/mne/viz/topomap.py @@ -12,71 +12,74 @@ import copy import itertools +import warnings from functools import partial from numbers import Integral -import warnings import numpy as np from scipy.interpolate import ( CloughTocher2DInterpolator, - NearestNDInterpolator, LinearNDInterpolator, + NearestNDInterpolator, ) from scipy.sparse import csr_matrix from scipy.spatial import Delaunay, Voronoi from scipy.spatial.distance import pdist, squareform -from .ui_events import publish, subscribe, TimeChange -from ..baseline import rescale -from ..defaults import _INTERPOLATION_DEFAULT, _EXTRAPOLATE_DEFAULT, _BORDER_DEFAULT +from .._fiff.meas_info import Info, _simplify_info from .._fiff.pick import ( - pick_types, - _picks_by_type, - pick_info, - pick_channels, + _MEG_CH_TYPES_SPLIT, _pick_data_channels, + _picks_by_type, _picks_to_idx, - _MEG_CH_TYPES_SPLIT, + pick_channels, + pick_info, + pick_types, +) +from ..baseline import rescale +from ..defaults import ( + _BORDER_DEFAULT, + _EXTRAPOLATE_DEFAULT, + _INTERPOLATION_DEFAULT, + _handle_default, ) +from ..transforms import apply_trans, invert_transform from ..utils import ( + _check_option, + _check_sphere, _clean_names, + _is_numeric, _time_mask, - verbose, - logger, - fill_doc, _validate_type, - _check_sphere, - _check_option, - _is_numeric, - warn, - legacy, check_version, + fill_doc, + legacy, + logger, + verbose, + warn, ) from ..utils.spectrum import _split_psd_kwargs +from .ui_events import TimeChange, publish, subscribe from .utils import ( - _setup_vmin_vmax, - _prepare_trellis, - _check_delayed_ssp, - _draw_proj_checkbox, - figure_nobar, - plt_show, - _process_times, DraggableColorbar, - _get_cmap, - _validate_if_list_of_axes, - _setup_cmap, + _check_delayed_ssp, _check_time_unit, - _set_3d_axes_equal, _check_type_projs, + _draw_proj_checkbox, _format_units_psd, - _prepare_sensor_names, + _get_cmap, _get_plot_ch_type, + _prepare_sensor_names, + _prepare_trellis, + _process_times, + _set_3d_axes_equal, + _setup_cmap, + _setup_vmin_vmax, + _validate_if_list_of_axes, + figure_nobar, plot_sensors, + plt_show, ) -from ..defaults import _handle_default -from ..transforms import apply_trans, invert_transform -from .._fiff.meas_info import Info, _simplify_info - _fnirs_types = ("hbo", "hbr", "fnirs_cw_amplitude", "fnirs_od") @@ -112,7 +115,7 @@ def _adjust_meg_sphere(sphere, info, ch_type): def _prepare_topomap_plot(inst, ch_type, sphere=None): """Prepare topo plot.""" - from ..channels.layout import find_layout, _pair_grad_sensors, _find_topomap_coords + from ..channels.layout import _find_topomap_coords, _pair_grad_sensors, find_layout info = copy.deepcopy(inst if isinstance(inst, Info) else inst.info) sphere, clip_origin = _adjust_meg_sphere(sphere, info, ch_type) @@ -471,6 +474,7 @@ def _plot_projs_topomap( axes=None, ): import matplotlib.pyplot as plt + from ..channels.layout import _merge_ch_data sphere = _check_sphere(sphere, info) @@ -1193,6 +1197,7 @@ def _plot_topomap( ): from matplotlib.colors import Normalize from matplotlib.widgets import RectangleSelector + from ..channels.layout import ( _find_topomap_coords, _merge_ch_data, @@ -1405,6 +1410,7 @@ def _plot_ica_topomap( ): """Plot single ica map to axes.""" from matplotlib.axes import Axes + from ..channels.layout import _merge_ch_data if ica.info is None: @@ -1596,9 +1602,10 @@ def plot_ica_components( supplied). """ # noqa E501 from matplotlib.pyplot import Axes - from ..io import BaseRaw - from ..epochs import BaseEpochs + from ..channels.layout import _merge_ch_data + from ..epochs import BaseEpochs + from ..io import BaseRaw if ica.info is None: raise RuntimeError( @@ -1879,6 +1886,7 @@ def plot_tfr_topomap( The figure containing the topography. """ # noqa: E501 import matplotlib.pyplot as plt + from ..channels.layout import _merge_ch_data ch_type = _get_plot_ch_type(tfr, ch_type) @@ -2120,8 +2128,9 @@ def plot_evoked_topomap( import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec from matplotlib.widgets import Slider - from ..evoked import Evoked + from ..channels.layout import _merge_ch_data + from ..evoked import Evoked _validate_type(evoked, Evoked, "evoked") _validate_type(colorbar, bool, "colorbar") @@ -2943,6 +2952,7 @@ def _onselect( """Handle drawing average tfr over channels called from topomap.""" import matplotlib.pyplot as plt from matplotlib.collections import PathCollection + from ..channels.layout import _pair_grad_sensors ax = eclick.inaxes @@ -3243,7 +3253,8 @@ def _topomap_animation( See mne.evoked.Evoked.animate_topomap. """ - from matplotlib import pyplot as plt, animation + from matplotlib import animation + from matplotlib import pyplot as plt if ch_type is None: ch_type = _picks_by_type(evoked.info)[0][0] @@ -3577,6 +3588,7 @@ def plot_arrowmap( .. footbibliography:: """ from matplotlib import pyplot as plt + from ..forward import _map_meg_or_eeg_channels sphere = _check_sphere(sphere, info_from) @@ -3691,6 +3703,7 @@ def plot_bridged_electrodes( mne.preprocessing.compute_bridged_electrodes """ import matplotlib.pyplot as plt + from ..channels.layout import _find_topomap_coords if topomap_args is None: @@ -4029,6 +4042,7 @@ def plot_regression_weights( """ import matplotlib import matplotlib.pyplot as plt + from ..channels.layout import _merge_ch_data sphere = _check_sphere(sphere) diff --git a/mne/viz/ui_events.py b/mne/viz/ui_events.py index 78c1419ca2f..5648c90db9e 100644 --- a/mne/viz/ui_events.py +++ b/mne/viz/ui_events.py @@ -10,14 +10,14 @@ Authors: Marijn van Vliet """ import contextlib -from dataclasses import dataclass -from typing import Optional, List, Union -import weakref import re +import weakref +from dataclasses import dataclass +from typing import List, Optional, Union from matplotlib.colors import Colormap -from ..utils import warn, fill_doc, _validate_type, logger, verbose +from ..utils import _validate_type, fill_doc, logger, verbose, warn # Global dict {fig: channel} containing all currently active event channels. _event_channels = weakref.WeakKeyDictionary() @@ -225,6 +225,7 @@ def _get_event_channel(fig): channel. """ import matplotlib + from ._brain import Brain from .evoked_field import EvokedField @@ -460,8 +461,8 @@ def disable_ui_events(fig): def _cleanup_agg(): """Call close_event for Agg canvases to help our doc build.""" - import matplotlib.figure import matplotlib.backends.backend_agg + import matplotlib.figure for key in list(_event_channels): # we might remove keys as we go if isinstance(key, matplotlib.figure.Figure): diff --git a/mne/viz/utils.py b/mne/viz/utils.py index 08d4e69ec48..2855b9784c4 100644 --- a/mne/viz/utils.py +++ b/mne/viz/utils.py @@ -10,61 +10,60 @@ # Daniel McCloy # # License: Simplified BSD -from collections import defaultdict -from contextlib import contextmanager -from datetime import datetime -from inspect import signature import difflib -from functools import partial import math import os import sys import tempfile import traceback import webbrowser +from collections import defaultdict +from contextlib import contextmanager +from datetime import datetime +from functools import partial +from inspect import signature -from decorator import decorator import numpy as np +from decorator import decorator from scipy.signal import argrelmax -from ..defaults import _handle_default from .._fiff.constants import FIFF from .._fiff.meas_info import Info from .._fiff.open import show_fiff from .._fiff.pick import ( - channel_type, - channel_indices_by_type, - pick_channels, - _pick_data_channels, - _DATA_CH_TYPES_SPLIT, _DATA_CH_TYPES_ORDER_DEFAULT, + _DATA_CH_TYPES_SPLIT, _VALID_CHANNEL_TYPES, - pick_info, + _contains_ch_type, + _pick_data_channels, _picks_by_type, + channel_indices_by_type, + channel_type, + pick_channels, pick_channels_cov, - _contains_ch_type, + pick_info, ) -from .._fiff.proj import setup_proj, Projection +from .._fiff.proj import Projection, setup_proj +from ..defaults import _handle_default from ..rank import compute_rank +from ..transforms import apply_trans from ..utils import ( - verbose, - get_config, _check_ch_locs, + _check_decim, _check_option, - logger, - fill_doc, - _pl, _check_sphere, _ensure_int, - _validate_type, + _pl, _to_rgb, - warn, + _validate_type, check_version, - _check_decim, + fill_doc, + get_config, + logger, + verbose, + warn, ) -from .ui_events import publish, subscribe, ColormapRange -from ..transforms import apply_trans - +from .ui_events import ColormapRange, publish, subscribe _channel_type_prettyprint = { "eeg": "EEG channel", @@ -190,6 +189,7 @@ def _show_browser(show=True, block=True, fig=None, **kwargs): else: from qtpy.QtCore import Qt from qtpy.QtWidgets import QApplication + from .backends._utils import _qt_app_exec if fig is not None and os.getenv("_MNE_BROWSER_BACK", "").lower() == "true": @@ -436,6 +436,7 @@ def _prepare_trellis( sharey=False, ): from matplotlib.gridspec import GridSpec + from ._mpl_figure import _figure if n_cells == 1: @@ -635,7 +636,8 @@ def figure_nobar(*args, **kwargs): fig : instance of Figure The figure. """ - from matplotlib import rcParams, pyplot as plt + from matplotlib import pyplot as plt + from matplotlib import rcParams old_val = rcParams["toolbar"] try: @@ -1124,10 +1126,10 @@ def plot_sensors( ) # Avoid circular import from ..channels import ( - read_vectorview_selection, - _SELECTIONS, _EEG_SELECTIONS, + _SELECTIONS, _divide_to_regions, + read_vectorview_selection, ) if ch_groups == "position": @@ -1238,10 +1240,11 @@ def _plot_sensors( linewidth=2, ): """Plot sensors.""" - from matplotlib import rcParams import matplotlib.pyplot as plt + from matplotlib import rcParams from mpl_toolkits.mplot3d import Axes3D # noqa: F401 analysis:ignore - from .topomap import _get_pos_outlines, _draw_outlines + + from .topomap import _draw_outlines, _get_pos_outlines ch_names = [str(ch_name) for ch_name in ch_names] sphere = _check_sphere(sphere, info) @@ -1375,8 +1378,8 @@ def _compute_scalings(scalings, inst, remove_dc=False, duration=10): scalings : dict A scalings dictionary with updated values """ - from ..io import BaseRaw from ..epochs import BaseEpochs + from ..io import BaseRaw scalings = _handle_default("scalings_plot_raw", scalings) if not isinstance(inst, (BaseRaw, BaseEpochs)): @@ -2442,8 +2445,9 @@ def _plot_psd( ): # helper function for Spectrum.plot() from matplotlib.ticker import ScalarFormatter - from .evoked import _plot_lines + from ..stats import _ci + from .evoked import _plot_lines for key, ls in zip(["lowpass", "highpass", "line_freq"], ["--", "--", "-."]): if inst.info[key] is not None: diff --git a/pyproject.toml b/pyproject.toml index a9565e40d5a..0dc29069335 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -91,7 +91,7 @@ builtin = "clear,rare,informal,names,usage" skip = "doc/references.bib" [tool.ruff] -select = ["E", "F", "W", "D"] +select = ["E", "F", "W", "D", "I"] exclude = ["__init__.py", "constants.py", "resources.py"] ignore = [ "D100", # Missing docstring in public module diff --git a/tutorials/clinical/30_ecog.py b/tutorials/clinical/30_ecog.py index b97b44c1036..d3ee7c9268c 100644 --- a/tutorials/clinical/30_ecog.py +++ b/tutorials/clinical/30_ecog.py @@ -33,8 +33,8 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np from matplotlib import colormaps from mne_bids import BIDSPath, read_raw_bids diff --git a/tutorials/clinical/60_sleep.py b/tutorials/clinical/60_sleep.py index 55194922d22..a878b7747e7 100644 --- a/tutorials/clinical/60_sleep.py +++ b/tutorials/clinical/60_sleep.py @@ -33,19 +33,16 @@ # %% -import numpy as np import matplotlib.pyplot as plt - -import mne -from mne.datasets.sleep_physionet.age import fetch_data - +import numpy as np from sklearn.ensemble import RandomForestClassifier -from sklearn.metrics import accuracy_score -from sklearn.metrics import confusion_matrix -from sklearn.metrics import classification_report +from sklearn.metrics import accuracy_score, classification_report, confusion_matrix from sklearn.pipeline import make_pipeline from sklearn.preprocessing import FunctionTransformer +import mne +from mne.datasets.sleep_physionet.age import fetch_data + ############################################################################## # Load the data # ------------- diff --git a/tutorials/epochs/30_epochs_metadata.py b/tutorials/epochs/30_epochs_metadata.py index 8754a76e561..214178fc275 100644 --- a/tutorials/epochs/30_epochs_metadata.py +++ b/tutorials/epochs/30_epochs_metadata.py @@ -21,6 +21,7 @@ import numpy as np import pandas as pd + import mne kiloword_data_folder = mne.datasets.kiloword.data_path() diff --git a/tutorials/epochs/40_autogenerate_metadata.py b/tutorials/epochs/40_autogenerate_metadata.py index 01b9ed0d7ed..025277901d1 100644 --- a/tutorials/epochs/40_autogenerate_metadata.py +++ b/tutorials/epochs/40_autogenerate_metadata.py @@ -45,7 +45,9 @@ # %% from pathlib import Path + import matplotlib.pyplot as plt + import mne data_dir = Path(mne.datasets.erp_core.data_path()) diff --git a/tutorials/epochs/60_make_fixed_length_epochs.py b/tutorials/epochs/60_make_fixed_length_epochs.py index 9a6eace0ab9..a311842312a 100644 --- a/tutorials/epochs/60_make_fixed_length_epochs.py +++ b/tutorials/epochs/60_make_fixed_length_epochs.py @@ -30,11 +30,12 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from mne_connectivity import envelope_correlation + import mne from mne.preprocessing import compute_proj_ecg -from mne_connectivity import envelope_correlation sample_data_folder = mne.datasets.sample.data_path() sample_data_raw_file = sample_data_folder / "MEG" / "sample" / "sample_audvis_raw.fif" diff --git a/tutorials/evoked/30_eeg_erp.py b/tutorials/evoked/30_eeg_erp.py index 1915b99e183..c6fcae797af 100644 --- a/tutorials/evoked/30_eeg_erp.py +++ b/tutorials/evoked/30_eeg_erp.py @@ -19,9 +19,10 @@ # %% +import matplotlib.pyplot as plt import numpy as np import pandas as pd -import matplotlib.pyplot as plt + import mne root = mne.datasets.sample.data_path() / "MEG" / "sample" diff --git a/tutorials/forward/20_source_alignment.py b/tutorials/forward/20_source_alignment.py index 93b46375fb6..292e5346415 100644 --- a/tutorials/forward/20_source_alignment.py +++ b/tutorials/forward/20_source_alignment.py @@ -15,8 +15,8 @@ # %% -import numpy as np import nibabel as nib +import numpy as np from scipy import linalg import mne diff --git a/tutorials/forward/35_eeg_no_mri.py b/tutorials/forward/35_eeg_no_mri.py index 63ef7e016a9..504bc3b080b 100644 --- a/tutorials/forward/35_eeg_no_mri.py +++ b/tutorials/forward/35_eeg_no_mri.py @@ -24,11 +24,11 @@ # License: BSD-3-Clause import os.path as op + import numpy as np import mne -from mne.datasets import eegbci -from mne.datasets import fetch_fsaverage +from mne.datasets import eegbci, fetch_fsaverage # Download fsaverage files fs_dir = fetch_fsaverage(verbose=True) diff --git a/tutorials/forward/50_background_freesurfer_mne.py b/tutorials/forward/50_background_freesurfer_mne.py index 0150088de83..1afd6a5a278 100644 --- a/tutorials/forward/50_background_freesurfer_mne.py +++ b/tutorials/forward/50_background_freesurfer_mne.py @@ -18,14 +18,14 @@ # %% -import numpy as np -import nibabel -import matplotlib.pyplot as plt import matplotlib.patheffects as path_effects +import matplotlib.pyplot as plt +import nibabel +import numpy as np import mne -from mne.transforms import apply_trans from mne.io.constants import FIFF +from mne.transforms import apply_trans # %% # MRI coordinate frames diff --git a/tutorials/forward/80_fix_bem_in_blender.py b/tutorials/forward/80_fix_bem_in_blender.py index 570dd9a0419..74ea1c69349 100644 --- a/tutorials/forward/80_fix_bem_in_blender.py +++ b/tutorials/forward/80_fix_bem_in_blender.py @@ -28,6 +28,7 @@ import os import shutil + import mne data_path = mne.datasets.sample.data_path() diff --git a/tutorials/intro/10_overview.py b/tutorials/intro/10_overview.py index a0b5a65691e..e45e64085ba 100644 --- a/tutorials/intro/10_overview.py +++ b/tutorials/intro/10_overview.py @@ -17,6 +17,7 @@ # %% import numpy as np + import mne # %% diff --git a/tutorials/intro/20_events_from_raw.py b/tutorials/intro/20_events_from_raw.py index a9dea99f55a..e448368a209 100644 --- a/tutorials/intro/20_events_from_raw.py +++ b/tutorials/intro/20_events_from_raw.py @@ -29,6 +29,7 @@ # %% import numpy as np + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/intro/50_configure_mne.py b/tutorials/intro/50_configure_mne.py index 9c5d9d02f99..758726bed97 100644 --- a/tutorials/intro/50_configure_mne.py +++ b/tutorials/intro/50_configure_mne.py @@ -14,6 +14,7 @@ # %% import os + import mne # %% diff --git a/tutorials/intro/70_report.py b/tutorials/intro/70_report.py index 12f04772ce8..a7d3b02b2b3 100644 --- a/tutorials/intro/70_report.py +++ b/tutorials/intro/70_report.py @@ -23,11 +23,13 @@ # %% -from pathlib import Path import tempfile +from pathlib import Path + +import matplotlib.pyplot as plt import numpy as np import scipy.ndimage -import matplotlib.pyplot as plt + import mne data_path = Path(mne.datasets.sample.data_path(verbose=False)) diff --git a/tutorials/inverse/20_dipole_fit.py b/tutorials/inverse/20_dipole_fit.py index c81c16f3252..567c7d9b75e 100644 --- a/tutorials/inverse/20_dipole_fit.py +++ b/tutorials/inverse/20_dipole_fit.py @@ -13,17 +13,16 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from nilearn.datasets import load_mni152_template +from nilearn.plotting import plot_anat import mne -from mne.forward import make_forward_dipole from mne.evoked import combine_evoked +from mne.forward import make_forward_dipole from mne.simulation import simulate_evoked -from nilearn.plotting import plot_anat -from nilearn.datasets import load_mni152_template - data_path = mne.datasets.sample.data_path() subjects_dir = data_path / "subjects" fname_ave = data_path / "MEG" / "sample" / "sample_audvis-ave.fif" diff --git a/tutorials/inverse/30_mne_dspm_loreta.py b/tutorials/inverse/30_mne_dspm_loreta.py index 90d688eafc9..af3dc2a8e53 100644 --- a/tutorials/inverse/30_mne_dspm_loreta.py +++ b/tutorials/inverse/30_mne_dspm_loreta.py @@ -11,12 +11,12 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, make_inverse_operator # %% # Process MEG data diff --git a/tutorials/inverse/35_dipole_orientations.py b/tutorials/inverse/35_dipole_orientations.py index bc5c74ca44b..bffc5ad1fc0 100644 --- a/tutorials/inverse/35_dipole_orientations.py +++ b/tutorials/inverse/35_dipole_orientations.py @@ -20,10 +20,11 @@ # --------- # Load everything we need to perform source localization on the sample dataset. -import mne import numpy as np + +import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, make_inverse_operator data_path = sample.data_path() meg_path = data_path / "MEG" / "sample" diff --git a/tutorials/inverse/40_mne_fixed_free.py b/tutorials/inverse/40_mne_fixed_free.py index c862c5898e4..c91815b513d 100644 --- a/tutorials/inverse/40_mne_fixed_free.py +++ b/tutorials/inverse/40_mne_fixed_free.py @@ -17,7 +17,7 @@ import mne from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, make_inverse_operator print(__doc__) diff --git a/tutorials/inverse/50_beamformer_lcmv.py b/tutorials/inverse/50_beamformer_lcmv.py index 9ccc5371d74..9015949c250 100644 --- a/tutorials/inverse/50_beamformer_lcmv.py +++ b/tutorials/inverse/50_beamformer_lcmv.py @@ -16,9 +16,10 @@ # %% import matplotlib.pyplot as plt + import mne -from mne.datasets import sample, fetch_fsaverage -from mne.beamformer import make_lcmv, apply_lcmv +from mne.beamformer import apply_lcmv, make_lcmv +from mne.datasets import fetch_fsaverage, sample # %% # Introduction to beamformers diff --git a/tutorials/inverse/60_visualize_stc.py b/tutorials/inverse/60_visualize_stc.py index 3be86643c61..2d06089c846 100644 --- a/tutorials/inverse/60_visualize_stc.py +++ b/tutorials/inverse/60_visualize_stc.py @@ -14,13 +14,13 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne -from mne.datasets import sample, fetch_hcp_mmp_parcellation -from mne.minimum_norm import apply_inverse, read_inverse_operator from mne import read_evokeds +from mne.datasets import fetch_hcp_mmp_parcellation, sample +from mne.minimum_norm import apply_inverse, read_inverse_operator data_path = sample.data_path() meg_path = data_path / "MEG" / "sample" diff --git a/tutorials/inverse/70_eeg_mri_coords.py b/tutorials/inverse/70_eeg_mri_coords.py index 11f19b916f4..0586b3084c1 100644 --- a/tutorials/inverse/70_eeg_mri_coords.py +++ b/tutorials/inverse/70_eeg_mri_coords.py @@ -16,8 +16,8 @@ # %% import nibabel -from nilearn.plotting import plot_glass_brain import numpy as np +from nilearn.plotting import plot_glass_brain import mne from mne.channels import compute_native_head_t, read_custom_montage diff --git a/tutorials/inverse/80_brainstorm_phantom_elekta.py b/tutorials/inverse/80_brainstorm_phantom_elekta.py index 95a2a8e8f59..2da04a19c0d 100644 --- a/tutorials/inverse/80_brainstorm_phantom_elekta.py +++ b/tutorials/inverse/80_brainstorm_phantom_elekta.py @@ -18,8 +18,8 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne import find_events, fit_dipole diff --git a/tutorials/inverse/85_brainstorm_phantom_ctf.py b/tutorials/inverse/85_brainstorm_phantom_ctf.py index 6c44477365a..857ff7397fe 100644 --- a/tutorials/inverse/85_brainstorm_phantom_ctf.py +++ b/tutorials/inverse/85_brainstorm_phantom_ctf.py @@ -23,8 +23,8 @@ import warnings -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne from mne import fit_dipole diff --git a/tutorials/inverse/90_phantom_4DBTi.py b/tutorials/inverse/90_phantom_4DBTi.py index 7c7bdd6c8b0..12b4643049f 100644 --- a/tutorials/inverse/90_phantom_4DBTi.py +++ b/tutorials/inverse/90_phantom_4DBTi.py @@ -19,9 +19,11 @@ # %% import os.path as op + import numpy as np -from mne.datasets import phantom_4dbti + import mne +from mne.datasets import phantom_4dbti # %% # Read data and compute a dipole fit at the peak of the evoked response diff --git a/tutorials/io/30_reading_fnirs_data.py b/tutorials/io/30_reading_fnirs_data.py index 789450ceb79..e87b0efa81b 100644 --- a/tutorials/io/30_reading_fnirs_data.py +++ b/tutorials/io/30_reading_fnirs_data.py @@ -159,6 +159,7 @@ import numpy as np import pandas as pd + import mne # sphinx_gallery_thumbnail_number = 2 diff --git a/tutorials/io/60_ctf_bst_auditory.py b/tutorials/io/60_ctf_bst_auditory.py index 01a65ef3234..20ef8d32534 100644 --- a/tutorials/io/60_ctf_bst_auditory.py +++ b/tutorials/io/60_ctf_bst_auditory.py @@ -29,14 +29,14 @@ # %% -import pandas as pd import numpy as np +import pandas as pd import mne from mne import combine_evoked -from mne.minimum_norm import apply_inverse from mne.datasets.brainstorm import bst_auditory from mne.io import read_raw_ctf +from mne.minimum_norm import apply_inverse # %% # To reduce memory consumption and running time, some of the steps are diff --git a/tutorials/io/70_reading_eyetracking_data.py b/tutorials/io/70_reading_eyetracking_data.py index a9b1b1ffa76..c800b918323 100644 --- a/tutorials/io/70_reading_eyetracking_data.py +++ b/tutorials/io/70_reading_eyetracking_data.py @@ -78,8 +78,8 @@ """ # %% -from mne.io import read_raw_eyelink from mne.datasets import misc +from mne.io import read_raw_eyelink # %% fpath = misc.data_path() / "eyetracking" / "eyelink" diff --git a/tutorials/machine-learning/30_strf.py b/tutorials/machine-learning/30_strf.py index 9cc53a7a2da..a1c184d4afb 100644 --- a/tutorials/machine-learning/30_strf.py +++ b/tutorials/machine-learning/30_strf.py @@ -21,16 +21,15 @@ # sphinx_gallery_thumbnail_number = 7 -import numpy as np import matplotlib.pyplot as plt +import numpy as np +from scipy.io import loadmat +from scipy.stats import multivariate_normal +from sklearn.preprocessing import scale import mne from mne.decoding import ReceptiveField, TimeDelayingRidge -from scipy.stats import multivariate_normal -from scipy.io import loadmat -from sklearn.preprocessing import scale - rng = np.random.RandomState(1337) # To make this example reproducible # %% diff --git a/tutorials/machine-learning/50_decoding.py b/tutorials/machine-learning/50_decoding.py index bd3b55e15e3..fe2addc87f3 100644 --- a/tutorials/machine-learning/50_decoding.py +++ b/tutorials/machine-learning/50_decoding.py @@ -25,24 +25,23 @@ # %% # sphinx_gallery_thumbnail_number = 6 -import numpy as np import matplotlib.pyplot as plt - +import numpy as np +from sklearn.linear_model import LogisticRegression from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler -from sklearn.linear_model import LogisticRegression import mne from mne.datasets import sample from mne.decoding import ( - SlidingEstimator, + CSP, GeneralizingEstimator, + LinearModel, Scaler, + SlidingEstimator, + Vectorizer, cross_val_multiscore, - LinearModel, get_coef, - Vectorizer, - CSP, ) data_path = sample.data_path() diff --git a/tutorials/preprocessing/10_preprocessing_overview.py b/tutorials/preprocessing/10_preprocessing_overview.py index 8baf4c6c33e..ce2c77e3d84 100644 --- a/tutorials/preprocessing/10_preprocessing_overview.py +++ b/tutorials/preprocessing/10_preprocessing_overview.py @@ -15,7 +15,9 @@ # %% import os + import numpy as np + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/preprocessing/15_handling_bad_channels.py b/tutorials/preprocessing/15_handling_bad_channels.py index 151c15bf0f7..7385506bf34 100644 --- a/tutorials/preprocessing/15_handling_bad_channels.py +++ b/tutorials/preprocessing/15_handling_bad_channels.py @@ -16,7 +16,9 @@ import os from copy import deepcopy + import numpy as np + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/preprocessing/20_rejecting_bad_data.py b/tutorials/preprocessing/20_rejecting_bad_data.py index 6f9b86a6040..99228eb37d7 100644 --- a/tutorials/preprocessing/20_rejecting_bad_data.py +++ b/tutorials/preprocessing/20_rejecting_bad_data.py @@ -20,6 +20,7 @@ # %% import os + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/preprocessing/25_background_filtering.py b/tutorials/preprocessing/25_background_filtering.py index 09e5db8173e..0f60e8f1eb3 100644 --- a/tutorials/preprocessing/25_background_filtering.py +++ b/tutorials/preprocessing/25_background_filtering.py @@ -140,16 +140,15 @@ # First let's import some useful tools for filtering, and set some default # values for our data that are reasonable for M/EEG. +import matplotlib.pyplot as plt import numpy as np from numpy.fft import fft, fftfreq from scipy import signal -import matplotlib.pyplot as plt +import mne from mne.time_frequency.tfr import morlet from mne.viz import plot_filter, plot_ideal_filter -import mne - sfreq = 1000.0 f_p = 40.0 # limits for plotting diff --git a/tutorials/preprocessing/30_filtering_resampling.py b/tutorials/preprocessing/30_filtering_resampling.py index 53b1f550fcc..13d5f199c6f 100644 --- a/tutorials/preprocessing/30_filtering_resampling.py +++ b/tutorials/preprocessing/30_filtering_resampling.py @@ -16,8 +16,10 @@ # %% import os -import numpy as np + import matplotlib.pyplot as plt +import numpy as np + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/preprocessing/35_artifact_correction_regression.py b/tutorials/preprocessing/35_artifact_correction_regression.py index 0e1be9da5ef..e328648a33c 100644 --- a/tutorials/preprocessing/35_artifact_correction_regression.py +++ b/tutorials/preprocessing/35_artifact_correction_regression.py @@ -40,6 +40,7 @@ # %% import numpy as np + import mne from mne.preprocessing import EOGRegression diff --git a/tutorials/preprocessing/40_artifact_correction_ica.py b/tutorials/preprocessing/40_artifact_correction_ica.py index 0c5a6d8a8be..72e61a69454 100644 --- a/tutorials/preprocessing/40_artifact_correction_ica.py +++ b/tutorials/preprocessing/40_artifact_correction_ica.py @@ -21,6 +21,7 @@ # %% import os + import mne from mne.preprocessing import ICA, corrmap, create_ecg_epochs, create_eog_epochs diff --git a/tutorials/preprocessing/45_projectors_background.py b/tutorials/preprocessing/45_projectors_background.py index a970def83a1..5c25fc798f3 100644 --- a/tutorials/preprocessing/45_projectors_background.py +++ b/tutorials/preprocessing/45_projectors_background.py @@ -17,10 +17,12 @@ # %% import os -import numpy as np + import matplotlib.pyplot as plt +import numpy as np from mpl_toolkits.mplot3d import Axes3D # noqa from scipy.linalg import svd + import mne diff --git a/tutorials/preprocessing/50_artifact_correction_ssp.py b/tutorials/preprocessing/50_artifact_correction_ssp.py index 55d18b276a6..6adcacfb4e0 100644 --- a/tutorials/preprocessing/50_artifact_correction_ssp.py +++ b/tutorials/preprocessing/50_artifact_correction_ssp.py @@ -18,14 +18,16 @@ # %% import os -import numpy as np + import matplotlib.pyplot as plt +import numpy as np + import mne from mne.preprocessing import ( - create_eog_epochs, - create_ecg_epochs, compute_proj_ecg, compute_proj_eog, + create_ecg_epochs, + create_eog_epochs, ) # %% diff --git a/tutorials/preprocessing/55_setting_eeg_reference.py b/tutorials/preprocessing/55_setting_eeg_reference.py index ac6e9131c8b..36254647700 100644 --- a/tutorials/preprocessing/55_setting_eeg_reference.py +++ b/tutorials/preprocessing/55_setting_eeg_reference.py @@ -16,6 +16,7 @@ # %% import os + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/preprocessing/59_head_positions.py b/tutorials/preprocessing/59_head_positions.py index 3605315a4d2..28c54fe3875 100644 --- a/tutorials/preprocessing/59_head_positions.py +++ b/tutorials/preprocessing/59_head_positions.py @@ -30,6 +30,7 @@ # %% from os import path as op + import mne data_path = op.join(mne.datasets.testing.data_path(verbose=True), "SSS") diff --git a/tutorials/preprocessing/60_maxwell_filtering_sss.py b/tutorials/preprocessing/60_maxwell_filtering_sss.py index a3659b1f765..c1453528975 100644 --- a/tutorials/preprocessing/60_maxwell_filtering_sss.py +++ b/tutorials/preprocessing/60_maxwell_filtering_sss.py @@ -15,10 +15,12 @@ # %% import os + import matplotlib.pyplot as plt -import seaborn as sns -import pandas as pd import numpy as np +import pandas as pd +import seaborn as sns + import mne from mne.preprocessing import find_bad_channels_maxwell diff --git a/tutorials/preprocessing/70_fnirs_processing.py b/tutorials/preprocessing/70_fnirs_processing.py index 886d99fc618..2e0f4f9fa0f 100644 --- a/tutorials/preprocessing/70_fnirs_processing.py +++ b/tutorials/preprocessing/70_fnirs_processing.py @@ -14,12 +14,12 @@ """ # %% -import numpy as np -import matplotlib.pyplot as plt from itertools import compress -import mne +import matplotlib.pyplot as plt +import numpy as np +import mne fnirs_data_folder = mne.datasets.fnirs_motor.data_path() fnirs_cw_amplitude_dir = fnirs_data_folder / "Participant-1" diff --git a/tutorials/raw/10_raw_overview.py b/tutorials/raw/10_raw_overview.py index 198cb5264ee..b059cba86dd 100644 --- a/tutorials/raw/10_raw_overview.py +++ b/tutorials/raw/10_raw_overview.py @@ -18,8 +18,10 @@ # %% import os -import numpy as np + import matplotlib.pyplot as plt +import numpy as np + import mne # %% diff --git a/tutorials/raw/20_event_arrays.py b/tutorials/raw/20_event_arrays.py index e13b1f361a7..4390634dfd8 100644 --- a/tutorials/raw/20_event_arrays.py +++ b/tutorials/raw/20_event_arrays.py @@ -16,7 +16,9 @@ # %% import os + import numpy as np + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/raw/30_annotate_raw.py b/tutorials/raw/30_annotate_raw.py index 79d0577ed6b..90387f0a5e8 100644 --- a/tutorials/raw/30_annotate_raw.py +++ b/tutorials/raw/30_annotate_raw.py @@ -18,6 +18,7 @@ import os from datetime import timedelta + import mne sample_data_folder = mne.datasets.sample.data_path() diff --git a/tutorials/simulation/70_point_spread.py b/tutorials/simulation/70_point_spread.py index c197add9833..777c8996d3c 100644 --- a/tutorials/simulation/70_point_spread.py +++ b/tutorials/simulation/70_point_spread.py @@ -16,9 +16,8 @@ import mne from mne.datasets import sample - -from mne.minimum_norm import read_inverse_operator, apply_inverse -from mne.simulation import simulate_stc, simulate_evoked +from mne.minimum_norm import apply_inverse, read_inverse_operator +from mne.simulation import simulate_evoked, simulate_stc # %% # First, we set some parameters. diff --git a/tutorials/simulation/80_dics.py b/tutorials/simulation/80_dics.py index 951671df1e4..61e6fedcc44 100644 --- a/tutorials/simulation/80_dics.py +++ b/tutorials/simulation/80_dics.py @@ -23,15 +23,15 @@ # We first import the required packages to run this tutorial and define a list # of filenames for various things we'll be using. import numpy as np -from scipy.signal import welch, coherence, unit_impulse from matplotlib import pyplot as plt +from scipy.signal import coherence, unit_impulse, welch import mne -from mne.simulation import simulate_raw, add_noise +from mne.beamformer import apply_dics_csd, make_dics from mne.datasets import sample -from mne.minimum_norm import make_inverse_operator, apply_inverse +from mne.minimum_norm import apply_inverse, make_inverse_operator +from mne.simulation import add_noise, simulate_raw from mne.time_frequency import csd_morlet -from mne.beamformer import make_dics, apply_dics_csd # We use the MEG and MRI setup from the MNE-sample dataset data_path = sample.data_path(download=False) diff --git a/tutorials/stats-sensor-space/10_background_stats.py b/tutorials/stats-sensor-space/10_background_stats.py index 412715b3042..1d0c88149a6 100644 --- a/tutorials/stats-sensor-space/10_background_stats.py +++ b/tutorials/stats-sensor-space/10_background_stats.py @@ -16,18 +16,18 @@ from functools import partial -import numpy as np -from scipy import stats import matplotlib.pyplot as plt +import numpy as np from mpl_toolkits.mplot3d import Axes3D # noqa: F401, analysis:ignore +from scipy import stats import mne from mne.stats import ( - ttest_1samp_no_p, bonferroni_correction, fdr_correction, - permutation_t_test, permutation_cluster_1samp_test, + permutation_t_test, + ttest_1samp_no_p, ) # %% diff --git a/tutorials/stats-sensor-space/20_erp_stats.py b/tutorials/stats-sensor-space/20_erp_stats.py index 504a323cbe6..08b5a583ffc 100644 --- a/tutorials/stats-sensor-space/20_erp_stats.py +++ b/tutorials/stats-sensor-space/20_erp_stats.py @@ -17,8 +17,8 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np from scipy.stats import ttest_ind import mne diff --git a/tutorials/stats-sensor-space/40_cluster_1samp_time_freq.py b/tutorials/stats-sensor-space/40_cluster_1samp_time_freq.py index cf49f48ddf4..e6ced1c8903 100644 --- a/tutorials/stats-sensor-space/40_cluster_1samp_time_freq.py +++ b/tutorials/stats-sensor-space/40_cluster_1samp_time_freq.py @@ -32,14 +32,14 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import scipy.stats import mne -from mne.time_frequency import tfr_morlet -from mne.stats import permutation_cluster_1samp_test from mne.datasets import sample +from mne.stats import permutation_cluster_1samp_test +from mne.time_frequency import tfr_morlet # %% # Set parameters diff --git a/tutorials/stats-sensor-space/50_cluster_between_time_freq.py b/tutorials/stats-sensor-space/50_cluster_between_time_freq.py index 69bdbbc5d91..790de36a42c 100644 --- a/tutorials/stats-sensor-space/50_cluster_between_time_freq.py +++ b/tutorials/stats-sensor-space/50_cluster_between_time_freq.py @@ -25,13 +25,13 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne -from mne.time_frequency import tfr_morlet -from mne.stats import permutation_cluster_test from mne.datasets import sample +from mne.stats import permutation_cluster_test +from mne.time_frequency import tfr_morlet print(__doc__) diff --git a/tutorials/stats-sensor-space/70_cluster_rmANOVA_time_freq.py b/tutorials/stats-sensor-space/70_cluster_rmANOVA_time_freq.py index a57112bedc4..f7b274d3ce4 100644 --- a/tutorials/stats-sensor-space/70_cluster_rmANOVA_time_freq.py +++ b/tutorials/stats-sensor-space/70_cluster_rmANOVA_time_freq.py @@ -29,13 +29,13 @@ # %% -import numpy as np import matplotlib.pyplot as plt +import numpy as np import mne -from mne.time_frequency import tfr_morlet -from mne.stats import f_threshold_mway_rm, f_mway_rm, fdr_correction from mne.datasets import sample +from mne.stats import f_mway_rm, f_threshold_mway_rm, fdr_correction +from mne.time_frequency import tfr_morlet print(__doc__) diff --git a/tutorials/stats-sensor-space/75_cluster_ftest_spatiotemporal.py b/tutorials/stats-sensor-space/75_cluster_ftest_spatiotemporal.py index 7a3234c5346..7c3e272a933 100644 --- a/tutorials/stats-sensor-space/75_cluster_ftest_spatiotemporal.py +++ b/tutorials/stats-sensor-space/75_cluster_ftest_spatiotemporal.py @@ -31,17 +31,17 @@ # %% -import numpy as np import matplotlib.pyplot as plt -from mpl_toolkits.axes_grid1 import make_axes_locatable +import numpy as np import scipy.stats +from mpl_toolkits.axes_grid1 import make_axes_locatable import mne -from mne.stats import spatio_temporal_cluster_test, combine_adjacency -from mne.datasets import sample from mne.channels import find_ch_adjacency -from mne.viz import plot_compare_evokeds +from mne.datasets import sample +from mne.stats import combine_adjacency, spatio_temporal_cluster_test from mne.time_frequency import tfr_morlet +from mne.viz import plot_compare_evokeds # %% # Set parameters diff --git a/tutorials/stats-source-space/20_cluster_1samp_spatiotemporal.py b/tutorials/stats-source-space/20_cluster_1samp_spatiotemporal.py index 4c766b5bbbc..d2210f56842 100644 --- a/tutorials/stats-source-space/20_cluster_1samp_spatiotemporal.py +++ b/tutorials/stats-source-space/20_cluster_1samp_spatiotemporal.py @@ -24,10 +24,10 @@ from scipy import stats as stats import mne +from mne.datasets import sample from mne.epochs import equalize_epoch_counts -from mne.stats import spatio_temporal_cluster_1samp_test, summarize_clusters_stc from mne.minimum_norm import apply_inverse, read_inverse_operator -from mne.datasets import sample +from mne.stats import spatio_temporal_cluster_1samp_test, summarize_clusters_stc # %% # Set parameters diff --git a/tutorials/stats-source-space/30_cluster_ftest_spatiotemporal.py b/tutorials/stats-source-space/30_cluster_ftest_spatiotemporal.py index 88c739411a3..118011c32f6 100644 --- a/tutorials/stats-source-space/30_cluster_ftest_spatiotemporal.py +++ b/tutorials/stats-source-space/30_cluster_ftest_spatiotemporal.py @@ -21,8 +21,8 @@ import mne from mne import spatial_src_adjacency -from mne.stats import spatio_temporal_cluster_test, summarize_clusters_stc from mne.datasets import sample +from mne.stats import spatio_temporal_cluster_test, summarize_clusters_stc print(__doc__) diff --git a/tutorials/stats-source-space/60_cluster_rmANOVA_spatiotemporal.py b/tutorials/stats-source-space/60_cluster_rmANOVA_spatiotemporal.py index 3c41afe8fc3..dd9d405dd13 100644 --- a/tutorials/stats-source-space/60_cluster_rmANOVA_spatiotemporal.py +++ b/tutorials/stats-source-space/60_cluster_rmANOVA_spatiotemporal.py @@ -23,21 +23,20 @@ # %% +import matplotlib.pyplot as plt import numpy as np from numpy.random import randn -import matplotlib.pyplot as plt import mne +from mne.datasets import sample +from mne.minimum_norm import apply_inverse, read_inverse_operator from mne.stats import ( - spatio_temporal_cluster_test, - f_threshold_mway_rm, f_mway_rm, + f_threshold_mway_rm, + spatio_temporal_cluster_test, summarize_clusters_stc, ) -from mne.minimum_norm import apply_inverse, read_inverse_operator -from mne.datasets import sample - print(__doc__) # %% diff --git a/tutorials/time-freq/50_ssvep.py b/tutorials/time-freq/50_ssvep.py index c5fa54ff1f1..611d6b19fe9 100644 --- a/tutorials/time-freq/50_ssvep.py +++ b/tutorials/time-freq/50_ssvep.py @@ -43,10 +43,11 @@ # %% import matplotlib.pyplot as plt -import mne import numpy as np from scipy.stats import ttest_rel +import mne + # %% # Data preprocessing # ------------------ diff --git a/tutorials/visualization/10_publication_figure.py b/tutorials/visualization/10_publication_figure.py index 9ca5cf03fc5..cc6d83b29f8 100644 --- a/tutorials/visualization/10_publication_figure.py +++ b/tutorials/visualization/10_publication_figure.py @@ -20,9 +20,9 @@ # ------- # We are importing everything we need for this example: -import numpy as np import matplotlib.pyplot as plt -from mpl_toolkits.axes_grid1 import make_axes_locatable, ImageGrid, inset_locator +import numpy as np +from mpl_toolkits.axes_grid1 import ImageGrid, inset_locator, make_axes_locatable import mne diff --git a/tutorials/visualization/20_ui_events.py b/tutorials/visualization/20_ui_events.py index 1c799a60956..014a8d2a057 100644 --- a/tutorials/visualization/20_ui_events.py +++ b/tutorials/visualization/20_ui_events.py @@ -19,9 +19,10 @@ # Author: Marijn van Vliet # # License: BSD-3-Clause -import mne import matplotlib.pyplot as plt -from mne.viz.ui_events import publish, subscribe, link, TimeChange + +import mne +from mne.viz.ui_events import TimeChange, link, publish, subscribe # Turn on interactivity plt.ion()