diff --git a/docs/source/whats_new.rst b/docs/source/whats_new.rst index 6a322032b..053384bef 100644 --- a/docs/source/whats_new.rst +++ b/docs/source/whats_new.rst @@ -21,6 +21,7 @@ Enhancements - Adding cache option to the evaluation (:gh:`517` by `Bruno Aristimunha`_) - Option to interpolate channel in paradigms' `match_all` method (:gh:`480` by `Gregoire Cattan`_) - Adding leave k-Subjects out evaluations (:gh:`470` by `Bruno Aristimunha`_) +- Update Braindecode dependency to 0.8 (:gh:`542` by `Pierre Guetschel`_) Bugs ~~~~ diff --git a/examples/load_model.py b/examples/load_model.py index a35bb2111..4d96ae51d 100644 --- a/examples/load_model.py +++ b/examples/load_model.py @@ -16,13 +16,12 @@ from braindecode import EEGClassifier from braindecode.models import EEGInception from scikeras.wrappers import KerasClassifier -from sklearn.pipeline import Pipeline +from sklearn.pipeline import Pipeline, make_pipeline from skorch.callbacks import EarlyStopping, EpochScoring from skorch.dataset import ValidSplit from moabb import set_log_level from moabb.pipelines.features import StandardScaler_Epoch -from moabb.pipelines.utils_pytorch import BraindecodeDatasetLoader, InputShapeSetterEEG from moabb.utils import setup_seed @@ -70,9 +69,6 @@ ############################################################################### # Loading the PyTorch model -# Set EEG Inception model -model = EEGInception(in_channels=22, n_classes=2) - # Hyperparameter LEARNING_RATE = 0.0001 WEIGHT_DECAY = 0 @@ -84,8 +80,7 @@ # Define a Skorch classifier clf = EEGClassifier( - module=model, - criterion=torch.nn.CrossEntropyLoss, + module=EEGInception, optimizer=torch.optim.Adam, optimizer__lr=LEARNING_RATE, batch_size=BATCH_SIZE, @@ -99,9 +94,6 @@ EpochScoring( scoring="accuracy", on_train=False, name="valid_acc", lower_is_better=False ), - InputShapeSetterEEG( - params_list=["in_channels", "input_window_samples", "n_classes"], - ), ], verbose=VERBOSE, # Not printing the results for each epoch ) @@ -114,8 +106,5 @@ clf.load_params(f_params=f_params, f_optimizer=f_optimizer, f_history=f_history) -# Create the dataset -create_dataset = BraindecodeDatasetLoader(drop_last_window=False) - # Create the pipelines -pipes_pytorch = Pipeline([("Braindecode_dataset", create_dataset), ("EEGInception", clf)]) +pipes_pytorch = make_pipeline(clf) diff --git a/examples/pipelines_braindecode/braindecode_EEGInception.py b/examples/pipelines_braindecode/braindecode_EEGInception.py index b18e8033f..0326e4bab 100644 --- a/examples/pipelines_braindecode/braindecode_EEGInception.py +++ b/examples/pipelines_braindecode/braindecode_EEGInception.py @@ -6,7 +6,6 @@ from skorch.dataset import ValidSplit from moabb.pipelines.features import Resampler_Epoch -from moabb.pipelines.utils_pytorch import BraindecodeDatasetLoader, InputShapeSetterEEG # Set up GPU if it is there @@ -22,16 +21,9 @@ EPOCH = 10 PATIENCE = 3 -# Create the dataset -create_dataset = BraindecodeDatasetLoader() - -# Set random Model -model = EEGInception(in_channels=1, n_classes=2, input_window_samples=100) - # Define a Skorch classifier clf = EEGClassifier( - module=model, - criterion=torch.nn.CrossEntropyLoss, + module=EEGInception, optimizer=torch.optim.Adam, optimizer__lr=LEARNING_RATE, batch_size=BATCH_SIZE, @@ -46,9 +38,6 @@ EpochScoring( scoring="accuracy", on_train=False, name="valid_acc", lower_is_better=False ), - InputShapeSetterEEG( - params_list=["in_channels", "input_window_samples", "n_classes"], - ), ], verbose=VERBOSE, # Not printing the results for each epoch ) @@ -57,7 +46,6 @@ pipes = Pipeline( [ ("resample", Resampler_Epoch(128)), - ("braindecode_dataset", create_dataset), ("EEGInception", clf), ] ) diff --git a/examples/pipelines_braindecode/braindecode_EEGNetv4.py b/examples/pipelines_braindecode/braindecode_EEGNetv4.py index 3aba86787..0ed3ed312 100644 --- a/examples/pipelines_braindecode/braindecode_EEGNetv4.py +++ b/examples/pipelines_braindecode/braindecode_EEGNetv4.py @@ -6,7 +6,6 @@ from skorch.dataset import ValidSplit from moabb.pipelines.features import Resampler_Epoch -from moabb.pipelines.utils_pytorch import BraindecodeDatasetLoader, InputShapeSetterEEG # Set up GPU if it is there @@ -22,16 +21,9 @@ EPOCH = 10 PATIENCE = 3 -# Create the dataset -create_dataset = BraindecodeDatasetLoader() - -# Set random Model -model = EEGNetv4(in_chans=1, n_classes=2, input_window_samples=100) - # Define a Skorch classifier clf = EEGClassifier( - module=model, - criterion=torch.nn.CrossEntropyLoss, + module=EEGNetv4, optimizer=torch.optim.Adam, optimizer__lr=LEARNING_RATE, batch_size=BATCH_SIZE, @@ -46,9 +38,6 @@ EpochScoring( scoring="accuracy", on_train=False, name="valid_acc", lower_is_better=False ), - InputShapeSetterEEG( - params_list=["in_chans", "input_window_samples", "n_classes"], - ), ], verbose=VERBOSE, # Not printing the results for each epoch ) @@ -57,7 +46,6 @@ pipes = Pipeline( [ ("resample", Resampler_Epoch(128)), - ("braindecode_dataset", create_dataset), ("EEGNetv4", clf), ] ) diff --git a/examples/pipelines_braindecode/braindecode_ShallowFBCSPNet.py b/examples/pipelines_braindecode/braindecode_ShallowFBCSPNet.py index 79c8f2bf8..ae2e8519e 100644 --- a/examples/pipelines_braindecode/braindecode_ShallowFBCSPNet.py +++ b/examples/pipelines_braindecode/braindecode_ShallowFBCSPNet.py @@ -6,7 +6,6 @@ from skorch.dataset import ValidSplit from moabb.pipelines.features import Resampler_Epoch -from moabb.pipelines.utils_pytorch import BraindecodeDatasetLoader, InputShapeSetterEEG # Set up GPU if it is there @@ -22,18 +21,10 @@ EPOCH = 5 PATIENCE = 3 -# Create the dataset -create_dataset = BraindecodeDatasetLoader() - -# Set random Model -model = ShallowFBCSPNet( - in_chans=1, n_classes=2, input_window_samples=100, final_conv_length="auto" -) - # Define a Skorch classifier clf = EEGClassifier( - module=model, - criterion=torch.nn.CrossEntropyLoss, + module=ShallowFBCSPNet, + module__final_conv_length="auto", optimizer=torch.optim.Adam, optimizer__lr=LEARNING_RATE, batch_size=BATCH_SIZE, @@ -48,9 +39,6 @@ EpochScoring( scoring="accuracy", on_train=False, name="valid_acc", lower_is_better=False ), - InputShapeSetterEEG( - params_list=["in_chans", "input_window_samples", "n_classes"], - ), ], verbose=VERBOSE, # Not printing the results for each epoch ) @@ -59,7 +47,6 @@ pipes = Pipeline( [ ("resample", Resampler_Epoch(250)), - ("braindecode_dataset", create_dataset), ("ShallowFBCSPNet", clf), ] ) diff --git a/examples/plot_braindecode.py b/examples/plot_braindecode.py index 06ff06939..e845dbfcb 100644 --- a/examples/plot_braindecode.py +++ b/examples/plot_braindecode.py @@ -16,14 +16,13 @@ import torch from braindecode import EEGClassifier from braindecode.models import EEGNetv4 -from sklearn.pipeline import Pipeline +from sklearn.pipeline import make_pipeline from skorch.callbacks import EarlyStopping, EpochScoring from skorch.dataset import ValidSplit from moabb.datasets import BNCI2014_001 from moabb.evaluations import CrossSessionEvaluation from moabb.paradigms import MotorImagery -from moabb.pipelines.utils_pytorch import BraindecodeDatasetLoader, InputShapeSetterEEG from moabb.utils import setup_seed @@ -81,8 +80,6 @@ ) subjects = [1] X, _, _ = paradigm.get_data(dataset=dataset, subjects=subjects) -# Define Transformer of Dataset compatible with Brain Decode -create_dataset = BraindecodeDatasetLoader() ############################################################################## # Create Pipelines @@ -94,16 +91,9 @@ # callbacks InputShapeSetterEEG, where we have to specify the correct name of the parameter. # Here, we will use the EEGNet v4 model [1]_ . -model = EEGNetv4(in_chans=1, n_classes=1, input_window_samples=100) - -# Send model to GPU -if cuda: - model.cuda() - # Define a Skorch classifier clf = EEGClassifier( - module=model, - criterion=torch.nn.CrossEntropyLoss, + module=EEGNetv4, optimizer=torch.optim.Adam, optimizer__lr=LEARNING_RATE, batch_size=BATCH_SIZE, @@ -118,16 +108,13 @@ EpochScoring( scoring="accuracy", on_train=False, name="valid_acc", lower_is_better=False ), - InputShapeSetterEEG( - params_list=["in_chans", "input_window_samples", "n_classes"], - ), ], verbose=1, # Not printing the results for each epoch ) # Create the pipelines pipes = {} -pipes["EEGNetV4"] = Pipeline([("Braindecode_dataset", create_dataset), ("Net", clf)]) +pipes["EEGNetV4"] = make_pipeline(clf) ############################################################################## # Evaluation diff --git a/poetry.lock b/poetry.lock index bff725591..c8aa17845 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "absl-py" version = "2.0.0" description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -16,7 +15,6 @@ files = [ name = "accessible-pygments" version = "0.0.4" description = "A collection of accessible pygments styles" -category = "dev" optional = false python-versions = "*" files = [ @@ -31,7 +29,6 @@ pygments = ">=1.5" name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -43,7 +40,6 @@ files = [ name = "arrow" version = "1.3.0" description = "Better dates & times for Python" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -57,13 +53,12 @@ types-python-dateutil = ">=2.8.10" [package.extras] doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (>=1.0.0,<2.0.0)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (>=3.0.0,<4.0.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] [[package]] name = "astunparse" version = "1.6.3" description = "An AST unparser for Python" -category = "main" optional = true python-versions = "*" files = [ @@ -79,7 +74,6 @@ wheel = ">=0.23.0,<1.0" name = "babel" version = "2.13.0" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -97,7 +91,6 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" -category = "dev" optional = false python-versions = ">=3.6.0" files = [ @@ -114,30 +107,38 @@ lxml = ["lxml"] [[package]] name = "braindecode" -version = "0.7" -description = "A deep learning toolbox to decode raw time-domain EEG." -category = "main" +version = "0.8.1" +description = "Deep learning software to decode EEG, ECG or MEG signals" optional = true -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "Braindecode-0.7-py3-none-any.whl", hash = "sha256:e53555cbea75e35b6dc089ef3d7f769cab6e4fa129b8cec6ad54bff19492c19a"}, - {file = "Braindecode-0.7.tar.gz", hash = "sha256:e2bca3d096b70b041d7b30ca2dfeaffae79ea722a4578cee04c9864ec07effce"}, + {file = "braindecode-0.8.1-py3-none-any.whl", hash = "sha256:6c2a571095a6ca366ade93a1a12bafce3225ce7d395eca6f7e2eb66edb5dd7da"}, + {file = "braindecode-0.8.1.tar.gz", hash = "sha256:e80515c3d20a80f16800770936d1eb0012de15830a8175dce376256bdaf928e7"}, ] [package.dependencies] +docstring-inheritance = "*" +einops = "*" h5py = "*" +joblib = "*" matplotlib = "*" mne = "*" numpy = "*" pandas = "*" scipy = "*" skorch = "*" +torch = "*" +torchinfo = "*" + +[package.extras] +docs = ["ipython", "lightning", "memory-profiler", "numpydoc", "pillow", "pre-commit", "pydata-sphinx-theme", "seaborn", "sphinx-design", "sphinx-gallery", "sphinx-rtd-theme"] +moabb = ["moabb (>=1.0.0)"] +tests = ["codecov", "pytest", "pytest-cases", "pytest-cov"] [[package]] name = "cachetools" version = "5.3.1" description = "Extensible memoizing collections and decorators" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -149,7 +150,6 @@ files = [ name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -161,7 +161,6 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -173,7 +172,6 @@ files = [ name = "charset-normalizer" version = "3.3.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -273,7 +271,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -288,7 +285,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "codecarbon" version = "2.3.1" description = "" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -315,7 +311,6 @@ viz = ["dash", "dash-bootstrap-components (<1.0.0)", "fire"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -327,7 +322,6 @@ files = [ name = "contourpy" version = "1.1.1" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -399,7 +393,6 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] name = "coverage" version = "7.3.2" description = "Code coverage measurement for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -464,7 +457,6 @@ toml = ["tomli"] name = "cycler" version = "0.12.1" description = "Composable style cycles" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -480,7 +472,6 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -492,7 +483,6 @@ files = [ name = "distlib" version = "0.3.7" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -500,11 +490,24 @@ files = [ {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, ] +[[package]] +name = "docstring-inheritance" +version = "2.1.2" +description = "Avoid writing and maintaining duplicated docstrings." +optional = true +python-versions = "<3.13,>=3.8" +files = [ + {file = "docstring-inheritance-2.1.2.tar.gz", hash = "sha256:ac9af95a7b06a305d43720274d0e62523d23f835bf94ce2bb814687e6fe3957b"}, + {file = "docstring_inheritance-2.1.2-py3-none-any.whl", hash = "sha256:05c8e3ef4c308406e66345b6d583df48ec1803ae90ae39cb7be03a78ac8d88d1"}, +] + +[package.extras] +test = ["covdefaults", "pytest", "pytest-cov"] + [[package]] name = "docutils" version = "0.18.1" description = "Docutils -- Python Documentation Utilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -516,7 +519,6 @@ files = [ name = "edflib-python" version = "1.0.8" description = "Library to read/write EDF+/BDF+ files written in pure Python by the same author as the original EDFlib." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -527,11 +529,21 @@ files = [ [package.dependencies] numpy = ">=1.17" +[[package]] +name = "einops" +version = "0.7.0" +description = "A new flavour of deep learning operations" +optional = true +python-versions = ">=3.8" +files = [ + {file = "einops-0.7.0-py3-none-any.whl", hash = "sha256:0f3096f26b914f465f6ff3c66f5478f9a5e380bb367ffc6493a68143fbbf1fd1"}, + {file = "einops-0.7.0.tar.gz", hash = "sha256:b2b04ad6081a3b227080c9bf5e3ace7160357ff03043cd66cc5b2319eb7031d1"}, +] + [[package]] name = "exceptiongroup" version = "1.1.3" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -546,7 +558,6 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.12.4" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -563,7 +574,6 @@ typing = ["typing-extensions (>=4.7.1)"] name = "flatbuffers" version = "23.5.26" description = "The FlatBuffers serialization format for Python" -category = "main" optional = true python-versions = "*" files = [ @@ -575,7 +585,6 @@ files = [ name = "fonttools" version = "4.43.1" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -641,7 +650,6 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "fuzzywuzzy" version = "0.18.0" description = "Fuzzy string matching in python" -category = "main" optional = true python-versions = "*" files = [ @@ -656,7 +664,6 @@ speedup = ["python-levenshtein (>=0.12)"] name = "gast" version = "0.4.0" description = "Python AST that abstracts the underlying Python version" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -668,7 +675,6 @@ files = [ name = "google-auth" version = "2.23.3" description = "Google Authentication Library" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -692,7 +698,6 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] name = "google-auth-oauthlib" version = "1.0.0" description = "Google Authentication Library" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -711,7 +716,6 @@ tool = ["click (>=6.0.0)"] name = "google-pasta" version = "0.2.0" description = "pasta is an AST-based Python refactoring library" -category = "main" optional = true python-versions = "*" files = [ @@ -727,7 +731,6 @@ six = "*" name = "grpcio" version = "1.59.0" description = "HTTP/2-based RPC framework" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -794,7 +797,6 @@ protobuf = ["grpcio-tools (>=1.59.0)"] name = "h5py" version = "3.8.0" description = "Read and write HDF5 files from Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -832,7 +834,6 @@ numpy = ">=1.14.5" name = "identify" version = "2.5.30" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -847,7 +848,6 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -859,7 +859,6 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -871,7 +870,6 @@ files = [ name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -891,7 +889,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "importlib-resources" version = "6.1.0" description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -910,7 +907,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -922,7 +918,6 @@ files = [ name = "jax" version = "0.4.13" description = "Differentiate, compile, and transform Numpy code." -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -953,7 +948,6 @@ tpu = ["jaxlib (==0.4.13)", "libtpu-nightly (==0.1.dev20230622)"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -971,7 +965,6 @@ i18n = ["Babel (>=2.7)"] name = "joblib" version = "1.3.2" description = "Lightweight pipelining with Python functions" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -983,7 +976,6 @@ files = [ name = "keras" version = "2.12.0" description = "Deep learning for humans." -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -994,7 +986,6 @@ files = [ name = "kiwisolver" version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1108,7 +1099,6 @@ files = [ name = "libclang" version = "15.0.6.1" description = "Clang Python Bindings, mirrored from the official LLVM repo: https://github.com/llvm/llvm-project/tree/main/clang/bindings/python, to make the installation process easier." -category = "main" optional = true python-versions = "*" files = [ @@ -1127,7 +1117,6 @@ files = [ name = "m2r2" version = "0.3.2" description = "Markdown and reStructuredText in a single file." -category = "dev" optional = false python-versions = "*" files = [ @@ -1143,7 +1132,6 @@ mistune = "0.8.4" name = "markdown" version = "3.5" description = "Python implementation of John Gruber's Markdown." -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -1162,7 +1150,6 @@ testing = ["coverage", "pyyaml"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1186,16 +1173,6 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1232,7 +1209,6 @@ files = [ name = "matplotlib" version = "3.7.3" description = "Python plotting package" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1302,7 +1278,6 @@ setuptools_scm = ">=7" name = "memory-profiler" version = "0.61.0" description = "A module for monitoring memory usage of a python program" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1317,7 +1292,6 @@ psutil = "*" name = "mistune" version = "0.8.4" description = "The fastest markdown parser in pure Python" -category = "dev" optional = false python-versions = "*" files = [ @@ -1329,7 +1303,6 @@ files = [ name = "ml-dtypes" version = "0.2.0" description = "" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1366,7 +1339,6 @@ dev = ["absl-py", "pyink", "pylint (>=2.6.0)", "pytest", "pytest-xdist"] name = "mne" version = "1.5.1" description = "MNE-Python project for MEG and EEG data analysis." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1393,7 +1365,6 @@ test = ["EDFlib-Python", "black", "check-manifest", "codespell", "eeglabio", "im name = "mne-bids" version = "0.13" description = "MNE-BIDS: Organizing MEG, EEG, and iEEG data according to the BIDS specification and facilitating their analysis with MNE-Python" -category = "main" optional = false python-versions = "~=3.8" files = [ @@ -1413,7 +1384,6 @@ full = ["EDFlib-Python (>=1.0.6)", "matplotlib (>=3.4.0)", "nibabel (>=3.2.1)", name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -1428,7 +1398,6 @@ setuptools = "*" name = "numpy" version = "1.24.3" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1466,7 +1435,6 @@ files = [ name = "numpydoc" version = "1.6.0" description = "Sphinx extension to support docstrings in Numpy format" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1489,7 +1457,6 @@ test = ["matplotlib", "pytest", "pytest-cov"] name = "nvidia-cublas-cu11" version = "11.10.3.66" description = "CUBLAS native runtime libraries" -category = "main" optional = true python-versions = ">=3" files = [ @@ -1505,7 +1472,6 @@ wheel = "*" name = "nvidia-cuda-nvrtc-cu11" version = "11.7.99" description = "NVRTC native runtime libraries" -category = "main" optional = true python-versions = ">=3" files = [ @@ -1522,7 +1488,6 @@ wheel = "*" name = "nvidia-cuda-runtime-cu11" version = "11.7.99" description = "CUDA Runtime native Libraries" -category = "main" optional = true python-versions = ">=3" files = [ @@ -1538,7 +1503,6 @@ wheel = "*" name = "nvidia-cudnn-cu11" version = "8.5.0.96" description = "cuDNN runtime libraries" -category = "main" optional = true python-versions = ">=3" files = [ @@ -1554,7 +1518,6 @@ wheel = "*" name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1571,7 +1534,6 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "opt-einsum" version = "3.3.0" description = "Optimizing numpys einsum function" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -1590,7 +1552,6 @@ tests = ["pytest", "pytest-cov", "pytest-pep8"] name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1602,7 +1563,6 @@ files = [ name = "pandas" version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1651,7 +1611,6 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] name = "pillow" version = "10.1.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1719,7 +1678,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "platformdirs" version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1735,7 +1693,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1751,7 +1708,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pooch" version = "1.7.0" description = "\"Pooch manages your Python library's sample data files: it automatically downloads and stores them in a local directory, with support for versioning and corruption checks.\"" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1773,7 +1729,6 @@ xxhash = ["xxhash (>=1.4.3)"] name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1792,7 +1747,6 @@ virtualenv = ">=20.10.0" name = "prometheus-client" version = "0.17.1" description = "Python client for the Prometheus monitoring system." -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1807,7 +1761,6 @@ twisted = ["twisted"] name = "protobuf" version = "4.24.4" description = "" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1830,7 +1783,6 @@ files = [ name = "psutil" version = "5.9.6" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -1859,7 +1811,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "py-cpuinfo" version = "9.0.0" description = "Get CPU info with pure Python" -category = "main" optional = true python-versions = "*" files = [ @@ -1871,7 +1822,6 @@ files = [ name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1883,7 +1833,6 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1898,7 +1847,6 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pydata-sphinx-theme" version = "0.13.3" description = "Bootstrap-based Sphinx theme from the PyData community" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1925,7 +1873,6 @@ test = ["codecov", "pytest", "pytest-cov", "pytest-regressions"] name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1940,7 +1887,6 @@ plugins = ["importlib-metadata"] name = "pynvml" version = "11.5.0" description = "Python Bindings for the NVIDIA Management Library" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1952,7 +1898,6 @@ files = [ name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -1967,7 +1912,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyriemann" version = "0.5" description = "Biosignals classification with Riemannian geometry" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1988,7 +1932,6 @@ tests = ["flake8", "pytest", "seaborn"] name = "pytest" version = "7.4.2" description = "pytest: simple powerful testing with Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2011,7 +1954,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2026,7 +1968,6 @@ six = ">=1.5" name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -2038,7 +1979,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2060,6 +2000,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -2098,7 +2039,6 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2120,7 +2060,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2139,7 +2078,6 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = true python-versions = ">=3.6,<4" files = [ @@ -2154,7 +2092,6 @@ pyasn1 = ">=0.1.3" name = "scikeras" version = "0.12.0" description = "Scikit-Learn API wrapper for Keras." -category = "main" optional = true python-versions = ">=3.8.0,<3.12.0" files = [ @@ -2176,7 +2113,6 @@ tensorflow-cpu = ["tensorflow-cpu (>=2.12.0,<2.13.0)"] name = "scikit-learn" version = "1.3.1" description = "A set of python modules for machine learning and data mining" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2224,7 +2160,6 @@ tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc ( name = "scipy" version = "1.10.1" description = "Fundamental algorithms for scientific computing in Python" -category = "main" optional = false python-versions = "<3.12,>=3.8" files = [ @@ -2263,7 +2198,6 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo name = "seaborn" version = "0.12.2" description = "Statistical data visualization" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2285,7 +2219,6 @@ stats = ["scipy (>=1.3)", "statsmodels (>=0.10)"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2302,7 +2235,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "setuptools-scm" version = "8.0.4" description = "the blessed package to manage your versions by scm tags" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2325,7 +2257,6 @@ test = ["build", "pytest", "rich", "wheel"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2337,7 +2268,6 @@ files = [ name = "skorch" version = "0.15.0" description = "scikit-learn compatible neural network library for pytorch" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2360,7 +2290,6 @@ testing = ["accelerate (>=0.22.0)", "fire", "flaky", "future (>=0.17.1)", "gpyto name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" files = [ @@ -2372,7 +2301,6 @@ files = [ name = "soupsieve" version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2384,7 +2312,6 @@ files = [ name = "sphinx" version = "5.3.0" description = "Python documentation generator" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2420,7 +2347,6 @@ test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] name = "sphinx-bootstrap-theme" version = "0.8.1" description = "Sphinx Bootstrap Theme." -category = "dev" optional = false python-versions = "*" files = [ @@ -2432,7 +2358,6 @@ files = [ name = "sphinx-design" version = "0.3.0" description = "A sphinx extension for designing beautiful, view size responsive web components." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2456,7 +2381,6 @@ theme-sbt = ["sphinx-book-theme (>=0.3.0,<0.4.0)"] name = "sphinx-gallery" version = "0.11.1" description = "A Sphinx extension that builds an HTML version of any Python script and puts it into an examples gallery." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2471,7 +2395,6 @@ sphinx = ">=3" name = "sphinx-rtd-theme" version = "1.3.0" description = "Read the Docs theme for Sphinx" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2491,7 +2414,6 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2507,7 +2429,6 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2523,7 +2444,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2539,7 +2459,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" -category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -2554,7 +2473,6 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2569,7 +2487,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2585,7 +2502,6 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2601,7 +2517,6 @@ test = ["pytest"] name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2616,7 +2531,6 @@ widechars = ["wcwidth"] name = "tdlda" version = "0.1.0" description = "Time-decoupled linear discriminant analysis." -category = "dev" optional = false python-versions = ">=3.6.0" files = [] @@ -2632,7 +2546,6 @@ resolved_reference = "d3acc59d34e47a4f36773b3df86f0842089f65cd" name = "tensorboard" version = "2.12.3" description = "TensorBoard lets you watch Tensors Flow" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2657,7 +2570,6 @@ wheel = ">=0.26" name = "tensorboard-data-server" version = "0.7.1" description = "Fast data loading for TensorBoard" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2670,7 +2582,6 @@ files = [ name = "tensorflow" version = "2.12.1" description = "TensorFlow is an open source machine learning framework for everyone." -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2720,7 +2631,6 @@ wrapt = ">=1.11.0,<1.15" name = "tensorflow-estimator" version = "2.12.0" description = "TensorFlow Estimator." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2731,7 +2641,6 @@ files = [ name = "tensorflow-io-gcs-filesystem" version = "0.31.0" description = "TensorFlow IO" -category = "main" optional = true python-versions = ">=3.7, <3.12" files = [ @@ -2767,7 +2676,6 @@ tensorflow-rocm = ["tensorflow-rocm (>=2.11.0,<2.12.0)"] name = "tensorflow-metal" version = "1.1.0" description = "TensorFlow acceleration for Mac GPUs." -category = "main" optional = true python-versions = "*" files = [ @@ -2784,7 +2692,6 @@ wheel = ">=0.35,<1.0" name = "termcolor" version = "2.3.0" description = "ANSI color formatting for output in terminal" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2799,7 +2706,6 @@ tests = ["pytest", "pytest-cov"] name = "threadpoolctl" version = "3.2.0" description = "threadpoolctl" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2811,7 +2717,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2823,7 +2728,6 @@ files = [ name = "torch" version = "1.13.1" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" -category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -2860,11 +2764,21 @@ typing-extensions = "*" [package.extras] opt-einsum = ["opt-einsum (>=3.3)"] +[[package]] +name = "torchinfo" +version = "1.8.0" +description = "Model summary in PyTorch, based off of the original torchsummary." +optional = true +python-versions = ">=3.7" +files = [ + {file = "torchinfo-1.8.0-py3-none-any.whl", hash = "sha256:2e911c2918603f945c26ff21a3a838d12709223dc4ccf243407bce8b6e897b46"}, + {file = "torchinfo-1.8.0.tar.gz", hash = "sha256:72e94b0e9a3e64dc583a8e5b7940b8938a1ac0f033f795457f27e6f4e7afa2e9"}, +] + [[package]] name = "tqdm" version = "4.66.1" description = "Fast, Extensible Progress Meter" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2885,7 +2799,6 @@ telegram = ["requests"] name = "types-python-dateutil" version = "2.8.19.14" description = "Typing stubs for python-dateutil" -category = "main" optional = true python-versions = "*" files = [ @@ -2897,7 +2810,6 @@ files = [ name = "typing-extensions" version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2909,7 +2821,6 @@ files = [ name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2926,7 +2837,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "virtualenv" version = "20.24.5" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2947,7 +2857,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "werkzeug" version = "3.0.0" description = "The comprehensive WSGI web application library." -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2965,7 +2874,6 @@ watchdog = ["watchdog (>=2.3)"] name = "wheel" version = "0.41.2" description = "A built-package format for Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2980,7 +2888,6 @@ test = ["pytest (>=6.0.0)", "setuptools (>=65)"] name = "wrapt" version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -3054,7 +2961,6 @@ files = [ name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3068,9 +2974,9 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [extras] carbonemission = ["codecarbon"] -deeplearning = ["tensorflow", "keras", "scikeras", "braindecode", "torch", "libclang"] +deeplearning = ["braindecode", "keras", "libclang", "scikeras", "tensorflow", "torch"] [metadata] lock-version = "2.0" python-versions = ">=3.8, <3.12" -content-hash = "70d78f4bc698036ebce93e1a325b11880669debf42af18bf14b8c0d04b90e207" +content-hash = "505b4abac3130faceda25ccea89d3c39211a52c219fc6e6fb8fce6ced4c0315e" diff --git a/pyproject.toml b/pyproject.toml index c1718df5c..fb9a220b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ codecarbon = { version = "^2.1.4", optional = true } tensorflow = { version = ">=2.10,<2.13", optional = true } keras = { version = ">=1.11.0", optional = true } scikeras = { version = "^0.12.0", optional = true } -braindecode = { version = "^0.7", optional = true } +braindecode = {version = "^0.8", optional = true} torch = { version = "^1.13.1", optional = true } libclang = { version = "^15.0", optional = true }