pyzaplineplus


Namepyzaplineplus JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryAdaptive removal of spectral line-noise in EEG via DSS (Zapline-plus reimplementation).
upload_time2025-08-29 23:18:53
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT License Copyright (c) 2024 Sina Esmaeili Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords eeg meg bci dss line noise zapline
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyZaplinePlus

**🧠 Advanced Python library for automatic and adaptive removal of line noise from EEG data**

[![PyPI - Version](https://img.shields.io/pypi/v/pyzaplineplus.svg)](https://pypi.org/project/pyzaplineplus/)
[![Python Versions](https://img.shields.io/pypi/pyversions/pyzaplineplus.svg)](https://pypi.org/project/pyzaplineplus/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Docs](https://img.shields.io/badge/docs-online-brightgreen.svg)](https://snesmaeili.github.io/PyZapline_plus/)
[![CI](https://github.com/snesmaeili/PyZapline_plus/actions/workflows/ci.yml/badge.svg)](https://github.com/snesmaeili/PyZapline_plus/actions)

PyZaplinePlus is a professional Python adaptation of the **Zapline-plus** library, designed to automatically remove spectral peaks like line noise from EEG data while preserving the integrity of the non-noise spectrum and maintaining the data rank. Unlike traditional notch filters, PyZaplinePlus uses sophisticated spectral detection and **Denoising Source Separation (DSS)** to identify and remove line noise components adaptively.

## Overview

EEG signals often suffer from line noise contamination, typically from power lines (e.g., 50 Hz or 60 Hz), and other artifacts. PyZaplinePlus is an adaptive noise removal tool that uses sophisticated spectral detection and denoising source separation (DSS) to identify and remove these line components, providing clean EEG signals without unnecessary loss of important information.

The main objectives of PyZaplinePlus include:
- Accurate and adaptive removal of line noise at specified frequencies.
- Support for automatic noise frequency detection within a given range.
- Methods for handling flat channels, adaptive chunk segmentation, and detailed evaluation of the cleaning process.

## Key Features

- **Line Noise Detection:** Automatic detection of line noise frequencies (50 Hz, 60 Hz, or user-specified) to ensure optimal performance in different environments.
- **Adaptive Chunk Segmentation:** The signal can be segmented using either fixed-length or adaptive chunks, enhancing the precision of noise removal.
- **Denoising Source Separation (DSS):** Uses DSS combined with PCA to identify and remove noise components, reducing interference while maintaining data integrity.
- **Advanced Spectrum Analysis:** Refined detection mechanisms for identifying noisy components in both the coarse and fine frequency domains.
- **Visualization Support:** Built-in functionality for plotting power spectra before and after denoising to allow easy evaluation of noise removal results.

## 🚀 Installation

### From PyPI (Recommended)

```bash
pip install pyzaplineplus
```

### From Source

```bash
git clone https://github.com/snesmaeili/PyZapline_plus.git
cd PyZapline_plus
pip install -e ".[dev]"
```

### With Optional Dependencies

```bash
# For MNE-Python integration
pip install pyzaplineplus[mne]

# For development
pip install pyzaplineplus[dev]
```

### Requirements

- **Python**: 3.8 or higher
- **Core dependencies**:
  - `numpy >= 1.20.0`
  - `scipy >= 1.7.0` 
  - `scikit-learn >= 1.0.0`
  - `matplotlib >= 3.3.0`
- **Optional**:
  - `mne >= 1.0.0` (for EEG integration)

## ðŸ’Ą Usage

### Quick Start

```python
import numpy as np
from pyzaplineplus import zapline_plus

# Your EEG data (time × channels)
data = np.random.randn(10000, 64)  # 10s of 64-channel data at 1000 Hz
sampling_rate = 1000

# Clean the data
cleaned_data, config, analytics, plots = zapline_plus(data, sampling_rate)

# Optional: inspect analytics keys
print('Analytics keys:', list(analytics.keys()))

# Figures (if plotResults=True) are saved under ./figures/
```

### Advanced Usage

```python
from pyzaplineplus import PyZaplinePlus

# Initialize with custom parameters
zp = PyZaplinePlus(
    data, sampling_rate,
    noisefreqs=[50, 60],      # Target 50 and 60 Hz
    minfreq=45,               # Search range: 45-65 Hz
    maxfreq=65,
    chunkLength=10,           # 10-second chunks
    adaptiveNremove=True,     # Adaptive component removal
    plotResults=True          # Generate diagnostic plots
)

# Run the cleaning process
clean_data, config, analytics, plots = zp.run()
```

### Integration with MNE-Python

```python
import mne
from pyzaplineplus import zapline_plus

# Load your MNE data
raw = mne.io.read_raw_fif('sample_raw.fif', preload=True)
data = raw.get_data().T  # Transpose to time × channels
sampling_rate = raw.info['sfreq']

# Clean the data
cleaned_data, _, _, _ = zapline_plus(data, sampling_rate)

# Update your MNE object
raw._data = cleaned_data.T
```

### Real-World Example

```python
import numpy as np
from pyzaplineplus import zapline_plus

# Simulate realistic EEG data with line noise
fs = 500  # Sampling rate
duration = 30  # seconds
n_channels = 64

# Create base EEG signal
t = np.arange(0, duration, 1/fs)
eeg = np.random.randn(len(t), n_channels) * 10  # ΞV

# Add 50 Hz line noise
line_noise = 5 * np.sin(2 * np.pi * 50 * t)
noisy_eeg = eeg + line_noise[:, np.newaxis]

# Remove line noise
clean_eeg, config, analytics, plots = zapline_plus(
    noisy_eeg, fs,
    noisefreqs='line',  # Automatic detection
    plotResults=True
)

print(f"Noise reduction: {analytics['noise_freq_50']['proportion_removed_noise']*100:.1f}%")
```

### Parameters
- `data`: EEG signal data, with dimensions (time, channels).
- `sampling_rate`: Sampling frequency of the EEG data.
- `noisefreqs`: Frequencies of noise to be removed, or set to `'line'` to automatically detect line noise.
- Additional parameters (keyword arguments) to fine-tune the algorithm include:
  - `minfreq`, `maxfreq`: Frequency range to search for noise.
  - `adaptiveNremove`: Whether to use adaptive DSS component removal.
  - `chunkLength`: Length of chunks for fixed segmentation (in seconds).
  - `segmentLength`: Length of segments for adaptive chunk segmentation.
  - `plotResults`: Boolean to enable or disable result visualization.

### Output
The `run()` method returns the following:
- `clean_data`: The denoised EEG data.
- `config`: The configuration used during processing.
- `analytics`: Metrics and statistics evaluating the effectiveness of noise removal.
- `plots`: Handles to the generated figures, if `plotResults=True`.

## Detailed Functionality

### Line Noise Detection
PyZaplinePlus provides both coarse and fine detection methods for line noise. The initial spectrum is analyzed to detect strong line noise candidates, and a refined frequency search is conducted to locate the noise peaks more accurately.

### Denoising Source Separation (DSS)
The core of the noise removal process utilizes DSS with Principal Component Analysis (PCA) to isolate noisy components and remove them selectively. This method ensures minimal alteration of the original signal, maintaining as much of the non-noise-related brain activity as possible.

### Adaptive Cleaning
The cleaning process includes an adaptive mechanism that adjusts based on how successful the noise removal was. If the algorithm detects insufficient cleaning, it iteratively refines the parameters to ensure effective denoising.

### Visualization and Evaluation
PyZaplinePlus can plot the power spectra of the original and cleaned data, providing an overview of the changes and confirming the effectiveness of the cleaning. It also computes analytical metrics such as noise power reduction to quantify performance.

## Use Cases
- **EEG Signal Processing:** PyZaplinePlus is especially well-suited for preprocessing EEG signals collected in environments where power line noise is present.
- **BCI Research:** Brain-computer interface studies that require real-time or offline EEG data analysis can leverage PyZaplinePlus for high-quality signal preprocessing.
- **General Biomedical Signal Denoising:** PyZaplinePlus can also be applied to other physiological signals, such as ECG or EMG, for noise suppression.

## ðŸĪ Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on:

- Development setup
- Coding standards
- Testing requirements
- Pull request process

**Quick start for contributors:**

```bash
git clone https://github.com/SinaEsmaeili/PyZaplinePlus.git
cd PyZaplinePlus
pip install -e ".[dev]"
pytest  # Run tests
```

## License
PyZaplinePlus is released under the MIT License. See `LICENSE` for more details.

## Acknowledgments
The PyZaplinePlus algorithm is inspired by the MATLAB-based Zapline-plus implementation, initially designed for removing line noise from EEG signals. Special thanks to the original authors and contributors who laid the foundation for this adaptive noise removal approach.

## Documentation
For full documentation, examples, and API reference, visit:

- Full docs: https://snesmaeili.github.io/PyZapline_plus/
- Examples: https://snesmaeili.github.io/PyZapline_plus/user-guide/examples/
- API: https://snesmaeili.github.io/PyZapline_plus/api/

## Please Cite
If you find PyZaplinePlus useful in your research, please cite the original papers:

- Klug, M., & Kloosterman, N. A. (2022). Zapline-plus: A Zapline extension for automatic and adaptive removal of frequency-specific noise artifacts in M/EEG. Human Brain Mapping, 1–16. https://doi.org/10.1002/hbm.25832
- de Cheveigne, A. (2020). ZapLine: a simple and effective method to remove power line artifacts. NeuroImage, 1, 1-13. https://doi.org/10.1016/j.neuroimage.2019.116356

## 📚 Documentation

- **[Full Documentation](https://snesmaeili.github.io/PyZapline_plus/)**
- **[Installation Guide](https://snesmaeili.github.io/PyZapline_plus/user-guide/installation/)**
- **[Examples](https://snesmaeili.github.io/PyZapline_plus/user-guide/examples/)**
- **[API Reference](https://snesmaeili.github.io/PyZapline_plus/api/)**

## 💎 Support & Community

- **📖 Documentation**: https://snesmaeili.github.io/PyZapline_plus/
- **🐛 Issues**: https://github.com/snesmaeili/PyZapline_plus/issues
- **💎 Discussions**: https://github.com/snesmaeili/PyZapline_plus/discussions
- **📧 Email**: [sina.esmaeili@umontreal.ca](mailto:sina.esmaeili@umontreal.ca)

## 🏆 Related Projects

- **[MNE-Python](https://mne.tools/)**: Comprehensive neurophysiological data analysis
- **[EEGLAB](https://eeglab.org/)**: MATLAB toolbox for EEG analysis
- **[FieldTrip](https://www.fieldtriptoolbox.org/)**: Advanced analysis of MEG, EEG, and invasive electrophysiological data

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyzaplineplus",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "EEG, MEG, BCI, DSS, line noise, zapline",
    "author": null,
    "author_email": "Sina Esmaeili <sina.esmaeili@umontreal.ca>",
    "download_url": "https://files.pythonhosted.org/packages/9a/ba/c999d4198eacb71eafedf7e5db31fbddc384ffecfeb6e8056750b32fb232/pyzaplineplus-0.1.0.tar.gz",
    "platform": null,
    "description": "# PyZaplinePlus\n\n**\ud83e\udde0 Advanced Python library for automatic and adaptive removal of line noise from EEG data**\n\n[![PyPI - Version](https://img.shields.io/pypi/v/pyzaplineplus.svg)](https://pypi.org/project/pyzaplineplus/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/pyzaplineplus.svg)](https://pypi.org/project/pyzaplineplus/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Docs](https://img.shields.io/badge/docs-online-brightgreen.svg)](https://snesmaeili.github.io/PyZapline_plus/)\n[![CI](https://github.com/snesmaeili/PyZapline_plus/actions/workflows/ci.yml/badge.svg)](https://github.com/snesmaeili/PyZapline_plus/actions)\n\nPyZaplinePlus is a professional Python adaptation of the **Zapline-plus** library, designed to automatically remove spectral peaks like line noise from EEG data while preserving the integrity of the non-noise spectrum and maintaining the data rank. Unlike traditional notch filters, PyZaplinePlus uses sophisticated spectral detection and **Denoising Source Separation (DSS)** to identify and remove line noise components adaptively.\n\n## Overview\n\nEEG signals often suffer from line noise contamination, typically from power lines (e.g., 50 Hz or 60 Hz), and other artifacts. PyZaplinePlus is an adaptive noise removal tool that uses sophisticated spectral detection and denoising source separation (DSS) to identify and remove these line components, providing clean EEG signals without unnecessary loss of important information.\n\nThe main objectives of PyZaplinePlus include:\n- Accurate and adaptive removal of line noise at specified frequencies.\n- Support for automatic noise frequency detection within a given range.\n- Methods for handling flat channels, adaptive chunk segmentation, and detailed evaluation of the cleaning process.\n\n## Key Features\n\n- **Line Noise Detection:** Automatic detection of line noise frequencies (50 Hz, 60 Hz, or user-specified) to ensure optimal performance in different environments.\n- **Adaptive Chunk Segmentation:** The signal can be segmented using either fixed-length or adaptive chunks, enhancing the precision of noise removal.\n- **Denoising Source Separation (DSS):** Uses DSS combined with PCA to identify and remove noise components, reducing interference while maintaining data integrity.\n- **Advanced Spectrum Analysis:** Refined detection mechanisms for identifying noisy components in both the coarse and fine frequency domains.\n- **Visualization Support:** Built-in functionality for plotting power spectra before and after denoising to allow easy evaluation of noise removal results.\n\n## \ud83d\ude80 Installation\n\n### From PyPI (Recommended)\n\n```bash\npip install pyzaplineplus\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/snesmaeili/PyZapline_plus.git\ncd PyZapline_plus\npip install -e \".[dev]\"\n```\n\n### With Optional Dependencies\n\n```bash\n# For MNE-Python integration\npip install pyzaplineplus[mne]\n\n# For development\npip install pyzaplineplus[dev]\n```\n\n### Requirements\n\n- **Python**: 3.8 or higher\n- **Core dependencies**:\n  - `numpy >= 1.20.0`\n  - `scipy >= 1.7.0` \n  - `scikit-learn >= 1.0.0`\n  - `matplotlib >= 3.3.0`\n- **Optional**:\n  - `mne >= 1.0.0` (for EEG integration)\n\n## \ud83d\udca1 Usage\n\n### Quick Start\n\n```python\nimport numpy as np\nfrom pyzaplineplus import zapline_plus\n\n# Your EEG data (time \u00d7 channels)\ndata = np.random.randn(10000, 64)  # 10s of 64-channel data at 1000 Hz\nsampling_rate = 1000\n\n# Clean the data\ncleaned_data, config, analytics, plots = zapline_plus(data, sampling_rate)\n\n# Optional: inspect analytics keys\nprint('Analytics keys:', list(analytics.keys()))\n\n# Figures (if plotResults=True) are saved under ./figures/\n```\n\n### Advanced Usage\n\n```python\nfrom pyzaplineplus import PyZaplinePlus\n\n# Initialize with custom parameters\nzp = PyZaplinePlus(\n    data, sampling_rate,\n    noisefreqs=[50, 60],      # Target 50 and 60 Hz\n    minfreq=45,               # Search range: 45-65 Hz\n    maxfreq=65,\n    chunkLength=10,           # 10-second chunks\n    adaptiveNremove=True,     # Adaptive component removal\n    plotResults=True          # Generate diagnostic plots\n)\n\n# Run the cleaning process\nclean_data, config, analytics, plots = zp.run()\n```\n\n### Integration with MNE-Python\n\n```python\nimport mne\nfrom pyzaplineplus import zapline_plus\n\n# Load your MNE data\nraw = mne.io.read_raw_fif('sample_raw.fif', preload=True)\ndata = raw.get_data().T  # Transpose to time \u00d7 channels\nsampling_rate = raw.info['sfreq']\n\n# Clean the data\ncleaned_data, _, _, _ = zapline_plus(data, sampling_rate)\n\n# Update your MNE object\nraw._data = cleaned_data.T\n```\n\n### Real-World Example\n\n```python\nimport numpy as np\nfrom pyzaplineplus import zapline_plus\n\n# Simulate realistic EEG data with line noise\nfs = 500  # Sampling rate\nduration = 30  # seconds\nn_channels = 64\n\n# Create base EEG signal\nt = np.arange(0, duration, 1/fs)\neeg = np.random.randn(len(t), n_channels) * 10  # \u03bcV\n\n# Add 50 Hz line noise\nline_noise = 5 * np.sin(2 * np.pi * 50 * t)\nnoisy_eeg = eeg + line_noise[:, np.newaxis]\n\n# Remove line noise\nclean_eeg, config, analytics, plots = zapline_plus(\n    noisy_eeg, fs,\n    noisefreqs='line',  # Automatic detection\n    plotResults=True\n)\n\nprint(f\"Noise reduction: {analytics['noise_freq_50']['proportion_removed_noise']*100:.1f}%\")\n```\n\n### Parameters\n- `data`: EEG signal data, with dimensions (time, channels).\n- `sampling_rate`: Sampling frequency of the EEG data.\n- `noisefreqs`: Frequencies of noise to be removed, or set to `'line'` to automatically detect line noise.\n- Additional parameters (keyword arguments) to fine-tune the algorithm include:\n  - `minfreq`, `maxfreq`: Frequency range to search for noise.\n  - `adaptiveNremove`: Whether to use adaptive DSS component removal.\n  - `chunkLength`: Length of chunks for fixed segmentation (in seconds).\n  - `segmentLength`: Length of segments for adaptive chunk segmentation.\n  - `plotResults`: Boolean to enable or disable result visualization.\n\n### Output\nThe `run()` method returns the following:\n- `clean_data`: The denoised EEG data.\n- `config`: The configuration used during processing.\n- `analytics`: Metrics and statistics evaluating the effectiveness of noise removal.\n- `plots`: Handles to the generated figures, if `plotResults=True`.\n\n## Detailed Functionality\n\n### Line Noise Detection\nPyZaplinePlus provides both coarse and fine detection methods for line noise. The initial spectrum is analyzed to detect strong line noise candidates, and a refined frequency search is conducted to locate the noise peaks more accurately.\n\n### Denoising Source Separation (DSS)\nThe core of the noise removal process utilizes DSS with Principal Component Analysis (PCA) to isolate noisy components and remove them selectively. This method ensures minimal alteration of the original signal, maintaining as much of the non-noise-related brain activity as possible.\n\n### Adaptive Cleaning\nThe cleaning process includes an adaptive mechanism that adjusts based on how successful the noise removal was. If the algorithm detects insufficient cleaning, it iteratively refines the parameters to ensure effective denoising.\n\n### Visualization and Evaluation\nPyZaplinePlus can plot the power spectra of the original and cleaned data, providing an overview of the changes and confirming the effectiveness of the cleaning. It also computes analytical metrics such as noise power reduction to quantify performance.\n\n## Use Cases\n- **EEG Signal Processing:** PyZaplinePlus is especially well-suited for preprocessing EEG signals collected in environments where power line noise is present.\n- **BCI Research:** Brain-computer interface studies that require real-time or offline EEG data analysis can leverage PyZaplinePlus for high-quality signal preprocessing.\n- **General Biomedical Signal Denoising:** PyZaplinePlus can also be applied to other physiological signals, such as ECG or EMG, for noise suppression.\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on:\n\n- Development setup\n- Coding standards\n- Testing requirements\n- Pull request process\n\n**Quick start for contributors:**\n\n```bash\ngit clone https://github.com/SinaEsmaeili/PyZaplinePlus.git\ncd PyZaplinePlus\npip install -e \".[dev]\"\npytest  # Run tests\n```\n\n## License\nPyZaplinePlus is released under the MIT License. See `LICENSE` for more details.\n\n## Acknowledgments\nThe PyZaplinePlus algorithm is inspired by the MATLAB-based Zapline-plus implementation, initially designed for removing line noise from EEG signals. Special thanks to the original authors and contributors who laid the foundation for this adaptive noise removal approach.\n\n## Documentation\nFor full documentation, examples, and API reference, visit:\n\n- Full docs: https://snesmaeili.github.io/PyZapline_plus/\n- Examples: https://snesmaeili.github.io/PyZapline_plus/user-guide/examples/\n- API: https://snesmaeili.github.io/PyZapline_plus/api/\n\n## Please Cite\nIf you find PyZaplinePlus useful in your research, please cite the original papers:\n\n- Klug, M., & Kloosterman, N. A. (2022). Zapline-plus: A Zapline extension for automatic and adaptive removal of frequency-specific noise artifacts in M/EEG. Human Brain Mapping, 1\u201316. https://doi.org/10.1002/hbm.25832\n- de Cheveigne, A. (2020). ZapLine: a simple and effective method to remove power line artifacts. NeuroImage, 1, 1-13. https://doi.org/10.1016/j.neuroimage.2019.116356\n\n## \ud83d\udcda Documentation\n\n- **[Full Documentation](https://snesmaeili.github.io/PyZapline_plus/)**\n- **[Installation Guide](https://snesmaeili.github.io/PyZapline_plus/user-guide/installation/)**\n- **[Examples](https://snesmaeili.github.io/PyZapline_plus/user-guide/examples/)**\n- **[API Reference](https://snesmaeili.github.io/PyZapline_plus/api/)**\n\n## \ud83d\udcac Support & Community\n\n- **\ud83d\udcd6 Documentation**: https://snesmaeili.github.io/PyZapline_plus/\n- **\ud83d\udc1b Issues**: https://github.com/snesmaeili/PyZapline_plus/issues\n- **\ud83d\udcac Discussions**: https://github.com/snesmaeili/PyZapline_plus/discussions\n- **\ud83d\udce7 Email**: [sina.esmaeili@umontreal.ca](mailto:sina.esmaeili@umontreal.ca)\n\n## \ud83c\udfc6 Related Projects\n\n- **[MNE-Python](https://mne.tools/)**: Comprehensive neurophysiological data analysis\n- **[EEGLAB](https://eeglab.org/)**: MATLAB toolbox for EEG analysis\n- **[FieldTrip](https://www.fieldtriptoolbox.org/)**: Advanced analysis of MEG, EEG, and invasive electrophysiological data\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2024 Sina Esmaeili\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "Adaptive removal of spectral line-noise in EEG via DSS (Zapline-plus reimplementation).",
    "version": "0.1.0",
    "project_urls": {
        "Documentation": "https://snesmaeili.github.io/PyZapline_plus/",
        "Homepage": "https://github.com/snesmaeili/PyZapline_plus",
        "Issues": "https://github.com/snesmaeili/PyZapline_plus/issues",
        "Source": "https://github.com/snesmaeili/PyZapline_plus"
    },
    "split_keywords": [
        "eeg",
        " meg",
        " bci",
        " dss",
        " line noise",
        " zapline"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e812f2b26fccafa211b69ce46a28d06a7dfbd147ec82ee7e698d842d617fcf62",
                "md5": "54ea188471ef1ff6c1584becfe5732a1",
                "sha256": "f776c59c27c0e5d4b2ff1afb872ff393b424f74f54b229748749eafeb8884c17"
            },
            "downloads": -1,
            "filename": "pyzaplineplus-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "54ea188471ef1ff6c1584becfe5732a1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 34287,
            "upload_time": "2025-08-29T23:18:52",
            "upload_time_iso_8601": "2025-08-29T23:18:52.228083Z",
            "url": "https://files.pythonhosted.org/packages/e8/12/f2b26fccafa211b69ce46a28d06a7dfbd147ec82ee7e698d842d617fcf62/pyzaplineplus-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9abac999d4198eacb71eafedf7e5db31fbddc384ffecfeb6e8056750b32fb232",
                "md5": "663452f9aa5f7012d94084073f08ba69",
                "sha256": "908364874d19105ff160bbc5de1db41cf622f7455f8cfe974964fe7579190022"
            },
            "downloads": -1,
            "filename": "pyzaplineplus-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "663452f9aa5f7012d94084073f08ba69",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 58864,
            "upload_time": "2025-08-29T23:18:53",
            "upload_time_iso_8601": "2025-08-29T23:18:53.323442Z",
            "url": "https://files.pythonhosted.org/packages/9a/ba/c999d4198eacb71eafedf7e5db31fbddc384ffecfeb6e8056750b32fb232/pyzaplineplus-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-29 23:18:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "snesmaeili",
    "github_project": "PyZapline_plus",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyzaplineplus"
}
        
Elapsed time: 1.88162s