# YSA Signal
[](https://github.com/ParrishLab/ysa-signal/actions/workflows/post-release-test.yml)
[](https://badge.fury.io/py/ysa-signal)
**Standalone signal analyzer for downsampled .brw files**
YSA Signal processes MEA recordings from downsampled .brw files, detects seizures and status epilepticus events, and saves the results in a compact HDF5 format.
**Supported Platforms**: macOS (Intel & Apple Silicon) • Windows (x64)
## Installation
```bash
pip install ysa-signal
```
## Usage
### GUI Mode
To run the GUI, just run this command after installation:
```bash
ysa-signal
```
The GUI provides two tabs:
- **Process Files**: Select input files, optionally enable seizure analysis, and save processed data
- **View Signals**: Load processed files and view signals in an interactive 64x64 channel grid
### CLI Mode
```bash
# Process without analysis (faster)
ysa-signal input.brw output_processed.h5
# Process with seizure analysis
ysa-signal input.brw output_processed.h5 --do-analysis
```
### Python API
```python
from ysa_signal import process_and_store, save_processed_data, load_processed_data
# Read in downsampled .brw file, process it, and store the results in memory (not on disk on a file)
processed_data = process_and_store('/path/to/file.brw', do_analysis=True)
# Save the processed data to an h5 file (on disk on a file you specify)
save_processed_data(processed_data, '/path/to/file_processed.h5')
# With already processed data saved to an h5 file, you can load it back into memory
loaded_data = load_processed_data('/path/to/file_processed.h5')
# Example: Accessing data for a specific channel (row, col)
row = loaded_data.active_channels[0][0]
col = loaded_data.active_channels[0][1]
# Access the signal and seizure times for the specified channel
channel_data = loaded_data.data[row - 1, col - 1]
signal = channel_data['signal']
sz_times = channel_data['SzTimes']
```
### Batch Processing Example
```python
from ysa_signal import process_and_store, save_processed_data
import glob
for brw_file in glob.glob('data/*.brw'):
output_file = brw_file.replace('.brw', '_processed.h5')
processed_data = process_and_store(brw_file, do_analysis=True)
save_processed_data(processed_data, output_file)
```
## Support
- GitHub: [github.com/ParrishLab/ysa-signal](https://github.com/ParrishLab/ysa-signal/issues)
- Email: jacobbcahoon@gmail.com
- Phone: (385) 307-9925
Raw data
{
"_id": null,
"home_page": null,
"name": "ysa-signal",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "signal processing, neuroscience, electrophysiology, MEA, seizure detection",
"author": null,
"author_email": "Jake Cahoon <jacobbcahoon@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/19/c3/78fbc3abede2ab73b1a1b69a3357243d6da80ec41320edf14f49e10bfcf2/ysa_signal-1.2.15.tar.gz",
"platform": null,
"description": "# YSA Signal\n\n[](https://github.com/ParrishLab/ysa-signal/actions/workflows/post-release-test.yml)\n[](https://badge.fury.io/py/ysa-signal)\n\n**Standalone signal analyzer for downsampled .brw files**\n\nYSA Signal processes MEA recordings from downsampled .brw files, detects seizures and status epilepticus events, and saves the results in a compact HDF5 format.\n\n**Supported Platforms**: macOS (Intel & Apple Silicon) \u2022 Windows (x64)\n\n## Installation\n\n```bash\npip install ysa-signal\n```\n\n## Usage\n\n### GUI Mode\n\nTo run the GUI, just run this command after installation:\n```bash\nysa-signal\n```\n\nThe GUI provides two tabs:\n\n- **Process Files**: Select input files, optionally enable seizure analysis, and save processed data\n- **View Signals**: Load processed files and view signals in an interactive 64x64 channel grid\n\n### CLI Mode\n\n```bash\n# Process without analysis (faster)\nysa-signal input.brw output_processed.h5\n\n# Process with seizure analysis\nysa-signal input.brw output_processed.h5 --do-analysis\n```\n\n### Python API\n\n```python\nfrom ysa_signal import process_and_store, save_processed_data, load_processed_data\n\n# Read in downsampled .brw file, process it, and store the results in memory (not on disk on a file)\nprocessed_data = process_and_store('/path/to/file.brw', do_analysis=True)\n\n# Save the processed data to an h5 file (on disk on a file you specify)\nsave_processed_data(processed_data, '/path/to/file_processed.h5')\n\n# With already processed data saved to an h5 file, you can load it back into memory\nloaded_data = load_processed_data('/path/to/file_processed.h5')\n\n# Example: Accessing data for a specific channel (row, col)\nrow = loaded_data.active_channels[0][0]\ncol = loaded_data.active_channels[0][1]\n\n# Access the signal and seizure times for the specified channel\nchannel_data = loaded_data.data[row - 1, col - 1]\nsignal = channel_data['signal']\nsz_times = channel_data['SzTimes']\n```\n\n### Batch Processing Example\n\n```python\nfrom ysa_signal import process_and_store, save_processed_data\nimport glob\n\nfor brw_file in glob.glob('data/*.brw'):\n output_file = brw_file.replace('.brw', '_processed.h5')\n processed_data = process_and_store(brw_file, do_analysis=True)\n save_processed_data(processed_data, output_file)\n```\n\n## Support\n\n- GitHub: [github.com/ParrishLab/ysa-signal](https://github.com/ParrishLab/ysa-signal/issues)\n- Email: jacobbcahoon@gmail.com\n- Phone: (385) 307-9925\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "YSA Signal - Standalone signal analyzer for .brw/.h5 files",
"version": "1.2.15",
"project_urls": {
"Homepage": "https://github.com/ParrishLab/ysa-signal",
"Issues": "https://github.com/ParrishLab/ysa-signal/issues",
"Repository": "https://github.com/ParrishLab/ysa-signal"
},
"split_keywords": [
"signal processing",
" neuroscience",
" electrophysiology",
" mea",
" seizure detection"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "f2fedf0306c1323825c2c4b5624c5ca4adc7178af4b8c5178b937cc4b0e4a1ad",
"md5": "8eee11d61337a64fa90e96e65a539947",
"sha256": "fec13b2ac018654bb444a0fd4c73a8e0ebe905eb9691def471c0153e4b60aee4"
},
"downloads": -1,
"filename": "ysa_signal-1.2.15-cp310-cp310-macosx_10_14_x86_64.macosx_15_0_arm64.whl",
"has_sig": false,
"md5_digest": "8eee11d61337a64fa90e96e65a539947",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 1684680,
"upload_time": "2025-10-09T16:43:46",
"upload_time_iso_8601": "2025-10-09T16:43:46.293832Z",
"url": "https://files.pythonhosted.org/packages/f2/fe/df0306c1323825c2c4b5624c5ca4adc7178af4b8c5178b937cc4b0e4a1ad/ysa_signal-1.2.15-cp310-cp310-macosx_10_14_x86_64.macosx_15_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dd2293ce5d67b886de97183fed9cd28c10d90e019f973d903989dfa4d6fa28a9",
"md5": "1490f6a3063b3d4a0f38d21028e6eb5a",
"sha256": "3fc1d59e9108d01f953eeb4d2e38e7edde34349e4ad9538894ae56fd95c664a2"
},
"downloads": -1,
"filename": "ysa_signal-1.2.15-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "1490f6a3063b3d4a0f38d21028e6eb5a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 1935750,
"upload_time": "2025-10-09T16:43:48",
"upload_time_iso_8601": "2025-10-09T16:43:48.038378Z",
"url": "https://files.pythonhosted.org/packages/dd/22/93ce5d67b886de97183fed9cd28c10d90e019f973d903989dfa4d6fa28a9/ysa_signal-1.2.15-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "19c378fbc3abede2ab73b1a1b69a3357243d6da80ec41320edf14f49e10bfcf2",
"md5": "20cd761ecacab8f42d86b8fe79e9bb63",
"sha256": "4a1f2551f42b3472463f501846a32793cbf7c8e319e4dd741616f893f384a72a"
},
"downloads": -1,
"filename": "ysa_signal-1.2.15.tar.gz",
"has_sig": false,
"md5_digest": "20cd761ecacab8f42d86b8fe79e9bb63",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 39028,
"upload_time": "2025-10-09T16:43:49",
"upload_time_iso_8601": "2025-10-09T16:43:49.146235Z",
"url": "https://files.pythonhosted.org/packages/19/c3/78fbc3abede2ab73b1a1b69a3357243d6da80ec41320edf14f49e10bfcf2/ysa_signal-1.2.15.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-09 16:43:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ParrishLab",
"github_project": "ysa-signal",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [
{
"name": "numpy",
"specs": [
[
">=",
"1.19.0"
]
]
},
{
"name": "h5py",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "pybind11",
"specs": [
[
">=",
"2.6.0"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.3.0"
]
]
}
],
"lcname": "ysa-signal"
}