braindecode 1.8.0.dev183370663__tar.gz → 1.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- braindecode-1.8.1/NOTICE.txt +66 -0
- {braindecode-1.8.0.dev183370663/braindecode.egg-info → braindecode-1.8.1}/PKG-INFO +8 -5
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/README.rst +6 -3
- braindecode-1.8.1/braindecode/datasets/_notebook_viewer.py +255 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/base.py +3 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/functional/functions.py +4 -3
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/__init__.py +6 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/atcnet.py +2 -2
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/attn_sleep.py +0 -4
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/base.py +28 -3
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/brainmodule.py +1 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/ctnet.py +10 -7
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/dance.py +2 -10
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegconformer.py +1 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegminer.py +2 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegsimpleconv.py +9 -7
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/emg2qwerty.py +9 -133
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/ifnet.py +10 -6
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/luna.py +31 -5
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/medformer.py +1 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/meta_neuromotor.py +1 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/mvpformer.py +1 -1
- braindecode-1.8.1/braindecode/models/neuropose.py +440 -0
- braindecode-1.8.1/braindecode/models/sensingdynamics.py +461 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/sleep_stager_blanco_2020.py +5 -9
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/sleep_stager_chambon_2018.py +1 -7
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/sparcnet.py +2 -2
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/sstdpn.py +1 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/summary.csv +4 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/tcformer.py +1 -1
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/tidnet.py +1 -7
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/usleep.py +3 -7
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/util.py +37 -0
- braindecode-1.8.1/braindecode/models/vemg2pose.py +655 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/zuna.py +26 -12
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/__init__.py +16 -2
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/activation.py +14 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/blocks.py +213 -0
- braindecode-1.8.1/braindecode/version.py +1 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/__init__.py +6 -0
- braindecode-1.8.1/braindecode/visualization/activations.py +77 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1/braindecode.egg-info}/PKG-INFO +8 -5
- braindecode-1.8.1/braindecode.egg-info/SOURCES.txt +595 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode.egg-info/requires.txt +1 -1
- braindecode-1.8.1/docs/_build/html/_downloads/090305d06248840b75133975e5121f41/plot_sleep_staging_chambon2018.ipynb +302 -0
- braindecode-1.8.1/docs/_build/html/_downloads/0ada35f18bb95235ba2842270483081f/plot_finetune_foundation_model.ipynb +219 -0
- braindecode-1.8.1/docs/_build/html/_downloads/0f2bf063e08b7d05b80e0004fcbbb6f9/benchmark_lazy_eager_loading.ipynb +183 -0
- braindecode-1.8.1/docs/_build/html/_downloads/137d0b161de96c88644fd65258fc20b5/tutorial_create_fixed_window_length.ipynb +190 -0
- braindecode-1.8.1/docs/_build/html/_downloads/1c6590d134fa0befda654e89aa55b2ac/plot_benchmark_preprocessing.ipynb +104 -0
- braindecode-1.8.1/docs/_build/html/_downloads/1d879df548fa18be8c23d9ca0dc008d4/plot_data_augmentation.ipynb +259 -0
- braindecode-1.8.1/docs/_build/html/_downloads/2466f8ec5c733d0bd65e187b45d875cc/plot_data_augmentation_search.ipynb +302 -0
- braindecode-1.8.1/docs/_build/html/_downloads/263464a28477cf8decb861ae6e2e9be7/plot_how_train_test_and_tune.ipynb +375 -0
- braindecode-1.8.1/docs/_build/html/_downloads/3862cafd7f0d815e434319ffe525afc8/plot_bcic_iv_2a_moabb_cropped.ipynb +244 -0
- braindecode-1.8.1/docs/_build/html/_downloads/408ca4ffd0ea1f76faa9ef602734ac94/plot_tuh_eeg_corpus.ipynb +187 -0
- braindecode-1.8.1/docs/_build/html/_downloads/5030717acb00990b394b83314b0797d9/plot_bids_dataset_example.ipynb +97 -0
- braindecode-1.8.1/docs/_build/html/_downloads/64c99f99abefd72dcd2a3f5e7ddebfce/plot_channel_interpolation.ipynb +222 -0
- braindecode-1.8.1/docs/_build/html/_downloads/66ea18b3b9cf0802bbd32bb903ab554e/plot_temporal_generalization.ipynb +226 -0
- braindecode-1.8.1/docs/_build/html/_downloads/71f6b29d340c0ff57ee55b0da637518b/plot_interpretability.ipynb +266 -0
- braindecode-1.8.1/docs/_build/html/_downloads/75a73c7d94f3a671fd3dec28f4031ead/plot_regression.ipynb +212 -0
- braindecode-1.8.1/docs/_build/html/_downloads/84fbcd59a346e5e56758285122dc69e2/plot_sleep_staging_eldele2021.ipynb +302 -0
- braindecode-1.8.1/docs/_build/html/_downloads/8616a7f968141825e56ab3e3d59be449/plot_tuh_discrete_multitarget.ipynb +169 -0
- braindecode-1.8.1/docs/_build/html/_downloads/8b5ba06718764b959e8dea1dd0bb97df/plot_sleep_staging_usleep.ipynb +266 -0
- braindecode-1.8.1/docs/_build/html/_downloads/91651c9d4fde110b4a53f5775a91acc5/plot_mne_dataset_example.ipynb +104 -0
- braindecode-1.8.1/docs/_build/html/_downloads/93fdea8cbadaf0e3afa2eb2be3ebc483/bcic_iv_4_ecog_trial.ipynb +376 -0
- braindecode-1.8.1/docs/_build/html/_downloads/9a4447462c3b255ba7e5ca212bbadd52/plot_bcic_iv_2a_moabb_trial.ipynb +282 -0
- braindecode-1.8.1/docs/_build/html/_downloads/9ecad1eb1db853df0ba20dbb97303c02/plot_exca_config.ipynb +439 -0
- braindecode-1.8.1/docs/_build/html/_downloads/a2f12129facb042643a99d4b9de1886d/bcic_iv_4_ecog_cropped.ipynb +363 -0
- braindecode-1.8.1/docs/_build/html/_downloads/a39e4245738e55e0eb7084c545ed05bc/plot_hyperparameter_tuning_with_scikit-learn.ipynb +257 -0
- braindecode-1.8.1/docs/_build/html/_downloads/a6249715d3c30cb41c4af85938cca008/plot_moabb_dataset_example.ipynb +140 -0
- braindecode-1.8.1/docs/_build/html/_downloads/a868f9d41de95f5f6defc26e291cf4aa/plot_preprocessing_classes.ipynb +194 -0
- braindecode-1.8.1/docs/_build/html/_downloads/a86d0c5f3a882a069df1683a708d3e25/plot_train_in_pure_pytorch_and_pytorch_lightning.ipynb +250 -0
- braindecode-1.8.1/docs/_build/html/_downloads/aa8426d97090e7b3062c4e4732c3214a/plot_relative_positioning.ipynb +266 -0
- braindecode-1.8.1/docs/_build/html/_downloads/b7179beb2f9c065d6149a3b430876706/bids_dataset_example.ipynb +97 -0
- braindecode-1.8.1/docs/_build/html/_downloads/b9d19304ecd233ea7a79d4365316ea49/plot_load_save_datasets.ipynb +176 -0
- braindecode-1.8.1/docs/_build/html/_downloads/cb62940d13f700ed2b9e813705e9d437/plot_moabb_benchmark.ipynb +122 -0
- braindecode-1.8.1/docs/_build/html/_downloads/cd24c95e5e6c988ebb6ece50ac672ab5/plot_bcic_iv_2a_eegprep_cleaning.ipynb +271 -0
- braindecode-1.8.1/docs/_build/html/_downloads/f158ead3e4720f6f4685ff1d3f48dc15/plot_hub_integration.ipynb +201 -0
- braindecode-1.8.1/docs/_build/html/_downloads/f3c89d39e947a121c7920b4d415413a2/plot_split_dataset.ipynb +180 -0
- braindecode-1.8.1/docs/_build/html/_downloads/f7b38cac92c078838442753121efc297/plot_custom_dataset_example.ipynb +140 -0
- braindecode-1.8.1/docs/_build/html/_downloads/fa7c2c982eb044a92a764e44b7365fd6/plot_load_pretrained_models.ipynb +222 -0
- braindecode-1.8.1/docs/_build/html/_downloads/fff46913db5173d3ae22c1113acffb45/plot_basic_training_epochs.ipynb +237 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/api.rst +12 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/bcic_iv_4_ecog_cropped.ipynb +374 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/bcic_iv_4_ecog_cropped.rst +656 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/index.rst +191 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_data_augmentation.ipynb +259 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_data_augmentation.rst +2000 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_data_augmentation_search.ipynb +313 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_data_augmentation_search.rst +742 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_exca_config.ipynb +439 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_exca_config.rst +934 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_finetune_foundation_model.ipynb +230 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_finetune_foundation_model.rst +394 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_interpretability.ipynb +266 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_interpretability.rst +1295 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_moabb_benchmark.ipynb +122 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_moabb_benchmark.rst +327 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_relative_positioning.ipynb +277 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_relative_positioning.rst +689 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_temporal_generalization.ipynb +226 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/plot_temporal_generalization.rst +648 -0
- braindecode-1.8.1/docs/auto_examples/advanced_training/sg_execution_times.rst +61 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/bcic_iv_4_ecog_trial.ipynb +387 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/bcic_iv_4_ecog_trial.rst +603 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/index.rst +155 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_dance_event_detection.ipynb +223 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_dance_event_detection.rst +819 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_sleep_staging_chambon2018.ipynb +313 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_sleep_staging_chambon2018.rst +546 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_sleep_staging_eldele2021.ipynb +313 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_sleep_staging_eldele2021.rst +579 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_sleep_staging_usleep.ipynb +277 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_sleep_staging_usleep.rst +493 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_tuh_eeg_corpus.ipynb +198 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/plot_tuh_eeg_corpus.rst +435 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/sg_execution_times.rst +55 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/tutorial_create_fixed_window_length.ipynb +201 -0
- braindecode-1.8.1/docs/auto_examples/applied_examples/tutorial_create_fixed_window_length.rst +365 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/benchmark_lazy_eager_loading.ipynb +194 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/benchmark_lazy_eager_loading.rst +504 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/bids_dataset_example.ipynb +108 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/bids_dataset_example.rst +110 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/index.rst +209 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_benchmark_preprocessing.ipynb +104 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_benchmark_preprocessing.rst +540 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_bids_dataset_example.ipynb +97 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_bids_dataset_example.rst +3591 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_custom_dataset_example.ipynb +140 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_custom_dataset_example.rst +323 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_hub_integration.ipynb +201 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_hub_integration.rst +696 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_load_save_datasets.ipynb +176 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_load_save_datasets.rst +507 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_mne_dataset_example.ipynb +104 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_mne_dataset_example.rst +347 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_moabb_dataset_example.ipynb +140 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_moabb_dataset_example.rst +320 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_split_dataset.ipynb +180 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_split_dataset.rst +835 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_tuh_discrete_multitarget.ipynb +169 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/plot_tuh_discrete_multitarget.rst +379 -0
- braindecode-1.8.1/docs/auto_examples/datasets_io/sg_execution_times.rst +64 -0
- braindecode-1.8.1/docs/auto_examples/index.rst +782 -0
- braindecode-1.8.1/docs/auto_examples/model_building/index.rst +245 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_basic_training_epochs.ipynb +237 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_basic_training_epochs.rst +1936 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_bcic_iv_2a_eegprep_cleaning.ipynb +282 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_bcic_iv_2a_eegprep_cleaning.rst +556 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_bcic_iv_2a_moabb_cropped.ipynb +255 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_bcic_iv_2a_moabb_cropped.rst +545 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_bcic_iv_2a_moabb_trial.ipynb +293 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_bcic_iv_2a_moabb_trial.rst +507 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_channel_interpolation.ipynb +233 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_channel_interpolation.rst +474 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_heterogeneous_montage_training.ipynb +151 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_heterogeneous_montage_training.rst +260 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_how_train_test_and_tune.ipynb +375 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_how_train_test_and_tune.rst +1101 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_hyperparameter_tuning_with_scikit-learn.ipynb +257 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_hyperparameter_tuning_with_scikit-learn.rst +656 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_load_pretrained_models.ipynb +233 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_load_pretrained_models.rst +816 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_preprocessing_classes.ipynb +194 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_preprocessing_classes.rst +990 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_regression.ipynb +212 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_regression.rst +547 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_train_in_pure_pytorch_and_pytorch_lightning.ipynb +250 -0
- braindecode-1.8.1/docs/auto_examples/model_building/plot_train_in_pure_pytorch_and_pytorch_lightning.rst +698 -0
- braindecode-1.8.1/docs/auto_examples/model_building/sg_execution_times.rst +64 -0
- braindecode-1.8.1/docs/auto_examples/sg_execution_times.rst +37 -0
- braindecode-1.8.1/docs/generated/activation/braindecode.modules.GatedLinearUnit.rst +130 -0
- braindecode-1.8.1/docs/generated/activation/braindecode.modules.LogActivation.rst +130 -0
- braindecode-1.8.1/docs/generated/activation/braindecode.modules.SafeLog.rst +135 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.CAT.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.CATLite.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.CBAM.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.ECA.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.EncNet.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.FCA.rst +137 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.GCT.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.GSoP.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.GatherExcite.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.MultiHeadAttention.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.SRM.rst +130 -0
- braindecode-1.8.1/docs/generated/attention/braindecode.modules.SqueezeAndExcitation.rst +130 -0
- braindecode-1.8.1/docs/generated/blocks/braindecode.modules.FeedForwardBlock.rst +127 -0
- braindecode-1.8.1/docs/generated/blocks/braindecode.modules.InceptionBlock.rst +130 -0
- braindecode-1.8.1/docs/generated/blocks/braindecode.modules.MLP.rst +127 -0
- braindecode-1.8.1/docs/generated/blocks/braindecode.modules.PatchTokenizer.rst +130 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.AmplitudeScale.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.AugmentedDataLoader.rst +21 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.BandstopFilter.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.ChannelsDropout.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.ChannelsReref.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.ChannelsShuffle.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.ChannelsSymmetry.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.Compose.rst +132 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.FTSurrogate.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.FrequencyShift.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.GaussianNoise.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.IdentityTransform.rst +134 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.MaskEncoding.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.Mixup.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SegmentationReconstruction.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SensorsRotation.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SensorsXRotation.rst +123 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SensorsYRotation.rst +123 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SensorsZRotation.rst +123 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SignFlip.rst +134 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.SmoothTimeMask.rst +139 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.TimeReverse.rst +134 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.Transform.rst +137 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.amplitude_scale.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.bandstop_filter.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.channels_dropout.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.channels_permute.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.channels_rereference.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.channels_shuffle.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.frequency_shift.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.ft_surrogate.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.gaussian_noise.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.identity.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.mask_encoding.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.mixup.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.segmentation_reconstruction.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.sensors_rotation.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.sign_flip.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.smooth_time_mask.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.augmentation.functional.time_reverse.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.classifier.EEGClassifier.rst +166 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.BCICompetitionIVDataset4.rst +52 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.BNCI2014_001.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.BaseConcatDataset.rst +80 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.CHBMIT.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.HGD.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.MOABBDataset.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.NMT.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.RawDataset.rst +21 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.RecordDataset.rst +32 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.SIENA.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.SleepPhysionet.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.SleepPhysionetChallenge2018.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.TUH.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.TUHAbnormal.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.TUHEvents.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.WindowsDataset.rst +21 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.bids.BIDSDataset.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.bids.BIDSEpochsDataset.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.bids.BIDSIterableDataset.rst +19 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.bids.HubDatasetMixin.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.create_from_X_y.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.create_from_mne_epochs.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.datasets.create_from_mne_raw.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.datautil.infer_signal_properties.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.datautil.load_concat_dataset.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.datautil.save_concat_dataset.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.drop_path.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.glorot_weight_zero_bias.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.hilbert_freq.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.identity.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.plv_time.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.rescale_parameter.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.safe_log.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.sinusoidal_positional_encoding.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.functional.square.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.models.ATCNet.rst +157 -0
- braindecode-1.8.1/docs/generated/braindecode.models.AttentionBaseNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.AttnSleep.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.BDTCN.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.BENDR.rst +155 -0
- braindecode-1.8.1/docs/generated/braindecode.models.BIOT.rst +155 -0
- braindecode-1.8.1/docs/generated/braindecode.models.BrainModule.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.CBraMod.rst +155 -0
- braindecode-1.8.1/docs/generated/braindecode.models.CTNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.CodeBrain.rst +155 -0
- braindecode-1.8.1/docs/generated/braindecode.models.ContraWR.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.DGCNN.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.Deep4Net.rst +147 -0
- braindecode-1.8.1/docs/generated/braindecode.models.DeepSleepNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGConformer.rst +157 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGDINO.rst +155 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGITNet.rst +147 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGInceptionERP.rst +147 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGInceptionMI.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGMiner.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGModuleMixin.rst +82 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGNeX.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGNet.rst +147 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGPT.rst +162 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGSimpleConv.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGSym.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EEGTCNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.EMG2QwertyNet.rst +167 -0
- braindecode-1.8.1/docs/generated/braindecode.models.FBCNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.FBLightConvNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.FBMSNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.IFNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.InterpolatedBENDR.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.InterpolatedBIOT.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.InterpolatedEEGPT.rst +152 -0
- braindecode-1.8.1/docs/generated/braindecode.models.InterpolatedLaBraM.rst +160 -0
- braindecode-1.8.1/docs/generated/braindecode.models.InterpolatedModel.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.models.InterpolatedSignalJEPA.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.LUNA.rst +185 -0
- braindecode-1.8.1/docs/generated/braindecode.models.Labram.rst +190 -0
- braindecode-1.8.1/docs/generated/braindecode.models.MEDFormer.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.MSVTNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.MetaNeuromotorHand.rst +167 -0
- braindecode-1.8.1/docs/generated/braindecode.models.PBT.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.REVE.rst +162 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SCCNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SPARCNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SSTDPN.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.STEEGFormer.rst +155 -0
- braindecode-1.8.1/docs/generated/braindecode.models.ShallowFBCSPNet.rst +147 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SignalJEPA.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SignalJEPA_Contextual.rst +160 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SignalJEPA_PostLocal.rst +160 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SignalJEPA_PreLocal.rst +160 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SincShallowNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SleepStagerBlanco2020.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SleepStagerChambon2018.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.SyncNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.TCFormer.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.TIDNet.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.TSception.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.models.USleep.rst +150 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AddChannels.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AddEvents.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AddProj.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AddReferenceChannels.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AnnotateAmplitude.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AnnotateBreak.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AnnotateMovement.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AnnotateMuscleZscore.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.AnnotateNan.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Anonymize.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ApplyGradientCompensation.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ApplyHilbert.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ApplyProj.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.CombineChannels.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ComputeBridgedElectrodes.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ComputeCurrentSourceDensity.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Crop.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.CropByAnnotations.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.DelProj.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.DropChannels.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.EEGPrep.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.EqualizeBads.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.EqualizeChannels.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Filter.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.FilterData.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.FindBadChannelsLof.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.FixMagCoilTypes.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.FixStimArtifact.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.InterpolateBads.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.InterpolateBridgedElectrodes.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.InterpolateTo.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.MaxwellFilter.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.NotchFilter.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.OversampledTemporalProjection.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Pick.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.PickChannels.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.PickTypes.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Preprocessor.rst +46 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RealignRaw.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RegressArtifact.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ReinterpolateRemovedChannels.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveBadChannels.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveBadChannelsNoLocs.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveBadWindows.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveBursts.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveCommonAverageReference.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveDCOffset.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveDrifts.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RemoveFlatChannels.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.RenameChannels.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.ReorderChannels.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Resample.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Resampling.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.Rescale.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SavgolFilter.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SetAnnotations.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SetBipolarReference.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SetChannelTypes.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SetEEGReference.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SetMeasDate.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.SetMontage.rst +25 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.create_fixed_length_windows.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.create_windows_from_events.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.create_windows_from_target_channels.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.exponential_moving_demean.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.exponential_moving_standardize.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.filterbank.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.preprocessing.preprocess.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.regressor.EEGRegressor.rst +161 -0
- braindecode-1.8.1/docs/generated/braindecode.samplers.BalancedSequenceSampler.rst +36 -0
- braindecode-1.8.1/docs/generated/braindecode.samplers.DistributedRecordingSampler.rst +41 -0
- braindecode-1.8.1/docs/generated/braindecode.samplers.DistributedRelativePositioningSampler.rst +38 -0
- braindecode-1.8.1/docs/generated/braindecode.samplers.RecordingSampler.rst +39 -0
- braindecode-1.8.1/docs/generated/braindecode.samplers.RelativePositioningSampler.rst +36 -0
- braindecode-1.8.1/docs/generated/braindecode.samplers.SequenceSampler.rst +23 -0
- braindecode-1.8.1/docs/generated/braindecode.training.CroppedLoss.rst +130 -0
- braindecode-1.8.1/docs/generated/braindecode.training.CroppedTimeSeriesEpochScoring.rst +52 -0
- braindecode-1.8.1/docs/generated/braindecode.training.CroppedTrialEpochScoring.rst +57 -0
- braindecode-1.8.1/docs/generated/braindecode.training.DanceLoss.rst +130 -0
- braindecode-1.8.1/docs/generated/braindecode.training.PostEpochTrainScoring.rst +52 -0
- braindecode-1.8.1/docs/generated/braindecode.training.TimeSeriesLoss.rst +130 -0
- braindecode-1.8.1/docs/generated/braindecode.training.f1_event.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.training.mixup_criterion.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.training.predict_trials.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.training.trial_preds_from_window_preds.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.util.set_random_seeds.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.METRIC_NAMES.rst +6 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.SSIM_METRIC_NAMES.rst +6 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.amplitude_gradients.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.amplitude_gradients_per_trial.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.cascading_layer_reset.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.compute_metrics.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.compute_ssim_metrics.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.deconvolution.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.deep_lift.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.guided_backprop.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.input_x_gradient.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.integrated_gradients.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.layer_grad_cam.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.lrp.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.plot_confusion_matrix.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.project_to_topomap.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.random_target.rst +12 -0
- braindecode-1.8.1/docs/generated/braindecode.visualization.saliency.rst +12 -0
- braindecode-1.8.1/docs/generated/convolution/braindecode.modules.AvgPool2dWithConv.rst +130 -0
- braindecode-1.8.1/docs/generated/convolution/braindecode.modules.CausalConv1d.rst +132 -0
- braindecode-1.8.1/docs/generated/convolution/braindecode.modules.CombinedConv.rst +130 -0
- braindecode-1.8.1/docs/generated/convolution/braindecode.modules.Conv2dWithConstraint.rst +121 -0
- braindecode-1.8.1/docs/generated/convolution/braindecode.modules.DepthwiseConv2d.rst +121 -0
- braindecode-1.8.1/docs/generated/filter/braindecode.modules.ChannelInterpolationLayer.rst +130 -0
- braindecode-1.8.1/docs/generated/filter/braindecode.modules.FilterBankLayer.rst +130 -0
- braindecode-1.8.1/docs/generated/filter/braindecode.modules.GeneralizedGaussianFilter.rst +144 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.ChannelMerger.rst +130 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.Chomp1d.rst +135 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.DropPath.rst +135 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.Ensure4d.rst +130 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.FourierEmb.rst +130 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.SubjectLayers.rst +130 -0
- braindecode-1.8.1/docs/generated/layers/braindecode.modules.TimeDistributed.rst +130 -0
- braindecode-1.8.1/docs/generated/linear/braindecode.modules.LinearWithConstraint.rst +121 -0
- braindecode-1.8.1/docs/generated/linear/braindecode.modules.MaxNormLinear.rst +121 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.LogPowerLayer.rst +6 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.LogVarLayer.rst +6 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.MaxLayer.rst +6 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.MeanLayer.rst +6 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.StatLayer.rst +130 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.StdLayer.rst +6 -0
- braindecode-1.8.1/docs/generated/stats/braindecode.modules.VarLayer.rst +6 -0
- braindecode-1.8.1/docs/generated/util/braindecode.modules.aggregate_probas.rst +12 -0
- braindecode-1.8.1/docs/generated/wrapper/braindecode.modules.Expression.rst +130 -0
- braindecode-1.8.1/docs/generated/wrapper/braindecode.modules.IntermediateOutputWrapper.rst +130 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/whats_new.rst +67 -2
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/pyproject.toml +1 -1
- braindecode-1.8.0.dev183370663/NOTICE.txt +0 -25
- braindecode-1.8.0.dev183370663/braindecode/version.py +0 -1
- braindecode-1.8.0.dev183370663/braindecode.egg-info/SOURCES.txt +0 -177
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/LICENSE.txt +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/MANIFEST.in +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/augmentation/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/augmentation/base.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/augmentation/functional.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/augmentation/transforms.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/classifier.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bbci.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bcicomp.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/datasets.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/format.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/hub.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/hub_format.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/hub_io.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/hub_validation.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/bids/iterable.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/chb_mit.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/collate.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/mne.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/moabb.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/nmt.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/registry.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/siena.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/sleep_physionet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/tuh.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/utils.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datasets/xy.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datautil/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datautil/channel_utils.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datautil/hub_formats.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datautil/serialization.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/datautil/util.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/eegneuralnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/functional/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/functional/initialization.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/attentionbasenet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/bendr.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/biot.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/cbramod.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/codebrain.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/config.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/contrawr.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/deep4.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/deepsleepnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/dgcnn.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegdino.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eeginception_erp.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eeginception_mi.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegitnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegnex.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegpt.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegsym.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/eegtcnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/fbcnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/fblightconvnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/fbmsnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/hybrid.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/interpolated.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/labram.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/msvtnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/patchedtransformer.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/reve.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/sccnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/shallow_fbcsp.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/signal_jepa.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/sinc_shallow.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/steegformer.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/syncnet.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/tcn.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/models/tsinception.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/attention.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/convolution.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/dance_modules.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/filter.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/interpolation.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/layers.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/linear.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/parametrization.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/stats.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/util.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/modules/wrapper.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/preprocessing/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/preprocessing/mne_preprocess.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/preprocessing/preprocess.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/preprocessing/util.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/preprocessing/windowers.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/regressor.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/samplers/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/samplers/base.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/samplers/ssl.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/training/__init__.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/training/callbacks.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/training/losses.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/training/scoring.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/util.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/attribution.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/confusion_matrices.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/frequency.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/metrics.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/sanity.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode/visualization/topology.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode.egg-info/dependency_links.txt +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/braindecode.egg-info/top_level.txt +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/Makefile +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/_templates/autosummary/class.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/_templates/autosummary/function.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/cite.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/conf.py +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/help.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/index.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/install/install.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/install/install_pip.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/install/install_source.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/attention.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/channel.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/convolution.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/filterbank.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/gnn.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/interpretable.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/lbm.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/recurrent.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/categorization/spd.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/models.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/models_categorization.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/models_table.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/models/models_visualization.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/docs/sg_execution_times.rst +0 -0
- {braindecode-1.8.0.dev183370663 → braindecode-1.8.1}/setup.cfg +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# BRAINDECODE Notice
|
|
2
|
+
|
|
3
|
+
## Licensed Components
|
|
4
|
+
|
|
5
|
+
### BSD-3-Clause Licensed Files
|
|
6
|
+
|
|
7
|
+
All files within the `braindecode/` package are licensed under the BSD-3-Clause
|
|
8
|
+
License, except for those listed in the sections below.
|
|
9
|
+
|
|
10
|
+
### CC BY-NC 4.0 Licensed Files
|
|
11
|
+
|
|
12
|
+
The following components are licensed under the Creative Commons Attribution-NonCommercial 4.0 International License:
|
|
13
|
+
|
|
14
|
+
- `braindecode/models/eegminer.py`
|
|
15
|
+
- `braindecode/models/meta_neuromotor.py`
|
|
16
|
+
- `braindecode/models/brainmodule.py`
|
|
17
|
+
|
|
18
|
+
As well as class later imported into the `braindecode.models.module` named as GeneralizedGaussianFilter.
|
|
19
|
+
|
|
20
|
+
The `meta_neuromotor.py` file is a derivative of
|
|
21
|
+
`facebookresearch/generic-neuromotor-interface`, released by Meta Platforms,
|
|
22
|
+
Inc. under CC BY-NC 4.0, and inherits the same noncommercial terms.
|
|
23
|
+
|
|
24
|
+
### CC BY-NC-SA 4.0 Licensed Files
|
|
25
|
+
|
|
26
|
+
The following components are licensed under the Creative Commons
|
|
27
|
+
Attribution-NonCommercial-ShareAlike 4.0 International License:
|
|
28
|
+
|
|
29
|
+
- `braindecode/models/emg2qwerty.py`
|
|
30
|
+
- `braindecode/models/vemg2pose.py`
|
|
31
|
+
|
|
32
|
+
The `emg2qwerty.py` file is a derivative of `facebookresearch/emg2qwerty`,
|
|
33
|
+
released by Meta Platforms, Inc. under CC BY-NC-SA 4.0, and inherits the
|
|
34
|
+
same noncommercial ShareAlike terms.
|
|
35
|
+
|
|
36
|
+
### MIT Licensed Files
|
|
37
|
+
|
|
38
|
+
The following components are licensed under the MIT License:
|
|
39
|
+
|
|
40
|
+
- `braindecode/models/ctnet.py`
|
|
41
|
+
- `braindecode/models/dance.py`
|
|
42
|
+
- `braindecode/models/medformer.py`
|
|
43
|
+
- `braindecode/models/tcformer.py`
|
|
44
|
+
- `braindecode/models/ifnet.py`
|
|
45
|
+
|
|
46
|
+
### Apache-2.0 Licensed Files
|
|
47
|
+
|
|
48
|
+
The following components are licensed under the Apache License 2.0:
|
|
49
|
+
|
|
50
|
+
- `braindecode/models/mvpformer.py`
|
|
51
|
+
- `braindecode/models/zuna.py`
|
|
52
|
+
- `braindecode/models/luna.py`
|
|
53
|
+
|
|
54
|
+
## License Links
|
|
55
|
+
|
|
56
|
+
- [BSD-3-Clause License](https://opensource.org/licenses/BSD-3-Clause)
|
|
57
|
+
- [CC BY-NC 4.0 License](https://creativecommons.org/licenses/by-nc/4.0/)
|
|
58
|
+
- [CC BY-NC-SA 4.0 License](https://creativecommons.org/licenses/by-nc-sa/4.0/)
|
|
59
|
+
- [MIT License](https://opensource.org/licenses/MIT)
|
|
60
|
+
- [Apache-2.0 License](https://www.apache.org/licenses/LICENSE-2.0)
|
|
61
|
+
|
|
62
|
+
## Note
|
|
63
|
+
|
|
64
|
+
This list covers files whose own headers declare a license other than
|
|
65
|
+
BSD-3-Clause. Per-file provenance review of the remaining models is
|
|
66
|
+
tracked separately.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.1
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
5
|
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Alexandre Gramfort <agramfort@meta.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
@@ -34,7 +34,6 @@ Requires-Dist: pandas
|
|
|
34
34
|
Requires-Dist: wfdb>=4.3.1
|
|
35
35
|
Requires-Dist: linear_attention_transformer
|
|
36
36
|
Requires-Dist: docstring_inheritance
|
|
37
|
-
Requires-Dist: rotary_embedding_torch
|
|
38
37
|
Requires-Dist: pydantic>=2.0
|
|
39
38
|
Provides-Extra: moabb
|
|
40
39
|
Requires-Dist: moabb>=1.4.3; extra == "moabb"
|
|
@@ -51,6 +50,7 @@ Requires-Dist: pytest-cov; extra == "tests"
|
|
|
51
50
|
Requires-Dist: codecov; extra == "tests"
|
|
52
51
|
Requires-Dist: pytest_cases; extra == "tests"
|
|
53
52
|
Requires-Dist: mypy; extra == "tests"
|
|
53
|
+
Requires-Dist: ipython; extra == "tests"
|
|
54
54
|
Requires-Dist: transformers>=4.57.0; extra == "tests"
|
|
55
55
|
Requires-Dist: bids_validator; extra == "tests"
|
|
56
56
|
Provides-Extra: typing
|
|
@@ -260,7 +260,10 @@ This project is primarily licensed under the BSD-3-Clause License.
|
|
|
260
260
|
Additional Components
|
|
261
261
|
=====================
|
|
262
262
|
|
|
263
|
-
Some components within this repository are licensed under
|
|
264
|
-
Attribution-NonCommercial 4.0 International
|
|
263
|
+
Some components within this repository are licensed under other licenses, including
|
|
264
|
+
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0), Creative
|
|
265
|
+
Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0), MIT
|
|
266
|
+
and Apache-2.0.
|
|
265
267
|
|
|
266
|
-
Please refer to the ``LICENSE`` and ``NOTICE`` files for
|
|
268
|
+
Please refer to the ``LICENSE`` and ``NOTICE`` files for the per-file list and more
|
|
269
|
+
detailed information.
|
|
@@ -170,7 +170,10 @@ This project is primarily licensed under the BSD-3-Clause License.
|
|
|
170
170
|
Additional Components
|
|
171
171
|
=====================
|
|
172
172
|
|
|
173
|
-
Some components within this repository are licensed under
|
|
174
|
-
Attribution-NonCommercial 4.0 International
|
|
173
|
+
Some components within this repository are licensed under other licenses, including
|
|
174
|
+
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0), Creative
|
|
175
|
+
Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0), MIT
|
|
176
|
+
and Apache-2.0.
|
|
175
177
|
|
|
176
|
-
Please refer to the ``LICENSE`` and ``NOTICE`` files for
|
|
178
|
+
Please refer to the ``LICENSE`` and ``NOTICE`` files for the per-file list and more
|
|
179
|
+
detailed information.
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Authors: Bruno Aristimunha <b.aristimunha@gmail.com>
|
|
2
|
+
#
|
|
3
|
+
# License: BSD (3-clause)
|
|
4
|
+
"""Serverless in-notebook viewer for file-backed recordings.
|
|
5
|
+
|
|
6
|
+
The bytes on disk behind a dataset element are inlined in the cell output
|
|
7
|
+
as base64 and handed to the deployed eegdash-viewer over its ``postMessage``
|
|
8
|
+
bridge (``docs/embedding.md`` in https://github.com/eegdash/eegdash-viewer):
|
|
9
|
+
no server, no CORS. The output is an iframe plus an inline script, so it
|
|
10
|
+
renders when the cell ran in your session or the saved notebook is trusted
|
|
11
|
+
(``jupyter trust``).
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import base64
|
|
17
|
+
import json
|
|
18
|
+
import os
|
|
19
|
+
import uuid
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
from urllib.parse import urlsplit
|
|
22
|
+
|
|
23
|
+
import mne_bids
|
|
24
|
+
from mne.utils import _soft_import
|
|
25
|
+
|
|
26
|
+
CDN = "https://eegdash.github.io/eegdash-viewer"
|
|
27
|
+
MAX_BYTES = 64 * 2**20 # base64 output per call; it is saved with the notebook
|
|
28
|
+
EXTENSIONS = {
|
|
29
|
+
".set",
|
|
30
|
+
".edf",
|
|
31
|
+
".bdf",
|
|
32
|
+
".vhdr",
|
|
33
|
+
".fif",
|
|
34
|
+
".snirf",
|
|
35
|
+
".nwb",
|
|
36
|
+
} # viewer readers
|
|
37
|
+
_BIDS = {"eeg", "ieeg", "emg", "meg", "nirs"}
|
|
38
|
+
_SIBLINGS = {".vhdr": (".eeg", ".vmrk"), ".set": (".fdt",)} # travel with the header
|
|
39
|
+
_HEADER = {s: h for h, ss in _SIBLINGS.items() for s in ss} # data file -> header
|
|
40
|
+
|
|
41
|
+
_SCRIPT = """<iframe id=%(id)s title="eegdash trace viewer" style="width:100%%;height:%(height)spx;
|
|
42
|
+
border:1px solid var(--jp-border-color1,#d9dce1);border-radius:6px;background:transparent"></iframe>
|
|
43
|
+
<script>
|
|
44
|
+
(function () {
|
|
45
|
+
var self = document.currentScript, id = %(id)s; // Lab re-runs scripts in place; VS Code/nbclassic elsewhere
|
|
46
|
+
var frame = (self && self.previousElementSibling && self.previousElementSibling.tagName === "IFRAME")
|
|
47
|
+
? self.previousElementSibling : document.getElementById(id);
|
|
48
|
+
if (!frame) { console.error("eegdash viewer: output iframe " + id + " not found"); return; }
|
|
49
|
+
var payload = %(payload)s, origin = %(origin)s, files = null, pose = null;
|
|
50
|
+
function decode(b64) {
|
|
51
|
+
if (Uint8Array.fromBase64) return Uint8Array.fromBase64(b64);
|
|
52
|
+
var bin = atob(b64), out = new Uint8Array(bin.length);
|
|
53
|
+
for (var i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
function send(target) {
|
|
57
|
+
try {
|
|
58
|
+
if (!files) {
|
|
59
|
+
files = payload.files.map(function (f) { return new File([decode(f.b64)], f.name); });
|
|
60
|
+
pose = payload.pose ? "data:application/json;base64," + payload.pose : null;
|
|
61
|
+
payload = null;
|
|
62
|
+
}
|
|
63
|
+
frame.contentWindow.postMessage({ type: "eegdash-viewer:open", files: files, pose: pose }, target || origin);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
frame.insertAdjacentHTML("afterend", '<div style="font:12px system-ui;color:#b3261e">eegdash viewer: '
|
|
66
|
+
+ String(err.message).replace(/</g, "<") + "</div>");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
window.addEventListener("message", function onMessage(e) {
|
|
70
|
+
if (e.source === frame.contentWindow && e.data && e.data.type === "eegdash-viewer:ready") send(e.origin);
|
|
71
|
+
else if (!frame.isConnected) window.removeEventListener("message", onMessage);
|
|
72
|
+
});
|
|
73
|
+
frame.src = %(src)s; // after the listener, so "ready" can never precede it
|
|
74
|
+
})();
|
|
75
|
+
</script>"""
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def recording_files(recording: Path) -> tuple[list[Path], Path | None]:
|
|
79
|
+
"""``(files, pose)`` to inline for a recording: the header first, then the
|
|
80
|
+
split-format siblings, the BIDS-inherited ``_channels.tsv``/``_events.tsv``
|
|
81
|
+
(``mne_bids`` parses the name; plain names get none) and, separately, the
|
|
82
|
+
``<prefix>_desc-pose.json`` hand-pose sidecar next to it. Symlinks keep
|
|
83
|
+
their name (git-annex/datalad)."""
|
|
84
|
+
rec = Path(recording)
|
|
85
|
+
if not rec.exists():
|
|
86
|
+
raise ValueError(
|
|
87
|
+
f"{rec.name}: file not found (a datalad symlink may need `datalad get`)"
|
|
88
|
+
)
|
|
89
|
+
if (
|
|
90
|
+
rec.is_dir()
|
|
91
|
+
or rec.suffix.lower() not in EXTENSIONS
|
|
92
|
+
or rec.stem.endswith("_epo")
|
|
93
|
+
):
|
|
94
|
+
raise ValueError(
|
|
95
|
+
f"{rec.name}: the viewer opens raw recordings in {' '.join(sorted(EXTENSIONS))}"
|
|
96
|
+
)
|
|
97
|
+
sidecars: list[Path | None] = []
|
|
98
|
+
try:
|
|
99
|
+
bids = mne_bids.get_bids_path_from_fname(rec, check=False)
|
|
100
|
+
if bids.subject is not None: # hyphen-free names parse, but are not BIDS
|
|
101
|
+
sidecars = [
|
|
102
|
+
bids.find_matching_sidecar(
|
|
103
|
+
suffix=s, extension=".tsv", on_error="ignore"
|
|
104
|
+
)
|
|
105
|
+
for s in ("channels", "events")
|
|
106
|
+
]
|
|
107
|
+
except (
|
|
108
|
+
KeyError,
|
|
109
|
+
ValueError,
|
|
110
|
+
): # not a BIDS name / unknown entity somewhere in the tree
|
|
111
|
+
pass
|
|
112
|
+
files = [rec]
|
|
113
|
+
for p in [
|
|
114
|
+
rec.with_suffix(e) for e in _SIBLINGS.get(rec.suffix.lower(), ())
|
|
115
|
+
] + sidecars:
|
|
116
|
+
if p and p.is_file():
|
|
117
|
+
if p not in files:
|
|
118
|
+
files.append(p)
|
|
119
|
+
elif p and p.is_symlink(): # dangling: git-annex/datalad content not fetched
|
|
120
|
+
raise ValueError(f"{p.name}: dangling symlink (try `datalad get`)")
|
|
121
|
+
stem, _, token = rec.stem.rpartition("_")
|
|
122
|
+
pose = rec.with_name((stem if token in _BIDS else rec.stem) + "_desc-pose.json")
|
|
123
|
+
return files, pose if pose.is_file() else None
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def build_viewer_html(
|
|
127
|
+
recording: Path,
|
|
128
|
+
*,
|
|
129
|
+
height: int = 520,
|
|
130
|
+
cdn_url: str = CDN,
|
|
131
|
+
max_bytes: int = MAX_BYTES,
|
|
132
|
+
) -> str:
|
|
133
|
+
"""Viewer iframe + inlined bytes + bridge script for one recording."""
|
|
134
|
+
url = urlsplit(cdn_url)
|
|
135
|
+
if (
|
|
136
|
+
url.scheme not in ("http", "https")
|
|
137
|
+
or not url.netloc
|
|
138
|
+
or url.username
|
|
139
|
+
or url.query
|
|
140
|
+
or url.fragment
|
|
141
|
+
or url.path.endswith(("index.html", "index.htm"))
|
|
142
|
+
):
|
|
143
|
+
raise ValueError(
|
|
144
|
+
f"cdn_url must be the viewer's base http(s) URL, got {cdn_url!r}"
|
|
145
|
+
)
|
|
146
|
+
files, pose = recording_files(recording)
|
|
147
|
+
encoded = sum(
|
|
148
|
+
4 * -(-p.stat().st_size // 3) for p in files + ([pose] if pose else [])
|
|
149
|
+
)
|
|
150
|
+
if encoded > max_bytes:
|
|
151
|
+
raise ValueError(
|
|
152
|
+
f"{files[0].name}: {encoded / 2**20:.1f} MiB of base64 would be inlined into the "
|
|
153
|
+
f"notebook output (max_bytes={max_bytes / 2**20:.1f} MiB); crop/downsample or raise it"
|
|
154
|
+
)
|
|
155
|
+
rec = files[0]
|
|
156
|
+
# The viewer picks the recording by its *_<datatype>.<ext> name: plain names
|
|
157
|
+
# are posted as <stem>_eeg<ext>, an EEGLAB .fdt next to the posted .set name.
|
|
158
|
+
head = (
|
|
159
|
+
rec.name
|
|
160
|
+
if rec.stem.rpartition("_")[2] in _BIDS
|
|
161
|
+
else f"{rec.stem}_eeg{rec.suffix.lower()}"
|
|
162
|
+
)
|
|
163
|
+
names = [head] + [
|
|
164
|
+
head.rsplit("_", 1)[0] + "_eeg.fdt" if p.suffix.lower() == ".fdt" else p.name
|
|
165
|
+
for p in files[1:]
|
|
166
|
+
]
|
|
167
|
+
b64 = [base64.b64encode(p.read_bytes()).decode() for p in files]
|
|
168
|
+
literals = {
|
|
169
|
+
"id": f"eegdash-viewer-{uuid.uuid4().hex[:8]}",
|
|
170
|
+
"height": int(height),
|
|
171
|
+
"payload": {
|
|
172
|
+
"files": [{"name": n, "b64": b} for n, b in zip(names, b64)],
|
|
173
|
+
"pose": base64.b64encode(pose.read_bytes()).decode() if pose else None,
|
|
174
|
+
},
|
|
175
|
+
"origin": f"{url.scheme}://{url.netloc}",
|
|
176
|
+
"src": f"{url.geturl().rstrip('/')}/index.html?embed=1",
|
|
177
|
+
}
|
|
178
|
+
return _SCRIPT % {
|
|
179
|
+
k: json.dumps(v).replace("<", "\\u003c") for k, v in literals.items()
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def _recording(dataset, index: int) -> Path:
|
|
184
|
+
"""File behind ``dataset.datasets[index]``: the one its mne ``raw`` reads (a
|
|
185
|
+
data file maps back to its header; lazily downloading datasets fetch it when
|
|
186
|
+
``raw`` is accessed) or the recorded ``description["path"]``."""
|
|
187
|
+
ds = dataset.datasets[index]
|
|
188
|
+
names = [
|
|
189
|
+
Path(f)
|
|
190
|
+
for f in getattr(getattr(ds, "raw", None), "filenames", None) or ()
|
|
191
|
+
if isinstance(f, (str, os.PathLike))
|
|
192
|
+
]
|
|
193
|
+
if len(names) > 1:
|
|
194
|
+
raise ValueError(
|
|
195
|
+
f"{type(dataset).__name__}[{index}]: split recordings are not supported"
|
|
196
|
+
)
|
|
197
|
+
desc = getattr(ds, "description", None) # dict or pandas Series
|
|
198
|
+
recorded = desc.get("path") if desc is not None else None
|
|
199
|
+
path = (
|
|
200
|
+
names[0]
|
|
201
|
+
if names
|
|
202
|
+
else Path(recorded)
|
|
203
|
+
if isinstance(recorded, (str, os.PathLike))
|
|
204
|
+
else None
|
|
205
|
+
)
|
|
206
|
+
if path is None:
|
|
207
|
+
raise ValueError(
|
|
208
|
+
f"{type(dataset).__name__}[{index}] is not backed by a recording file"
|
|
209
|
+
)
|
|
210
|
+
header = path.with_suffix(_HEADER.get(path.suffix.lower(), path.suffix))
|
|
211
|
+
return header if header.is_file() else path
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def plot(
|
|
215
|
+
dataset,
|
|
216
|
+
index: int = 0,
|
|
217
|
+
*,
|
|
218
|
+
height: int = 520,
|
|
219
|
+
cdn_url: str = CDN,
|
|
220
|
+
max_bytes: int = MAX_BYTES,
|
|
221
|
+
):
|
|
222
|
+
"""Show one recording in the eegdash-viewer inside a Jupyter cell.
|
|
223
|
+
|
|
224
|
+
Serverless: the recording bytes (as on disk) are inlined in the output and
|
|
225
|
+
pushed to the viewer at ``cdn_url`` over ``postMessage``; the output renders
|
|
226
|
+
when the cell ran in your session or the notebook is trusted. A
|
|
227
|
+
``*_desc-pose.json`` sidecar next to the recording adds the synchronized
|
|
228
|
+
hand-pose panel. Needs IPython (soft dependency).
|
|
229
|
+
|
|
230
|
+
Parameters
|
|
231
|
+
----------
|
|
232
|
+
index : int
|
|
233
|
+
Recording to display.
|
|
234
|
+
height : int
|
|
235
|
+
Viewer height in pixels.
|
|
236
|
+
cdn_url : str
|
|
237
|
+
Base URL of a deployed eegdash-viewer.
|
|
238
|
+
max_bytes : int
|
|
239
|
+
Refuse to inline more than this much base64 (default 64 MiB); the
|
|
240
|
+
payload is saved with the notebook and, like any cell output, stays
|
|
241
|
+
referenced by IPython's ``Out`` history for the session.
|
|
242
|
+
|
|
243
|
+
Returns
|
|
244
|
+
-------
|
|
245
|
+
IPython.display.HTML
|
|
246
|
+
"""
|
|
247
|
+
ipython = _soft_import("IPython", purpose=f"{type(dataset).__name__}.plot()")
|
|
248
|
+
return ipython.display.HTML(
|
|
249
|
+
build_viewer_html(
|
|
250
|
+
_recording(dataset, index),
|
|
251
|
+
height=height,
|
|
252
|
+
cdn_url=cdn_url,
|
|
253
|
+
max_bytes=max_bytes,
|
|
254
|
+
)
|
|
255
|
+
)
|
|
@@ -32,6 +32,7 @@ from mne.utils.docs import deprecated
|
|
|
32
32
|
from torch.utils.data import ConcatDataset, Dataset, IterableDataset
|
|
33
33
|
from typing_extensions import TypeVar
|
|
34
34
|
|
|
35
|
+
from ._notebook_viewer import plot as _viewer_plot
|
|
35
36
|
from .bids.hub import HubDatasetMixin
|
|
36
37
|
from .bids.hub_io import _restore_nan_from_json
|
|
37
38
|
from .registry import register_dataset
|
|
@@ -1174,6 +1175,8 @@ class BaseConcatDataset(ConcatDataset, HubDatasetMixin, Generic[T]):
|
|
|
1174
1175
|
If True, defer computing cumulative sizes until length or item access.
|
|
1175
1176
|
"""
|
|
1176
1177
|
|
|
1178
|
+
plot = _viewer_plot # eegdash-viewer embed; a direct member so the API docs list it
|
|
1179
|
+
|
|
1177
1180
|
datasets: list[T]
|
|
1178
1181
|
|
|
1179
1182
|
def __init__(
|
|
@@ -40,7 +40,7 @@ def drop_path(
|
|
|
40
40
|
x : torch.Tensor
|
|
41
41
|
input tensor
|
|
42
42
|
drop_prob : float, optional
|
|
43
|
-
|
|
43
|
+
probability of dropping a path, by default 0.0
|
|
44
44
|
training : bool, optional
|
|
45
45
|
whether the model is in training mode, by default False
|
|
46
46
|
scale_by_keep : bool, optional
|
|
@@ -68,9 +68,10 @@ def drop_path(
|
|
|
68
68
|
shape = (x.shape[0],) + (1,) * (
|
|
69
69
|
x.ndim - 1
|
|
70
70
|
) # work with diff dim tensors, not just 2D ConvNets
|
|
71
|
-
|
|
71
|
+
probabilities = torch.full(shape, keep_prob, dtype=torch.float32, device=x.device)
|
|
72
|
+
random_tensor = torch.bernoulli(probabilities).to(dtype=x.dtype)
|
|
72
73
|
if keep_prob > 0.0 and scale_by_keep:
|
|
73
|
-
random_tensor
|
|
74
|
+
random_tensor = random_tensor / keep_prob
|
|
74
75
|
return x * random_tensor
|
|
75
76
|
|
|
76
77
|
|
|
@@ -40,9 +40,11 @@ from .medformer import MEDFormer
|
|
|
40
40
|
from .meta_neuromotor import MetaNeuromotorHand
|
|
41
41
|
from .msvtnet import MSVTNet
|
|
42
42
|
from .mvpformer import MVPFormer
|
|
43
|
+
from .neuropose import NeuroPose
|
|
43
44
|
from .patchedtransformer import PBT
|
|
44
45
|
from .reve import REVE
|
|
45
46
|
from .sccnet import SCCNet
|
|
47
|
+
from .sensingdynamics import SensingDynamics
|
|
46
48
|
from .shallow_fbcsp import ShallowFBCSPNet
|
|
47
49
|
from .signal_jepa import (
|
|
48
50
|
InterpolatedSignalJEPA,
|
|
@@ -71,6 +73,7 @@ from .util import (
|
|
|
71
73
|
models_mandatory_parameters,
|
|
72
74
|
positions_from_chs_info,
|
|
73
75
|
)
|
|
76
|
+
from .vemg2pose import VEMG2Pose
|
|
74
77
|
from .zuna import ZUNA
|
|
75
78
|
|
|
76
79
|
# Call this last in order to make sure the dataset list is populated with
|
|
@@ -107,6 +110,9 @@ __all__ = [
|
|
|
107
110
|
"EEGTCNet",
|
|
108
111
|
"DGCNN",
|
|
109
112
|
"EMG2QwertyNet",
|
|
113
|
+
"NeuroPose",
|
|
114
|
+
"SensingDynamics",
|
|
115
|
+
"VEMG2Pose",
|
|
110
116
|
"FBCNet",
|
|
111
117
|
"FBLightConvNet",
|
|
112
118
|
"FBMSNet",
|
|
@@ -196,7 +196,7 @@ class ATCNet(EEGModuleMixin, nn.Module):
|
|
|
196
196
|
num_heads : int
|
|
197
197
|
Number of attention heads, denoted H in table 1 of the paper [1]_.
|
|
198
198
|
Defaults to 2 as in [1]_.
|
|
199
|
-
|
|
199
|
+
att_drop_prob : float
|
|
200
200
|
Dropout probability used in the attention block, denoted pa in table 1
|
|
201
201
|
of the paper [1]_. Defaults to 0.5 as in [1]_.
|
|
202
202
|
tcn_depth : int
|
|
@@ -206,7 +206,7 @@ class ATCNet(EEGModuleMixin, nn.Module):
|
|
|
206
206
|
tcn_kernel_size : int
|
|
207
207
|
Temporal kernel size used in TCN block, denoted Kt in table 1 of the
|
|
208
208
|
paper [1]_. Defaults to 4 as in [1]_.
|
|
209
|
-
|
|
209
|
+
tcn_drop_prob : float
|
|
210
210
|
Dropout probability used in the TCN block, denoted pt in table 1
|
|
211
211
|
of the paper [1]_. Defaults to 0.3 as in [1]_.
|
|
212
212
|
tcn_activation : torch.nn.Module
|
|
@@ -88,10 +88,6 @@ class AttnSleep(EEGModuleMixin, nn.Module):
|
|
|
88
88
|
If True, return the features, i.e. the output of the feature extractor
|
|
89
89
|
(before the final linear layer). If False, pass the features through
|
|
90
90
|
the final linear layer.
|
|
91
|
-
n_classes : int
|
|
92
|
-
Alias for `n_outputs`.
|
|
93
|
-
input_size_s : float
|
|
94
|
-
Alias for `input_window_seconds`.
|
|
95
91
|
activation : nn.Module, default=nn.ReLU
|
|
96
92
|
Activation function class to apply in the AFR block and the TCE
|
|
97
93
|
feed-forward block. Should be a PyTorch activation
|
|
@@ -80,7 +80,7 @@ class _BraindecodeDocstringMeta(NumpyDocstringInheritanceInitMeta):
|
|
|
80
80
|
unwrapped function and correctly inherits ``cls.__doc__``.
|
|
81
81
|
"""
|
|
82
82
|
|
|
83
|
-
def __init__(cls, class_name, class_bases, class_dict):
|
|
83
|
+
def __init__(cls, class_name, class_bases, class_dict, **kwargs):
|
|
84
84
|
super().__init__(class_name, class_bases, class_dict)
|
|
85
85
|
# Only wrap subclass __init__s, not EEGModuleMixin itself.
|
|
86
86
|
# Wrapping the mixin would cause super().__init__() calls to
|
|
@@ -214,6 +214,8 @@ class EEGModuleMixin(_BaseHubMixin, metaclass=_BraindecodeDocstringMeta):
|
|
|
214
214
|
__jit_unused_properties__ = ["chs_info"]
|
|
215
215
|
|
|
216
216
|
def __init_subclass__(cls, **kwargs):
|
|
217
|
+
license = kwargs.pop("license", "bsd-3-clause")
|
|
218
|
+
|
|
217
219
|
# TorchScript only honours ``__jit_ignored_attributes__`` for
|
|
218
220
|
# properties defined directly on the concrete class: it collects them
|
|
219
221
|
# with ``vars(type(module))``, which skips inherited ones. Rebinding
|
|
@@ -253,8 +255,6 @@ class EEGModuleMixin(_BaseHubMixin, metaclass=_BraindecodeDocstringMeta):
|
|
|
253
255
|
)
|
|
254
256
|
repo_url = kwargs.pop("repo_url", "https://braindecode.org")
|
|
255
257
|
library_name = kwargs.pop("library_name", "braindecode")
|
|
256
|
-
license = kwargs.pop("license", "bsd-3-clause")
|
|
257
|
-
|
|
258
258
|
# Register a coder so that type[nn.Module] parameters
|
|
259
259
|
# (e.g. activation=nn.ELU) are serialized as importable
|
|
260
260
|
# strings in config.json and decoded back on load.
|
|
@@ -519,6 +519,31 @@ class EEGModuleMixin(_BaseHubMixin, metaclass=_BraindecodeDocstringMeta):
|
|
|
519
519
|
resolve_type_kwargs(cls, config)
|
|
520
520
|
return cls(**config)
|
|
521
521
|
|
|
522
|
+
def _set_n_outputs(self, n_outputs: int) -> None:
|
|
523
|
+
"""Record a new ``n_outputs`` on the model and its saved configs.
|
|
524
|
+
|
|
525
|
+
Helper for :meth:`reset_head` implementations: validates the value,
|
|
526
|
+
then keeps the ``n_outputs`` property, the braindecode init kwargs
|
|
527
|
+
and the Hugging Face hub config in sync, so a re-serialized model
|
|
528
|
+
reports the head it actually has.
|
|
529
|
+
|
|
530
|
+
Parameters
|
|
531
|
+
----------
|
|
532
|
+
n_outputs : int
|
|
533
|
+
New number of outputs. Must be positive.
|
|
534
|
+
|
|
535
|
+
.. versionadded:: 1.8
|
|
536
|
+
"""
|
|
537
|
+
if n_outputs <= 0:
|
|
538
|
+
raise ValueError(f"n_outputs must be positive; got {n_outputs}.")
|
|
539
|
+
self._n_outputs = n_outputs
|
|
540
|
+
for config in (
|
|
541
|
+
getattr(self, "_braindecode_init_kwargs", None),
|
|
542
|
+
getattr(self, "_hub_mixin_config", None),
|
|
543
|
+
):
|
|
544
|
+
if config is not None and "n_outputs" in config:
|
|
545
|
+
config["n_outputs"] = n_outputs
|
|
546
|
+
|
|
522
547
|
def reset_head(self, n_outputs):
|
|
523
548
|
"""Replace the classification head for a new number of outputs.
|
|
524
549
|
|
|
@@ -25,7 +25,7 @@ from braindecode.modules.layers import SubjectLayers
|
|
|
25
25
|
__all__ = ["BrainModule"]
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
class BrainModule(EEGModuleMixin, nn.Module):
|
|
28
|
+
class BrainModule(EEGModuleMixin, nn.Module, license="cc-by-nc-4.0"):
|
|
29
29
|
r"""BrainModule from [brainmagick]_, also known as SimpleConv.
|
|
30
30
|
|
|
31
31
|
A dilated convolutional encoder for EEG decoding, using residual
|
|
@@ -24,7 +24,7 @@ from braindecode.modules import (
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
class CTNet(EEGModuleMixin, nn.Module):
|
|
27
|
+
class CTNet(EEGModuleMixin, nn.Module, license="mit"):
|
|
28
28
|
r"""CTNet from Zhao, W et al (2024) [ctnet]_.
|
|
29
29
|
|
|
30
30
|
:bdg-success:`Convolution` :bdg-info:`Attention/Transformer`
|
|
@@ -59,16 +59,19 @@ class CTNet(EEGModuleMixin, nn.Module):
|
|
|
59
59
|
|
|
60
60
|
Parameters
|
|
61
61
|
----------
|
|
62
|
-
|
|
63
|
-
Activation function to use in the
|
|
62
|
+
activation_patch : nn.Module, default=nn.ELU
|
|
63
|
+
Activation function to use in the convolutional patch embedding.
|
|
64
|
+
activation_transformer : nn.Module, default=nn.GELU
|
|
65
|
+
Activation function to use in the Transformer encoder.
|
|
64
66
|
num_heads : int, default=4
|
|
65
67
|
Number of attention heads in the Transformer encoder.
|
|
66
|
-
embed_dim : int or None, default=
|
|
68
|
+
embed_dim : int or None, default=40
|
|
67
69
|
Embedding size (dimensionality) for the Transformer encoder.
|
|
68
70
|
num_layers : int, default=6
|
|
69
71
|
Number of encoder layers in the Transformer.
|
|
70
|
-
n_filters_time : int, default=
|
|
71
|
-
Number of temporal filters in the first convolutional layer.
|
|
72
|
+
n_filters_time : int or None, default=None
|
|
73
|
+
Number of temporal filters in the first convolutional layer. Inferred
|
|
74
|
+
from ``embed_dim`` and ``depth_multiplier`` when left at ``None``.
|
|
72
75
|
kernel_size : int, default=64
|
|
73
76
|
Kernel size for the temporal convolutional layer.
|
|
74
77
|
depth_multiplier : int, default=2
|
|
@@ -77,7 +80,7 @@ class CTNet(EEGModuleMixin, nn.Module):
|
|
|
77
80
|
Pooling size for the first average pooling layer.
|
|
78
81
|
pool_size_2 : int, default=8
|
|
79
82
|
Pooling size for the second average pooling layer.
|
|
80
|
-
|
|
83
|
+
cnn_drop_prob : float, default=0.3
|
|
81
84
|
Dropout probability after convolutional layers.
|
|
82
85
|
att_positional_drop_prob : float, default=0.1
|
|
83
86
|
Dropout probability for the positional encoding in the Transformer.
|
|
@@ -22,7 +22,7 @@ from braindecode.modules import ChannelMerger, Perceiver, SimpleConv
|
|
|
22
22
|
from braindecode.modules.dance_modules import DanceDetrDecoder
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
class DANCE(EEGModuleMixin, nn.Module):
|
|
25
|
+
class DANCE(EEGModuleMixin, nn.Module, license="mit"):
|
|
26
26
|
r"""DANCE from Lévy et al (2026) [dance]_.
|
|
27
27
|
|
|
28
28
|
:bdg-success:`Convolution` :bdg-info:`Attention/Transformer` :bdg-dark-line:`Channel`
|
|
@@ -349,8 +349,7 @@ class DANCE(EEGModuleMixin, nn.Module):
|
|
|
349
349
|
|
|
350
350
|
def reset_head(self, n_outputs: int) -> None:
|
|
351
351
|
"""Replace the dense head and the DETR class head for a new ``n_outputs``."""
|
|
352
|
-
|
|
353
|
-
raise ValueError(f"n_outputs must be positive; got {n_outputs}.")
|
|
352
|
+
self._set_n_outputs(n_outputs)
|
|
354
353
|
old = self.final_layer
|
|
355
354
|
self.final_layer = nn.Linear(old.in_features, n_outputs).to(
|
|
356
355
|
device=old.weight.device, dtype=old.weight.dtype
|
|
@@ -359,10 +358,3 @@ class DANCE(EEGModuleMixin, nn.Module):
|
|
|
359
358
|
self.decoder.class_head = nn.Linear(ch.in_features, n_outputs).to(
|
|
360
359
|
device=ch.weight.device, dtype=ch.weight.dtype
|
|
361
360
|
)
|
|
362
|
-
self._n_outputs = n_outputs
|
|
363
|
-
init_kwargs = getattr(self, "_braindecode_init_kwargs", None)
|
|
364
|
-
if init_kwargs is not None and "n_outputs" in init_kwargs:
|
|
365
|
-
init_kwargs["n_outputs"] = n_outputs
|
|
366
|
-
hub_config = getattr(self, "_hub_mixin_config", None)
|
|
367
|
-
if hub_config is not None and "n_outputs" in hub_config:
|
|
368
|
-
hub_config["n_outputs"] = n_outputs
|
|
@@ -185,7 +185,7 @@ class EEGConformer(EEGModuleMixin, nn.Module):
|
|
|
185
185
|
31, pp.710-719. https://ieeexplore.ieee.org/document/9991178
|
|
186
186
|
.. [ConformerCode] Song, Y., Zheng, Q., Liu, B. and Gao, X., 2022. EEG
|
|
187
187
|
conformer: Convolutional transformer for EEG decoding and visualization.
|
|
188
|
-
https://github.com/eeyhsong/EEG-Conformer
|
|
188
|
+
https://github.com/eeyhsong/EEG-Conformer
|
|
189
189
|
"""
|
|
190
190
|
|
|
191
191
|
def __init__(
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
# Authors: Sarthak Tayal <sarthaktayal2@gmail.com>
|
|
9
|
+
# License: Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
|
|
9
10
|
|
|
10
11
|
import torch
|
|
11
12
|
from torch import nn
|
|
@@ -48,7 +49,7 @@ class _EEGMinerFeatures(nn.Module):
|
|
|
48
49
|
return x[:, self.triu_row, self.triu_col, :]
|
|
49
50
|
|
|
50
51
|
|
|
51
|
-
class EEGMiner(EEGModuleMixin, nn.Module):
|
|
52
|
+
class EEGMiner(EEGModuleMixin, nn.Module, license="cc-by-nc-4.0"):
|
|
52
53
|
r"""EEGMiner from Ludwig et al (2024) [eegminer]_.
|
|
53
54
|
|
|
54
55
|
:bdg-success:`Convolution` :bdg-warning:`Interpretability`
|