diff -Nru python-mne-0.23.4+dfsg/azure-pipelines.yml python-mne-1.1.0+dfsg/azure-pipelines.yml --- python-mne-0.23.4+dfsg/azure-pipelines.yml 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/azure-pipelines.yml 2022-08-03 15:48:14.000000000 +0000 @@ -17,30 +17,29 @@ jobs: - job: Skip pool: - vmImage: 'ubuntu-18.04' + vmImage: 'ubuntu-latest' variables: DECODE_PERCENTS: 'false' RET: 'true' + BUILD_REASON: $(Build.Reason) steps: - bash: | - git_log=`git log --max-count=1 --skip=1 --pretty=format:"%s"` + git_log=`git log --format=oneline -n 1 --skip=1` echo "##vso[task.setvariable variable=log]$git_log" - bash: echo "##vso[task.setvariable variable=RET]false" - condition: or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]')) + condition: and(eq(variables.BUILD_REASON, 'PullRequest'), or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]'))) - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET" name: result -- stage: Main - condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) - dependsOn: Check +- stage: Style variables: AZURE_CI: 'true' jobs: - - job: Style + - job: All pool: - vmImage: 'ubuntu-18.04' + vmImage: 'ubuntu-latest' variables: - PYTHON_VERSION: '3.8' + PYTHON_VERSION: '3.9' PYTHON_ARCH: 'x64' steps: - bash: echo $(COMMIT_MSG) @@ -52,10 +51,15 @@ displayName: 'Get Python' - bash: | set -e - python -m pip install --upgrade pip setuptools - python -m pip install numpy scipy matplotlib -r requirements_testing.txt + python -m pip install --progress-bar off --upgrade pip setuptools wheel + python -m pip install --progress-bar off -r requirements_base.txt -r requirements_hdf5.txt -r requirements_testing.txt displayName: Install dependencies - condition: always() + - bash: | + make flake + displayName: make flake + - bash: | + make codespell-error + displayName: make codespell - bash: | make pydocstyle displayName: make pydocstyle @@ -63,6 +67,7 @@ - bash: | make docstring displayName: make docstring + condition: always() - bash: | make nesting displayName: make nesting @@ -76,16 +81,23 @@ displayName: make check-readme condition: always() - - - job: Ultraslow +- stage: Test + condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) + dependsOn: ['Style', 'Check'] + variables: + AZURE_CI: 'true' + jobs: + - job: Ultraslow_PG pool: - vmImage: 'ubuntu-18.04' + vmImage: 'ubuntu-20.04' variables: DISPLAY: ':99' OPENBLAS_NUM_THREADS: '1' steps: - bash: | - sudo apt install libxkbcommon-x11-0 xvfb tcsh libxcb* + set -e + ./tools/setup_xvfb.sh + sudo apt install -yq tcsh displayName: 'Install Ubuntu dependencies' - bash: | source tools/get_minimal_commands.sh @@ -97,18 +109,26 @@ displayName: 'Test minimal commands' - task: UsePythonVersion@0 inputs: - versionSpec: '3.7' + versionSpec: '3.9' architecture: 'x64' addToPath: true displayName: 'Get Python' - bash: | - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render -noreset; - displayName: 'Spin up Xvfb' - - bash: | set -e - python -m pip install --upgrade pip setuptools - python -m pip install --upgrade numpy scipy vtk -r requirements.txt -r requirements_testing.txt -r requirements_testing_extra.txt codecov + python -m pip install --progress-bar off --upgrade pip setuptools wheel codecov + python -m pip install --progress-bar off mne-qt-browser[opengl] pyvista scikit-learn pytest-error-for-skips python-picard "PySide6!=6.3.0" qtpy + python -m pip uninstall -yq mne + python -m pip install --progress-bar off --upgrade -e .[test] displayName: 'Install dependencies with pip' + - bash: | + set -e + mne sys_info -pd + mne sys_info -pd | grep "qtpy: .*{PySide6=.*}$" + displayName: Print config + # Uncomment if "xcb not found" Qt errors/segfaults come up again + # - bash: | + # set -e + # LD_DEBUG=libs python -c "from PySide6.QtWidgets import QApplication, QWidget; app = QApplication([]); import matplotlib; matplotlib.use('QtAgg'); import matplotlib.pyplot as plt; plt.figure()" - bash: source tools/get_testing_version.sh displayName: 'Get testing version' - task: Cache@2 @@ -118,40 +138,54 @@ displayName: 'Cache testing data' - script: python -c "import mne; mne.datasets.testing.data_path(verbose=True)" displayName: 'Get test data' - - script: pytest -m "ultraslowtest" --tb=short --cov=mne -vv mne - displayName: 'Run ultraslow tests' - - script: codecov --root $BUILD_REPOSITORY_LOCALPATH -t $CODECOV_TOKEN + - script: pytest --error-for-skips -m "ultraslowtest or pgtest" --tb=short --cov=mne --cov-report=xml --cov-report=html -vv mne + displayName: 'slow and mne-qt-browser tests' + # Coverage + - bash: bash <(curl -s https://codecov.io/bash) displayName: 'Codecov' - env: - CODECOV_TOKEN: $(CODECOV_TOKEN) condition: succeededOrFailed() - task: PublishTestResults@2 inputs: - testResultsFiles: 'junit-*.xml' + testResultsFiles: '**/junit-*.xml' testRunTitle: 'Publish test results for $(Agent.JobName)' failTaskOnFailedTests: true condition: succeededOrFailed() + - task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov' - - - job: Notebook + - job: Qt pool: - vmImage: 'ubuntu-18.04' + vmImage: 'ubuntu-20.04' + variables: + DISPLAY: ':99' + OPENBLAS_NUM_THREADS: '1' + TEST_OPTIONS: "--tb=short --cov=mne --cov-report=xml --cov-report=html --cov-append -vv mne/viz/_brain mne/viz/backends mne/viz/tests/test_evoked.py mne/gui" steps: + - bash: ./tools/setup_xvfb.sh + displayName: 'Install Ubuntu dependencies' + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.10' + architecture: 'x64' + addToPath: true + displayName: 'Get Python' - bash: | set -e - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh --progress=dot:mega - bash miniconda.sh -b -p ~/miniconda - source ~/miniconda/etc/profile.d/conda.sh - conda activate base - conda env update --file server_environment.yml - pip uninstall -yq mne - pip install -ve . - pip install -r requirements_testing.txt -r requirements_testing_extra.txt codecov - echo "##vso[task.setvariable variable=PATH]${PATH}" - echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]${LD_LIBRARY_PATH}" - displayName: 'Install dependencies' - - script: mne sys_info - displayName: 'Print config and test access to commands' + python -m pip install --progress-bar off --upgrade pip setuptools wheel + python -m pip install --progress-bar off --upgrade --pre --only-binary=\"numpy,scipy,matplotlib,vtk\" numpy scipy matplotlib vtk + python -c "import vtk" + python -m pip install --progress-bar off --upgrade -r requirements.txt -r requirements_testing.txt -r requirements_testing_extra.txt codecov + python -m pip install -e . + displayName: 'Install dependencies with pip' + - bash: | + set -e + which mne + mne sys_info -pd + mne sys_info -pd | grep "^mne: .*dev0.*$" + displayName: Print config - bash: source tools/get_testing_version.sh displayName: 'Get testing version' - task: Cache@2 @@ -161,46 +195,83 @@ displayName: 'Cache testing data' - script: python -c "import mne; mne.datasets.testing.data_path(verbose=True)" displayName: 'Get test data' - - script: pytest --tb=short --cov=mne -vv mne/viz - displayName: 'Run viz tests' - - script: codecov --root $BUILD_REPOSITORY_LOCALPATH -t $CODECOV_TOKEN + - bash: | + set -e + mne sys_info -pd + mne sys_info -pd | grep "qtpy: .*{PySide6=.*}$" + pytest -m "not slowtest" ${TEST_OPTIONS} + python -m pip uninstall -yq PySide6 + displayName: 'PySide6' + - bash: | + set -e + python -m pip install PyQt6 + mne sys_info -pd + mne sys_info -pd | grep "^qtpy: .*{PyQt6=.*}$" + pytest -m "not slowtest" ${TEST_OPTIONS} + python -m pip uninstall -yq PyQt6 PyQt6-sip PyQt6-Qt6 + displayName: 'PyQt6' + - bash: | + set -e + python -m pip install PySide2 + mne sys_info -pd + mne sys_info -pd | grep "^qtpy: .*{PySide2=.*}$" + pytest -m "not slowtest" ${TEST_OPTIONS} + python -m pip uninstall -yq PySide2 + displayName: 'PySide2' + # PyQt5 leaves cruft behind, so run it last + - bash: | + set -e + python -m pip install PyQt5 + mne sys_info -pd + mne sys_info -pd | grep "^qtpy: .*{PyQt5=.*}$" + pytest -m "not slowtest" ${TEST_OPTIONS} + python -m pip uninstall -yq PyQt5 PyQt5-sip PyQt5-Qt5 + displayName: 'PyQt5' + # Coverage + - bash: bash <(curl -s https://codecov.io/bash) displayName: 'Codecov' - env: - CODECOV_TOKEN: $(CODECOV_TOKEN) condition: succeededOrFailed() - task: PublishTestResults@2 inputs: - testResultsFiles: 'junit-*.xml' + testResultsFiles: '**/junit-*.xml' testRunTitle: 'Publish test results for $(Agent.JobName)' failTaskOnFailedTests: true condition: succeededOrFailed() - + - task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov' - job: Windows pool: - vmImage: 'VS2017-Win2016' + vmImage: 'windows-latest' variables: MNE_LOGGING_LEVEL: 'warning' MNE_FORCE_SERIAL: 'true' OPENBLAS_NUM_THREADS: 1 + OMP_NUM_THREADS: 1 + MKL_NUM_THREADS: 2 + OMP_DYNAMIC: 'false' + MKL_DYNAMIC: 'false' PYTHONUNBUFFERED: 1 PYTHONIOENCODING: 'utf-8' AZURE_CI_WINDOWS: 'true' PYTHON_ARCH: 'x64' + timeoutInMinutes: 70 strategy: maxParallel: 4 matrix: - 3.7 conda: + 3.9 conda: PLATFORM: 'x86-64' TEST_MODE: 'conda' - PYTHON_VERSION: '3.8' - 3.7 pip: + PYTHON_VERSION: '3.9' + 3.9 pip: TEST_MODE: 'pip' - PYTHON_VERSION: '3.7' - 3.8 pip pre: + PYTHON_VERSION: '3.9' + 3.10 pip pre: TEST_MODE: 'pip-pre' - PYTHON_VERSION: '3.8' - OPENBLAS_CORETYPE: 'prescott' # workaround for https://github.com/numpy/numpy/issues/16913 + PYTHON_VERSION: '3.10' steps: - task: UsePythonVersion@0 inputs: @@ -211,35 +282,37 @@ displayName: 'Get Python' # https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/anaconda # https://github.com/MicrosoftDocs/pipelines-anaconda - # Qt 5.9 post-link failure: # https://github.com/ContinuumIO/anaconda-issues/issues/10949 - - script: echo "##vso[task.prependpath]%CONDA%;%CONDA%\condabin;%CONDA%\Scripts;%CONDA%\Library\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;" + - script: | + echo "##vso[task.prependpath]%CONDA%;%CONDA%\condabin;%CONDA%\Scripts;%CONDA%\Library\bin;%PROGRAMFILES%\Git\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%PROGRAMFILES%\Git\usr\bin" condition: in(variables['TEST_MODE'], 'conda') - displayName: Add conda to PATH, deal with Qt 5.9 bug + displayName: Add conda to PATH, deal with Qt linking bug - bash: | set -e - git clone --depth 1 git://github.com/pyvista/gl-ci-helpers.git + git clone --depth 1 https://github.com/pyvista/gl-ci-helpers.git powershell gl-ci-helpers/appveyor/install_opengl.ps1 displayName: Install OpenGL - bash: | set -e ./tools/azure_dependencies.sh condition: in(variables['TEST_MODE'], 'pip', 'pip-pre') - displayName: 'Install dependencies with pip' - - powershell: | - Set-StrictMode -Version Latest - $ErrorActionPreference = "Stop" - $PSDefaultParameterValues['*:ErrorAction']='Stop' - conda update -n base -c defaults conda - conda env update --name base --file environment.yml - pip uninstall -yq mne - pip install -r requirements_testing.txt -r requirements_testing_extra.txt codecov + displayName: Install dependencies with pip + - script: conda env update --name base --file environment.yml condition: eq(variables['TEST_MODE'], 'conda') - displayName: 'Install dependencies with conda' - - script: python setup.py develop + displayName: Setup MNE environment + - bash: | + set -e + conda remove -c conda-forge --force -yq mne + rm /c/Miniconda/Scripts/mne.exe + condition: eq(variables['TEST_MODE'], 'conda') + displayName: Remove old MNE + - script: pip install -e . displayName: 'Install MNE-Python dev' - - script: mne sys_info - displayName: 'Print config and test access to commands' + - script: pip install --progress-bar off -e .[test] codecov + condition: eq(variables['TEST_MODE'], 'conda') + displayName: Install testing requirements + - script: mne sys_info -pd + displayName: 'Print config' - script: python -c "import numpy; numpy.show_config()" displayName: Print NumPy config - bash: source tools/get_testing_version.sh @@ -251,16 +324,57 @@ displayName: 'Cache testing data' - script: python -c "import mne; mne.datasets.testing.data_path(verbose=True)" displayName: 'Get test data' - - script: pytest -m "not slowtest" --tb=short --cov=mne -vv mne + - script: pytest -m "not (slowtest or pgtest)" --tb=short --cov=mne --cov-report=xml --cov-report=html -vv mne displayName: 'Run tests' - - script: codecov --root %BUILD_REPOSITORY_LOCALPATH% -t %CODECOV_TOKEN% + - bash: bash <(curl -s https://codecov.io/bash) displayName: 'Codecov' - env: - CODECOV_TOKEN: $(CODECOV_TOKEN) condition: succeededOrFailed() - task: PublishTestResults@2 inputs: - testResultsFiles: 'junit-*.xml' + testResultsFiles: '**/junit-*.xml' testRunTitle: 'Publish test results for $(Agent.JobName) $(TEST_MODE) $(PYTHON_VERSION)' failTaskOnFailedTests: true condition: succeededOrFailed() + - task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov' + + - job: SphinxWindows + pool: + vmImage: 'windows-latest' + variables: + AZURE_CI_WINDOWS: 'true' + PYTHON_ARCH: 'x64' + PLATFORM: 'x86-64' + PYTHON_VERSION: '3.9' + steps: + - bash: | + set -e + git clone --depth 1 https://github.com/pyvista/gl-ci-helpers.git + powershell gl-ci-helpers/appveyor/install_opengl.ps1 + displayName: Install OpenGL + - script: echo "##vso[task.prependpath]%CONDA%;%CONDA%\condabin;%CONDA%\Scripts;%CONDA%\Library\bin;%CONDA%\Library\bin\graphviz;%PROGRAMFILES%\Git\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%PROGRAMFILES%\Git\usr\bin" + displayName: Add conda to PATH, deal with Qt linking bug + - script: conda update -n base -c defaults conda + displayName: Update conda + - script: conda env update --name base --file environment.yml + displayName: Setup MNE environment + - script: conda install -c conda-forge graphviz + displayName: Add graphviz dot + - bash: | + set -e + conda remove -c conda-forge --force -yq mne + rm /c/Miniconda/Scripts/mne.exe + displayName: Remove old MNE + - script: pip install -e . + displayName: Install dev MNE + - script: pip install --progress-bar off -r requirements_doc.txt + displayName: Install documentation dependencies + - script: mne sys_info -pd + displayName: Print config and test access to commands + - script: python -c "import numpy; numpy.show_config()" + displayName: Print NumPy config + - bash: make -C doc html_dev-noplot + displayName: 'Build doc' diff -Nru python-mne-0.23.4+dfsg/.circleci/config.yml python-mne-1.1.0+dfsg/.circleci/config.yml --- python-mne-0.23.4+dfsg/.circleci/config.yml 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/.circleci/config.yml 2022-08-03 15:48:14.000000000 +0000 @@ -1,22 +1,24 @@ -# Tagging a commit with: -# - [circle front] will build the front page and perform test-doc -# - [circle full] will build everything -# - [circle linkcheck] will run our linkcheck -# - [circle interactive_test] will run our test suite (useful for debugging -# issues using "Rerun with SSH") +# By default, for PRs CircleCI will build only examples that have changed. +# For main commits, builds are skipped entirely, as we only do full builds +# scheduled for one time daily. +# +# Tagging a commit with the following overrides these behaviors: +# - [circle front] will run the front page examples and perform test-doc +# - [circle full] will run all examples and perform test-doc +# - [circle linkcheck] will run our linkcheck job +# - [circle deploy] on a main or maint/* commit will try to immediately build +# and deploy docs rather than waiting for the nightly build version: 2.1 -_xvfb: &xvfb - name: Start Xvfb virtual framebuffer - command: | - echo "export DISPLAY=:99" >> $BASH_ENV - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1280x1024x24 -ac +extension GLX +render -noreset -nolisten tcp -nolisten unix - jobs: build_docs: + parameters: + scheduled: + type: string + default: "false" docker: - - image: circleci/python:3.8.5-buster + - image: cimg/base:stable-20.04 steps: - restore_cache: keys: @@ -25,9 +27,11 @@ - run: name: Complete checkout command: | + set -e if ! git remote -v | grep upstream; then - git remote add upstream git://github.com/mne-tools/mne-python.git + git remote add upstream https://github.com/mne-tools/mne-python.git fi + git remote set-url upstream https://github.com/mne-tools/mne-python.git git fetch upstream - save_cache: key: source-cache @@ -36,45 +40,80 @@ - run: name: Check-skip command: | + set -e export COMMIT_MESSAGE=$(git log --format=oneline -n 1); if [[ -v CIRCLE_PULL_REQUEST ]] && ([[ "$COMMIT_MESSAGE" == *"[skip circle]"* ]] || [[ "$COMMIT_MESSAGE" == *"[circle skip]"* ]]); then echo "Skip detected, exiting job ${CIRCLE_JOB} for PR ${CIRCLE_PULL_REQUEST}." circleci-agent step halt; fi - run: + name: Merge with upstream and triage run + command: | + set -e + echo $(git log -1 --pretty=%B) | tee gitlog.txt + echo ${CI_PULL_REQUEST//*pull\//} | tee merge.txt + if [[ $(cat merge.txt) != "" ]]; then + echo "Merging $(cat merge.txt)"; + git pull --ff-only upstream "refs/pull/$(cat merge.txt)/merge"; + else + if [[ "$CIRCLE_BRANCH" == "main" ]]; then + KIND=dev + else + KIND=stable + fi + export COMMIT_MESSAGE=$(git log --format=oneline -n 1); + if [[ "<< parameters.scheduled >>" == "true" ]]; then + echo "Scheduled full build detected, checking if it's required." + wget https://mne.tools/${KIND}/_version.txt; + REMOTE_VERSION=$(cat _version.txt) + THIS_VERSION=$(git rev-parse HEAD) + echo "Current ${KIND} SHA: ${REMOTE_VERSION}" + echo "This ${KIND} SHA: ${THIS_VERSION}" + if [[ "${THIS_VERSION}" != "${REMOTE_VERSION}" ]]; then + echo "Rebuild required." + else + echo "Rebuild skipped." + circleci-agent step halt; + fi + elif [[ "$COMMIT_MESSAGE" == *"[circle deploy]"* ]]; then + echo "Forced deployed build detected, building and deploying docs"; + else + echo "Waiting until scheduled run to build ${KIND} docs, exiting job ${CIRCLE_JOB}." + circleci-agent step halt; + fi + fi + + - run: name: Set BASH_ENV command: | set -e + ./tools/setup_xvfb.sh + sudo apt install -qq graphviz optipng python3.8-venv python3-venv libxft2 ffmpeg + python3.8 -m venv ~/python_env echo "set -e" >> $BASH_ENV echo "export OPENBLAS_NUM_THREADS=4" >> $BASH_ENV echo "export XDG_RUNTIME_DIR=/tmp/runtime-circleci" >> $BASH_ENV echo "export MNE_FULL_DATE=true" >> $BASH_ENV source tools/get_minimal_commands.sh - echo "export MNE_3D_BACKEND=pyvista" >> $BASH_ENV + echo "export MNE_3D_BACKEND=pyvistaqt" >> $BASH_ENV + echo "export MNE_3D_OPTION_MULTI_SAMPLES=1" >> $BASH_ENV + echo "export MNE_BROWSER_BACKEND=qt" >> $BASH_ENV + echo "export MNE_BROWSER_PRECOMPUTE=false" >> $BASH_ENV echo "export PATH=~/.local/bin/:$PATH" >> $BASH_ENV + echo "export DISPLAY=:99" >> $BASH_ENV + echo "source ~/python_env/bin/activate" >> $BASH_ENV + mkdir -p ~/.local/bin + ln -s ~/python_env/bin/python ~/.local/bin/python echo "BASH_ENV:" cat $BASH_ENV mkdir -p ~/mne_data - touch pattern.txt; + touch pattern.txt - run: name: check neuromag2ft command: | neuromag2ft --version - run: - name: Merge with upstream - command: | - echo $(git log -1 --pretty=%B) | tee gitlog.txt - echo ${CI_PULL_REQUEST//*pull\//} | tee merge.txt - if [[ $(cat merge.txt) != "" ]]; then - echo "Merging $(cat merge.txt)"; - git pull --ff-only upstream "refs/pull/$(cat merge.txt)/merge"; - fi - - - run: - <<: *xvfb - - - run: name: Install fonts needed for diagrams command: | mkdir -p $HOME/.fonts @@ -107,20 +146,20 @@ - ~/.local/bin - run: - name: Check PyQt5 - command: LD_DEBUG=libs python -c "from PyQt5.QtWidgets import QApplication, QWidget; app = QApplication([])" + name: Check Qt + command: LD_DEBUG=libs python -c "from PySide6.QtWidgets import QApplication, QWidget; app = QApplication([])" # Load tiny cache so that ~/.mne does not need to be created below - restore_cache: keys: - - data-cache-tiny-0-23 + - data-cache-tiny-0 # Look at what we have and fail early if there is some library conflict - run: name: Check installation command: | which python - QT_DEBUG_PLUGINS=1 mne sys_info + QT_DEBUG_PLUGINS=1 mne sys_info -pd python -c "import numpy; numpy.show_config()" LIBGL_DEBUG=verbose python -c "import pyvistaqt; pyvistaqt.BackgroundPlotter(show=True)" python -c "import mne; mne.set_config('MNE_USE_CUDA', 'false')" # this is needed for the config tutorial @@ -261,7 +300,7 @@ # Keep these separate, maybe better in terms of size limitations (?) - save_cache: - key: data-cache-tiny-0-23 # < 100 M, might as well combine + key: data-cache-tiny-0 # < 100 M, might as well combine paths: - ~/.mne - ~/mne_data/MNE-kiloword-data # (28 M) @@ -378,7 +417,7 @@ - run: name: Check installation command: | - mne sys_info + mne sys_info -pd - run: name: make linkcheck command: | @@ -394,8 +433,8 @@ deploy: - docker: - - image: circleci/python:3.8.5-buster + machine: + image: ubuntu-2004:202111-01 steps: - attach_workspace: at: /tmp/build @@ -454,73 +493,46 @@ paths: - ~/mne_data/MNE-visual_92_categories-data - - interactive_test: - docker: - - image: circleci/python:3.9.2-buster - steps: - - restore_cache: - keys: - - source-cache - - checkout - - run: - name: Set BASH_ENV - command: | - set -e - echo "set -e" >> $BASH_ENV - echo "export OPENBLAS_NUM_THREADS=1" >> $BASH_ENV - mkdir -p ~/mne_data - - run: - name: Check-skip - command: | - export COMMIT_MESSAGE=$(git log --format=oneline -n 1); - if [[ "$COMMIT_MESSAGE" != *"[circle interactive_test]"* ]]; then - echo "Skip detected, exiting job ${CIRCLE_JOB}." - circleci-agent step halt; - fi - - run: - <<: *xvfb - - restore_cache: - keys: - - pip-cache - - run: - name: Get Python running - command: | - ./tools/circleci_dependencies.sh - - run: - name: Check installation - command: | - mne sys_info - - restore_cache: - keys: - - data-cache-testing - - run: - name: Get data - command: | - python -c "import mne; mne.datasets.testing.data_path(verbose=True)" - - run: - name: pytest - command: | - pytest -m "not slowtest" mne -xv - workflows: default: jobs: - - build_docs - - linkcheck - - interactive_test + - build_docs: + name: build_docs + - linkcheck: + name: linkcheck - deploy: + name: deploy requires: - build_docs filters: branches: only: - main - - maint/0.23 + - maint/1.1 + + main: + jobs: + - build_docs: + scheduled: "true" + name: build_docs_main + - deploy: + name: deploy_main + requires: + - build_docs_main + triggers: + - schedule: + # "At 00:00" (once a day) should be enough "0 0 * * *", + # But for testing at first, let's do once an hour (6 AM GMT) + cron: "0 6 * * *" + filters: + branches: + only: + - main weekly: jobs: - linkcheck: + name: linkcheck_weekly scheduled: "true" triggers: - schedule: diff -Nru python-mne-0.23.4+dfsg/CITATION.cff python-mne-1.1.0+dfsg/CITATION.cff --- python-mne-0.23.4+dfsg/CITATION.cff 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/CITATION.cff 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,655 @@ +cff-version: 1.2.0 +title: "MNE-Python" +message: "If you use this software, please cite both the software itself, and the paper listed in the preferred-citation field." +version: 1.1.0 +date-released: "2022-08-03" +commit: c210dfb4a1cab292c47c892fb2ee3c0b308ec90b +doi: 10.5281/zenodo.592483 +keywords: + - MEG + - magnetoencephalography + - EEG + - electroencephalography + - fNIRS + - "functional near-infrared spectroscopy" + - iEEG + - "intracranial EEG" + - eCoG + - electrocorticography + - DBS + - "deep brain stimulation" +authors: + - family-names: Larson + given-names: Eric + - family-names: Gramfort + given-names: Alexandre + - family-names: Engemann + given-names: Denis A + - family-names: Leppakangas + given-names: Jaakko + - family-names: Brodbeck + given-names: Christian + - family-names: Jas + given-names: Mainak + - family-names: Brooks + given-names: Teon + - family-names: Sassenhagen + given-names: Jona + - family-names: Luessi + given-names: Martin + - family-names: King + given-names: Jean-Remi + - family-names: McCloy + given-names: Daniel + - family-names: Goj + given-names: Roman + - family-names: Favelier + given-names: Guillaume + - family-names: Höchenberger + given-names: Richard + - family-names: Brunner + given-names: Clemens + - family-names: van Vliet + given-names: Marijn + - family-names: Wronkiewicz + given-names: Mark + - family-names: Holdgraf + given-names: Chris + - family-names: Massich + given-names: Joan + - family-names: Bekhti + given-names: Yousra + - family-names: Rockhill + given-names: Alex + - family-names: Appelhoff + given-names: Stefan + - family-names: Leggitt + given-names: Alan + - family-names: Dykstra + given-names: Andrew + - family-names: Luke + given-names: Rob + - family-names: Trachel + given-names: Romain + - family-names: De Santis + given-names: Lorenzo + - family-names: Panda + given-names: Asish + - family-names: Magnuski + given-names: Mikołaj + - family-names: Billinger + given-names: Martin + - family-names: Westner + given-names: Britta + - family-names: Wakeman + given-names: Dan G + - family-names: Strohmeier + given-names: Daniel + - family-names: Bharadwaj + given-names: Hari + - family-names: Linzen + given-names: Tal + - family-names: Barachant + given-names: Alexandre + - family-names: Scheltienne + given-names: Mathieu + - family-names: Ruzich + given-names: Emily + - family-names: Bailey + given-names: Christopher J + - family-names: Li + given-names: Adam + - family-names: Moutard + given-names: Clément + - family-names: Bloy + given-names: Luke + - family-names: Raimondo + given-names: Fede + - family-names: Nurminen + given-names: Jussi + - family-names: Montoya + given-names: Jair + - family-names: Woodman + given-names: Marmaduke + - family-names: Lee + given-names: Ingoo + - family-names: Schulz + given-names: Martin + - family-names: Foti + given-names: Nick + - family-names: Nangini + given-names: Cathy + - family-names: García Alanis + given-names: José C + - family-names: Maddox + given-names: Ross + - family-names: LaPlante + given-names: Roan + - family-names: Drew + given-names: Ashley + - family-names: Dinh + given-names: Christoph + - family-names: Hauk + given-names: Olaf + - family-names: Dumas + given-names: Guillaume + - family-names: Hartmann + given-names: Thomas + - family-names: Benerradi + given-names: Johann + - family-names: Pasler + given-names: Paul + - family-names: Repplinger + given-names: Stefan + - family-names: Rudiuk + given-names: Alexander + - family-names: Radanovic + given-names: Ana + - family-names: Buran + given-names: Brad + - family-names: Massias + given-names: Mathurin + - family-names: Hämäläinen + given-names: Matti + - family-names: Sripad + given-names: Praveen + - family-names: Chirkov + given-names: Valerii + - family-names: Mullins + given-names: Christopher + - family-names: Raimundo + given-names: Félix + - family-names: Alday + given-names: Phillip + - family-names: Pari + given-names: Ram + - family-names: Kornblith + given-names: Simon + - family-names: Halchenko + given-names: Yaroslav + - family-names: Luo + given-names: Yu-Han + - family-names: Ort + given-names: Eduard + - family-names: Kasper + given-names: Johannes + - family-names: Doelling + given-names: Keith + - family-names: Jensen + given-names: Mads + - family-names: Gahlot + given-names: Tanay + - family-names: Nunes + given-names: Adonay + - family-names: Gütlin + given-names: Dirk + - name: kjs + - family-names: Weinstein + given-names: Alejandro + - family-names: Lamus + given-names: Camilo + - family-names: Galván + given-names: Catalina María + - family-names: Moënne-Loccoz + given-names: Cristóbal + - family-names: Houck + given-names: Jon + - family-names: Klein + given-names: Natalie + - family-names: Rantala + given-names: Antti + - family-names: Maess + given-names: Burkhard + - family-names: O'Reilly + given-names: Christian + - family-names: Peterson + given-names: Erica + - family-names: Heinila + given-names: Erkka + - family-names: Kolkhorst + given-names: Henrich + - family-names: Banville + given-names: Hubert + - family-names: Hanna + given-names: Jeff + - family-names: Clarke + given-names: Maggie + - family-names: Anelli + given-names: Matteo + - family-names: Kaneda + given-names: Michiru + - family-names: Bannier + given-names: Pierre-Antoine + - family-names: Choudhary + given-names: Saket + - family-names: Huberty + given-names: Scott + - family-names: Kern + given-names: Simon + - family-names: Forster + given-names: Carina + - family-names: Kim + given-names: Cora + - family-names: Klotzsche + given-names: Felix + - family-names: Wong + given-names: Fu-Te + - family-names: Kojcic + given-names: Ivana + - family-names: Nielsen + given-names: Jesper Duemose + - family-names: Lankinen + given-names: Kaisu + - family-names: Tabavi + given-names: Kambiz + - family-names: Maksymenko + given-names: Kostiantyn + - family-names: Thibault + given-names: Louis + - family-names: Gayraud + given-names: Nathalie + - family-names: Ward + given-names: Nick + - name: dependabot[bot] + - family-names: Gauthier + given-names: Antoine + - family-names: Pinsard + given-names: Basile + - family-names: Welke + given-names: Dominik + - family-names: Stephen + given-names: Emily + - family-names: Hornberger + given-names: Erik + - family-names: Hathaway + given-names: Evan + - family-names: Kalenkovich + given-names: Evgenii + - family-names: Mamashli + given-names: Fahimeh + - family-names: Marinato + given-names: Giorgio + - family-names: Anevar + given-names: Hafeza + - family-names: Zhang + given-names: Jack + - family-names: Sosulski + given-names: Jan + - family-names: Stout + given-names: Jeff + - family-names: Eisenman + given-names: Larry + - family-names: Esch + given-names: Lorenz + - family-names: Barascud + given-names: Nicolas + - family-names: Legrand + given-names: Nicolas + - family-names: Falach + given-names: Rotem + - family-names: Deslauriers-Gauthier + given-names: Samuel + - family-names: Cotroneo + given-names: Silvia + - family-names: Matindi + given-names: Steve + - family-names: Bierer + given-names: Steven + - family-names: Férat + given-names: Victor + - family-names: Peterson + given-names: Victoria + - family-names: Tonin + given-names: Alessandro + - family-names: Kovrig + given-names: Alexander + - family-names: Pascarella + given-names: Annalisa + - family-names: Karekal + given-names: Apoorva + - family-names: Zhao + given-names: Christina + - family-names: Krzemiński + given-names: Dominik + - family-names: Welke + given-names: Dominik + - family-names: Makowski + given-names: Dominique + - family-names: Mikulan + given-names: Ezequiel + - family-names: Schiratti + given-names: Jean-Baptiste + - family-names: Evans + given-names: Jen + - family-names: Drew + given-names: Jordan + - family-names: Teves + given-names: Joshua + - family-names: Mathewson + given-names: Kyle + - family-names: Gwilliams + given-names: Laura + - family-names: Varghese + given-names: Lenny + - name: Lx37 + - family-names: Dovgialo + given-names: Marian + - family-names: Boggess + given-names: Matt + - family-names: Eberlein + given-names: Matthias + - family-names: Sherif + given-names: Mohamed + - family-names: Kozhemiako + given-names: Nataliia + - family-names: Srinivasan + given-names: Naveen + - family-names: Wilming + given-names: Niklas + - family-names: Chapochnikov + given-names: Nikolai + - family-names: Kozynets + given-names: Oleh + - family-names: Ablin + given-names: Pierre + - family-names: Bertrand + given-names: Quentin + - family-names: Shoorangiz + given-names: Reza + - family-names: Hübner + given-names: Rodrigo + - family-names: Sommariva + given-names: Sara + - family-names: Khan + given-names: Sheraz + - family-names: Herbst + given-names: Sophie + - family-names: Datta + given-names: Sumalyo + - family-names: Jochmann + given-names: Thomas + - family-names: Flak + given-names: Tod + - family-names: Dupré la Tour + given-names: Tom + - family-names: Stenner + given-names: Tristan + - family-names: NessAiver + given-names: Tziona + - name: akshay0724 + - name: sviter + - family-names: Hindle + given-names: Abram + - family-names: Koutsou + given-names: Achilleas + - family-names: Fecker + given-names: Adeline + - family-names: Wagner + given-names: Adina + - family-names: Ciok + given-names: Alex + - family-names: Pradhan + given-names: Aniket + - family-names: Padee + given-names: Anna + - family-names: Dubarry + given-names: Anne-Sophie + - family-names: Waniek + given-names: Anton Nikolas + - family-names: Singhal + given-names: Archit + - family-names: Rokem + given-names: Ariel + - family-names: Hurst + given-names: Austin + - family-names: Beasley + given-names: Ben + - family-names: Nicenboim + given-names: Bruno + - family-names: de la Torre + given-names: Carlos + - family-names: Clauss + given-names: Christian + - family-names: Mista + given-names: Christian + - family-names: Li + given-names: Chun-Hui + - family-names: Braboszcz + given-names: Claire + - family-names: Sleiter + given-names: Darin Erat + - family-names: Haslacher + given-names: David + - family-names: Sabbagh + given-names: David + - family-names: Kostas + given-names: Demetres + - family-names: Petkova + given-names: Desislava + - family-names: Altukhov + given-names: Dmitrii + - family-names: Eich + given-names: Eberhard + - family-names: DuPre + given-names: Elizabeth + - family-names: Lau + given-names: Ellen + - family-names: Olivetti + given-names: Emanuele + - family-names: Varano + given-names: Enrico + - family-names: de Montalivet + given-names: Etienne + - family-names: Goldstein + given-names: Evgeny + - family-names: Zamberlan + given-names: Federico + - family-names: Weber + given-names: Frederik D + - family-names: Tan + given-names: Gansheng + - family-names: Brookshire + given-names: Geoff + - family-names: Maymandi + given-names: Hamid + - family-names: Sonntag + given-names: Hermann + - family-names: Ye + given-names: Hongjiang + - family-names: Machairas + given-names: Ilias + - family-names: Kaczmarzyk + given-names: Jakub + - family-names: Zerfowski + given-names: Jan + - family-names: van den Bosch + given-names: Jasper J F + - family-names: Van Der Donckt + given-names: Jeroen + - family-names: van der Meer + given-names: Johan + - family-names: Niediek + given-names: Johannes + - family-names: Veillette + given-names: John + - family-names: Koen + given-names: Josh + - family-names: Bear + given-names: Joshua J + - family-names: Zhu + given-names: Judy D + - family-names: Dammers + given-names: Juergen + - family-names: Galán + given-names: Julia Guiomar Niso + - family-names: Slama + given-names: Katarina + - family-names: Leinweber + given-names: Katrin + - family-names: Grabot + given-names: Laetitia + - family-names: Andersen + given-names: Lau Møller + - family-names: Barbosa + given-names: Leonardo S + - family-names: Hamilton + given-names: Liberty + - family-names: Alfine + given-names: Lorenzo + - family-names: Gemein + given-names: Lukas + - family-names: Hecker + given-names: Lukas + - family-names: Hejtmánek + given-names: Lukáš + - family-names: Kitzbichler + given-names: Manfred + - family-names: Kumar + given-names: Manoj + - family-names: Kadwani + given-names: Manorama + - family-names: Sutela + given-names: Manu + - family-names: Koculak + given-names: Marcin + - family-names: van Harmelen + given-names: Martin + - name: MartinBaBer + - family-names: Courtemanche + given-names: Matt + - family-names: Tucker + given-names: Matt + - family-names: Visconti di Oleggio Castello + given-names: Matteo + - family-names: Dold + given-names: Matthias + - family-names: Toivonen + given-names: Matti + - family-names: Shader + given-names: Maureen + - family-names: Krause + given-names: Michael + - family-names: Rybář + given-names: Milan + - family-names: He + given-names: Mingjian + - family-names: Daneshzand + given-names: Mohammad + - family-names: Gensollen + given-names: Nicolas + - family-names: Proulx + given-names: Nicole + - family-names: Chalas + given-names: Nikolas + - family-names: Sundaram + given-names: Padma + - family-names: Roujansky + given-names: Paul + - family-names: Silva + given-names: Pedro + - family-names: Molfese + given-names: Peter J + - family-names: Li + given-names: Quanliang + - family-names: Nadkarni + given-names: Rahul + - family-names: Gatti + given-names: Ramiro + - family-names: Apariciogarcia + given-names: Ramonapariciog + - family-names: Nasri + given-names: Reza + - family-names: Koehler + given-names: Richard + - family-names: Stargardsky + given-names: Riessarius + - family-names: Oostenveld + given-names: Robert + - family-names: Seymour + given-names: Robert + - family-names: Schirrmeister + given-names: Robin Tibor + - family-names: Law + given-names: Ryan + - family-names: Pai + given-names: Sagun + - family-names: Perry + given-names: Sam + - family-names: Major + given-names: Sebastian + - family-names: Treguer + given-names: Sebastien + - family-names: Castaño + given-names: Sebastián + - family-names: Deng + given-names: Senwen + - family-names: Antopolskiy + given-names: Sergey + - family-names: Wong + given-names: Simeon + - family-names: Poil + given-names: Simon-Shlomo + - family-names: Foslien + given-names: Sondre + - family-names: Singh + given-names: Sourav + - family-names: Chambon + given-names: Stanislas + - family-names: Bethard + given-names: Steven + - family-names: Gutstein + given-names: Steven M + - family-names: Meyer + given-names: Svea Marie + - family-names: Wang + given-names: T + - family-names: Papadopoulo + given-names: Theodore + - family-names: Donoghue + given-names: Thomas + - family-names: Radman + given-names: Thomas + - family-names: Merk + given-names: Timon + - family-names: Gates + given-names: Timothy + - family-names: Clausner + given-names: Tommy + - family-names: Xia + given-names: Xiaokai + - family-names: Zhang + given-names: Zhi + - name: buildqa +preferred-citation: + title: "MEG and EEG Data Analysis with MNE-Python" + journal: "Frontiers in Neuroscience" + type: article + year: 2013 + volume: 7 + issue: 267 + start: 1 + end: 13 + doi: 10.3389/fnins.2013.00267 + authors: + - family-names: Gramfort + given-names: Alexandre + - family-names: Luessi + given-names: Martin + - family-names: Larson + given-names: Eric + - family-names: Engemann + given-names: Denis A. + - family-names: Strohmeier + given-names: Daniel + - family-names: Brodbeck + given-names: Christian + - family-names: Goj + given-names: Roman + - family-names: Jas + given-names: Mainak + - family-names: Brooks + given-names: Teon + - family-names: Parkkonen + given-names: Lauri + - family-names: Hämäläinen + given-names: Matti S. diff -Nru python-mne-0.23.4+dfsg/codemeta.json python-mne-1.1.0+dfsg/codemeta.json --- python-mne-0.23.4+dfsg/codemeta.json 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/codemeta.json 2022-08-03 15:48:14.000000000 +0000 @@ -5,22 +5,28 @@ "codeRepository": "git+https://github.com/mne-tools/mne-python.git", "dateCreated": "2010-12-26", "datePublished": "2014-08-04", - "dateModified": "2021-04-27", - "downloadUrl": "https://github.com/mne-tools/mne-python/archive/v0.23.0.zip", + "dateModified": "2022-08-03", + "downloadUrl": "https://github.com/mne-tools/mne-python/archive/v1.1.0.zip", "issueTracker": "https://github.com/mne-tools/mne-python/issues", "name": "MNE-Python", - "version": "0.23.0", + "version": "1.1.0", "description": "MNE-Python is an open-source Python package for exploring, visualizing, and analyzing human neurophysiological data. It provides methods for data input/output, preprocessing, visualization, source estimation, time-frequency analysis, connectivity analysis, machine learning, and statistics.", "applicationCategory": "Neuroscience", "developmentStatus": "active", "referencePublication": "https://doi.org/10.3389/fnins.2013.00267", "keywords": [ "MEG", + "magnetoencephalography", "EEG", + "electroencephalography", "fNIRS", - "ECoG", - "sEEG", - "DBS" + "functional near-infrared spectroscopy", + "iEEG", + "intracranial EEG", + "eCoG", + "electrocorticography", + "DBS", + "deep brain stimulation" ], "programmingLanguage": [ "Python" @@ -31,7 +37,7 @@ "macOS" ], "softwareRequirements": [ - "python>=3.6", + "python>=3.7", "numpy>=1.15.4", "scipy>=1.1.0" ], @@ -92,33 +98,39 @@ }, { "@type":"Person", - "email":"jeanremi.kibng+github@gmail.com", + "email":"jeanremi.king+github@gmail.com", "givenName":"Jean-Remi", "familyName": "King" }, { "@type":"Person", - "email":"roman.goj@gmail.com", - "givenName":"Roman", - "familyName": "Goj" - }, - { - "@type":"Person", "email":"dan@mccloy.info", "givenName":"Daniel", "familyName": "McCloy" }, { "@type":"Person", + "email":"roman.goj@gmail.com", + "givenName":"Roman", + "familyName": "Goj" + }, + { + "@type":"Person", "email":"guillaume.favelier@gmail.com", "givenName":"Guillaume", "familyName": "Favelier" }, { "@type":"Person", - "email":"wronk.mark@gmail.com", - "givenName":"Mark", - "familyName": "Wronkiewicz" + "email":"richard.hoechenberger@gmail.com", + "givenName":"Richard", + "familyName": "Höchenberger" + }, + { + "@type":"Person", + "email":"clemens.brunner@gmail.com", + "givenName":"Clemens", + "familyName": "Brunner" }, { "@type":"Person", @@ -128,9 +140,9 @@ }, { "@type":"Person", - "email":"clemens.brunner@gmail.com", - "givenName":"Clemens", - "familyName": "Brunner" + "email":"wronk.mark@gmail.com", + "givenName":"Mark", + "familyName": "Wronkiewicz" }, { "@type":"Person", @@ -152,9 +164,15 @@ }, { "@type":"Person", - "email":"richard.hoechenberger@gmail.com", - "givenName":"Richard", - "familyName": "Höchenberger" + "email":"aprockhill206@gmail.com", + "givenName":"Alex", + "familyName": "Rockhill" + }, + { + "@type":"Person", + "email":"stefan.appelhoff@mailbox.org", + "givenName":"Stefan", + "familyName": "Appelhoff" }, { "@type":"Person", @@ -170,6 +188,12 @@ }, { "@type":"Person", + "email":"code@robertluke.net", + "givenName":"Rob", + "familyName": "Luke" + }, + { + "@type":"Person", "email":"romain.trachel@inria.fr", "givenName":"Romain", "familyName": "Trachel" @@ -188,24 +212,12 @@ }, { "@type":"Person", - "email":"stefan.appelhoff@mailbox.org", - "givenName":"Stefan", - "familyName": "Appelhoff" - }, - { - "@type":"Person", "email":"mmagnuski@swps.edu.pl", "givenName":"Mikołaj", "familyName": "Magnuski" }, { "@type":"Person", - "email":"", - "givenName":"Robert", - "familyName": "Luke" - }, - { - "@type":"Person", "email":"martin.billinger@tugraz.at", "givenName":"Martin", "familyName": "Billinger" @@ -248,6 +260,12 @@ }, { "@type":"Person", + "email":"mathieu.scheltienne@gmail.com", + "givenName":"Mathieu", + "familyName": "Scheltienne" + }, + { + "@type":"Person", "email":"emilyr@nmr.mgh.harvard.edu", "givenName":"Emily", "familyName": "Ruzich" @@ -260,6 +278,12 @@ }, { "@type":"Person", + "email":"adam2392@gmail.com", + "givenName":"Adam", + "familyName": "Li" + }, + { + "@type":"Person", "email":"clement.moutard@gmail.com", "givenName":"Clément", "familyName": "Moutard" @@ -302,6 +326,12 @@ }, { "@type":"Person", + "email":"dev@earthman-music.de", + "givenName":"Martin", + "familyName": "Schulz" + }, + { + "@type":"Person", "email":"nfoti01@gmail.com", "givenName":"Nick", "familyName": "Foti" @@ -320,9 +350,9 @@ }, { "@type":"Person", - "email":"adam2392@gmail.com", - "givenName":"Adam", - "familyName": "Li" + "email":"ross.maddox@rochester.edu", + "givenName":"Ross", + "familyName": "Maddox" }, { "@type":"Person", @@ -332,9 +362,9 @@ }, { "@type":"Person", - "email":"rkmaddox@uw.edu", - "givenName":"Ross", - "familyName": "Maddox" + "email":"", + "givenName":"Ashley", + "familyName": "Drew" }, { "@type":"Person", @@ -356,6 +386,18 @@ }, { "@type":"Person", + "email":"thomas.hartmann@th-ht.de", + "givenName":"Thomas", + "familyName": "Hartmann" + }, + { + "@type":"Person", + "email":"johann.benerradi@gmail.com", + "givenName":"Johann", + "familyName": "Benerradi" + }, + { + "@type":"Person", "email":"paul@ppasler.de", "givenName":"Paul", "familyName": "Pasler" @@ -368,12 +410,6 @@ }, { "@type":"Person", - "email":"thomas.hartmann@th-ht.de", - "givenName":"Thomas", - "familyName": "Hartmann" - }, - { - "@type":"Person", "email":"alxanderr@gmail.com", "givenName":"Alexander", "familyName": "Rudiuk" @@ -392,12 +428,6 @@ }, { "@type":"Person", - "email":"johann.benerradi@gmail.com", - "givenName":"Johann", - "familyName": "Benerradi" - }, - { - "@type":"Person", "email":"mathurin.massias@gmail.com", "givenName":"Mathurin", "familyName": "Massias" @@ -416,9 +446,9 @@ }, { "@type":"Person", - "email":"aprockhill206@gmail.com", - "givenName":"Alex", - "familyName": "Rockhill" + "email":"vagechirkov@gmail.com", + "givenName":"Valerii", + "familyName": "Chirkov" }, { "@type":"Person", @@ -452,12 +482,6 @@ }, { "@type":"Person", - "email":"vagechirkov@gmail.com", - "givenName":"Valerii", - "familyName": "Chirkov" - }, - { - "@type":"Person", "email":"debian@onerussian.com", "givenName":"Yaroslav", "familyName": "Halchenko" @@ -470,6 +494,12 @@ }, { "@type":"Person", + "email":"eduardxort@gmail.com", + "givenName":"Eduard", + "familyName": "Ort" + }, + { + "@type":"Person", "email":"jeythekey@tutanota.com", "givenName":"Johannes", "familyName": "Kasper" @@ -506,12 +536,6 @@ }, { "@type":"Person", - "email":"dev@earthman-music.de", - "givenName":"Martin", - "familyName": "Schulz" - }, - { - "@type":"Person", "email":"kjs@llama", "givenName":"", "familyName": "kjs" @@ -531,8 +555,8 @@ { "@type":"Person", "email":"", - "givenName":"Catalina", - "familyName": "Magalvan" + "givenName":"Catalina María", + "familyName": "Galván" }, { "@type":"Person", @@ -542,9 +566,9 @@ }, { "@type":"Person", - "email":"eduardxort@gmail.com", - "givenName":"Eduard", - "familyName": "Ort" + "email":"jon.houck@gmail.com", + "givenName":"Jon", + "familyName": "Houck" }, { "@type":"Person", @@ -566,6 +590,18 @@ }, { "@type":"Person", + "email":"christian.oreilly@gmail.com", + "givenName":"Christian", + "familyName": "O'Reilly" + }, + { + "@type":"Person", + "email":"nordme@uw.edu", + "givenName":"Erica", + "familyName": "Peterson" + }, + { + "@type":"Person", "email":"erkkahe@gmail.com", "givenName":"Erkka", "familyName": "Heinila" @@ -578,15 +614,15 @@ }, { "@type":"Person", - "email":"jeff.hanna@gmail.com", - "givenName":"Jeff", - "familyName": "Hanna" + "email":"hubert.jbanville@gmail.com", + "givenName":"Hubert", + "familyName": "Banville" }, { "@type":"Person", - "email":"jon.houck@gmail.com", - "givenName":"Jon", - "familyName": "Houck" + "email":"jeff.hanna@gmail.com", + "givenName":"Jeff", + "familyName": "Hanna" }, { "@type":"Person", @@ -602,21 +638,45 @@ }, { "@type":"Person", + "email":"rcmdnk@gmail.com", + "givenName":"Michiru", + "familyName": "Kaneda" + }, + { + "@type":"Person", + "email":"pierreantoine.bannier@gmail.com", + "givenName":"Pierre-Antoine", + "familyName": "Bannier" + }, + { + "@type":"Person", "email":"saketkc@gmail.com", "givenName":"Saket", "familyName": "Choudhary" }, { "@type":"Person", - "email":"christian.oreilly@gmail.com", - "givenName":"Christian", - "familyName": "O'Reilly" + "email":"", + "givenName":"Scott", + "familyName": "Huberty" }, { "@type":"Person", - "email":"nordme@uw.edu", - "givenName":"Erica", - "familyName": "Peterson" + "email":"simon.kern@online.de", + "givenName":"Simon", + "familyName": "Kern" + }, + { + "@type":"Person", + "email":"carinaforster0611@gmail.com", + "givenName":"Carina", + "familyName": "Forster" + }, + { + "@type":"Person", + "email":"", + "givenName":"Cora", + "familyName": "Kim" }, { "@type":"Person", @@ -632,12 +692,6 @@ }, { "@type":"Person", - "email":"hubert.jbanville@gmail.com", - "givenName":"Hubert", - "familyName": "Banville" - }, - { - "@type":"Person", "email":"", "givenName":"Ivana", "familyName": "Kojcic" @@ -686,6 +740,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"", + "familyName": "dependabot[bot]" + }, + { + "@type":"Person", "email":"antoine.gauthier@ensta.fr", "givenName":"Antoine", "familyName": "Gauthier" @@ -698,9 +758,9 @@ }, { "@type":"Person", - "email":"", - "givenName":"Cora", - "familyName": "Kim" + "email":"dominik.welke@web.de", + "givenName":"Dominik", + "familyName": "Welke" }, { "@type":"Person", @@ -716,6 +776,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Evan", + "familyName": "Hathaway" + }, + { + "@type":"Person", "email":"e.kalenkovich@gmail.com", "givenName":"Evgenii", "familyName": "Kalenkovich" @@ -746,6 +812,18 @@ }, { "@type":"Person", + "email":"mail@jan-sosulski.de", + "givenName":"Jan", + "familyName": "Sosulski" + }, + { + "@type":"Person", + "email":"stoutjd@nih.gov", + "givenName":"Jeff", + "familyName": "Stout" + }, + { + "@type":"Person", "email":"leisenman@wustl.edu", "givenName":"Larry", "familyName": "Eisenman" @@ -788,9 +866,9 @@ }, { "@type":"Person", - "email":"simon.kern@online.de", - "givenName":"Simon", - "familyName": "Kern" + "email":"stevematindi@gmail.com", + "givenName":"Steve", + "familyName": "Matindi" }, { "@type":"Person", @@ -812,6 +890,12 @@ }, { "@type":"Person", + "email":"alessandro.tonin@wysscenter.ch", + "givenName":"Alessandro", + "familyName": "Tonin" + }, + { + "@type":"Person", "email":"alexander.kovrig@gmail.com", "givenName":"Alexander", "familyName": "Kovrig" @@ -848,6 +932,12 @@ }, { "@type":"Person", + "email":"dom.mak19@gmail.com", + "givenName":"Dominique", + "familyName": "Makowski" + }, + { + "@type":"Person", "email":"", "givenName":"Ezequiel", "familyName": "Mikulan" @@ -866,6 +956,18 @@ }, { "@type":"Person", + "email":"", + "givenName":"Jordan", + "familyName": "Drew" + }, + { + "@type":"Person", + "email":"jbtevespro@gmail.com", + "givenName":"Joshua", + "familyName": "Teves" + }, + { + "@type":"Person", "email":"kylemath@gmail.com", "givenName":"Kyle", "familyName": "Mathewson" @@ -890,9 +992,9 @@ }, { "@type":"Person", - "email":"", - "givenName":"Martin", - "familyName": "Schulz" + "email":"mdovgialo@fabrizzio.zfb.fuw.edu.pl", + "givenName":"Marian", + "familyName": "Dovgialo" }, { "@type":"Person", @@ -902,6 +1004,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Matthias", + "familyName": "Eberlein" + }, + { + "@type":"Person", "email":"molpsychistb@gmail.com", "givenName":"Mohamed", "familyName": "Sherif" @@ -914,6 +1022,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Naveen", + "familyName": "Srinivasan" + }, + { + "@type":"Person", "email":"niklas.wilming@gmail.com", "givenName":"Niklas", "familyName": "Wilming" @@ -921,6 +1035,12 @@ { "@type":"Person", "email":"", + "givenName":"Nikolai", + "familyName": "Chapochnikov" + }, + { + "@type":"Person", + "email":"", "givenName":"Oleh", "familyName": "Kozynets" }, @@ -938,6 +1058,12 @@ }, { "@type":"Person", + "email":"r.shoorangiz@live.com", + "givenName":"Reza", + "familyName": "Shoorangiz" + }, + { + "@type":"Person", "email":"rhubner@gmail.com", "givenName":"Rodrigo", "familyName": "Hübner" @@ -992,6 +1118,12 @@ }, { "@type":"Person", + "email":"tzionan@mail.tau.ac.il", + "givenName":"Tziona", + "familyName": "NessAiver" + }, + { + "@type":"Person", "email":"akshay0724@gmail.com", "givenName":"", "familyName": "akshay0724" @@ -1016,6 +1148,24 @@ }, { "@type":"Person", + "email":"", + "givenName":"Adeline", + "familyName": "Fecker" + }, + { + "@type":"Person", + "email":"adina.wagner@t-online.de", + "givenName":"Adina", + "familyName": "Wagner" + }, + { + "@type":"Person", + "email":"", + "givenName":"Alex", + "familyName": "Ciok" + }, + { + "@type":"Person", "email":"aniket17133@iiitd.ac.in", "givenName":"Aniket", "familyName": "Pradhan" @@ -1040,6 +1190,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Archit", + "familyName": "Singhal" + }, + { + "@type":"Person", "email":"arokem@gmail.com", "givenName":"Ariel", "familyName": "Rokem" @@ -1052,6 +1208,12 @@ }, { "@type":"Person", + "email":"code@musicinmybrain.net", + "givenName":"Ben", + "familyName": "Beasley" + }, + { + "@type":"Person", "email":"bruno.nicenboim@gmail.com", "givenName":"Bruno", "familyName": "Nicenboim" @@ -1088,6 +1250,12 @@ }, { "@type":"Person", + "email":"darin.sleiter@gmail.com", + "givenName":"Darin Erat", + "familyName": "Sleiter" + }, + { + "@type":"Person", "email":"haslacherdavid@gmail.com", "givenName":"David", "familyName": "Haslacher" @@ -1149,8 +1317,32 @@ { "@type":"Person", "email":"", - "givenName":"Evan", - "familyName": "Hathaway" + "givenName":"Etienne", + "familyName": "de Montalivet" + }, + { + "@type":"Person", + "email":"", + "givenName":"Evgeny", + "familyName": "Goldstein" + }, + { + "@type":"Person", + "email":"", + "givenName":"Federico", + "familyName": "Zamberlan" + }, + { + "@type":"Person", + "email":"", + "givenName":"Frederik D", + "familyName": "Weber" + }, + { + "@type":"Person", + "email":"", + "givenName":"Gansheng", + "familyName": "Tan" }, { "@type":"Person", @@ -1160,6 +1352,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Hamid", + "familyName": "Maymandi" + }, + { + "@type":"Person", "email":"hermann.sonntag@gmail.com", "givenName":"Hermann", "familyName": "Sonntag" @@ -1173,20 +1371,26 @@ { "@type":"Person", "email":"", + "givenName":"Ilias", + "familyName": "Machairas" + }, + { + "@type":"Person", + "email":"", "givenName":"Jakub", "familyName": "Kaczmarzyk" }, { "@type":"Person", - "email":"japsai@gmail.com", - "givenName":"Jasper J F", - "familyName": "van den Bosch" + "email":"", + "givenName":"Jan", + "familyName": "Zerfowski" }, { "@type":"Person", - "email":"stoutjd@nih.gov", - "givenName":"Jeff", - "familyName": "Stout" + "email":"japsai@gmail.com", + "givenName":"Jasper J F", + "familyName": "van den Bosch" }, { "@type":"Person", @@ -1208,6 +1412,18 @@ }, { "@type":"Person", + "email":"johnv@uchicago.edu", + "givenName":"John", + "familyName": "Veillette" + }, + { + "@type":"Person", + "email":"koen.joshua@gmail.com", + "givenName":"Josh", + "familyName": "Koen" + }, + { + "@type":"Person", "email":"", "givenName":"Joshua J", "familyName": "Bear" @@ -1226,6 +1442,12 @@ }, { "@type":"Person", + "email":"guiomar.niso@ctb.upm.es", + "givenName":"Julia Guiomar Niso", + "familyName": "Galán" + }, + { + "@type":"Person", "email":"slama@berkeley.edu", "givenName":"Katarina", "familyName": "Slama" @@ -1268,6 +1490,18 @@ }, { "@type":"Person", + "email":"", + "givenName":"Lukas", + "familyName": "Gemein" + }, + { + "@type":"Person", + "email":"", + "givenName":"Lukas", + "familyName": "Hecker" + }, + { + "@type":"Person", "email":"hejtmy@gmail.com", "givenName":"Lukáš", "familyName": "Hejtmánek" @@ -1304,12 +1538,6 @@ }, { "@type":"Person", - "email":"mdovgialo@fabrizzio.zfb.fuw.edu.pl", - "givenName":"Marian", - "familyName": "Dovgialo" - }, - { - "@type":"Person", "email":"", "givenName":"Martin", "familyName": "van Harmelen" @@ -1322,6 +1550,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Matt", + "familyName": "Courtemanche" + }, + { + "@type":"Person", "email":"matt.tucker@nyu.edu", "givenName":"Matt", "familyName": "Tucker" @@ -1334,6 +1568,24 @@ }, { "@type":"Person", + "email":"", + "givenName":"Matthias", + "familyName": "Dold" + }, + { + "@type":"Person", + "email":"", + "givenName":"Matti", + "familyName": "Toivonen" + }, + { + "@type":"Person", + "email":"", + "givenName":"Maureen", + "familyName": "Shader" + }, + { + "@type":"Person", "email":"krause@mpib-berlin.mpg.de", "givenName":"Michael", "familyName": "Krause" @@ -1347,6 +1599,12 @@ { "@type":"Person", "email":"", + "givenName":"Mingjian", + "familyName": "He" + }, + { + "@type":"Person", + "email":"", "givenName":"Mohammad", "familyName": "Daneshzand" }, @@ -1418,12 +1676,24 @@ }, { "@type":"Person", + "email":"reza@ddpo.ir", + "givenName":"Reza", + "familyName": "Nasri" + }, + { + "@type":"Person", "email":"richard.koehler@outlook.de", "givenName":"Richard", "familyName": "Koehler" }, { "@type":"Person", + "email":"rie.acad@gmail.com", + "givenName":"Riessarius", + "familyName": "Stargardsky" + }, + { + "@type":"Person", "email":"r.oostenveld@gmail.com", "givenName":"Robert", "familyName": "Oostenveld" @@ -1442,6 +1712,12 @@ }, { "@type":"Person", + "email":"ryan.law@mpi.nl", + "givenName":"Ryan", + "familyName": "Law" + }, + { + "@type":"Person", "email":"sagung.pai@gmail.com", "givenName":"Sagun", "familyName": "Pai" @@ -1472,6 +1748,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"Senwen", + "familyName": "Deng" + }, + { + "@type":"Person", "email":"s.antopolsky@gmail.com", "givenName":"Sergey", "familyName": "Antopolskiy" @@ -1490,6 +1772,12 @@ }, { "@type":"Person", + "email":"sondre.foslien@gmail.com", + "givenName":"Sondre", + "familyName": "Foslien" + }, + { + "@type":"Person", "email":"", "givenName":"Sourav", "familyName": "Singh" @@ -1502,12 +1790,6 @@ }, { "@type":"Person", - "email":"stevematindi@gmail.com", - "givenName":"Steve", - "familyName": "Matindi" - }, - { - "@type":"Person", "email":"bethard@email.arizona.edu", "givenName":"Steven", "familyName": "Bethard" @@ -1526,6 +1808,12 @@ }, { "@type":"Person", + "email":"", + "givenName":"T", + "familyName": "Wang" + }, + { + "@type":"Person", "email":"Theodore.Papadopoulo@inria.fr", "givenName":"Theodore", "familyName": "Papadopoulo" @@ -1550,12 +1838,24 @@ }, { "@type":"Person", + "email":"tim.gates@iress.com", + "givenName":"Timothy", + "familyName": "Gates" + }, + { + "@type":"Person", "email":"", "givenName":"Tommy", "familyName": "Clausner" }, { "@type":"Person", + "email":"xia@xiaokai.me", + "givenName":"Xiaokai", + "familyName": "Xia" + }, + { + "@type":"Person", "email":"850734033@qq.com", "givenName":"Zhi", "familyName": "Zhang" @@ -1565,18 +1865,6 @@ "email":"", "givenName":"", "familyName": "buildqa" - }, - { - "@type":"Person", - "email":"", - "givenName":"", - "familyName": "chapochn" - }, - { - "@type":"Person", - "email":"", - "givenName":"", - "familyName": "mshader" } ] } diff -Nru python-mne-0.23.4+dfsg/CONTRIBUTING.md python-mne-1.1.0+dfsg/CONTRIBUTING.md --- python-mne-0.23.4+dfsg/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/CONTRIBUTING.md 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,9 @@ +Contributing to MNE-Python +========================== + +MNE-Python is maintained by a community of scientists and research labs. The project accepts contributions in the form of bug reports, fixes, feature additions, and documentation improvements (including typo corrections). The best way to start contributing is by [opening an issue](https://github.com/mne-tools/mne-python/issues/new/choose) on our GitHub page to discuss ideas for changes or enhancements, or to tell us about behavior that you think might be a bug. For *general troubleshooting* or *usage questions*, please consider posting your questions on our [MNE Forum](https://mne.discourse.group). + +Users and contributors to MNE-Python are expected to follow our [code of conduct](https://github.com/mne-tools/.github/blob/main/CODE_OF_CONDUCT.md). + +The [contributing guide](https://mne.tools/dev/install/contributing.html) has details on the preferred contribution workflow +and the recommended system configuration for a smooth contribution/development experience. diff -Nru python-mne-0.23.4+dfsg/CONTRIBUTING.rst python-mne-1.1.0+dfsg/CONTRIBUTING.rst --- python-mne-0.23.4+dfsg/CONTRIBUTING.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/CONTRIBUTING.rst 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -Contributing to MNE-Python -========================== - -MNE-Python is maintained by a community of scientists and research labs, and -accepts contributions in the form of bug reports, fixes, feature additions, and -documentation improvements (even just typo corrections). The best way to start -contributing is by `opening an issue`_ on our GitHub page to discuss your ideas -for changes or enhancements, or to tell us about behavior that you think might -be a bug in MNE-Python. *For general troubleshooting of scripts that use -MNE-Python*, you should instead post on the `MNE Forum`_. Users and -contributors to MNE-Python are expected to follow our `code of conduct`_. - -The `contributing guide`_ has details on the preferred contribution workflow -and how best to configure your system for a smooth experience contributing to -MNE-Python. - - -.. _`opening an issue`: https://github.com/mne-tools/mne-python/issues/new/choose -.. _`MNE Forum`: https://mne.discourse.group -.. _`code of conduct`: https://github.com/mne-tools/.github/blob/main/CODE_OF_CONDUCT.md -.. _`contributing guide`: https://mne-tools.github.io/dev/install/contributing.html diff -Nru python-mne-0.23.4+dfsg/.coveragerc python-mne-1.1.0+dfsg/.coveragerc --- python-mne-0.23.4+dfsg/.coveragerc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/.coveragerc 2022-08-03 15:48:14.000000000 +0000 @@ -1,9 +1,7 @@ [run] branch = True source = mne -include = */mne/* omit = - */mne/externals/* */bin/* */setup.py */mne/fixes* diff -Nru python-mne-0.23.4+dfsg/debian/changelog python-mne-1.1.0+dfsg/debian/changelog --- python-mne-0.23.4+dfsg/debian/changelog 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/changelog 2022-08-04 12:10:02.000000000 +0000 @@ -1,3 +1,14 @@ +python-mne (1.1.0+dfsg-1) unstable; urgency=medium + + * Team upload. + * New upstream version + * Standards-Version: 4.6.1 (routine-update) + * Set upstream metadata fields: Security-Contact. + * Switch from python-vtk7 to python-vtk9 + Closes: #1016602 + + -- Andreas Tille Thu, 04 Aug 2022 14:10:02 +0200 + python-mne (0.23.4+dfsg-1) unstable; urgency=medium * Team upload. diff -Nru python-mne-0.23.4+dfsg/debian/control python-mne-1.1.0+dfsg/debian/control --- python-mne-0.23.4+dfsg/debian/control 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/control 2022-08-04 12:10:02.000000000 +0000 @@ -10,7 +10,7 @@ libgl1-mesa-dri, libjs-jquery, libjs-jquery-ui, - python3-vtk7, + python3-vtk9, python3-all, python3-coverage, python3-joblib, @@ -28,7 +28,7 @@ xauth, xvfb, yui-compressor -Standards-Version: 4.6.0 +Standards-Version: 4.6.1 Vcs-Browser: https://salsa.debian.org/med-team/python-mne Vcs-Git: https://salsa.debian.org/med-team/python-mne.git Homepage: https://martinos.org/mne @@ -51,7 +51,7 @@ xvfb, ${misc:Depends}, ${python3:Depends} -Recommends: python3-vtk7, +Recommends: python3-vtk9, python3-nibabel, python3-nose, python3-pytest diff -Nru python-mne-0.23.4+dfsg/debian/patches/deb_paths python-mne-1.1.0+dfsg/debian/patches/deb_paths --- python-mne-0.23.4+dfsg/debian/patches/deb_paths 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/patches/deb_paths 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -Description: adjust paths to use system-wide packages resources (.js etc) -Author: Jaakko Leppakangas -Origin: upstream -Forwarded: not-needed -Reviewed-By: Yaroslav O. Halchenko -Last-Update: 2019-09-01 - ---- a/mne/report.py -+++ b/mne/report.py -@@ -1491,7 +1491,7 @@ class Report(object): - @verbose - def _init_render(self, verbose=None): - """Initialize the renderer.""" -- inc_fnames = ['jquery.js', 'jquery-ui.min.js', -+ inc_fnames = ['/usr/share/javascript/jquery/jquery.min.js', '/usr/share/javascript/jquery-ui/jquery-ui.min.js', - 'bootstrap.min.js', 'jquery-ui.min.css', - 'bootstrap.min.css'] - diff -Nru python-mne-0.23.4+dfsg/debian/patches/deb_skip_segfaultingtests python-mne-1.1.0+dfsg/debian/patches/deb_skip_segfaultingtests --- python-mne-0.23.4+dfsg/debian/patches/deb_skip_segfaultingtests 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/patches/deb_skip_segfaultingtests 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -Author: Yaroslav Halchenko -Last-Update: 2017-12-04 18:32:49 -0500 -Description: Skip test that's known to segfault - ---- a/mne/gui/tests/test_kit2fiff_gui.py -+++ b/mne/gui/tests/test_kit2fiff_gui.py -@@ -128,6 +128,7 @@ def test_kit2fiff_model(): - @traits_test - def test_kit2fiff_gui(): - """Test Kit2Fiff GUI.""" -+ raise SkipTest("known to segfault") - _check_ci() - home_dir = _TempDir() - os.environ['_MNE_GUI_TESTING_MODE'] = 'true' diff -Nru python-mne-0.23.4+dfsg/debian/patches/python3.patch python-mne-1.1.0+dfsg/debian/patches/python3.patch --- python-mne-0.23.4+dfsg/debian/patches/python3.patch 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/patches/python3.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Description: Fix Python 3 issue -Author: Thomas Goirand , - Jaakko Leppakangas -Last-Update: Sun, 01 Sep 2019 14:38:58 +0200 - ---- a/mne/report.py -+++ b/mne/report.py -@@ -1498,9 +1498,13 @@ class Report(object): - include = list() - for inc_fname in inc_fnames: - logger.info('Embedding : %s' % inc_fname) -- fname = op.join(op.dirname(__file__), 'html', inc_fname) -- with open(fname, 'rb') as fid: -- file_content = fid.read().decode('utf-8') -+ if not os.path.isabs(inc_fname): -+ inc_fname = op.join(op.dirname(__file__), 'html', inc_fname) -+ f = open(inc_fname, 'r') -+ if PY3: -+ file_content = f.read() -+ else: -+ file_content = f.read().decode('UTF-8') - if inc_fname.endswith('.js'): - include.append(u'') diff -Nru python-mne-0.23.4+dfsg/debian/patches/series python-mne-1.1.0+dfsg/debian/patches/series --- python-mne-0.23.4+dfsg/debian/patches/series 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/patches/series 2022-08-04 12:10:02.000000000 +0000 @@ -1,4 +1 @@ -#deb_skip_segfaultingtests -deb_paths -python3.patch up_check_numpy diff -Nru python-mne-0.23.4+dfsg/debian/patches/up_check_numpy python-mne-1.1.0+dfsg/debian/patches/up_check_numpy --- python-mne-0.23.4+dfsg/debian/patches/up_check_numpy 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/patches/up_check_numpy 2022-08-04 12:10:02.000000000 +0000 @@ -10,12 +10,12 @@ from numpy.fft import rfft, irfft from numpy.testing import assert_array_equal, assert_allclose, assert_equal --from mne.utils import requires_sklearn, run_tests_if_main -+from mne.utils import requires_sklearn, run_tests_if_main, check_version +-from mne.utils import requires_sklearn ++from mne.utils import requires_sklearn, check_version from mne.decoding import ReceptiveField, TimeDelayingRidge from mne.decoding.receptive_field import (_delay_time_series, _SCORERS, _times_to_delays, _delays_to_slice) -@@ -516,6 +516,9 @@ def test_inverse_coef(): +@@ -517,6 +517,9 @@ def test_inverse_coef(): rf = ReceptiveField(tmin, tmax, 1., estimator=estimator, patterns=True) rf.fit(X, y) diff -Nru python-mne-0.23.4+dfsg/debian/upstream/metadata python-mne-1.1.0+dfsg/debian/upstream/metadata --- python-mne-0.23.4+dfsg/debian/upstream/metadata 2021-09-28 08:14:03.000000000 +0000 +++ python-mne-1.1.0+dfsg/debian/upstream/metadata 2022-08-04 12:10:02.000000000 +0000 @@ -3,3 +3,4 @@ Bug-Submit: https://github.com/mne-tools/mne-python/issues/new Repository: https://github.com/mne-tools/mne-python.git Repository-Browse: https://github.com/mne-tools/mne-python +Security-Contact: https://github.com/mne-tools/mne-python/tree/HEAD/SECURITY.md diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.10.inc python-mne-1.1.0+dfsg/doc/changes/0.10.inc --- python-mne-0.23.4+dfsg/doc/changes/0.10.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.10.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_10: -Version 0.10 ------------- +Version 0.10 (2015-10-26) +------------------------- Changelog ~~~~~~~~~ @@ -76,7 +76,7 @@ - New gfp parameter in :func:`mne.Evoked.plot` method to display Global Field Power (GFP) by `Eric Larson`_. -- Add :meth:`mne.Report.add_slider_to_section` methods to :class:`mne.Report` by `Teon Brooks`_ +- Add ``mne.Report.add_slider_to_section`` methods to :class:`mne.Report` by `Teon Brooks`_ BUG ~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.11.inc python-mne-1.1.0+dfsg/doc/changes/0.11.inc --- python-mne-0.23.4+dfsg/doc/changes/0.11.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.11.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_11: -Version 0.11 ------------- +Version 0.11 (2015-12-24) +------------------------- Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.12.inc python-mne-1.1.0+dfsg/doc/changes/0.12.inc --- python-mne-0.23.4+dfsg/doc/changes/0.12.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.12.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_12: -Version 0.12 ------------- +Version 0.12 (2016-05-10) +------------------------- Changelog ~~~~~~~~~ @@ -69,7 +69,7 @@ - :func:`mne.Epochs.plot_psd` no longer calls a Welch PSD, and instead uses a Multitaper method which is more appropriate for epochs. Flags for this function are passed to :func:`mne.time_frequency.psd_multitaper` by `Chris Holdgraf`_ -- Time-cropping functions (e.g., :func:`mne.Epochs.crop`, :func:`mne.Evoked.crop`, :func:`mne.io.Raw.crop`, :func:`mne.SourceEstimate.crop`) made consistent with behavior of ``tmin`` and ``tmax`` of :class:`mne.Epochs`, where nearest sample is kept. For example, for MGH data acquired with ``sfreq=600.614990234``, constructing ``Epochs(..., tmin=-1, tmax=1)`` has bounds ``+/-1.00064103``, and now ``epochs.crop(-1, 1)`` will also have these bounds (previously they would have been ``+/-0.99897607``). Time cropping functions also no longer use relative tolerances when determining the boundaries. These changes have minor effects on functions that use cropping under the hood, such as :func:`mne.compute_covariance` and :func:`mne.connectivity.spectral_connectivity`. Changes by `Jaakko Leppakangas`_ and `Eric Larson`_ +- Time-cropping functions (e.g., :func:`mne.Epochs.crop`, :func:`mne.Evoked.crop`, :func:`mne.io.Raw.crop`, :func:`mne.SourceEstimate.crop`) made consistent with behavior of ``tmin`` and ``tmax`` of :class:`mne.Epochs`, where nearest sample is kept. For example, for MGH data acquired with ``sfreq=600.614990234``, constructing ``Epochs(..., tmin=-1, tmax=1)`` has bounds ``+/-1.00064103``, and now ``epochs.crop(-1, 1)`` will also have these bounds (previously they would have been ``+/-0.99897607``). Time cropping functions also no longer use relative tolerances when determining the boundaries. These changes have minor effects on functions that use cropping under the hood, such as :func:`mne.compute_covariance` and ``mne.connectivity.spectral_connectivity``. Changes by `Jaakko Leppakangas`_ and `Eric Larson`_ - Fix EEG spherical spline interpolation code to account for average reference by `Mainak Jas`_ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.13.inc python-mne-1.1.0+dfsg/doc/changes/0.13.inc --- python-mne-0.23.4+dfsg/doc/changes/0.13.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.13.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_13: -Version 0.13 ------------- +Version 0.13 (2016-09-27) +------------------------- Changelog ~~~~~~~~~ @@ -140,7 +140,7 @@ - Multiple aspects of FIR filtering in MNE-Python has been refactored: - 1. New recommended defaults for ``l_trans_bandwidth='auto'``, ``h_trans_bandwidth='auto'``, and ``filter_length='auto'``. This should generally reduce filter artifacts at the expense of slight decrease in effective filter stop-band attenuation. For details see :ref:`tut_filtering_in_python`. The default values of ``l_trans_bandwidth=h_trans_bandwidth=0.5`` and ``filter_length='10s'`` will change to ``'auto'`` in 0.14. + 1. New recommended defaults for ``l_trans_bandwidth='auto'``, ``h_trans_bandwidth='auto'``, and ``filter_length='auto'``. This should generally reduce filter artifacts at the expense of slight decrease in effective filter stop-band attenuation. For details see :ref:`tut-filtering-in-python`. The default values of ``l_trans_bandwidth=h_trans_bandwidth=0.5`` and ``filter_length='10s'`` will change to ``'auto'`` in 0.14. 2. The ``filter_length=None`` option (i.e. use ``len(x)``) has been deprecated. diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.14.inc python-mne-1.1.0+dfsg/doc/changes/0.14.inc --- python-mne-0.23.4+dfsg/doc/changes/0.14.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.14.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_14: -Version 0.14 ------------- +Version 0.14 (2017-03-24) +------------------------- Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.15.inc python-mne-1.1.0+dfsg/doc/changes/0.15.inc --- python-mne-0.23.4+dfsg/doc/changes/0.15.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.15.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_15: -Version 0.15 ------------- +Version 0.15 (2017-10-20) +------------------------- Changelog ~~~~~~~~~ @@ -152,7 +152,7 @@ - Fix :func:`mne.io.read_raw_brainvision` to read vectorized data correctly by `Jaakko Leppakangas`_ and `Phillip Alday`_ -- Fix :func:`mne.connectivity.spectral_connectivity` so that if ``n_jobs > 1`` it does not ignore last ``n_epochs % n_jobs`` epochs by `Mikołaj Magnuski`_ +- Fix ``mne.connectivity.spectral_connectivity`` so that if ``n_jobs > 1`` it does not ignore last ``n_epochs % n_jobs`` epochs by `Mikołaj Magnuski`_ - Fix :func:`mne.io.read_raw_edf` to infer sampling rate correctly when reading EDF+ files where tal-channel has a higher sampling frequency by `Jaakko Leppakangas`_ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.16.inc python-mne-1.1.0+dfsg/doc/changes/0.16.inc --- python-mne-0.23.4+dfsg/doc/changes/0.16.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.16.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_16: -Version 0.16 ------------- +Version 0.16 (2018-05-01) +------------------------- Changelog ~~~~~~~~~ @@ -135,7 +135,7 @@ - Fix bug in :class:`mne.Epochs` when passing events as list with ``event_id=None`` by `Alex Gramfort`_ -- Fix bug in :meth:`mne.Report.add_figs_to_section` when passing :class:`numpy.ndarray` by `Eric Larson`_ +- Fix bug in ``mne.Report.add_figs_to_section`` when passing :class:`numpy.ndarray` by `Eric Larson`_ - Fix bug in CSS class setting in `mne.Report` BEM section by `Eric Larson`_ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.17.inc python-mne-1.1.0+dfsg/doc/changes/0.17.inc --- python-mne-0.23.4+dfsg/doc/changes/0.17.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.17.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_17: -Version 0.17 ------------- +Version 0.17 (2018-11-19) +------------------------- Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.18.inc python-mne-1.1.0+dfsg/doc/changes/0.18.inc --- python-mne-0.23.4+dfsg/doc/changes/0.18.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.18.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_18: -Version 0.18 ------------- +Version 0.18 (2019-05-19) +------------------------- Changelog ~~~~~~~~~ @@ -48,7 +48,7 @@ - Add data fetchers for polysomnography (PSG) recordings from Physionet (:func:`mne.datasets.sleep_physionet.age.fetch_data` and :func:`mne.datasets.sleep_physionet.temazepam.fetch_data`) by `Alex Gramfort`_ and `Joan Massich`_ -- Add envelope correlation code in :func:`mne.connectivity.envelope_correlation` by `Denis Engemann`_, `Sheraz Khan`_, and `Eric Larson`_ +- Add envelope correlation code in ``mne.connectivity.envelope_correlation`` by `Denis Engemann`_, `Sheraz Khan`_, and `Eric Larson`_ - Add option to toggle all projectors in :meth:`mne.io.Raw.plot` and related functions by `Eric Larson`_ @@ -145,7 +145,7 @@ - Fix :func:`mne.gui.coregistration` and :ref:`mne coreg` crashing with segmentation fault when switching subjects by `Eric Larson`_ -- Fix :func:`mne.io.read_raw_brainvision` to accommodate vmrk files which do not have any annotations by `Alexander Kovrig`_ +- Fix :func:`mne.io.read_raw_brainvision` to accommodate vmrk files which do not have any annotations by Alexander Kovrig - Fix :meth:`mne.io.Raw.plot` and :meth:`mne.Epochs.plot` to auto-scale ``misc`` channel types by default by `Eric Larson`_ @@ -230,7 +230,7 @@ - Fix a bug in :class:`mne.preprocessing.ICA`, where manually setting the attribute ``ICA.exclude`` to an np.array resulted in the removal of random components when later also providing the ``exclude`` argument to any ``apply...``-method, by `jeythekey`_ -- Ascending changed to descending sorting of scores for integer ``..._criterion`` arguments in :func:`mne.preprocessing.ICA.detect_artifacts` and ``mne.preprocessing.run_ica``, as it used to be documented; the docstring in these functions was corrected for float ``..._criterion`` arguments, by `jeythekey`_ +- Ascending changed to descending sorting of scores for integer ``..._criterion`` arguments in ``mne.preprocessing.ICA.detect_artifacts`` and ``mne.preprocessing.run_ica``, as it used to be documented; the docstring in these functions was corrected for float ``..._criterion`` arguments, by `jeythekey`_ API ~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.19.inc python-mne-1.1.0+dfsg/doc/changes/0.19.inc --- python-mne-0.23.4+dfsg/doc/changes/0.19.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.19.inc 2022-08-03 15:48:14.000000000 +0000 @@ -9,8 +9,8 @@ .. _changes_0_19: -Version 0.19 ------------- +Version 0.19 (2019-09-24) +------------------------- Changelog ~~~~~~~~~ @@ -55,7 +55,7 @@ - Butterfly channel plots now possible for :meth:`mne.Epochs.plot_psd` with ``average=False``. Infrastructure for this function now shared with analogous Raw function, found in ``mne.viz.utils`` by `Jeff Hanna`_ -- Add option not to orthogonalize power envelopes with ``orthogonalize=False`` in :func:`mne.connectivity.envelope_correlation` by `Denis Engemann`_ +- Add option not to orthogonalize power envelopes with ``orthogonalize=False`` in ``mne.connectivity.envelope_correlation`` by `Denis Engemann`_ - Accept filenames of raw .fif files that end in ``_meg.fif`` to enable complicance with the Brain Imaging Data Structure by `Stefan Appelhoff`_ @@ -85,7 +85,7 @@ - Add plotting of rank estimates in :func:`mne.viz.plot_cov` by `Eric Larson`_ -- Add a new :func:`mne.viz.plot_sensors_connectivity` function to visualize the sensor connectivity in 3D by `Guillaume Favelier`_ and `Alex Gramfort`_ +- Add a new ``mne.viz.plot_sensors_connectivity`` function to visualize the sensor connectivity in 3D by `Guillaume Favelier`_ and `Alex Gramfort`_ - Add support for ``info['utc_offset']``, ``info['device_info']``, and ``info['helium_info']`` components of :class:`mne.Info` by `Eric Larson`_ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.1.inc python-mne-1.1.0+dfsg/doc/changes/0.1.inc --- python-mne-0.23.4+dfsg/doc/changes/0.1.inc 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.1.inc 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,18 @@ +.. _changes_0_1: + +Version 0.1 (2011-09-23) +------------------------ + +- Initial release (initial commit: 2010-12-26). + +Authors +~~~~~~~ + +The committer list for this release is the following (preceded by number +of commits): + +* 315 Alexandre Gramfort +* 1 Ellen Lau +* 41 Emily Ruzich +* 2 Martin Luessi +* 9 Matti Hämäläinen diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.20.inc python-mne-1.1.0+dfsg/doc/changes/0.20.inc --- python-mne-0.23.4+dfsg/doc/changes/0.20.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.20.inc 2022-08-03 15:48:14.000000000 +0000 @@ -9,8 +9,8 @@ .. _changes_0_20: -Version 0.20 ------------- +Version 0.20 (2020-03-27) +------------------------- Changelog ~~~~~~~~~ @@ -65,7 +65,7 @@ - Add the ability to ``return_event_id`` in :func:`mne.read_events` for use with MNE-C produced ``-annot.fif`` files, by `Eric Larson`_ -- Add option to :func:`mne.connectivity.spectral_connectivity` to compute corrected imaginary PLV by `Adonay Nunes`_ +- Add option to ``mne.connectivity.spectral_connectivity`` to compute corrected imaginary PLV by `Adonay Nunes`_ - Add :func:`mne.SourceEstimate.estimate_snr` to estimate source-space SNR, by `Kaisu Lankinen`_ and `Padma Sundaram`_ @@ -348,7 +348,7 @@ - :meth:`mne.io.Raw.pick_channels`, :meth:`mne.Epochs.pick_channels` and :meth:`mne.Evoked.pick_channels` now have an ``ordered`` parameter to enforce the ordering of the picked channels by `Marijn van Vliet`_ -- New methods :meth:`mne.Forward.pick_channels`, :meth:`mne.Covariance.pick_channels`, :meth:`mne.Info.pick_channels`, :meth:`mne.time_frequency.CrossSpectralDensity.pick_channels` by `Marijn van Vliet`_ +- New methods :meth:`mne.Forward.pick_channels`, :meth:`mne.Covariance.pick_channels`, ``mne.Info.pick_channels``, :meth:`mne.time_frequency.CrossSpectralDensity.pick_channels` by `Marijn van Vliet`_ - New attributes ``mne.Forward.ch_names`` and ``mne.Info.ch_names`` by `Marijn van Vliet`_ @@ -356,7 +356,7 @@ - Drop ``unit`` keyword argument from :func:`mne.channels.read_custom_montage`, as it was unused by `Richard Höchenberger`_ -- Deprecate ``mne.preprocessing.run_ica``, use :meth:`mne.preprocessing.ICA.detect_artifacts` instead by `Richard Höchenberger`_ +- Deprecate ``mne.preprocessing.run_ica``, use ``mne.preprocessing.ICA.detect_artifacts`` instead by `Richard Höchenberger`_ Authors ~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.21.inc python-mne-1.1.0+dfsg/doc/changes/0.21.inc --- python-mne-0.23.4+dfsg/doc/changes/0.21.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.21.inc 2022-08-03 15:48:14.000000000 +0000 @@ -9,8 +9,8 @@ .. _changes_0_21: -Version 0.21 ------------- +Version 0.21 (2020-09-21) +------------------------- .. |Rahul Nadkarni| replace:: **Rahul Nadkarni** .. |Lau Møller Andersen| replace:: **Lau Møller Andersen** @@ -42,7 +42,7 @@ - Speed up reading of annotations in EDF+ files **by new contributor** |Jeroen Van Der Donckt|_ -- Add head to mri and mri to voxel space transform details to :ref:`plot_source_alignment` tutorial, by `Alex Rockhill`_ +- Add head to mri and mri to voxel space transform details to :ref:`tut-source-alignment` tutorial, by `Alex Rockhill`_ - Improve memory efficiency of :func:`mne.concatenate_epochs` by `Eric Larson`_ @@ -150,7 +150,7 @@ - Change default to ``surfaces='auto'`` from ``surfaces='head'`` to allow :func:`mne.viz.plot_alignment` to work when just passing a :class:`mne.Info` as ``plot_alignment(info)`` by `Eric Larson`_ -- Add ECoG misc EDF dataset to the :ref:`tut_working_with_ecog` tutorial to show snapshots of time-frequency activity by `Adam Li`_ +- Add ECoG misc EDF dataset to the :ref:`tut-working-with-ecog` tutorial to show snapshots of time-frequency activity by `Adam Li`_ - Add :func:`mne.viz.set_3d_options` and ``MNE_3D_OPTION_ANTIALIAS`` environment variable to control full-scene antialiasing (FXAA) in 3D functions like :ref:`mne coreg`, :func:`mne.viz.plot_alignment`, and :func:`mne.viz.plot_source_estimates`; this can be useful on systems where FXAA does not work well, such as some with MESA software rendering, by `Eric Larson`_ @@ -214,7 +214,7 @@ - Add reader for SNIRF NIRS data in :func:`mne.io.read_raw_snirf` by `Robert Luke`_ -- `~mne.Evoked` has gained ``tmin`` and ``tmax`` attributes for more consistency with `~mne.Epochs` by `Richard Höchenberger`_ +- `~mne.Evoked` has gained ``tmin`` and ``tmax`` attributes for more consistency with `~mne.Epochs` by `Richard Höchenberger`_ Bugs ~~~~ @@ -271,7 +271,7 @@ - Fix bug with :func:`mne.channels.read_custom_montage` where ``"headshape"`` points in SFP format were not read properly, by `Eric Larson`_ -- Fix bug with setting HTML classes when using :meth:`mne.Report.add_bem_to_section` by `Eric Larson`_ +- Fix bug with setting HTML classes when using ``mne.Report.add_bem_to_section`` by `Eric Larson`_ - Fix bug with convex-hull based MEG helmet creation where the face area could be covered up, by `Eric Larson`_ @@ -399,7 +399,7 @@ 1. Arguments to clustering functions, such as `mne.stats.permutation_cluster_test`, and 2. Function names for defining adjacency, such as `mne.spatio_temporal_src_adjacency` replacing ``mne.spatio_temporal_src_connectivity``. - + The complete list of changed function names is: - ``mne.channels.find_ch_connectivity`` → `~mne.channels.find_ch_adjacency` @@ -438,7 +438,7 @@ - The ``threshold`` argument in :meth:`mne.preprocessing.ICA.find_bads_ecg` defaults to ``None`` in version 0.21 but will change to ``'auto'`` in 0.22 by `Yu-Han Luo`_ -- The function ``mne.preprocessing.mark_flat`` has been deprecated in favor of :func:`mne.preprocessing.annotate_flat` by `Eric Larson`_ +- The function ``mne.preprocessing.mark_flat`` has been deprecated in favor of ``mne.preprocessing.annotate_flat`` by `Eric Larson`_ - The default argument ``meg=True`` in :func:`mne.pick_types` will change to ``meg=False`` in version 0.22 by `Clemens Brunner`_ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.22.inc python-mne-1.1.0+dfsg/doc/changes/0.22.inc --- python-mne-0.23.4+dfsg/doc/changes/0.22.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.22.inc 2022-08-03 15:48:14.000000000 +0000 @@ -9,8 +9,8 @@ .. _changes_0_22: -Version 0.22.0 --------------- +Version 0.22.0 (2020-12-17) +--------------------------- .. |Austin Hurst| replace:: **Austin Hurst** @@ -113,7 +113,7 @@ Bugs ~~~~ -- Fix orthogonalization of power envelopes in :func:`mne.connectivity.envelope_correlation` (:gh:`8658` **by new contributor** |Qianliang Li|_ and `Eric Larson`_) +- Fix orthogonalization of power envelopes in ``mne.connectivity.envelope_correlation`` (:gh:`8658` **by new contributor** |Qianliang Li|_ and `Eric Larson`_) - Fix data overwrite of cascading simulation operations :`mne.simulation.simulate_raw` (:gh:`8633` **by new contributor** |Jeff Stout|_) @@ -165,7 +165,7 @@ - Fix bug with volumetric rendering alpha in :meth:`mne.VolSourceEstimate.plot_3d` and related functions (:gh:`8663` by `Eric Larson`_) -- Fix missing documentation of :func:`mne.io.read_raw_nihon` in :ref:`tut-imorting-eeg-data` (:gh`8320` by `Adam Li`_) +- Fix missing documentation of :func:`mne.io.read_raw_nihon` in :ref:`tut-imorting-eeg-data` (:gh:`8320` by `Adam Li`_) - Fix bug with :func:`mne.add_reference_channels` when :func:`mne.io.Raw.reorder_channels` or related methods are used afterward (:gh:`8303`, :gh:`#8484` by `Eric Larson`_) diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.23.inc python-mne-1.1.0+dfsg/doc/changes/0.23.inc --- python-mne-0.23.4+dfsg/doc/changes/0.23.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.23.inc 2022-08-03 15:48:14.000000000 +0000 @@ -12,42 +12,10 @@ like this (where xxxx is the pull request number): - description of enhancement/bugfix/API change (:gh:`xxxx` **by new contributor** |Firstname Lastname|_) -.. _changes_0_23_4: - -Version 0.23.4 --------------- - -- Fix test tolerances for ARM (:gh:`9705` by `Eric Larson`_) - -.. _changes_0_23_3: - -Version 0.23.3 --------------- - -- Fix GitHub release diff (by `Eric Larson`_) - -.. _changes_0_23_2: - -Version 0.23.2 --------------- - -- Fix bug in shim for ``contextlib.nullcontext`` for Python 3.6 (by `Eric Larson`_) - -.. _changes_0_23_1: - -Version 0.23.1 --------------- - -- Fix bug in `mne.viz.plot_topomap` (and related methods) where passing ``axes`` that are part of a matplotlib figure that uses a constrained layout would emit warnings (:gh:`9558` by `Eric Larson`_) - -- Fix bugs with deprecated uses of SciPy and matplotlib functionality (:gh:`9550`, :gh:`9561`, :gh:`9557`, :gh:`9590`, and :gh:`9677` by `Eric Larson`_) - .. _changes_0_23_0: -Version 0.23.0 --------------- - -.. |New Contributor| replace:: **New Contributor** +Version 0.23.0 (2021-04-27) +--------------------------- .. |Jack Zhang| replace:: **Jack Zhang** @@ -125,9 +93,9 @@ - Add some preprocessing functions to the EEGLAB migration guide (:gh:`9169` **by new contributor** |Apoorva Karekal|_) -- Add :func:`mne.chpi.extract_chpi_locs_kit` to read cHPI coil locations from KIT/Yokogawa data (:gh:`` **by new contributor** |Matt Sanderson|_, `Robert Seymour`_, and `Eric Larson`_) +- Add :func:`mne.chpi.extract_chpi_locs_kit` to read cHPI coil locations from KIT/Yokogawa data (:gh:`8813` **by new contributor** |Matt Sanderson|_, `Robert Seymour`_, and `Eric Larson`_) -- Add ``match_alias`` parameter to :meth:`mne.io.Raw.set_montage` and related functions to match unrecognized channel location names to known aliases (:gh`8799` **by new contributor** |Zhi Zhang|_) +- Add ``match_alias`` parameter to :meth:`mne.io.Raw.set_montage` and related functions to match unrecognized channel location names to known aliases (:gh:`8799` **by new contributor** |Zhi Zhang|_) - Update the ``notebook`` 3d backend to use ``ipyvtk_simple`` for a better integration within ``Jupyter`` (:gh:`8503` by `Guillaume Favelier`_) @@ -135,7 +103,7 @@ - Add channel-specific annotation support to :class:`mne.Annotations` via ``ch_names`` parameter (:gh:`8896` by `Eric Larson`_) -- Add toggle-all button to :class:`mne.Report` HTML and ``width`` argument to :meth:`mne.Report.add_bem_to_section` (:gh:`8723` by `Eric Larson`_) +- Add toggle-all button to :class:`mne.Report` HTML and ``width`` argument to ``mne.Report.add_bem_to_section`` (:gh:`8723` by `Eric Larson`_) - Add infant template MRI dataset downloader :func:`mne.datasets.fetch_infant_template` (:gh:`8738` by `Eric Larson`_ and `Christian O'Reilly`_) @@ -177,11 +145,11 @@ - Add parameter ``align=True`` to `mne.viz.Brain.show_view` to make views relative to the closest canonical (MNI) axes rather than the native MRI surface RAS coordinates (:gh:`8794` by `Eric Larson`_) -- Add ``auto_close`` to `mne.Report.add_figs_to_section` and `mne.Report.add_slider_to_section` to manage closing figures (:gh`8730` by `Guillaume Favelier`_) +- Add ``auto_close`` to ``mne.Report.add_figs_to_section`` and ``mne.Report.add_slider_to_section`` to manage closing figures (:gh:`8730` by `Guillaume Favelier`_) - Add :func:`mne.write_head_bem` to support writing head surface files (:gh:`8841` by `Yu-Han Luo`_) -- The signal of ``resp`` (respiratory) channels is now assumed to be in the unit Volt (:gh:`8858` by `Richard Höchenberger`_) +- The signal of ``resp`` (respiratory) channels is now assumed to be in the unit Volt (:gh:`8858` by `Richard Höchenberger`_) - Static type checkers like Pylance (comes with VS Code) now display the parameters of many more functions correctly, largely improving overall usability for VS Code users (:gh:`8862` by `Richard Höchenberger`_) @@ -248,7 +216,7 @@ - Fix bug with :func:`mne.io.read_raw_kit` where missing marker coils were not handled (:gh:`8989` **by new contributor** |Judy D Zhu|_) -- Fix bug with `mne.connectivity.spectral_connectivity` where time axis in Epochs data object was dropped. (:gh:`8839` **by new contributor** |Anna Padee|_) +- Fix bug with ``mne.connectivity.spectral_connectivity`` where time axis in Epochs data object was dropped. (:gh:`8839` **by new contributor** |Anna Padee|_) - Fix bug with `mne.io.Raw.resample` to allow passing ``stim_picks='misc'`` (:gh:`8844` **by new contributor** |Enrico Varano|_ and `Eric Larson`_) @@ -260,7 +228,7 @@ - Fix bug with :func:`mne.preprocessing.maxwell_filter` where the eSSS basis had to exactly match the good channels instead of being a superset (:gh:`8675` by `Eric Larson`_) -- Fix bug with :meth:`mne.Report.add_bem_to_section` where ``n_jobs != 1`` would cause ``n_jobs`` subsets of MRI images in some orientations to be flipped (:gh:`8713` by `Eric Larson`_) +- Fix bug with ``mne.Report.add_bem_to_section`` where ``n_jobs != 1`` would cause ``n_jobs`` subsets of MRI images in some orientations to be flipped (:gh:`8713` by `Eric Larson`_) - Fix bug with :meth:`raw.plot() ` where annotations didn't immediately appear when changing window duration (:gh:`8689` by `Daniel McCloy`_) @@ -284,7 +252,7 @@ - Fix bug with :meth:`mne.Annotations.save` where files could be overwritten accidentally, it can now be controlled via the ``overwrite`` argument (:gh:`8896` by `Eric Larson`_) -- Fix bug with ``replace`` argument of :meth:`mne.Report.add_bem_to_section` and :meth:`mne.Report.add_slider_to_section` (:gh:`8723` by `Eric Larson`_) +- Fix bug with ``replace`` argument of ``mne.Report.add_bem_to_section`` and ``mne.Report.add_slider_to_section`` (:gh:`8723` by `Eric Larson`_) - Fix bug with :func:`mne.chpi.compute_chpi_locs` where all cHPI coils being off would lead to an empty array of the wrong dimensionality (:gh:`8956` by `Eric Larson`_) @@ -356,7 +324,7 @@ ~~~~~~~~~~~ - Introduced new ``'auto'`` settings for ``ICA.max_iter``. The old default ``max_iter=200`` will be removed in MNE-Python 0.24 (:gh:`9099` **by new contributor** |Cora Kim|_) -- `mne.viz.plot_sensors_connectivity` now allows setting the colorbar label via the ``cbar_label`` parameter (:gh:`9248` by `Daniel McCloy`_) +- ``mne.viz.plot_sensors_connectivity`` now allows setting the colorbar label via the ``cbar_label`` parameter (:gh:`9248` by `Daniel McCloy`_) - ``mne.read_selection`` has been deprecated in favor of `mne.read_vectorview_selection`. ``mne.read_selection`` will be removed in MNE-Python 0.24 (:gh:`8870` by `Richard Höchenberger`_) diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.24.inc python-mne-1.1.0+dfsg/doc/changes/0.24.inc --- python-mne-0.23.4+dfsg/doc/changes/0.24.inc 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.24.inc 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,425 @@ +.. NOTE: we are now using links to highlight new functions and classes. + Please follow the examples below like :func:`mne.stats.f_mway_rm`, so the + whats_new page will have a link to the function/class documentation. + +.. NOTE: there are 3 separate sections for changes, based on type: + - "Enhancements" for new features + - "Bugs" for bug fixes + - "API changes" for backward-incompatible changes + +.. NOTE: changes from first-time contributors should be added to the TOP of + the relevant section (Enhancements / Bugs / API changes), and should look + like this (where xxxx is the pull request number): + - description of enhancement/bugfix/API change (:gh:`xxxx` **by new contributor** |Firstname Lastname|_) + +.. _changes_0_24_0: + +Version 0.24.0 (2021-11-03) +--------------------------- + +.. |David Julien| replace:: **David Julien** + +.. |Dominique Makowski| replace:: **Dominique Makowski** + +.. |Romain Derollepot| replace:: **Romain Derollepot** + +.. |Jan Sosulski| replace:: **Jan Sosulski** + +.. |Xiaokai Xia| replace:: **Xiaokai Xia** + +.. |Marian Dovgialo| replace:: **Marian Dovgialo** + +.. |Pierre-Antoine Bannier| replace:: **Pierre-Antoine Bannier** + +.. |Darin Erat Sleiter| replace:: **Darin Erat Sleiter** + +.. |Mathieu Scheltienne| replace:: **Mathieu Scheltienne** + +.. |Timothy Gates| replace:: **Timothy Gates** + +.. |Reza Shoorangiz| replace:: **Reza Shoorangiz** + +.. |Evgeny Goldstein| replace:: **Evgeny Goldstein** + +.. |Joshua Teves| replace:: **Joshua Teves** + +.. |Riessarius Stargardsky| replace:: **Riessarius Stargardsky** + +.. |John Samuelsson| replace:: **John Samuelsson** + +Enhancements +~~~~~~~~~~~~ +.. - Add something cool (:gh:`9192` **by new contributor** |New Contributor|_) + +- Add `pooch` to system information reports (:gh:`9801` **by new contributor** |Joshua Teves|_) + +- Get annotation descriptions from the name field of SNIRF stimulus groups when reading SNIRF files via `mne.io.read_raw_snirf` (:gh:`9575` **by new contributor** |Darin Erat Sleiter|_) + +- Add support for NIRSport and NIRSport2 devices to `mne.io.read_raw_nirx` (:gh:`9348` and :gh:`9401` **by new contributor** |David Julien|_, **new contributor** |Romain Derollepot|_, `Robert Luke`_, and `Eric Larson`_) + +- New function :func:`mne.Dipole.to_volume_labels` to get atlas label for MRI coordinates. (:gh:`9376` by **new contributor** |Marian Dovgialo|_) + +- Add support for SURE parameter selection in :func:`mne.inverse_sparse.mixed_norm` and make ``alpha`` parameter now default to ``'sure'`` (:gh:`9430` by **new contributor** |Pierre-Antoine Bannier|_ and `Alex Gramfort`_) + +- Speed up BCD solver in :func:`mne.inverse_sparse.mixed_norm` by adding Anderson acceleration (:gh:`9481` by **new contributor** |Pierre-Antoine Bannier|_ and `Alex Gramfort`_) + +- Add support for list of channel types for EEG/sEEG/ECoG/DBS referencing (:gh:`9637` **by new contributor** |Mathieu Scheltienne|_) + +- Add the ability to set point size and line width in :func:`mne.viz.plot_sensors` and related functions (:gH:`9872` **by new contributor** |Dominique Makowski|_) + +- Add support for changing the default event id used by :func:`mne.make_fixed_length_epochs` (:gh:`9782` **by new contributor** |Mathieu Scheltienne|_) + +- Improve documentation for arguments ``threshold``, ``method`` and ``measure`` of ICA methods `~mne.preprocessing.ICA.find_bads_ecg`, `~mne.preprocessing.ICA.find_bads_ref` and `~mne.preprocessing.ICA.find_bads_eog` (:gh:`9858` **by new contributor** |Mathieu Scheltienne|_) + +- Add support for more than 3 source estimates in :func:`mne.viz.plot_sparse_source_estimates` (:gh:`9640` **by new contributor** |Pierre-Antoine Bannier|_ and `Alex Gramfort`_) + +- Add cortical signal suppression (CSS) :func:`mne.preprocessing.cortical_signal_suppression` (:gh:`6888`, :gh:`9892` **by new contributor** |John Samuelsson|_ and `Eric Larson`_) + +- Show all good channel types and counts when printing a :class:`mne.Info` in the notebook (:gh:`9725` by `Valerii Chirkov`_ and `Eric Larson`_) + +- Speed up point decimation in :func:`mne.io.read_raw_kit` by vectorization and use of :class:`scipy.spatial.cKDTree` (:gh:`9568` by `Jean-Remi King`_ and `Eric Larson`_) + +- Add ability to export EDF+ files using :func:`mne.export.export_raw` (:gh:`9643` by `Adam Li`_) + +- New function :func:`mne.chpi.get_chpi_info` to retrieve basic information about the cHPI system used when recording MEG data (:gh:`9369` by `Richard Höchenberger`_) + +- New namespace `mne.export` created to contain functions (such as `mne.export.export_raw` and `mne.export.export_epochs`) for exporting data to non-FIF formats (:gh:`9427` by `Eric Larson`_) + +- Add support for Hitachi fNIRS devices in `mne.io.read_raw_hitachi` (:gh:`9391` by `Eric Larson`_) + +- Add support for ``picks`` in :func:`mne.stc_near_sensors` (:gh:`9396` by `Eric Larson`_) + +- Add label methods `mne.Label.compute_area` and `mne.Label.distances_to_outside` (:gh:`9424` by `Eric Larson`_) + +- Add projections when printing a :class:`mne.Info` in the notebook (:gh:`9403` by `Alex Gramfort`_) + +- Add new function :func:`mne.bem.make_scalp_surfaces` to compute scalp surfaces for coregistration (:gh:`9463` by `Alex Gramfort`_) + +- Add support for interpolating oxy and deoxyhaemoglobin data types (:gh:`9431` by `Robert Luke`_) + +- Add support for SNIRF files in :class:`mne.Report` (:gh:`9443` by `Robert Luke`_) + +- Add support for exporting MFF evoked files using `mne.export.export_evokeds` and `mne.export.export_evokeds_mff` (:gh:`9406` by `Evan Hathaway`_) + +- :func:`mne.concatenate_raws`, :func:`mne.concatenate_epochs`, and :func:`mne.write_evokeds` gained a new parameter ``on_mismatch``, which controls behavior in case not all of the supplied instances share the same device-to-head transformation (:gh:`9438` by `Richard Höchenberger`_) + +- Add support for multiple datablocks (acquistions with pauses) in :func:`mne.io.read_raw_nihon` (:gh:`9437` by `Federico Raimondo`_) + +- Add new function :func:`mne.preprocessing.annotate_break` to automatically detect and mark "break" periods without any marked experimental events in the continuous data (:gh:`9445` by `Richard Höchenberger`_) + +- Add "time_format" to :meth:`mne.io.Raw.plot` and :meth:`mne.preprocessing.ICA.plot_sources` to display acquisition time on x-axis (:gh:`9419` by `Martin Schulz`_) + +- Speed up :meth:`mne.decoding.TimeDelayingRidge.predict` by switching to FFT-based convolution (:gh:`9458` by `Ross Maddox`_) + +- Show multiple colors and linestyles for excluded components with :class:`mne.Evoked` in :meth:`mne.preprocessing.ICA.plot_sources` (:gh:`9444` by `Martin Schulz`_) + +- Add functions for aligning MRI and CT data `mne.transforms.compute_volume_registration` and `mne.transforms.apply_volume_registration` (:gh:`9503` by `Alex Rockhill`_ and `Eric Larson`_) + +- Add tutorial for how to processes image (CT and MR) files in order to localize electrode contacts for intracranial recordings :ref:`tut-ieeg-localize` (:gh:`9484` by `Alex Rockhill`_) + +- Add vertex number in source space for :meth:`mne.VolSourceEstimate.plot` and :func:`mne.viz.plot_volume_source_estimates` (:gh:`9697` by `Eric Larson`_) + +- Add support for colormap normalization in :func:`mne.viz.plot_topomap` (:gh:`9468` by `Clemens Brunner`_) + +- Update :func:`mne.preprocessing.realign_raw` with Numpy-recommended polynomial fitting method (:gh:`9514` by `Erica Peterson`_) + +- Add a warning to `mne.preprocessing.nirs.beer_lambert_law` when source-detector distances are zero (:gh:`9541` by `Eric Larson`_) + +- Add ``exclude`` parameter to :meth:`mne.io.Raw.plot_psd` and :meth:`mne.Epochs.plot_psd` (:gh:`9519` by `Clemens Brunner`_) + +- Add `mne.Annotations.rename` to rename annotation descriptions (:gh:`9525` by `Robert Luke`_) + +- Add `mne.Annotations.set_durations` to set annotation durations (:gh:`9529` by `Robert Luke`_) + +- The ``exclude`` parameter in `mne.io.read_raw_edf`, `mne.io.read_raw_bdf`, and `mne.io.read_raw_gdf` now also accepts a regular expression (:gh:`9558` by `Clemens Brunner`_) + +- Add :meth:`mne.Evoked.get_data` method to :class:`mne.Evoked` (:gh:`9555` by `Stefan Appelhoff`_) + +- The :meth:`mne.Epochs.get_data` method now has a ``units`` parameter (:gh:`9553` by `Stefan Appelhoff`_) + +- Add :func:`mne.warp_montage_volume` to use an anatomical volume with channel locations at high or low insensities to apply a symmetric diffeomorphic registration to a template (e.g. fsaverage) space (:gh:`9544` by `Alex Rockhill`_) + +- :meth:`mne.io.Raw.get_data`, :meth:`mne.Epochs.get_data`, and :meth:`mne.Evoked.get_data` methods now have ``tmin`` and ``tmax`` parameters to specify data window in seconds to get (:gh:`9556` by `Stefan Appelhoff`_) + +- The :meth:`mne.Evoked.get_data` method now has a ``units`` parameter (:gh:`9578` by `Stefan Appelhoff`_) + +- Add `mne.chpi.compute_chpi_snr` and `mne.viz.plot_chpi_snr` for computing and plotting the time-varying SNR of continuously-active HPI coils (:gh:`9570` by `Daniel McCloy`_ and `Jussi Nurminen`_) + +- Add :func:`mne.get_montage_volume_labels` to find the regions of interest in a Freesurfer atlas anatomical segmentation for an intracranial electrode montage and :func:`mne.viz.plot_channel_labels_circle` to plot them (:gh:`9545` by `Alex Rockhill`_) + +- Add :func:`mne.viz.Brain.add_volume_labels` to plot subcortical surfaces and other regions of interest (:gh:`9540` by `Alex Rockhill`_ and `Eric Larson`_) + +- Add custom cortex curvature colors in :class:`mne.viz.Brain` via the ``cortex`` argument (:gh:`9750` by `Eric Larson`_) + +- Add :meth:`mne.channels.DigMontage.apply_trans` to apply a transform directly to a montage (:gh:`9601` by `Alex Rockhill`_) + +- :meth:`mne.preprocessing.ICA.fit` now emits a warning if any of the ``start``, ``stop``, ``reject``, and ``flat`` parameters are passed when performing ICA on `~mne.Epochs`. These parameters only have an effect on `~mne.io.Raw` data and were previously silently ignored in the case of `~mne.Epochs` (:gh:`9605` by `Richard Höchenberger`_) + +- :func:`mne.viz.plot_alignment` now emits a warning (instead of aborting with an exception) if the surfaces contain topological defects (:gh:`9614` by `Richard Höchenberger`_) + +- The coregistration GUI can now display the head surface even if there are topological defects. Previously, a low-resolution standard head unsuitable for individualized coregistration was displayed (:gh:`9614` by `Richard Höchenberger`_) + +- New :class:`mne.coreg.Coregistration` object to allow coregistration scripting without a dependency on mayavi (:gh:`9516` by `Guillaume Favelier`_). + +- Add :meth:`mne.viz.Brain.add_head` to plot the head surface (:gh:`9618` by `Alex Rockhill`_) + +- Add :func:`mne.channels.read_dig_localite` to read Localite electrode location files (:gh:`9658` by `Clemens Brunner`_) + +- Add :meth:`mne.viz.Brain.add_sensors` to plot sensor locations (:gh:`9585` by `Alex Rockhill`_) + +- Add :func:`mne.coreg.estimate_head_mri_t` to estimate the head->mri transform from fsaverage fiducials (:gh:`9585` by `Alex Rockhill`_) + +- Add :meth:`mne.channels.DigMontage.add_mni_fiducials` to add fiducials to a montage in MNI coordinates (:gh:`9682` by `Alex Rockhill`_) + +- Add :meth:`mne.channels.DigMontage.remove_fiducials` to remove fiducials under rare circumstances when the coordinate frame should not be set to "head" (:gh:`9684` by `Alex Rockhill`_) + +- Add remove methods for mesh objects in :class:`mne.viz.Brain` (:gh:`9688` by `Alex Rockhill`_) + +- Add ``--show-paths`` and ``--developer`` options to :ref:`mne sys_info` (:gh:`9789` by `Eric Larson`_) + +- Add ability to export EDF+ files using :func:`mne.export.export_raw` (:gh:`9643` by `Adam Li`_) + +- Reading EDF files via :func:`mne.io.read_raw_edf` now can infer channel type from the signal label in the EDF header (:gh:`9694` by `Adam Li`_) + +- Add :func:`mne.gui.locate_ieeg` to locate intracranial electrode contacts from a CT, an MRI (with Freesurfer ``recon-all``) and the channel names from an :class:`mne.Info` object (:gh:`9586` by `Alex Rockhill`_) + +- All data fetching code now relies on ``pooch``, which is an added optional requirement for dataset fetchers (:gh:`9742` by `Adam Li`_ and `Daniel McCloy`_) + +- Add phantom FreeSurfer subject fetcher :func:`mne.datasets.fetch_phantom` to allow fetching the Otaniemi phantom (:gh:`9796` by `Eric Larson`_) + +- Add :func:`mne.datasets.fetch_dataset` to allow packages to fetch datasets in a similar fashion to MNE (:gh:`9763` by `Adam Li`_) + +- Add full ECoG dataset to MNE-misc-data and demonstrate its use in :ref:`ex-electrode-pos-2d` and :ref:`tut-ieeg-localize` (:gh:`9784` by `Alex Rockhill`_) + +- Add options ``tol`` and ``accuracy`` to :func:`mne.fit_dipole` to control optimization (:gh:`9810` by `Eric Larson`_) + +- Completely revamp the `~mne.Report` experience: new HTML layout, many new methods, more flexibility; the functionality is demonstrated in :ref:`tut-report` (:gh:`9754`, :gh:`9828`, :gh:`9847`, :gh:`9860`, :gh:`9861`, :gh:`9862`, :gh:`9863`, :gh:`9871`, :gh:`9881`, :gh:`9891`, :gh:`9901` by `Richard Höchenberger`_, `Eric Larson`_, and `Alex Gramfort`_) + +- Add basic HTML representations of `~mne.Forward` and `~mne.minimum_norm.InverseOperator` instances for a nicer Jupyter experience (:gh:`9754` by `Richard Höchenberger`_) + +- `mne.io.read_raw_brainvision` now handles ASCII data with comma-separated values, as may be exported from BrainVision Analyzer (:gh:`9795` by `Richard Höchenberger`_) + +- Add :func:`mne.preprocessing.ieeg.project_sensors_onto_brain` to project ECoG sensors onto the pial surface to compensate for brain shift (:gh:`9800` by `Alex Rockhill`_) + +- Add support for data acquired with NIRx devices using Aurora software version 2021.9 (:gh:`9800` by `Robert Luke`_, and `Eric Larson`_) + +- All functions for reading and writing files should now automatically handle ``~`` (the tilde character) and expand it to the user's home directory. Should you come across any function that doesn't do it, please do let us know! (:gh:`9613`, :gh:`9845` by `Richard Höchenberger`_) + +- All functions accepting a FreeSurfer subjects directory via a ``subjects_dir`` parameter can now consume :py:class:`pathlib.Path` objects too (used to be only strings) (:gh:`9613` by `Richard Höchenberger`_) + +- Add support for colormap normalization in :meth:`mne.time_frequency.AverageTFR.plot` (:gh:`9851` by `Clemens Brunner`_) + +- Add support for BIDS-compatible filenames when splitting big epochs files via the new ``split_naming`` parameter in :meth:`mne.Epochs.save` (:gh:`9869` by `Denis Engemann`_) + +- Add ``by_event_type`` parameter to :meth:`mne.Epochs.average` to create a list containing an :class:`mne.Evoked` object for each event type (:gh:`9859` by `Marijn van Vliet`_) + +- Add pyqtgraph as a new backend for :meth:`mne.io.Raw.plot` (:gh:`9687` by `Martin Schulz`_) + +- Add :func:`mne.viz.set_browser_backend`, :func:`mne.viz.use_browser_backend` and :func:`mne.viz.get_browser_backend` to set matplotlib or pyqtgraph as backend for :meth:`mne.io.Raw.plot` (:gh:`9687` by `Martin Schulz`_) + +Bugs +~~~~ +- Fix bug in :meth:`mne.io.Raw.pick` and related functions when parameter list contains channels which are not in info instance (:gh:`9708` **by new contributor** |Evgeny Goldstein|_) + +- Fix a few typos (:gh:`9706` **by new contributor** |Timothy Gates|_) + +- Fix bug with :meth:`mne.Epochs.crop` and :meth:`mne.Evoked.crop` when ``include_tmax=False``, where the last sample was always cut off, even when ``tmax > epo.times[-1]`` (:gh:`9378` **by new contributor** |Jan Sosulski|_) + +- Fix bug with `mne.io.read_raw_curry` to allow reading Curry 7 and 8 event files with '.ceo' and '.cdt.ceo' extensions (:gh:`9381`, :gh:`9712` by **new contributor** |Xiaokai Xia|_, `Daniel McCloy`_, and **by new contributor** |Reza Shoorangiz|_) + +- Fix bug with `mne.compute_rank`, `mne.cov.compute_whitener` and `mne.preprocessing.ICA.fit` when explicit picks including bad channels are provided (:gh:`9719` **by new contributor** |Mathieu Scheltienne|_) + +- Fix bug with :func:`mne.concatenate_epochs` where the concatenated events could end up in non-chronological order. (:gh:`9765` **by new contributor** |Jan Sosulski|_) + +- Fix bug where :func:`mne.time_frequency.psd_array_welch` and :func:`mne.time_frequency.psd_array_multitaper` failed to handle negative integer for ``n_jobs`` argument (:gh:`9849` **by new contributor** |Riessarius Stargardsky|_) + +- Fix bug where resampling returns empty instances (:gh:`9897` **by new contributor** |Mathieu Scheltienne|_ and `Eric Larson`_) + +- Fix bug with `mne.io.Raw.get_montage` now returning both good and bad channels in the montage. (:gh:`9920` **by new contributor** |Mathieu Scheltienne|_) + +- Fix bug with :func:`mne.io.read_raw_nihon` where latin-1 annotations could not be read (:gh:`9384` by `Alex Gramfort`_) + +- Fix bug when printing a :class:`mne.io.RawArray` in the notebook (:gh:`9404` by `Alex Gramfort`_) + +- Fix bug when computing rank from info for SSS data with only gradiometers or magnetometers (:gh:`9435` by `Alex Gramfort`_) + +- Fix bug with `mne.preprocessing.find_bad_channels_maxwell` where all-flat segments could lead to an error (:gh:`9531` by `Eric Larson`_) + +- Fix bug with `mne.io.Raw.set_montage` and related functions where the channel coordinate frame was not properly set to head (:gh:`9447` by `Eric Larson`_) + +- Fix bug with `mne.io.read_raw_fieldtrip` and `mne.read_epochs_fieldtrip` where channel positions were not set properly (:gh:`9447` by `Eric Larson`_) + +- Fix bug with :func:`mne.io.read_raw_kit` where omitting HPI coils could lead to an :exc:`python:AssertionError` on reading (:gh:`9612` by `Eric Larson`_) + +- Fix bug with :func:`mne.io.read_raw_edf` where reading only stimulus channels would lead to an error (:gh:`9831` by `Eric Larson`_) + +- Fix bug with `mne.preprocessing.nirs.optical_density` where protection against zero values was not guaranteed (:gh:`9522` by `Eric Larson`_) + +- :func:`mne.concatenate_raws` now raises an exception if ``raw.info['dev_head_t']`` differs between files. This behavior can be controlled using the new ``on_mismatch`` parameter (:gh:`9438` by `Richard Höchenberger`_) + +- Fixed bug in :meth:`mne.Epochs.drop_bad` where subsequent rejections failed if they only specified thresholds for a subset of the channel types used in a previous rejection (:gh:`9485` by `Richard Höchenberger`_). + +- Fix bug with `mne.simulation.simulate_evoked`, `mne.apply_forward`, and `mne.apply_forward_raw` where systems with EEG channels that come before MEG channels would have them mixed up in the output evoked or raw object (:gh:`#9513` by `Eric Larson`_) + +- In :func:`mne.viz.plot_ica_scores` and :meth:`mne.preprocessing.ICA.plot_scores`, the figure and axis titles no longer overlap when plotting only a single EOG or ECG channel (:gh:`9489` by `Richard Höchenberger`_). + +- Ensure `mne.io.Raw.get_montage` works with SNIRF data (:gh:`9524` by `Robert Luke`_) + +- Fix bug in :func:`mne.setup_volume_source_space` where non-finite positions could be used in a discrete source space (:gh:`9603` by `Eric Larson`_) + +- Fix bug in :func:`mne.viz.plot_topomap` (and related methods like :meth:`mne.Evoked.plot_topomap`) where large distances between electrodes (higher than head radius) would lead to an error (:gh:`9528` by `Mikołaj Magnuski`_). + +- Fix bug in `mne.viz.plot_topomap` (and related methods) where passing ``axes`` that are part of a matplotlib figure that uses a constrained layout would emit warnings (:gh:`9558` by `Eric Larson`_) + +- Fix bug in :func:`mne.make_forward_solution` where impossible sensor-BEM geometries were not checked (:gh:`9893` by `Eric Larson`_) + +- Fix bug in :func:`mne.concatenate_epochs` when concatenating :class:`mne.Epochs` objects with 0 events (:gh:`9535` by `Marijn van Vliet`_) + +- Fix bug in :func:`mne.viz.Brain.screenshot` where the RGBA mode was not supported (:gh:`9564` by `Guillaume Favelier`_). + +- Fix bug in :func:`mne.io.read_raw_egi` where reading data from a data segment that is part of an acquisition skip would lead to an error (:gh:`9565` by `Eric Larson`_) + +- Prevent :meth:`mne.io.Raw.plot` windows from spawning at sizes too small to properly render (:gh:`9629` by `Daniel McCloy`_) + +- Fix bug where :meth:`mne.io.Raw.plot` raised an error when plotting raw dipole data (:gh:`9771` by `Eric Larson`_) + +- Fix bug in ::meth:`mne.preprocessing.ICA.find_bads_ecg` where passing ``start`` and ``stop`` lead to erroneous data windows depending on the combination of Raw, Epochs, Evoked, and the type (int, float, None) of ``start`` and ``stop`` (:gh:`9556` by `Stefan Appelhoff`_) + +- Fix bug in :func:`mne.viz.set_3d_backend` and :func:`mne.viz.get_3d_backend` where the PyVistaQt-based backend was ambiguously named ``'pyvista'`` instead of ``'pyvistaqt'``; use ``set_3d_backend('pyvistaqt')`` and expect ``'pyvistaqt'`` as the output of :func:`mne.viz.get_3d_backend` instead of ``'pyvista'``, and consider using ``get_3d_backend().startswith('pyvista')`` for example for backward-compatible conditionals (:gh:`9607` by `Guillaume Favelier`_) + +- Fix bug in :func:`mne.viz.plot_compare_evokeds` where confidence bands were not drawn if only one condition was plotted (:gh:`9663` by `Daniel McCloy`_) + +- Fix bug where setting of a montage with fNIRS data got set to "unknown" coordinate frame when it should have been in "head" (:gh:`9630` by `Alex Rockhill`_) + +- Fix bug where "seeg", "ecog", "dbs" and "fnirs" data had coordinate frame unknown upon loading from a file when it should have been in "head" (:gh:`9580` by `Alex Rockhill`_) + +- Raise error when no ``trans`` is provided to :func:`mne.viz.plot_alignment` when required instead of assuming identitiy head->mri transform (:gh:`9585` by `Alex Rockhill`_) + +- Fix bug where :meth:`mne.Epochs.equalize_event_counts` failed when only one good epoch existed for one of the event types (:gh:`9758` by `Daniel McCloy`_) + +- Fix bug where channels with a dollar sign ($) were not being labeled "misc" in :func:`mne.io.read_raw_nihon` (:gh:`9695` by `Adam Li`_) + +- Fix bug where :func:`mne.io.read_raw_persyst` was lower-casing events it found in the ``.lay`` file (:gh:`9746` by `Adam Li`_) + +- Fix bug with Qhull when plotting OPM sensors in :func:`mne.viz.plot_alignment` (:gh:`9799` and :gh:`9804` by `Eric Larson`_) + +- Fix bug where :func:`mne.io.read_raw_snirf` was including the landmark index as a spatial coordinate (:gh:`9777` by `Robert luke`_) + +- Fix bug where `mne.Annotations` were not appending channel names when being added together (:gh:`9780` by `Adam Li`_) + +- `mne.viz.plot_evoked_joint` now correctly handles a ``times='peaks'`` parameter value (:gh:`9754` by `Richard Höchenberger`_) + +- In `mne.viz.plot_compare_evokeds`, slightly adjust the x-axis limit calculation to avoid drawing an axis that is too short (:gh:`9754` by `Richard Höchenberger`_) + +- Fix a bug with :func:`mne.viz.snapshot_brain_montage` with the Mayavi backend where electrodes were shown in the wrong positions, and with the PyVista backend where the snapshot always contained the electrodes but could be missing a hemisphere (:gh:`9933` by `Eric Larson`_) + +- In :meth:`mne.io.Raw.plot_psd` and :meth:`mne.Epochs.plot_psd`, avoid overlap between subplot titles and x-axis tick labels (:gh:`9864` by `Richard Höchenberger`_) + +- In :meth:`mne.Epochs.plot_psd_topomap`, the data is now scaled to match the output of :meth:`mne.Epochs.plot_psd` (:gh:`9873` by `Richard Höchenberger`_) + +- Fix channel locations with ``NaN`` values causing all channel locations not to be plotted in :func:`mne.viz.Brain.add_sensors` (:gh:`9911` by `Alex Rockhill`_) + +- Fix infinite loop bug in :func:`mne.get_montage_volume_labels` (:gh:`9940` by `Alex Rockhill`_) + +API changes +~~~~~~~~~~~ +- The :class:`mne.Info` class is now more strictly checked when attributes are set. Setting most attributes directly will lead to an error in the next release. See the docstring of :class:`mne.Info` for more information (:gh:`9867` **by new contributor** |Mathieu Scheltienne|_) + +- The Mayavi 3D backend has been deprecated (:gh:`9904` by `Eric Larson`_): + + - In 3D plotting functions, use PyVista-based backends (``'pyvistaqt'`` and ``'notebook'``) as PySurfer/Mayavi will be removed in the next version + + - To use the :ref:`mne kit2fiff` command-line GUI for fiducial markers, install the separate ``mne-kit-gui`` module, which can still be launched via ``$ mne kit2fiff`` + + - The ``mne.gui.fiducials`` GUI has been deprecated, use :ref:`mne coreg` or ``mne_kit_gui.fiducials()`` to set MRI fiducials instead + +- In `mne.compute_source_morph`, the ``niter_affine`` and ``niter_sdr`` parameters have been replaced by ``niter`` and ``pipeline`` parameters for more consistent and finer-grained control of registration/warping steps and iteration (:gh:`9505` by `Alex Rockhill`_ and `Eric Larson`_) + +- Split :func:`mne.viz.Brain.show_view` argument ``view`` into ``azimuth``, ``elevation`` and ``focalpoint`` for clearer view setting and make the default for ``row`` and ``col`` apply to all rows and columns (:gh:`9596` by `Alex Rockhill`_) + +- Deprecate ``solver='prox'`` in :func:`mne.inverse_sparse.mixed_norm` in favor of ``solver='cd'`` and ``solver='bcd'`` as coordinate descent solvers consistently outperform proximal gradient descent (:gh:`9608` by `Pierre-Antoine Bannier`_) + +- All ``mne.connectivity`` functions have moved to the ``mne-connectivity`` package; they are deprecated in MNE-Python and will be removed in version 0.25 (:gh:`9493` by `Adam Li`_). + +- :func:`mne.inverse_sparse.mixed_norm` now simply warns when source estimates contain no dipole, e.g. if data are too noisy and alpha is based on SURE (:gh:`9685` by `Alex Gramfort`_) + +- Deprecate functions :samp:`mne.datasets.{DATASET_NAME}.has_{DATASET_NAME}_data()` for these datasets: ``epilepsy_ecog``, ``fnirs_motor``, ``multimodal``, ``opm``, ``phantom_4dbti``, ``refmeg_noise``, ``sample``, ``somato``, and ``ssvep``. Use the generic :func:`mne.datasets.has_dataset` instead (:gh:`9781` by `Daniel McCloy`_ and `Adam Li`_) + +- :class:`mne.Report` modernization has led to multiple deprecations (:gh:`9754` by `Richard Höchenberger`_): + + - ``mne.Report.add_figs_to_section`` and ``mne.Report.add_slider_to_section`` have been deprecated in favor of :meth:`mne.Report.add_figure` + + - ``mne.Report.add_images_to_section`` has been deprecated in favor of :meth:`mne.Report.add_image` + + - ``mne.Report.add_bem_to_section`` has been deprecated in favor of :meth:`mne.Report.add_bem` + + - ``mne.Report.add_htmls_to_section`` has been deprecated in favor of :meth:`mne.Report.add_html` + + - In :meth:`mne.Report.parse_folder`, the ``sort_sections`` parameter has been deprecated in favor of ``sort_content`` + + - In :meth:`mne.Report.remove`, the ``caption`` and ``section`` parameters have been deprecated in favor of ``title`` and ``tags``, respectively + + - The ``mne.Report.sections`` attribute has been deprecated in favor of ``mne.Report.tags`` + + - The ``mne.Report.fnames`` attribute has been deprecated without replacement + +- :meth:`mne.Epochs.plot` and :func:`mne.viz.plot_epochs` gained parameter ``show_scalebars`` analogous to :meth:`mne.viz.plot_raw` (:gh:`9815` by `Daniel McCloy`_) + +- The output folder name for HF_SEF datasets is now ``hf_sef`` instead of ``HF_SEF`` (:gh:`9763` by `Adam Li`_) + +- Deprecate ``mne.viz.utils.center_cmap`` (:gh:`9851` by `Clemens Brunner`_) + +- The default partial pathlength factor of :func:`mne.preprocessing.nirs.beer_lambert_law` will change from 0.1 in 0.24 to 6.0 in the next release (:gh:`9843` by `Robert Luke`_) + +- ``mne.preprocessing.ICA.detect_artifacts`` has been deprecated. Please use `~mne.preprocessing.ICA.find_bads_eog` and `~mne.preprocessing.ICA.find_bads_ecg` instead (:gh:`9909` by `Richard Höchenberger`_) + +Authors +~~~~~~~ +People who contributed to this release in alphabetical order +(people with a + are first time contributors): + +* Adam Li +* Alex Rockhill +* Alexandre Gramfort +* Britta Westner +* Clemens Brunner +* Daniel McCloy +* Darin Erat Sleiter+ +* David Julien+ +* Denis A. Engemann +* Dominique Makowski+ +* Eric Larson +* Erica Peterson +* Evan Hathaway +* Evgeny Goldstein+ +* Fede Raimondo +* Gansheng Tan+ +* Guillaume Favelier +* Hubert Banville +* Jan Sosulski+ +* Jean-Remi King +* Jeff Stout +* Johann Benerradi +* John Samuelsson+ +* Josh Koen+ +* Joshua Teves+ +* Lukas Hecker+ +* Luke Bloy +* Marian Dovgialo+ +* Marijn van Vliet +* Martin Schulz +* Mathieu Scheltienne+ +* Mikołaj Magnuski +* Pierre-Antoine Bannier+ +* Reza Shoorangiz+ +* Richard Höchenberger +* Riessarius Stargardsky+ +* Robert Luke +* Romain Derollepot+ +* Ross Maddox +* Ryan Law+ +* Stefan Appelhoff +* Steve Matindi+ +* Timothy Gates+ +* Valerii Chirkov +* Xiaokai Xia+ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.2.inc python-mne-1.1.0+dfsg/doc/changes/0.2.inc --- python-mne-0.23.4+dfsg/doc/changes/0.2.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.2.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_2: -Version 0.2 ------------ +Version 0.2 (2011-11-08) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.3.inc python-mne-1.1.0+dfsg/doc/changes/0.3.inc --- python-mne-0.23.4+dfsg/doc/changes/0.3.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.3.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_3: -Version 0.3 ------------ +Version 0.3 (2012-03-23) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.4.inc python-mne-1.1.0+dfsg/doc/changes/0.4.inc --- python-mne-0.23.4+dfsg/doc/changes/0.4.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.4.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_4: -Version 0.4 ------------ +Version 0.4 (2012-08-24) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.5.inc python-mne-1.1.0+dfsg/doc/changes/0.5.inc --- python-mne-0.23.4+dfsg/doc/changes/0.5.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.5.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_5: -Version 0.5 ------------ +Version 0.5 (2012-12-27) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.6.inc python-mne-1.1.0+dfsg/doc/changes/0.6.inc --- python-mne-0.23.4+dfsg/doc/changes/0.6.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.6.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_6: -Version 0.6 ------------ +Version 0.6 (2013-06-15) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.7.inc python-mne-1.1.0+dfsg/doc/changes/0.7.inc --- python-mne-0.23.4+dfsg/doc/changes/0.7.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.7.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_7: -Version 0.7 ------------ +Version 0.7 (2013-11-26) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.8.inc python-mne-1.1.0+dfsg/doc/changes/0.8.inc --- python-mne-0.23.4+dfsg/doc/changes/0.8.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.8.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_8: -Version 0.8 ------------ +Version 0.8 (2014-06-25) +------------------------ Changelog ~~~~~~~~~ diff -Nru python-mne-0.23.4+dfsg/doc/changes/0.9.inc python-mne-1.1.0+dfsg/doc/changes/0.9.inc --- python-mne-0.23.4+dfsg/doc/changes/0.9.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/0.9.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,7 +1,7 @@ .. _changes_0_9: -Version 0.9 ------------ +Version 0.9 (2015-05-22) +------------------------ Changelog ~~~~~~~~~ @@ -88,7 +88,7 @@ - Add ``evoked.as_type`` to allow remapping data in MEG channels to virtual magnetometer or gradiometer channels by `Mainak Jas`_ -- Add :meth:`mne.Report.add_bem_to_section`, :meth:`mne.Report.add_htmls_to_section` methods to :class:`mne.Report` by `Teon Brooks`_ +- Add ``mne.Report.add_bem_to_section``, ``mne.Report.add_htmls_to_section`` methods to :class:`mne.Report` by `Teon Brooks`_ - Add support for KIT epochs files with ``read_epochs_kit`` by `Teon Brooks`_ diff -Nru python-mne-0.23.4+dfsg/doc/changes/1.0.inc python-mne-1.1.0+dfsg/doc/changes/1.0.inc --- python-mne-0.23.4+dfsg/doc/changes/1.0.inc 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/1.0.inc 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,325 @@ +.. NOTE: we use cross-references to highlight new functions and classes. + Please follow the examples below like :func:`mne.stats.f_mway_rm`, so the + whats_new page will have a link to the function/class documentation. + +.. NOTE: there are 3 separate sections for changes, based on type: + - "Enhancements" for new features + - "Bugs" for bug fixes + - "API changes" for backward-incompatible changes + +.. NOTE: changes from first-time contributors should be added to the TOP of + the relevant section (Enhancements / Bugs / API changes), and should look + like this (where xxxx is the pull request number): + + - description of enhancement/bugfix/API change (:gh:`xxxx` by + :newcontrib:`Firstname Lastname`) + + Also add a corresponding entry for yourself in doc/changes/names.inc + +.. _changes_1_0_0: + +Version 1.0.0 (2022-03-21) +-------------------------- + +Enhancements +~~~~~~~~~~~~ + +- Add ``use_orig_time`` option to :meth:`mne.Annotations.crop`. (:gh:`10396` by :newcontrib:`Michiru Kaneda`) + +- Speed up :func:`mne.preprocessing.annotate_muscle_zscore`, :func:`mne.preprocessing.annotate_movement`, and :func:`mne.preprocessing.annotate_nan` through better annotation creation (:gh:`10089` by :newcontrib:`Senwen Deng`) + +- Fix some unused variables in time_frequency_erds.py example (:gh:`10076` by :newcontrib:`Jan Zerfowski`) + +- Document ``BAD_ACQ_SKIP`` annotation behavior (:gh:`10054` by :newcontrib:`Etienne de Montalivet`) + +- Add link to related ``MNE-ARI`` package (:gh:`10174` by :newcontrib:`John Veillette`) + +- :func:`mne.time_frequency.psd_array_multitaper` can now return complex results per-taper when specifying ``output='complex'`` (:gh:`10307` by `Mikołaj Magnuski`_) + +- :func:`mne.time_frequency.tfr_array_multitaper` can now return results for ``output='phase'`` instead of an error (:gh:`10281` by `Mikołaj Magnuski`_) + +- Add show local maxima toggling button to :func:`mne.gui.locate_ieeg` (:gh:`9952` by `Alex Rockhill`_) + +- Show boundaries in :func:`mne.gui.locate_ieeg` (:gh:`10379` by `Eric Larson`_) + +- Add argument ``cval`` to :func:`mne.transforms.apply_volume_registration` to set interpolation values outside the image domain (:gh:`10379` by `Eric Larson`_) + +- Improve docstring of :class:`mne.Info` and add attributes that were not covered (:gh:`9922` by `Mathieu Scheltienne`_) + +- Add an alternate, manual procedure for aligning a CT to an MR procedure to :ref:`tut-ieeg-localize` (:gh:`9978` by `Alex Rockhill`_) + +- Improve docstring of export functions :func:`mne.export.export_raw`, :func:`mne.export.export_epochs`, :func:`mne.export.export_evokeds`, :func:`mne.export.export_evokeds_mff` and issue a warning when there are unapplied projectors (:gh:`9994` by `Mathieu Scheltienne`_) + +- Add support for reading haemoglobin fNIRS data to :func:`mne.io.read_raw_snirf` (:gh:`9929` by `Robert Luke`_) + +- Add ``fill_hole_size`` keyword argument to :func:`mne.viz.Brain.add_volume_labels` to close holes in the mesh (:gh:`10024` by `Alex Rockhill`_) + +- Changed :class:`mne.Epochs` and :class:`mne.Evoked` to have a more concise ``__repr__`` to improve interactive MNE usage in Python Interactive Console, IDEs, and debuggers when many events are handled. (:gh:`10042` by `Jan Sosulski`_) + +- Improve docstring of ``events`` arguments and cross-referencing to :term:`events` (:gh:`10056` by `Mathieu Scheltienne`_) + +- Speed up repeated surface-smoothing operation (e.g., in repeated calls to :meth:`stc.plot() `) (:gh:`10077` by `Eric Larson`_) + +- Add ``verbose`` parameter to :func:`mne.io.Raw.load_bad_channels` and log information on how bad channels are updated (:gh:`10102` by `Stefan Appelhoff`_) + +- Add ``infer_type`` argument to :func:`mne.io.read_raw_edf` and :func:`mne.io.read_raw_bdf` to automatically infer channel types from channel labels (:gh:`10058` by `Clemens Brunner`_) + +- Reduce the time it takes to generate a :class:`mne.io.Raw`, :class:`~mne.Epochs`, or :class:`~mne.preprocessing.ICA` figure if a ``scalings`` parameter is provided (:gh:`10109` by `Richard Höchenberger`_ and `Eric Larson`_) + +- :meth:`mne.Report.add_raw` gained a new ``scalings`` parameter to provide custom data scalings for the butterfly plots (:gh:`10109` by `Richard Höchenberger`_) + +- The ``butterfly`` parameter of :meth:`mne.Report.add_raw` now also accepts numbers to specify how many segments to plot (:gh:`10115` by `Richard Höchenberger`_) + +- The ``psd`` parameter of :meth:`mne.Report.add_epochs` now also accepts numbers to specify the signal duration used for PSD calculation (:gh:`10119` by `Richard Höchenberger`_) + +- Drastically speed up butterfly plot generation in :meth:`mne.Report.add_raw`. We now don't plot annotations anymore; however, we feel that the speed improvements justify this change, also considering the annotations were of limited use in the displayed one-second time slices anyway (:gh:`10114`, :gh:`10116` by `Richard Höchenberger`_) + +- In :class:`mne.Report`, limit the width of automatically generated figures to a maximum of 850 pixels (450 pixels for :class:`mne.SourceEstimate` plots), and the resolution to 100 DPI to reduce file size, memory consumption, and – in some cases like :meth:`mne.Report.add_stc` – processing time (:gh:`10126`, :gh:`10129`, :gh:`10135`, :gh:`10142` by `Richard Höchenberger`_) + +- :class:`~mne.Epochs` metadata tables are now included in :class:`mne.Report` (:gh:`10166` by `Richard Höchenberger`_) + +- :func:`mne.get_head_surf` and :func:`mne.dig_mri_distances` gained a new parameter, ``on_defects``, controlling how to handle surfaces with topological defects (:gh:`10175` by `Richard Höchenberger`_) + +- :meth:`mne.Report.add_epochs` gained a new parameter, ``drop_log_ignore``, to control which drop reasons to omit when creating the drop log plot (:gh:`10182` by `Richard Höchenberger`_) + +- :meth:`mne.Epochs.plot_drop_log` now also includes the absolute number of epochs dropped in the title (:gh:`10186` by `Richard Höchenberger`_) + +- Add a button to show the maximum intensity projection in :func:`mne.gui.locate_ieeg` (:gh:`10185` by `Alex Rockhill`_) + +- Annotations from a :class:`~mne.io.Raw` object are now preserved by the :class:`~mne.Epochs` constructor and are supported when saving Epochs (:gh:`9969` and :gh:`10019` by `Adam Li`_) + +- Add a checkbox to show and hide the MEG helmet in the coregistration GUI (:gh:`10200` by `Guillaume Favelier`_) + +- The coregistration GUI (instantiated via :func:`mne.gui.coregistration`) gained a new attribute, ``coreg``, to access the :class:`mne.coreg.Coregistration` instance used by the GUI (:gh:`10255` by `Richard Höchenberger`_) + +- Add marching cubes display of head if :func:`mne.bem.make_scalp_surfaces` has not computed or the recon-all hasn't finished (:gh:`10202` by `Alex Rockhill`_) + +- The default interaction style of :func:`mne.gui.coregistration` and :func:`mne.viz.plot_alignment` has been changed to ``'terrain'``, which keeps one axis fixed and should make interactions with the 3D scene more predictable (:gh:`9972`, :gh:`10206` by `Richard Höchenberger`_) + +- :func:`mne.gui.coregistration` now uses the proper widget style for push buttons, making for a more native feel of the application (:gh:`10220` by `Richard Höchenberger`_ and `Guillaume Favelier`_) + +- :class:`mne.coreg.Coregistration`, :func:`mne.scale_bem`, and :func:`mne.scale_mri` gained a new parameter, ``on_defects``, controlling how to handle topological defects (:gh:`10230`, :gh:`10249` by `Richard Höchenberger`_) + +- :class:`mne.coreg.Coregistration` gained a new attribute, ``fiducials``, allowing for convenient retrieval of the MRI fiducial points (:gh:`10243`, by `Richard Höchenberger`_) + +- Added plotting points to represent contacts on the max intensity projection plot for :func:`mne.gui.locate_ieeg` (:gh:`10212` by `Alex Rockhill`_) + +- Add lines in 3D and on the maximum intensity projection when more than two electrode contacts are selected to aid in identifying that contact for :func:`mne.gui.locate_ieeg` (:gh:`10212` by `Alex Rockhill`_) + +- Add a ``block`` parameter to :class:`mne.viz.Brain` and the UI of :class:`mne.coreg.Coregistration` to prevent the windows from closing immediately when running in a non-interactive Python session (:gh:`10222` by `Guillaume Favelier`_) + +- All methods of :class:`mne.Report` with a ``tags`` parameter now also accept a single tag passed as a string (previously, you needed to pass a tuple of strings, even for a single tag) (:gh:`10183`, by `Richard Höchenberger`_) + +- :meth:`mne.Report.add_trans` has gained a new parameter, ``alpha``, to control the level of opacity of the rendered head (:gh:`10247`, by `Richard Höchenberger`_) + +- The new convenience function :func:`mne.event.match_event_names` allows for straightforward checking if a specific event name or a group of events is present in a collection of event names (:gh:`10233` by `Richard Höchenberger`_) + +- :meth:`Epochs.plot` is now supported by the pyqtgraph-backend (:gh:`10297` by `Martin Schulz`_) + +- The ``map_surface`` parameter of :meth:`mne.viz.Brain.add_foci` now works and allows you to add foci to a rendering of a brain that are positioned at the vertex of the mesh closest to the given coordinates (:gh:`10299` by `Marijn van Vliet`_) + +- :meth:`mne.preprocessing.ICA.plot_sources()` is now also supported by the ``qt`` backend (:gh:`10330` by `Martin Schulz`_) + +- Added :meth:`mne.viz.Brain.add_dipole` and :meth:`mne.viz.Brain.add_forward` to plot dipoles on a brain as well as :meth:`mne.viz.Brain.remove_dipole` and :meth:`mne.viz.Brain.remove_forward` (:gh:`10373` by `Alex Rockhill`_) + +- Made anterior/posterior slice scrolling in :func:`mne.gui.locate_ieeg` possible for users without page up and page down buttons by allowing angle bracket buttons to be used (:gh:`10384` by `Alex Rockhill`_) + +- Add support for ``theme='auto'`` for automatic dark-mode support in :meth:`raw.plot() ` and related functions and methods when using the ``'qt'`` backend (:gh:`10417` by `Eric Larson`_) + +- Add support for ``MNE_3D_OPTION_THEME`` and ``MNE_BROWSER_THEME`` to use ``['light', 'dark', 'auto']`` or a custom theme path in :class:`mne.viz.Brain` and :meth:`raw.plot() ` (and related functions and methods when using the ``'qt'`` backend(), respectively (:gh:`10418` by `Eric Larson`_) + +- Add support for passing time-frequency data to :func:`mne.stats.spatio_temporal_cluster_test` and :func:`mne.stats.spatio_temporal_cluster_1samp_test` and added an example to :ref:`tut-cluster-spatiotemporal-sensor` (:gh:`10384` by `Alex Rockhill`_) + +- Add support for reading optical density fNIRS data to :func:`mne.io.read_raw_snirf` (:gh:`10408` by `Robert Luke`_) + +- Added :func:`mne.source_space.get_decimated_surfaces` to extract subsurfaces from a SourceSpaces instance or a .fif file (:gh:`10421` by `Joshua Teves`_) + +Bugs +~~~~ +- Fix bug with :func:`mne.io.read_raw_nihon` where latin-1 channels could not be read (:gh:`10429` by :newcontrib:`Matthias Eberlein`) + +- Fix bug with :func:`mne.io.read_raw_nihon` so that it handles duplicates in channel names (:gh:`10431` by :newcontrib:`Matthias Eberlein`) + +- Fix bug in :func:`mne.io.read_raw_egi` where the ``meas_date`` in a ``rawMFF`` object was incorrectly assigned. The function now converts the ``meas_date`` to UTC and provides a UTC offset key, i.e. ``raw.info['utc_offset']``. (:gh:`10304` by :newcontrib:`Scott Huberty`) + +- Fix datetime conversion for tmin/tmax=None cases in :meth:`mne.Annotations.crop`. Allow the use of float and None simultaneously for :meth:`mne.Annotations.crop`. (:gh:`10361` by :newcontrib:`Michiru Kaneda`) + +- Add Shift_JIST mu in :func:`mne.io.read_raw_edf` (:gh:`10356` by :newcontrib:`Michiru Kaneda`) + +- Teach :func:`mne.io.read_raw_bti` to use its ``eog_ch`` parameter (:gh:`10093` by :newcontrib:`Adina Wagner`) + +- Fix use of arguments in :func:`numpy.loadtxt` (:gh:`10189` by :newcontrib:`Federico Zamberlan`) + +- Fix documentation of options in :func:`mne.stc_near_sensors` (:gh:`` by :newcontrib:`Nikolai Chapochnikov`) + +- :func:`mne.time_frequency.tfr_array_multitaper` now returns results per taper when ``output='complex'`` (:gh:`10281` by `Mikołaj Magnuski`_) + +- Fix default of :func:`mne.io.Raw.plot` to be ``use_opengl=None``, which will act like False unless ``MNE_BROWSER_USE_OPENGL=true`` is set in the user configuration (:gh:`9957` by `Eric Larson`_) + +- Fix bug with :class:`mne.Report` where figures were saved with ``bbox_inches='tight'``, which led to inconsistent sizes in sliders (:gh:`9966` by `Eric Larson`_) + +- When opening a saved report and saving it to a different filename again, don't change ``Report.fname`` to avoid a regression when using :func:`~mne.open_report` as a context manager (:gh:`9998` by `Marijn van Vliet`_) + +- Fix bug in :func:`mne.make_forward_solution` where sensor-sphere geometry check was incorrect (:gh:`9968` by `Eric Larson`_) + +- Use single char alphanumeric suffix when renaming long channel names (over 15-characters) when writing to FIF format. (:gh:`10002` by `Luke Bloy`_) + +- Add argument ``overwrite`` to :func:`mne.export.export_raw`, :func:`mne.export.export_epochs`, :func:`mne.export.export_evokeds` and :func:`mne.export.export_evokeds_mff` (:gh:`9975` by `Mathieu Scheltienne`_) + +- :func:`mne.gui.coregistration` and the ``mne coreg`` command didn't respect the ``interaction`` parameter (:gh:`9972` by `Richard Höchenberger`_) + +- Fix incorrect projection of source space onto white matter surface instead of pial in :ref:`tut-working-with-ecog` (:gh:`9980` by `Alex Rockhill`_) + +- Fix channel type support when reading from EEGLAB ``.set`` format with :func:`mne.io.read_raw_eeglab` and :func:`mne.read_epochs_eeglab` (:gh:`9990` by `Mathieu Scheltienne`_) + +- Fix suboptimal alignment using :func:`mne.transforms.compute_volume_registration` (:gh:`9991` by `Alex Rockhill`_) + +- Only warn if header is missing in BrainVision files instead of raising an error (:gh:`10001` by `Clemens Brunner`_) + +- Add argument ``overwrite`` to `mne.preprocessing.ICA.save` to check for existing file (:gh:`10004` by `Mathieu Scheltienne`_) + +- :class:`mne.Report` now raises an exception if invalid tags were passed (:gh:`9970` by `Richard Höchenberger`_) + +- Fix bug in :func:`mne.get_montage_volume_labels` that set the maximum number of voxels to be included too low causing unwanted capping of the included voxel labels (:gh:`10021` by `Alex Rockhill`_) + +- Fix annotation cropping and I/O roundtrip when there is no measurement date available (:gh:`10040` by `Mathieu Scheltienne`_ and `Alex Gramfort`_). + +- Fix bug where :meth:`raw.crop() ` from the beginning of the instance could break annotations and ``raw.first_samp`` (:gh:`10358` by `Eric Larson`_) + +- :func:`~mne.sys_info` output now contains the installed version of ``pooch``, too; this output had been accidentally removed previously (:gh:`10047` by `Richard Höchenberger`_) + +- Fix VTK version extraction in :func:`mne.sys_info` (:gh:`10399` by `Eric Larson`_) + +- Fix automatic channel type detection from channel labels in :func:`mne.io.read_raw_edf` and :func:`mne.io.read_raw_bdf` (and disable this functionality from :func:`mne.io.read_raw_gdf`) (:gh:`10058` by `Clemens Brunner`_) + +- Fix :func:`~mne.stats.permutation_cluster_1samp_test` to properly handle 2-dimensional data in combination with TFCE (:gh:`10073` by `Richard Höchenberger`_) + +- Fix channel grouping error when using "butterfly mode" with :meth:`mne.io.Raw.plot` (:gh:`10087` by `Daniel McCloy`_) + +- Fix inconsistent behavior of ``mne.preprocessing.annotate_*`` functions by making them all return :class:`mne.Annotations` objects with the ``orig_time`` attribute set to ``raw.info["meas_time"]`` (:gh:`10067` and :gh:`10118` by `Stefan Appelhoff`_, `Eric Larson`_, and `Alex Gramfort`_) + +- Fix bug that appears during automatic calculation of the colormap of `mne.viz.Brain` when data values of ``fmin`` and ``fmax`` are too close (:gh:`10074` by `Guillaume Favelier`_) + +- We now display a scrollbar in the tags dropdown of a `~mne.Report` if many tags have been added, granting access to all tags instead of "hiding" them below the bottom of the page (:gh:`10082` by `Richard Höchenberger`_) + +- Creating :class:`mne.Epochs` now provides clearer logging (less ambiguous, no duplicates) when the ``preload`` and/or ``metadata`` parameters are set (:gh:`10112` by `Stefan Appelhoff`_) + +- Fix bug with :class:`mne.Epochs` where save-load round-trip with FIF would cause :meth:`mne.Epochs.apply_baseline` to no longer work (:gh:`10177` by `Eric Larson`_) + +- Fix functions by adding missing ``overwrite`` parameters: :func:`mne.write_events`, :func:`mne.write_cov`, :func:`mne.write_evokeds`, :meth:`mne.SourceEstimate.save`, :func:`mne.minimum_norm.write_inverse_operator`, :func:`mne.write_proj`, and related methods (:gh:`10127` by `Eric Larson`_) + +- Fix bug with :func:`mne.transforms.compute_volume_registration` and :func:`mne.compute_source_morph` (volumetric) where the smoothing factors were not scaled based on ``zooms`` (:gh:`10132` by `Eric Larson`_) + +- Remove repeated logging output when overwriting an existing `~mne.io.Raw` file (:gh:`10095` by `Richard Höchenberger`_ and `Stefan Appelhoff`_) + +- In the plots generated by :meth:`mne.Report.add_stc`, we now only add 5 labels to the color bar to reduce the chance of overlap, which could previously cause the labels to become unreadable (:gh:`10135` by `Richard Höchenberger`_) + +- :meth:`mne.Report.add_trans` now allows you to add sensor alignment plots for head surfaces that have topological defects (:gh:`10175` by `Richard Höchenberger`_) + +- :meth:`mne.Report.add_trans` now also works if no digitization points are present in the data (:gh:`10176` by `Jeff Stout`_) + +- Argument ``verbose`` is now respected by dataset fetching (:gh:`10210` by `Mathieu Scheltienne`_) + +- Fix bug with :func:`mne.io.read_raw_hitachi` where empty ``Comment`` descriptions were not handled properly (:gh:`10235` by `Eric Larson`_) + +- Fix bug with input validation of low-level filtering functions (:gh:`10267` by `Eric Larson`_) + +- :func:`mne.gui.coregistration` now works with surfaces containing topological defects (:gh:`10230`, by `Richard Höchenberger`_) + +- Fix bug with :func:`mne.io.read_raw_nirx` being unable to read measurement dates recorded on systems with German (de_DE), French (fr_FR), and Italian (it_IT) locales (:gh:`10277` by `Eric Larson`_) + +- Fix bug with projector normalization checks that were too sensitive, and improve warning (:gh:`10292` by `Eric Larson`_) + +- Fix bug with :func:`mne.viz.plot_alignment` where head-coordinate source spaces (e.g., from a forward solution) were not properly plotted (:gh:`10309` by `Eric Larson`_) + +- :func:`mne.read_trans` and :func:`mne.io.read_fiducials` now correctly expand ``~`` in the provided path (i.e., to the user's home directory) (:gh:`10265`, :gh:`10415`, by `Richard Höchenberger`_) + +- :func:`mne.find_events` now uses ``first_samp`` and not ``0`` for initial event when using ``initial_value`` (:gh:`10289`, by `Alex Gramfort`_) + +- Fix bug with :func:`mne.channels.make_standard_montage` for ``'standard*'``, ``'mgh*'``, and ``'artinis*'`` montages where the points were incorrectly scaled and fiducials incorrectly set away from the correct values for use with the ``fsaverage`` subject (:gh:`10324` by `Eric Larson`_) + +- Fix bug with :meth:`mne.Report.add_figure` where figures generated externally were closed and possibly resized during render (:gh:`10342` by `Eric Larson`_) + +- Fix bug with :func:`mne.viz.plot_sparse_source_estimates` where the return value was incorrect (:gh:`10347` by `Eric Larson`_) + +- Fix plotting bug in :ref:`ex-electrode-pos-2d` and make view look more natural in :ref:`ex-movement-detect` (:gh:`10313`, by `Alex Rockhill`_) + +- Fix bug with blank 3D rendering with MESA software rendering (:gh:`10400` by `Eric Larson`_) + +- Fix a bug in :func:`mne.gui.locate_ieeg` where 2D lines on slice plots failed to update and were shown when not in maximum projection mode (:gh:`10335`, by `Alex Rockhill`_) + +- Fix misleading color scale in :ref:`tut-cluster-tfr` for the plotting of cluster F-statistics (:gh:`10393` by `Alex Rockhill`_) + +- Fix baseline removal using ``remove_dc=True`` in :meth:`raw.plot() ` for data containing ``np.nan`` (:gh:`10392` by `Clemens Brunner`_) + +- Fix misleading color scale in :ref:`tut-timefreq-twoway-anova` for plotting F-stats (:gh:`10401` by `Alex Rockhill`_) + +- Fix misleading ``T_obs`` return name for :func:`mne.stats.spatio_temporal_cluster_test` when the default returns an F-statistic (:gh:`10401` by `Alex Rockhill`_) + +API changes +~~~~~~~~~~~ +- The default browser for :meth:`raw.plot() `, :meth:`epochs.plot() `, and :meth:`ica.plot_sources() ` has been changed to the ``'qt'`` backend on systems where `mne_qt_browser `__ is installed. To change back to matplotlib within a session, you can use :func:`mne.viz.set_browser_backend('matplotlib') `. To set it permanently on your system, you can use :func:`mne.set_config('MNE_BROWSER_BACKEND', 'matplotlib') ` (:gh:`9960` by `Martin Schulz`_ and `Eric Larson`_) + +- ``mne.Info.pick_channels`` has been deprecated. Use ``inst.pick_channels`` to pick channels from :class:`~mne.io.Raw`, :class:`~mne.Epochs`, and :class:`~mne.Evoked`. Use :func:`mne.pick_info` to pick channels from :class:`mne.Info` (:gh:`10039` by `Mathieu Scheltienne`_) + +- All :func:`data_path ` functions now return :class:`python:pathlib.Path` objects rather than strings. Support for string concatenation with plus (``+``) is thus deprecated and will be removed in 1.2, use the forward-slash ``/`` operator instead (:gh:`10348` by `Eric Larson`_) + +- Argument ``event_list`` has been deprecated in favor of ``events`` in :func:`mne.write_events` (:gh:`10056` by `Mathieu Scheltienne`_) + +- ``mne.preprocessing.annotate_flat`` has been deprecated in favor of :func:`mne.preprocessing.annotate_amplitude`, that covers both minimum and maximum peak-to-peak variation. (:gh:`10143` by `Mathieu Scheltienne`_) + +- The ``max_ori_out`` parameter of :func:`mne.beamformer.apply_lcmv` and related functions is being removed as only signed estimates are supported. ``abs(stc)`` can be used to obtain unsigned estimates (:gh:`10366` by `Eric Larson`_) + +- The ``verbose`` attribute of classes (e.g., :class:`mne.io.Raw`, `mne.Epochs`, etc.) has been deprecated. Explicitly pass ``verbose`` to methods as necessary instead. (:gh:`10267` by `Eric Larson`_) + +- In :func:`mne.viz.set_browser_backend`, the `mne-qt-browser `__-based backend is now called ``'qt'`` rather than ``'pyqtgraph'`` for simplicity (:gh:`10323` by `Eric Larson`_) + +Dependencies +~~~~~~~~~~~~ +Numerous external dependencies that used to be bundled with MNE-Python are now +not shipped with the package anymore and will instead be retrieved +automatically from their official sources when you install MNE-Python. This +simplifies MNE-Python maintenance and keeps the package smaller. The following +new dependencies have been added: + +- `Jinja2`_ (replaces ``Tempita``, which is not maintained anymore; :gh:`10211` by `Richard Höchenberger`_) + + +.. _Jinja2: https://jinja.palletsprojects.com/ + +Authors +~~~~~~~ + +* Adam Li +* Adina Wagner+ +* Alex Rockhill +* Alexandre Gramfort +* Britta Westner +* Clemens Brunner +* Daniel McCloy +* Eduard Ort +* Eric Larson +* Etienne de Montalivet+ +* Federico Zamberlan+ +* Guillaume Favelier +* Jan Sosulski +* Jan Zerfowski+ +* Jeff Stout +* John Veillette+ +* Joshua Teves +* Julia Guiomar Niso Galán +* Luke Bloy +* Marijn van Vliet +* Martin Schulz +* Mathieu Scheltienne +* Matthias Eberlein+ +* Michiru Kaneda+ +* Mikołaj Magnuski +* Nikolai Chapochnikov+ +* Richard Höchenberger +* Robert Luke +* Scott Huberty+ +* Senwen Deng+ +* Stefan Appelhoff +* Steve Matindi +* Thomas Hartmann diff -Nru python-mne-0.23.4+dfsg/doc/changes/1.1.inc python-mne-1.1.0+dfsg/doc/changes/1.1.inc --- python-mne-0.23.4+dfsg/doc/changes/1.1.inc 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/1.1.inc 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,289 @@ +.. NOTE: we use cross-references to highlight new functions and classes. + Please follow the examples below like :func:`mne.stats.f_mway_rm`, so the + whats_new page will have a link to the function/class documentation. + +.. NOTE: there are 3 separate sections for changes, based on type: + - "Enhancements" for new features + - "Bugs" for bug fixes + - "API changes" for backward-incompatible changes + +.. NOTE: changes from first-time contributors should be added to the TOP of + the relevant section (Enhancements / Bugs / API changes), and should look + like this (where xxxx is the pull request number): + + - description of enhancement/bugfix/API change (:gh:`xxxx` by + :newcontrib:`Firstname Lastname`) + + Also add a corresponding entry for yourself in doc/changes/names.inc + +.. _changes_1_1_0: + +Version 1.1.0 (2022-08-03) +-------------------------- + +Enhancements +~~~~~~~~~~~~ +- Added new built-in montage R-Net 128 Ch (Brain Products) (:gh:`10974` by :newcontrib:`Ilias Machairas`) + +- :class:`~mne.channels.DigMontage` objects can now be checked for equality via ``==`` (:gh:`10942` by :newcontrib:`Tziona NessAiver`) + +- Add a note to clarify the inclusion of average referencing gain matrix during whitening (:gh:`10922` by :newcontrib:`Mingjian He`) + +- Add time axis scale bar for :meth:`mne.Epochs.plot` using matplotlib backend (:gh:`10736` by :newcontrib:`Jordan Drew`) + +- Add :func:`mne.bem.distance_to_bem` to find depth of source positions (:gh:`10632` by :newcontrib:`Matt Courtemanche`) + +- Add support for ahdr files in :func:`mne.io.read_raw_brainvision` (:gh:`10515` by :newcontrib:`Alessandro Tonin`) + +- Add support for reading data from Gowerlabs devices to :func:`mne.io.read_raw_snirf` (:gh:`10555` by :newcontrib:`Samuel Powell` and `Robert Luke`_) + +- Add built-in sensor layout files for Geodesic Head Web 130 and 280 devices (:gh:`10627` by `Evan Hathaway`_) + +- Add ``mne-icalabel`` to :func:`mne.sys_info` (:gh:`10615` by `Adam Li`_) + +- Add support for ``overview_mode`` in :meth:`raw.plot() ` and related functions/methods (:gh:`10501` by `Eric Larson`_) + +- Add :meth:`mne.io.Raw.crop_by_annotations` method to get chunks of Raw data based on :class:`mne.Annotations`. (:gh:`10460` by `Alex Gramfort`_) + +- The ``pick_channels`` method gained a ``verbose`` parameter, allowing e.g. to suppress messages about removed projectors (:gh:`10544` by `Richard Höchenberger`_) + +- Add :func:`mne.viz.plot_projs_joint` for joint plotting of projectors and Evoked (:gh:`10720` by `Eric Larson`_) + +- The :func:`mne.make_forward_dipole` function can now take a list of dipoles to make a multi-dipole forward models (:gh:`10464` by `Marijn van Vliet`_) + +- Add ``mode='outlines'`` support to :meth:`mne.Dipole.plot_locations` and :func:`mne.viz.plot_dipole_locations` (:gh:`10699` by `Eric Larson`_) + +- Add :meth:`mne.preprocessing.ICA.find_bads_muscle` to find muscle-related ICA components with an example, :ref:`ex-muscle-ica` (:gh:`10534` by `Alex Rockhill`_) + +- Add example of Xfit-style ECD modeling using multiple dipoles (:gh:`10464` by `Marijn van Vliet`_) + +- Add ``head_source`` argument to :func:`mne.make_field_map` to allow selecting which head source to use (:gh:`10568` by `Eric Larson`_) + +- Add support for ``n_jobs=None`` to support :func:`joblib:joblib.parallel_backend` for more precise control over parallelization (:gh:`10567` by `Eric Larson`_) + +- It is now possible to compute inverse solutions with restricted source orientations using discrete forward models (:gh:`10464` by `Marijn van Vliet`_) + +- The new function :func:`mne.preprocessing.maxwell_filter_prepare_emptyroom` simplifies the preconditioning of an empty-room recording for our Maxwell filtering operations (:gh:`10533` by `Richard Höchenberger`_ and `Eric Larson`_) + +- Add keyboard shortcuts to toggle :meth:`mne.preprocessing.ICA.plot_properties` topomap channel types ('t') and power spectral density log-scale ('l') (:gh:`10557` by `Alex Rockhill`_) + +- Add ``--mri``, and ``--threshold`` options to :ref:`mne make_scalp_surfaces` to improve head surface mesh extraction (:gh:`10591` by `Eric Larson`_) + +- Add :func:`mne.preprocessing.compute_bridged_electrodes` to detect EEG electrodes with shared spatial sources due to a conductive medium connecting two or more electrodes, add :ref:`ex-eeg-bridging` for an example and :func:`mne.viz.plot_bridged_electrodes` to help visualize (:gh:`10571` by `Alex Rockhill`_) + +- Add ``'nearest'`` as an option for the ``image_interp`` argument in :func:`mne.viz.plot_topomap` to plot a topomap without interpolation using a Voronoi parcelation (:gh:`10571` by `Alex Rockhill`_) + +- Add :func:`mne.preprocessing.interpolate_bridged_electrodes` to use the spatially smeared signal to get a better interpolation rather than dropping those channels (:gh:`10587` by `Alex Rockhill`_) + +- Add support for hemoglobin type fNIRS data to temporal derivative distribution repair (TDDR) :func:`mne.preprocessing.nirs.temporal_derivative_distribution_repair` (:gh:`10125` by `Johann Benerradi`_) + +- :func:`mne.viz.plot_evoked_topomap` and :meth:`mne.Evoked.plot_topomap` now display the time range the map was averaged over if ``average`` was passed (:gh:`10606` by `Richard Höchenberger`_) + +- :func:`mne.viz.plot_evoked_topomap` and :meth:`mne.Evoked.plot_topomap` can now average the topographic maps across different time periods for each time point. To do this, pass a list of periods via the ``average`` parameter (:gh:`10610` by `Richard Höchenberger`_) + +- :func:`mne.viz.plot_evoked` and :meth:`mne.Evoked.plot` gained a new parameter, ``highlight``, to visually highlight time periods of interest (:gh:`10614` by `Richard Höchenberger`_) + +- Added fNIRS support to :func:`mne.Info.get_montage` (:gh:`10611` by `Robert Luke`_) + +- Add :func:`mne.viz.plot_ch_adjacency` to visualize and manually edit the channel adjacency matrix (:gh:`10633` by `Mikołaj Magnuski`_) + +- Add :meth:`mne.viz.Brain.get_view` to get the current camera parameters such that they can be passed to :meth:`mne.viz.Brain.show_view` (:gh:`10661` by `Alex Rockhill`_) + +- Added support for Aurora version 2021.9.0.6 to :func:`mne.io.read_raw_nirx` (:gh:`10668` by `Robert Luke`_) + +- Added BrainVision format (``.vhdr``, ``.vmrk``, ``.eeg``) to :func:`mne.export.export_raw` (:gh:`10681` by `Stefan Appelhoff`_) + +- Added ``export`` method to :class:`mne.Evoked` (:gh:`10681` by `Stefan Appelhoff`_) + +- Add timeformat ``YYYY/MM/DD`` to ``mne.io.ctf.info._convert_time`` (:gh:`10674` by `Simon Kern`_) + +- :meth:`mne.Report.add_figure` and :meth:`mne.Report.add_image` gained a new parameter, ``section``, allowing to put multiple figures or images into the same "content block". Previously, the only way to group figures and images was by means of a slider, which sometimes made content hard to discover. The slider remains available as an alternative (:gh:`10694` by `Richard Höchenberger`_) + +- All functions and methods that plot topographic maps for EEG (2D projections of the EEG sensor locations) now accept the parameter value ``sphere='eeglab'`` to lay out the sensors with respect to the head circle in a similar way to how EEGLAB does, i.e., T7/T8 and Fpz/Oz are placed directly on the circle for template montages (:gh:`10572` by `Richard Höchenberger`_) + +- :func:`mne.channels.get_builtin_montages` gained a new parameter, ``descriptions``, which allows to retrieve the descriptions of the montages in addition to their names (:gh:`10373` by `Richard Höchenberger`_) + +- Add ``include`` option to :meth:`mne.io.read_raw_edf`, :meth:`mne.io.read_raw_bdf` and :meth:`mne.io.read_raw_gdf`. (:gh:`10734` by `Michiru Kaneda`_) + +- :func:`mne.gui.coregistration` gained a new parameter, ``fullscreen``, to start the GUI in fullscreen mode (:gh:`10284` by `Richard Höchenberger`_) + +- The built-in FieldTrip channel adjacency matrices, which can be read via :func:`~mne.channels.read_ch_adjacency`, have been synchronized with FieldTrip again. This means that numerous new adjacencies have been added, most notably those for standard 10-05 and 10-20 montages (:gh:`10749` by `Richard Höchenberger`_) + +- :meth:`mne.Evoked.plot_field` gained a new parameter, ``interaction``, to control the rotation axes when interacting with the head (:gh:`10788` by `Richard Höchenberger`_) + +- Add :func:`mne.read_evoked_besa` for reading evokeds from BESA ``.avr`` and ``.mul`` files. (:gh:`10892` by `Marijn van Vliet`_) + +- Add :meth:`mne.time_frequency.EpochsTFR.decimate` to reduce size of time-frequency epochs objects (:gh:`10940` by `Alex Rockhill`_) + +- Add an alias that maps EGI reference channel names (``VREF`` or ``Vertex Reference``) to the electrode name in the standard EGI montages (``Cz``). Now setting standard EGI montages with :meth:`~mne.io.Raw.set_montage` with ``match_alias=True`` will avoid raising an error (:gh:`10823` by `Scott Huberty`_) + +- Add provenance in :func:`mne.time_frequency.EpochsTFR.apply_baseline` (:gh:`10979` by `Alex Rockhill`_) + +Bugs +~~~~ +- Fix bug in ``mne.surface._project_onto_surface`` for the condition ``method != 'accurate' and return_nn`` (:gh:`10930` by `Christian O'Reilly`_) + +- Fix bug in :func:`mne.export.export_raw` to ignore None value in filenames attribute of :class:`mne.io.RawArray` (:gh:`10927` by :newcontrib:`Reza Nasri`) + +- Fix bug in :func:`mne.io.read_raw_edf` to allow reading in all Hypnodyne ZMax EDFs to be read in without issues (:gh:`10754` by :newcontrib:`Frederik Weber`) + +- Fix bug in :func:`mne.Epochs.drop_bad` where data was loaded although no rejection had to be performed (:gh:`10718` by :newcontrib:`Lukas Gemein`) + +- Pick also bad channels when selecting T1T2 magnetometers in :func:`mne.preprocessing.maxwell_filter` (:gh:`10639` by :newcontrib:`Matti Toivonen`) + +- Make ``color`` parameter check in in :func:`mne.viz.plot_evoked_topo` consistent (:gh:`10217` by :newcontrib:`T. Wang` and `Stefan Appelhoff`_) + +- Fix bug in :func:`mne.io.read_raw_brainvision` when BrainVision data are acquired with the Brain Products "V-Amp" amplifier and disabled lowpass filter is marked with value ``0`` (:gh:`10517` by :newcontrib:`Alessandro Tonin`) + +- Fix bug in :func:`mne.pick_types` and related methods where ``csd=True`` was not passed handled properly (:gh:`10470` by :newcontrib:`Matthias Dold`) + +- Fix bug where plots produced using the ``'qt'`` / ``mne_qt_browser`` backend could not be added using :meth:`mne.Report.add_figure` (:gh:`10485` by `Eric Larson`_) + +- Fix bug where ``theme`` was not handled properly in :meth:`mne.io.Raw.plot` (:gh:`10487`, :gh:`10500` by `Mathieu Scheltienne`_ and `Eric Larson`_) + +- Fix bug in :meth:`raw.crop(start, stop) ` that would cause annotations to be erroneously shifted when ``start != 0`` and no measurement date was set. (:gh:`10491` by `Eric Larson`_) + +- Fix bug in :func:`mne.io.read_raw_bti` where unknown electrode locations were not handled properly (:gh:`10662` by `Eric Larson`_) + +- Fix bug in :func:`mne.io.read_raw_ctf` on Windows where large files could not be read (:gh:`10866` by `Eric Larson`_) + +- Fix bug in :func:`mne.io.read_raw_ctf` where invalid measurement dates were not handled properly (:gh:`10957` by `Jean-Remi King`_ and `Eric Larson`_) + +- Rendering issues with recent MESA releases can be avoided by setting the new environment variable``MNE_3D_OPTION_MULTI_SAMPLES=1`` or using :func:`mne.viz.set_3d_options` (:gh:`10513` by `Eric Larson`_) + +- Fix behavior for the ``pyvista`` 3D renderer's ``quiver3D`` function so that default arguments plot a glyph in ``arrow`` mode (:gh:`10493` by `Alex Rockhill`_) + +- Retain epochs metadata when using :func:`mne.channels.combine_channels` (:gh:`10504` by `Clemens Brunner`_) + +- Fix epochs indexing with metadata containing boolean type and missing values (:gh:`10705` by `Clemens Brunner`_ and `Alex Gramfort`_) + +- Fix reading of fiducial locations in :func:`mne.io.read_raw_eeglab` (:gh:`10521` by `Alex Gramfort`_) + +- Prevent creation of montage with invalid ``[x, y, z]`` coordinates with :func:`mne.channels.make_dig_montage` (:gh:`10547` by `Mathieu Scheltienne`_) + +- Fix bug in coregistration GUI that prevented it from starting up if only a high-resolution head model was available (:gh:`10543` by `Richard Höchenberger`_) + +- Fix bug with :class:`mne.Epochs.add_reference_channels` where attributes were not updated properly so subsequent `~mne.Epochs.pick_types` calls were broken (:gh:`10912` by `Eric Larson`_) +- +- Fix bug in the :class:`mne.viz.Brain` tool bar that prevented the buttons to call the corresponding feature (:gh:`10560` by `Guillaume Favelier`_) + +- Fix issue with saving epochs once :func:`~mne.preprocessing.compute_current_source_density` has been used if a rejection threshold was used first (:gh:`10619` by `Alex Rockhill`_ and `Richard Höchenberger`_) + +- Fix bug in :func:`mne.viz.plot_evoked_image` that would cause incorrect sub-titles when using ``group_by`` (:gh:`10618` by `Reza Shoorangiz`_) + +- Reduce memory usage when loading an EDF file with ``preload=False`` (:gh:`10638` by `Clemens Brunner`_) + +- Fix bug in :meth:`mne.io.Raw.get_channel_types` and related methods where ``unique=True`` would return a :class:`python:set` with arbitrary order rather than a :class:`python:list` that preserves the same order as ``inst.ch_names`` (:gh:`10720` by `Eric Larson`_) + +- In :func:`mne.preprocessing.find_bad_channels_maxwell`, do not re-filter the data if a low-pass filter with the requested frequency has already been applied (:gh:`10664` by `Richard Höchenberger`_) + +- Fix a problem in :meth:`mne.Evoked.get_peak`, where under certain circumstances the ``mode`` parameters ``'pos'`` and ``'neg'`` were not honored when ``tmin`` and/or ``tmax`` were passed as well (:gh:`10686` by `Richard Höchenberger`_) + +- :func:`mne.read_evokeds`, :func:`mne.channels.read_custom_montage`, :func:`mne.channels.read_dig_hpts`, :func:`mne.channels.read_dig_polhemus_isotrak`, and :func:`mne.channels.read_polhemus_fastscan` now correctly expand ``~`` in the provided path to the user's home directory (:gh:`10685`, :gh:`10688` by `Richard Höchenberger`_) + +- Fix bug in :func:`mne.io.read_raw_eeglab` and :func:`mne.read_epochs_eeglab`, where the presence of channels without position in the ``.set`` file caused positions incorrectly assigned to all further channels (:gh:`8754` by `Mikołaj Magnuski`_) + +- Combining channels of :class:`mne.Epochs` or :class:`mne.Evoked` objects now properly retains baseline information (:gh:`10703` by `Clemens Brunner`_) + +- In :class:`mne.Report`, some figures would have an undesired border added to the edges; this has now been resolved (:gh:`10730` by `Richard Höchenberger`_) + +- Fix selection of EEG channels and selected sphere when plotting bridged electrodes with :func:`mne.viz.plot_bridged_electrodes` (:gh:`10753` by `Mathieu Scheltienne`_) + +- Fix broken links in :ref:`tut-fix-meshes` (:gh:`10765` by `Alex Rockhill`_) + +- The built-in FieldTrip channel adjacency matrix for ``easycapM1`` had a bug, where the channel ``PO8`` was incorrectly labeled as ``PO6`` This has been resolved by updating the adjacency matrix to the latest version provided by FieldTrip (:gh:`10749` by `Richard Höchenberger`_) + +- Add a YouTube video tutorial for editing Freesurfer surfaces in Blender to :ref:`tut-fix-meshes` (:gh:`10778` by `Alex Rockhill`_) + +- The default interaction style of :meth:`mne.Evoked.plot_field` has been changed such that if behaves like :func:`~mne.viz.plot_alignment` when trying to rotate the head (:gh:`10788` by `Richard Höchenberger`_) + +- Add a video on how to operate the intracranial electrode contact location GUI in :ref:`tut-ieeg-localize` (:gh:`10800` by `Alex Rockhill`_) + +- Add a video on how to operate the coregistration GUI in :ref:`tut-source-alignment` (:gh:`10802` by `Alex Rockhill`_) + +- Add ``show`` and ``block`` arguments to :func:`mne.gui.coregistration` and :func:`mne.gui.locate_ieeg` to pop up the GUIs and halt execution of subsequent code respectively (:gh:`10802` by `Alex Rockhill`_) + +- Correctly report the number of available projections when printing measurement info in a Jupyter notebook (:gh:`10471` by `Clemens Brunner`_) + +- Fix value set in ``raw.orig_format`` for readers of BrainVision (ASCII format), EGI and Artemis123 files (:gh:`10851` by `Mathieu Scheltienne`_) + +- When reading EGI MFF files, channel names are no longer ignored and reference channel information is properly incorporated (:gh:`10898` by `Scott Huberty`_ and `Daniel McCloy`_) + +- Fix bug in :func:`mne.time_frequency.psd_array_welch` and related functions/methods where the bias was not accounted for when ``average='median'`` (:gh:`10990` by `Eric Larson`_) + +- Fix bug in :class:`mne.decoding.TemporalFilter` where filter parameters were not handled properly (:gh:`10968` by `Eric Larson`_) + +- Fix documentation bug in ``ica.plot_sources`` to specify that ``picks`` keyword argument is for picking ICA components to plot (:gh:`10936` by `Adam Li`_) + +- Annotations contained in EDF files are correctly read as UTF-8 according to the EDF specification (:gh:`10963` by `Clemens Brunner`_) + +- Fix bug where complex-valued topoplots caused an error, convert to amplitude instead (:gh:`10978` by `Alex Rockhill`_) + +API and behavior changes +~~~~~~~~~~~~~~~~~~~~~~~~ +- When creating BEM surfaces via :func:`mne.bem.make_watershed_bem` and :func:`mne.bem.make_flash_bem`, the ``copy`` parameter now defaults to ``True``. This means that instead of creating symbolic links inside the FreeSurfer subject's ``bem`` folder, we now create "actual" files. This should avoid troubles when sharing files across different operating systems and file systems (:gh:`10531` by `Richard Höchenberger`_) + +- The ordering of channels returned by :func:`mne.io.read_raw_nirx` is now ordered by channel name, rather than the order provided by the manufacturer. This enables consistent ordering of channels across different file types (:gh:`10555` by `Robert Luke`_) + +- For :func:`mne.viz.plot_topomap`, :func:`mne.viz.plot_evoked_topomap`, :func:`mne.viz.plot_arrowmap`, :func:`mne.viz.plot_ica_components`, :meth:`mne.Covariance.plot_topomap`, :meth:`mne.Evoked.plot_topomap`, :meth:`mne.Evoked.animate_topomap`, :meth:`mne.decoding.CSP.plot_patterns`, :meth:`mne.Projection.plot_topomap` and :meth:`mne.preprocessing.ICA.plot_components` the topomap image interpolation was previously a cubic interpolation but now can be ``'linear'`` and ``'nearest'`` as well. Unless ``image_interp='nearest'`` is passed mne uses a subsequent matplotlib bilinear interpolation to make the interpolated image smoother. Previously, ``'image_interp'`` controlled this second interpolation step and, for the first interpolation, the only option was cubic. To simplify, ``image_interp`` is now responsible for the main interpolation and the subsequent matplotlib image interpolation is bilinear but can be changed afterward using ``im.set_interpolation`` (:gh:`10617` by `Alex Rockhill`_) + +- The FLASH BEM surface generation via :func:`mne.bem.make_flash_bem` or the :ref:`mne flash_bem` command has now been clarified in terms of expected inputs. In :func:`mne.bem.convert_flash_mris` the ``convert`` parameter is now deprecated and the ``flash5`` and ``flash30`` now accept list of file names or nibabel images. One breaking change is that now the flash files are looked for as mef05_*.mgz and mef30_*.mgz in mri/flash folder (:gh:`10715` by `Alex Gramfort`_) + +- :func:`~mne.viz.plot_compare_evokeds` gets a new parameter ``time_unit`` which can be ``"s"`` or ``"ms"`` (:gh:`10950` by `Daniel McCloy`_) + +- The ``to_data_frame`` methods for :meth:`Raw `, :meth:`Epochs `, :meth:`Evoked `, :meth:`SourceEstimate `, :meth:`EpochsTFR `, and :meth:`AverageTFR ` all now have default ``time_format=None`` (keep time in seconds) instead of ``time_format='ms'`` (convert time to milliseconds) (:gh:`10925` by `Daniel McCloy`_) + +- :func:`mne.Evoked.decimate` now aligns to the sample at time=0 (so that the exact sample when the event occurred is preserved) to be consistent with :func:`mne.Epochs.decimate` (:gh:`10945` by `Alex Rockhill`_) + +Authors +~~~~~~~ + +* Adam Li +* Adeline Fecker+ +* Alessandro Tonin+ +* Alex Ciok+ +* Alex Rockhill +* Alexandre Gramfort +* Archit Singhal+ +* Ashley Drew+ +* Ben Beasley+ +* Carina Forster+ +* Christian O'Reilly +* Clemens Brunner +* Cora Kim +* Daniel McCloy +* Dominik Welke +* Dominique Makowski +* Eric Larson +* Evan Hathaway +* Frederik D. Weber+ +* Guillaume Favelier +* Hamid Maymandi+ +* Ilias Machairas+ +* Jean-Remi King +* Johann Benerradi +* Jon Houck +* Jona Sassenhagen +* Jordan Drew+ +* Lukas Gemein+ +* Marijn van Vliet +* Martin Schulz +* Mathieu Scheltienne +* Matt Courtemanche+ +* Matthias Dold+ +* Matti Toivonen+ +* Michiru Kaneda+ +* Mikołaj Magnuski +* Mingjian He+ +* Naveen Srinivasan+ +* Phillip Alday +* Reza Nasri+ +* Reza Shoorangiz +* Richard Höchenberger +* Rob Luke +* Scott Huberty+ +* Simon Kern +* Sondre Foslien+ +* Stefan Appelhoff +* T. Wang+ +* Tziona NessAiver+ diff -Nru python-mne-0.23.4+dfsg/doc/changes/latest.inc.template python-mne-1.1.0+dfsg/doc/changes/latest.inc.template --- python-mne-0.23.4+dfsg/doc/changes/latest.inc.template 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/latest.inc.template 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,34 @@ +.. NOTE: we use cross-references to highlight new functions and classes. + Please follow the examples below like :func:`mne.stats.f_mway_rm`, so the + whats_new page will have a link to the function/class documentation. + +.. NOTE: there are 3 separate sections for changes, based on type: + - "Enhancements" for new features + - "Bugs" for bug fixes + - "API changes" for backward-incompatible changes + +.. NOTE: changes from first-time contributors should be added to the TOP of + the relevant section (Enhancements / Bugs / API changes), and should look + like this (where xxxx is the pull request number): + + - description of enhancement/bugfix/API change (:gh:`xxxx` by + :newcontrib:`Firstname Lastname`) + + Also add a corresponding entry for yourself in doc/changes/names.inc + +.. _current: + +Current (1.1.dev0) +------------------ + +Enhancements +~~~~~~~~~~~~ +- None yet + +Bugs +~~~~ +- None yet + +API changes +~~~~~~~~~~~ +- None yet diff -Nru python-mne-0.23.4+dfsg/doc/changes/names.inc python-mne-1.1.0+dfsg/doc/changes/names.inc --- python-mne-0.23.4+dfsg/doc/changes/names.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/changes/names.inc 2022-08-03 15:48:14.000000000 +0000 @@ -1,391 +1,485 @@ -.. _Alex Gramfort: http://alexandre.gramfort.net +.. _Abram Hindle: http://softwareprocess.es -.. _Martin Luessi: https://github.com/mluessi +.. _Adam Li: http://github.com/adam2392 -.. _Yaroslav Halchenko: http://www.onerussian.com/ +.. _Adeline Fecker: https://github.com/adelinefecker -.. _Daniel Strohmeier: https://github.com/joewalter +.. _Adina Wagner: https://github.com/adswa -.. _Eric Larson: http://larsoner.com +.. _Adonay Nunes: https://github.com/AdoNunes -.. _Denis Engemann: http://denis-engemann.de +.. _Alan Leggitt: https://github.com/leggitta -.. _Christian Brodbeck: https://github.com/christianbrodbeck +.. _Alejandro Weinstein: http://ocam.cl -.. _Simon Kornblith: http://simonster.com +.. _Alessandro Tonin: https://wysscenter.ch/team/alessandro-tonin -.. _Teon Brooks: https://teonbrooks.github.io +.. _Alex Ciok: https://github.com/alexCiok -.. _Mainak Jas: http://ltl.tkk.fi/wiki/Mainak_Jas +.. _Alex Gramfort: http://alexandre.gramfort.net -.. _Roman Goj: http://romanmne.blogspot.co.uk +.. _Alex Rockhill: https://github.com/alexrockhill/ + +.. _Alexander Rudiuk: https://github.com/ARudiuk + +.. _Alexandre Barachant: http://alexandre.barachant.org + +.. _Andrea Brovelli: https://andrea-brovelli.net + +.. _Andreas Hojlund: https://github.com/ahoejlund + +.. _Andres Rodriguez: https://github.com/infinitejest/ .. _Andrew Dykstra: https://github.com/adykstra -.. _Romain Trachel: http://www.lscp.net/braware/trachelBr.html +.. _Aniket Pradhan: https://github.com/Aniket-Pradhan -.. _Christopher Dinh: https://github.com/chdinh +.. _Anna Padee: https://github.com/apadee/ -.. _Nick Ward: http://www.ucl.ac.uk/ion/departments/sobell/Research/NWard +.. _Annalisa Pascarella: http://www.iac.rm.cnr.it/~pasca/ -.. _Tal Linzen: http://tallinzen.net/ +.. _Anne-Sophie Dubarry: https://github.com/annesodub -.. _Roan LaPlante: https://github.com/aestrivex +.. _Antoine Gauthier: https://github.com/Okamille -.. _Mads Jensen: https://github.com/MadsJensen +.. _Antti Rantala: https://github.com/Odingod -.. _Dan Wakeman: https://github.com/dgwakeman +.. _Apoorva Karekal: https://github.com/apoorva6262 -.. _Qunxi Dong: https://github.com/dongqunxi +.. _Archit Singhal: https://github.com/architsinghal-mriirs -.. _Martin Billinger: https://github.com/mbillingr +.. _Ashley Drew: https://github.com/ashdrew -.. _Federico Raimondo: https://github.com/fraimondo +.. _Asish Panda: https://github.com/kaichogami -.. _Cathy Nangini: https://github.com/KatiRG +.. _Austin Hurst: https://github.com/a-hurst -.. _Jean-Remi King: https://github.com/kingjr +.. _Ben Beasley: https://github.com/musicinmybrain -.. _Juergen Dammers: https://github.com/jdammers +.. _Britta Westner: https://github.com/britta-wstnr -.. _Olaf Hauk: http://www.neuroscience.cam.ac.uk/directory/profile.php?olafhauk +.. _Bruno Nicenboim: https://bnicenboim.github.io -.. _Lukas Breuer: http://www.researchgate.net/profile/Lukas_Breuer +.. _buildqa: https://github.com/buildqa -.. _Alan Leggitt: https://github.com/leggitta +.. _Carina Forster: https://github.com/carinafo -.. _Marijn van Vliet: https://github.com/wmvanvliet +.. _Cathy Nangini: https://github.com/KatiRG -.. _Marmaduke Woodman: https://github.com/maedoc +.. _Chris Bailey: https://github.com/cjayb -.. _Jona Sassenhagen: https://github.com/jona-sassenhagen +.. _Chris Holdgraf: https://chrisholdgraf.com -.. _Hari Bharadwaj: http://www.haribharadwaj.com +.. _Chris Mullins: http://crmullins.com -.. _Chris Holdgraf: http://chrisholdgraf.com +.. _Christian Brodbeck: https://github.com/christianbrodbeck -.. _Jaakko Leppakangas: https://github.com/jaeilepp +.. _Christian O'Reilly: https://github.com/christian-oreilly -.. _Yousra Bekhti: https://www.linkedin.com/pub/yousra-bekhti/56/886/421 +.. _Christopher Dinh: https://github.com/chdinh -.. _Mark Wronkiewicz: https://ml.jpl.nasa.gov/people/wronkiewicz/wronkiewicz.html +.. _Chun-Hui Li: https://github.com/iamsc -.. _Sébastien Marti: http://www.researchgate.net/profile/Sebastien_Marti +.. _Clemens Brunner: https://github.com/cbrnr -.. _Chris Bailey: https://github.com/cjayb +.. _Cora Kim: https://github.com/kimcoco -.. _Ross Maddox: https://www.urmc.rochester.edu/labs/maddox-lab.aspx +.. _Cristóbal Moënne-Loccoz: https://github.com/cmmoenne -.. _Alexandre Barachant: http://alexandre.barachant.org +.. _Dan Wakeman: https://github.com/dgwakeman .. _Daniel McCloy: http://dan.mccloy.info -.. _Jair Montoya Martinez: https://github.com/jmontoyam +.. _Daniel Strohmeier: https://github.com/joewalter -.. _Samu Taulu: http://ilabs.washington.edu/institute-faculty/bio/i-labs-samu-taulu-dsc +.. _Darin Erat Sleiter: https://github.com/dsleiter -.. _Lorenzo Desantis: https://github.com/lorenzo-desantis/ +.. _David Haslacher: https://github.com/davidhaslacher -.. _Jukka Nenonen: https://www.linkedin.com/pub/jukka-nenonen/28/b5a/684 +.. _David Julien: https://github.com/Swy7ch -.. _Jussi Nurminen: https://github.com/jjnurminen +.. _David Sabbagh: https://github.com/DavidSabbagh -.. _Clemens Brunner: https://github.com/cbrnr +.. _Demetres Kostas: https://github.com/kostasde -.. _Asish Panda: https://github.com/kaichogami +.. _Denis Engemann: http://denis-engemann.de -.. _Natalie Klein: http://natklein.weebly.com +.. _Dirk Gütlin: https://github.com/DiGyt -.. _Jon Houck: https://www.mrn.org/people/jon-m.-houck/principal-investigators +.. _Dmitrii Altukhov: https://github.com/dmalt -.. _Pablo-Arias: https://github.com/Pablo-Arias +.. _Dominik Welke: https://github.com/dominikwelke/ -.. _Alexander Rudiuk: https://github.com/ARudiuk +.. _Dominique Makowski: https://dominiquemakowski.github.io/ -.. _Mikołaj Magnuski: https://github.com/mmagnuski +.. _Eberhard Eich: https://github.com/ebeich -.. _Felix Raimundo: https://github.com/gamazeps +.. _Eduard Ort: https://github.com/eort -.. _Nick Foti: http://nfoti.github.io +.. _Emily Stephen: http://github.com/emilyps14 -.. _Guillaume Dumas: http://www.extrospection.eu +.. _Enrico Varano: https://github.com/enricovara/ -.. _Chris Mullins: http://crmullins.com +.. _Eric Larson: http://larsoner.com -.. _Phillip Alday: https://palday.bitbucket.io +.. _Erica Peterson: https://github.com/nordme -.. _Andreas Hojlund: https://github.com/ahoejlund +.. _Erkka Heinila: https://github.com/Teekuningas -.. _Johannes Niediek: https://github.com/jniediek +.. _Etienne de Montalivet: https://github.com/etiennedemontalivet -.. _Sheraz Khan: https://github.com/SherazKhan +.. _Evan Hathaway: https://github.com/ephathaway -.. _Antti Rantala: https://github.com/Odingod +.. _Evgeny Goldstein: https://github.com/evgenygoldstein -.. _Keith Doelling: https://github.com/kdoelling1919 +.. _Ezequiel Mikulan: https://github.com/ezemikulan -.. _Paul Pasler: https://github.com/ppasler +.. _Ezequiel Mikulan: https://github.com/ezemikulan -.. _Niklas Wilming: https://github.com/nwilming +.. _Fahimeh Mamashli: https://github.com/fmamashli -.. _Annalisa Pascarella: http://www.iac.rm.cnr.it/~pasca/ +.. _Federico Raimondo: https://github.com/fraimondo -.. _Luke Bloy: https://imaging.research.chop.edu/people/dr-luke-bloy +.. _Federico Zamberlan: https://github.com/fzamberlan -.. _Leonardo Barbosa: https://github.com/noreun +.. _Felix Klotzsche: https://github.com/eioe -.. _Erkka Heinila: https://github.com/Teekuningas +.. _Felix Raimundo: https://github.com/gamazeps -.. _Andrea Brovelli: http://andrea-brovelli.net +.. _Frederik Weber: https://github.com/Frederik-D-Weber -.. _Richard Höchenberger: https://github.com/hoechenberger +.. _Fu-Te Wong: https://github.com/zuxfoucault -.. _Matt Boggess: https://github.com/mattboggess +.. _Geoff Brookshire: https://github.com/gbrookshire -.. _Jean-Baptiste Schiratti: https://github.com/jbschiratti +.. _Guillaume Dumas: http://www.extrospection.eu -.. _Laura Gwilliams: http://lauragwilliams.github.io +.. _Guillaume Favelier: https://github.com/GuillaumeFavelier -.. _Jesper Duemose Nielsen: https://github.com/jdue +.. _Hamid Maymandi: https://github.com/HamidMandi -.. _Mathurin Massias: https://mathurinm.github.io/ +.. _Hari Bharadwaj: http://www.haribharadwaj.com -.. _ramonapariciog: https://github.com/ramonapariciog +.. _Henrich Kolkhorst: https://github.com/hekolk -.. _Britta Westner: https://github.com/britta-wstnr +.. _Hongjiang Ye: https://github.com/rubyyhj -.. _Lukáš Hejtmánek: https://github.com/hejtmy +.. _Hubert Banville: https://github.com/hubertjb -.. _Stefan Repplinger: https://github.com/stfnrpplngr +.. _Ilias Machairas: https://github.com/JungleHippo -.. _Okba Bekhelifi: https://github.com/okbalefthanded +.. _Ivana Kojcic: https://github.com/ikojcic -.. _Nicolas Barascud: https://github.com/nbara +.. _Jaakko Leppakangas: https://github.com/jaeilepp -.. _Alejandro Weinstein: http://ocam.cl +.. _Jack Zhang: https://github.com/jackz314 -.. _Emily Stephen: http://github.com/emilyps14 +.. _Jair Montoya Martinez: https://github.com/jmontoyam -.. _Nathalie Gayraud: https://github.com/ngayraud +.. _Jan Sedivy: https://github.com/honzaseda -.. _Anne-Sophie Dubarry: https://github.com/annesodub +.. _Jan Sosulski: https://jan-sosulski.de -.. _Stefan Appelhoff: http://stefanappelhoff.com +.. _Jan Zerfowski: https://github.com/jzerfowski -.. _Tommy Clausner: https://github.com/TommyClausner +.. _Jasper van den Bosch: https://github.com/ilogue -.. _Pierre Ablin: https://pierreablin.com +.. _Jean-Baptiste Schiratti: https://github.com/jbschiratti -.. _Oleh Kozynets: https://github.com/OlehKSS +.. _Jean-Remi King: https://github.com/kingjr -.. _Susanna Aro: https://www.linkedin.com/in/susanna-aro +.. _Jeff Hanna: https://github.com/jshanna100 + +.. _Jeff Stout: https://megcore.nih.gov/index.php/Staff + +.. _Jeroen Van Der Donckt: https://github.com/jvdd + +.. _Jesper Duemose Nielsen: https://github.com/jdue + +.. _jeythekey: https://github.com/jeythekey .. _Joan Massich: https://github.com/massich -.. _Henrich Kolkhorst: https://github.com/hekolk +.. _Johann Benerradi: https://github.com/HanBnrd -.. _Steven Bethard: https://github.com/bethard +.. _Johannes Niediek: https://github.com/jniediek -.. _Thomas Hartmann: https://github.com/thht +.. _John Samuelsson: https://github.com/johnsam7 -.. _Steven Gutstein: http://vll.cs.utep.edu/team.html +.. _John Veillette: https://psychology.uchicago.edu/directory/john-veillette -.. _Peter Molfese: https://github.com/pmolfese +.. _Jon Houck: https://www.mrn.org/people/jon-m.-houck/principal-investigators -.. _Dirk Gütlin: https://github.com/DiGyt +.. _Jona Sassenhagen: https://github.com/jona-sassenhagen -.. _Jasper van den Bosch: https://github.com/ilogue +.. _Jonathan Kuziek: https://github.com/kuziekj -.. _Ezequiel Mikulan: https://github.com/ezemikulan +.. _Jordan Drew: https://github.com/jadrew43 -.. _Rasmus Zetter: https://people.aalto.fi/rasmus.zetter +.. _Jose Alanis: https://github.com/JoseAlanis -.. _Marcin Koculak: https://github.com/mkoculak +.. _Joshua Bear: https://github.com/joshbear -.. _David Sabbagh: https://github.com/DavidSabbagh +.. _Joshua Teves: https://github.com/jbteves -.. _Hubert Banville: https://github.com/hubertjb +.. _Judy D Zhu: https://github.com/JD-Zhu -.. _buildqa: https://github.com/buildqa +.. _Juergen Dammers: https://github.com/jdammers -.. _jeythekey: https://github.com/jeythekey +.. _Jukka Nenonen: https://www.linkedin.com/pub/jukka-nenonen/28/b5a/684 -.. _Sara Sommariva: http://www.dima.unige.it/~sommariva/ +.. _Jussi Nurminen: https://github.com/jjnurminen -.. _Cristóbal Moënne-Loccoz: https://github.com/cmmoenne +.. _Kaisu Lankinen: http://bishoplab.berkeley.edu/Kaisu.html -.. _David Haslacher: https://github.com/davidhaslacher +.. _kalenkovich: https://github.com/kalenkovich + +.. _Katarina Slama: https://github.com/katarinaslama + +.. _Keith Doelling: https://github.com/kdoelling1919 + +.. _Kostiantyn Maksymenko: https://github.com/makkostya + +.. _Kyle Mathewson: https://github.com/kylemath .. _Larry Eisenman: https://github.com/lneisenman -.. _Stanislas Chambon: https://github.com/Slasnista +.. _Lau Møller Andersen: https://github.com/ualsbombe -.. _Jeff Hanna: https://github.com/jshanna100 +.. _Laura Gwilliams: http://lauragwilliams.github.io -.. _kalenkovich: https://github.com/kalenkovich +.. _Leonardo Barbosa: https://github.com/noreun -.. _Antoine Gauthier: https://github.com/Okamille +.. _Liberty Hamilton: https://github.com/libertyh -.. _Samuel Deslauriers-Gauthier: https://github.com/sdeslauriers +.. _Lorenzo Desantis: https://github.com/lorenzo-desantis/ -.. _Sebastian Castano: https://github.com/jscastanoc +.. _Lukas Breuer: https://www.researchgate.net/profile/Lukas-Breuer-2 -.. _Guillaume Favelier: https://github.com/GuillaumeFavelier +.. _Lukas Gemein: https://github.com/gemeinl -.. _Katarina Slama: https://github.com/katarinaslama +.. _Lukáš Hejtmánek: https://github.com/hejtmy -.. _Bruno Nicenboim: https://bnicenboim.github.io +.. _Luke Bloy: https://www.research.chop.edu/imaging/team -.. _Ivana Kojcic: https://github.com/ikojcic +.. _Lx37: https://github.com/Lx37 -.. _Nikolas Chalas: https://github.com/Nichalas +.. _Mads Jensen: https://github.com/MadsJensen -.. _Quentin Bertrand: https://github.com/QB3 +.. _Maggie Clarke: https://github.com/mdclarke -.. _Alexander Kovrig: https://github.com/OpenSatori +.. _Mainak Jas: https://jasmainak.github.io -.. _Kostiantyn Maksymenko: https://github.com/makkostya +.. _Marcin Koculak: https://github.com/mkoculak -.. _Thomas Radman: https://github.com/tradman +.. _Marian Dovgialo: https://github.com/mdovgialo -.. _Paul Roujansky: https://github.com/paulroujansky +.. _Marijn van Vliet: https://github.com/wmvanvliet -.. _Theodore Papadopoulo: https://github.com/papadop +.. _Mark Wronkiewicz: https://ml.jpl.nasa.gov/people/wronkiewicz/wronkiewicz.html -.. _Milan Rybář: http://milanrybar.cz +.. _Marmaduke Woodman: https://github.com/maedoc -.. _Joshua Bear: https://github.com/joshbear +.. _Martin Billinger: https://github.com/mbillingr -.. _Eberhard Eich: https://github.com/ebeich +.. _Martin Luessi: https://github.com/mluessi -.. _Abram Hindle: http://softwareprocess.es +.. _Martin Schulz: https://github.com/marsipu -.. _Kaisu Lankinen: http://bishoplab.berkeley.edu/Kaisu.html +.. _Mathieu Scheltienne: https://github.com/mscheltienne -.. _Padma Sundaram: https://www.nmr.mgh.harvard.edu/user/8071 +.. _Mathurin Massias: https://mathurinm.github.io/ -.. _Robert Luke: https://github.com/rob-luke +.. _Matt Boggess: https://github.com/mattboggess -.. _Robert Seymour: https://neurofractal.github.io +.. _Matt Courtemanche: https://github.com/mjcourte .. _Matt Sanderson: https://github.com/monkeyman192 -.. _Mohammad Daneshzand: https://github.com/mdaneshzand +.. _Matteo Anelli: https://github.com/matteoanelli -.. _Fahimeh Mamashli: https://github.com/fmamashli +.. _Matthias Dold: https://matthiasdold.de -.. _Jose Alanis: https://github.com/JoseAlanis +.. _Matthias Eberlein: https://github.com/MatthiasEb -.. _Adonay Nunes: https://github.com/AdoNunes +.. _Matti Toivonen: https://github.com/mattitoi -.. _Victor Ferat: https://github.com/vferat +.. _Michiru Kaneda: https://github.com/rcmdnk -.. _Dmitrii Altukhov: https://www.hse.ru/en/org/persons/190873905 +.. _Mikołaj Magnuski: https://github.com/mmagnuski -.. _Demetres Kostas: https://github.com/kostasde +.. _Milan Rybář: http://milanrybar.cz -.. _Alex Rockhill: https://github.com/alexrockhill/ +.. _Mingjian He: https://github.com/mh105 -.. _Chun-Hui Li: https://github.com/iamsc +.. _Mohammad Daneshzand: https://github.com/mdaneshzand -.. _Christian O'Reilly: https://github.com/christian-oreilly +.. _Natalie Klein: https://github.com/natalieklein -.. _Yu-Han Luo: https://github.com/yh-luo +.. _Nathalie Gayraud: https://github.com/ngayraud -.. _Fu-Te Wong: https://github.com/zuxfoucault +.. _Naveen Srinivasan: https://github.com/naveensrinivasan -.. _Sebastian Major: https://github.com/major-s +.. _Nick Foti: http://nfoti.github.io -.. _Geoff Brookshire: https://github.com/gbrookshire +.. _Nick Ward: http://www.ucl.ac.uk/ion/departments/sobell/Research/NWard -.. _Sophie Herbst: https://github.com/SophieHerbst +.. _Nicolas Barascud: https://github.com/nbara -.. _Adam Li: http://github.com/adam2392 +.. _Niklas Wilming: https://github.com/nwilming -.. _Simeon Wong: https://github.com/dtxe +.. _Nikolai Chapochnikov: https://github.com/chapochn -.. _Ramiro Gatti: https://github.com/ragatti +.. _Nikolas Chalas: https://github.com/Nichalas -.. _Liberty Hamilton: https://github.com/libertyh +.. _Okba Bekhelifi: https://github.com/okbalefthanded -.. _Svea Marie Meyer: https://github.com/SveaMeyer13 +.. _Olaf Hauk: http://www.neuroscience.cam.ac.uk/directory/profile.php?olafhauk -.. _Lx37: https://github.com/Lx37 +.. _Oleh Kozynets: https://github.com/OlehKSS -.. _Kyle Mathewson: https://github.com/kylemath +.. _Pablo-Arias: https://github.com/Pablo-Arias -.. _Ezequiel Mikulan: https://github.com/ezemikulan +.. _Padma Sundaram: https://www.nmr.mgh.harvard.edu/user/8071 -.. _Jan Sedivy: https://github.com/honzaseda +.. _Paul Pasler: https://github.com/ppasler -.. _Johann Benerradi: https://github.com/HanBnrd +.. _Paul Roujansky: https://github.com/paulroujansky -.. _Rahul Nadkarni: https://github.com/rahuln +.. _Peter Molfese: https://github.com/pmolfese -.. _Jonathan Kuziek: https://github.com/kuziekj +.. _Phillip Alday: https://palday.bitbucket.io -.. _Lau Møller Andersen: https://github.com/ualsbombe +.. _Pierre Ablin: https://pierreablin.com -.. _Martin Schulz: https://github.com/marsipu +.. _Pierre-Antoine Bannier: https://github.com/PABannier -.. _Jeroen Van Der Donckt: https://github.com/jvdd +.. _Qianliang Li: https://www.dtu.dk/english/service/phonebook/person?id=126774 -.. _Steven Bierer: https://github.com/neurolaunch +.. _Quentin Bertrand: https://github.com/QB3 -.. _Eduard Ort: https://github.com/eort +.. _Qunxi Dong: https://github.com/dongqunxi -.. _Aniket Pradhan: https://github.com/Aniket-Pradhan +.. _Rahul Nadkarni: https://github.com/rahuln -.. _Tod Flak: https://github.com/todflak +.. _Ram Pari: https://github.com/ramkpari -.. _Austin Hurst: https://github.com/a-hurst +.. _Ramiro Gatti: https://github.com/ragatti -.. _Victoria Peterson: https://github.com/vpeterson +.. _ramonapariciog: https://github.com/ramonapariciog -.. _Evan Hathaway: https://github.com/ephathaway +.. _Rasmus Zetter: https://people.aalto.fi/rasmus.zetter -.. _Hongjiang Ye: https://github.com/rubyyhj +.. _Reza Nasri: https://github.com/0reza -.. _Jeff Stout: https://megcore.nih.gov/index.php/Staff +.. _Reza Shoorangiz: https://github.com/rezashr -.. _Qianliang Li: https://www.dtu.dk/english/service/phonebook/person?id=126774 +.. _Richard Höchenberger: https://github.com/hoechenberger .. _Richard Koehler: https://github.com/richardkoehler -.. _Tristan Stenner: https://github.com/tstenner/ +.. _Riessarius Stargardsky: https://github.com/Riessarius -.. _Anna Padee: https://github.com/apadee/ +.. _Roan LaPlante: https://github.com/aestrivex -.. _Andres Rodriguez: https://github.com/infinitejest/ +.. _Robert Luke: https://github.com/rob-luke + +.. _Robert Seymour: https://neurofractal.github.io + +.. _Romain Derollepot: https://github.com/rderollepot + +.. _Romain Trachel: https://fr.linkedin.com/in/trachelr + +.. _Roman Goj: http://romanmne.blogspot.co.uk + +.. _Ross Maddox: https://www.urmc.rochester.edu/labs/maddox-lab.aspx .. _Rotem Falach: https://github.com/Falach -.. _Zhi Zhang: https://github.com/tczhangzhi/ +.. _Samu Taulu: https://phys.washington.edu/people/samu-taulu -.. _Enrico Varano: https://github.com/enricovara/ +.. _Samuel Deslauriers-Gauthier: https://github.com/sdeslauriers -.. _Dominik Welke: https://github.com/dominikwelke/ +.. _Samuel Powell: https://github.com/samuelpowell -.. _Judy D Zhu: https://github.com/JD-Zhu +.. _Sara Sommariva: http://www.dima.unige.it/~sommariva/ -.. _Valerii Chirkov: https://github.com/vagechirkov +.. _Scott Huberty: https://orcid.org/0000-0003-2637-031X -.. _Maggie Clarke: https://github.com/mdclarke +.. _Sebastian Castano: https://github.com/jscastanoc -.. _Apoorva Karekal: https://github.com/apoorva6262 +.. _Sebastian Major: https://github.com/major-s -.. _Matteo Anelli: https://github.com/matteoanelli +.. _Sébastien Marti: https://www.researchgate.net/profile/Sebastien-Marti -.. _Cora Kim: https://github.com/kimcoco +.. _Senwen Deng: https://snwn.de + +.. _Sheraz Khan: https://github.com/SherazKhan .. _Silvia Cotroneo: https://github.com/sfc-neuro -.. _Ram Pari: https://github.com/ramkpari +.. _Simeon Wong: https://github.com/dtxe -.. _Erica Peterson: https://github.com/nordme +.. _Simon Kern: https://github.com/skjerns + +.. _Simon Kornblith: http://simonster.com + +.. _Sondre Foslien: https://github.com/sondrfos + +.. _Sophie Herbst: https://github.com/SophieHerbst + +.. _Stanislas Chambon: https://github.com/Slasnista + +.. _Stefan Appelhoff: http://stefanappelhoff.com + +.. _Stefan Repplinger: https://github.com/stfnrpplngr + +.. _Steven Bethard: https://github.com/bethard + +.. _Steven Bierer: https://github.com/neurolaunch + +.. _Steven Gutstein: https://github.com/smgutstein .. _Sumalyo Datta: https://github.com/Sumalyo -.. _Jack Zhang: https://github.com/jackz314 +.. _Susanna Aro: https://www.linkedin.com/in/susanna-aro -.. _Felix Klotzsche: https://github.com/eioe +.. _Svea Marie Meyer: https://github.com/SveaMeyer13 + +.. _T. Wang: https://github.com/twang5 + +.. _Tal Linzen: http://tallinzen.net/ + +.. _Teon Brooks: https://teonbrooks.com + +.. _Theodore Papadopoulo: https://github.com/papadop + +.. _Thomas Hartmann: https://github.com/thht + +.. _Thomas Radman: https://github.com/tradman + +.. _Timothy Gates: https://au.linkedin.com/in/tim-gates-0528a4199 + +.. _Tod Flak: https://github.com/todflak + +.. _Tommy Clausner: https://github.com/TommyClausner + +.. _Tristan Stenner: https://github.com/tstenner/ + +.. _Tziona NessAiver: https://github.com/TzionaN + +.. _Valerii Chirkov: https://github.com/vagechirkov + +.. _Victor Ferat: https://github.com/vferat + +.. _Victoria Peterson: https://github.com/vpeterson + +.. _Xiaokai Xia: https://github.com/dddd1007 + +.. _Yaroslav Halchenko: http://www.onerussian.com/ + +.. _Yousra Bekhti: https://www.linkedin.com/pub/yousra-bekhti/56/886/421 + +.. _Yu-Han Luo: https://github.com/yh-luo + +.. _Zhi Zhang: https://github.com/tczhangzhi/ diff -Nru python-mne-0.23.4+dfsg/doc/cited.rst python-mne-1.1.0+dfsg/doc/cited.rst --- python-mne-0.23.4+dfsg/doc/cited.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/cited.rst 2022-08-03 15:48:14.000000000 +0000 @@ -3,7 +3,7 @@ Papers citing MNE-Python ======================== -Estimates provided by Google Scholar as of 27 January 2021: +Estimates provided by Google Scholar as of 02 August 2022: -- `MNE (908) `_ -- `MNE-Python (771) `_ +- `MNE (1270) `_ +- `MNE-Python (1420) `_ diff -Nru python-mne-0.23.4+dfsg/doc/conf.py python-mne-1.1.0+dfsg/doc/conf.py --- python-mne-0.23.4+dfsg/doc/conf.py 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/conf.py 2022-08-03 15:48:14.000000000 +0000 @@ -6,31 +6,34 @@ # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html +from datetime import datetime, timezone +import faulthandler import gc import os +import subprocess import sys import time import warnings -from datetime import datetime, timezone -from distutils.version import LooseVersion +import numpy as np import matplotlib import sphinx -import sphinx_gallery from sphinx_gallery.sorting import FileNameSortKey, ExplicitOrder from numpydoc import docscrape import mne +from mne.fixes import _compare_version from mne.tests.test_docstring_parameters import error_ignores from mne.utils import (linkcode_resolve, # noqa, analysis:ignore - _assert_no_instances, sizeof_fmt) + _assert_no_instances, sizeof_fmt, run_subprocess) from mne.viz import Brain # noqa -if LooseVersion(sphinx_gallery.__version__) < LooseVersion('0.2'): - raise ImportError('Must have at least version 0.2 of sphinx-gallery, got ' - f'{sphinx_gallery.__version__}') - matplotlib.use('agg') +faulthandler.enable() +os.environ['_MNE_BROWSER_NO_BLOCK'] = 'true' +os.environ['MNE_BROWSER_OVERVIEW_MODE'] = 'hidden' +os.environ['MNE_BROWSER_THEME'] = 'light' +os.environ['MNE_3D_OPTION_THEME'] = 'light' # -- Path setup -------------------------------------------------------------- @@ -87,10 +90,12 @@ 'gen_commands', 'gh_substitutions', 'mne_substitutions', + 'newcontrib_substitutions', 'gen_names', - 'sphinx_bootstrap_divs', 'sphinxcontrib.bibtex', 'sphinx_copybutton', + 'sphinx_design', + 'sphinxcontrib.youtube' ] # Add any paths that contain templates here, relative to this directory. @@ -118,9 +123,6 @@ # documents. default_role = "py:obj" -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'default' - # A list of ignored prefixes for module index sorting. modindex_common_prefix = ['mne.'] @@ -134,14 +136,16 @@ 'python': ('https://docs.python.org/3', None), 'numpy': ('https://numpy.org/devdocs', None), 'scipy': ('https://scipy.github.io/devdocs', None), - 'matplotlib': ('https://matplotlib.org', None), + 'matplotlib': ('https://matplotlib.org/stable', None), 'sklearn': ('https://scikit-learn.org/stable', None), 'numba': ('https://numba.pydata.org/numba-doc/latest', None), 'joblib': ('https://joblib.readthedocs.io/en/latest', None), - 'mayavi': ('http://docs.enthought.com/mayavi/mayavi', None), 'nibabel': ('https://nipy.org/nibabel', None), - 'nilearn': ('http://nilearn.github.io', None), + 'nilearn': ('http://nilearn.github.io/stable', None), + 'nitime': ('https://nipy.org/nitime/', None), 'surfer': ('https://pysurfer.github.io/', None), + 'mne_bids': ('https://mne.tools/mne-bids/stable', None), + 'mne-connectivity': ('https://mne.tools/mne-connectivity/stable', None), 'pandas': ('https://pandas.pydata.org/pandas-docs/stable', None), 'seaborn': ('https://seaborn.pydata.org/', None), 'statsmodels': ('https://www.statsmodels.org/dev', None), @@ -152,32 +156,38 @@ 'picard': ('https://pierreablin.github.io/picard/', None), 'qdarkstyle': ('https://qdarkstylesheet.readthedocs.io/en/latest', None), 'eeglabio': ('https://eeglabio.readthedocs.io/en/latest', None), - 'dipy': ('https://dipy.org/documentation/1.4.0./', - 'https://dipy.org/documentation/1.4.0./objects.inv/'), + 'dipy': ('https://dipy.org/documentation/latest/', + 'https://dipy.org/documentation/latest/objects.inv/'), + 'pooch': ('https://www.fatiando.org/pooch/latest/', None), + 'pybv': ('https://pybv.readthedocs.io/en/latest/', None), } # NumPyDoc configuration ----------------------------------------------------- -# XXX This hack defines what extra methods numpydoc will document +# Define what extra methods numpydoc will document docscrape.ClassDoc.extra_public_methods = mne.utils._doc_special_members numpydoc_class_members_toctree = False +numpydoc_show_inherited_class_members = { + 'mne.SourceSpaces': False, + 'mne.Forward': False, +} numpydoc_attributes_as_param_list = True numpydoc_xref_param_type = True numpydoc_xref_aliases = { # Python 'file-like': ':term:`file-like `', + 'iterator': ':term:`iterator `', + 'path-like': ':term:`path-like`', + 'array-like': ':term:`array-like`', + 'Path': ':class:`python:pathlib.Path`', # Matplotlib 'colormap': ':doc:`colormap `', 'color': ':doc:`color `', - 'collection': ':doc:`collections `', 'Axes': 'matplotlib.axes.Axes', 'Figure': 'matplotlib.figure.Figure', 'Axes3D': 'mpl_toolkits.mplot3d.axes3d.Axes3D', 'ColorbarBase': 'matplotlib.colorbar.ColorbarBase', - # Mayavi - 'mayavi.mlab.Figure': 'mayavi.core.api.Scene', - 'mlab.Figure': 'mayavi.core.api.Scene', # sklearn 'LeaveOneOut': 'sklearn.model_selection.LeaveOneOut', # joblib @@ -222,6 +232,8 @@ 'EMS': 'mne.decoding.EMS', 'CSP': 'mne.decoding.CSP', 'Beamformer': 'mne.beamformer.Beamformer', 'Transform': 'mne.transforms.Transform', + 'Coregistration': 'mne.coreg.Coregistration', + 'Figure3D': 'mne.viz.Figure3D', # dipy 'dipy.align.AffineMap': 'dipy.align.imaffine.AffineMap', 'dipy.align.DiffeomorphicMap': 'dipy.align.imwarp.DiffeomorphicMap', @@ -230,12 +242,12 @@ # words 'instance', 'instances', 'of', 'default', 'shape', 'or', 'with', 'length', 'pair', 'matplotlib', 'optional', 'kwargs', 'in', - 'dtype', 'object', 'self.verbose', + 'dtype', 'object', # shapes 'n_vertices', 'n_faces', 'n_channels', 'm', 'n', 'n_events', 'n_colors', 'n_times', 'obj', 'n_chan', 'n_epochs', 'n_picks', 'n_ch_groups', 'n_dipoles', 'n_ica_components', 'n_pos', 'n_node_names', 'n_tapers', - 'n_signals', 'n_step', 'n_freqs', 'wsize', 'Tx', 'M', 'N', 'p', 'q', + 'n_signals', 'n_step', 'n_freqs', 'wsize', 'Tx', 'M', 'N', 'p', 'q', 'r', 'n_observations', 'n_regressors', 'n_cols', 'n_frequencies', 'n_tests', 'n_samples', 'n_permutations', 'nchan', 'n_points', 'n_features', 'n_parts', 'n_features_new', 'n_components', 'n_labels', 'n_events_in', @@ -244,16 +256,17 @@ 'n_elp', 'n_pts', 'n_tris', 'n_nodes', 'n_nonzero', 'n_events_out', 'n_segments', 'n_orient_inv', 'n_orient_fwd', 'n_orient', 'n_dipoles_lcmv', 'n_dipoles_fwd', 'n_picks_ref', 'n_coords', 'n_meg', 'n_good_meg', - 'n_moments', + 'n_moments', 'n_patterns', 'n_new_events', # Undocumented (on purpose) 'RawKIT', 'RawEximia', 'RawEGI', 'RawEEGLAB', 'RawEDF', 'RawCTF', 'RawBTi', 'RawBrainVision', 'RawCurry', 'RawNIRX', 'RawGDF', 'RawSNIRF', 'RawBOXY', - 'RawPersyst', 'RawNihon', 'RawNedf', + 'RawPersyst', 'RawNihon', 'RawNedf', 'RawHitachi', # sklearn subclasses 'mapping', 'to', 'any', # unlinkable - 'mayavi.mlab.pipeline.surface', - 'CoregFrame', 'Kit2FiffFrame', 'FiducialsFrame', + 'CoregistrationUI', + 'IntracranialElectrodeLocator', + 'mne_qt_browser.figure.MNEQtBrowser', } numpydoc_validate = True numpydoc_validation_checks = {'all'} | set(error_ignores) @@ -269,6 +282,10 @@ r'\.__sub__', r'\.__add__', r'\.__iter__', r'\.__div__', r'\.__neg__', # copied from sklearn r'mne\.utils\.deprecated', + # deprecations + r'mne\.connectivity\.degree', r'mne\.connectivity\.seed_target_indices', + r'mne\.viz\.plot_sensors_connectivity', + r'mne\.viz\.plot_connectivity_circle', } @@ -283,28 +300,76 @@ def __repr__(self): return f'<{self.__class__.__name__}>' - def __call__(self, gallery_conf, fname): + def __call__(self, gallery_conf, fname, when): import matplotlib.pyplot as plt try: from pyvista import Plotter # noqa except ImportError: Plotter = None # noqa + try: + from pyvistaqt import BackgroundPlotter # noqa + except ImportError: + BackgroundPlotter = None # noqa + try: + from vtkmodules.vtkCommonDataModel import vtkPolyData # noqa + except ImportError: + vtkPolyData = None # noqa + try: + from mne_qt_browser._pg_figure import MNEQtBrowser + except ImportError: + MNEQtBrowser = None + from mne.viz.backends.renderer import backend + _Renderer = backend._Renderer if backend is not None else None reset_warnings(gallery_conf, fname) # in case users have interactive mode turned on in matplotlibrc, # turn it off here (otherwise the build can be very slow) plt.ioff() plt.rcParams['animation.embed_limit'] = 30. + plt.rcParams['figure.raise_window'] = False + # neo holds on to an exception, which in turn holds a stack frame, + # which will keep alive the global vars during SG execution + try: + import neo + neo.io.stimfitio.STFIO_ERR = None + except Exception: + pass gc.collect() - # _assert_no_instances(Brain, 'running') # calls gc.collect() - # if Plotter is not None: - # _assert_no_instances(Plotter, 'running') + when = f'mne/conf.py:Resetter.__call__:{when}:{fname}' + # Support stuff like + # MNE_SKIP_INSTANCE_ASSERTIONS="Brain,Plotter,BackgroundPlotter,vtkPolyData,_Renderer" make html_dev-memory # noqa: E501 + # to just test MNEQtBrowser + skips = os.getenv('MNE_SKIP_INSTANCE_ASSERTIONS', '').lower() + prefix = '' + if skips not in ('true', '1', 'all'): + prefix = 'Clean ' + skips = skips.split(',') + if 'brain' not in skips: + _assert_no_instances(Brain, when) # calls gc.collect() + if Plotter is not None and 'plotter' not in skips: + _assert_no_instances(Plotter, when) + if BackgroundPlotter is not None and \ + 'backgroundplotter' not in skips: + _assert_no_instances(BackgroundPlotter, when) + if vtkPolyData is not None and 'vtkpolydata' not in skips: + _assert_no_instances(vtkPolyData, when) + if '_renderer' not in skips: + _assert_no_instances(_Renderer, when) + if MNEQtBrowser is not None and \ + 'mneqtbrowser' not in skips: + # Ensure any manual fig.close() events get properly handled + from mne_qt_browser._pg_figure import QApplication + inst = QApplication.instance() + if inst is not None: + for _ in range(2): + inst.processEvents() + _assert_no_instances(MNEQtBrowser, when) # This will overwrite some Sphinx printing but it's useful # for memory timestamps if os.getenv('SG_STAMP_STARTS', '').lower() == 'true': import psutil process = psutil.Process(os.getpid()) mem = sizeof_fmt(process.memory_info().rss) - print(f'{time.time() - self.t0:6.1f} s : {mem}'.ljust(22)) + print(f'{prefix}{time.time() - self.t0:6.1f} s : {mem}'.ljust(22)) examples_dirs = ['../tutorials', '../examples'] @@ -317,27 +382,35 @@ report_scraper = None else: backend = mne.viz.get_3d_backend() - if backend == 'mayavi': - from traits.api import push_exception_handler - mlab = mne.utils._import_mlab() - # Do not pop up any mayavi windows while running the - # examples. These are very annoying since they steal the focus. - mlab.options.offscreen = True - # hack to initialize the Mayavi Engine - mlab.test_plot3d() - mlab.close() - scrapers += ('mayavi',) - push_exception_handler(reraise_exceptions=True) - elif backend in ('notebook', 'pyvista'): + if backend in ('notebook', 'pyvistaqt'): with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=DeprecationWarning) import pyvista pyvista.OFF_SCREEN = False - brain_scraper = mne.viz._brain._BrainScraper() - scrapers += (brain_scraper, 'pyvista') + scrapers += ( + mne.gui._GUIScraper(), + mne.viz._brain._BrainScraper(), + 'pyvista', + ) report_scraper = mne.report._ReportScraper() scrapers += (report_scraper,) del backend +try: + import mne_qt_browser + _min_ver = _compare_version(mne_qt_browser.__version__, '>=', '0.2') + if mne.viz.get_browser_backend() == 'qt' and _min_ver: + scrapers += (mne.viz._scraper._MNEQtBrowserScraper(),) +except ImportError: + pass + +compress_images = ('images', 'thumbnails') +# let's make things easier on Windows users +# (on Linux and macOS it's easy enough to require this) +if sys.platform.startswith('win'): + try: + subprocess.check_call(['optipng', '--version']) + except Exception: + compress_images = () sphinx_gallery_conf = { 'doc_module': ('mne',), @@ -380,14 +453,15 @@ 'min_reported_time': 1., 'abort_on_example_error': False, 'reset_modules': ('matplotlib', Resetter()), # called w/each script + 'reset_modules_order': 'both', 'image_scrapers': scrapers, - 'show_memory': not sys.platform.startswith('win'), + 'show_memory': not sys.platform.startswith(('win', 'darwin')), 'line_numbers': False, # messes with style 'within_subsection_order': FileNameSortKey, 'capture_repr': ('_repr_html_',), 'junit': os.path.join('..', 'test-results', 'sphinx-gallery', 'junit.xml'), 'matplotlib_animations': True, - 'compress_images': ('images', 'thumbnails'), + 'compress_images': compress_images, 'filename_pattern': '^((?!sgskip).)*$', } # Files were renamed from plot_* with: @@ -437,6 +511,13 @@ 'https://www.nyu.edu/', # noqa Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1122)'))) 'https://docs.python.org/3/library/.*', # noqa ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')) 'https://hal.archives-ouvertes.fr/hal-01848442.*', # noqa Sometimes: 503 Server Error: Service Unavailable for url: https://hal.archives-ouvertes.fr/hal-01848442/ + 'http://www.cs.ucl.ac.uk/staff/d.barber/brml.*', # noqa Sometimes: Read timed out + 'https://compumedicsneuroscan.com/scan-acquire-configuration-files.*', # noqa SSL certificate error as of 2021/09/28 + 'https://chrisholdgraf.com', # noqa Max retries exceeded sometimes + 'https://www.dtu.dk/english/service/phonebook/person.*', # noqa Too slow + 'https://speakerdeck.com/dengemann/eeg-sensor-covariance-using-cross-validation', # noqa Too slow + 'https://doi.org/10.1002/hbm.10024', # noqa Too slow sometimes + 'https://www.researchgate.net', # noqa As of 2022/05/31 we get "403 Forbidden" errors, might have to do with https://stackoverflow.com/questions/72347165 but not worth the effort to fix ] linkcheck_anchors = False # saves a bit of time linkcheck_timeout = 15 # some can be quite slow @@ -466,24 +547,6 @@ ("py:class", "_FuncT"), # type hint used in @verbose decorator ("py:class", "mne.utils._logging._FuncT"), ] -for key in ('AcqParserFIF', 'BiHemiLabel', 'Dipole', 'DipoleFixed', 'Label', - 'MixedSourceEstimate', 'MixedVectorSourceEstimate', 'Report', - 'SourceEstimate', 'SourceMorph', 'VectorSourceEstimate', - 'VolSourceEstimate', 'VolVectorSourceEstimate', - 'channels.DigMontage', 'channels.Layout', - 'decoding.CSP', 'decoding.EMS', 'decoding.FilterEstimator', - 'decoding.GeneralizingEstimator', 'decoding.LinearModel', - 'decoding.PSDEstimator', 'decoding.ReceptiveField', 'decoding.SSD', - 'decoding.SPoC', 'decoding.Scaler', 'decoding.SlidingEstimator', - 'decoding.TemporalFilter', 'decoding.TimeDelayingRidge', - 'decoding.TimeFrequency', 'decoding.UnsupervisedSpatialFilter', - 'decoding.Vectorizer', - 'preprocessing.ICA', 'preprocessing.Xdawn', - 'simulation.SourceSimulator', - 'time_frequency.CrossSpectralDensity', - 'utils.deprecated', - 'viz.ClickableImage'): - nitpick_ignore.append(('py:obj', f'mne.{key}.__hash__')) suppress_warnings = ['image.nonlocal_uri'] # we intentionally link outside @@ -497,6 +560,7 @@ # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. +switcher_version_match = 'dev' if release.endswith('dev0') else version html_theme_options = { 'icon_links': [ dict(name='GitHub', @@ -516,9 +580,13 @@ 'use_edit_page_button': False, 'navigation_with_keys': False, 'show_toc_level': 1, - 'navbar_end': ['version-switcher', 'navbar-icon-links'], + 'navbar_end': ['theme-switcher', 'version-switcher', 'navbar-icon-links'], 'footer_items': ['copyright'], 'google_analytics_id': 'UA-37225609-1', + 'switcher': { + 'json_url': 'https://mne.tools/dev/_static/versions.json', + 'version_match': switcher_version_match, + } } # The name of an image file (relative to this directory) to place at the top @@ -551,7 +619,7 @@ # Custom sidebar templates, maps document names to template names. html_sidebars = { - 'index': ['search-field.html', 'sidebar-quicklinks.html'], + 'index': ['sidebar-quicklinks.html'], } # If true, links to the reST sources are added to the pages. @@ -571,29 +639,19 @@ # variables to pass to HTML templating engine html_context = { 'build_dev_html': bool(int(os.environ.get('BUILD_DEV_HTML', False))), - 'versions_dropdown': { - 'dev': 'v0.24 (devel)', - 'stable': 'v0.23 (stable)', - '0.22': 'v0.22', - '0.21': 'v0.21', - '0.20': 'v0.20', - '0.19': 'v0.19', - '0.18': 'v0.18', - '0.17': 'v0.17', - '0.16': 'v0.16', - '0.15': 'v0.15', - '0.14': 'v0.14', - '0.13': 'v0.13', - '0.12': 'v0.12', - '0.11': 'v0.11', - }, + 'default_mode': 'auto', + 'pygment_light_style': 'tango', + 'pygment_dark_style': 'native', 'funders': [ - dict(img='nih.png', size='3', title='National Institutes of Health'), + dict(img='nih.svg', size='3', title='National Institutes of Health'), dict(img='nsf.png', size='3.5', title='US National Science Foundation'), - dict(img='erc.svg', size='3.5', title='European Research Council'), + dict(img='erc.svg', size='3.5', title='European Research Council', + klass='only-light'), + dict(img='erc-dark.svg', size='3.5', title='European Research Council', + klass='only-dark'), dict(img='doe.svg', size='3', title='US Department of Energy'), - dict(img='anr.svg', size='4.5', + dict(img='anr.svg', size='3.5', title='Agence Nationale de la Recherche'), dict(img='cds.png', size='2.25', title='Paris-Saclay Center for Data Science'), @@ -619,9 +677,15 @@ url='https://web.mit.edu/', size=md), dict(name='New York University', - img='NYU.png', + img='NYU.svg', url='https://www.nyu.edu/', - size=xs), + size=xs, + klass='only-light'), + dict(name='New York University', + img='NYU-dark.svg', + url='https://www.nyu.edu/', + size=xs, + klass='only-dark'), dict(name='Commissariat à l´énergie atomique et aux énergies alternatives', # noqa E501 img='CEA.png', url='http://www.cea.fr/', @@ -629,15 +693,27 @@ dict(name='Aalto-yliopiston perustieteiden korkeakoulu', img='Aalto.svg', url='https://sci.aalto.fi/', - size=md), + size=md, + klass='only-light'), + dict(name='Aalto-yliopiston perustieteiden korkeakoulu', + img='Aalto-dark.svg', + url='https://sci.aalto.fi/', + size=md, + klass='only-dark'), dict(name='Télécom ParisTech', img='Telecom_Paris_Tech.svg', url='https://www.telecom-paris.fr/', size=md), dict(name='University of Washington', - img='Washington.png', + img='Washington.svg', url='https://www.washington.edu/', - size=md), + size=md, + klass='only-light'), + dict(name='University of Washington', + img='Washington-dark.svg', + url='https://www.washington.edu/', + size=md, + klass='only-dark'), dict(name='Institut du Cerveau et de la Moelle épinière', img='ICM.jpg', url='https://icm-institute.org/', @@ -649,37 +725,108 @@ dict(name='Institut national de la santé et de la recherche médicale', img='Inserm.svg', url='https://www.inserm.fr/', - size=xl), + size=xl, + klass='only-light'), + dict(name='Institut national de la santé et de la recherche médicale', + img='Inserm-dark.svg', + url='https://www.inserm.fr/', + size=xl, + klass='only-dark'), dict(name='Forschungszentrum Jülich', img='Julich.svg', url='https://www.fz-juelich.de/', - size=xl), + size=xl, + klass='only-light'), + dict(name='Forschungszentrum Jülich', + img='Julich-dark.svg', + url='https://www.fz-juelich.de/', + size=xl, + klass='only-dark'), + dict(name='Technische Universität Ilmenau', + img='Ilmenau.svg', + url='https://www.tu-ilmenau.de/', + size=xxl, + klass='only-light'), dict(name='Technische Universität Ilmenau', - img='Ilmenau.gif', + img='Ilmenau-dark.svg', url='https://www.tu-ilmenau.de/', - size=xxl), + size=xxl,\ + klass='only-dark'), dict(name='Berkeley Institute for Data Science', - img='BIDS.png', + img='BIDS.svg', url='https://bids.berkeley.edu/', - size=lg), + size=lg, + klass='only-light'), + dict(name='Berkeley Institute for Data Science', + img='BIDS-dark.svg', + url='https://bids.berkeley.edu/', + size=lg, + klass='only-dark'), dict(name='Institut national de recherche en informatique et en automatique', # noqa E501 img='inria.png', url='https://www.inria.fr/', size=xl), dict(name='Aarhus Universitet', - img='Aarhus.png', + img='Aarhus.svg', url='https://www.au.dk/', - size=xl), + size=xl, + klass='only-light'), + dict(name='Aarhus Universitet', + img='Aarhus-dark.svg', + url='https://www.au.dk/', + size=xl, + klass='only-dark'), dict(name='Karl-Franzens-Universität Graz', - img='Graz.jpg', + img='Graz.svg', url='https://www.uni-graz.at/', size=md), + dict(name='SWPS Uniwersytet Humanistycznospołeczny', + img='SWPS.svg', + url='https://www.swps.pl/', + size=xl, + klass='only-light'), + dict(name='SWPS Uniwersytet Humanistycznospołeczny', + img='SWPS-dark.svg', + url='https://www.swps.pl/', + size=xl, + klass='only-dark'), + dict(name='Max-Planck-Institut für Bildungsforschung', + img='MPIB.svg', + url='https://www.mpib-berlin.mpg.de/', + size=xxl, + klass='only-light'), + dict(name='Max-Planck-Institut für Bildungsforschung', + img='MPIB-dark.svg', + url='https://www.mpib-berlin.mpg.de/', + size=xxl, + klass='only-dark'), + dict(name='Macquarie University', + img='Macquarie.svg', + url='https://www.mq.edu.au/', + size=lg, + klass='only-light'), + dict(name='Macquarie University', + img='Macquarie-dark.svg', + url='https://www.mq.edu.au/', + size=lg, + klass='only-dark'), + dict(name='Children’s Hospital of Philadelphia Research Institute', + img='CHOP.svg', + url='https://www.research.chop.edu/imaging', + size=xxl, + klass='only-light'), + dict(name='Children’s Hospital of Philadelphia Research Institute', + img='CHOP-dark.svg', + url='https://www.research.chop.edu/imaging', + size=xxl, + klass='only-dark'), ], # \u00AD is an optional hyphen (not rendered unless needed) + # If these are changed, the Makefile should be updated, too 'carousel': [ dict(title='Source Estimation', text='Distributed, sparse, mixed-norm, beam\u00ADformers, dipole fitting, and more.', # noqa E501 - url='auto_tutorials/inverse/30_mne_dspm_loreta.html', + url='auto_tutorials/inverse/index.html', img='sphx_glr_30_mne_dspm_loreta_008.gif', alt='dSPM'), dict(title='Machine Learning', @@ -694,18 +841,18 @@ alt='STRF'), dict(title='Statistics', text='Parametric and non-parametric, permutation tests and clustering.', # noqa E501 - url='auto_tutorials/stats-source-space/20_cluster_1samp_spatiotemporal.html', # noqa E501 + url='auto_tutorials/stats-source-space/index.html', img='sphx_glr_20_cluster_1samp_spatiotemporal_001.png', alt='Clusters'), dict(title='Connectivity', text='All-to-all spectral and effective connec\u00ADtivity measures.', # noqa E501 - url='auto_examples/connectivity/mne_inverse_label_connectivity.html', # noqa E501 - img='sphx_glr_mne_inverse_label_connectivity_001.png', + url='https://mne.tools/mne-connectivity/stable/auto_examples/mne_inverse_label_connectivity.html', # noqa E501 + img='https://mne.tools/mne-connectivity/stable/_images/sphx_glr_mne_inverse_label_connectivity_001.png', # noqa E501 alt='Connectivity'), dict(title='Data Visualization', text='Explore your data from multiple perspectives.', url='auto_tutorials/evoked/20_visualize_evoked.html', - img='sphx_glr_20_visualize_evoked_007.png', + img='sphx_glr_20_visualize_evoked_010.png', alt='Visualization'), ] } @@ -729,6 +876,8 @@ # not chapters. latex_toplevel_sectioning = 'part' +_np_print_defaults = np.get_printoptions() + # -- Warnings management ----------------------------------------------------- @@ -754,62 +903,33 @@ warnings.filterwarnings('always', '.*DigMontage is only a subset of.*') warnings.filterwarnings( # xhemi morph (should probably update sample) 'always', '.*does not exist, creating it and saving it.*') - warnings.filterwarnings('default', module='sphinx') # internal warnings - warnings.filterwarnings( - 'always', '.*converting a masked element to nan.*') # matplotlib? + # internal warnings + warnings.filterwarnings('default', module='sphinx') # allow these warnings, but don't show them - warnings.filterwarnings( - 'ignore', '.*OpenSSL\\.rand is deprecated.*') - warnings.filterwarnings('ignore', '.*is currently using agg.*') - warnings.filterwarnings( # SciPy-related warning (maybe 1.2.0 will fix it) - 'ignore', '.*the matrix subclass is not the recommended.*') - warnings.filterwarnings( # some joblib warning - 'ignore', '.*semaphore_tracker: process died unexpectedly.*') - warnings.filterwarnings( # needed until SciPy 1.2.0 is released - 'ignore', '.*will be interpreted as an array index.*', module='scipy') - warnings.filterwarnings( - 'ignore', '.*invalid escape sequence.*', lineno=90) # quantities - warnings.filterwarnings( - 'ignore', '.*"is not" with a literal.*', module='nilearn') - for key in ('HasTraits', r'numpy\.testing', 'importlib', r'np\.loads', - 'Using or importing the ABCs from', # internal modules on 3.7 - r"it will be an error for 'np\.bool_'", # ndimage - "DocumenterBridge requires a state object", # sphinx dev - "'U' mode is deprecated", # sphinx io - r"joblib is deprecated in 0\.21", # nilearn - 'The usage of `cmp` is deprecated and will', # sklearn/pytest - 'scipy.* is deprecated and will be removed in', # dipy - r'Converting `np\.character` to a dtype is deprecated', # vtk - r'sphinx\.util\.smartypants is deprecated', - 'is a deprecated alias for the builtin', # NumPy - 'the old name will be removed', # Jinja, via sphinx - 'rcParams is deprecated', # PyVista rcParams -> global_theme - 'to mean no clipping', - ): + for key in ( + 'The module matplotlib.tight_layout is deprecated', # nilearn + 'invalid version and will not be supported', # pyxdf + 'distutils Version classes are deprecated', # seaborn and neo + '`np.object` is a deprecated alias for the builtin `object`', # pyxdf + # nilearn, should be fixed in > 0.9.1 + 'In future, it will be an error for \'np.bool_\' scalars to', + # sklearn hasn't updated to SciPy's sym_pos dep + 'The \'sym_pos\' keyword is deprecated', + ): warnings.filterwarnings( # deal with other modules having bad imports 'ignore', message=".*%s.*" % key, category=DeprecationWarning) - warnings.filterwarnings( # deal with bootstrap-theme bug - 'ignore', message=".*modify script_files in the theme.*", - category=Warning) - warnings.filterwarnings( # nilearn - 'ignore', message=r'sklearn\.externals\.joblib is deprecated.*', - category=FutureWarning) - warnings.filterwarnings( # nilearn - 'ignore', message=r'The sklearn.* module is.*', category=FutureWarning) - warnings.filterwarnings( # nilearn - 'ignore', message=r'Fetchers from the nilea.*', category=FutureWarning) - warnings.filterwarnings( # deal with other modules having bad imports - 'ignore', message=".*ufunc size changed.*", category=RuntimeWarning) - warnings.filterwarnings( # realtime - 'ignore', message=".*unclosed file.*", category=ResourceWarning) - warnings.filterwarnings('ignore', message='Exception ignored in.*') - # allow this ImportWarning, but don't show it + # xarray/netcdf4 warnings.filterwarnings( - 'ignore', message="can't resolve package from", category=ImportWarning) + 'ignore', message=r'numpy\.ndarray size changed, may indicate.*', + category=RuntimeWarning) + # qdarkstyle warnings.filterwarnings( - 'ignore', message='.*mne-realtime.*', category=DeprecationWarning) - warnings.filterwarnings( # pyvista deprecation - 'ignore', message=r'.*Use of .* is deprecated\. Use .* instead.*') + 'ignore', message=r'.*Setting theme=.*6 in qdarkstyle.*', + category=RuntimeWarning) + + # In case we use np.set_printoptions in any tutorials, we only + # want it to affect those: + np.set_printoptions(**_np_print_defaults) reset_warnings(None, None) @@ -817,31 +937,45 @@ # -- Fontawesome support ----------------------------------------------------- -# here the "b" and "s" refer to "brand" and "solid" (determines which font file -# to look in). "fw-" prefix indicates fixed width. -icons = { - 'apple': 'b', - 'linux': 'b', - 'windows': 'b', - 'hand-paper': 's', - 'question': 's', - 'quote-left': 's', - 'rocket': 's', - 'server': 's', - 'fw-book': 's', - 'fw-code-branch': 's', - 'fw-newspaper': 's', - 'fw-question-circle': 's', - 'fw-quote-left': 's', -} +# here the "fab" and "fas" refer to "brand" and "solid" (determines which font +# file to look in). "fw" indicates fixed width. +brand_icons = ('apple', 'linux', 'windows', 'discourse', 'python') +fixed_icons = ( + # homepage: + 'book', 'code-branch', 'newspaper', 'question-circle', 'quote-left', + # contrib guide: + 'bug', 'comment', 'hand-sparkles', 'magic', 'pencil-alt', 'remove-format', + 'universal-access', 'discourse', 'python', +) +other_icons = ( + 'hand-paper', 'question', 'rocket', 'server', 'code', 'desktop', + 'terminal', 'cloud-download-alt', 'wrench', 'hourglass' +) +icons = dict() +for icon in brand_icons + fixed_icons + other_icons: + font = ('fab' if icon in brand_icons else 'fas',) # brand or solid font + fw = ('fa-fw',) if icon in fixed_icons else () # fixed-width + icons[icon] = font + fw prolog = '' -for icon, cls in icons.items(): - fw = ' fa-fw' if icon.startswith('fw-') else '' +for icon, classes in icons.items(): prolog += f''' .. |{icon}| raw:: html - + +''' + +prolog += ''' +.. |fix-bug| raw:: html + + + + + +''' + +prolog += ''' +.. |ensp| unicode:: U+2002 .. EN SPACE ''' # -- Dependency info ---------------------------------------------------------- @@ -884,7 +1018,7 @@ 'compute_mne_inverse_epochs_in_label.py', 'compute_mne_inverse_raw_in_label.py', 'compute_mne_inverse_volume.py', 'compute_source_psd_epochs.py', 'covariance_whitening_dspm.py', - 'custom_inverse_solver.py', 'cwt_sensor_connectivity.py', + 'custom_inverse_solver.py', 'decoding_csp_eeg.py', 'decoding_csp_timefreq.py', 'decoding_spatio_temporal_source.py', 'decoding_spoc_CMC.py', 'decoding_time_generalization_conditions.py', @@ -901,12 +1035,11 @@ 'left_cerebellum_volume_source.py', 'limo_data.py', 'linear_model_patterns.py', 'linear_regression_raw.py', 'meg_sensors.py', 'mixed_norm_inverse.py', - 'mixed_source_space_connectivity.py', 'mixed_source_space_inverse.py', + 'mixed_source_space_inverse.py', 'mne_cov_power.py', 'mne_helmet.py', 'mne_inverse_coherence_epochs.py', - 'mne_inverse_connectivity_spectrum.py', 'mne_inverse_envelope_correlation.py', 'mne_inverse_envelope_correlation_volume.py', - 'mne_inverse_label_connectivity.py', 'mne_inverse_psi_visual.py', + 'mne_inverse_psi_visual.py', 'morph_surface_stc.py', 'morph_volume_stc.py', 'movement_compensation.py', 'movement_detection.py', 'multidict_reweighted_tfmxne.py', 'muscle_detection.py', 'opm_data.py', 'otp.py', 'parcellation.py', @@ -915,7 +1048,7 @@ 'read_inverse.py', 'read_neo_format.py', 'read_noise_covariance_matrix.py', 'read_stc.py', 'receptive_field_mtrf.py', 'resolution_metrics.py', 'resolution_metrics_eegmeg.py', 'roi_erpimage_by_rt.py', - 'sensor_connectivity.py', 'sensor_noise_level.py', + 'sensor_noise_level.py', 'sensor_permutation_test.py', 'sensor_regression.py', 'shift_evoked.py', 'simulate_evoked_data.py', 'simulate_raw_data.py', 'simulated_raw_data_using_subject_anatomy.py', 'snr_estimate.py', @@ -930,7 +1063,9 @@ 'vector_mne_solution.py', 'virtual_evoked.py', 'xdawn_denoising.py', 'xhemi.py', } +ex = 'auto_examples' co = 'connectivity' +mne_conn = 'https://mne.tools/mne-connectivity/stable' tu = 'auto_tutorials' di = 'discussions' sm = 'source-modeling' @@ -982,12 +1117,21 @@ f'{tu}/{sr}/plot_stats_cluster_spatio_temporal.html': f'{tu}/{sr}/20_cluster_1samp_spatiotemporal.html', # noqa E501 f'{tu}/{sr}/plot_stats_cluster_spatio_temporal_2samp.html': f'{tu}/{sr}/30_cluster_ftest_spatiotemporal.html', # noqa E501 f'{tu}/{sr}/plot_stats_cluster_spatio_temporal_repeated_measures_anova.html': f'{tu}/{sr}/60_cluster_rmANOVA_spatiotemporal.html', # noqa E501 - f'{tu}/{sr}/plot_stats_cluster_time_frequency_repeated_measures_anova.html': f'{tu}/{sr}/70_cluster_rmANOVA_time_freq.html', # noqa E501 + f'{tu}/{sr}/plot_stats_cluster_time_frequency_repeated_measures_anova.html': f'{tu}/{sn}/70_cluster_rmANOVA_time_freq.html', # noqa E501 f'{tu}/{tf}/plot_sensors_time_frequency.html': f'{tu}/{tf}/20_sensors_time_frequency.html', # noqa E501 f'{tu}/{tf}/plot_ssvep.html': f'{tu}/{tf}/50_ssvep.html', f'{tu}/{si}/plot_creating_data_structures.html': f'{tu}/{si}/10_array_objs.html', # noqa E501 f'{tu}/{si}/plot_point_spread.html': f'{tu}/{si}/70_point_spread.html', f'{tu}/{si}/plot_dics.html': f'{tu}/{si}/80_dics.html', + f'{ex}/{co}/mne_inverse_label_connectivity.html': f'{mne_conn}/{ex}/mne_inverse_label_connectivity.html', # noqa E501 + f'{ex}/{co}/cwt_sensor_connectivity.html': f'{mne_conn}/{ex}/cwt_sensor_connectivity.html', # noqa E501 + f'{ex}/{co}/mixed_source_space_connectivity.html': f'{mne_conn}/{ex}/mixed_source_space_connectivity.html', # noqa E501 + f'{ex}/{co}/mne_inverse_coherence_epochs.html': f'{mne_conn}/{ex}/mne_inverse_coherence_epochs.html', # noqa E501 + f'{ex}/{co}/mne_inverse_connectivity_spectrum.html': f'{mne_conn}/{ex}/mne_inverse_connectivity_spectrum.html', # noqa E501 + f'{ex}/{co}/mne_inverse_envelope_correlation_volume.html': f'{mne_conn}/{ex}/mne_inverse_envelope_correlation_volume.html', # noqa E501 + f'{ex}/{co}/mne_inverse_envelope_correlation.html': f'{mne_conn}/{ex}/mne_inverse_envelope_correlation.html', # noqa E501 + f'{ex}/{co}/mne_inverse_psi_visual.html': f'{mne_conn}/{ex}/mne_inverse_psi_visual.html', # noqa E501 + f'{ex}/{co}/sensor_connectivity.html': f'{mne_conn}/{ex}/sensor_connectivity.html', # noqa E501 } @@ -995,7 +1139,9 @@ """Make HTML redirects.""" # https://www.sphinx-doc.org/en/master/extdev/appapi.html # Adapted from sphinxcontrib/redirects (BSD-2-Clause) - if not isinstance(app.builder, sphinx.builders.html.StandaloneHTMLBuilder): + if not (isinstance(app.builder, + sphinx.builders.html.StandaloneHTMLBuilder) and + exception is None): return logger = sphinx.util.logging.getLogger('mne') TEMPLATE = """\ @@ -1038,7 +1184,7 @@ if not to.startswith('http'): assert os.path.isfile(os.path.join(app.outdir, to)), to # handle links to sibling folders - path_parts = to.split(os.path.sep) + path_parts = to.split('/') assert tu in path_parts, path_parts # need to refactor otherwise path_parts = ['..'] + path_parts[(path_parts.index(tu) + 1):] to = os.path.join(*path_parts) @@ -1053,8 +1199,9 @@ line = fid.readline() assert 'Page Redirection' in line, line # handle folders that no longer exist - if fr_path.split(os.path.sep)[-2] in ( - 'misc', 'discussions', 'source-modeling', 'sample-datasets'): + if fr_path.split('/')[-2] in ( + 'misc', 'discussions', 'source-modeling', 'sample-datasets', + 'connectivity'): os.makedirs(os.path.dirname(fr_path), exist_ok=True) with open(fr_path, 'w') as fid: fid.write(TEMPLATE.format(to=to)) @@ -1062,6 +1209,23 @@ f'Added {len(custom_redirects):3d} HTML custom redirects') +def make_version(app, exception): + """Make a text file with the git version.""" + if not (isinstance(app.builder, + sphinx.builders.html.StandaloneHTMLBuilder) and + exception is None): + return + logger = sphinx.util.logging.getLogger('mne') + try: + stdout, _ = run_subprocess(['git', 'rev-parse', 'HEAD'], verbose=False) + except Exception as exc: + logger.warning(f'Failed to write _version.txt: {exc}') + return + with open(os.path.join(app.outdir, '_version.txt'), 'w') as fid: + fid.write(stdout) + logger.info(f'Added "{stdout.rstrip()}" > _version.txt') + + # -- Connect our handlers to the main Sphinx app --------------------------- def setup(app): @@ -1071,4 +1235,9 @@ report_scraper.app = app app.config.rst_prolog = prolog app.connect('builder-inited', report_scraper.copyfiles) + sphinx_logger = sphinx.util.logging.getLogger('mne') + sphinx_logger.info( + f'Building documentation for MNE {release} ({mne.__file__})') + sphinx_logger.info(f'Building with scrapers={scrapers}') app.connect('build-finished', make_redirects) + app.connect('build-finished', make_version) diff -Nru python-mne-0.23.4+dfsg/doc/connectivity.rst python-mne-1.1.0+dfsg/doc/connectivity.rst --- python-mne-0.23.4+dfsg/doc/connectivity.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/connectivity.rst 2022-08-03 15:48:14.000000000 +0000 @@ -2,19 +2,5 @@ Connectivity Estimation ======================= -:py:mod:`mne.connectivity`: - -.. automodule:: mne.connectivity - :no-members: - :no-inherited-members: - -.. currentmodule:: mne.connectivity - -.. autosummary:: - :toctree: generated/ - - degree - envelope_correlation - phase_slope_index - seed_target_indices - spectral_connectivity +As of 0.24, connectivity functionality has been moved to the separate package +:mod:`mne-connectivity:mne_connectivity`. diff -Nru python-mne-0.23.4+dfsg/doc/datasets.rst python-mne-1.1.0+dfsg/doc/datasets.rst --- python-mne-0.23.4+dfsg/doc/datasets.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/datasets.rst 2022-08-03 15:48:14.000000000 +0000 @@ -13,6 +13,8 @@ .. autosummary:: :toctree: generated/ + fetch_dataset + has_dataset brainstorm.bst_auditory.data_path brainstorm.bst_resting.data_path brainstorm.bst_raw.data_path @@ -22,6 +24,7 @@ fetch_fsaverage fetch_hcp_mmp_parcellation fetch_infant_template + fetch_phantom fnirs_motor.data_path hf_sef.data_path kiloword.data_path diff -Nru python-mne-0.23.4+dfsg/doc/events.rst python-mne-1.1.0+dfsg/doc/events.rst --- python-mne-0.23.4+dfsg/doc/events.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/events.rst 2022-08-03 15:48:14.000000000 +0000 @@ -36,6 +36,7 @@ :toctree: generated/ define_target_events + match_event_names shift_time_events :py:mod:`mne.epochs`: diff -Nru python-mne-0.23.4+dfsg/doc/export.rst python-mne-1.1.0+dfsg/doc/export.rst --- python-mne-0.23.4+dfsg/doc/export.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/export.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,19 @@ + +Exporting +================ + +:py:mod:`mne.export`: + +.. automodule:: mne.export + :no-members: + :no-inherited-members: + +.. currentmodule:: mne.export + +.. autosummary:: + :toctree: generated/ + + export_epochs + export_evokeds + export_evokeds_mff + export_raw diff -Nru python-mne-0.23.4+dfsg/doc/file_io.rst python-mne-1.1.0+dfsg/doc/file_io.rst --- python-mne-0.23.4+dfsg/doc/file_io.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/file_io.rst 2022-08-03 15:48:14.000000000 +0000 @@ -24,6 +24,7 @@ read_epochs_fieldtrip read_events read_evokeds + read_evoked_besa read_evoked_fieldtrip read_evokeds_mff read_freesurfer_lut @@ -32,7 +33,6 @@ read_morph_map read_proj read_reject_parameters - read_selection read_source_estimate read_source_spaces read_surface diff -Nru python-mne-0.23.4+dfsg/doc/forward.rst python-mne-1.1.0+dfsg/doc/forward.rst --- python-mne-0.23.4+dfsg/doc/forward.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/forward.rst 2022-08-03 15:48:14.000000000 +0000 @@ -6,9 +6,14 @@ .. autosummary:: :toctree: generated/ + :template: autosummary/class_no_inherited_members.rst Forward SourceSpaces + +.. autosummary:: + :toctree: generated/ + add_source_space_distances apply_forward apply_forward_raw @@ -57,4 +62,6 @@ get_fitting_dig make_watershed_bem make_flash_bem + make_scalp_surfaces convert_flash_mris + distance_to_bem diff -Nru python-mne-0.23.4+dfsg/doc/funding.rst python-mne-1.1.0+dfsg/doc/funding.rst --- python-mne-0.23.4+dfsg/doc/funding.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/funding.rst 2022-08-03 15:48:14.000000000 +0000 @@ -1,5 +1,7 @@ :orphan: +.. _funding: + Funding and other support ========================= @@ -7,44 +9,61 @@ .. rst-class:: list-unstyled funders -- |nih| **National Institutes of Health:** R01-EB009048, R01-EB009048, R01-EB006385, R01-HD40712, R01-NS44319, R01-NS37462, R01-NS104585, P41-EB015896, P41-RR14075-06 -- |nsf| **US National Science Foundation:** 0958669, 1042134 -- |erc| **European Research Council:** YStG-263584, YStG-676943 +- |nih| **National Institutes of Health:** + `R01-EB009048 `_, + `R01-EB006385 `_, + `R01-HD040712 `_, + `R01-NS044319 `_, + `R01-NS037462 `_, + `R01-NS104585 `_, + `P41-EB015896 `_, + `P41-RR014075 `_ +- |nsf| **US National Science Foundation:** + `0958669 `_, + `1042134 `_ +- |erc| |ercdk| **European Research Council:** + `YStG-263584 `_, + `YStG-676943 `_ - |doe| **US Department of Energy:** DE-FG02-99ER62764 (MIND) -- |anr| **Agence Nationale de la Recherche:** `14-NEUC-0002-01 `_, **IDEX** Paris-Saclay `11-IDEX-0003-02 `_ -- |cds| **Paris-Saclay Center for Data Science:** `PARIS-SACLAY `_ -- |goo| **Google:** Summer of code (×6) -- |ama| **Amazon:** AWS Research Grants -- |czi| **Chan Zuckerberg Initiative:** `EOSS2 `_ - - -Additionally, many universities or research institutions have supported their employees’ contributions to MNE-Python as part of normal work duties. These institutions include: - -- `Massachusetts General Hospital `_ -- `Athinoula A. Martinos Center for Biomedical Imaging `_ -- `Harvard Medical School `_ -- `Massachusetts Institute of Technology `_ -- `New York University `_ -- `Commissariat à l’énergie atomique et aux énergies alternatives `_ -- `Aalto-yliopiston perustieteiden korkeakoulu `_ -- `Télécom ParisTech `_ -- `University of Washington `_ -- `Institut du Cerveau et de la Moelle épinière `_ -- `Boston University `_ -- `Institut national de la santé et de la recherche médicale `_ -- `Forschungszentrum Jülich `_ -- `Technische Universität Ilmenau `_ -- `Berkeley Institute for Data Science `_ -- `Institut national de recherche en informatique et en automatique `_ -- `Aarhus Universitet `_ -- `Karl-Franzens-Universität Graz `_ +- |anr| **Agence Nationale de la Recherche:** + `14-NEUC-0002-01 `_, + **IDEX** Paris-Saclay + `11-IDEX-0003-02 `_ +- |cds| **Paris-Saclay Center for Data Science:** + `PARIS-SACLAY `_ +- |goo| **Google:** + Summer of code (×7 years) +- |ama| **Amazon:** + AWS Research Grants +- |czi| **Chan Zuckerberg Initiative:** + `EOSS2`_, + `EOSS4`_ + + +.. _supporting-institutions: + +Institutional partners +---------------------- + +Additionally, many universities or research institutions have supported their +employees’ contributions to MNE-Python as part of normal work duties. These +institutions include: + +.. include:: _includes/institutional-partners.rst + :start-after: institutional-partners-begin-content -.. |nih| image:: _static/funding/nih.png + +.. |nih| image:: _static/funding/nih.svg .. |nsf| image:: _static/funding/nsf.png .. |erc| image:: _static/funding/erc.svg + :class: only-light +.. |ercdk| image:: _static/funding/erc-dark.svg + :class: only-dark .. |doe| image:: _static/funding/doe.svg .. |anr| image:: _static/funding/anr.svg .. |cds| image:: _static/funding/cds.png .. |goo| image:: _static/funding/google.svg .. |ama| image:: _static/funding/amazon.svg .. |czi| image:: _static/funding/czi.svg + +.. include:: links.inc \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/glossary.rst python-mne-1.1.0+dfsg/doc/glossary.rst --- python-mne-0.23.4+dfsg/doc/glossary.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/glossary.rst 2022-08-03 15:48:14.000000000 +0000 @@ -3,7 +3,7 @@ .. currentmodule:: mne -The Glossary provides short definitions of MNE-Python-specific vocabulary and +The Glossary provides short definitions of vocabulary specific to MNE-Python and general neuroimaging concepts. If you think a term is missing, please consider `creating a new issue`_ or `opening a pull request`_ to add it. @@ -12,175 +12,191 @@ annotations - An annotation is defined by an onset, a duration, and a string - description. It can contain information about the experiments, but - also details on signals marked by a human: bad data segments, - sleep scores, sleep events (spindles, K-complex) etc. - An :class:`Annotations` object is a container of multiple annotations. - See :class:`Annotations` page for the API of the corresponding - object class and :ref:`tut-annotations` - for a tutorial on how to manipulate such objects. + An annotation is defined by an onset, a duration, and a textual + description. It can contain information about the experiment, but + also details on signals marked by a human such as bad data segments, + sleep stages, sleep events (spindles, K-complex), and so on. + An :class:`Annotations` object is a container for multiple annotations, + which is available as the ``annotations`` attribute of :class:`~io.Raw` + objects. See :class:`Annotations` for the class definition and + :ref:`tut-events-vs-annotations` for a short tutorial. + See also :term:`events`. + + array-like + Something that acts like – or can be converted to – a + :class:`NumPy array `. + This includes (but is not limited to) + :class:`arrays `, `lists `, and + `tuples `. beamformer - Beamformer is a popular source estimation approach that uses a set of + A beamformer is a popular source estimation approach that uses a set of spatial filters (beamformer weights) to compute time courses of sources - at predefined coordinates. See :class:`beamformer.Beamformer`. See - also :term:`LCMV`. + at predefined locations. See :class:`beamformer.Beamformer` for the class + definition. See also :term:`LCMV`. BEM boundary element model boundary element method BEM is the acronym for boundary element method or boundary element - model. Both are related to the forward model computation and more - specifically the definion of the conductor model. The - boundary element model consists of surfaces such as the inner skull, - outer skull and outer skin (a.k.a. scalp) that define compartments - of tissues of the head. You can compute the BEM surfaces with + model. Both are related to the definion of the conductor model in the + forward model computation. The boundary element model consists of surfaces + such as the inner skull, outer skull, and outer skin (scalp) that define + compartments of tissues of the head. You can compute the BEM surfaces with :func:`bem.make_watershed_bem` or :func:`bem.make_flash_bem`. - See :ref:`tut-forward` for usage demo. + See :ref:`tut-forward` for a usage demo. channels - Channels refer to MEG sensors, EEG electrodes or any extra electrode - or sensor such as EOG, ECG or sEEG, ECoG etc. Channels usually have - a type, such as gradiometer, and a unit, such as Tesla/Meter that - is used in the code base, e.g. for plotting. See also - :term:`data channels`. + Channels refer to MEG sensors, EEG electrodes or other sensors such as + EOG, ECG, sEEG, ECoG, etc. Channels usually have + a type (such as gradiometer), and a unit (such as T/m) used e.g. for + plotting. See also :term:`data channels`. data channels - Many functions in MNE operate by default on "data channels". These are - channels that typically hold *brain electophysiological* data, - as opposed to other forms of data, such as EOG, ECG, stimulus trigger, + Many functions in MNE-Python operate on "data channels" by default. These + are channels that contain electrophysiological data from the brain, + as opposed to other channel types such as EOG, ECG, stimulus/trigger, or acquisition system status data. The set of channels considered - "data channels" in MNE is (along with their typical scale factors for - plotting, as they are stored in objects in SI units): + "data channels" in MNE contains the following types (together with scale + factors for plotting): .. mne:: data channels list DICS dynamic imaging of coherent sources - Dynamic Imaging of Coherent Sources, a method for computing source - power in different frequency bands. see :ref:`ex-inverse-source-power` - and :func:`beamformer.make_dics`. + Dynamic Imaging of Coherent Sources is a method for computing source + power in different frequency bands. See :ref:`ex-inverse-source-power` + and :func:`beamformer.make_dics` for more details. digitization - Digitization is a procedure of recording the headshape of a subject and - the fiducial coils (or :term:`HPI`) and/or eeg electrodes locations on - the subject’s head. They are represented as a set of points in a 3D space. + Digitization is a procedure of recording the head shape and locations of + fiducial coils (or :term:`HPI`) and/or EEG electrodes on the head. They + are represented as a set of points in 3D space. See :ref:`reading-dig-montages` and :ref:`dig-formats`. dipole ECD equivalent current dipole An equivalent current dipole (ECD) is an approximate representation of - post-synaptic activity in a small region of cortex. The intracellular + post-synaptic activity in a small cortical region. The intracellular currents that give rise to measurable EEG/MEG signals are thought to originate in populations of cortical pyramidal neurons aligned perpendicularly to the cortical surface. Because the length of such current sources is very small relative to the distance between the - cortex and the EEG/MEG sensors, the fields measured by the techniques - are well-approximated by (i.e., "equivalent" to) fields generated by + cortex and the EEG/MEG sensors, the fields measured by these techniques + are well approximated by (i.e., equivalent to) fields generated by idealized point sources (dipoles) located on the cortical surface. dSPM dynamic statistical parametric mapping - Dynamic statistical parametric mapping (abbr. ``dSPM``) gives a noise- - normalized minimum-norm estimate at a given source location. dSPM is - calculated by dividing the activity estimate at each source location by - the baseline standard deviation of the noise. + Dynamic statistical parametric mapping (dSPM) gives a noise-normalized + minimum-norm estimate at a given source location. It is calculated by + dividing the activity estimate at each source location by the baseline + standard deviation of the noise. eLORETA sLORETA eLORETA and sLORETA (exact and standardized low resolution brain - electromagnetic tomography) are linear source estimation techniques, - as are :term:`dSPM` and :term:`MNE`. sLORETA outputs - standardized values (like dSPM does), while eLORETA outputs normalized + electromagnetic tomography) are linear source estimation techniques + like :term:`dSPM` and :term:`MNE`. sLORETA outputs + standardized values (like dSPM), while eLORETA generates normalized current estimates. See :func:`minimum_norm.apply_inverse`, :ref:`tut-inverse-methods`, and :ref:`example-sLORETA`. epochs Epochs (sometimes called "trials" in other software packages) are - equal-length spans of data extracted from raw continuous data. Usually, - epochs are extracted around stimulus events or subject responses, - though sometimes sequential or overlapping epochs are extracted (e.g., + equal-length segments of data extracted from continuous data. Usually, + epochs are extracted around stimulus events or responses, + though sometimes sequential or overlapping epochs are used (e.g., for analysis of resting-state activity). See :class:`Epochs` for the - API of the corresponding object class, and :ref:`tut-epochs-class` for - a narrative overview. + class definition and :ref:`tut-epochs-class` for a narrative overview. events - Events correspond to specific time points in raw data; e.g., - triggers, experimental condition events, etc. MNE represents events with - integers that are stored in numpy arrays of shape (n_events, 3). Such arrays - are classically obtained from a trigger channel, also referred to as - stim channel. + Events correspond to specific time points in raw data, such as triggers, + experimental condition events, etc. MNE-Python represents events with + integers stored in NumPy arrays of shape ``(n_events, 3)``. The first + column contains the event onset (in samples) with :term:`first_samp` + included. The last column contains the event code. The second + column contains the signal value of the immediately preceding sample, + and reflects the fact that event arrays sometimes originate from + analog voltage channels ("trigger channels" or "stim channels"). In + most cases, the second column is all zeros and can be ignored. + Event arrays can be created with :func:`mne.make_fixed_length_events`, + :func:`mne.read_events`, and :func:`mne.find_events`. + See :ref:`tut-events-vs-annotations` for a short tutorial. + See also :term:`annotations`. evoked Evoked data are obtained by averaging epochs. Typically, an evoked object is constructed for each subject and each condition, but it can also be - obtained by averaging a list of evoked over different subjects. - See :class:`EvokedArray` for the API of the corresponding - object class, and :ref:`tut-evoked-class` for a narrative overview. + obtained by averaging a list of evoked objects over different subjects. + See :class:`EvokedArray` for the class definition and + :ref:`tut-evoked-class` for a narrative overview. fiducial fiducial point anatomical landmark Fiducials are objects placed in the field of view of an imaging system - to act as a known spatial reference location that is easy to localize. + to act as known spatial references that are easy to localize. In neuroimaging, fiducials are often placed on anatomical landmarks such as the nasion (NAS) or left/right preauricular points (LPA and RPA). These known reference locations are used to define a coordinate system - used for localization of sensors (hence NAS, LPA and RPA are often + for localizing sensors (hence NAS, LPA and RPA are often called "cardinal points" because they define the cardinal directions of - the "head" coordinate system). The cardinal points are also useful when + the head coordinate system). The cardinal points are also useful when co-registering measurements in different coordinate systems (such as - aligning EEG sensor locations to an MRI of the subject's head). + aligning EEG sensor locations to an MRI of the head). Due to the common neuroimaging practice of placing fiducial objects on - anatomical landmarks, the terms "fiducial", "anatomical landmark" and + anatomical landmarks, the terms "fiducial", "anatomical landmark", and "cardinal point" are often (erroneously) used interchangeably. first_samp The :attr:`~io.Raw.first_samp` attribute of :class:`~io.Raw` objects is an integer representing the number of time samples that passed between the onset of the hardware acquisition system and the - time when data started to be recorded to disk. This approach to sample + time when data recording started. This approach to sample numbering is a peculiarity of VectorView MEG systems, but for consistency it is present in all :class:`~io.Raw` objects regardless of the source of the data. In other words, :attr:`~io.Raw.first_samp` will be ``0`` in :class:`~io.Raw` - objects loaded from non-VectorView data files. + objects loaded from non-VectorView data files. See also + :term:`last_samp`. forward forward solution - The forward solution (abbr. ``fwd``) is a linear operator capturing the + The forward solution is a linear operator capturing the relationship between each dipole location in the :term:`source space` - and the corresponding field distribution measured by the sensors (A.K.A., - the "lead field matrix"). Calculating a forward solution requires a - conductivity model of the head, encapsulating the geometry and - electrical conductivity of the different tissue compartments (see + and the corresponding field distribution measured by the sensors + (the "lead field matrix"). Calculating a forward solution requires a + conductivity model of the head, which encapsulates the geometries and + electrical conductivities of the different tissue compartments (see :term:`boundary element model` and :class:`bem.ConductorModel`). + For information about the Forward object and the data it stores, see + :class:`mne.Forward`. GFP global field power - Global Field Power (abbr. ``GFP``) is a measure of the (non-)uniformity + Global Field Power (GFP) is a measure of the (non-)uniformity of the electromagnetic field at the sensors. It is typically calculated - as the standard deviation of the sensor values at each time point; thus + as the standard deviation of the sensor values at each time point. Thus, it is a one-dimensional time series capturing the spatial variability of the signal across sensor locations. HED hierarchical event descriptors - Hierarchical event descriptors (abbr. ``HED``) are tags that use - keywords separated by '/' to describe different types of - experimental events (for example, stimulus/circle/red/left and - stimulus/circle/blue/left). These tags can be used to group + Hierarchical event descriptors (HED) are tags that use + keywords separated by slashes (/) to describe different types of + experimental events (for example, ``stimulus/circle/red/left`` and + ``stimulus/circle/blue/left``). These tags can be used to group experimental events and select event types for analysis. HPI cHPI head position indicator - Head position indicators (abbr. ``HPI``, or sometimes ``cHPI`` for + Head position indicators (HPI, sometimes cHPI for *continuous* head position indicators) are small coils attached to a subject's head during MEG acquisition. Each coil emits a sinusoidal signal of a different frequency, which is picked up by the MEG sensors @@ -190,9 +206,10 @@ low-pass filtering. See :ref:`tut-head-pos`. info - Also called ``measurement info``, it is a collection of metadata - regarding a :class:`~io.Raw`, :class:`Epochs` or :class:`Evoked` - object, containing channel locations and types, sampling frequency, + measurement info + A "measurement info" (or short "info") object is a collection of metadata + related to :class:`~io.Raw`, :class:`Epochs`, or :class:`Evoked` + objects. It contains channel locations and types, sampling frequency, preprocessing history such as filters, etc. See :ref:`tut-info-class` for a narrative overview. @@ -202,76 +219,97 @@ locations by :math:`N` sensors) that, when applied to the sensor signals, yields estimates of the brain activity that gave rise to the observed sensor signals. Inverse operators are available for the linear - inverse methods MNE, dSPM, sLORETA and eLORETA. - See :func:`minimum_norm.apply_inverse`. + inverse methods :term:`MNE`, :term:`dSPM`, :term:`sLORETA`, and + :term:`eLORETA`. See :func:`minimum_norm.apply_inverse`. label - A :class:`Label` refers to a defined region in the cortex, also often called + A :class:`Label` refers to a defined region in the cortex, often called a region of interest (ROI) in the literature. Labels can be defined - anatomically (based on physical structure of the cortex) or functionally - (based on cortical response to specific stimuli). + anatomically (based on the physical structure of the cortex) or functionally + (based on cortical responses to specific stimuli). See also :term:`ROI`. + + last_samp + The :attr:`~io.Raw.last_samp` attribute of :class:`~io.Raw` + objects is an integer representing the number of time samples that + passed between the start and end of data recording. This approach to sample + numbering is a peculiarity of VectorView MEG systems, but for + consistency it is present in all :class:`~io.Raw` objects + regardless of the source of the data. See also :term:`first_samp`. layout - A :class:`~channels.Layout` gives sensor positions in 2 + A :class:`~channels.Layout` gives sensor positions in two dimensions (defined by ``x``, ``y``, ``width``, and ``height`` values for each sensor). It is primarily used for illustrative purposes (i.e., making - diagrams of approximate sensor positions in top-down diagrams of the head, - so-called topographies or topomaps). + diagrams of approximate sensor positions in cartoons of the head, + so-called topographies or topomaps). See also :term:`montage`. LCMV LCMV beamformer - Linearly constrained minimum variance beamformer, which attempts to + Linearly constrained minimum variance beamformer attempt to estimate activity for a given source while suppressing cross-talk from - other regions, see :func:`beamformer.make_lcmv`. See also + other regions (:func:`beamformer.make_lcmv`). See also :term:`beamformer`. + FreeSurfer LUT + LUT + A FreeSurfer lookup table (LUT) provides a mapping between a given + volumetric atlas or surface label name, its integer value + (e.g., in ``aparc+aseg.mgz``), and its standard color (see the + `FreeSurfer wiki `__ + for more information). Custom LUTs can be also be created from different + surface parcellations, see for example `this comment about HCPMMP + `__. + maximum intensity projection - A method of displaying activity within some volume by, for each pixel, - finding the maximum value along vector from the viewer to the pixel + A method to display pixel-wise activity within some volume by + finding the maximum value along a vector from the viewer to the pixel (i.e., along the vector pependicular to the view plane). MNE minimum-norm estimate minimum-norm estimation - Minimum-norm estimation (abbr. ``MNE``) can be used to generate a distributed - map of activation on a :term:`source space`, usually on a cortical surface. + Minimum-norm estimation (MNE) can be used to generate a distributed + map of activation on a :term:`source space` (usually on a cortical surface). MNE uses a linear :term:`inverse operator` to project sensor measurements into the source space. The :term:`inverse operator` is computed from the :term:`forward solution` for a subject and an estimate of the :term:`noise covariance` of sensor measurements. montage - EEG channel names and the relative positions of the sensor w.r.t. the scalp. - While layout are 2D locations, montages give 3D locations. A montage + EEG channel names and relative positions of sensors on the scalp. + While layouts are 2D locations, montages are 3D locations. A montage can also contain locations for HPI points, fiducial points, or extra head shape points. - See :class:`~channels.DigMontage` for the API of the corresponding object - class. + See :class:`~channels.DigMontage` for the class definition. See also + :term:`layout`. morphing Morphing refers to the operation of transferring source estimates from - one anatomy to another. It is commonly referred as realignment in fMRI - literature. This operation is necessary for group studies (to get the - data in a common space for statistical analysis). + one anatomy to another. It is known as realignment in the fMRI + literature. This operation is necessary for group studies to get the + data into a common space for statistical analysis. See :ref:`ch_morph` for more details. noise covariance - Noise covariance is a matrix that contains the covariance between data + The noise covariance is a matrix that contains the covariance between data channels. It is a square matrix with shape ``n_channels`` :math:`\times` ``n_channels``. It is especially useful when working with multiple sensor - types (e.g. EEG and MEG). It is in - practice estimated from baseline periods or empty room measurements. - The matrix also provides a noise model that can be used for subsequent analysis - like source imaging. + types (e.g. EEG and MEG). In practice, the matrix is estimated from baseline + periods or empty room measurements, and it also provides a noise model + that can be used for subsequent analysis (like source imaging). + + path-like + Something that acts like a path in a file system. This can be a `str` + or a `pathlib.Path`. pick - An integer that is the index of a channel in the measurement info. + An integer that is the index of a channel in the :term:`measurement info`. It allows to obtain the information on a channel in the list of channels available in ``info['chs']``. projector SSP - A projector (abbr. ``proj``), also referred to as Signal Space + A projector, also referred to as Signal Space Projection (SSP), defines a linear operation applied spatially to EEG or MEG data. A matrix multiplication of an SSP projector with the data will reduce the rank of the data by projecting it to a @@ -279,13 +317,24 @@ both the data and the forward operator when performing source localization. Note that EEG average referencing can be done using such a projection operator. Projectors are stored alongside data - in :term:`the measurement info` in the field ``info['projs']``. + in the :term:`measurement info` in the field ``info['projs']``. raw - `~io.Raw` objects hold continuous data (preprocessed or not). One typically - manipulates raw data when reading recordings in a file on disk. - See :class:`~io.RawArray` for the API of the corresponding - object class, and :ref:`tut-raw-class` for a narrative overview. + `~io.Raw` objects hold continuous data (preprocessed or not), typically + obtained from reading recordings stored in a file. + See :class:`~io.RawArray` for the class definition and :ref:`tut-raw-class` + for a narrative overview. + + RAS + Right-Anterior-Superior, denoting the standard way to define coordinate + frames in MNE-Python: + + R + +X is right, -X is left + A + +Y is anterior (front), -Y is posterior (rear) + S + +Z is superior (top), -Z is inferior (bottom) ROI region of interest @@ -303,44 +352,53 @@ source time course Source estimates, commonly referred to as STC (Source Time Courses), are obtained from source localization methods such as :term:`dSPM`, - :term:`sLORETA`, :term:`LCMV` or MxNE. + :term:`sLORETA`, :term:`LCMV`, or MxNE. STCs contain the amplitudes of the neural sources over time. In MNE-Python, :class:`SourceEstimate` objects only store the - amplitudes of activation but not the locations of the sources; the + amplitudes of activation but not the locations of the sources. The locations are stored separately in the :class:`SourceSpaces` object that was used to compute the forward operator. - See :class:`SourceEstimate`, :class:`VolSourceEstimate` - :class:`VectorSourceEstimate`, :class:`MixedSourceEstimate`, - for the API of the corresponding object classes. + See :class:`SourceEstimate`, :class:`VolSourceEstimate`, + :class:`VectorSourceEstimate`, and :class:`MixedSourceEstimate`. source space - A source space (abbr. ``src``) specifies where in the brain one wants - to estimate the - source amplitudes. It corresponds to locations of a set of - candidate :term:`equivalent current dipoles`. MNE mostly works - with source spaces defined on the cortical surfaces estimated + A source space specifies where in the brain source amplitudes are + estimated. It corresponds to locations of a set of + candidate :term:`equivalent current dipoles`. MNE-Python mostly + works with source spaces defined on the cortical surfaces estimated by FreeSurfer from a T1-weighted MRI image. See :ref:`tut-forward` - to read about how to compute a forward operator on a source space. - See :class:`SourceSpaces` for the API of the corresponding - object class. + to read about how to compute a forward operator in a source space. + See :class:`SourceSpaces` for the class definition and information + about the data it contains. stim channel trigger channel - A stim channel, a.k.a. trigger channel, is a channel that encodes - events during the recording. It is typically a channel that is usually + A stim channel or trigger channel is a channel that encodes + events during the recording. It is typically a channel that is always zero and takes positive values when something happens (such as the - onset of a stimulus, or a subject response). Stim channels are often + onset of a stimulus or a subject response). Stim channels are often prefixed with ``STI`` to distinguish them from other channel types. See :ref:`stim-channel-defined` for more details. + template montage + An idealized EEG :term:`montage`, often provided by the manufacturer + of the EEG system or cap. The electrode positions were not actually + measured on the participants' heads, but rather were calculated + assuming optimal theoretical placement on a sphere. + + tfr + A time-frequency representation (TFR) is often a spectrogram (STFT) or + scaleogram (wavelet) showing the frequency content as a function of + time. + trans A coordinate frame affine transformation, usually between the Neuromag head coordinate frame and the MRI Surface RAS coordinate frame used by Freesurfer. whitening A linear operation that transforms data with a known covariance - structure into "whitened data" which has a covariance structure that - is the identity matrix. In other words it creates virtual channels that + structure into "whitened data", which has a covariance structure equal to + the identity matrix. In other words, whitening creates virtual channels that are uncorrelated and have unit variance. This is also known as a sphering transformation. diff -Nru python-mne-0.23.4+dfsg/doc/_includes/forward.rst python-mne-1.1.0+dfsg/doc/_includes/forward.rst --- python-mne-0.23.4+dfsg/doc/_includes/forward.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_includes/forward.rst 2022-08-03 15:48:14.000000000 +0000 @@ -20,13 +20,14 @@ MEG/EEG and MRI coordinate systems ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. sidebar:: Coordinate systems in MNE-Python +.. note:: Coordinate systems in MNE-Python + :class: sidebar - In some MNE-Python objects (e.g., :class:`~mne.Forward`, - :class:`~mne.SourceSpaces`, etc), information about the coordinate frame is - encoded as a constant integer value. The meaning of those integers is - determined `in the source code - `__. + In some MNE-Python objects (e.g., :class:`~mne.Forward`, + :class:`~mne.SourceSpaces`, etc), information about the coordinate frame is + encoded as a constant integer value. The meaning of those integers is + determined `in the source code + `__. The coordinate systems used in MNE software (and FreeSurfer) and their relationships are depicted in :ref:`coordinate_system_figure`. Except for the @@ -118,7 +119,7 @@ Talairach brain. The differences are larger as you get further from the middle of the brain, towards the outside. The FreeSurfer Talairach coordinates mitigate this problem by additing a an additional - transformation, defined separately for negatice and positive MNI Talairach + transformation, defined separately for negative and positive MNI Talairach :math:`z` coordinates. These two transformations, denoted by :math:`T_-` and :math:`T_+` in :ref:`coordinate_system_figure`, are fixed as discussed in https://imaging.mrc-cbu.cam.ac.uk/imaging/MniTalairach (*Approach 2*). @@ -683,14 +684,15 @@ EEG forward solution in the sphere model ---------------------------------------- -.. sidebar:: Sphere-model examples in MNE-Python +.. note:: Sphere-model examples in MNE-Python + :class: sidebar - For examples of using the sphere model when computing the forward model - (using :func:`mne.make_forward_solution`), see :ref:`Brainstorm CTF phantom - dataset tutorial `, - :ref:`Brainstorm Elekta phantom dataset tutorial - `, and - :ref:`plot_source_alignment_without_mri`. + For examples of using the sphere model when computing the forward model + (using :func:`mne.make_forward_solution`), see :ref:`Brainstorm CTF phantom + dataset tutorial `, + :ref:`Brainstorm Elekta phantom dataset tutorial + `, and + :ref:`tut-source-alignment-without-mri`. When the sphere model is employed, the computation of the EEG solution can be substantially accelerated by using approximation methods described by Mosher diff -Nru python-mne-0.23.4+dfsg/doc/_includes/institutional-partners.rst python-mne-1.1.0+dfsg/doc/_includes/institutional-partners.rst --- python-mne-0.23.4+dfsg/doc/_includes/institutional-partners.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_includes/institutional-partners.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,41 @@ +:orphan: + +Institutional partners +---------------------- + +.. NOTE: this file is included in doc/funding.rst and doc/overview/people.rst. + Changes here are reflected there. If you want to link to this content, link + to :ref:`supporting-institutions` to link to that section of the funding.rst + page. The next line is a target for :start-after: so we can omit the title + from the include: + institutional-partners-begin-content + +Current partners +~~~~~~~~~~~~~~~~ + +- `Aalto-yliopiston perustieteiden korkeakoulu `_ +- `Aarhus Universitet `_ +- `Athinoula A. Martinos Center for Biomedical Imaging `_ +- `Children’s Hospital of Philadelphia Research Institute `_ +- `Harvard Medical School `_ +- `Institut national de recherche en informatique et en automatique `_ +- `Karl-Franzens-Universität Graz `_ +- `Macquarie University `_ +- `Massachusetts General Hospital `_ +- `Max-Planck-Institut für Bildungsforschung `_ +- `SWPS Uniwersytet Humanistycznospołeczny `_ +- `University of Washington `_ + +Former partners +~~~~~~~~~~~~~~~ + +- `Berkeley Institute for Data Science `_ +- `Boston University `_ +- `Commissariat à l’énergie atomique et aux énergies alternatives `_ +- `Forschungszentrum Jülich `_ +- `Institut du Cerveau et de la Moelle épinière `_ +- `Institut national de la santé et de la recherche médicale `_ +- `Massachusetts Institute of Technology `_ +- `New York University `_ +- `Technische Universität Ilmenau `_ +- `Télécom ParisTech `_ diff -Nru python-mne-0.23.4+dfsg/doc/_includes/inverse.rst python-mne-1.1.0+dfsg/doc/_includes/inverse.rst --- python-mne-0.23.4+dfsg/doc/_includes/inverse.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_includes/inverse.rst 2022-08-03 15:48:14.000000000 +0000 @@ -150,14 +150,17 @@ :math:`C_0`, is scaled by the number of averages, :math:`L`, *i.e.*, :math:`C = C_0 / L`. +.. note:: + When EEG data are included, the gain matrix :math:`G` needs to be average referenced when computing the linear inverse operator :math:`M`. This is incorporated during creating the spatial whitening operator :math:`C^{-^1/_2}`, which includes any projectors on the data. EEG data average reference (using a projector) is mandatory for source modeling and is checked when calculating the inverse operator. + As shown above, regularization of the inverse solution is equivalent to a change in the variance of the current amplitudes in the Bayesian *a priori* distribution. A convenient choice for the source-covariance matrix :math:`R` is such that :math:`\text{trace}(\tilde{G} R \tilde{G}^\top) / \text{trace}(I) = 1`. With this -choice we can approximate :math:`\lambda^2 \sim 1/SNR`, where SNR is the -(power) signal-to-noise ratio of the whitened data. +choice we can approximate :math:`\lambda^2 \sim 1/\rm{SNR}^2`, where SNR is the +(amplitude) signal-to-noise ratio of the whitened data. .. note:: The definition of the signal to noise-ratio/ :math:`\lambda^2` relationship @@ -167,7 +170,7 @@ have, in general, different units of measure. For example, the MEG data are expressed in T or T/m whereas the unit of EEG is Volts. -See :ref:`tut_compute_covariance` for example of noise covariance computation +See :ref:`tut-compute-covariance` for example of noise covariance computation and whitening. .. _cov_regularization_math: diff -Nru python-mne-0.23.4+dfsg/doc/_includes/memory.rst python-mne-1.1.0+dfsg/doc/_includes/memory.rst --- python-mne-0.23.4+dfsg/doc/_includes/memory.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_includes/memory.rst 2022-08-03 15:48:14.000000000 +0000 @@ -20,7 +20,7 @@ from mne import io from mne.datasets import sample data_path = sample.data_path() - raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif' + raw_fname = data_path / 'MEG' / 'sample' / 'sample_audvis_filt-0-40_raw.fif' raw = io.read_raw_fif(raw_fname, preload=False) .. note:: Filtering, resampling and dropping or selecting channels does not diff -Nru python-mne-0.23.4+dfsg/doc/_includes/morph.rst python-mne-1.1.0+dfsg/doc/_includes/morph.rst --- python-mne-0.23.4+dfsg/doc/_includes/morph.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_includes/morph.rst 2022-08-03 15:48:14.000000000 +0000 @@ -23,12 +23,13 @@ Why morphing? ~~~~~~~~~~~~~ -.. sidebar:: Morphing examples in MNE-Python +.. note:: Morphing examples in MNE-Python + :class: sidebar - Examples of morphing in MNE-Python include :ref:`this tutorial - ` on surface source estimation or these examples on - :ref:`surface ` and :ref:`volumetric ` - source estimation. + Examples of morphing in MNE-Python include :ref:`this tutorial + ` on surface source estimation or these examples on + :ref:`surface ` and :ref:`volumetric ` + source estimation. Modern neuroimaging techniques, such as source reconstruction or fMRI analyses, make use of advanced mathematical models and hardware to map brain activity diff -Nru python-mne-0.23.4+dfsg/doc/_includes/ssp.rst python-mne-1.1.0+dfsg/doc/_includes/ssp.rst --- python-mne-0.23.4+dfsg/doc/_includes/ssp.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_includes/ssp.rst 2022-08-03 15:48:14.000000000 +0000 @@ -23,7 +23,7 @@ relies on the fact that the magnetic field distributions generated by the sources in the brain have spatial distributions sufficiently different from those generated by external noise sources. Furthermore, it is implicitly -assumed that the linear space spanned by the significant external noise patters +assumed that the linear space spanned by the significant external noise patterns has a low dimension. Without loss of generality we can always decompose any :math:`n`-channel diff -Nru python-mne-0.23.4+dfsg/doc/index.rst python-mne-1.1.0+dfsg/doc/index.rst --- python-mne-0.23.4+dfsg/doc/index.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/index.rst 2022-08-03 15:48:14.000000000 +0000 @@ -14,9 +14,13 @@ .. image:: _static/mne_logo.svg :alt: MNE-Python - :class: logo + :class: logo, mainlogo, only-light :align: center +.. image:: _static/mne_logo_dark.svg + :alt: MNE-Python + :class: logo, mainlogo, only-dark + :align: center .. rst-class:: h4 text-center font-weight-light my-4 @@ -28,8 +32,8 @@ .. toctree:: :hidden: - Install - Documentation - API Reference - Get help - Development + Install + Documentation + API Reference + Get help + Development diff -Nru python-mne-0.23.4+dfsg/doc/install/advanced.rst python-mne-1.1.0+dfsg/doc/install/advanced.rst --- python-mne-0.23.4+dfsg/doc/install/advanced.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/advanced.rst 2022-08-03 15:48:14.000000000 +0000 @@ -5,8 +5,17 @@ Advanced setup ============== -Using with IPython / Jupyter notebooks -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Working with Jupyter Notebooks and JupyterLab +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you like using Jupyter notebooks, you should also update the "base" +conda environment to include the ``nb_conda_kernels`` package; this will +make it easier to use MNE-Python in Jupyter Notebooks launched from the +Anaconda GUI: + +.. code-block:: console + + $ conda install --name=base nb_conda_kernels When using MNE-Python within IPython or a Jupyter notebook, we strongly recommend using the Qt matplotlib backend for fast and correct rendering. On @@ -36,7 +45,7 @@ In [1]: %matplotlib inline -but some functionality will be lost. For example, mayavi scenes will still +but some functionality will be lost. For example, PyVista scenes will still pop-up a separate window, but only one window at a time is possible, and interactivity within the scene is limited in non-blocking plot calls. @@ -44,13 +53,11 @@ :class: note If you are using MNE-Python on Windows through IPython or Jupyter, you might - also have to use the IPython magic command ``%gui qt`` after importing - MNE-Python, Mayavi or PySurfer (see `here + also have to use the IPython magic command ``%gui qt`` (see `here `_). For example: .. code-block:: ipython - In [1]: from mayavi import mlab In [2]: %gui qt If you installed the ``nb_conda_kernels`` package into your ``base`` @@ -74,8 +81,19 @@ The notebook 3d backend requires PyVista to be installed along with other packages, -please follow :doc:`mne_python`. +please follow :ref:`standard-instructions`. + +Installing to a headless server +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +With `pyvista`_: +Download the `server environment file`_ and use it to create the conda +environment + +.. code-block:: console + + $ curl --remote-name https://raw.githubusercontent.com/mne-tools/mne-python/main/server_environment.yml + $ conda env create -f server_environment.yml Using the development version ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -120,8 +138,8 @@ .. code-block:: console - curl --remote-name https://raw.githubusercontent.com/mne-tools/mne-python/main/requirements.txt - pip install --user requirements.txt + $ curl --remote-name https://raw.githubusercontent.com/mne-tools/mne-python/main/requirements.txt + $ pip install --user -r requirements.txt Other configurations will probably also work, but we may be unable to offer support if you encounter difficulties related to your particular Python @@ -175,6 +193,12 @@ Also, it's possible that different software rending backends might perform better than others, such as using the ``llvmpipe`` backend rather than ``swr``. +In newer MESA (21+), rendering can be incorrect when using MSAA, so consider +setting: + +.. code-block:: console + + $ export MNE_3D_OPTION_MULTI_SAMPLES=1 MESA also can have trouble with full-screen antialiasing, which you can disable with: @@ -232,7 +256,8 @@ 3D plotting trouble after upgrade on macOS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When upgrading MNE-Python from version 0.19 or lower, some macOS users may end up with +When upgrading MNE-Python from version 0.19 or lower, some macOS users may end +up with conflicting versions of some of the 3D plotting dependencies. If you plot using the pyvista 3D backend and find that you can click-drag to rotate the brain, but cannot adjust any of the settings sliders, it is likely that your versions @@ -249,17 +274,10 @@ line for ``pip uninstall -y vtk``. -Trouble using mayavi backend -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. LINKS -If you run into trouble when visualizing source estimates (or anything else) -using mayavi, you can try setting a couple of environment variables at the -beginning of your script, session, or notebook:: - - >>> import os - >>> os.environ['ETS_TOOLKIT'] = 'qt4' - >>> os.environ['QT_API'] = 'pyqt5' - -This will tell mayavi to use Qt backend with PyQt bindings, instead of the -default PySide. For more information, see -http://docs.enthought.com/mayavi/mayavi/building_applications.html#integrating-in-a-qt-application. +.. _environment file: https://raw.githubusercontent.com/mne-tools/mne-python/main/environment.yml +.. _server environment file: https://raw.githubusercontent.com/mne-tools/mne-python/main/server_environment.yml +.. _`pyvista`: https://docs.pyvista.org/ +.. _`X server`: https://en.wikipedia.org/wiki/X_Window_System +.. _`xvfb`: https://en.wikipedia.org/wiki/Xvfb diff -Nru python-mne-0.23.4+dfsg/doc/install/check_installation.rst python-mne-1.1.0+dfsg/doc/install/check_installation.rst --- python-mne-0.23.4+dfsg/doc/install/check_installation.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/check_installation.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,78 @@ +.. include:: ../links.inc + +.. _testing-installation: + + +Testing your installation +========================= + +To make sure MNE-Python was installed correctly, type the following command in +a terminal:: + + python -c "import mne; mne.sys_info()" + +.. hint:: + If you installed MNE-Python using one of our installers, enter the above + command in the **Prompt**. + +This should display some system information along with the versions of +MNE-Python and its dependencies. Typical output looks like this:: + + Platform: Linux-5.0.0-1031-gcp-x86_64-with-glibc2.2.5 + Python: 3.8.1 (default, Dec 20 2019, 10:06:11) [GCC 7.4.0] + Executable: /home/travis/virtualenv/python3.8.1/bin/python + CPU: x86_64: 2 cores + Memory: 7.8 GB + + mne: 0.21.dev0 + numpy: 1.19.0.dev0+8dfaa4a {blas=openblas, lapack=openblas} + scipy: 1.5.0.dev0+f614064 + matplotlib: 3.2.1 {backend=QtAgg} + + sklearn: 0.22.2.post1 + numba: 0.49.0 + nibabel: 3.1.0 + cupy: Not found + pandas: 1.0.3 + dipy: 1.1.1 + pyvista: 0.25.2 {pyvistaqt=0.1.0} + vtk: 9.0.0 + qtpy: 2.0.1 {PySide6=6.2.4} + + +.. dropdown:: If you get an error... + :color: danger + :icon: alert-fill + + .. rubric:: If you see an error like: + + :: + + Traceback (most recent call last): + File "", line 1, in + ModuleNotFoundError: No module named 'mne' + + This suggests that your environment containing MNE-Python is not active. + If you followed the setup for 3D plotting/source analysis (i.e., you + installed to a new ``mne`` environment instead of the ``base`` environment) + try running ``conda activate mne`` first, and try again. If this works, + you might want to set your terminal to automatically activate the + ``mne`` environment each time you open a terminal:: + + echo conda activate mne >> ~/.bashrc # for bash shells + echo conda activate mne >> ~/.zprofile # for zsh shells + +If something else went wrong during installation and you can't figure it out, +check out the :ref:`advanced_setup` instructions to see if your problem is +discussed there. If not, the `MNE Forum`_ is a good resources for +troubleshooting installation problems. + +.. highlight:: python + +.. LINKS + +.. _environment file: https://raw.githubusercontent.com/mne-tools/mne-python/main/environment.yml +.. _server environment file: https://raw.githubusercontent.com/mne-tools/mne-python/main/server_environment.yml +.. _`pyvista`: https://docs.pyvista.org/ +.. _`X server`: https://en.wikipedia.org/wiki/X_Window_System +.. _`xvfb`: https://en.wikipedia.org/wiki/Xvfb diff -Nru python-mne-0.23.4+dfsg/doc/install/contributing.rst python-mne-1.1.0+dfsg/doc/install/contributing.rst --- python-mne-0.23.4+dfsg/doc/install/contributing.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/contributing.rst 2022-08-03 15:48:14.000000000 +0000 @@ -3,29 +3,70 @@ Contributing guide ================== +.. include:: ../links.inc .. highlight:: console -This page has details on the preferred contribution workflow -and how best to configure your system for a smooth experience contributing to -MNE-Python. - -.. collapse:: |rocket| Want an example to work through? - :class: success - - A great way to learn to contribute is to work through an actual example. - We recommend that you take a look at the `GitHub issues marked "easy"`_, - pick one that looks interesting, and work through it while reading this - guide! +Thanks for taking the time to contribute! MNE-Python is an open-source project +sustained mostly by volunteer effort. We welcome contributions from anyone as +long as they abide by our `Code of Conduct`_. + +There are lots of ways to contribute, such as: + +.. rst-class:: icon-bullets + +- |bug| Use the software, and when you find bugs, tell us about them! We can + only fix the bugs we know about. +- |discourse| Answer questions on `our user forum`_. +- |comment| Tell us about parts of the documentation that you find confusing or + unclear. +- |hand-sparkles| Tell us about things you wish MNE-Python could do, or things + it can do but you wish they were easier. +- |universal-access| Improve the accessibility of our website. +- |fix-bug| Fix bugs. +- |remove-format| Fix mistakes in our function documentation strings. +- |magic| Implement new features. +- |pencil-alt| Improve existing tutorials or write new ones. +- |python| Contribute to one of the many Python packages that MNE-Python + depends on. + +To *report* bugs, *request* new features, or *ask about* confusing +documentation, it's usually best to open a new issue on `our user forum`_ +first; you'll probably get help fastest that way, and it helps keep our GitHub +issue tracker focused on things that we *know* will require changes to our +software (as opposed to problems that can be fixed in the user's code). We may +ultimately ask you to open an issue on GitHub too, but starting on the forum +helps us keep things organized. For fastest results, be sure to include +information about your operating system and MNE-Python version, and (if +applicable) include a reproducible code sample that is as short as possible and +ideally uses one of :ref:`our example datasets `. + +If you want to *fix* bugs, *add* new features, or *improve* our +docstrings/tutorials/website, those kinds of contributions are made through +`our GitHub repository `_. The rest of this page explains +how to set up your workflow to make contributing via GitHub as easy as +possible. + + +.. dropdown:: Want an example to work through? + :color: success + :icon: rocket + + Feel free to just read through the rest of the page, but if you find it + easier to "learn by doing", take a look at our + `GitHub issues marked "easy"`_, pick one that looks interesting, and work + through it while reading this guide! -.. _`GitHub issues marked "easy"`: https://github.com/mne-tools/mne-python/issues?q=is%3Aissue+is%3Aopen+label%3AEASY Overview of contribution process ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. note:: Reminder: all contributors are expected to follow our + `code of conduct`_. + Changes to MNE-Python are typically made by `forking`_ the MNE-Python repository, making changes to your fork (usually by `cloning`_ it to your personal computer, making the changes locally, and then `pushing`_ the local -changes up to your fork), and finally creating a `pull request`_ to incorporate +changes up to your fork on GitHub), and finally creating a `pull request`_ to incorporate your changes back into the shared "upstream" version of the codebase. In general you'll be working with three different copies of the MNE-Python @@ -53,7 +94,8 @@ Configuring git ~~~~~~~~~~~~~~~ -.. sidebar:: Git GUI alternative +.. note:: Git GUI alternative + :class: sidebar `GitHub desktop`_ is a GUI alternative to command line git that some users appreciate; it is available for |windows| Windows and |apple| MacOS. @@ -112,30 +154,59 @@ make: *** No targets specified and no makefile found. Stop. -If you don't see this or something similar: +If you don't see this or something similar, you may not have ``make`` installed. + +.. tab-set:: + + .. tab-item:: Linux + :class-content: text-center + + .. button-link:: https://www.gnu.org/software/make/ + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold mt-3 + + |cloud-download-alt| |ensp| Get make for Linux + + .. tab-item:: macOS + :class-content: text-center + + .. button-link:: https://www.gnu.org/software/make/ + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold mt-3 + + |cloud-download-alt| |ensp| Get make for macOS + + .. tab-item:: Windows -.. sidebar:: If you get: + If you see: :: - *bash: conda: command not found* + bash: make: command not found - you need to add + Install ``make`` for git BASH (which comes with `git for Windows`_): - - :file:`{path_to_Anaconda}` - - :file:`{path_to_Anaconda}\\Scripts` + 1. Download :file:`make-{newest.version}-without-guile-w32-bin.zip` from `ezwinports`_ + 2. Extract zip-folder + 3. Copy the contents into :file:`{path_to_git}\\mingw64\\` (e.g. by merging the + folders with the equivalent ones already inside) + 4. For the first time using git BASH, you need to run once (to be able to + activate your ``mnedev`` environment): :: - to Windows-PATH. + $ conda init bash -- For Linux/MacOS, get `GNU Make`_ -- For Windows, you can install make for git BASH (which comes with `git for Windows`_): + If instead you see an error like: :: - 1. Download :file:`make-{newest.version}-without-guile-w32-bin.zip` from `ezwinports`_ - 2. Extract zip-folder - 3. Copy the contents into :file:`{path_to_git}\\mingw64\\` (e.g. by merging the - folders with the equivalent ones already inside) - 4. For the first time using git BASH, you need to run once (to be able to - activate your mnedev-environment): :: + bash: conda: command not found - $ conda init bash + at the top of your git BASH window, you need to add + + - :file:`{path_to_Anaconda}` + - :file:`{path_to_Anaconda}\\Scripts` + + to Windows-PATH first. Forking the MNE-Python repository @@ -145,7 +216,7 @@ of the codebase, go to the `MNE-Python GitHub`_ page and create a `fork`_ into your GitHub user account. -.. image:: https://help.github.com/assets/images/help/repository/fork_button.jpg +.. image:: https://docs.github.com/assets/cb-28613/images/help/repository/fork_button.png This will create a copy of the MNE-Python codebase inside your GitHub user account (this is called "your fork"). Changes you make to MNE-Python will @@ -162,7 +233,8 @@ Creating the virtual environment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. sidebar:: Supported Python environments +.. note:: Supported Python environments + :class: sidebar We strongly recommend the `Anaconda`_ or `Miniconda`_ environment managers for Python. Other setups are possible but are not officially supported by @@ -174,7 +246,7 @@ These instructions will set up a Python environment that is separated from your system-level Python and any other managed Python environments on your computer. This lets you switch between different versions of Python (MNE-Python requires -version 3.6 or higher) and also switch between the stable and development +version 3.7 or higher) and also switch between the stable and development versions of MNE-Python (so you can, for example, use the same computer to analyze your data with the stable release, and also work with the latest development version to fix bugs or add new features). Even if you've already @@ -209,23 +281,11 @@ $ cd $INSTALL_LOCATION $ git clone https://github.com/$GITHUB_USERNAME/mne-python.git -.. sidebar:: Remote URLs in git - - Here we use ``git://`` instead of ``https://`` in the URL for the - ``upstream`` remote repository. ``git://`` URLs are read-only, so you can - *pull* changes from ``upstream`` into your local copy (to stay up-to-date - with changes from other contributors) but you cannot *push* changes from - your computer into the ``upstream`` remote. Instead, you must push your - changes to your own remote fork (``origin``) first, and then create a pull - request from your remote into the upstream remote. In :ref:`a later section - ` you'll see a third kind of remote URL for connecting to - GitHub using SSH. - Finally, set up a link between your local clone and the official repository (``upstream``):: $ cd mne-python - $ git remote add upstream git://github.com/mne-tools/mne-python.git + $ git remote add upstream https://github.com/mne-tools/mne-python.git $ git fetch --all Now we'll remove the *stable* version of MNE-Python and replace it with the @@ -233,7 +293,7 @@ the correct environment first (``conda activate mnedev``), and then do:: $ cd $INSTALL_LOCATION/mne-python # make sure we're in the right folder - $ pip uninstall -y mne + $ conda remove --force mne # the --force avoids dependency checking $ pip install -e . The command ``pip install -e .`` installs a python module into the current @@ -269,7 +329,7 @@ - On MacOS, optipng can be installed using Homebrew. - On Windows, unzip :file:`optipng.exe` from the `optipng for Windows`_ archive - into the :file:`doc/` folder. + into the :file:`doc/` folder. This step is optional for Windows users. You can also choose to install some optional linters for reStructuredText:: @@ -311,7 +371,8 @@ $ git merge upstream/main # synchronize local main branch with remote upstream main branch $ git checkout -b new-feature-x # create local branch "new-feature-x" and check it out -.. sidebar:: Alternative +.. note:: Alternative + :class: sidebar You can save some typing by using ``git pull upstream/main`` to replace the ``fetch`` and ``merge`` lines above. @@ -328,7 +389,7 @@ easier for their colleagues to understand and review the changes). For example, you might want to group all the code changes together in one commit, put new unit tests in another commit, and changes to the documentation in a third -commit. Git makes this easy(ish) with something called the `stage`_ (or +commit. Git makes this possible with something called the `stage`_ (or *staging area*). After you've made some changes to the codebase, you'll have what git calls "unstaged changes", which will show up with the `status`_ command:: @@ -450,7 +511,7 @@ Note that any new API elements should be added to the main reference; classes, functions, methods, and attributes cannot be cross-referenced unless -they are included in the :doc:`python_reference` +they are included in the :ref:`api_reference` (:file:`doc/python_reference.rst`). @@ -541,23 +602,21 @@ Welcome to MNE-Python! We're very happy to have you here. 🤗 And to ensure you get proper credit for your work, please add a changelog entry with the -following pattern **at the top** of the respective subsection (bugfix, -new feature etc.): +following pattern **at the top** of the respective subsection (bugs, +enhancements, etc.): .. code-block:: rst - Bug - --- - - .. |Your Name| replace:: **Your Name** + Bugs + ---- - - Short description of the changes (:gh:`0000` **by new contributor** |Your Name|_) + - Short description of the changes (:gh:`0000` by :newcontrib:`Firstname Lastname`) - ... where ``0000`` must be replaced with the respective GitHub pull request (PR) -number. +number, and ``Firstname Lastname`` must be replaced with your full name. It is usually best to wait to add a line to the changelog until your PR is finalized, to avoid merge conflicts (since the changelog is updated with @@ -565,7 +624,7 @@ Lastly, make sure that your name is included in the list of authors in :file:`doc/changes/names.inc`, otherwise the documentation build will fail. -To add an author name, simply append a line with the following pattern (note +To add an author name, append a line with the following pattern (note how the syntax is different from that used in the changelog): .. code-block:: rst @@ -589,7 +648,7 @@ number. Mind the Oxford comma in the case of multiple contributors. Sometimes, changes that shall appear as a single changelog entry are spread out -across multiple PRs. In this case, simply name all relevant PRs, separated by +across multiple PRs. In this case, name all relevant PRs, separated by commas: .. code-block:: rst @@ -786,7 +845,7 @@ All visualization functions must accept a boolean ``show`` parameter and typically return a :class:`matplotlib.figure.Figure` (or a list of :class:`~matplotlib.figure.Figure` objects). 3D visualization functions return -a :class:`mayavi.core.api.Scene`, :class:`surfer.Brain`, or other return type +a :class:`mne.viz.Figure3D`, :class:`mne.viz.Brain`, or other return type as appropriate. Visualization functions should default to the colormap ``RdBu_r`` for signed @@ -799,22 +858,19 @@ Running the test suite ~~~~~~~~~~~~~~~~~~~~~~ -Running the full test suite is as simple as running :: +.. note:: pytest flags + :class: sidebar - $ make test - -.. sidebar:: pytest flags - - The ``-x`` flag exits the pytest run as soon as the first test fails; this - can save some time if you are running an entire file's or module's worth of - tests instead of selecting just a single test as shown here. + The ``-x`` flag exits the pytest run when any test fails; this can speed + up debugging when running all tests in a file or module. The ``--pdb`` flag will automatically start the python debugger upon test failure. -from the ``mne-python`` root folder. Testing the entire module can be quite +The full test suite can be run by calling ``make test`` from the +``mne-python`` root folder. Testing the entire module can be quite slow, however, so to run individual tests while working on a new feature, you -can run, e.g.:: +can run the following line:: $ pytest mne/tests/test_evoked.py::test_io_evoked --verbose @@ -859,12 +915,16 @@ you expect). .. note:: - On Windows, to use the pattern approach, use the following two lines: + If you are using a *Windows command shell*, to use the pattern approach, + use the following two lines: - .. code-block:: python + .. code-block:: doscon - set PATTERN={} - make html_dev-pattern + > set PATTERN= + > make html_dev-pattern + + If you are on Windows but using the `git BASH`_ shell, use the same two + commands but replace ``set`` with ``export``. After either of these commands completes, ``make show`` will open the locally-rendered documentation site in your browser. Additional ``make`` @@ -910,7 +970,7 @@ working on MNE-Python will bear fruit when you contribute to other projects down the road. Here are the guidelines: -- Search the `MNE-Python issues page`_ (both open and closed issues) in case +- Search the `GitHub issues page`_ (both open and closed issues) in case someone else has already started work on the same bugfix or feature. If you don't find anything, `open a new issue`_ to discuss changes with maintainers before starting work on your proposed changes. @@ -932,7 +992,7 @@ for backports or maintenance bugfixes to the current stable version). - Don't forget to include in your PR a brief description of the change in the - :doc:`changelog ` (:file:`doc/whats_new.rst`). + :ref:`changelog ` (:file:`doc/whats_new.rst`). - Our community uses the following commit tags and conventions: @@ -957,13 +1017,13 @@ - ``[skip circle]`` Skip `CircleCI`_, which tests successful building of our documentation. - - ``[skip github]`` Skip our `GitHub Actions`_, which test installation + - ``[skip actions]`` Skip our `GitHub Actions`_, which test installation and execution on Linux and macOS systems. - ``[skip azp]`` Skip `azure`_ which tests installation and execution on Windows systems. - - ``[ci skip]`` is an alias for ``[skip github][skip azp][skip circle]``. + - ``[ci skip]`` is an alias for ``[skip actions][skip azp][skip circle]``. Notice that ``[skip ci]`` is not a valid tag. - ``[circle full]`` triggers a "full" documentation build, i.e., all code @@ -982,15 +1042,14 @@ .. MNE -.. _MNE-Python GitHub: https://github.com/mne-tools/mne-python -.. _MNE-Python issues page: https://github.com/mne-tools/mne-python/issues +.. _`GitHub issues marked "easy"`: https://github.com/mne-tools/mne-python/issues?q=is%3Aissue+is%3Aopen+label%3AEASY .. _open a new issue: https://github.com/mne-tools/mne-python/issues/new/choose .. _This sample pull request: https://github.com/mne-tools/mne-python/pull/6230 +.. _our user forum: https://mne.discourse.group .. git installation .. _the .dmg installer: https://git-scm.com/download/mac -.. _git for Windows: https://gitforwindows.org/ .. _official Linux instructions: https://git-scm.com/download/linux .. _more detailed instructions and alternatives: https://www.atlassian.com/git/tutorials/install-git .. _Windows subsystem for Linux: https://docs.microsoft.com/en-us/windows/wsl/about @@ -1000,8 +1059,6 @@ .. github help pages -.. _GitHub Help: https://help.github.com -.. _GitHub learning lab: https://lab.github.com/ .. _fork: https://help.github.com/en/articles/fork-a-repo .. _clone: https://help.github.com/en/articles/cloning-a-repository .. _push: https://help.github.com/en/articles/pushing-to-a-remote @@ -1025,29 +1082,23 @@ .. git book -.. _pro git book: https://git-scm.com/book/ .. _stage: https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging .. _configuring git: https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration .. sphinx -.. _sphinx: http://www.sphinx-doc.org -.. _sphinx-gallery: https://sphinx-gallery.github.io -.. _reStructuredText: http://sphinx-doc.org/rest.html -.. _intersphinx: http://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html +.. _reStructuredText: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _intersphinx: https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html .. _sphobjinv: https://sphobjinv.readthedocs.io/en/latest/ .. linting -.. _NumPy docstring style guidelines: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt .. _PEP 8: https://www.python.org/dev/peps/pep-0008/ -.. _pep8: https://pypi.org/project/pep8 .. _pyflakes: https://pypi.org/project/pyflakes .. _Flake8: http://flake8.pycqa.org/ .. misc -.. _anaconda: https://www.anaconda.com/distribution/ .. _miniconda: https://conda.io/en/latest/miniconda.html .. _Spyder: https://www.spyder-ide.org/ .. _continuous integration: https://en.wikipedia.org/wiki/Continuous_integration diff -Nru python-mne-0.23.4+dfsg/doc/install/index.rst python-mne-1.1.0+dfsg/doc/install/index.rst --- python-mne-0.23.4+dfsg/doc/install/index.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/index.rst 2022-08-03 15:48:14.000000000 +0000 @@ -1,52 +1,80 @@ -.. include:: ../links.inc +.. _install: +.. _quick-start: -Quick start -=========== +Installing MNE-Python +====================== -MNE-Python requires Python version |min_python_version| or higher. If you've -never worked with Python before, skip ahead to the last paragraph of this page. -For users already familiar with Python: -- If you only need 2D plotting capabilities with MNE-Python (i.e., most EEG/ERP - or other sensor-level analyses), you can install MNE-Python using ``pip``: +.. when https://github.com/executablebooks/sphinx-design/issues/66 is fixed, + prepend |cloud-download-alt| |ensp| to the "Download installers" button text + and |wrench| |ensp| to the "Setup instructions" button text - .. code-block:: console +.. grid:: 2 - $ pip install mne + .. grid-item-card:: + :text-align: center - The only hard dependencies are `NumPy`_ and `SciPy`_, though most users will - want to install `Matplotlib`_ too (for plotting). + .. rst-class:: font-weight-bold mb-0 -- If you need MNE-Python's 3D rendering capabilities (e.g., plotting estimated - source activity on a cortical surface) it is a good idea to install - MNE-Python into its own virtual environment. To do this with - `conda `_: + Standalone installers - .. code-block:: console + .. rst-class:: card-subtitle text-muted mt-0 - $ conda create --name=mne --channel=conda-forge mne - $ # ↑↑↑ ↑↑↑ - $ # environment name package name + For Beginners - This will create a new ``conda`` environment called ``mne``. - If you need to convert structural MRI scans into models of the scalp, - inner/outer skull, and cortical surfaces you also need - :doc:`FreeSurfer `. + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + .. image:: ../_static/mne_installer_macOS.png + :alt: MNE-Python Installer + + **New to Python?** Use our standalone installers that include + everything to get you started! + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + .. button-ref:: installers + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold + + Download Installers + + + .. grid-item-card:: + :text-align: center + + .. rst-class:: font-weight-bold mb-0 + + Install via ``pip`` or ``conda`` + + .. rst-class:: card-subtitle text-muted mt-0 + + For Advanced Users + + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + .. image:: ../_static/mne_installer_console.png + :alt: Terminal Window + + **Already familiar with Python?** + Follow our advanced setup instructions for ``pip`` and ``conda``! + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + .. button-ref:: manual-install + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold + + Setup Instructions -For users unfamiliar with Python, the :ref:`standard_instructions` page has detailed instructions for different -operating systems, and there are instructions for :ref:`install-python` -if you don't already have it. The :ref:`advanced_setup` page has additional -tips and tricks for special situations (servers, notebooks, CUDA, installing -the development version, etc). The :ref:`contributing` has additional -installation instructions for (future) contributors to MNE-Python (e.g, extra -dependencies for running our tests and building our docs). .. toctree:: :hidden: - pre_install - install_python - mne_python + installers + manual_install + advanced + check_installation updating freesurfer - advanced + mne_tools_suite diff -Nru python-mne-0.23.4+dfsg/doc/install/installers.rst python-mne-1.1.0+dfsg/doc/install/installers.rst --- python-mne-0.23.4+dfsg/doc/install/installers.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/installers.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,133 @@ +.. include:: ../links.inc + +.. _installers: + +MNE-Python installers +===================== + +MNE-Python installers are the easiest way to install MNE-Python and +all dependencies. They also provide many additional +Python packages and tools, including the `Spyder`_ development environment. +Got any questions? Let us know on the `MNE Forum`_! + +.. tab-set:: + :class: platform-selector-tabset + + .. tab-item:: Linux + :class-content: text-center + + .. button-link:: https://github.com/mne-tools/mne-installers/releases/download/v1.0.3/MNE-Python-1.0.3_0-Linux.sh + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold mt-3 + + |cloud-download-alt| |ensp| Download for Linux + + **Supported platforms:** Ubuntu 18.04 (Bionic Beaver) and newer + + Run the installer in a terminal via: + + .. code-block:: console + + $ sh ./MNE-Python-1.0.3_0-Linux.sh + + + .. tab-item:: macOS + :class-content: text-center + + .. button-link:: https://github.com/mne-tools/mne-installers/releases/download/v1.0.3/MNE-Python-1.0.3_0-macOS_Intel.pkg + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold mt-3 + + |cloud-download-alt| |ensp| Download for macOS + + **Supported platforms:** + macOS 10.15 (Catalina) and newer (Intel and Apple Silicon) + + + .. tab-item:: Windows + :class-content: text-center + + .. button-link:: https://github.com/mne-tools/mne-installers/releases/download/v1.0.3/MNE-Python-1.0.3_0-Windows.exe + :ref-type: ref + :color: primary + :shadow: + :class: font-weight-bold mt-3 + + |cloud-download-alt| |ensp| Download for Windows + + **Supported platforms:** Windows 10 and newer + + +First steps +^^^^^^^^^^^ + +The installer adds menu entries on Linux and Windows, and several application +bundles to the ``Applications`` folder on macOS. + +.. rst-class:: list-unstyled +.. rst-class:: mx-5 +.. rst-class:: mt-4 +.. rst-class:: mb-5 + +- |code| |ensp| Use **Spyder** to start writing your own analysis scripts right away, or to run one of our examples from this website. + + .. rst-class:: mt-3 +- |desktop| |ensp| With **System Info**, list the versions of all installed MNE-Python-related packages. + + .. rst-class:: mt-3 +- |terminal| |ensp| The **Prompt** drops you into a command line interface with a properly activated MNE-Python environment. + + +.. note:: + |hourglass| |ensp| Depending on your system, it may take a little while for these + applications to start, especially on the very first run – which may take + particularly long on Apple Silicon-based computers. Subsequent runs should + usually be much faster. + + +VS Code Setup +^^^^^^^^^^^^^ + +If you want to use MNE-Python with `Visual Studio Code`_, you need to tell the +VS Code Python extension where to find the respective Python executable. To do +so, simply start the **Prompt**. It will display several lines of +information, including a line that will read something like: + +.. code-block:: + + Using Python: /some/directory/mne-python_1.0.0_1/bin/python + +This path is what you need to enter in VS Code when selecting the Python +interpreter. + +.. note:: + This information is currently not displayed on the Windows platform. + + +.. raw:: html + + diff -Nru python-mne-0.23.4+dfsg/doc/install/install_python.rst python-mne-1.1.0+dfsg/doc/install/install_python.rst --- python-mne-0.23.4+dfsg/doc/install/install_python.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/install_python.rst 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ -.. include:: ../links.inc - -.. _install-python: - -Installing Python -================= - -MNE-Python requires Python and several Python packages. MNE-Python -version |version| requires Python version |min_python_version| or higher. We -recommend the `Anaconda`_ distribution of Python, which comes with more than -250 scientific packages pre-bundled and includes the ``conda`` command line -tool for installing new packages and managing different package sets -("environments") for different projects. - -To get started, follow the `installation instructions for Anaconda`_. -When you are done, if you type the following commands in a command shell, -you should see outputs similar to the following (assuming you installed -conda to ``/home/user/anaconda3``): - -.. collapse:: |linux| Linux - - .. code-block:: console - - $ conda --version && python --version - conda 4.9.2 - Python 3.7.7 :: Anaconda, Inc. - $ which python - /home/user/anaconda3/bin/python - $ which pip - /home/user/anaconda3/bin/pip - - -.. collapse:: |apple| macOS - - .. code-block:: console - - $ conda --version && python --version - conda 4.9.2 - Python 3.7.7 - $ which python - /Users/user/opt/anaconda3/bin/python - $ which pip - /Users/user/opt/anaconda3/bin/pip - - -.. collapse:: |windows| Windows - - Most of our instructions start with ``$``, which indicates - that the commands are designed to be run from a ``bash`` command shell. - - Windows command prompts do not expose the same command-line tools as - ``bash`` shells, so commands like ``which`` will not work. You can test - your installation in Windows ``cmd.exe`` shells with ``where`` instead: - - .. code-block:: doscon - - > where python - C:\Users\user\anaconda3\python.exe - > where pip - C:\Users\user\anaconda3\Scripts\pip.exe - -.. raw:: html - -
- -.. javascript below adapted from nilearn - -.. raw:: html - - - - -.. collapse:: |hand-paper| If you get an error or these look incorrect... - :class: danger - - .. rubric:: If you see something like: - - :: - - conda: command not found - - It means that your ``PATH`` variable (what the system uses to find - programs) is not set properly. In a correct installation, doing:: - - $ echo $PATH - ...:/home/user/anaconda3/bin:... - - Will show the Anaconda binary path (above) somewhere in the output - (probably at or near the beginning), but the ``command not found`` error - suggests that it is missing. - - On Linux or macOS, the installer should have put something - like the following in your ``~/.bashrc`` or ``~/.bash_profile`` (or your - ``.zprofile`` if you're using macOS Catalina or later, where the default - shell is ``zsh``): - - .. code-block:: bash - - # >>> conda initialize >>> - # !! Contents within this block are managed by 'conda init' !! - __conda_setup= ... - ... - # <<< conda initialize <<< - - If this is missing, it is possible that you are not on the same shell that - was used during the installation. You can verify which shell you are on by - using the command:: - - $ echo $SHELL - - If you do not find this line in the configuration file for the shell you - are using (bash, zsh, tcsh, etc.), try running:: - - conda init - - in your command shell. If your shell is not ``cmd.exe`` (Windows) or - ``bash`` (Linux, macOS) you will need to pass the name of the shell to the - ``conda init`` command. See ``conda init --help`` for more info and - supported shells. - - You can also consult the Anaconda documentation and search for - Anaconda install tips (`Stack Overflow`_ results are often helpful) - to fix these or other problems when ``conda`` does not work. diff -Nru python-mne-0.23.4+dfsg/doc/install/manual_install_python.rst python-mne-1.1.0+dfsg/doc/install/manual_install_python.rst --- python-mne-0.23.4+dfsg/doc/install/manual_install_python.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/manual_install_python.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,150 @@ +:orphan: + +.. include:: ../links.inc + +.. _install-python: + +Installing Python +^^^^^^^^^^^^^^^^^ + +MNE-Python requires Python and several Python packages. MNE-Python +version |version| requires Python version |min_python_version| or higher. We +recommend the `Anaconda`_ distribution of Python, which comes with more than +250 scientific packages pre-bundled and includes the ``conda`` command line +tool for installing new packages and managing different package sets +("environments") for different projects. + +To get started, follow the `installation instructions for Anaconda`_. +When you are done, if you type the following commands in a command shell, +you should see outputs similar to the following (assuming you installed +conda to ``/home/user/anaconda3``): + + +.. tab-set:: + :class: platform-selector-tabset + + .. tab-item:: Linux + + .. code-block:: console + + $ conda --version && python --version + conda 4.9.2 + Python 3.7.7 :: Anaconda, Inc. + $ which python + /home/user/anaconda3/bin/python + $ which pip + /home/user/anaconda3/bin/pip + + + .. tab-item:: macOS + + .. code-block:: console + + $ conda --version && python --version + conda 4.9.2 + Python 3.7.7 + $ which python + /Users/user/opt/anaconda3/bin/python + $ which pip + /Users/user/opt/anaconda3/bin/pip + + + .. tab-item:: Windows + + Most of our instructions start with ``$``, which indicates + that the commands are designed to be run from a ``bash`` command shell. + + Windows command prompts do not expose the same command-line tools as + ``bash`` shells, so commands like ``which`` will not work. You can test + your installation in Windows ``cmd.exe`` shells with ``where`` instead: + + .. code-block:: doscon + + > where python + C:\Users\user\anaconda3\python.exe + > where pip + C:\Users\user\anaconda3\Scripts\pip.exe + + +.. raw:: html + +
+ + +.. dropdown:: If you get an error... + :color: danger + :icon: alert-fill + + .. rubric:: If you see something like: + + :: + + conda: command not found + + It means that your ``PATH`` variable (what the system uses to find + programs) is not set properly. In a correct installation, doing:: + + $ echo $PATH + ...:/home/user/anaconda3/bin:... + + Will show the Anaconda binary path (above) somewhere in the output + (probably at or near the beginning), but the ``command not found`` error + suggests that it is missing. + + On Linux or macOS, the installer should have put something + like the following in your ``~/.bashrc`` or ``~/.bash_profile`` (or your + ``.zprofile`` if you're using macOS Catalina or later, where the default + shell is ``zsh``): + + .. code-block:: console + + # >>> conda initialize >>> + # !! Contents within this block are managed by 'conda init' !! + __conda_setup= ... + ... + # <<< conda initialize <<< + + If this is missing, it is possible that you are not on the same shell that + was used during the installation. You can verify which shell you are on by + using the command:: + + $ echo $SHELL + + If you do not find this line in the configuration file for the shell you + are using (bash, zsh, tcsh, etc.), try running:: + + conda init + + in your command shell. If your shell is not ``cmd.exe`` (Windows) or + ``bash`` (Linux, macOS) you will need to pass the name of the shell to the + ``conda init`` command. See ``conda init --help`` for more info and + supported shells. + + You can also consult the Anaconda documentation and search for + Anaconda install tips (`Stack Overflow`_ results are often helpful) + to fix these or other problems when ``conda`` does not work. + + +.. raw:: html + + diff -Nru python-mne-0.23.4+dfsg/doc/install/manual_install.rst python-mne-1.1.0+dfsg/doc/install/manual_install.rst --- python-mne-0.23.4+dfsg/doc/install/manual_install.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/manual_install.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,140 @@ +.. include:: ../links.inc + +.. _manual-install: +.. _standard-instructions: + +Install via :code:`pip` or :code:`conda` +======================================== + +.. hint:: + If you're unfamiliar with Python, we recommend using our :ref:`installers` + instead. + +MNE-Python requires Python version |min_python_version| or higher. If you +need to install Python, please see :ref:`install-python`. + +Installing MNE-Python with all dependencies +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +We suggest to install MNE-Python into its own ``conda`` environment. + +The dependency stack is large and may take a long time (several tens of +minutes) to resolve on some systems via the default ``conda`` solver. We +therefore highly recommend using `mamba `__ +instead, a ``conda`` replacement that is **much** faster. + +Run in your terminal: + +.. code-block:: console + + $ conda install --channel=conda-forge --name=base mamba + $ mamba create --override-channels --channel=conda-forge --name=mne mne + +This will create a new ``conda`` environment called ``mne`` (you can adjust +this by passing a different name via ``--name``) and install all +dependencies into it. + +If you need to convert structural MRI scans into models +of the scalp, inner/outer skull, and cortical surfaces, you will also need +:doc:`FreeSurfer `. + +Installing a minimal MNE-Python with core functionality only +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +If you only need MNE-Python's core functionality including 2D plotting (but +**without 3D visualization**), install via :code:`pip`: + +.. code-block:: console + + $ pip install mne + +or via :code:`conda`: + +.. code-block:: console + + $ conda create --strict-channel-priority --channel=conda-forge --name=mne mne-base + +This will create a new ``conda`` environment called ``mne`` (you can adjust +this by passing a different name via ``--name``). + +Installing a minimal MNE-Python with EEGLAB I/O support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +If you plan to use MNE-Python's functions that require **HDF5 I/O** (this +includes :func:`mne.io.read_raw_eeglab`, :meth:`mne.SourceMorph.save`, and +others), you should run via :code:`pip`: + +.. code-block:: console + + $ pip install mne[hdf5] + +or via :code:`conda` + +.. code-block:: console + + $ conda create --strict-channel-priority --channel=conda-forge --name=mne mne-base h5io h5py pymatreader + +This will create a new ``conda`` environment called ``mne`` (you can adjust +this by passing a different name via ``--name``). + +Installing MNE-Python for other scenarios +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The :ref:`advanced_setup` page has additional +tips and tricks for special situations (servers, notebooks, CUDA, installing +the development version, etc). The :ref:`contributing` has additional +installation instructions for (future) contributors to MNE-Python (e.g, extra +dependencies for running our tests and building our documentation). + +Python IDEs +=========== + +Most users find it convenient to write and run their code in an `Integrated +Development Environment`_ (IDE). Some popular choices for scientific +Python development are: + +- `Visual Studio Code`_ (often shortened to "VS Code" or "vscode") is a + development-focused text editor that supports many programming languages in + addition to Python, includes an integrated terminal console, and has a rich + ecosystem of packages to extend its capabilities. Installing + `Microsoft's Python Extension + `__ is + enough to get most Python users up and running. VS Code is free and + open-source. +- `Spyder`_ is a free and open-source IDE developed by and for scientists who + use Python. It is included by default in the ``base`` environment when you + install Anaconda, and can be started from a terminal with the command + ``spyder`` (or on Windows or macOS, launched from the Anaconda Navigator GUI). + It can also be installed with `dedicated installers `_. + To avoid dependency conflicts with Spyder, you should install ``mne`` in a + separate environment, like explained in the earlier sections. Then, set + Spyder to use the ``mne`` environment as its default interpreter by opening + Spyder and navigating to + :samp:`Tools > Preferences > Python Interpreter > Use the following interpreter`. + There, paste the output of the following terminal commands + + .. code-block:: console + + $ conda activate mne + $ python -c "import sys; print(sys.executable)" + + It should be something like ``C:\Users\user\anaconda3\envs\mne\python.exe`` + (Windows) or ``/Users/user/opt/anaconda3/envs/mne/bin/python`` (macOS). + + If the Spyder console can not start because ``spyder-kernels`` is missing, + install the required version in the ``mne`` environment with the following + commands in the terminal, where you replace ``...`` with the exact version of + ``spyder-kernels`` that Spyder tells you it requires. + + .. code-block:: console + + $ conda activate mne + $ conda install --strict-channel-priority --channel=conda-forge spyder-kernels=... + + Refer to the `Spyder documentation `_ + for more information about ``spyder-kernels`` and the version matching. + + If the Spyder graphic backend is not set to ``inline`` but to e.g. ``Qt5``, + ``PyQt5`` (``pip``) or ``pyqt`` (``conda``) must be installed in the ``mne`` + environment. + +- `PyCharm`_ is an IDE specifically for Python development that provides an + all-in-one installation (no extension packages needed). PyCharm comes in a + free "community" edition and a paid "professional" edition, and is + closed-source. diff -Nru python-mne-0.23.4+dfsg/doc/install/mne_python.rst python-mne-1.1.0+dfsg/doc/install/mne_python.rst --- python-mne-0.23.4+dfsg/doc/install/mne_python.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/mne_python.rst 1970-01-01 00:00:00.000000000 +0000 @@ -1,263 +0,0 @@ -.. include:: ../links.inc - -.. _standard_instructions: - -Installing MNE-Python -===================== - -.. highlight:: console - -Once you have Python/Anaconda installed, you have a few choices for how to -install MNE-Python. - -2D plotting and sensor-level analysis -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -If you only need 2D plotting capabilities with MNE-Python (i.e., most EEG/ERP -or other sensor-level analyses), you can install all you need by running -``pip install mne`` in a terminal window (on Windows, use the "Anaconda Prompt" -from the Start menu, or the "CMD.exe prompt" from within the Anaconda Navigator -GUI). This will install MNE-Python into the "base" conda environment, which -should be active by default and should already have the necessary dependencies -(``numpy``, ``scipy``, and ``matplotlib``). - -A second option is to install MNE-Python into its own virtual environment -(instead of installing into conda's "base" environment). This can be done via:: - - $ conda create --name=new_environment_name python=3 - $ conda activate new_environment_name - $ pip install mne - -This approach is a good choice if you want to keep a separate virtual -environment for each project. This helps with reproducibility, since each -project-specific environment will have a record of which versions of the -various software packages are installed in it (accessible with ``conda list``). - -3D plotting and source analysis -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -If you need MNE-Python's 3D rendering capabilities (e.g., plotting estimated -source activity on a cortical surface) it is best to install -MNE-Python into its own virtual environment, so that the extra dependencies -needed for 3D plotting stay in sync (i.e., they only get updated to versions -that are compatible with MNE-Python). See the detailed instructions below for -your operating system. - -.. collapse:: |linux| Linux - - Install MNE-Python from conda-forge:: - - $ conda create --name=mne --channel=conda-forge mne - - .. collapse:: |hand-paper| If you get errors building mayavi... - :class: danger - - Installing `mayavi`_ needs OpenGL support. On debian-like systems this - means installing ``libopengl0``, i.e., ``sudo apt install libopengl0``. - -.. collapse:: |apple| macOS - - Install MNE-Python into a new environment (here called ``mne``, but you can - name the environment whatever you want):: - - $ conda create --name=mne --channel=conda-forge mne - - If you like using Jupyter notebooks, you should also update the "base" - conda environment to include the ``nb_conda_kernels`` package; this will - make it easier to use MNE-Python in Jupyter Notebooks launched from the - Anaconda GUI:: - - $ conda install --name=base nb_conda_kernels - - -.. collapse:: |windows| Windows - - Open an Anaconda command prompt, and run: - - .. code-block:: doscon - - > conda create --name=mne --channel=conda-forge mne - - If you like using Jupyter notebooks, you should also update the "base" - conda environment to include the ``nb_conda_kernels`` package; this will - make it easier to use MNE-Python in Jupyter Notebooks launched from the - Anaconda GUI: - - .. code-block:: doscon - - > conda install --name base nb_conda_kernels - -.. raw:: html - -
- -.. javascript below adapted from nilearn - -.. raw:: html - - - -Installing to a headless server -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. collapse:: |server| If you are installing on a headless server... - :class: danger - - With `pyvista`_: - Download the `server environment file`_ and use it to create the conda - environment:: - - $ curl --remote-name https://raw.githubusercontent.com/mne-tools/mne-python/main/server_environment.yml - $ conda create --name=mne --file=server_environment.yml - - With `mayavi`_: - Installing `mayavi`_ requires a running `X server`_. If you are installing - MNE-Python into a computer with no display connected to it, you can try - downloading the :file:`environment.yml` file and removing `mayavi`_ from it - before running :samp:`conda create --name mne --file environment.yml`, then - activating the new environment, and then installing `mayavi`_ using `xvfb`_ - (e.g., :samp:`xvfb-run pip install mayavi`). Be sure to read Mayavi's - instructions on `off-screen rendering`_ and `rendering with a virtual - framebuffer`_. - - Note: if :samp:`xvfb` is not already installed on your server, you will - need administrator privileges to install it. - - -Testing your installation -^^^^^^^^^^^^^^^^^^^^^^^^^ - -To make sure MNE-Python installed itself and its dependencies correctly, -type the following command in a terminal:: - - $ python -c "import mne; mne.sys_info()" - -This should display some system information along with the versions of -MNE-Python and its dependencies. Typical output looks like this:: - - Platform: Linux-5.0.0-1031-gcp-x86_64-with-glibc2.2.5 - Python: 3.8.1 (default, Dec 20 2019, 10:06:11) [GCC 7.4.0] - Executable: /home/travis/virtualenv/python3.8.1/bin/python - CPU: x86_64: 2 cores - Memory: 7.8 GB - - mne: 0.21.dev0 - numpy: 1.19.0.dev0+8dfaa4a {blas=openblas, lapack=openblas} - scipy: 1.5.0.dev0+f614064 - matplotlib: 3.2.1 {backend=Qt5Agg} - - sklearn: 0.22.2.post1 - numba: 0.49.0 - nibabel: 3.1.0 - cupy: Not found - pandas: 1.0.3 - dipy: 1.1.1 - mayavi: 4.7.2.dev0 - pyvista: 0.25.2 {pyvistaqt=0.1.0} - vtk: 9.0.0 - PyQt5: 5.14.1 - - -.. collapse:: |hand-paper| If you get an error... - :class: danger - - .. rubric:: If you see an error like: - - :: - - Traceback (most recent call last): - File "", line 1, in - ModuleNotFoundError: No module named 'mne' - - This suggests that your environment containing MNE-Python is not active. - If you followed the setup for 3D plotting/source analysis (i.e., you - installed to a new ``mne`` environment instead of the ``base`` environment) - try running ``conda activate mne`` first, and try again. If this works, - you might want to set your terminal to automatically activate the - ``mne`` environment each time you open a terminal:: - - $ echo conda activate mne >> ~/.bashrc # for bash shells - $ echo conda activate mne >> ~/.zprofile # for zsh shells - -If something else went wrong during installation and you can't figure it out, -check out the :doc:`advanced` page to see if your problem is discussed there. -If not, the `MNE Forum`_ is a good resources for troubleshooting installation -problems. - - -Python IDEs -^^^^^^^^^^^ - -Most users find it convenient to write and run their code in an `Integrated -Development Environment`_ (IDE). Some popular choices for scientific -Python development are: - -- `Spyder`_ is a free and open-source IDE developed by and for scientists who - use Python. It is included by default in the ``base`` environment when you - install Anaconda, and can be started from a terminal with the command - ``spyder`` (or on Windows or macOS, launched from the Anaconda Navigator GUI). - If you use Spyder, you should *not* install it into the ``mne`` environment; - instead, launch Spyder from the ``base`` environment and set it to use the - ``mne`` environment automatically, by opening Spyder and navigating to - :samp:`Tools > Preferences > Python Interpreter > Use the following interpreter`. - There, paste the output of the following terminal commands:: - - $ conda activate mne - $ python -c "import sys; print(sys.executable)" - - It should be something like ``C:\Users\user\anaconda3\envs\mne\python.exe`` - (Windows) or ``/Users/user/opt/anaconda3/envs/mne/bin/python`` (macOS). -- `Visual Studio Code`_ (often shortened to "VS Code" or "vscode") is a - development-focused text editor that supports many programming languages in - addition to Python, includes an integrated terminal console, and has a rich - ecosystem of packages to extend its capabilities. Installing - `Microsoft's Python Extension - `__ is - enough to get most Python users up and running. VS Code is free and - open-source. -- `Atom`_ is a text editor similar to vscode, with a package ecosystem that - includes a `Python IDE package `__ as - well as `several `__ - `packages `__ - `for `__ - `integrated `__ - `terminals `__. Atom is free and open-source. -- `SublimeText`_ is a general-purpose text editor that is fast and lightweight, - and also has a rich package ecosystem. There is a package called `Terminus`_ - that provides an integrated terminal console, and a (confusingly named) - package called "anaconda" - (`found here `__) that provides - many Python-specific features. SublimeText is free (closed-source shareware). -- `PyCharm`_ is an IDE specifically for Python development that provides an - all-in-one installation (no extension packages needed). PyCharm comes in a - free "community" edition and a paid "professional" edition, and is - closed-source. - -.. highlight:: python - -.. LINKS - -.. _environment file: https://raw.githubusercontent.com/mne-tools/mne-python/main/environment.yml -.. _server environment file: https://raw.githubusercontent.com/mne-tools/mne-python/main/server_environment.yml -.. _`mayavi`: https://docs.enthought.com/mayavi/mayavi/ -.. _`pyvista`: https://docs.pyvista.org/ -.. _`X server`: https://en.wikipedia.org/wiki/X_Window_System -.. _`xvfb`: https://en.wikipedia.org/wiki/Xvfb -.. _`off-screen rendering`: https://docs.enthought.com/mayavi/mayavi/tips.html#off-screen-rendering -.. _`rendering with a virtual framebuffer`: https://docs.enthought.com/mayavi/mayavi/tips.html#rendering-using-the-virtual-framebuffer -.. _`integrated development environment`: https://en.wikipedia.org/wiki/Integrated_development_environment -.. _`spyder`: https://www.spyder-ide.org/ -.. _`visual studio code`: https://code.visualstudio.com/ -.. _`sublimetext`: https://www.sublimetext.com/ -.. _`terminus`: https://packagecontrol.io/packages/Terminus -.. _`pycharm`: https://www.jetbrains.com/pycharm/ -.. _`atom`: https://atom.io/ diff -Nru python-mne-0.23.4+dfsg/doc/install/mne_tools_suite.rst python-mne-1.1.0+dfsg/doc/install/mne_tools_suite.rst --- python-mne-0.23.4+dfsg/doc/install/mne_tools_suite.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/mne_tools_suite.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,114 @@ +.. include:: ../links.inc + +Overview of the MNE tools suite +=============================== + +MNE-Python is an open-source Python module for processing, analysis, and +visualization of functional neuroimaging data (EEG, MEG, sEEG, ECoG, and +fNIRS). There are several related or interoperable software packages that you +may also want to install, depending on your analysis needs. + +Related software +^^^^^^^^^^^^^^^^ + +- MNE-C was the initial stage of this project, + providing a set of interrelated command-line and GUI programs focused on + computing cortically constrained Minimum Norm Estimates from MEG and EEG + data. These tools were written in C by Matti Hämäläinen, and are + documented `here `_. See :ref:`install_mne_c` for installation + instructions. + +- MNE-Python reimplements the functionality of MNE-C, extends considerably the + analysis and visualization capabilities, and adds support for additional data + types like functional near-infrared spectroscopy (fNIRS). MNE-Python is + collaboratively developed and has more than 200 contributors. + +- :ref:`MNE MATLAB ` provides a MATLAB interface to the .fif file + format and other MNE data structures, and provides example MATLAB + implementations of some of the core analysis functionality of MNE-C. It is + distributed alongside MNE-C, and can also be downloaded from the `MNE-MATLAB + git repository`_. + +- :ref:`MNE-CPP ` provides core MNE functionality implemented in + C++ and is primarily intended for embedded and real-time applications. + +There is also a growing ecosystem of other Python packages that work alongside +MNE-Python, including packages for: + +.. note:: Something missing? + :class: sidebar + + If you know of a package that is related but not listed here, feel free to + :ref:`make a pull request ` to add it to this list. + +- a graphical user interface for MNE-Python (`MNELAB`_) +- easily importing MEG data from the Human Connectome Project for + use with MNE-Python (`MNE-HCP`_) +- managing MNE projects so that they comply with the `Brain + Imaging Data Structure`_ specification (`MNE-BIDS`_) +- automatic bad channel detection and interpolation (`autoreject`_) +- convolutional sparse dictionary learning and waveform shape estimation + (`alphaCSC`_) +- independent component analysis (ICA) with good performance on real data + (`PICARD`_) +- phase-amplitude coupling (`pactools`_) +- representational similarity analysis (`rsa`_) +- microstate analysis (`microstate`_) +- connectivity analysis using dynamic imaging of coherent sources (DICS) + (`conpy`_) +- general-purpose statistical analysis of M/EEG data (`eelbrain`_) +- post-hoc modification of linear models (`posthoc`_) +- a python implementation of the Preprocessing Pipeline (PREP) for EEG data + (`pyprep`_) +- automatic multi-dipole localization and uncertainty quantification with + the Bayesian algorithm SESAME (`sesameeg`_) +- GLM and group level analysis of near-infrared spectroscopy data (`mne-nirs`_) +- M/EEG inverse solutions using artificial neural networks (`ESINet`_) +- All-Resolutions Inference (ARI) for statistically valid circular inference + and effect localization (`MNE-ARI`_) + + +What should I install? +^^^^^^^^^^^^^^^^^^^^^^ + +If you intend only to perform ERP, ERF, or other sensor-level analyses, +:ref:`MNE-Python ` is all you need. If you prefer to +work with +shell scripts and the Unix command line, or prefer MATLAB over Python, probably +all you need is :doc:`MNE-C ` — the MNE MATLAB toolbox is distributed +with it — although note that the C tools and the MATLAB toolbox are less +actively developed than the MNE-Python module, and hence are considerably less +feature-complete. + +If you want to transform sensor recordings into estimates of localized brain +activity, you will need MNE-Python, plus :doc:`FreeSurfer ` to +convert structural MRI scans into models of the scalp, inner/outer skull, and +cortical surfaces (specifically, for command-line functions +:ref:`mne flash_bem`, :ref:`mne watershed_bem`, and +:ref:`mne make_scalp_surfaces`). + + +Getting help +^^^^^^^^^^^^ + +Help with installation is available through the `MNE Forum`_. See the +:ref:`help` page for more information. + + +.. LINKS: + +.. _MNELAB: https://github.com/cbrnr/mnelab +.. _autoreject: https://autoreject.github.io/ +.. _alphaCSC: https://alphacsc.github.io/ +.. _picard: https://pierreablin.github.io/picard/ +.. _pactools: https://pactools.github.io/ +.. _rsa: https://github.com/wmvanvliet/mne-rsa +.. _microstate: https://github.com/wmvanvliet/mne_microstates +.. _conpy: https://aaltoimaginglanguage.github.io/conpy/ +.. _eelbrain: https://eelbrain.readthedocs.io/en/stable/index.html +.. _posthoc: https://users.aalto.fi/~vanvlm1/posthoc/python/ +.. _pyprep: https://github.com/sappelhoff/pyprep +.. _sesameeg: https://pybees.github.io/sesameeg +.. _mne-nirs: https://github.com/mne-tools/mne-nirs +.. _ESINet: https://github.com/LukeTheHecker/ESINet +.. _MNE-ARI: https://github.com/john-veillette/mne_ari diff -Nru python-mne-0.23.4+dfsg/doc/install/pre_install.rst python-mne-1.1.0+dfsg/doc/install/pre_install.rst --- python-mne-0.23.4+dfsg/doc/install/pre_install.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/pre_install.rst 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -.. include:: ../links.inc - -Overview of the MNE tools suite -=============================== - -MNE-Python is an open-source Python module for processing, analysis, and -visualization of functional neuroimaging data (EEG, MEG, sEEG, ECoG, and -fNIRS). There are several related or interoperable software packages that you -may also want to install, depending on your analysis needs. - -Related software -^^^^^^^^^^^^^^^^ - -- MNE-C was the initial stage of this project, - providing a set of interrelated command-line and GUI programs focused on - computing cortically constrained Minimum Norm Estimates from MEG and EEG - data. These tools were written in C by Matti Hämäläinen, and are - documented `here `_. See :ref:`install_mne_c` for installation - instructions. - -- MNE-Python reimplements the functionality of MNE-C, extends considerably the - analysis and visualization capabilities, and adds support for additional data - types like functional near-infrared spectroscopy (fNIRS). MNE-Python is - collaboratively developed and has more than 200 contributors. - -- :ref:`MNE MATLAB ` provides a MATLAB interface to the .fif file - format and other MNE data structures, and provides example MATLAB - implementations of some of the core analysis functionality of MNE-C. It is - distributed alongside MNE-C, and can also be downloaded from the `MNE-MATLAB - git repository`_. - -- :ref:`MNE-CPP ` provides core MNE functionality implemented in - C++ and is primarily intended for embedded and real-time applications. - -There is also a growing ecosystem of other Python packages that work alongside -MNE-Python, including packages for: - -.. sidebar:: Something missing? - - If you know of a package that is related but not listed here, feel free to - :ref:`make a pull request ` to add it to this list. - -- a graphical user interface for MNE-Python (`MNELAB`_) -- easily importing MEG data from the Human Connectome Project for - use with MNE-Python (`MNE-HCP`_) -- managing MNE projects so that they comply with the `Brain - Imaging Data Structure`_ specification (`MNE-BIDS`_) -- automatic bad channel detection and interpolation (`autoreject`_) -- convolutional sparse dictionary learning and waveform shape estimation - (`alphaCSC`_) -- independent component analysis (ICA) with good performance on real data - (`PICARD`_) -- phase-amplitude coupling (`pactools`_) -- representational similarity analysis (`rsa`_) -- microstate analysis (`microstate`_) -- connectivity analysis using dynamic imaging of coherent sources (DICS) - (`conpy`_) -- general-purpose statistical analysis of M/EEG data (`eelbrain`_) -- post-hoc modification of linear models (`posthoc`_) -- a python implementation of the Preprocessing Pipeline (PREP) for EEG data - (`pyprep`_) -- automatic multi-dipole localization and uncertainty quantification with - the Bayesian algorithm SESAME (`sesameeg`_) -- GLM and group level analysis of near-infrared spectroscopy data (`mne-nirs`_) - - -What should I install? -^^^^^^^^^^^^^^^^^^^^^^ - -If you intend only to perform ERP, ERF, or other sensor-level analyses, -:doc:`MNE-Python ` is all you need. If you prefer to work with -shell scripts and the Unix command line, or prefer MATLAB over Python, probably -all you need is :doc:`MNE-C ` — the MNE MATLAB toolbox is distributed -with it — although note that the C tools and the MATLAB toolbox are less -actively developed than the MNE-Python module, and hence are considerably less -feature-complete. - -If you want to transform sensor recordings into estimates of localized brain -activity, you will need MNE-Python, plus :doc:`FreeSurfer ` to -convert structural MRI scans into models of the scalp, inner/outer skull, and -cortical surfaces (specifically, for command-line functions -:ref:`mne flash_bem`, :ref:`mne watershed_bem`, and -:ref:`mne make_scalp_surfaces`). - - -Getting help -^^^^^^^^^^^^ - -Help with installation is available through the `MNE Forum`_. See the -:ref:`help` page for more information. - - -.. LINKS: - -.. _MNELAB: https://github.com/cbrnr/mnelab -.. _autoreject: https://autoreject.github.io/ -.. _alphaCSC: https://alphacsc.github.io/ -.. _picard: https://pierreablin.github.io/picard/ -.. _pactools: https://pactools.github.io/ -.. _rsa: https://github.com/wmvanvliet/rsa -.. _microstate: https://github.com/wmvanvliet/mne_microstates -.. _conpy: https://aaltoimaginglanguage.github.io/conpy/ -.. _eelbrain: https://eelbrain.readthedocs.io/en/stable/index.html -.. _posthoc: https://users.aalto.fi/~vanvlm1/posthoc/python/ -.. _pyprep: https://github.com/sappelhoff/pyprep -.. _sesameeg: https://pybees.github.io/sesameeg -.. _mne-nirs: https://github.com/mne-tools/mne-nirs diff -Nru python-mne-0.23.4+dfsg/doc/install/updating.rst python-mne-1.1.0+dfsg/doc/install/updating.rst --- python-mne-0.23.4+dfsg/doc/install/updating.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/install/updating.rst 2022-08-03 15:48:14.000000000 +0000 @@ -4,6 +4,14 @@ If you want to update MNE-Python to a newer version, there are a few different options, depending on how you originally installed it. +.. hint:: + To update via the :ref:`MNE-Python installers `, simply + download and run the latest installer for your platform. MNE-Python will be + installed in parallel to your existing installation, which you may uninstall + or delete if you don't need it anymore. + +If you're not using the MNE-Python installers, keep reading. + .. warning:: Before performing package upgrade operations, check to make sure that the @@ -64,7 +72,10 @@ Upgrading to the development version ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. warning:: In between releases, function and class APIs can change without +.. warning:: + :class: sidebar + + In between releases, function and class APIs can change without warning. Sometimes, new features or bugfixes become available that are important to your diff -Nru python-mne-0.23.4+dfsg/doc/inverse.rst python-mne-1.1.0+dfsg/doc/inverse.rst --- python-mne-0.23.4+dfsg/doc/inverse.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/inverse.rst 2022-08-03 15:48:14.000000000 +0000 @@ -72,7 +72,6 @@ apply_dics_csd apply_dics_epochs rap_music - tf_dics make_lcmv_resolution_matrix .. currentmodule:: mne diff -Nru python-mne-0.23.4+dfsg/doc/links.inc python-mne-1.1.0+dfsg/doc/links.inc --- python-mne-0.23.4+dfsg/doc/links.inc 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/links.inc 2022-08-03 15:48:14.000000000 +0000 @@ -11,18 +11,22 @@ .. mne -.. _`mne-python`: http://mne-tools.github.io/mne-python-intro -.. _`mne-python GitHub`: https://github.com/mne-tools/mne-python -.. _`mne-python sample dataset`: https://s3.amazonaws.com/mne-python/datasets/MNE-sample-data-processed.tar.gz -.. _`mne command line utilities`: http://www.nmr.mgh.harvard.edu/martinos/userInfo/data/MNE_register/ +.. _`MNE-Python`: http://mne.tools/mne-python-intro +.. _`MNE-Python GitHub`: https://github.com/mne-tools/mne-python .. _`mne-scripts`: https://github.com/mne-tools/mne-scripts/ .. _`MNE-C manual`: https://mne.tools/mne-c-manual/MNE-manual-2.7.3.pdf .. _`GitHub issues page`: https://github.com/mne-tools/mne-python/issues/ .. _`MNE Forum`: https://mne.discourse.group -.. _`MNE-BIDS`: https://mne-tools.github.io/mne-bids/ -.. _`MNE-HCP`: http://mne-tools.github.io/mne-hcp/ -.. _`MNE-Realtime`: https://github.com/mne-tools/mne-realtime +.. _`MNE-BIDS`: https://mne.tools/mne-bids +.. _`MNE-BIDS-Pipeline`: https://mne.tools/mne-bids-pipeline +.. _`MNE-HCP`: http://mne.tools/mne-hcp +.. _`MNE-Realtime`: https://mne.tools/mne-realtime .. _`MNE-MATLAB git repository`: https://github.com/mne-tools/mne-matlab +.. _`MNE-Docker`: https://github.com/mne-tools/mne-docker +.. _EOSS2: https://chanzuckerberg.com/eoss/proposals/improving-usability-of-core-neuroscience-analysis-tools-with-mne-python +.. _EOSS4: https://chanzuckerberg.com/eoss/proposals/building-pediatric-and-clinical-data-pipelines-for-mne-python/ +.. _`code of conduct`: https://github.com/mne-tools/.github/blob/main/CODE_OF_CONDUCT.md + .. TUTORIAL LINKS @@ -44,7 +48,6 @@ .. _numpy: http://www.numpy.org .. _`numpy github`: http://github.com/numpy/numpy -.. _`numpy style`: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt .. _`numpy mailing list`: http://mail.scipy.org/mailman/listinfo/numpy-discussion @@ -54,6 +57,12 @@ .. _`scipy github`: http://github.com/scipy/scipy .. _`scipy mailing list`: http://mail.scipy.org/mailman/listinfo/scipy-dev +.. freesurfer + +.. _freesurfer: https://surfer.nmr.mgh.harvard.edu/ +.. _`freesufer github`: https://github.com/freesurfer/freesurfer +.. _`freesurfer mailing list`: https://surfer.nmr.mgh.harvard.edu/fswiki/FreeSurferSupport + .. nipy @@ -90,19 +99,6 @@ .. _`h5py mailing list`: https://groups.google.com/forum/#!forum/h5py -.. marsbar - -.. _marsbar: http://marsbar.sourceforge.net -.. _`marsbar github`: http://github.com/matthew-brett/marsbar -.. _`MarsBaR mailing list`: https://lists.sourceforge.net/lists/listinfo/marsbar-users - - -.. Astropy - -.. _Astropy: http://www.astropy.org -.. _`Astropy GitHub`: http://github.com/astropy/astropy - - .. Pytest .. _pytest: https://docs.pytest.org/ @@ -118,31 +114,28 @@ .. _pymatreader: https://gitlab.com/obob/pymatreader +.. h5io + +.. _h5io: https://github.com/h5io/h5io + + .. CuPy .. _CuPy: https://cupy.chainer.org/ +.. Dask + +.. _Dask: https://dask.org/ .. git stuff .. _git: https://git-scm.com/ .. _github: https://github.com .. _GitHub Help: https://help.github.com -.. _msysgit: http://code.google.com/p/msysgit/downloads/list -.. _git-osx-installer: http://code.google.com/p/git-osx-installer/downloads/list -.. _subversion: http://subversion.tigris.org/ -.. _git cheat sheet: http://github.com/guides/git-cheat-sheet -.. _pro git book: http://progit.org/ -.. _git svn crash course: http://git-scm.com/course/svn.html -.. _learn.github: http://learn.github.com/ -.. _network graph visualizer: https://github.com/blog/39-say-hello-to-the-network-graph-visualizer -.. _git user manual: https://schacon.github.io/git/user-manual.html -.. _git tutorial: https://schacon.github.io/git/gittutorial.html -.. _git community book: http://book.git-scm.com/ -.. _git ready: http://www.gitready.com/ -.. _git casts: http://www.gitcasts.com/ -.. _git magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html -.. _git concepts: http://www.eecs.harvard.edu/~cduan/technical/git/ +.. _GitHub learning lab: https://lab.github.com/ +.. _pro git book: https://git-scm.com/book/ +.. _git bash: https://gitforwindows.org/ +.. _git for Windows: https://gitforwindows.org/ .. _git clone: http://schacon.github.com/git/git-clone.html .. _git checkout: https://schacon.github.io/git/git-checkout.html .. _git commit: https://schacon.github.io/git/git-commit.html @@ -156,24 +149,10 @@ .. _git remote: https://schacon.github.io/git/git-remote.html .. _git rebase: https://schacon.github.io/git/git-rebase.html .. _git config: https://schacon.github.io/git/git-config.html -.. _git staging area: http://www.gitready.com/beginner/2009/01/18/the-staging-area.html -.. _tangled working copy problem: http://tomayko.com/writings/the-thing-about-git -.. _git management: http://kerneltrap.org/Linux/Git_Management -.. _linux git workflow: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html -.. _git parable: http://tom.preston-werner.com/2009/05/19/the-git-parable.html -.. _git foundation: http://matthew-brett.github.io/pydagogue/foundation.html -.. _deleting master on github: http://matthew-brett.github.io/pydagogue/gh_delete_master.html -.. _rebase without tears: http://matthew-brett.github.io/pydagogue/rebase_without_tears.html -.. _resolving a merge: https://schacon.github.io/git/user-manual.html#resolving-a-merge -.. _ipython git workflow: https://web.archive.org/web/*/http://mail.scipy.org/pipermail/ipython-dev/2010-October/006746.html -.. _why the -a flag?: http://www.gitready.com/beginner/2009/01/18/the-staging-area.html -.. _Fernando's git page: http://www.fperez.org/py4science/git.html .. other stuff .. _python: http://www.python.org -.. _travis: https://travis-ci.org/ -.. _linterflake8: https://atom.io/packages/linter-flake8 .. _Brain Imaging Data Structure: https://bids.neuroimaging.io/ .. python packages @@ -185,25 +164,28 @@ .. _nitime: http://nipy.org/nitime/ .. _joblib: https://pypi.python.org/pypi/joblib .. _scikit-learn: https://scikit-learn.org/stable/ -.. _pysurfer: https://pysurfer.github.io/ .. _pyDICOM: https://pypi.python.org/pypi/pydicom/ .. _matplotlib: https://matplotlib.org/ -.. _sphinx: http://sphinx-doc.org/ -.. _pandas: http://pandas.pydata.org/ +.. _sphinx: https://www.sphinx-doc.org/ +.. _pandas: https://pandas.pydata.org/ .. _PIL: https://pypi.python.org/pypi/PIL +.. _tqdm: https://tqdm.github.io/ +.. _pooch: https://www.fatiando.org/pooch/latest/ .. python editors -.. _atom: https://atom.io/ .. _Spyder: https://www.spyder-ide.org/ -.. _anaconda: https://www.anaconda.com/distribution/ +.. _`integrated development environment`: https://en.wikipedia.org/wiki/Integrated_development_environment +.. _`spyder`: https://www.spyder-ide.org/ +.. _`visual studio code`: https://code.visualstudio.com/ +.. _`pycharm`: https://www.jetbrains.com/pycharm/ + +.. _anaconda: https://www.anaconda.com/products/individual .. _miniconda: https://conda.io/en/latest/miniconda.html .. _miniforge: https://github.com/conda-forge/miniforge .. _installation instructions for Anaconda: http://docs.continuum.io/anaconda/install .. _installation instructions for Miniconda: https://conda.io/projects/conda/en/latest/user-guide/install/index.html .. _Anaconda troubleshooting guide: http://conda.pydata.org/docs/troubleshooting.html -.. _EPD: https://www.enthought.com/products/epd/ -.. _sublime text: http://www.sublimetext.com/ .. installation links @@ -211,9 +193,9 @@ .. _NVIDIA CUDA GPU processing: https://developer.nvidia.com/cuda-zone .. _NVIDIA proprietary drivers: https://www.geforce.com/drivers -.. _Sphinx documentation: http://sphinx-doc.org/rest.html -.. _sphinx gallery documentation: https://sphinx-gallery.github.io -.. _NumPy docstring standard: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt +.. _Sphinx documentation: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html +.. _sphinx-gallery: https://sphinx-gallery.github.io +.. _NumPy docstring style guidelines: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard .. _Stack Overflow: https://stackoverflow.com/ .. vim: ft=rst diff -Nru python-mne-0.23.4+dfsg/doc/logging.rst python-mne-1.1.0+dfsg/doc/logging.rst --- python-mne-0.23.4+dfsg/doc/logging.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/logging.rst 2022-08-03 15:48:14.000000000 +0000 @@ -15,6 +15,7 @@ set_config set_cache_dir sys_info + use_log_level verbose :py:mod:`mne.utils`: diff -Nru python-mne-0.23.4+dfsg/doc/Makefile python-mne-1.1.0+dfsg/doc/Makefile --- python-mne-0.23.4+dfsg/doc/Makefile 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/Makefile 2022-08-03 15:48:14.000000000 +0000 @@ -80,7 +80,7 @@ @echo "Build finished. The HTML pages are in _build/html_stable." html_dev-front: - @PATTERN="\(plot_mne_dspm_source_localization.py\|plot_receptive_field.py\|plot_mne_inverse_label_connectivity.py\|plot_sensors_decoding.py\|plot_stats_cluster_spatio_temporal.py\|plot_20_visualize_evoked.py\)" make html_dev-pattern; + @PATTERN="\(30_mne_dspm_loreta.py\|50_decoding.py\|30_strf.py\|20_cluster_1samp_spatiotemporal.py\|20_visualize_evoked.py\)" make html_dev-pattern; dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml diff -Nru python-mne-0.23.4+dfsg/doc/mri.rst python-mne-1.1.0+dfsg/doc/mri.rst --- python-mne-0.23.4+dfsg/doc/mri.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/mri.rst 2022-08-03 15:48:14.000000000 +0000 @@ -15,10 +15,24 @@ :toctree: generated/ coreg.get_mni_fiducials + coreg.estimate_head_mri_t + io.read_fiducials + io.write_fiducials + get_montage_volume_labels gui.coregistration - gui.fiducials + gui.locate_ieeg create_default_subject + head_to_mni + head_to_mri + read_freesurfer_lut + read_lta + read_talxfm scale_mri scale_bem scale_labels scale_source_space + transforms.apply_volume_registration + transforms.compute_volume_registration + vertex_to_mni + warp_montage_volume + coreg.Coregistration diff -Nru python-mne-0.23.4+dfsg/doc/overview/cite.rst python-mne-1.1.0+dfsg/doc/overview/cite.rst --- python-mne-0.23.4+dfsg/doc/overview/cite.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/cite.rst 2022-08-03 15:48:14.000000000 +0000 @@ -13,8 +13,9 @@ .. footbibliography:: -.. collapse:: |quote-left| BibTeX for MNE-Python - :class: info +.. dropdown:: BibTeX for MNE-Python + :color: info + :icon: typography .. include:: ../references.bib :code: bibtex @@ -31,8 +32,9 @@ .. footbibliography:: -.. collapse:: |quote-left| BibTeX for inverse algorithms / MNE-C - :class: info +.. dropdown:: BibTeX for inverse algorithms / MNE-C + :color: info + :icon: typography .. include:: ../references.bib :code: bibtex diff -Nru python-mne-0.23.4+dfsg/doc/overview/cookbook.rst python-mne-1.1.0+dfsg/doc/overview/cookbook.rst --- python-mne-0.23.4+dfsg/doc/overview/cookbook.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/cookbook.rst 2022-08-03 15:48:14.000000000 +0000 @@ -87,7 +87,7 @@ distributions generated by the sources in the brain have spatial distributions sufficiently different from those generated by external noise sources. Furthermore, it is implicitly assumed that the linear -space spanned by the significant external noise patters has a low +space spanned by the significant external noise patterns has a low dimension. SSP-based rejection is often done using the @@ -314,7 +314,7 @@ digitization data are employed. The corregistration is stored in ``-trans.fif`` file. If is present, -you can follow :ref:`plot_source_alignment` to validate its correctness. +you can follow :ref:`tut-source-alignment` to validate its correctness. If the ``-trans.fif`` is not present or the alignment is not correct you need to use :func:`mne.gui.coregistration` (or its convenient command line equivalent :ref:`mne coreg`) to generate it. diff -Nru python-mne-0.23.4+dfsg/doc/overview/datasets_index.rst python-mne-1.1.0+dfsg/doc/overview/datasets_index.rst --- python-mne-0.23.4+dfsg/doc/overview/datasets_index.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/datasets_index.rst 2022-08-03 15:48:14.000000000 +0000 @@ -3,7 +3,8 @@ Datasets Overview ################# -.. sidebar:: Contributing datasets to MNE-Python +.. note:: Contributing datasets to MNE-Python + :class: sidebar Do not hesitate to contact MNE-Python developers on the `MNE Forum `_ to discuss the possibility of @@ -121,7 +122,7 @@ .. topic:: Examples - * :ref:`ex-envelope-correlation` + * :ref:`mne-connectivity:ex-envelope-correlation` Median nerve ^^^^^^^^^^^^ @@ -277,7 +278,7 @@ .. topic:: Examples - * :ref:`tut_phantom_4Dbti` + * :ref:`tut-phantom-4Dbti` OPM === @@ -368,19 +369,28 @@ ECoG Dataset ^^^^^^^^^^^^ -:func:`mne.datasets.misc.data_path`. Data exists at ``/ecog/sample_ecog.mat``. +:func:`mne.datasets.misc.data_path`. Data exists at ``/ecog/``. -This dataset contains a sample Electrocorticography (ECoG) dataset. It includes -a single grid of electrodes placed over the temporal lobe during an auditory -listening task. This dataset is primarily used to demonstrate visualization -functions in MNE and does not contain useful metadata for analysis. +This dataset contains a sample electrocorticography (ECoG) dataset. It includes +two grids of electrodes and ten shaft electrodes with simulated motor data (actual data +pending availability). .. topic:: Examples - * :ref:`How to convert 3D electrode positions to a 2D image. - `: Demonstrates - how to project a 3D electrode location onto a 2D image, a common procedure - in electrocorticography. + * :ref:`ex-electrode-pos-2d`: Demonstrates how to project a 3D electrode location onto a 2D image, a common procedure in ECoG analyses. + * :ref:`tut-ieeg-localize`: Demonstrates how to use a graphical user interface to locate electrode contacts as well as warp them to a common atlas. + +sEEG Dataset +^^^^^^^^^^^^ +:func:`mne.datasets.misc.data_path`. Data exists at ``/seeg/``. + +This dataset contains a sample stereoelectroencephalography (sEEG) dataset. +It includes 21 shaft electrodes during a two-choice movement task on a keyboard. + +.. topic:: Examples + + * :ref:`tut-ieeg-localize`: Demonstrates how to use a graphical user interface to locate electrode contacts as well as warp them to a common atlas. + * :ref:`tut-working-with-seeg`: Demonstrates ways to plot sEEG anatomy and results. .. _limo-dataset: diff -Nru python-mne-0.23.4+dfsg/doc/overview/design_philosophy.rst python-mne-1.1.0+dfsg/doc/overview/design_philosophy.rst --- python-mne-0.23.4+dfsg/doc/overview/design_philosophy.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/design_philosophy.rst 2022-08-03 15:48:14.000000000 +0000 @@ -28,10 +28,12 @@ one of `scikit-learn's `_ machine learning pipelines. MNE-Python's 2-D plotting functions also return `matplotlib`_ :class:`~matplotlib.figure.Figure` objects, and the 3D plotting functions -return `mayavi`_ scenes, so you can customize your MNE-Python plots using any -of matplotlib or mayavi's plotting commands. The intent is that MNE-Python will -get most neuroscientists 90% of the way to their desired analysis goal, and -other packages can get them over the finish line. +return :class:`mne.viz.Figure3D` classes with a ``.plotter`` attribute +pointing to :class:`pyvista.Plotter` instances, +so you can customize your MNE-Python plots using any +of matplotlib or PyVista's plotting commands. The intent is that MNE-Python +will get most neuroscientists 90% of the way to their desired analysis goal, +and other packages can get them over the finish line. Submodule-based organization diff -Nru python-mne-0.23.4+dfsg/doc/overview/development.rst python-mne-1.1.0+dfsg/doc/overview/development.rst --- python-mne-0.23.4+dfsg/doc/overview/development.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/development.rst 2022-08-03 15:48:14.000000000 +0000 @@ -1,24 +1,30 @@ - MNE-Python Development ====================== .. NOTE: this first section (up until "overview of contribution process") is - basically a copy/paste of CONTRIBUTING.rst from the repository root, with - one sentence deleted to avoid self-referential linking. Changes made here - should be mirrored there, and vice-versa. - -MNE-Python is maintained by a community of scientists and research labs, and -accepts contributions in the form of bug reports, fixes, feature additions, and -documentation improvements (even just typo corrections). The best way to start -contributing is by `opening an issue`_ on our GitHub page to discuss your ideas -for changes or enhancements, or to tell us about behavior that you think might -be a bug in MNE-Python. *For general troubleshooting of scripts that use -MNE-Python*, you should instead post on the `MNE Forum`_. Users and -contributors to MNE-Python are expected to follow our `code of conduct`_. + basically a copy/paste of CONTRIBUTING.md from the repository root, with one + sentence deleted to avoid self-referential linking. Changes made here should + be mirrored there, and vice-versa. + +MNE-Python is maintained by a community of scientists and research labs. The +project accepts contributions in the form of bug reports, fixes, feature +additions, and documentation improvements (including typo corrections). The +best way to start contributing is by `opening an issue`_ on our GitHub page to +discuss ideas for changes or enhancements, or to tell us about behavior that +you think might be a bug. For *general troubleshooting* or *usage questions*, +please consider posting your questions on our `MNE Forum`_. + +Users and contributors to MNE-Python are expected to follow our +`code of conduct`_. + +The `contributing guide`_ has details on the preferred contribution workflow +and the recommended system configuration for a smooth contribution/development +experience. .. _`opening an issue`: https://github.com/mne-tools/mne-python/issues/new/choose .. _`MNE Forum`: https://mne.discourse.group .. _`code of conduct`: https://github.com/mne-tools/.github/blob/main/CODE_OF_CONDUCT.md +.. _`contributing guide`: https://mne.tools/dev/install/contributing.html .. toctree:: :hidden: @@ -26,3 +32,4 @@ ../install/contributing ../whats_new roadmap + governance diff -Nru python-mne-0.23.4+dfsg/doc/overview/faq.rst python-mne-1.1.0+dfsg/doc/overview/faq.rst --- python-mne-0.23.4+dfsg/doc/overview/faq.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/faq.rst 2022-08-03 15:48:14.000000000 +0000 @@ -15,8 +15,7 @@ Help! I can't get Python and MNE-Python working! ------------------------------------------------ -Check out our installation instructions for :ref:`Python ` and -:ref:`MNE-Python `. +Check out our :ref:`installation instructions `. I still can't get it to work! @@ -25,16 +24,15 @@ See :ref:`help`. -I can't get Mayavi/3D plotting to work under Windows ----------------------------------------------------- +I can't get PyVista/3D plotting to work under Windows +----------------------------------------------------- -If Mayavi plotting in Jupyter Notebooks doesn't work well, using the IPython -magic ``%gui qt`` after importing MNE/Mayavi/PySurfer should `help +If PyVista plotting in Jupyter Notebooks doesn't work well, using the IPython +magic ``%gui qt`` should `help `_. .. code-block:: ipython - from mayavi import mlab %gui qt Python runs on macOS extremely slow even on simple commands! @@ -137,8 +135,7 @@ or to the `GitHub issues page`_. If you want to write your own data to disk (e.g., subject behavioral scores), -we strongly recommend using `h5io `_, which is -based on the `HDF5 format +we strongly recommend using h5io_, which is based on the `HDF5 format `_ and h5py_, to save data in a fast, future-compatible, standard format. @@ -417,7 +414,7 @@ .. _`the most current version`: https://github.com/mne-tools/mne-python/releases/latest .. _`minimal working example`: https://en.wikipedia.org/wiki/Minimal_Working_Example -.. _mri_watershed: https://freesurfer.net/fswiki/mri_watershed +.. _mri_watershed: https://surfer.nmr.mgh.harvard.edu/fswiki/mri_watershed .. _mri_normalize: https://surfer.nmr.mgh.harvard.edu/fswiki/mri_normalize .. _freeview: https://surfer.nmr.mgh.harvard.edu/fswiki/FreeviewGuide/FreeviewIntroduction .. _`FreeSurfer listserv`: https://www.mail-archive.com/freesurfer@nmr.mgh.harvard.edu/ diff -Nru python-mne-0.23.4+dfsg/doc/overview/get_help.rst python-mne-1.1.0+dfsg/doc/overview/get_help.rst --- python-mne-0.23.4+dfsg/doc/overview/get_help.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/get_help.rst 2022-08-03 15:48:14.000000000 +0000 @@ -12,7 +12,7 @@ - The :ref:`faq` page has some troubleshooting tips, and is a good source of general information. There are also some troubleshooting tips built into the :ref:`Python ` and - :ref:`MNE-Python ` installation pages (look for the + :ref:`MNE-Python ` installation pages (look for the |hand-paper| symbols), and some tips related to 3D plotting problems on :ref:`the advanced setup page `. - If you want to request new features or if you're confident that you have diff -Nru python-mne-0.23.4+dfsg/doc/overview/governance.rst python-mne-1.1.0+dfsg/doc/overview/governance.rst --- python-mne-0.23.4+dfsg/doc/overview/governance.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/governance.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,314 @@ +.. _governance: + +================== +Project Governance +================== + +The purpose of this document is to formalize the governance process +used by the MNE-Python project in both ordinary and extraordinary +situations, and to clarify how decisions are made and how the various +elements of our community interact, including the relationship between +open source collaborative development and work that may be funded by +for-profit or non-profit entities. + + +The Project +=========== + +The MNE-Python Project (The Project) is an open source software project. The +goal of The Project is to develop open source software for analysis of +neuroscience data in Python. The Project is released under the BSD (or similar) +open source license, developed openly and is hosted publicly under the +``mne-tools`` GitHub organization. + +The Project is developed by a team of distributed developers, called +Contributors. Contributors are individuals who have contributed code, +documentation, designs, or other work to the Project. Anyone can be a +Contributor. Contributors can be affiliated with any legal entity or +none. Contributors participate in the project by submitting, reviewing, +and discussing GitHub Pull Requests and Issues and participating in open +and public Project discussions on GitHub, Discourse, and other +channels. The foundation of Project participation is openness and +transparency. + +The Project Community consists of all Contributors and Users of the +Project. Contributors work on behalf of and are responsible to the +larger Project Community and we strive to keep the barrier between +Contributors and Users as low as possible. + +The Project is not a legal entity, nor does it currently have any formal +relationships with legal entities. + + +Governance model +================ + +This section describes the governance and leadership model of The +Project. + +The foundations of Project governance are: + +- openness and transparency +- active contribution +- institutional neutrality + + +Traditionally, Project leadership was provided by a subset of Contributors, +informally called Core Developers, whose active and consistent contributions +were rewarded by granting them “commit rights” to the Project GitHub +repositories. In general, all Project decisions are made through consensus among +the Core Developers with input from the Community. + +While this approach has served us well, as the Project grows we see a need for +a more formal governance model. The MNE-Python Core Developers expressed a +preference for a leadership model which includes a BDFL (Benevolent Dictator +for Life). Therefore, moving forward The Project leadership will consist of a +BDFL and Steering Council. + +BDFL +---- + +The Project will have a BDFL (Benevolent Dictator for Life), who is currently +Alexandre Gramfort. As Dictator, the BDFL has the authority to make all final +decisions for The Project. As Benevolent, the BDFL, in practice, chooses to +defer that authority to the consensus of the community discussion channels and +the Steering Council (see below). It is expected, and in the past has been the +case, that the BDFL will only rarely assert their final authority. Because +rarely used, we refer to BDFL’s final authority as a “special” or “overriding” +vote. When it does occur, the BDFL override typically happens in situations +where there is a deadlock in the Steering Council or if the Steering Council +asks the BDFL to make a decision on a specific matter. To ensure the +benevolence of the BDFL, The Project encourages others to fork the project if +they disagree with the overall direction the BDFL is taking. The BDFL may +delegate their authority on a particular decision or set of decisions to +any other Council member at their discretion. + +The BDFL can appoint their successor, but it is expected that the Steering +Council would be consulted on this decision. If the BDFL is unable to appoint a +successor, the Steering Council will make this decision — preferably by +consensus, but if needed, by a majority vote. + +Note that the BDFL can step down at any time, and acting in good faith, will +also listen to serious calls to do so. Also note that the BDFL is more a role +for fallback decision making rather than that of a director/CEO. + +Steering Council +---------------- + +The Project will have a Steering Council that consists of Project Contributors +who have produced contributions that are substantial in quality and quantity, +and sustained over at least one year. The overall role of the Council is to +ensure, through working with the BDFL and taking input from the Community, the +long-term well-being of the project, both technically and as a community. + +During the everyday project activities, Council Members participate in +discussions, code review, and other project activities as peers with all other +Contributors and the Community. In these everyday activities, Council Members +do not have any special power or privilege through their membership on the +Council. However, it is expected that because of the quality and quantity of +their contributions and their expert knowledge of the Project Software and +Services, Council Members will provide useful guidance, both technical and +in terms of project direction, to potentially less experienced contributors. + +The Steering Council and its Members play a special role in certain situations. +In particular, the Council may: + +- Make decisions about the overall scope, vision, and direction of the project. +- Make decisions about strategic collaborations with other organizations or + individuals. +- Make decisions about specific technical issues, features, bugs, and pull + requests. They are the primary mechanism of guiding the code review process + and merging pull requests. +- Make decisions about the Services that are run by The Project and manage + those Services for the benefit of the Project and Community. +- Make decisions when regular community discussion does not produce consensus + on an issue in a reasonable time frame. +- Update policy documents, such as this one. + +Council membership +~~~~~~~~~~~~~~~~~~ + +To become eligible for being a Steering Council Member, an individual must be a +Project Contributor who has produced contributions that are substantial in +quality and quantity, and sustained over at least one year. Potential Council +Members are nominated by existing Council members and voted upon by the +existing Council after asking if the potential Member is interested and willing +to serve in that capacity. The Council will be initially formed from the set of +existing Core Developers who, as of May 2021, have been significantly +active over the last two years. + +When considering potential Members, the Council will look at candidates with a +comprehensive view of their contributions. This will include, but is not limited +to, code, code review, infrastructure work, Discourse participation, +community help/building, education and outreach, design work, etc. We are +deliberately not setting arbitrary quantitative metrics (like “100 commits in +this repo”) to avoid encouraging behavior that plays to the metrics rather than +The Project’s overall well-being. We want to encourage a diverse array of +backgrounds, viewpoints, and talents in our team, which is why we explicitly do +not define code as the sole metric on which council membership will be +evaluated. + +If a Council Member becomes inactive in the project for a period of one year, +they will be considered for removal from the Council. Before removal, inactive +Member will be approached to see if they plan on returning to active +participation. If not, they will be removed immediately upon a Council +vote. If they plan on returning to active participation soon, they will be +given a grace period of one year. If they don’t return to active participation +within that time period they will be removed by vote of the Council without +further grace period. All former Council Members can be considered for +membership again at any time in the future, like any other Project Contributor. +Retired Council Members will be listed on the project website, acknowledging +the period during which they were active in the Council. + +The Council reserves the right to eject current Members, other than the BDFL, +if they are deemed to be actively harmful to the project’s well-being, and +attempts at communication and conflict resolution have failed. + +A list of current Steering Council Members is maintained at the +page :ref:`governance-people`. + +Conflict of interest +~~~~~~~~~~~~~~~~~~~~ + +It is expected that the BDFL and Council Members will be employed at a wide +range of companies, universities, and non-profit organizations. Because of this, +it is possible that Members will have a conflict of interest. Such conflicts of +interest include, but are not limited to: + +- Financial interest, such as investments, employment or contracting work, + outside of The Project that may influence their work on The Project. +- Access to proprietary information of their employer that could potentially + leak into their work with the Project. + +All members of the Council, BDFL included, shall disclose to the rest of the +Council any conflict of interest they may have. Members with a conflict of +interest in a particular issue may participate in Council discussions on that +issue, but must recuse themselves from voting on the issue. If the BDFL has +recused themself for a particular decision, the Council will appoint a +substitute BDFL for that decision. + +Private communications of the Council +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Unless specifically required, all Council discussions and activities will be +public and done in collaboration and discussion with the Project Contributors +and Community. The Council will have a private communication channel that will be used +sparingly and only when a specific matter requires privacy. When private +communications and decisions are needed, the Council will do its best to +summarize those to the Community after removing personal/private/sensitive +information that should not be posted to the public internet. + +Council decision making +~~~~~~~~~~~~~~~~~~~~~~~ + +If it becomes necessary for the Steering Council to produce a formal +decision, then they will use a form of the `Apache Foundation voting +process `_. This is a +formalized version of consensus, in which +1 votes indicate agreement, +-1 votes are vetoes (and must be accompanied with a rationale), +and one can also vote fractionally (e.g. -0.5, +0.5) if one +wishes to express an opinion without registering a full veto. These +numeric votes are also often used informally as a way of getting a +general sense of people's feelings on some issue, and should not +normally be taken as formal votes. A formal vote only occurs if +explicitly declared, and if this does occur, then the vote should be held +open for long enough to give all interested Council Members a chance to +respond — at least one week. + +In practice, we anticipate that for most Steering Council decisions +(e.g., voting in new members) a more informal process will suffice. + + +Institutional Partners and funding +================================== + +The Steering Council is the primary leadership for the project. No +outside institution, individual, or legal entity has the ability to own, +control, usurp, or influence the project other than by participating in +the Project as Contributors and Council Members. However, because +institutions can be an important funding mechanism for the project, it +is important to formally acknowledge institutional participation in the +project. These are Institutional Partners. + +An Institutional Contributor is any individual Project Contributor who +contributes to the project as part of their official duties at an +Institutional Partner. Likewise, an Institutional Council Member is any +Project Steering Council Member who contributes to the project as part +of their official duties at an Institutional Partner. + +With these definitions, an Institutional Partner is any recognized legal +entity in any country that employs at least 1 Institutional Contributor or +Institutional Council Member. Institutional Partners can be for-profit or +non-profit entities. + +Institutions become eligible to become an Institutional Partner by +employing individuals who actively contribute to The Project as part of +their official duties. To state this another way, the only way for a +Partner to influence the project is by actively contributing to the open +development of the project, in equal terms to any other member of the +community of Contributors and Council Members. Merely using Project +Software in institutional context does not allow an entity to become an +Institutional Partner. Financial gifts do not enable an entity to become +an Institutional Partner. Once an institution becomes eligible for +Institutional Partnership, the Steering Council must nominate and +approve the Partnership. + +If, at some point, an existing Institutional Partner stops having any +contributing employees, then a one year grace period commences. If, at +the end of this one-year period, they continue not to have any +contributing employees, then their Institutional Partnership will +lapse, and resuming it will require going through the normal process +for new Partnerships. + +An Institutional Partner is free to pursue funding for their work on The +Project through any legal means. This could involve a non-profit +organization raising money from private foundations and donors or a +for-profit company building proprietary products and services that +leverage Project Software and Services. Funding acquired by +Institutional Partners to work on The Project is called Institutional +Funding. However, no funding obtained by an Institutional Partner can +override the Steering Council. If a Partner has funding to do MNE-Python work +and the Council decides to not pursue that work as a project, the +Partner is free to pursue it on their own. However, in this situation, +that part of the Partner’s work will not be under the MNE-Python umbrella and +cannot use the Project trademarks in any way that suggests a formal +relationship. + +Institutional Partner benefits are: + +- optional acknowledgement on the MNE-Python website and in talks +- ability to acknowledge their own funding sources on the MNE-Python + website and in talks +- ability to influence the project through the participation of their + Council Member +- invitation of the Council Members to MNE-Python Developer Meetings + +A list of current Institutional Partners is maintained at the page +:ref:`supporting-institutions`. + + +Document history +================ + +https://github.com/mne-tools/mne-python/commits/main/doc/overview/governance.rst + + +Acknowledgements +================ + +Substantial portions of this document were adapted from the +`SciPy project's governance document +`_, +which in turn was adapted from +`Jupyter/IPython project's governance document +`_ and +`NumPy's governance document +`_. + +License +======= + +To the extent possible under law, the authors have waived all +copyright and related or neighboring rights to the MNE-Python project +governance document, as per the `CC-0 public domain dedication / license +`_. diff -Nru python-mne-0.23.4+dfsg/doc/overview/index.rst python-mne-1.1.0+dfsg/doc/overview/index.rst --- python-mne-0.23.4+dfsg/doc/overview/index.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/index.rst 2022-08-03 15:48:14.000000000 +0000 @@ -7,10 +7,9 @@ .. note:: - If you haven't already installed Python and MNE-Python, here are the - installation instructions for :ref:`Python ` and - :ref:`MNE-Python `, and some - resources for :doc:`learn_python`. + If you haven't already installed MNE-Python, please take a look + at our :ref:`installation guides`. Please also kindly find some + resources for :doc:`learn_python` if you need to. The documentation for MNE-Python is divided into four main sections: diff -Nru python-mne-0.23.4+dfsg/doc/overview/matlab.rst python-mne-1.1.0+dfsg/doc/overview/matlab.rst --- python-mne-0.23.4+dfsg/doc/overview/matlab.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/matlab.rst 2022-08-03 15:48:14.000000000 +0000 @@ -525,8 +525,9 @@ **measurement info** - Translation of the FIFFB_MEAS_INFO entity, see :ref:`BGBFHDIJ`. This - data structure is returned by fiff_read_meas_info . + Translation of the FIFFB_MEAS_INFO entity, see :ref:`BGBFHDIJ` and + :class:`mne.Info`. This data structure is returned by fiff_read_meas_info, + will not be as complete as :class:`mne.Info`. **surf** @@ -688,7 +689,7 @@ | FIFFV_PROJ_ITEM_NONE | 0 | The nature of this projection item is unknown | +-------------------------------+-------+----------------------------------------------------------+ | FIFFV_PROJ_ITEM_FIELD | 1 | This is projection item is a generic field pattern or | - | | | field patters. | + | | | field patterns. | +-------------------------------+-------+----------------------------------------------------------+ | FIFFV_PROJ_ITEM_DIP_FIX | 2 | This projection item is the field of one dipole | +-------------------------------+-------+----------------------------------------------------------+ diff -Nru python-mne-0.23.4+dfsg/doc/overview/people.rst python-mne-1.1.0+dfsg/doc/overview/people.rst --- python-mne-0.23.4+dfsg/doc/overview/people.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/people.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,46 @@ +:orphan: + +.. include:: ../changes/names.inc + +.. _governance-people: + +Current steering council and institutional partners +=================================================== + +Benevolent Dictator for Life +---------------------------- + +Alexandre Gramfort is the Benevolent Dictator for Life (BDFL) + + +Steering Council +---------------- + +* `Adam Li`_ +* `Alex Gramfort`_ +* `Alex Rockhill`_ +* `Britta Westner`_ +* `Clemens Brunner`_ +* `Daniel McCloy`_ +* `Denis Engemann`_ +* `Eric Larson`_ +* `Guillaume Favelier`_ +* `Luke Bloy`_ +* `Mainak Jas`_ +* `Marijn van Vliet`_ +* `Mikołaj Magnuski`_ +* `Richard Höchenberger`_ +* `Robert Luke`_ +* `Stefan Appelhoff`_ + +Institutional Partners +---------------------- + +.. include:: ../_includes/institutional-partners.rst + :start-after: institutional-partners-begin-content + + +Document history +---------------- + +https://github.com/mne-tools/mne-python/commits/main/doc/overview/people.rst diff -Nru python-mne-0.23.4+dfsg/doc/overview/roadmap.rst python-mne-1.1.0+dfsg/doc/overview/roadmap.rst --- python-mne-0.23.4+dfsg/doc/overview/roadmap.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/overview/roadmap.rst 2022-08-03 15:48:14.000000000 +0000 @@ -1,3 +1,5 @@ +.. include:: ../links.inc + Roadmap ======= @@ -6,70 +8,16 @@ API design considerations. Some of these may be suitable for Google Summer of Code projects, while others require more extensive work. -Clustering statistics API -^^^^^^^^^^^^^^^^^^^^^^^^^ - -The current clustering statistics code has limited functionality. It should be -re-worked to create a new ``cluster_based_statistic`` or similar function. -In particular, the new API should: - -1. Support mixed within- and between-subjects designs, different statistical - functions, etc. This should be done via a ``design`` argument that mirrors - :func:`patsy.dmatrices` or similar community standard (e.g., this is what - is used by :class:`statsmodels.regression.linear_model.OLS`). -2. Have clear tutorials showing how different contrasts can be done (toy data). -3. Have clear tutorials showing some common analyses on real data (time-freq, - sensor space, source space, etc.) -4. Not introduce any significant speed penalty (e.g., < 10% slower) compared - to the existing, more specialized/limited functions. - -More details are in :gh:`4859`. - - -3D visualization -^^^^^^^^^^^^^^^^ - -Historically we have used Mayavi for 3D visualization, but have faced -limitations and challenges with it. We should work to use some other backend -(e.g., PyVista) to get major improvements, such as: - -1. Proper notebook support (through vtkjs) -2. Better interactivity with surface plots -3. Time-frequency plotting (complementary to volume-based - :ref:`time-frequency-viz`) -4. Integration of multiple functions as done in ``mne_analyze``, e.g., - simultaneous source estimate viewing, field map - viewing, head surface display, etc. These are all currently available in - separate functions, but we should be able to combine them in a single plot - as well. - -One such issue for tracking TODO lists for surface plotting is :gh:`7162`. - - -2D visualization -^^^^^^^^^^^^^^^^ - -Our 2D code has a lot of useful functionality, but suffers from several -systemic problems: - -1. It was written by many people for many specific use cases over time, - without ensuring that code was generalized. This means that some functions - are available only in some plotting modes (e.g., grouping by channel types - to obtain a butterfly plot can be done in :func:`mne.viz.plot_raw` but not - :func:`mne.viz.plot_epochs`. -2. The code base has many redundant but not identical pieces of code - (copy-paste-modify rather than generalize-reuse / DRY) that make maintenance - particularly challenging. - -By (extensively) refactoring our code, we would improve the end-user experience -and decrease long-term maintenance costs. +.. contents:: Page contents + :local: +Open +---- .. _time-frequency-viz: Time-frequency visualization ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - We should implement a viewer for interactive visualization of volumetric source-time-frequency (5-D) maps on MRI slices (orthogonal 2D viewer). `NutmegTrip `__ @@ -81,74 +29,26 @@ :target: https://www.youtube.com/watch?v=xKdjZZphdNc :width: 50% +Clustering statistics API +^^^^^^^^^^^^^^^^^^^^^^^^^ +The current clustering statistics code has limited functionality. It should be +re-worked to create a new ``cluster_based_statistic`` or similar function. +In particular, the new API should: -Cluster computing -^^^^^^^^^^^^^^^^^ - -Currently, cloud computing with M/EEG data requires multiple manual steps, -including remote environment setup, data transfer, monitoring of remote jobs, -and retrieval of output data/results. These steps are usually not specific to -the analysis of interest, and thus should be something that can be taken care -of by MNE. Subgoals consist of: - -- Leverage dask and joblib or other libs to allow simple integration with MNE processing steps. Ideally this would be achieved in practice by: - - - One-time (or per-project) setup steps, setting up host keys, access tokens, - etc. - - In code, switch to cloud computing rather than local computing via a simple - change of n_jobs parameter, and/or context manager like with:: - - with use_dask(...): - ... - -- Develop a (short as possible) example that shows people how to run a minimal - task remotely, including setting up access, cluster, nodes, etc. -- Adapt `MNE-study-template `__ - code to use cloud computing (optionally, based on config) rather than local - resources. - -See also :gh:`6086`. - - -Tutorial / example overhaul -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -We want our tutorials to get users up to speed on: - -1. How to do M/EEG analyses in principle, and -2. How to do M/EEG analyses in MNE-Python in particular - -So far some of our tutorials have been rewritten, but we still have a long way -to go. Relevant tracking issues can be found under the tag :gh:`labels/DOC`. - - -Coregistration / 3D viewer -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:ref:`mne coreg` is an excellent tool for coregistration, but is limited -by being tied to Mayavi, Traits, and TraitsUI. We should first refactor in -several (mostly) separable steps: - -1. Refactor code to use traitlets -2. GUI elements to use PyQt5 (rather than TraitsUI/pyface) -3. 3D plotting to use our abstracted 3D viz functions rather than Mayavi -4. Refactor distance/fitting classes to public ones to enable the example - from :gh:`6693`. - -Once this is done, we can effectively switch to a PyVista backend. - - -BIDS Integration -^^^^^^^^^^^^^^^^ - -MNE-Python should facilitate analyzing BIDS-compliant datasets thanks to -integration with the MNE-BIDS package. For more -information, see https://github.com/mne-tools/mne-bids. +1. Support mixed within- and between-subjects designs, different statistical + functions, etc. This should be done via a ``design`` argument that mirrors + :func:`patsy.dmatrices` or similar community standard (e.g., this is what + is used by :class:`statsmodels.regression.linear_model.OLS`). +2. Have clear tutorials showing how different contrasts can be done (toy data). +3. Have clear tutorials showing some common analyses on real data (time-freq, + sensor space, source space, etc.) +4. Not introduce any significant speed penalty (e.g., < 10% slower) compared + to the existing, more specialized/limited functions. +More details are in :gh:`4859`. Access to open EEG/MEG databases ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - We should improve the access to open EEG/MEG databases via the :mod:`mne.datasets` module, in other words improve our dataset fetchers. We have physionet, but much more. Having a consistent API to access multiple @@ -170,15 +70,11 @@ Kymata atlas. The participants are healthy human adults listening to the radio and/or watching films, and the data is comprised of (averaged) EEG and MEG sensor data and source current reconstructions. -- `BrainSignals `__ - A website that lists a number of MEG datasets available for download. - `BNCI Horizon `__ BCI datasets. - Integrate OpenMEEG via improved Python bindings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - `OpenMEEG `__ is a state-of-the art solver for forward modeling in the field of brain imaging with MEG/EEG. It solves numerically partial differential equations (PDE). It is written in C++ with @@ -196,3 +92,124 @@ - Help package OpenMEEG for Debian/Ubuntu - Help manage `the continuous integration system `__ + + +In progress +----------- + +Diversity, Equity, and Inclusion (DEI) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +MNE-Python is committed to recruiting and retaining a diverse pool of +contributors, see :gh:`8221`. + +First-class OPM support +^^^^^^^^^^^^^^^^^^^^^^^ +MNE-Python has support for reading some OPM data formats such as FIF, but +support is still rudimentary. Support should be added for other manufacturers, +and standard (and/or novel) preprocessing routines should be added to deal with +coregistration adjustment, forward modeling, and OPM-specific artifacts. + +Deep source modeling +^^^^^^^^^^^^^^^^^^^^ +Existing source modeling and inverse routines are not explicitly designed to +deal with deep sources. Advanced algorithms exist from MGH for enhancing +deep source localization, and these should be implemented and vetted in +MNE-Python. + +Better sEEG/ECoG/DBS support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Some support already exists for iEEG electrodes in MNE-Python thanks in part +to standard abstractions. However, iEEG-specific pipeline steps (e.g., +electrode localization) and visualizations (e.g., per-shaft topo plots, +:ref:`time-frequency-viz`) are missing. MNE-Python should work with members of +the ECoG/sEEG community to work with or build in existing tools, and extend +native functionality for depth electrodes. + +Time-frequency classes +^^^^^^^^^^^^^^^^^^^^^^ +Our current codebase implements classes related to :term:`TFRs ` that +remain incomplete. We should implement new classes from the ground up +that can hold frequency data (``Spectrum``), cross-spectral data +(``CrossSpectrum``), multitaper estimates (``MultitaperSpectrum``), and +time-varying estimates (``Spectrogram``). These should work for +continuous, epoched, and averaged sensor data, as well as source-space brain +data. + +See related issues :gh:`6290`, :gh:`7671`, :gh:`8026`, :gh:`8724`, :gh:`9045`, +and PRs :gh:`6609`, :gh:`6629`, :gh:`6672`, :gh:`6673`, :gh:`8397`, and +:gh:`8892`. + +Pediatric and clinical MEG pipelines +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +MNE-Python is in the process of providing automated analysis of BIDS-compliant +datasets, see `MNE-BIDS-Pipeline`_. By incorporating functionality from the +`mnefun `__ pipeline, +which has been used extensively for pediatric data analysis at `I-LABS`_, +better support for pediatric and clinical data processing can be achieved. +Multiple processing steps (e.g., eSSS), sanity checks (e.g., cHPI quality), +and reporting (e.g., SSP joint plots, SNR plots) will be implemented. + +Statistics efficiency +^^^^^^^^^^^^^^^^^^^^^ +A key technique in functional neuroimaging analysis is clustering brain +activity in adjacent regions prior to statistical analysis. An important +clustering algorithm — threshold-free cluster enhancement (TFCE) — currently +relies on computationally expensive permutations for hypothesis testing. +A faster, probabilistic version of TFCE (pTFCE) is available, and we are in the +process of implementing this new algorithm. + +3D visualization +^^^^^^^^^^^^^^^^ +Historically we have used Mayavi for 3D visualization, but have faced +limitations and challenges with it. We should work to use some other backend +(e.g., PyVista) to get major improvements, such as: + +1. *Proper notebook support (through ipyvtklink)* (complete) +2. *Better interactivity with surface plots* (complete) +3. Time-frequency plotting (complementary to volume-based + :ref:`time-frequency-viz`) +4. Integration of multiple functions as done in ``mne_analyze``, e.g., + simultaneous source estimate viewing, field map + viewing, head surface display, etc. These are all currently available in + separate functions, but we should be able to combine them in a single plot + as well. + +The meta-issue for tracking to-do lists for surface plotting is :gh:`7162`. + +.. _documentation-updates: + +Documentation updates +^^^^^^^^^^^^^^^^^^^^^ +Our documentation has many minor issues, which can be found under the tag +:gh:`labels/DOC`. + + +Completed +--------- + +Distributed computing support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +`MNE-BIDS-Pipeline`_ has been enhanced with support for cloud computing +via `Dask`_ and :doc:`joblib `. +After configuring Dask to use local or remote distributed computing resources, +MNE-BIDS-Pipeline can readily make use of remote workers to parallelize +processing across subjects. + +2D visualization +^^^^^^^^^^^^^^^^ +`This goal `__ +was completed under CZI `EOSS2`_. Some additional enhancements that could also +be implemented are listed in :gh:`7751`. + +Tutorial / example overhaul +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +`This goal `__ +was completed under CZI `EOSS2`_. Ongoing documentation needs are listed in +:ref:`documentation-updates`. + +Cluster computing images +^^^^^^^^^^^^^^^^^^^^^^^^ +As part of `this goal `__, +we created docker images suitable for cloud computing via `MNE-Docker`_. + +.. _I-LABS: http://ilabs.washington.edu/ diff -Nru python-mne-0.23.4+dfsg/doc/preprocessing.rst python-mne-1.1.0+dfsg/doc/preprocessing.rst --- python-mne-0.23.4+dfsg/doc/preprocessing.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/preprocessing.rst 2022-08-03 15:48:14.000000000 +0000 @@ -40,6 +40,7 @@ read_dig_egi read_dig_fif read_dig_hpts + read_dig_localite make_standard_montage read_custom_montage compute_dev_head_t @@ -48,6 +49,7 @@ make_eeg_layout make_grid_layout find_ch_adjacency + get_builtin_ch_adjacencies read_ch_adjacency equalize_channels rename_channels @@ -68,15 +70,19 @@ ICA Xdawn - annotate_flat + annotate_amplitude + annotate_break annotate_movement annotate_muscle_zscore + annotate_nan compute_average_dev_head_t compute_current_source_density + compute_bridged_electrodes compute_fine_calibration compute_maxwell_basis compute_proj_ecg compute_proj_eog + cortical_signal_suppression create_ecg_epochs create_eog_epochs find_bad_channels_maxwell @@ -86,8 +92,10 @@ ica_find_ecg_events ica_find_eog_events infomax + interpolate_bridged_electrodes equalize_bads maxwell_filter + maxwell_filter_prepare_emptyroom oversampled_temporal_projection peak_finder read_ica @@ -116,6 +124,19 @@ scalp_coupling_index temporal_derivative_distribution_repair +:py:mod:`mne.preprocessing.ieeg`: + +.. currentmodule:: mne.preprocessing.ieeg + +.. automodule:: mne.preprocessing.ieeg + :no-members: + :no-inherited-members: + +.. autosummary:: + :toctree: generated/ + + project_sensors_onto_brain + EEG referencing: .. currentmodule:: mne @@ -157,11 +178,13 @@ :toctree: generated/ compute_chpi_amplitudes + compute_chpi_snr compute_chpi_locs compute_head_pos extract_chpi_locs_ctf extract_chpi_locs_kit filter_chpi + get_chpi_info head_pos_to_trans_rot_t read_head_pos write_head_pos diff -Nru python-mne-0.23.4+dfsg/doc/python_reference.rst python-mne-1.1.0+dfsg/doc/python_reference.rst --- python-mne-0.23.4+dfsg/doc/python_reference.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/python_reference.rst 2022-08-03 15:48:14.000000000 +0000 @@ -27,6 +27,7 @@ reading_raw_data file_io creating_from_arrays + export datasets visualization preprocessing diff -Nru python-mne-0.23.4+dfsg/doc/reading_raw_data.rst python-mne-1.1.0+dfsg/doc/reading_raw_data.rst --- python-mne-0.23.4+dfsg/doc/reading_raw_data.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/reading_raw_data.rst 2022-08-03 15:48:14.000000000 +0000 @@ -25,6 +25,7 @@ read_raw_kit read_raw_nedf read_raw_nicolet + read_raw_hitachi read_raw_nirx read_raw_snirf read_raw_eeglab diff -Nru python-mne-0.23.4+dfsg/doc/references.bib python-mne-1.1.0+dfsg/doc/references.bib --- python-mne-0.23.4+dfsg/doc/references.bib 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/references.bib 2022-08-03 15:48:14.000000000 +0000 @@ -47,6 +47,16 @@ year = {2012} } +@article{Alday2019, + title = {How much baseline correction do we need in {ERP} research? Extended {GLM} model can replace baseline correction while lifting its limits}, + author = {Alday, Phillip M.}, + year = {2019}, + volume = {56}, + doi = {10.1111/psyp.13451}, + journal = {Psychophysiology}, + number = {12} +} + @article{ArtoniEtAl2018, author = {Artoni, Fiorenzo and Delorme, Arnaud and Makeig, Scott}, doi = {10.1016/j.neuroimage.2018.03.016}, @@ -101,7 +111,7 @@ @inproceedings{BekhtiEtAl2016, address = {{Trento}}, - author = {Bekhti, Yousra and Strohmeiery, Daniel and Jas, Mainak and Badeau, Roland and Gramfort, Alexandre}, + author = {Bekhti, Yousra and Strohmeier, Daniel and Jas, Mainak and Badeau, Roland and Gramfort, Alexandre}, booktitle = {Proceedings of {{PRNI}}-2016}, doi = {10.1109/PRNI.2016.7552337}, isbn = {978-1-4673-6530-7}, @@ -362,6 +372,23 @@ year = {2006} } +@article{DelormeMakeig2004, + title = {{EEGLAB}: an open source toolbox for analysis of single-trial {EEG} dynamics including independent component analysis}, + volume = {134}, + issn = {0165-0270}, + shorttitle = {{EEGLAB}}, + doi = {10.1016/j.jneumeth.2003.10.009}, + language = {eng}, + number = {1}, + journal = {Journal of Neuroscience Methods}, + author = {Delorme, Arnaud and Makeig, Scott}, + month = mar, + year = {2004}, + pmid = {15102499}, + keywords = {Computer Simulation, Electroencephalography, Evoked Potentials, Software}, + pages = {9--21} +} + @article{DestrieuxEtAl2010, author = {Destrieux, Christophe and Fischl, Bruce and Dale, Anders and Halgren, Eric}, doi = {10.1016/j.neuroimage.2010.06.010}, @@ -373,6 +400,21 @@ year = {2010} } +@inproceedings{DharmapraniEtAl2016, + address = {Orlando, FL, USA}, + title = {A comparison of independent component analysis algorithms and measures to discriminate between {EEG} and artifact components}, + isbn = {978-1-4577-0220-4}, + url = {http://ieeexplore.ieee.org/document/7590828/}, + doi = {10.1109/EMBC.2016.7590828}, + urldate = {2022-04-13}, + booktitle = {2016 38th {Annual} {International} {Conference} of the {IEEE} {Engineering} in {Medicine} and {Biology} {Society} ({EMBC})}, + publisher = {IEEE}, + author = {Dharmaprani, Dhani and Nguyen, Hoang K. and Lewis, Trent W. and DeLosAngeles, Dylan and Willoughby, John O. and Pope, Kenneth J.}, + year = {2016}, + pages = {825--828}, +} + + @article{DufauEtAl2015, author = {Dufau, Stéphane and Grainger, Jonathan and Midgley, Katherine J. and Holcomb, Phillip J.}, doi = {10.1177/0956797615603934}, @@ -564,6 +606,22 @@ year = {2013} } +@article{GreischarEtAl2004, + title = {Effects of electrode density and electrolyte spreading in dense array electroencephalographic recording}, + volume = {115}, + issn = {13882457}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1388245703003833}, + doi = {10.1016/j.clinph.2003.10.028}, + language = {en}, + number = {3}, + urldate = {2022-04-25}, + journal = {Clinical Neurophysiology}, + author = {Greischar, Lawrence L. and Burghy, Cory A. and van Reekum, Carien M. and Jackson, Daren C. and Pizzagalli, Diego A. and Mueller, Corrina and Davidson, Richard J.}, + month = mar, + year = {2004}, + pages = {710--720} +} + @article{GreveEtAl2013, author = {Greve, Douglas N. and {Van der Haegen}, Lise and Cai, Qing and Stufflebeam, Steven and Sabuncu, Mert R. and Fischl, Bruce and Brysbaert, Marc}, doi = {10.1162/jocn_a_00405}, @@ -656,6 +714,18 @@ year = {1989} } +@article{HamiltonEtAl2017, + author = {Hamilton, Liberty S. and Chang, David L. and Lee, Morgan B. and Chang, Edward F.}, + doi = {10.3389/fninf.2017.00062}, + journal = {Frontiers in Neuroinformatics}, + title = {Semi-automated Anatomical Labeling and Inter-subject Warping of High-Density Intracranial Recording Electrodes in Electrocorticography}, + volume = {11}, + issn = {1662-5196}, + url = {http://journal.frontiersin.org/article/10.3389/fninf.2017.00062/full}, + month = oct, + year = {2017}, +} + @article{HannaEtAl2020, author = {Hanna, Jeff and Kim, Cora and Müller-Voggel, Nadia}, doi = {10.1016/j.jneumeth.2020.108592}, @@ -758,6 +828,16 @@ year = {2016} } +@article{HouckClaus2020, + author = {Houck, Jon M. and Claus, Eric D.}, + doi = {10.1371/journal.pone.0232100}, + journal = {PLOS ONE}, + pages = {e0232100}, + title = {A comparison of automated and manual co-registration for magnetoencephalography}, + volume = {15}, + year = {2020} +} + @article{Hyvarinen1999, author = {Hyvärinen, Aapo}, doi = {10.1109/72.761722}, @@ -1302,7 +1382,8 @@ shorttitle = {Standardized Low-Resolution Brain Electromagnetic Tomography ({{sLORETA}})}, title = {Standardized Low-Resolution Brain Electromagnetic Tomography ({{sLORETA}}): Technical Details}, volume = {24}, - year = {2002} + year = {2002}, + url = {https://pubmed.ncbi.nlm.nih.gov/12575463/} } @article{Pascual-Marqui2011, @@ -1323,7 +1404,7 @@ publisher = {{Cambridge University Press}}, shorttitle = {Spectral Analysis for Physical Applications}, title = {Spectral Analysis for Physical Applications: Multitaper and Conventional Univariate Techniques}, - url = {https://www.cambridge.org/us/academic/subjects/physics/mathematical-methods/spectral-analysis-physical-applications}, + doi = {10.1017/CBO9780511622762}, year = {1993} } @@ -1377,11 +1458,13 @@ @article{pollonini2014auditory, title={Auditory cortex activation to natural speech and simulated cochlear implant speech measured with functional near-infrared spectroscopy}, author={Pollonini, Luca and Olds, Cristen and Abaya, Homer and Bortfeld, Heather and Beauchamp, Michael S and Oghalai, John S}, - journal={Hearing research}, + journal={Hearing Research}, volume={309}, pages={84--93}, year={2014}, - publisher={Elsevier} + publisher={Elsevier}, + pmid={24342740}, + doi={10.1016/j.heares.2013.11.007} } @article{RidgwayEtAl2012, @@ -1418,6 +1501,19 @@ year = {2011} } +@article{RockhillEtAl2022, + doi = {10.21105/joss.03897}, + url = {https://doi.org/10.21105/joss.03897}, + year = {2022}, + publisher = {The Open Journal}, + volume = {7}, + number = {70}, + pages = {3897}, + author = {Alexander P. Rockhill and Eric Larson and Brittany Stedelin and Alessandra Mantovani and Ahmed M. Raslan and Alexandre Gramfort and Nicole C. Swann}, + title = {Intracranial Electrode Location and Analysis in MNE-Python}, + journal = {Journal of Open Source Software} +} + @article{Rousselet2012, author = {Rousselet, Guillaume A.}, doi = {10.3389/fpsyg.2012.00131}, @@ -1465,6 +1561,16 @@ doi = {10.1016/j.neuroimage.2020.116893} } +@article{Samuelsson2019, + author = {Samuelsson, John and Khan, Sheraz and Sundaram, Padma and Peled, Noam and Hämäläinen, Matti}, + title = {Cortical Signal Suppression (CSS) for detection of subcortical activity using MEG and EEG}, + journal = {Brain Topography}, + year = {2019}, + volume = {32}, + pages = {215-228}, + doi = {10.1007/s10548-018-00694-5} +} + @article{Sarvas1987, author = {Sarvas, Jukka}, doi = {10.1088/0031-9155/32/1/004}, @@ -1477,6 +1583,18 @@ year = {1987} } +@article{Sassenhagen2019, +author = {Sassenhagen, Jona and Draschkow, Dejan}, +doi = {10.1111/psyp.13335}, +journal = {Psychophysiology}, +volume = {56}, +number = {6}, +pages = {e13335}, +keywords = {cluster-based permutation test, EEG, MEG, statistics}, +title = {Cluster-based permutation tests of MEG/EEG data do not establish significance of effect latency or location}, +year = {2019} +} + @article{SavitzkyGolay1964, author = {Savitzky, Abraham and Golay, Marcel J. E.}, doi = {10.1021/ac60214a047}, @@ -1697,6 +1815,22 @@ year = {2006} } +@article{TenkeKayser2001, + title = {A convenient method for detecting electrolyte bridges in multichannel electroencephalogram and event-related potential recordings}, + volume = {112}, + issn = {1388-2457}, + doi = {10.1016/s1388-2457(00)00553-8}, + language = {eng}, + number = {3}, + journal = {Clinical Neurophysiology: Official Journal of the International Federation of Clinical Neurophysiology}, + author = {Tenke, C. E. and Kayser, J.}, + month = mar, + year = {2001}, + pmid = {11222978}, + keywords = {Algorithms, Artifacts, Brain, Electrodes, Electroencephalography, Electrolytes, Evoked Potentials, Humans, Scalp}, + pages = {545--550} +} + @article{TescheEtAl1995, author = {Tesche, Claudia D. and Uusitalo, Mikko A. and Ilmoniemi, Risto J. and Huotilainen, Minna and Kajola, Matti J. and Salonen, Oili L. M.}, doi = {10.1016/0013-4694(95)00064-6}, @@ -1817,6 +1951,19 @@ year = {2010} } +@article{WhithamEtAl2007, + title = {Scalp electrical recording during paralysis: quantitative evidence that {EEG} frequencies above 20 {Hz} are contaminated by {EMG}}, + volume = {118}, + issn = {1388-2457}, + doi = {10.1016/j.clinph.2007.04.027}, + number = {8}, + journal = {Clinical Neurophysiology: Official Journal of the International Federation of Clinical Neurophysiology}, + author = {Whitham, Emma M. and Pope, Kenneth J. and Fitzgibbon, Sean P. and Lewis, Trent and Clark, C. Richard and Loveless, Stephen and Broberg, Marita and Wallace, Angus and DeLosAngeles, Dylan and Lillie, Peter and Hardy, Andrew and Fronsko, Rik and Pulbrook, Alyson and Willoughby, John O.}, + year = {2007}, + pmid = {17574912}, + pages = {1877--1888}, +} + @article{WidmannEtAl2015, author = {Widmann, Andreas and Schröger, Erich and Maess, Burkhard}, doi = {10.1016/j.jneumeth.2014.08.002}, @@ -2087,3 +2234,63 @@ year = {2019}, pages = {2331216519871395} } + +@article{DeledalleEtAl2014, + author = {Deledalle, Charles-Alban and Vaiter, Samuel and Fadili, Jalal and Peyré, Gabriel}, + title = {Stein Unbiased GrAdient estimator of the Risk (SUGAR) for Multiple Parameter Selection}, + journal = {SIAM Journal on Imaging Sciences}, + volume = {7}, + number = {4}, + pages = {2448-2487}, + year = {2014}, + doi = {10.1137/140968045}, + URL = {https://doi.org/10.1137/140968045} +} + +@InProceedings{BertrandEtAl2020, + title = { Anderson acceleration of coordinate descent }, + author = {Bertrand, Quentin and Massias, Mathurin}, + booktitle = {Proceedings of The 24th International Conference on Artificial Intelligence and Statistics}, + pages = {1288--1296}, + year = {2021}, + editor = {Banerjee, Arindam and Fukumizu, Kenji}, + volume = {130}, + series = {Proceedings of Machine Learning Research}, + month = {13--15 Apr}, + publisher = {PMLR}, + pdf = {http://proceedings.mlr.press/v130/bertrand21a/bertrand21a.pdf}, + url = {http://proceedings.mlr.press/v130/bertrand21a.html} +} + +@book{Luck2014, + title = {An Introduction to the Event-Related Potential Technique}, + author = {Luck, Steven J}, + year = {2014}, + edition = {2nd}, + publisher = {The MIT Press}, + address = {Cambridge, MA}, + url = {https://mitpress.mit.edu/books/introduction-event-related-potential-technique-second-edition}, + isbn = {978-0-262-52585-5} +} + +@article{Lopez-CalderonLuck2014, + title = {ERPLAB: An Open-Source Toolbox for the Analysis of Event-Related Potentials}, + author = {Lopez-Calderon, Javier and Luck, Steven J.}, + year = {2014}, + journal = {Frontiers in Human Neuroscience}, + volume = {8}, + issn = {1662-5161}, + doi = {10.3389/fnhum.2014.00213} +} + +@article{LuckGaspelin2017, + title = {How to Get Statistically Significant Effects in Any {{ERP}} Experiment (and Why You Shouldn't)}, + author = {Luck, Steven J. and Gaspelin, Nicholas}, + year = {2017}, + journal = {Psychophysiology}, + volume = {54}, + number = {1}, + pages = {146--157}, + issn = {1469-8986}, + doi = {10.1111/psyp.12639}, +} diff -Nru python-mne-0.23.4+dfsg/doc/source_space.rst python-mne-1.1.0+dfsg/doc/source_space.rst --- python-mne-0.23.4+dfsg/doc/source_space.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/source_space.rst 2022-08-03 15:48:14.000000000 +0000 @@ -17,8 +17,6 @@ VolVectorSourceEstimate SourceMorph compute_source_morph - head_to_mni - head_to_mri extract_label_time_course grade_to_tris grade_to_vertices @@ -33,12 +31,11 @@ read_label read_source_estimate read_source_morph - read_talxfm split_label stc_to_label stc_near_sensors transform_surface_to - vertex_to_mni write_labels_to_annot write_label source_space.compute_distance_to_sensors + source_space.get_decimated_surfaces diff -Nru python-mne-0.23.4+dfsg/doc/sphinxext/gh_substitutions.py python-mne-1.1.0+dfsg/doc/sphinxext/gh_substitutions.py --- python-mne-0.23.4+dfsg/doc/sphinxext/gh_substitutions.py 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/sphinxext/gh_substitutions.py 2022-08-03 15:48:14.000000000 +0000 @@ -4,12 +4,12 @@ from docutils.parsers.rst.roles import set_classes -# adapted from -# https://doughellmann.com/blog/2010/05/09/defining-custom-roles-in-sphinx/ - - def gh_role(name, rawtext, text, lineno, inliner, options={}, content=[]): - """Link to a GitHub issue.""" + """Link to a GitHub issue. + + adapted from + https://doughellmann.com/blog/2010/05/09/defining-custom-roles-in-sphinx/ + """ try: # issue/PR mode (issues/PR-num will redirect to pull/PR-num) int(text) diff -Nru python-mne-0.23.4+dfsg/doc/sphinxext/newcontrib_substitutions.py python-mne-1.1.0+dfsg/doc/sphinxext/newcontrib_substitutions.py --- python-mne-0.23.4+dfsg/doc/sphinxext/newcontrib_substitutions.py 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/sphinxext/newcontrib_substitutions.py 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +from docutils.nodes import reference, strong, target + + +def newcontrib_role(name, rawtext, text, lineno, inliner, options={}, + content=[]): + """Create a role to highlight new contributors in changelog entries.""" + newcontrib = f'new contributor {text}' + alias_text = f' <{text}_>' + rawtext = f'`{newcontrib}{alias_text}`_' + refname = text.lower() + strong_node = strong(rawtext, newcontrib) + target_node = target(alias_text, refname=refname, names=[newcontrib]) + target_node.indirect_reference_name = text + options.update(refname=refname, name=newcontrib) + ref_node = reference('', '', strong_node, **options) + ref_node[0].rawsource = rawtext + inliner.document.note_indirect_target(target_node) + inliner.document.note_refname(ref_node) + return [ref_node, target_node], [] + + +def setup(app): + app.add_role('newcontrib', newcontrib_role) + return diff -Nru python-mne-0.23.4+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.css python-mne-1.1.0+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.css --- python-mne-0.23.4+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.css 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.card-header a { - display: block !important; - text-decoration: none; -} -@media (max-width: 991px) { - .collapse.show{ - display:block !important; - } - } diff -Nru python-mne-0.23.4+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.js python-mne-1.1.0+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.js --- python-mne-0.23.4+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.js 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/sphinxext/sphinx_bootstrap_divs/bootstrap_divs.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -$(document).ready(function () { - if(location.hash != null && location.hash != ""){ - $('.collapse').removeClass('show'); - $(location.hash + '.collapse').addClass('show'); - } -}); diff -Nru python-mne-0.23.4+dfsg/doc/sphinxext/sphinx_bootstrap_divs/__init__.py python-mne-1.1.0+dfsg/doc/sphinxext/sphinx_bootstrap_divs/__init__.py --- python-mne-0.23.4+dfsg/doc/sphinxext/sphinx_bootstrap_divs/__init__.py 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/sphinxext/sphinx_bootstrap_divs/__init__.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,196 +0,0 @@ -"""A .. collapse:: directive for sphinx-bootstrap-theme.""" - -import os.path as op -from docutils import nodes -from docutils.parsers.rst.directives import flag, class_option -from docutils.parsers.rst.roles import set_classes -from docutils.statemachine import StringList - -from sphinx.locale import _ -from sphinx.util.docutils import SphinxDirective -from sphinx.util.fileutil import copy_asset - -this_dir = op.dirname(__file__) - -__version__ = '0.1.0.dev0' - - -############################################################################### -# Super classes - -class DivNode(nodes.Body, nodes.Element): - """Generic DivNode class.""" - - def __init__(self, **options): - diff = set(options.keys()).symmetric_difference(set(self.OPTION_KEYS)) - assert len(diff) == 0, (diff, self.__class__.__name__) - self.options = options - super().__init__() - - def visit_node(self, node): - """Visit the node.""" - atts = {} - if node.BASECLASS: - atts['class'] = node.BASECLASS - if node.options.get('class'): - atts['class'] += \ - ' {}-{}'.format(node.BASECLASS, node.options['class']) - self.body.append(self.starttag(node, node.ELEMENT, **atts)) - - def depart_node(self, node): - """Depart the node.""" - self.body.append(''.format(node.ELEMENT)) - - -def _assemble(node, directive): - title_text = directive.arguments[0] - directive.add_name(node) - header = node.HEADER_PRETITLE.format(**node.options).split('\n') - directive.state.nested_parse( - StringList(header), directive.content_offset, node) - - textnodes, messages = directive.state.inline_text( - title_text, directive.lineno) - node += textnodes - node += messages - - header = node.HEADER_POSTTITLE.format(**node.options).split('\n') - directive.state.nested_parse( - StringList(header), directive.content_offset, node) - - directive.state.nested_parse( - directive.content, directive.content_offset, node) - - footer = node.FOOTER.format(**node.options).split('\n') - directive.state.nested_parse( - StringList(footer), directive.content_offset, node) - - -############################################################################### -# .. collapse:: - -class CollapseNode(DivNode): - """Class for .. collapse:: directive.""" - - OPTION_KEYS = ('title', 'id_', 'extra', 'class') - ELEMENT = 'div' - BASECLASS = 'card' - HEADER_PRETITLE = """.. raw:: html - -
-
-
-
""" - FOOTER = """.. raw:: html - -
""" - KNOWN_CLASSES = ( - 'default', 'primary', 'success', 'info', 'warning', 'danger') - - @staticmethod - def _check_class(class_): - if class_ not in CollapseNode.KNOWN_CLASSES: - raise ValueError(':class: option %r must be one of %s' - % (class_, CollapseNode.KNOWN_CLASSES)) - return class_ - - -class CollapseDirective(SphinxDirective): - """Collapse directive.""" - - required_arguments = 1 - optional_arguments = 0 - final_argument_whitespace = True - option_spec = {'open': flag, - 'class': CollapseNode._check_class} - has_content = True - - def run(self): - """Parse.""" - self.assert_has_content() - title_text = _(self.arguments[0]) - extra = _(' show' if 'open' in self.options else '') - class_ = {'class': self.options.get('class', 'default')} - id_ = nodes.make_id(title_text) - node = CollapseNode(title=title_text, id_=id_, extra=extra, **class_) - _assemble(node, self) - return [node] - - -############################################################################### -# .. details:: - -class DetailsNode(DivNode): - """Class for .. details:: directive.""" - - ELEMENT = 'details' - BASECLASS = '' - OPTION_KEYS = ('title', 'class') - HEADER_PRETITLE = """.. raw:: html - - """ - HEADER_POSTTITLE = """.. raw:: html - - """ - FOOTER = """""" - - -class DetailsDirective(SphinxDirective): - """Details directive.""" - - required_arguments = 1 - optional_arguments = 0 - final_argument_whitespace = True - option_spec = {'class': class_option} - has_content = True - - def run(self): - """Parse.""" - set_classes(self.options) - self.assert_has_content() - title_text = _(self.arguments[0]) - class_ = {'class': self.options.get('class', '')} - node = DetailsNode(title=title_text, **class_) - _assemble(node, self) - return [node] - - -############################################################################### -# Generic setup - -def setup(app): - """Set up for Sphinx app.""" - directives = dict( - collapse=CollapseDirective, - details=DetailsDirective, - ) - for key, value in directives.items(): - app.add_directive(key, value) - try: - app.add_css_file('bootstrap_divs.css') - except AttributeError: - app.add_stylesheet('bootstrap_divs.css') - try: - app.add_js_file('bootstrap_divs.js') - except AttributeError: - app.add_javascript('bootstrap_divs.js') - app.connect('build-finished', copy_asset_files) - for node in (CollapseNode, DetailsNode): - app.add_node(node, - html=(node.visit_node, node.depart_node), - latex=(node.visit_node, node.depart_node), - text=(node.visit_node, node.depart_node)) - return dict(version='0.1', parallel_read_safe=True, - parallel_write_safe=True) - - -def copy_asset_files(app, exc): - """Copy static assets.""" - asset_files = ['bootstrap_divs.css', 'bootstrap_divs.js'] - if exc is None: # build succeeded - for path in asset_files: - copy_asset(op.join(this_dir, path), - op.join(app.outdir, '_static')) Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/blender_import_obj/blender_import_obj4.jpg and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/blender_import_obj/blender_import_obj4.jpg differ Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/branch_dropdown.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/branch_dropdown.png differ Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/forking_button.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/forking_button.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/funding/anr.svg python-mne-1.1.0+dfsg/doc/_static/funding/anr.svg --- python-mne-0.23.4+dfsg/doc/_static/funding/anr.svg 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/funding/anr.svg 2022-08-03 15:48:14.000000000 +0000 @@ -1,6 +1,73 @@ - - - - - - \ No newline at end of file + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/funding/erc-dark.svg python-mne-1.1.0+dfsg/doc/_static/funding/erc-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/funding/erc-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/funding/erc-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/funding/erc.svg python-mne-1.1.0+dfsg/doc/_static/funding/erc.svg --- python-mne-0.23.4+dfsg/doc/_static/funding/erc.svg 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/funding/erc.svg 2022-08-03 15:48:14.000000000 +0000 @@ -653,10 +653,10 @@ + style="font-size:11.48947048px;fill:#000000;stroke:#000000;stroke-width:2.71288204;stroke-miterlimit:4;stroke-opacity:1" /> + style="font-size:11.79311562px;fill:#000000;stroke:#000000;stroke-width:2.78472114;stroke-miterlimit:4;stroke-opacity:1" /> Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/funding/nih.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/funding/nih.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/funding/nih.svg python-mne-1.1.0+dfsg/doc/_static/funding/nih.svg --- python-mne-0.23.4+dfsg/doc/_static/funding/nih.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/funding/nih.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,83 @@ + + + + + NIH Intramural Research Program: Our Research Changes Lives + + + + NIH Intramural Research Program: Our Research Changes Lives + image/svg+xml + + + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aalto-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aalto-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aalto-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aalto-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,2466 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + 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 +fv3u3cu711+efSUgtCTtYE/h10/h10/h17MeP9Mp9AnOoc/r8XuJd/wOmZ0Pev5b9fhoP5+ez/rX +0OM2p/Yp/v4p/v4p/v4p/v4B0fKPfh79RU7hv5Ts8Vky1j9zoEBoT0H4T0H4fx0h84/f419pyPzj +9/gUhP93EIT/XUI773ke3OODnfrQ46eGAfx19fgX0S539QmfMiyeMiz6c7/Mer+0/JRhoc9ThsVT +hsWnZlj80yNb0r5fi+TnPX/Np/nnyDDT7/7zU+rMU+rMU+rMU+rMnyd1hkxuD8yfWbc9nkQztLs3 +k2bd9ng6DWeqPCynZt32v31izTb24czNIiIACv2PMRFPZ8fT2fF0dvx9nh1PJpsnk82TyebJZPNk +snky2TyZbP6sJpunkIUHPU8hC99HgMHj9/hXGmDwFLLwFLLwFLLwV9rjX0TyeAr7fgr7fgr7fgr7 +fgr7fqAZ+7EM459lrp+HfT+lcz6lcz6lc9LzmZzkszjKp/T4vfDRp3TO5Smdc3/F36N44B8zJuD7 +iFj4XiIrvocIkMeLUPmsmAg/D4rwq6Kj/0QxDL1S0TEH6VytmCoWJyoWzR2lx9QLUzCeP1upGHMl +45jDdFAzjHk+gvN3VJhACLjf+ftJ6hIIKp/t+kV1yW6qZT37pj8rD2AvLeeHJwxPHB5AMyjqXCAw +D08ZnrmZYe5eWzu8jrmm5kr/Tqnf1OHqlbh6La5O4Z0OOiV0WljROVXpc1RxLKzKATWqVnbZCwER +ZXRlutP7huKpoqwbaKSr1Z1SOq10aun0QhSzNfOsROFjwvDcTDkVh2Gcx0TiuVB87y3qgMtRMJ6L +xsciPQbhWNf6L6QmfILxFkNFHkNJsJgmNlWN1D+WPOwmsvFn3FkbJ5uZ8o45pPp+LpOCoZOiodDj +unTounyoH3jOWJhx4FA8UJ1xv89b1qWvTF+bvjpdjetrtKJbWJFLq1hY5D52NbUr9fb16ivW12xD +wbAJL6XWYLUag7x6nY47JVvUUlf0yFC8q9bxdD4/nc9P5/PT+fx0Pj+dz0/n81/Z+UzmF3gdGgaA +DTTU5yP+G1JuM6X//raaVJEKWgUStagwDjUOlHq+1NZWhp372nKfp9+dwnkLPj94rNr+vvH6Txiv +/4TxPhyrn29MmdtSyJTi1/e3LNv6z/dVgL5HtgFefFq+uS/4fOeyhfNiLeWcdNveK+eApPP82QlZ +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 +eH1x7zmu+9ms7ZI94r3c4HG8g5Kt6tU8v1/6XdVbeb5F+n1+v/i7rj389IBX/u2ri/M3m7PbZyCi +tX38Noz6rzeX13fP9hFuf0N6c/+VPm6StzFruhMPUuqO48p2sUWv+5/7d+HWdhj/80uZGj4tTvi6 +kay/vNk1blVs8PXdz5v7HTUbpr3H5zebm9t//fHlbkPsbyRI4i4Wm3tz++Ls/OLb87M99riqWLXp +yhf7Ypb4bz+9urm+uN7H3rKqzS2Wv2uDpzfXr+/O9tngGvfXV//eQs9H4u5YISH8NMj6Pq6b1Vps +Pk0PzsdJAT4oh+eedGBzeffXs8udXOmDIwQrpGuPIwJnt5d3L68u7tZ14ybEYLKxf+6y0gxuzDXt +BNa72MMuEWyte7Bb9uA/LEET1rvYw/3vfV17cA9gjn+6uP3h12KM2z4N//vD5svrNNZfPsQN9JGc +yBqliv3O4wm+tP8s72vwduuKNHmYuXtlm3h4FFNY10YeGcW0st08Lorpq4u3F5tvX549v/lxlXkp +H3CUz59ubl+9vNnc/HAvvfoNWdTt2fPLN/dHhtmTVWU/y6qXeu+Ha/96sGFiVfvYZQ== + + + kdhbi39+uTlbl5tptwa/B4ld1eHsQVO3CNoHMrZCMraue/WIcMs17eNAvFZ8OA8iXh9FsOiqTuER +T31V+sVO18kez2JVG9mW9LFHmOvxumJEf37A4z6kxP/Sx7I9JX4fmrWuJ/IIorUugfGJsvpXtamn +y+pfVTDfp5TV/94cdFUX8EGS5deXr19tzs4vri6u7/509mrFHOiTIte7fPmrItf7hOes7Ilsi8zZ +56Gv6jy2ico/n748u76+2Hx7sbk430fH/3JNO1qufr6/n953f39b0/6Wq1+w0r3C/Fd1DV9rfP/7 +sZxTSMP401kbd6/zeO0Kz9W7dvGBqTqruluP4Z2rsgg8xj6zqo1sYzq4kPtFf3Mk/z1a/Kud/Oua +Niybe2/69huUxZis4Oz68mq3+X4NtPXF5WazhzHp4uJ/VmVGomXPD1zH/RmXfl+4+v31Ln6Tvc12 +sbjVtzdXH1ZoLq14vo+7mw/L+gLrne/h+f1k5fO4iyr/NmbxN1sk3iY9nv/p5v7A1883l9cXZ6uK +9O1LXxCD8/M3V2/e4T0dDWLXq6Ju49IX23r+/PLu8u39m7q9QGvSqvala98iUN6d3e4RmbT58ezn +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 +C0js2Fs= + + + \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aarhus-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aarhus-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aarhus-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aarhus-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,65 @@ + + + + + + image/svg+xml + + + + + + + + + + + Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aarhus.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aarhus.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aarhus.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aarhus.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Aarhus.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Aarhus.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,65 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/BIDS-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/BIDS-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/BIDS-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/BIDS-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,318 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/institution_logos/BIDS.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/institution_logos/BIDS.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/BIDS.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/BIDS.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/BIDS.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/BIDS.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,318 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/CHOP-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/CHOP-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/CHOP-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/CHOP-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1 @@ +CHOP_HORIZ_WHITE_HEADER \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/CHOP.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/CHOP.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/CHOP.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/CHOP.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1 @@ +CHOP_HORIZ_BLUE_HEADER \ No newline at end of file Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/institution_logos/Graz.jpg and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/institution_logos/Graz.jpg differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Graz.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Graz.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Graz.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Graz.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1 @@ + \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Ilmenau-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Ilmenau-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Ilmenau-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Ilmenau-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/institution_logos/Ilmenau.gif and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/institution_logos/Ilmenau.gif differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Ilmenau.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Ilmenau.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Ilmenau.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Ilmenau.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Inserm-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Inserm-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Inserm-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Inserm-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,46 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Inserm.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Inserm.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Inserm.svg 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Inserm.svg 2022-08-03 15:48:14.000000000 +0000 @@ -12,21 +12,21 @@ - + - + - + - + - + - + diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Julich-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Julich-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Julich-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Julich-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,55 @@ + + + + + + + + image/svg+xml + + + + + Logo_FZ_Juellich_RGB_schutzzone_weiss + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Julich.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Julich.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Julich.svg 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Julich.svg 2022-08-03 15:48:14.000000000 +0000 @@ -5,37 +5,51 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - id="Ebene_1" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" data-name="Ebene 1" - viewBox="0 0 159.99999 49.000001" version="1.1" - width="160" - height="49"> + viewBox="0 0 155.91 45.301" + id="svg10" + sodipodi:docname="Logo_FZ_Juellich_RGB_schutzzone_weiss.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + id="metadata2"> image/svg+xml - Logo_FZ_Juellich_RGB_schutzzone_weiss - Logo_FZ_Juellich_RGB_schutzzone_weiss - + id="title4">Logo_FZ_Juellich_RGB_schutzzone_weiss + d="m94.289 36.93h-0.64001a0.23 0.23 0 0 0-0.23 0.24v2.81c0 0.83001-0.42001 1.28-1.06 1.28-0.64001 0-1-0.45-1-1.28v-2.81a0.25 0.25 0 0 0-0.25001-0.24h-0.63a0.24 0.24 0 0 0-0.24 0.24v2.68c0 1.45 0.59 2.35 1.81 2.35a1.51 1.51 0 0 0 1.38-0.66001v0.32a0.23 0.23 0 0 0 0.23 0.24h0.64001a0.24 0.24 0 0 0 0.24-0.24v-4.69a0.24 0.24 0 0 0-0.25-0.24zm-8.0001-0.11a1.58 1.58 0 0 0-1.43 0.70001v-2.41a0.25 0.25 0 0 0-0.25-0.25h-0.63001a0.24 0.24 0 0 0-0.24 0.25v6.7501a0.23 0.23 0 0 0 0.24 0.24h0.67001a0.24 0.24 0 0 0 0.25-0.24v-2.8c0-0.83001 0.45001-1.29 1.1-1.29 0.65001 0 1.09 0.46 1.09 1.29v2.8a0.24 0.24 0 0 0 0.24001 0.24h0.63a0.24 0.24 0 0 0 0.25-0.24v-2.68c-0.01-1.41-0.62-2.36-1.89-2.36zm1.71-28.84h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v11.88c0 3.09-1.5 4.41-3.63 4.41s-3.57-1.32-3.57-4.41v-11.88a0.93001 0.93001 0 0 0-0.93-0.93001h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v11.88c0 5.2501 3.18 8.4901 7.9201 8.4901s8.0001-3.24 8.0001-8.4901v-11.88a0.93001 0.93001 0 0 0-0.92001-0.93001zm-17.46 29h-0.13001a1.57 1.57 0 0 0-1.38 0.77001v-0.53a0.23 0.23 0 0 0-0.23-0.24h-0.58001a0.24 0.24 0 0 0-0.24 0.24v4.69a0.23 0.23 0 0 0 0.24 0.24h0.62001a0.25 0.25 0 0 0 0.25-0.24v-2.39c0-1 0.44001-1.49 1.31-1.49h0.14001a0.24 0.24 0 0 0 0.25-0.23v-0.63001a0.25 0.25 0 0 0-0.22-0.24zm9.4101 0.84001a1.07 1.07 0 0 1 1.08 0.92001 0.17 0.17 0 0 0 0.17 0.15h0.72001a0.15 0.15 0 0 0 0.15-0.17 0.32 0.32 0 0 0 0-0.13 2.11 2.11 0 0 0-2.1-1.72 2.19 2.19 0 0 0-2.2 2.36v0.67001a2.18 2.18 0 0 0 2.2 2.35 2.07 2.07 0 0 0 2.1-1.66 1.28 1.28 0 0 0 0-0.17 0.16 0.16 0 0 0-0.17-0.16h-0.72001a0.15 0.15 0 0 0-0.16 0.14 1 1 0 0 1-1.07 0.91001c-0.64001 0-1.11-0.45-1.11-1.28v-0.92001c0.03-0.88001 0.5-1.34 1.14-1.34zm-6.6301 0.52c0-0.43 0.39001-0.57 0.84001-0.57a0.88001 0.88001 0 0 1 1 0.64001c0 0.11 0.07 0.16 0.19 0.16h0.65001a0.17 0.17 0 0 0 0.17-0.18 0.44 0.44 0 0 0 0-0.13 1.81 1.81 0 0 0-1.93-1.39c-1 0-2 0.45-2 1.52 0 2.1 2.94 1.23 2.94 2.31 0 0.48-0.36 0.66001-1 0.66001a1 1 0 0 1-1.06-0.69001c0-0.1-0.07-0.17-0.18-0.17h-0.64001a0.19 0.19 0 0 0-0.19 0.17 0.31 0.31 0 0 0 0 0.14 1.89 1.89 0 0 0 2 1.44c1.07 0 2-0.4 2-1.57 0.17-2.12-2.76-1.26-2.76-2.39zm4.66-32.14a2.16 2.16 0 1 0-2.16-2.16 2 2 0 0 0 2.19 2.11zm6.3001 0a2.16 2.16 0 1 0-2.16-2.16 2 2 0 0 0 2.19 2.11zm-15.88 2.76a0.93001 0.93001 0 0 0-0.93001-0.93001h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v13.51a2.54 2.54 0 1 1-5.07 0v-0.27a0.93001 0.93001 0 0 0-0.93001-0.93001h-2.4a0.93001 0.93001 0 0 0-0.93001 0.93001v0.21a6.8401 6.8401 0 1 0 13.68 0zm-52.131 10.34 7.3801-19.17a22.7 22.7 0 0 0-22.61 12.2 0.50001 0.50001 0 0 1 0 0.13l-0.32 0.83001c-2.24 5.7901 1.18 10.08 4.5 11.36a8.5501 8.5501 0 0 0 11.05-5.3501zm47.76 17.52a2.2 2.2 0 0 0-2.22 2.36v0.67001a2.23 2.23 0 1 0 4.46 0v-0.67001a2.2 2.2 0 0 0-2.24-2.36zm1.12 3.16c0 0.83001-0.46 1.28-1.12 1.28s-1.1-0.45-1.1-1.28v-0.92001c0-0.83001 0.47-1.29 1.1-1.29s1.12 0.46 1.12 1.29zm-35.5-15.71c-4.4 11.5-15 15.81-24.71 14.15a22.67 22.67 0 1 0 31.77-32.33zm31 10.59h-4a0.24 0.24 0 0 0-0.23 0.25v6.7501a0.23 0.23 0 0 0 0.23 0.24h0.63001a0.24 0.24 0 0 0 0.25-0.24v-2.65h2.5a0.24 0.24 0 0 0 0.24-0.24v-0.55001a0.25 0.25 0 0 0-0.24-0.25h-2.5v-2.27h3.12a0.25 0.25 0 0 0 0.25-0.24v-0.55a0.25 0.25 0 0 0-0.25-0.25zm85.451 2.07h-0.63a0.24 0.24 0 0 0-0.24001 0.24v2.81c0 0.83001-0.42 1.28-1.06 1.28-0.64 0-1-0.45-1-1.28v-2.81a0.25 0.25 0 0 0-0.25-0.24h-0.63001a0.24 0.24 0 0 0-0.24 0.24v2.68c0 1.45 0.59001 2.35 1.81 2.35a1.51 1.51 0 0 0 1.38-0.66001v0.32a0.23 0.23 0 0 0 0.24001 0.24h0.63a0.24 0.24 0 0 0 0.24-0.24v-4.69a0.24 0.24 0 0 0-0.28-0.24zm-10.59-15.45h-3.09c-0.6 0-0.72 0.48-0.78001 0.93001a3.13 3.13 0 0 1-3.42 2.79c-2.19 0-4-1.62-4-4.71v-4c0-3.09 1.77-4.77 4-4.77a3.27 3.27 0 0 1 3.43 2.92c0.09 0.60001 0.42 0.81001 0.75 0.81001h3.06a0.63001 0.63001 0 0 0 0.66001-0.75001 7.5501 7.5501 0 0 0-7.9001-7.0601c-4.8 0-8.3101 3.54-8.3101 8.7901v4c0 5.2501 3.51 8.7901 8.3101 8.7901a7.7101 7.7101 0 0 0 8.0001-7.0801 0.68001 0.68001 0 0 0-0.71001-0.66001zm4.6 15.45h-0.14a1.54 1.54 0 0 0-1.37 0.77001v-0.53a0.24 0.24 0 0 0-0.24001-0.24h-0.58a0.24 0.24 0 0 0-0.24001 0.24v4.69a0.23 0.23 0 0 0 0.24001 0.24h0.62a0.25 0.25 0 0 0 0.25001-0.24v-2.34c0-1 0.44-1.49 1.31-1.49h0.15a0.23 0.23 0 0 0 0.24-0.23v-0.63001a0.24 0.24 0 0 0-0.24-0.24zm-4.69 0h-1.05v-1.1a0.24 0.24 0 0 0-0.24-0.25h-0.61001a0.24 0.24 0 0 0-0.23 0.25v0.45c0 0.53-0.21 0.65001-0.72001 0.65001a0.24 0.24 0 0 0-0.24 0.24v0.47a0.24 0.24 0 0 0 0.24 0.24h0.71001v2.56c0 1.07 0.36001 1.66 1.6 1.66h0.54a0.24 0.24 0 0 0 0.24001-0.24v-0.53a0.23 0.23 0 0 0-0.24001-0.23h-0.36c-0.62001 0-0.69001-0.22-0.69001-0.81001v-2.38h1.05a0.24 0.24 0 0 0 0.23001-0.27v-0.5a0.24 0.24 0 0 0-0.23001-0.21zm18.62-0.11a1.81 1.81 0 0 0-1.61 0.84001 1.64 1.64 0 0 0-1.52-0.84001 1.47 1.47 0 0 0-1.34 0.70001v-0.35a0.25 0.25 0 0 0-0.25001-0.24h-0.67a0.24 0.24 0 0 0-0.24 0.24v4.69a0.23 0.23 0 0 0 0.24 0.24h0.63a0.25 0.25 0 0 0 0.25001-0.24v-2.64c0-0.83001 0.16-1.45 1-1.45s1 0.51 1 1.45v2.64a0.24 0.24 0 0 0 0.24 0.24h0.64001a0.24 0.24 0 0 0 0.24-0.24v-2.64c0-0.89001 0.21-1.45 1.05-1.45s1 0.56 1 1.45v2.64a0.23 0.23 0 0 0 0.24 0.24h0.71001a0.25 0.25 0 0 0 0.25-0.24v-2.53c-0.04-1.49-0.34-2.51-1.86-2.51zm-25 0a1.57 1.57 0 0 0-1.42 0.71001v-0.36a0.24 0.24 0 0 0-0.24-0.24h-0.64a0.23 0.23 0 0 0-0.23001 0.24v4.69a0.23 0.23 0 0 0 0.23001 0.24h0.64a0.24 0.24 0 0 0 0.24-0.24v-2.8c0-0.83001 0.46001-1.29 1.1-1.29 0.64 0 1.1 0.46 1.1 1.29v2.8a0.23 0.23 0 0 0 0.24 0.24h0.59a0.24 0.24 0 0 0 0.24001-0.24v-2.68c0.02-1.41-0.60001-2.36-1.87-2.36zm26-28.84h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v7.5001h-7.1701v-7.5001a0.93001 0.93001 0 0 0-0.93-0.93001h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v19.14a0.93001 0.93001 0 0 0 0.93001 0.93001h2.49a0.93001 0.93001 0 0 0 0.93-0.93001v-7.5601h7.1101v7.5601a0.93001 0.93001 0 0 0 0.93001 0.93001h2.49a0.93001 0.93001 0 0 0 0.93001-0.93001v-19.14a0.93001 0.93001 0 0 0-0.93001-0.93001zm-55.821 28.84a1.57 1.57 0 0 0-1.42 0.71001v-0.36a0.24 0.24 0 0 0-0.24-0.24h-0.63001a0.24 0.24 0 0 0-0.24 0.24v4.69a0.23 0.23 0 0 0 0.24 0.24h0.63001a0.24 0.24 0 0 0 0.24-0.24v-2.8c0-0.83001 0.46001-1.29 1.1-1.29 0.64001 0 1.1 0.46 1.1 1.29v2.8a0.23 0.23 0 0 0 0.24001 0.24h0.63a0.25 0.25 0 0 0 0.25001-0.24v-2.68c0-1.41-0.62001-2.36-1.9-2.36zm6.6601 4.28h-1.34c-0.35 0-0.5-0.11-0.5-0.37a0.36 0.36 0 0 1 0.41-0.37h1a1.73 1.73 0 0 0 2-1.76v-2.12a0.24 0.24 0 0 0-0.24-0.24h-0.56001a0.24 0.24 0 0 0-0.24 0.24v0.67001a1.87 1.87 0 0 0-1.06-0.33h-0.26a1.77 1.77 0 0 0-2 1.78 1.4 1.4 0 0 0 0.66 1.26 0.83001 0.83001 0 0 0-0.7 0.85001 0.82001 0.82001 0 0 0 0.47 0.79001 1.26 1.26 0 0 0-0.70001 1.19 1.61 1.61 0 0 0 1.83 1.58h1.2a1.6 1.6 0 1 0 0-3.17zm-0.75-3.41h0.28a0.91001 0.91001 0 1 1 0 1.81h-0.28a0.87001 0.87001 0 0 1-1-0.90001 0.88001 0.88001 0 0 1 1-0.91001zm0.54 5.7201h-0.82001c-0.7 0-0.95001-0.28-0.95001-0.72001 0-0.44 0.25001-0.75001 0.95001-0.75001h0.80001c0.71001 0 1 0.29 1 0.75001 0 0.46-0.27 0.72001-1 0.72001zm4.6-5.1201c0-0.43 0.39-0.57001 0.84001-0.57001a0.89001 0.89001 0 0 1 1 0.64001c0 0.11 0.07 0.16 0.18 0.16h0.66001a0.17 0.17 0 0 0 0.17-0.18 0.44 0.44 0 0 0 0-0.13 1.81 1.81 0 0 0-1.93-1.39c-1 0-2 0.45-2 1.52 0 2.1 2.94 1.23 2.94 2.31 0 0.48-0.36001 0.66001-0.95001 0.66001a1 1 0 0 1-1.06-0.69001c0-0.1-0.07-0.17-0.18001-0.17h-0.65a0.18 0.18 0 0 0-0.18 0.17 0.31 0.31 0 0 0 0 0.14 1.88 1.88 0 0 0 2.05 1.44c1.07 0 2-0.4 2-1.57 0.04-2.07-2.89-1.21-2.89-2.34zm-3.11-10.24v-2.22a0.93001 0.93001 0 0 0-0.93001-0.93001h-8.0001v-16a0.93001 0.93001 0 0 0-0.93001-0.93001h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v19.15a0.93001 0.93001 0 0 0 0.93001 0.93001h11.4a0.93001 0.93001 0 0 0 0.95001-0.93001zm8.2501 0v-19.14a0.93001 0.93001 0 0 0-0.93001-0.93001h-2.49a0.93001 0.93001 0 0 0-0.93001 0.93001v19.14a0.93001 0.93001 0 0 0 0.93001 0.93001h2.49a0.93001 0.93001 0 0 0 0.93001-0.93001zm3 8.8801h-3.41a0.25 0.25 0 0 0-0.25001 0.24v0.47a0.24 0.24 0 0 0 0.25001 0.24h2.35l-2.41 3.08a0.56001 0.56001 0 0 0-0.19001 0.46v0.42a0.24 0.24 0 0 0 0.25001 0.24h3.41a0.23 0.23 0 0 0 0.24-0.24v-0.47a0.24 0.24 0 0 0-0.24-0.25h-2.39l2.48-3.07a0.53001 0.53001 0 0 0 0.15-0.41v-0.5a0.24 0.24 0 0 0-0.2-0.21zm4-0.11a2.21 2.21 0 0 0-2.24 2.36v0.67001a2.21 2.21 0 0 0 2.25 2.35 2.12 2.12 0 0 0 2-1.37 0.64001 0.64001 0 0 0 0-0.17 0.17 0.17 0 0 0-0.17-0.18h-0.67001a0.3 0.3 0 0 0-0.24 0.15 1 1 0 0 1-1 0.63001 1.14 1.14 0 0 1-1.13-1.23v-0.14h3.07a0.25 0.25 0 0 0 0.37-0.25v-0.48a2.2 2.2 0 0 0-2.19-2.34zm1.12 2.28h-2.24v-0.12a1.12 1.12 0 1 1 2.24 0z" + fill="#023d6b" + id="path8" /> diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Macquarie-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Macquarie-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Macquarie-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Macquarie-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,165 @@ + +image/svg+xml \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Macquarie.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Macquarie.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Macquarie.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Macquarie.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,222 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/MPIB-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/MPIB-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/MPIB-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/MPIB-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,3 @@ + + + minervampib-desktop-de \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/MPIB.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/MPIB.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/MPIB.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/MPIB.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,3 @@ + + + minervampib-desktop-de \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/NYU-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/NYU-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/NYU-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/NYU-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,66 @@ + +image/svg+xml \ No newline at end of file Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/institution_logos/NYU.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/institution_logos/NYU.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/NYU.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/NYU.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/NYU.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/NYU.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,66 @@ + +image/svg+xml \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/SWPS-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/SWPS-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/SWPS-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/SWPS-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,151 @@ + + + +image/svg+xml \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/SWPS.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/SWPS.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/SWPS.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/SWPS.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,151 @@ + + + +image/svg+xml \ No newline at end of file diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Washington-dark.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Washington-dark.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Washington-dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Washington-dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,34 @@ + + + + + + image/svg+xml + + + + + + + + + + Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/institution_logos/Washington.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/institution_logos/Washington.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/institution_logos/Washington.svg python-mne-1.1.0+dfsg/doc/_static/institution_logos/Washington.svg --- python-mne-0.23.4+dfsg/doc/_static/institution_logos/Washington.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/institution_logos/Washington.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,34 @@ + + + + + + image/svg+xml + + + + + + + + + + Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/mne_installer_console.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/mne_installer_console.png differ Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/mne_installer_macOS.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/mne_installer_macOS.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/mne_logo_dark.svg python-mne-1.1.0+dfsg/doc/_static/mne_logo_dark.svg --- python-mne-0.23.4+dfsg/doc/_static/mne_logo_dark.svg 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/mne_logo_dark.svg 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,866 @@ + + + + + + + + 2022-04-13T15:28:22.830772 + image/svg+xml + + + Matplotlib v3.5.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/mne_logo_small.svg python-mne-1.1.0+dfsg/doc/_static/mne_logo_small.svg --- python-mne-0.23.4+dfsg/doc/_static/mne_logo_small.svg 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/mne_logo_small.svg 2022-08-03 15:48:14.000000000 +0000 @@ -1,82 +1,84 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - + + + + + + + + 2022-04-13T15:28:23.367808 + image/svg+xml + + + Matplotlib v3.5.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + - - - - - + + + + + + diff -Nru python-mne-0.23.4+dfsg/doc/_static/mne_logo.svg python-mne-1.1.0+dfsg/doc/_static/mne_logo.svg --- python-mne-0.23.4+dfsg/doc/_static/mne_logo.svg 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/mne_logo.svg 2022-08-03 15:48:14.000000000 +0000 @@ -1,176 +1,866 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + 2022-04-13T15:28:22.434101 + image/svg+xml + + + Matplotlib v3.5.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + Binary files /tmp/tmprw82qwlm/pMK45BCM_h/python-mne-0.23.4+dfsg/doc/_static/pull_button.png and /tmp/tmprw82qwlm/AKapBaGA2j/python-mne-1.1.0+dfsg/doc/_static/pull_button.png differ diff -Nru python-mne-0.23.4+dfsg/doc/_static/style.css python-mne-1.1.0+dfsg/doc/_static/style.css --- python-mne-0.23.4+dfsg/doc/_static/style.css 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/style.css 2022-08-03 15:48:14.000000000 +0000 @@ -5,15 +5,107 @@ --pst-font-family-base: 'Source Sans Pro', var(--pst-font-family-base-system); --pst-font-family-heading: var(--pst-font-family-base); --pst-font-family-monospace: 'Source Code Pro', var(--pst-font-family-monospace-system); - + /* colors that aren't responsive to light/dark mode */ + --mne-color-discord: #5865F2; + --mne-color-twitter: #55acee; + --mne-color-primary: #007bff; + --mne-color-primary-text: #fff; + --mne-color-primary-highlight: #0063cc; + /* font weight */ + --mne-font-weight-semibold: 600; +} + + +html[data-theme="light"] { + /* topbar logo links */ + --mne-color-github: #000; + --mne-color-discourse: #000; + /* code block copy button */ + --copybtn-opacity: 0.75; + /* card header bg color */ + --mne-color-card-header: rgba(0, 0, 0, 0.05); + /* section headings */ + --mne-color-heading: #003e80; + /* pydata-sphinx-theme overrides */ + --pst-color-primary: var(--mne-color-primary); + --pst-color-primary-text: var(--mne-color-primary-text); + --pst-color-primary-highlight: var(--mne-color-primary-highlight); + --pst-color-info: var(--pst-color-primary); + --pst-color-border: #ccc; + --pst-color-background: #fff; + --pst-color-link: var(--pst-color-primary-highlight); + /* sphinx-gallery overrides */ + --sg-download-a-background-color: var(--pst-color-primary); + --sg-download-a-background-image: unset; + --sg-download-a-border-color: var(--pst-color-border); + --sg-download-a-color: #fff; + --sg-download-a-hover-background-color: var(--pst-color-primary-highlight); + --sg-download-a-hover-box-shadow-1: none; + --sg-download-a-hover-box-shadow-2: none; +} +html[data-theme="dark"] { + /* topbar logo links */ + --mne-color-github: rgb(240, 246, 252); /* from their logo SVG */ + --mne-color-discourse: #FFF9AE; /* from their logo SVG */ + /* code block copy button */ + --copybtn-opacity: 0.25; + /* card header bg color */ + --mne-color-card-header: rgba(255, 255, 255, 0.2); + /* section headings */ + --mne-color-heading: #b8cbe0; + /* pydata-sphinx-theme overrides */ + --pst-color-primary: var(--mne-color-primary); + --pst-color-primary-text: var(--mne-color-primary-text); + --pst-color-primary-highlight: var(--mne-color-primary-highlight); + --pst-color-info: var(--pst-color-primary); + --pst-color-border: #333; + --pst-color-background: #000; + --pst-color-link: #66b0ff; + /* sphinx-gallery overrides */ + --sg-download-a-background-color: var(--pst-color-primary); + --sg-download-a-background-image: unset; + --sg-download-a-border-color: var(--pst-color-border); + --sg-download-a-color: #fff; + --sg-download-a-hover-background-color: var(--pst-color-primary-highlight); + --sg-download-a-hover-box-shadow-1: none; + --sg-download-a-hover-box-shadow-2: none; +} +h1, h2, h3, h4, h5, h6 { + color: var(--mne-color-heading); } /* ************************************************************ Sphinx fixes */ + +/* API docs parameter lists */ dl.field-list { grid-template-columns: auto 1fr; } -/* ********************************************************** Sphinx-gallery */ +/* make HTML'd pandas dataframes scrollable */ +table.dataframe { + display: block; + overflow: auto; +} + +/* Long API titles need to wrap for mobile */ +div[id^="mne-"] h1, +div[id^="examples-using-"] h2 { + word-break: break-word; +} + +/* *********************************************** pydata-sphinx-theme fixes */ + +/* this is most critical for the homepage logos, but affects all images */ +html[data-theme="dark"] img { + filter: none; +} + +/* prev/next links */ +.prev-next-area a p.prev-next-title { + color: var(--pst-color-link); +} + +/* **************************************************** sphinx-gallery fixes */ /* backreference links: restore hover decoration that SG removes */ a.sphx-glr-backref-instance:hover { @@ -25,8 +117,8 @@ } /* backreference links: make MNE calls bold and colorful */ a[class^="sphx-glr-backref-module-mne"] { - font-weight: 600; color: rgb(var(--pst-color-link)); + font-weight: var(--mne-font-weight-semibold); } /* suppress redundant note at top of every tutorial and signature at the end */ div.sphx-glr-download-link-note, @@ -38,9 +130,10 @@ } /* script/notebook download buttons */ .sphx-glr-download a.download { - background-image: none; - background-color: rgba(var(--pst-color-info), 0.1); - border-color: rgb(var(--pst-color-info)); + border-radius: 0.5rem; + /* ↓↓↓↓↓↓↓ these two rules copied from sphinx-design */ + box-shadow: 0 .125rem .25rem var(--sd-color-shadow) !important; + transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; } /* Report embedding */ iframe.sg_report { @@ -50,89 +143,111 @@ display: block; border-style: solid; } -/* gallery thumbnail size */ -.sphx-glr-thumbcontainer { - min-width: 160px; - height: 250px; +/* Disable thumbnail tooltips on hover */ +.sphx-glr-thumbcontainer[tooltip]:hover::before, +.sphx-glr-thumbcontainer[tooltip]:hover::after { + display: none; +} + +/* ***************************************************** sphinx-design fixes */ +p.btn a { + color: unset; +} +/* sphinx-design tabs */ +html .bd-content .sd-tab-set > label:hover, +.bd-content .sd-tab-set > input:not(:checked) + label:hover { + opacity: unset; + color: var(--pst-color-secondary); + border-color: var(--pst-color-secondary); +} + +/* ************************************************************* copy button */ +button.copybtn { + /* always show; https://sphinx-copybutton.readthedocs.io/en/latest/use.html#modify-the-copy-button-s-css */ + opacity: var(--copybtn-opacity); + } + +/* *************************************************** bib reference spacing */ +aside.footnote { + margin-bottom: 0.5rem; +} +aside.footnote:last-child { + margin-bottom: 1rem; } -/* ******************************** make HTML'd pandas dataframes scrollable */ -table.dataframe { - display: block; - overflow: auto; +/* ******************************************************** version dropdown */ +.dropdown-toggle { + font-weight: var(--mne-font-weight-semibold); } -/* ********************************* Long API titles need to wrap for mobile */ -div[id^="mne-"] h1, -div[id^="examples-using-"] h2 { - word-break: break-word; +/* ******************************************************* navbar icon links */ +#navbar-icon-links i.fa-github-square::before { + color: var(--mne-color-github); +} +#navbar-icon-links i.fa-twitter-square::before { + color: var(--mne-color-twitter); +} +#navbar-icon-links i.fa-discourse::before { + color: var(--mne-color-discourse); +} +#navbar-icon-links i.fa-discord::before { + color: var(--mne-color-discord); } -/* ******************************************* in-text sidebar callout boxes */ -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - padding: 7px; - width: 40%; - float: right; - clear: right; - overflow-x: auto; - /* above copied from div.sidebar in basic.css; below are our overrides */ - background-color: rgba(var(--pst-color-info), 0.1); - border: 1px solid rgb(var(--pst-color-info)); - border-radius: 4px; +/* ************************************************************ nav elements */ +/* topbar nav inactive */ +.bd-header.navbar-light#navbar-main .navbar-nav li a.nav-link { + color: var(--pst-color-text-muted); +} +/* topbar nav active */ +.bd-header.navbar-light#navbar-main .navbar-nav > li.active > .nav-link { + color: var(--pst-color-link); + font-weight: var(--mne-font-weight-semibold); +} +/* topbar nav hover */ +.bd-header.navbar-light#navbar-main .navbar-nav li a.nav-link:focus, +.bd-header.navbar-light#navbar-main .navbar-nav li a.nav-link:hover { + color: var(--pst-color-secondary); +} +/* sidebar nav */ +nav.bd-links .active > a, +nav.bd-links .active:hover > a, +.toc-entry a.nav-link.active, +.toc-entry a.nav-link.active:hover { + color: var(--pst-color-link); +} +/* sidebar nav hover */ +nav.bd-links li > a:hover, +.toc-entry a.nav-link:hover { + color: var(--pst-color-secondary); } -/* **************************************************************** homepage */ +/* *********************************************************** homepage logo */ img.logo { max-width: 360px; width: 100%; } -/* ************************************* homepage quick links & funders list */ -ul.quicklinks { - font-weight: 600; +/* **************************************************** homepage quick links */ +ul.quicklinks a { + font-weight: var(--mne-font-weight-semibold); + color: var(--pst-color-text-base); } ul.quicklinks a:hover { text-decoration: none; + color: var(--pst-color-secondary); } -ul.funders li { - margin-left: 36px; - text-indent: -36px; - padding-bottom: 9px; -} -ul.funders li img { - width: 30px; - max-height: 24px; - object-fit: contain; -} - -/* these two also affect collapsible divs */ h5.card-header { margin-top: 0px; margin-bottom: 0px; + color: var(--pst-color-text-base); } h5.card-header::before { height: 0px; margin-top: 0px; } -/* ************************************************* dev version warning bar */ -.devbar { - /* body top padding minus navbar height; */ - /*might be possible to calc from theme variables */ - margin-top: -20px; -} - -/* ******************************************************** version dropdown */ -.dropdown { - padding: 0 .5rem; /* match other items in the hamburger menu */ -} -.dropdown-toggle { - font-weight: 600; -} - -/* ***************************************************** front page carousel */ +/* ******************************************************* homepage carousel */ div.frontpage-gallery { overflow: hidden; height: 180px; @@ -161,31 +276,48 @@ opacity: 0.0; transition: 200ms linear; } - -/* ****************************************************** navbar quick links */ - -i.fa-github-square:before { - color: #000; -} -i.fa-twitter-square:before { - color: #55acee; +/* affects the homepage gallery tiles and the homepage sidebar quicklinks card; + needed for dark mode. */ +div.card { + border: 1px solid var(--pst-color-border); + background-color: rgb(var(--pst-color-background)); +} +.card-header { + border-bottom-color: var(--pst-color-border); + background-color: var(--mne-color-card-header); +} + +/* *************************************** homepage funder/institution logos */ +div#funder-logos div.card, +div#institution-logos div.card, +div#funder-logos div.card img, +div#institution-logos div.card img { + background-color: unset; + border: none; + border-radius: unset; } -i.fa-discourse:before { - color: #231e20; + +/* ************************************************************ funders page */ +ul.funders li { + margin-left: 36px; + text-indent: -36px; + padding-bottom: 9px; } -i.fa-discord:before { - color: #7289da; /* 99aab5 is also in-brand for discord */ +ul.funders li img { + width: 30px; + max-height: 24px; + object-fit: contain; + background-color: unset !important; } -/* ************************************************* Previous / Next buttons */ -.prev-next-bottom a.left-prev:before { - content:"❮\00A0" -} -.prev-next-bottom a.right-next:after { - content:"\00A0❯" +/* *********************************************************** contrib guide */ +ul.icon-bullets { + list-style-type: none; + padding-left: 2em; + text-indent: -1.5em; } -.prev-next-bottom a.right-next { - text-align: right; +.small-stack { + font-size: 0.5em; } /* *********************************************************** miscellaneous */ diff -Nru python-mne-0.23.4+dfsg/doc/_static/versions.json python-mne-1.1.0+dfsg/doc/_static/versions.json --- python-mne-0.23.4+dfsg/doc/_static/versions.json 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_static/versions.json 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,72 @@ +[ + { + "name": "1.2 (devel)", + "version": "dev", + "url": "https://mne.tools/dev/" + }, + { + "name": "1.1 (stable)", + "version": "stable", + "url": "https://mne.tools/stable/" + }, + { + "version": "1.0", + "url": "https://mne.tools/1.0/" + }, + { + "version": "0.24", + "url": "https://mne.tools/0.24/" + }, + { + "version": "0.23", + "url": "https://mne.tools/0.23/" + }, + { + "version": "0.22", + "url": "https://mne.tools/0.22/" + }, + { + "version": "0.21", + "url": "https://mne.tools/0.21/" + }, + { + "version": "0.20", + "url": "https://mne.tools/0.20/" + }, + { + "version": "0.19", + "url": "https://mne.tools/0.19/" + }, + { + "version": "0.18", + "url": "https://mne.tools/0.18/" + }, + { + "version": "0.17", + "url": "https://mne.tools/0.17/" + }, + { + "version": "0.16", + "url": "https://mne.tools/0.16/" + }, + { + "version": "0.15", + "url": "https://mne.tools/0.15/" + }, + { + "version": "0.14", + "url": "https://mne.tools/0.14/" + }, + { + "version": "0.13", + "url": "https://mne.tools/0.13/" + }, + { + "version": "0.12", + "url": "https://mne.tools/0.12/" + }, + { + "version": "0.11", + "url": "https://mne.tools/0.11/" + } +] diff -Nru python-mne-0.23.4+dfsg/doc/_templates/autosummary/class_no_inherited_members.rst python-mne-1.1.0+dfsg/doc/_templates/autosummary/class_no_inherited_members.rst --- python-mne-0.23.4+dfsg/doc/_templates/autosummary/class_no_inherited_members.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_templates/autosummary/class_no_inherited_members.rst 2022-08-03 15:48:14.000000000 +0000 @@ -0,0 +1,13 @@ +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +.. autoclass:: {{ objname }} + :special-members: __contains__,__getitem__,__iter__,__len__,__add__,__sub__,__mul__,__div__,__neg__ + :members: + :no-inherited-members: + +.. _sphx_glr_backreferences_{{ fullname }}: + +.. minigallery:: {{ fullname }} + :add-heading: diff -Nru python-mne-0.23.4+dfsg/doc/_templates/autosummary/class.rst python-mne-1.1.0+dfsg/doc/_templates/autosummary/class.rst --- python-mne-0.23.4+dfsg/doc/_templates/autosummary/class.rst 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_templates/autosummary/class.rst 2022-08-03 15:48:14.000000000 +0000 @@ -3,7 +3,7 @@ .. currentmodule:: {{ module }} .. autoclass:: {{ objname }} - :special-members: __contains__,__getitem__,__iter__,__len__,__add__,__sub__,__mul__,__div__,__neg__,__hash__ + :special-members: __contains__,__getitem__,__iter__,__len__,__add__,__sub__,__mul__,__div__,__neg__ :members: .. _sphx_glr_backreferences_{{ fullname }}: diff -Nru python-mne-0.23.4+dfsg/doc/_templates/homepage.html python-mne-1.1.0+dfsg/doc/_templates/homepage.html --- python-mne-0.23.4+dfsg/doc/_templates/homepage.html 2021-09-09 19:56:26.000000000 +0000 +++ python-mne-1.1.0+dfsg/doc/_templates/homepage.html 2022-08-03 15:48:14.000000000 +0000 @@ -5,7 +5,7 @@