Openseize

Openseize: A digital signal processing package for large EEG datasets in Python - Published in JOSS (2023)

https://github.com/mscaudill/openseize

Science Score: 98.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

big-data eeg seizure signal-processing

Scientific Fields

Mathematics Computer Science - 84% confidence
Last synced: 6 months ago · JSON representation ·

Repository

Digital Signal Processing for Big EEGs

Basic Info
Statistics
  • Stars: 12
  • Watchers: 3
  • Forks: 1
  • Open Issues: 0
  • Releases: 4
Topics
big-data eeg seizure signal-processing
Created over 4 years ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

Digital Signal Processing for Big EEGs

JOSS Review Openseize is released under the BSD 3-Clause license. Openseize pypi release Python versions supported. Openseize's test status Pull Request Welcomed!

Key Features | Installation | Dependencies | Documentation | Attribution | Contributions | Issues | License | Acknowledgements



Key Features

Recent innovations in EEG recording technologies make it possible to perform high channel count recordings at high sampling frequencies spanning many days. This results in big EEG data sets that are often not addressable to virtual memory. Worse yet, current digital signal processing (DSP) packages that rely on Matlab© or Scipy's DSP routines require the data to be a contiguous in-memory array. Openseize is a fully iterative DSP Python package that can scale to the largest of EEG data sets. It accomplishes this by storing DSP operations, such as filtering, as on-the-fly iterables that "produce" DSP results one fragment of the data at a time. Additionally, Openseize is built using time-tested software design principles that support extensions while maintaining a simple interface. Finally, Openseize's documentation features in-depth discussions of iterative DSP processing and its implementation.

  • Construct sequences of DSP steps that operate completely 'out-of-core' to process data too large to fit into memory.
  • DSP pipelines are constructed using a familiar Scipy-like API, so you can start quickly without sweating the details.
  • Supports processing of data from multiple file types including the popular European Data Format (EDF).
  • Supports 'masking' to filter data sections by artifacts, behavioral states or any externally measured signals or annotations.
  • Efficiently process large data using the amount of memory you choose to use.
  • DSP tools currently include a large number of FIR & IIR Filters, polyphase decomposition resamplers, and spectral estimation tools for both stationary and non-stationary data.
  • Built using a developer-friendly object-oriented approach to support extensibility.

Installation

For each installation guide below, we strongly recommend creating a virtual environment. This environment will isolate external dependencies that may conflict with packages you already have installed on your system. Python comes installed with a virtual environment manager called venv. Additionally, there are environment managers like conda that can check for package conflicts when the environment is created or updated. For more information please see:

Python Virtual Environment

  1. Create your virtual environment, Here we name it my_venv. Shell $ python3 -m venv my_venv

  2. Activate your 'myvenv' environment ```Shell $ source myvenv/bin/activate ```

  3. Install openseize into your virtual environment Shell (my_venv)$ pip install openseize

Conda

The conda environment manager is more advanced than venv. When a conda environment is updated, conda simultaneously looks at all the packages to be installed to reduce package conflicts. Having said that, conda and pip, the tool used to install Openseize from pypi, do not always work well together. The developers of conda recommend installing all possible packages from conda repositories before installing non-conda packages using pip. To ensure this order of installs, Openseize's source code includes an environment configuration file (yml) that will build an openseize conda environment. Once built you can then use pip to install the openseize package into this environment. Here are the steps:

  1. Download the openseize environment configuration yaml

  2. Create a conda openseize environment. Shell $ conda env create --file environment.yml

  3. Activate the openseize environment. Shell $ conda activate openseize

  4. Install openseize from pypi into your openseize environment. Shell (openseize)$ pip install openseize

From Source

If you would like to develop Openseize further, you'll need the source code and all development dependencies. Here are the steps:

  1. Create a virtual environment with latest pip version. Shell $ python3 -m venv env $ source env/bin/activate $ pip install --upgrade pip

  2. Get the source code Shell $ git clone https://github.com/mscaudill/openseize.git

  3. CD into the directory containing the pyproject.toml and create an editable install with pip Shell $ pip install -e .[dev]

Dependencies

Openseize requires Python 3.8 and has the following dependencies:

package pypi conda
requests https://pypi.org/project/requests/
wget https://pypi.org/project/wget/
numpy https://pypi.org/project/numpy/
scipy https://pypi.org/project/scipy/
matplotlib https://pypi.org/project/matplotlib/
ipython https://pypi.org/project/ipython/
notebook https://pypi.org/project/jupyter/
pytest https://pypi.org/project/pytest/
psutil https://pypi.org/project/psutil/

Documentation

Openseize documentation site has a quickstart guide, extensive tutorials and reference pages for all publicly available modules, classes and functions.

Attribution

Please see the Cite this repository under the About section or the citation file.

And if you really like Openseize, you can star the repository !

Contributions

Contributions are what makes open-source fun and we would love for you to contribute. Please check out our contribution guide to get started.

Issues

Openseize provides custom issue templates for filing bugs, requesting feature enhancements, suggesting documentation changes, or just asking questions. Ready to discuss? File an issue here.

License

Openseize is licensed under the terms of the 3-Clause BSD License.

Acknowledgements

This work is generously supported through the Ting Tsung and Wei Fong Chao Foundation and the National Institute of Neurological Disorders and Stroke (Grant 2R01 NS100738-05A1).

Owner

  • Name: Matt Caudill
  • Login: mscaudill
  • Kind: user
  • Location: Houston, TX
  • Company: Baylor College of Medicine & Texas Childerns NRI

JOSS Publication

Openseize: A digital signal processing package for large EEG datasets in Python
Published
April 05, 2023
Volume 8, Issue 84, Page 5126
Authors
Matthew S. Caudill ORCID
Department of Neuroscience, Baylor College of Medicine, Houston, TX, United States of America, Jan and Dan Duncan Neurological Research Institute at Texas Childrens Hospital, Houston, TX, United States of America
Editor
Samuel Forbes ORCID
Tags
EEG neuroscience signal processing local field potentials time series analysis

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
- family-names: Caudill
  given-names: Matthew S.
  orcid: "https://orcid.org/0000-0002-3656-9261"
doi: 10.5281/zenodo.7760376
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Caudill
    given-names: Matthew S.
    orcid: "https://orcid.org/0000-0002-3656-9261"
  date-published: 2023-04-05
  doi: 10.21105/joss.05126
  issn: 2475-9066
  issue: 84
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5126
  title: "Openseize: A digital signal processing package for large EEG
    datasets in Python"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05126"
  volume: 8
title: "Openseize: A digital signal processing package for large EEG
  datasets in Python"

GitHub Events

Total
  • Watch event: 2
  • Member event: 1
  • Push event: 5
Last Year
  • Watch event: 2
  • Member event: 1
  • Push event: 5

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 680
  • Total Committers: 4
  • Avg Commits per committer: 170.0
  • Development Distribution Score (DDS): 0.007
Past Year
  • Commits: 6
  • Committers: 2
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.167
Top Committers
Name Email Commits
mscaudill m****l@g****m 675
joshb99559 j****9@g****m 3
szorowi1 s****1@g****m 1
LeahMcIntyre l****0@g****m 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 2
  • Total pull requests: 1
  • Average time to close issues: 5 days
  • Average time to close pull requests: 3 days
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 2.0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • szorowi1 (1)
  • AJQuinn (1)
Pull Request Authors
  • szorowi1 (1)
Top Labels
Issue Labels
question (1) bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 38 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
  • Total maintainers: 1
pypi.org: openseize

Digital Signal Processing for Big EEG Datasets

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 38 Last month
Rankings
Dependent packages count: 6.6%
Downloads: 17.3%
Average: 19.4%
Stargazers count: 19.5%
Forks count: 23.2%
Dependent repos count: 30.6%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/draft-pdf.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/test.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
requirements.txt pypi
  • ipython *
  • matplotlib *
  • notebook *
  • numpy *
  • psutil *
  • requests *
  • scipy *
  • wget *
environment.yml pypi
pyproject.toml pypi
  • ipython *
  • matplotlib *
  • notebook *
  • numpy *
  • psutil *
  • requests *
  • scipy *
  • wget *