Skip to content

Commit 63e3579

Browse files
committed
docs: finalize JOSS paper content, citations, and add preview action
1 parent 2a72e05 commit 63e3579

3 files changed

Lines changed: 83 additions & 6 deletions

File tree

.github/workflows/paper.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: JOSS Paper Preview
2+
on:
3+
push:
4+
paths:
5+
- 'paper.md'
6+
- 'paper.bib'
7+
- 'docs/figs/**'
8+
pull_request:
9+
paths:
10+
- 'paper.md'
11+
- 'paper.bib'
12+
- 'docs/figs/**'
13+
workflow_dispatch:
14+
15+
jobs:
16+
paper:
17+
runs-on: ubuntu-latest
18+
name: Paper Draft
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v4
22+
- name: Build Paper
23+
uses: openjournals/paper-action@master
24+
with:
25+
paper_path: paper.md
26+
- name: Upload PDF
27+
uses: actions/upload-artifact@v4
28+
with:
29+
name: paper
30+
path: paper.pdf

paper.bib

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,50 @@ @software{paszke2019pytorch
5959
pages={8024--8035},
6060
year={2019}
6161
}
62+
@software{OpenEphysPythonTools,
63+
author = {Kulik, Pavel and others},
64+
title = {open-ephys-python-tools},
65+
url = {https://github.com/open-ephys/open-ephys-python-tools},
66+
year = {2024}
67+
}
68+
69+
@article{Campbell2022,
70+
doi = {10.21105/joss.04460},
71+
url = {https://doi.org/10.21105/joss.04460},
72+
year = {2022},
73+
publisher = {The Open Journal},
74+
volume = {7},
75+
number = {76},
76+
pages = {4460},
77+
author = {Ethan Campbell and Angkoon Phinyomark and Erik Scheme},
78+
title = {{LibEMG}: An Open-Source Library for the Real-time Control Pipeline using Electromyography},
79+
journal = {Journal of Open Source Software}
80+
}
81+
82+
@software{pyqtgraph,
83+
author = {Campagnola, Luke and others},
84+
title = {PyQtGraph: Scientific Graphics and {GUI} Library for {Python}},
85+
url = {https://github.com/pyqtgraph/pyqtgraph},
86+
year = {2024}
87+
}
88+
89+
@software{pyzmq,
90+
author = {Min Ragan-Kelley and Brian Granger},
91+
title = {PyZMQ: {Python} bindings for {ZeroMQ}},
92+
url = {https://github.com/zeromq/pyzmq},
93+
year = {2024}
94+
}
95+
96+
@software{LSL,
97+
author = {Christian Kothe and others},
98+
title = {{Lab Streaming Layer}},
99+
url = {https://github.com/sccn/labstreaminglayer},
100+
year = {2024}
101+
}
102+
103+
@software{PyQt5,
104+
author = {{Riverbank Computing Limited}},
105+
title = {{PyQt5}},
106+
url = {https://www.riverbankcomputing.com/software/pyqt/},
107+
year = {2024}
108+
}

paper.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ bibliography: paper.bib
2020

2121
# Summary
2222

23-
`python-oephys` is an open-source Python library designed to facilitate the acquisition, processing, and analysis of high-density electrophysiology data, specifically targeting the Open Ephys ecosystem. It provides a unified interface for both offline analysis of binary recordings and real-time streaming via ZeroMQ (ZMQ). Key capabilities include modular signal processing pipelines, automated channel quality assessment (QC), and integrated machine learning models (CNN-LSTM) optimized for low-latency gesture classification.
23+
`python-oephys` is an open-source Python library designed to facilitate the acquisition, processing, and analysis of high-density electrophysiology data, specifically targeting the Open Ephys ecosystem. It provides a unified interface for both offline analysis of binary recordings and real-time streaming via ZeroMQ [@pyzmq]. Key capabilities include modular signal processing pipelines, automated channel quality assessment (QC), and integrated machine learning models (CNN-LSTM) optimized for low-latency gesture classification.
2424

2525
# Statement of need
2626

2727
The Open Ephys GUI [@siegle2017open] is a widely used platform for neural data acquisition, but researchers often face significant friction when transitioning from raw data acquisition to real-time closed-loop control or advanced offline analysis. Existing tools often handle either file I/O or real-time streaming, but rarely both in a unified, high-performance package.
2828

2929
`python-oephys` satisfies this need by providing:
3030
1. **Unified I/O**: A consistent API for both `.oebin` and `.npz` formats.
31-
2. **Real-time Integration**: Low-latency ZMQ clients that allow Python scripts and GUI applications to react to live neural streams.
31+
2. **Real-time Integration**: Low-latency ZeroMQ [@pyzmq] clients that allow Python scripts and GUI applications to react to live neural streams.
3232
3. **ML-Ready Pipelines**: Pre-integrated deep learning architectures tailored for spatio-temporal neural signals, reducing the time required to build predictive models for BCIs or myoelectric control.
3333

3434
# State of the field
3535

36-
The field of neural data analysis is supported by several specialized tools. The official `open-ephys-python-tools` provide basic file loading capabilities but lack high-level processing or real-time application layers. In the domain of myoelectric control, libraries like `LibEMG` offer comprehensive pipelines but are often decoupled from the specific streaming protocols used by hardware like Open Ephys.
36+
The field of neural data analysis is supported by several specialized tools. The official `open-ephys-python-tools` [@OpenEphysPythonTools] provide basic file loading capabilities but lack high-level processing or real-time application layers. In the domain of myoelectric control, libraries like `LibEMG` [@Campbell2022] offer comprehensive pipelines but are often decoupled from the specific streaming protocols used by hardware like Open Ephys.
3737

3838
`python-oephys` bridges these domains by specializing in the high-density spatial configurations typical of Open Ephys hardware while providing the real-time application layer (viewers and decoders) missing from low-level I/O libraries. It leverages the scientific Python stack, including NumPy [@harris2020array], SciPy [@virtanen2020scipy], and Matplotlib [@hunter2007matplotlib], to provide robust data structures and visualizations.
3939

@@ -43,17 +43,17 @@ The field of neural data analysis is supported by several specialized tools. The
4343

4444
![EMG Processing Pipeline. A) Raw signals from five representative channels (20–30s). B) Signals after CAR, bandpass (20-500Hz), and 60Hz notch filtering. C) Automated channel quality indicators evaluated on the first 5s of data. D) Mean RMS features extracted from the processed segment.](docs/figs/pipeline.png)
4545

46-
- **Interface Layer**: Implements ZMQ and LSL clients for low-latency data streaming. The `ZMQClient` is designed to run asynchronously, ensuring that data acquisition does not block processing or UI updates.
46+
- **Interface Layer**: Implements ZeroMQ [@pyzmq] and LSL [@LSL] clients for low-latency data streaming. The `ZMQClient` is designed to run asynchronously, ensuring that data acquisition does not block processing or UI updates.
4747
- **Processing Layer**: Provides a suite of filters and feature extraction tools. This includes the `EMGPreprocessor` for standardized filtering and `ChannelQC` for real-time signal quality monitoring.
4848
- **ML Layer**: Integrated with PyTorch [@paszke2019pytorch] and scikit-learn [@pedregosa2011scikit], this layer provides pre-configured models like `EMGClassifierCNNLSTM`. These models are designed to handle the variable channel counts and sampling rates common in high-density recordings.
49-
- **Visualization Layer**: Built on PyQt5 and pyqtgraph, providing high-frame-rate real-time plots and interactive offline analysis tools.
49+
- **Visualization Layer**: Built on PyQt5 [@PyQt5] and pyqtgraph [@pyqtgraph], providing high-frame-rate real-time plots and interactive offline analysis tools.
5050

5151
# Research Impact
5252

5353
`python-oephys` has been deployed in the Neuromechatronics Lab at Carnegie Mellon University to support research in high-density EMG-based human-computer interaction and robotic control. Its ability to provide sub-millisecond latency for feature extraction has enabled more responsive myoelectric interfaces compared to previous custom implementations.
5454

5555
# Acknowledgements
5656

57-
This work was supported by the Neuromechatronics Lab at Carnegie Mellon University.
57+
This work was supported by the Neuromechatronics Lab at Carnegie Mellon University. We would like to express our gratitude to the Open Ephys community and the developers of the Open Ephys GUI for their foundational work and support of open-source electrophysiology tools.
5858

5959
# References

0 commit comments

Comments
 (0)