Skip to content

Commit

Permalink
Add initial extension (#1)
Browse files Browse the repository at this point in the history
* Add initial extension without tests or custom api

* Update README.md

* Add tests, small updates to spec

* Add "in_mm", add example usage, update tests

* Add comments

* Delete notebooks/example.ipynb

* Remove references to tetrodeseries

* Update spec/ndx-extracellular-channels.extensions.yaml

* Clarify planar_contour

* Minor refactor, support probeinterface IO

* Fix lint

* Add probeinterface to dev env

* Fix probeinterface import

* Add back ProbeModel.model, remove 1D contour case

* Update ruff config to latest recommended usage

* Change name of device_channel

* Rename actual_x to confirmed_x

* Restructure position fields

* Rearrange spec, update readme

* Update probeinterface test

* Apply black

* Update docstring

* Update comments

* Update doc

* Add asserts to test all

* Fix probeinterface converter shape keys

* Remove print

* Apply black, ruff, isort

* Make contact required, minor other fixes

* Improve eseries api for unit, fix value to microvolts

* Make plane_axes realistic

* Fix

* Fix mermaid typo

* Fix mermaid typo

* Apply suggestions from code review

* "reference_mode" -> "electrical_reference_mode"

* Add "ground", rename "electrical_reference_description"

* Remove "device_channel" from ContactsTable

* Apply black

* fix name

* Update doc for "reference_contact" and angles

* Move ProbeInsertion from ChannelsTable to Probe

* Update mermaid diagram for probe_insertion move

* Fix relative_position_in_mm should be in um

* Remove ContactsTable.relative_position_in_um.reference

---------

Co-authored-by: Cody Baker <51133164+CodyCBakerPhD@users.noreply.github.com>
Co-authored-by: Heberto Mayorquin <h.mayorquin@gmail.com>
  • Loading branch information
3 people authored Jul 23, 2024
1 parent c065d78 commit 0230188
Show file tree
Hide file tree
Showing 35 changed files with 4,216 additions and 45 deletions.
32 changes: 32 additions & 0 deletions .github/workflows/check_external_links.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Check Sphinx external links
on:
push:
schedule:
- cron: '0 5 * * 0' # once every Sunday at midnight ET
workflow_dispatch:

jobs:
check-external-links:
name: Check for broken Sphinx external links
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # tags are required to determine the version

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install Sphinx dependencies and package
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
python -m pip install .
- name: Check Sphinx external links
run: |
cd docs # run_doc_autogen assumes spec is found in ../spec/
sphinx-build -b linkcheck ./source ./test_build
14 changes: 14 additions & 0 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Codespell
on:
push:
workflow_dispatch:

jobs:
codespell:
name: Check for spelling errors
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Codespell
uses: codespell-project/actions-codespell@v2
14 changes: 14 additions & 0 deletions .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Ruff
on:
push:
workflow_dispatch:

jobs:
ruff:
name: Check for style errors and common problems
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Ruff
uses: chartboost/ruff-action@v1
178 changes: 178 additions & 0 deletions .github/workflows/run_all_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
name: Run all tests
on:
push:
schedule:
- cron: '0 5 * * 0' # once every Sunday at midnight ET
workflow_dispatch:

jobs:
run-all-tests:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.name }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
- { name: linux-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: ubuntu-latest }
- { name: linux-python3.8 , requirements: pinned , python-ver: "3.8" , os: ubuntu-latest }
- { name: linux-python3.9 , requirements: pinned , python-ver: "3.9" , os: ubuntu-latest }
- { name: linux-python3.10 , requirements: pinned , python-ver: "3.10", os: ubuntu-latest }
- { name: linux-python3.11 , requirements: pinned , python-ver: "3.11", os: ubuntu-latest }
- { name: linux-python3.12 , requirements: pinned , python-ver: "3.12", os: ubuntu-latest }
- { name: linux-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: ubuntu-latest }
- { name: windows-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: windows-latest }
- { name: windows-python3.8 , requirements: pinned , python-ver: "3.8" , os: windows-latest }
- { name: windows-python3.9 , requirements: pinned , python-ver: "3.9" , os: windows-latest }
- { name: windows-python3.10 , requirements: pinned , python-ver: "3.10", os: windows-latest }
- { name: windows-python3.11 , requirements: pinned , python-ver: "3.11", os: windows-latest }
- { name: windows-python3.12 , requirements: pinned , python-ver: "3.12", os: windows-latest }
- { name: windows-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: windows-latest }
- { name: macos-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: macos-latest }
- { name: macos-python3.8 , requirements: pinned , python-ver: "3.8" , os: macos-latest }
- { name: macos-python3.9 , requirements: pinned , python-ver: "3.9" , os: macos-latest }
- { name: macos-python3.10 , requirements: pinned , python-ver: "3.10", os: macos-latest }
- { name: macos-python3.11 , requirements: pinned , python-ver: "3.11", os: macos-latest }
- { name: macos-python3.12 , requirements: pinned , python-ver: "3.12", os: macos-latest }
- { name: macos-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: macos-latest }
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # tags are required to determine the version

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-ver }}

- name: Install build dependencies
run: |
python -m pip install --upgrade pip
python -m pip list
python -m pip check
- name: Install run requirements (minimum)
if: ${{ matrix.requirements == 'minimum' }}
run: |
python -m pip install -r requirements-min.txt -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (pinned)
if: ${{ matrix.requirements == 'pinned' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (upgraded)
if: ${{ matrix.requirements == 'upgraded' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -U -e .
- name: Run tests
run: |
pytest -v
- name: Build wheel and source distribution
run: |
python -m pip install --upgrade build
python -m build
ls -1 dist
- name: Test installation from a wheel (POSIX)
if: ${{ matrix.os != 'windows-latest' }}
run: |
python -m venv test-wheel-env
source test-wheel-env/bin/activate
python -m pip install dist/*-none-any.whl
python -c "import ndx_extracellular_channels"
- name: Test installation from a wheel (windows)
if: ${{ matrix.os == 'windows-latest' }}
run: |
python -m venv test-wheel-env
test-wheel-env/Scripts/activate.bat
python -m pip install dist/*-none-any.whl
python -c "import ndx_extracellular_channels"
run-all-tests-on-conda:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0} # needed for conda environment to work
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.name }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
- { name: conda-linux-python3.8-minimum , requirements: minimum , python-ver: "3.8" , os: ubuntu-latest }
- { name: conda-linux-python3.8 , requirements: pinned , python-ver: "3.8" , os: ubuntu-latest }
- { name: conda-linux-python3.9 , requirements: pinned , python-ver: "3.9" , os: ubuntu-latest }
- { name: conda-linux-python3.10 , requirements: pinned , python-ver: "3.10", os: ubuntu-latest }
- { name: conda-linux-python3.11 , requirements: pinned , python-ver: "3.11", os: ubuntu-latest }
- { name: conda-linux-python3.12 , requirements: pinned , python-ver: "3.12", os: ubuntu-latest }
- { name: conda-linux-python3.12-upgraded , requirements: upgraded , python-ver: "3.12", os: ubuntu-latest }
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # tags are required to determine the version

- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
auto-activate-base: true
activate-environment: true
python-version: ${{ matrix.python-ver }}

- name: Install build dependencies
run: |
conda config --set always_yes yes --set changeps1 no
conda info
conda config --show-sources
conda list --show-channel-urls
- name: Install run requirements (minimum)
if: ${{ matrix.requirements == 'minimum' }}
run: |
python -m pip install -r requirements-min.txt -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (pinned)
if: ${{ matrix.requirements == 'pinned' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Install run requirements (upgraded)
if: ${{ matrix.requirements == 'upgraded' }}
run: |
python -m pip install -r requirements-dev.txt
python -m pip install -U -e .
- name: Run tests
run: |
pytest -v
- name: Build wheel and source distribution
run: |
python -m pip install --upgrade build
python -m build
ls -1 dist
- name: Test installation from a wheel (POSIX)
run: |
python -m venv test-wheel-env
source test-wheel-env/bin/activate
python -m pip install dist/*-none-any.whl
python -c "import ndx_extracellular_channels"
56 changes: 56 additions & 0 deletions .github/workflows/run_coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Run code coverage
on:
push:
workflow_dispatch:

jobs:
run-coverage:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
# TODO handle forks
# run pipeline on either a push event or a PR event on a fork
# if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os }}
cancel-in-progress: true
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
env: # used by codecov-action
OS: ${{ matrix.os }}
PYTHON: '3.12'
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # tags are required to determine the version

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
- name: Install package
run: |
python -m pip install -e . # must install in editable mode for coverage to find sources
python -m pip list
- name: Run tests and generate coverage report
run: |
pytest --cov
python -m coverage xml # codecov uploader requires xml format
python -m coverage report -m
# TODO uncomment after setting up repo on codecov.io
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# fail_ci_if_error: true
Loading

0 comments on commit 0230188

Please sign in to comment.