{"id":32639456,"url":"https://github.com/mscaudill/openseize","last_synced_at":"2025-10-31T02:12:01.153Z","repository":{"id":64981192,"uuid":"397732458","full_name":"mscaudill/openseize","owner":"mscaudill","description":"Digital Signal Processing for Big EEGs","archived":false,"fork":false,"pushed_at":"2025-10-23T17:49:19.000Z","size":29949,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-24T09:05:49.520Z","etag":null,"topics":["big-data","eeg","seizure","signal-processing"],"latest_commit_sha":null,"homepage":"https://mscaudill.github.io/openseize/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mscaudill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-18T20:54:27.000Z","updated_at":"2025-10-23T17:49:23.000Z","dependencies_parsed_at":"2024-01-09T21:28:02.768Z","dependency_job_id":"4708c9f6-202e-48ec-89c3-5c8bf00b0d41","html_url":"https://github.com/mscaudill/openseize","commit_stats":{"total_commits":622,"total_committers":3,"mean_commits":"207.33333333333334","dds":0.006430868167202619,"last_synced_commit":"0f62701642bca02bae7b5a849109774b805bdea9"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/mscaudill/openseize","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mscaudill%2Fopenseize","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mscaudill%2Fopenseize/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mscaudill%2Fopenseize/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mscaudill%2Fopenseize/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mscaudill","download_url":"https://codeload.github.com/mscaudill/openseize/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mscaudill%2Fopenseize/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281208099,"owners_count":26461543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["big-data","eeg","seizure","signal-processing"],"created_at":"2025-10-31T02:11:54.821Z","updated_at":"2025-10-31T02:12:01.144Z","avatar_url":"https://github.com/mscaudill.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/mscaudill/openseize/blob/master/docs/imgs/new_logo.png\" \n    style=\"width:750px;height:auto;\"/\u003e\n\u003c/h1\u003e\n\n\u003ch2 align=\"center\"\u003e\n  \u003ci\u003e\u003cfont color='gray'\u003eDigital Signal Processing for Big EEGs\u003c/font\u003e\u003c/i\u003e\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://joss.theoj.org/papers/f737f4eb377a3bed6602dac51f6b13b4\"\u003e\u003cimg \n    src=\"https://joss.theoj.org/papers/f737f4eb377a3bed6602dac51f6b13b4/status.svg\" \n    alt=\"JOSS Review\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/mscaudill/openseize/blob/master/LICENSE\"\u003e\u003cimg\n    src=\"https://img.shields.io/badge/License-BSD%203--Clause-teal\" \n    alt=\"Openseize is released under the BSD 3-Clause license.\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/openseize/\"\u003e\u003cimg \n    src=\"https://img.shields.io/pypi/v/openseize?color=78437E\u0026logo=pypi\u0026logoColor=white\" \n    alt=\"Openseize pypi release\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/mscaudill/openseize/tree/master#Dependencies\"\u003e\u003cimg \n    src=\"https://img.shields.io/pypi/pyversions/openseize?logo=python\u0026logoColor=gold\" \n    alt=\"Python versions supported.\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/mscaudill/openseize/actions/workflows/test.yml\"\u003e\u003cimg \n    src=\"https://img.shields.io/github/actions/workflow/status/mscaudill/openseize/test.yml?label=CI\u0026logo=github\" \n    alt=\"Openseize's test status\" /\u003e\n  \u003c/a\u003e\n \u003ca href=\"https://github.com/mscaudill/openseize/pulls\"\u003e\u003cimg \n    src=\"https://img.shields.io/badge/PRs-welcome-F8A3A3\"\n    alt=\"Pull Request Welcomed!\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003cp align=\"center\"  style=\"font-size: 20px\"\u003e\n\u003ca href=\"#Key-Features\"\u003eKey Features\u003c/a\u003e   |  \n\u003ca href=\"#Installation\"\u003eInstallation\u003c/a\u003e   |  \n\u003ca href=\"#Dependencies\"\u003eDependencies\u003c/a\u003e   |  \n\u003ca href=\"#Documentation\"\u003eDocumentation\u003c/a\u003e   |  \n\u003ca href=\"#Attribution\"\u003eAttribution\u003c/a\u003e   |  \n\u003ca href=\"#Contributions\"\u003eContributions\u003c/a\u003e   |  \n\u003ca href=\"#Issues\"\u003eIssues\u003c/a\u003e   |  \n\u003ca href=\"#License\"\u003eLicense\u003c/a\u003e |\n\u003ca href=\"#Acknowledgements\"\u003eAcknowledgements\u003c/a\u003e \n\u003c/p\u003e\n\n\u003chr\u003e\n\n* **Source Code:**  \u003ca href=https://github.com/mscaudill/openseize\n                     target=_blank\u003ehttps://github.com/mscaudill/openseize\n                    \u003c/a\u003e\n* **White Paper:** \u003ca href=https://joss.theoj.org/papers/10.21105/joss.05126\n                    target=_blank\u003e10.21105/joss.05126\n                    \u003c/a\u003e\n\n\u003chr\u003e\n\n# Key Features\n\nRecent innovations in EEG recording technologies make it possible to perform\nhigh channel count recordings at high sampling frequencies spanning many\ndays. This results in big EEG data sets that are often not addressable to\nvirtual memory. Worse yet, current digital signal processing (DSP)\npackages that rely on Matlab\u0026copy; or Scipy's DSP routines require the data\nto be a contiguous in-memory array. \u003cb\u003e\u003ca\nhref=https://github.com/mscaudill/openseize target=_blank\u003eOpenseize\u003c/a\u003e is\na fully iterative DSP Python package that can scale to the largest of EEG\ndata sets.\u003c/b\u003e It accomplishes this by storing DSP operations, such as\nfiltering, as on-the-fly iterables that \"produce\" DSP results one fragment\nof the data at a time. Additionally, Openseize is built using time-tested\nsoftware design principles that support extensions while maintaining\na simple interface. Finally, Openseize's \u003ca\nhref=https://mscaudill.github.io/openseize/ target=_blank\u003edocumentation\u003c/a\u003e\nfeatures in-depth discussions of iterative DSP processing and its\nimplementation.\n\n\u003cfont color='black'\u003e\n\u003cul style=\"background-color:#DEF5E8;\"\u003e\n  \u003cli\u003eConstruct sequences of DSP steps that operate completely 'out-of-core' \n  to process data too large to fit into memory.\u003c/li\u003e\n  \u003cli\u003eDSP pipelines are constructed using a familiar Scipy-like API, so you \n  can start quickly without sweating the details.\u003c/li\u003e\n  \u003cli\u003e Supports processing of data from multiple file types including the \n  popular European Data Format (EDF).\u003c/li\u003e\n  \u003cli\u003eSupports 'masking' to filter data sections by artifacts, behavioral \n  states or any externally measured signals or annotations.\u003c/li\u003e\n  \u003cli\u003e Efficiently process large data using the amount of memory \u003cu\u003eyou\u003c/u\u003e\n  choose to use.\u003c/li\u003e\n  \u003cli\u003e DSP tools currently include a large number of FIR \u0026 IIR Filters,\n  polyphase decomposition resamplers, and spectral estimation tools for both\n  stationary and non-stationary data.\u003c/li\u003e\n  \u003cli\u003e Built using a developer-friendly object-oriented approach to support\n  extensibility.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/font\u003e\n\n# Installation\n\nFor each installation guide below, we **strongly** recommend creating a \nvirtual environment. This environment will isolate external dependencies \nthat may conflict with packages you already have installed on your system. \nPython comes installed with a virtual environment manager called `venv`. \nAdditionally, there are environment managers like `conda` that can check \nfor package conflicts when the environment is created or updated. For more\ninformation please see:\n\n* \u003ca href=https://realpython.com/python-virtual-environments-a-primer/\n   target=_blank\u003ePython Virtual Environments\u003c/a\u003e \n* \u003ca \nhref=https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html target=_blank\u003eConda Environments\u003c/a\u003e \n\n\n### Python Virtual Environment\n\n1. Create your virtual environment, Here we name it `my_venv`. \n```Shell\n$ python3 -m venv my_venv\n```\n\n2. Activate your 'my_venv' environment\n```Shell\n$ source my_venv/bin/activate\n```\n\n3. Install openseize into your virtual environment\n```Shell\n(my_venv)$ pip install openseize\n```\n\n### Conda\n\nThe `conda` environment manager is more advanced than `venv`. When a `conda`\nenvironment is updated, `conda` *simultaneously* looks at all the packages\nto be installed to reduce package conflicts. Having said that, `conda` and\n`pip`, the tool used to install Openseize from pypi, do not always work\nwell together. The developers of `conda` recommend installing all possible\npackages from conda repositories before installing non-conda packages using\n`pip`. To ensure this order of installs, Openseize's source code includes an\nenvironment configuration file (yml) that will build an openseize `conda`\nenvironment. Once built you can then use `pip` to install the openseize\npackage into this environment. Here are the steps:\n\n1. Download the openseize environment \u003ca\nhref=https://github.com/mscaudill/openseize/blob/master/environment.yml \ntarget=_blank\u003econfiguration yaml\u003c/a\u003e \n\n\n2. Create a conda openseize environment.\n```Shell\n$ conda env create --file environment.yml\n```\n\n3. Activate the `openseize` environment.\n```Shell\n$ conda activate openseize\n```\n\n4. Install openseize from pypi into your openseize environment.\n```Shell\n(openseize)$ pip install openseize\n```\n\n### From Source\n\nIf you would like to develop Openseize further, you'll need the source code\nand all development dependencies. Here are the steps:\n\n1. Create a virtual environment with latest pip version.\n```Shell\n$ python3 -m venv env\n$ source env/bin/activate\n$ pip install --upgrade pip\n```\n\n2. Get the source code\n```Shell\n$ git clone https://github.com/mscaudill/openseize.git\n```\n\n3. CD into the directory containing the pyproject.toml and create an \neditable install with `pip`\n```Shell\n$ pip install -e .[dev]\n```\n\n# Dependencies\n\nOpenseize requires \u003cb\u003ePython \u003cspan\u003e\u0026#8805;\u003c/span\u003e 3.8\u003c/b\u003e and has the\nfollowing dependencies:\n\n\u003ctable\u003e\n\n\u003ctr\u003e\n    \u003cth\u003epackage\u003c/th\u003e\n    \u003cth\u003epypi\u003c/th\u003e\n    \u003cth\u003econda\u003c/th\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://requests.readthedocs.io/en/latest/\" \n        target=_blank\u003erequests\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/requests/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003ewget\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/wget/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://numpy.org/doc/stable/index.html#\" \n        target=_blank\u003enumpy\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/numpy/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://scipy.org/\" \n        target=_blank\u003escipy\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/scipy/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://matplotlib.org/\" \n        target=_blank\u003ematplotlib\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/matplotlib/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"https://ipython.org/\" \n        target=_blank\u003eipython\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/ipython/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=https://jupyter.org/ \n        target=_blank\u003enotebook\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/jupyter/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=https://docs.pytest.org/ \n        target=_blank\u003epytest\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/pytest/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003ctr\u003e\n    \u003ctd\u003e\u003ca href=https://psutil.readthedocs.io/en/latest/ \n        target=_blank\u003epsutil\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003ehttps://pypi.org/project/psutil/\u003c/td\u003e\n    \u003ctd align='center'\u003e\u003cspan\u003e\u0026#10003;\u003c/span\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003c/table\u003e\n\n# Documentation\n\nOpenseize documentation site has a [quickstart guide](\nhttps://mscaudill.github.io/openseize/quickstart/), [extensive tutorials](\nhttps://mscaudill.github.io/openseize/tutorials/producers/) and [\nreference pages](https://mscaudill.github.io/openseize/producer/producer/)\nfor all publicly available modules, classes and functions.\n\n# Attribution\n\nPlease see the *Cite this repository* under the About section or the [citation\nfile](https://github.com/mscaudill/openseize/blob/master/CITATION.cff).\n\nAnd if you really like Openseize, you can star the \u003ca\nhref=https://github.com/mscaudill/openseize\u003erepository\u003c/a\u003e \n\u003cspan\u003e\u0026#11088;\u003c/span\u003e!\n\n# Contributions\n\nContributions are what makes open-source fun and we would love for you to\ncontribute. Please check out our [contribution guide](\nhttps://github.com/mscaudill/openseize/blob/master/.github/CONTRIBUTING.md)\nto get started.\n\n# Issues\n\nOpenseize provides custom issue templates for filing bugs, requesting\nfeature enhancements, suggesting documentation changes, or just asking\nquestions. *Ready to discuss?* File an issue \u003ca\nhref=https://github.com/mscaudill/openseize/issues/new/choose\u003ehere\u003c/a\u003e. \n\n# License\n\nOpenseize is licensed under the terms of the 3-Clause BSD License.\n\n# Acknowledgements\n\n**This work is generously supported through the Ting Tsung and Wei Fong Chao \nFoundation and the National Institute of Neurological Disorders and Stroke \n(Grant 2R01 NS100738-05A1).**\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmscaudill%2Fopenseize","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmscaudill%2Fopenseize","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmscaudill%2Fopenseize/lists"}