From 3c9662bd166d052c43c6ed5fd080bfd1c4b764ec Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Tue, 27 Apr 2021 12:36:32 -0500 Subject: [PATCH 1/8] update README, improve markdown formatting, specify `long_description_content_type` to markdown --- README.md | 47 +++++++++++++++++++++++++++++++---------------- setup.py | 1 + 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index a48741e7..c3970431 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ See [Background](Background.md) for the background information and development t ## The Pipeline Architecture -![ephys pipeline diagram](images/attached_ephys_element.svg) +![element-array-ephys diagram](images/attached_ephys_element.svg) As the diagram depicts, the array ephys element starts immediately downstream from ***Session***, and also requires some notion of ***Location*** as a dependency for ***InsertionLocation***. @@ -27,32 +27,47 @@ and also requires some notion of ***Location*** as a dependency for ***Insertion + An electrode here refers to one recordable electrode site on the Neuropixels probe (e.g. for Neuropixels 1.0, there are 960 sites per shank) + ***Probe*** - record of an actual physical probe, identifiable by some unique ID (e.g. probe's serial number) + ***ElectrodeConfig*** - particular electrode configuration to be used for ephys recording -+ ***ElectrodeConfig.Electrode*** - corresponding electrodes in ***ProbeType.Electrode*** that are used for recording in this electrode configuration -(e.g. for Neuropixels 1.0 or 2.0, there can be at most 384 electrodes usable for recording per probe) ++ ***ElectrodeConfig.Electrode*** - corresponding electrodes in ***ProbeType.Electrode*** that are used for recording in this electrode configuration (e.g. for Neuropixels 1.0 or 2.0, there can be at most 384 electrodes usable for recording per probe) ### Extracellular ephys recording -+ ***ProbeInsertion*** - a surgical insertion of a probe onto the animal. -Every experimental session consists of one or more ***ProbeInsertion***, with corresponding ***InsertionLocation*** -+ ***EphysRecording*** - each ***ProbeInsertion*** is accompanied by a corresponding ***EphysRecording***, -specifying the ***ElectrodeConfig*** used for the recording from the ***Probe*** defined in such ***ProbeInsertion*** - + ***get_npx_data_dir*** method - the class ***EphysRecording*** requires user - to supply a method to retrieve the directory containing the recorded neuropixels data (e.g. `*.ap.meta`, `*.ap.bin`, etc.), - where the method's input arguments are the primary attributes identifying one ***EphysRecording*** ++ ***ProbeInsertion*** - a surgical insertion of a probe onto the animal. Every experimental session consists of one or more ***ProbeInsertion***, with corresponding ***InsertionLocation*** ++ ***EphysRecording*** - each ***ProbeInsertion*** is accompanied by a corresponding ***EphysRecording***, specifying the ***ElectrodeConfig*** used for the recording from the ***Probe*** defined in such ***ProbeInsertion*** ### Clusters and spikes This ephys element features automatic ingestion for spike sorting results from the ***kilosort*** method. + ***Clustering*** - specify instance(s) of clustering on an ***EphysRecording***, by some ***ClusteringMethod*** - + ***get_ks_data_dir*** method - the class ***Clustering*** requires user - to supply a method to retrieve the directory containing the kilosort results, - where the method's input arguments are the primary attributes identifying one ***Clustering*** -+ ***Unit*** - Identified unit(s) from one ***Clustering***, with associated ***ClusterQualityLabel*** - + ***UnitSpikeTimes*** - spike times per unit - + ***Waveform*** - mean waveform across spikes per unit per recording electrode ++ ***Curation*** - specify instance(s) of curations performed on the output of a given ***Clustering*** ++ ***CuratedClustering*** - set of results from a particular round of clustering/curation + + ***CuratedClustering.Unit*** - Identified unit(s) from one ***Curation***, and the associated properties (e.g. cluster quality, spike times, spike depths, etc.) + + ***WaveformSet*** - A set of spike waveforms for units out of a given CuratedClustering ## Usage +### Element activation + +To activate the `element-array-ephys`, ones need to provide: + +1. Schema names + + schema name for the probe module + + schema name for the ephys module + +2. Upstream tables + + Session table + + SkullReference table (Reference table for InsertionLocation, specifying the skull reference) + +3. Utility functions + + get_ephys_root_data_dir() + + get_session_directory() + +For more detail, check the docstring of the `element-array-ephys`: + + help(probe.activate) + help(ephys.activate) + +### Example usage + See [this project](https://github.com/datajoint/workflow-array-ephys) for an example usage of this Array Electrophysiology Element. diff --git a/setup.py b/setup.py index 88a8feae..8b51819e 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ version=__version__, description="DataJoint Element for Extracellular Array Electrophysiology", long_description=long_description, + long_description_content_type='text/markdown', author='DataJoint NEURO', author_email='info@vathes.com', license='MIT', From 9ece8cdc32b6fbe164874bf846f8c0eb26c2d8b7 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Fri, 30 Apr 2021 15:42:28 -0500 Subject: [PATCH 2/8] update diagram --- README.md | 2 +- images/attached_array_ephys_element.svg | 3 + images/attached_ephys_element.png | Bin 81158 -> 0 bytes images/attached_ephys_element.svg | 3 - images/attached_ephys_erd.svg | 314 ------------------------ 5 files changed, 4 insertions(+), 318 deletions(-) create mode 100644 images/attached_array_ephys_element.svg delete mode 100644 images/attached_ephys_element.png delete mode 100644 images/attached_ephys_element.svg delete mode 100644 images/attached_ephys_erd.svg diff --git a/README.md b/README.md index c3970431..4b0a91a9 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ See [Background](Background.md) for the background information and development t ## The Pipeline Architecture -![element-array-ephys diagram](images/attached_ephys_element.svg) +![element-array-ephys diagram](images/attached_array_ephys_element.svg) As the diagram depicts, the array ephys element starts immediately downstream from ***Session***, and also requires some notion of ***Location*** as a dependency for ***InsertionLocation***. diff --git a/images/attached_array_ephys_element.svg b/images/attached_array_ephys_element.svg new file mode 100644 index 00000000..1d0764cd --- /dev/null +++ b/images/attached_array_ephys_element.svg @@ -0,0 +1,3 @@ + + +
ARRAY-EPHYS
ELEMENT
ARRAY-EPHYS...
UPSTREAM
PIPELINE
UPSTREAM...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/images/attached_ephys_element.png b/images/attached_ephys_element.png deleted file mode 100644 index 89c1224b6df88361407275dff8b1ccb9bd9e9b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81158 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 YDb`!WJkD||gn+*zMrMXY1BZxz06e*(EC2ui diff --git a/images/attached_ephys_element.svg b/images/attached_ephys_element.svg deleted file mode 100644 index 618daa44..00000000 --- a/images/attached_ephys_element.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
EPHYS
ELEMENT
EPHYS...
UPSTREAM
PIPELINE
UPSTREAM...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/images/attached_ephys_erd.svg b/images/attached_ephys_erd.svg deleted file mode 100644 index 78789a1e..00000000 --- a/images/attached_ephys_erd.svg +++ /dev/null @@ -1,314 +0,0 @@ - - -%3 - - -ClusterQualityLabel - - -ClusterQualityLabel - - - - -CuratedClustering.Unit - - -CuratedClustering.Unit - - - - -ClusterQualityLabel->CuratedClustering.Unit - - - -Waveform - - -Waveform - - - - -CuratedClustering.Unit->Waveform - - - -ClusterQualityMetrics - - -ClusterQualityMetrics - - - - -CuratedClustering.Unit->ClusterQualityMetrics - - - -SkullReference - - -SkullReference - - - - -InsertionLocation - - -InsertionLocation - - - - -SkullReference->InsertionLocation - - - -ElectrodeConfig.Electrode - - -ElectrodeConfig.Electrode - - - - -ElectrodeConfig.Electrode->CuratedClustering.Unit - - - -Waveform.Electrode - - -Waveform.Electrode - - - - -ElectrodeConfig.Electrode->Waveform.Electrode - - - -LFP.Electrode - - -LFP.Electrode - - - - -ElectrodeConfig.Electrode->LFP.Electrode - - - -ProbeInsertion - - -ProbeInsertion - - - - -ProbeInsertion->InsertionLocation - - - -EphysRecording - - -EphysRecording - - - - -ProbeInsertion->EphysRecording - - - -EphysRecording.EphysFile - - -EphysRecording.EphysFile - - - - -ClusteringTask - - -ClusteringTask - - - - -Clustering - - -Clustering - - - - -ClusteringTask->Clustering - - - -AcquisitionSoftware - - -AcquisitionSoftware - - - - -AcquisitionSoftware->EphysRecording - - - -ClusteringMethod - - -ClusteringMethod - - - - -ClusteringParamSet - - -ClusteringParamSet - - - - -ClusteringMethod->ClusteringParamSet - - - -EphysRecording->EphysRecording.EphysFile - - - -EphysRecording->ClusteringTask - - - -LFP - - -LFP - - - - -EphysRecording->LFP - - - -ClusteringParamSet->ClusteringTask - - - -Session.Directory - - -Session.Directory - - - - -Session - - -Session - - - - -Session->ProbeInsertion - - - -Session->Session.Directory - - - -LFP->LFP.Electrode - - - -Curation - - -Curation - - - - -Clustering->Curation - - - -CuratedClustering - - -CuratedClustering - - - - -Curation->CuratedClustering - - - -Subject - - -Subject - - - - -Subject->Session - - - -Probe - - -Probe - - - - -Probe->ProbeInsertion - - - -Waveform->Waveform.Electrode - - - -CuratedClustering->CuratedClustering.Unit - - - -ElectrodeConfig - - -ElectrodeConfig - - - - -ElectrodeConfig->ElectrodeConfig.Electrode - - - -ElectrodeConfig->EphysRecording - - - - \ No newline at end of file From 0ffc88595b1365992e94f6b53fe9bb7b0d4a75c4 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Mon, 3 May 2021 10:10:54 -0500 Subject: [PATCH 3/8] versioning and GH Action for PyPI release --- .github/workflows/development.yaml | 6 +++--- CHANGELOG.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/development.yaml b/.github/workflows/development.yaml index 939cbc3e..549f1262 100644 --- a/.github/workflows/development.yaml +++ b/.github/workflows/development.yaml @@ -76,8 +76,8 @@ jobs: needs: build runs-on: ubuntu-latest env: - TWINE_USERNAME: ${{secrets.twine_test_username}} - TWINE_PASSWORD: ${{secrets.twine_test_password}} + TWINE_USERNAME: ${{secrets.twine_username}} + TWINE_PASSWORD: ${{secrets.twine_password}} outputs: release_upload_url: ${{steps.create_gh_release.outputs.upload_url}} steps: @@ -122,7 +122,7 @@ jobs: docker load < "image-${{env.PKG_NAME}}-${PKG_VERSION}-py3.8-alpine.tar.gz" docker-compose -f docker-compose-build.yaml run \ -e TWINE_USERNAME=${TWINE_USERNAME} -e TWINE_PASSWORD=${TWINE_PASSWORD} element \ - sh -lc "pip install twine && python -m twine upload --repository testpypi dist/*" + sh -lc "pip install twine && python -m twine upload dist/*" - name: Determine pip artifact paths run: | echo "PKG_WHEEL_PATH=$(ls dist/${PKG_NAME}-*.whl)" >> $GITHUB_ENV diff --git a/CHANGELOG.md b/CHANGELOG.md index dc2cdacb..c7fdf5b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) convention. -## [0.1.0a3] - 2021-04-26 +## [0.1.0a3] - 2021-05-03 ### Added + Added GitHub Action release process + `probe` and `ephys` elements From d68d53e28eebf51a6f44c53a591b01ee0a894e54 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Mon, 3 May 2021 10:20:43 -0500 Subject: [PATCH 4/8] minor code cleanup --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 8b51819e..eda1c8d6 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages from os import path -pkg_name = [p for p in find_packages() if '.' not in p][0] +pkg_name = next(p for p in find_packages() if '.' not in p) here = path.abspath(path.dirname(__file__)) with open(path.join(here, 'README.md'), 'r') as f: From 98753ed3c3a6cff88f445b633d47b8e27fb4f7df Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Mon, 3 May 2021 10:27:23 -0500 Subject: [PATCH 5/8] Apply suggestions from code review Co-authored-by: Dimitri Yatsenko --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4b0a91a9..470b4081 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ and also requires some notion of ***Location*** as a dependency for ***Insertion ### Extracellular ephys recording -+ ***ProbeInsertion*** - a surgical insertion of a probe onto the animal. Every experimental session consists of one or more ***ProbeInsertion***, with corresponding ***InsertionLocation*** ++ ***ProbeInsertion*** - a surgical insertion of a probe in the brain. Every experimental session consists of one or more entries in ***ProbeInsertion*** with a corresponding ***InsertionLocation*** each + ***EphysRecording*** - each ***ProbeInsertion*** is accompanied by a corresponding ***EphysRecording***, specifying the ***ElectrodeConfig*** used for the recording from the ***Probe*** defined in such ***ProbeInsertion*** ### Clusters and spikes @@ -42,7 +42,7 @@ This ephys element features automatic ingestion for spike sorting results from t + ***Curation*** - specify instance(s) of curations performed on the output of a given ***Clustering*** + ***CuratedClustering*** - set of results from a particular round of clustering/curation + ***CuratedClustering.Unit*** - Identified unit(s) from one ***Curation***, and the associated properties (e.g. cluster quality, spike times, spike depths, etc.) - + ***WaveformSet*** - A set of spike waveforms for units out of a given CuratedClustering + + ***WaveformSet*** - A set of spike waveforms for units from a given CuratedClustering ## Usage From ab3cfc922bb76e0d6e3a0930ba3f995a47891802 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Tue, 4 May 2021 13:34:02 -0500 Subject: [PATCH 6/8] bump alpha version for first release on pypi --- CHANGELOG.md | 5 +++-- element_array_ephys/version.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7fdf5b3..d4539d7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,12 @@ Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) convention. -## [0.1.0a3] - 2021-05-03 + +## [0.1.0a4] - 2021-05-04 ### Added + Added GitHub Action release process + `probe` and `ephys` elements + Readers for: `SpikeGLX`, `Open Ephys`, `Kilosort` + Probe table supporting: Neuropixels probes 1.0 - 3A, 1.0 - 3B, 2.0 - SS, 2.0 - MS -[0.1.0a3]: https://github.com/datajoint/element-array-ephys/releases/tag/0.1.0a3 +[0.1.0a4]: https://github.com/datajoint/element-array-ephys/releases/tag/0.1.0a4 diff --git a/element_array_ephys/version.py b/element_array_ephys/version.py index ed63f796..108d699e 100644 --- a/element_array_ephys/version.py +++ b/element_array_ephys/version.py @@ -1,2 +1,2 @@ """Package metadata.""" -__version__ = '0.1.0a3' \ No newline at end of file +__version__ = '0.1.0a4' \ No newline at end of file From 99ab2fa6033e14c2ea98a4fced629287042766a6 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Wed, 5 May 2021 13:53:15 -0500 Subject: [PATCH 7/8] bump alpha version for first release on PyPI --- CHANGELOG.md | 4 ++-- element_array_ephys/version.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4539d7c..eaa1051c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,11 @@ Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) convention. -## [0.1.0a4] - 2021-05-04 +## [0.1.0a5] - 2021-05-05 ### Added + Added GitHub Action release process + `probe` and `ephys` elements + Readers for: `SpikeGLX`, `Open Ephys`, `Kilosort` + Probe table supporting: Neuropixels probes 1.0 - 3A, 1.0 - 3B, 2.0 - SS, 2.0 - MS -[0.1.0a4]: https://github.com/datajoint/element-array-ephys/releases/tag/0.1.0a4 +[0.1.0a5]: https://github.com/datajoint/element-array-ephys/releases/tag/0.1.0a5 diff --git a/element_array_ephys/version.py b/element_array_ephys/version.py index 108d699e..bfa3bbe2 100644 --- a/element_array_ephys/version.py +++ b/element_array_ephys/version.py @@ -1,2 +1,2 @@ """Package metadata.""" -__version__ = '0.1.0a4' \ No newline at end of file +__version__ = '0.1.0a5' \ No newline at end of file From 69a5424f0404eae379978a7f990b677d62aa42b9 Mon Sep 17 00:00:00 2001 From: Thinh Nguyen Date: Fri, 7 May 2021 16:03:51 -0500 Subject: [PATCH 8/8] beta 0 release --- CHANGELOG.md | 7 +++++++ README.md | 9 +++++++++ element_array_ephys/version.py | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaa1051c..04a12c51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) convention. +## [0.1.0b0] - 2021-05-07 +### Added ++ First beta release + + ## [0.1.0a5] - 2021-05-05 ### Added + Added GitHub Action release process @@ -10,4 +15,6 @@ Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and + Readers for: `SpikeGLX`, `Open Ephys`, `Kilosort` + Probe table supporting: Neuropixels probes 1.0 - 3A, 1.0 - 3B, 2.0 - SS, 2.0 - MS + +[0.1.0b0]: https://github.com/datajoint/element-array-ephys/compare/0.1.0a5...0.1.0b0 [0.1.0a5]: https://github.com/datajoint/element-array-ephys/releases/tag/0.1.0a5 diff --git a/README.md b/README.md index 470b4081..802db8bb 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,15 @@ This ephys element features automatic ingestion for spike sorting results from t + ***CuratedClustering.Unit*** - Identified unit(s) from one ***Curation***, and the associated properties (e.g. cluster quality, spike times, spike depths, etc.) + ***WaveformSet*** - A set of spike waveforms for units from a given CuratedClustering +## Installation +``` +pip install element-array-ephys +``` + +If you already have an older version of ***element-array-ephys*** installed using `pip`, upgrade with +``` +pip install --upgrade element-array-ephys +``` ## Usage diff --git a/element_array_ephys/version.py b/element_array_ephys/version.py index bfa3bbe2..5d6e909e 100644 --- a/element_array_ephys/version.py +++ b/element_array_ephys/version.py @@ -1,2 +1,2 @@ """Package metadata.""" -__version__ = '0.1.0a5' \ No newline at end of file +__version__ = '0.1.0b0' \ No newline at end of file