Package: openseize
Digital Signal Processing for Big EEGsKey Features|Installation|Dependencies|Documentation|Attribution|Contributions|Issues|License|AcknowledgementsSource Code:https://github.com/mscaudill/opensiezeWhite Paper:LINKKey FeaturesRecent 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.Openseizeis
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'sdocumentationfeatures 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.InstallationFor each installation guide below, westronglyrecommend 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 calledvenv.
Additionally, there are environment managers likecondathat can check
for package conflicts when the environment is created or updated. For more
information please see:Python Virtual EnvironmentsConda EnvironmentsPython Virtual EnvironmentCreate your virtual environment, Here we name itmy_venv.$python3-mvenvmy_venvActivate your 'my_venv' environment$sourcemy_venv/bin/activateInstall openseize into your virtual environment(my_venv)$pipinstallopenseizeCondaThecondaenvironment manager is more advanced thanvenv. When acondaenvironment is updated,condasimultaneouslylooks at all the packages
to be installed to reduce package conflicts. Having said that,condaandpip, the tool used to install Openseize from pypi, do not always work
well together. The developers ofcondarecommend installing all possible
packages from conda repositories before installing non-conda packages usingpip. To ensure this order of installs, Openseize's source code includes an
environment configuration file (yml) that will build an openseizecondaenvironment. Once built you can then usepipto install the openseize
package into this environment. Here are the steps:Download the openseize environmentconfiguration yamlCreate a conda openseize environment.$condaenvcreate--fileenvironment.ymlActivate theopenseizeenvironment.$condaactivateopenseizeInstall openseize from pypi into your openseize environment.(openseize)$pipinstallopenseizeFrom SourceIf you would like to develop Openseize further, you'll need the source code
and all development dependencies. Here are the steps:Create a virtual environment with latest pip version.$python3-mvenvenv
$sourceenv/bin/activate
$pipinstall--upgradepipGet the source code$gitclonehttps://github.com/mscaudill/openseize.gitCD into the directory containing the pyproject.toml and create an
editable install withpip$pipinstall-e.[dev]DependenciesOpenseize requiresPython≥3.8and has the
following dependencies:packagepypicondarequestshttps://pypi.org/project/requests/✓wgethttps://pypi.org/project/wget/✓numpyhttps://pypi.org/project/numpy/✓scipyhttps://pypi.org/project/scipy/✓matplotlibhttps://pypi.org/project/matplotlib/✓ipythonhttps://pypi.org/project/ipython/✓notebookhttps://pypi.org/project/jupyter/✓pytesthttps://pypi.org/project/pytest/✓psutilhttps://pypi.org/project/psutil/✓DocumentationOpenseize documentation site has aquickstart guide,extensive tutorialsandreference pagesfor all publicly available modules, classes and functions.AttributionCitation to be addedAnd if you really like Openseize, you can star therepository⭐!ContributionsContributions are what makes open-source fun and we would love for you to
contribute. Please check out ourcontribution guideto get started.IssuesOpenseize provides custom issue templates for filing bugs, requesting
feature enhancements, suggesting documentation changes, or just asking
questions.Ready to discuss?File an issuehere.LicenseOpenseize is licensed under the terms of the 3-Clause BSD License.AcknowledgementsThis work was generously supported through the Ting Tsung and Wei Fong Chao
Foundation.