1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
# Sigima - Scientific Image and Signal Processing Library

[](./LICENSE)
[](https://pypi.org/project/sigima/)
[](https://github.com/DataLab-Platform/Sigima)
[](https://pypi.org/project/sigima/)
**Sigima** is an **open-source Python library for scientific image and signal processing**,
designed as a modular and testable foundation for building advanced analysis pipelines.
๐ฌ Developed by the [DataLab Platform Developers](https://github.com/DataLab-Platform), Sigima powers the computation backend of [DataLab](https://datalab-platform.com/).
## ๐ Project & Sponsors
| Project/Sponsor | Description |
|---------------------|-------------|
| <a href="https://datalab-platform.com/"><img src="https://raw.githubusercontent.com/DataLab-Platform/DataLab/main/resources/DataLab-Banner.svg" alt="DataLab logo" style="height:80px;"/></a> | Open-source platform for scientific signal and image processing, powered by Sigima. |
| <a href="https://nlnet.nl/"><img src="https://nlnet.nl/logo/banner.svg" alt="NLnet logo" style="height:80px;width:209px;"/></a> | European non-profit supporting open-source and internet projects. Sigima has received funding from NLnet for its development, through the DataLab project. |
---
## โจ Highlights
- Unified processing model for **1D signals** and **2D images**
- Works with **object-oriented wrappers** (`SignalObj`, `ImageObj`) extending NumPy arrays
- Includes common processing tasks: filtering, smoothing, binning, thresholding, labeling, etc.
- Structured for **testability**, **modularity**, and **headless usage**
- 100% **independent of GUI frameworks** (no Qt/PlotPyStack dependencies)
---
## ๐ก Use cases
Sigima is meant to be:
- A **processing backend** for scientific/industrial tools
- A library to **build reproducible analysis pipelines**
- A component for **headless automation or remote execution**
- A testbed for **developing and validating new signal/image operations**
---
## ๐ Design Philosophy
The main goal of **Sigima** is to provide a unified, high-level API for handling and processing **1D signals** and **2D images**, through dedicated Python objects: `SignalObj` and `ImageObj`.
The library is organized to separate concerns clearly:
- `sigima.objects`: defines the object model for signals and images.
- `sigima.params`: contains parameter classes for configuring processing functions.
- `sigima.proc`: provides high-level processing functions that operate directly on `SignalObj` and `ImageObj` instances.
- `sigima.io`: handles input/output operations (CSV files, image formats, etc.) for signals and images.
- `sigima.tools`: contains **low-level, NumPy-based functions** that implement the core logic behind many processing routines.
This structure supports a **layered programming model**:
- Developers can use `computation` to process full signal/image objects in an object-oriented manner.
- Or they can directly use `tools` to process raw NumPy arrays โ for instance, in custom tools or when integrating Sigima into other projects.
> โ ๏ธ `sigima.tools` is not intended as a general-purpose NumPy extension. Its purpose is to **fill in the gaps** of common scientific libraries (NumPy, SciPy, scikit-image, etc.), offering consistent tools for signal/image processing in the context of Sigima and similar projects.
---
## Usage Outside Sigima
Although Sigima is designed primarily for object-based processing, some of its core functions are useful on their own.
For instance, the [DataLab](https://datalab-platform.com) project โ an open-source platform for signal/image processing โ uses many functions from `sigima.tools` independently of the object model. This demonstrates how `sigima.tools` can serve as a **lightweight utility layer** in scientific and industrial Python applications, even when the object model is not used directly.
To maintain this flexibility and avoid confusion, the distinction between `tools` (array-based) and `computation` (object-based) is intentional and explicit.
---
## ๐ฆ Installation
```bash
pip install sigima
```
Or in a development environment:
```bash
git clone https://github.com/DataLab-Platform/Sigima.git
cd Sigima
pip install -e .
```
---
## ๐ Documentation
๐ Full documentation (in progress) is available at:
๐ <https://sigima.readthedocs.io/>
> Want to use Sigima inside DataLab with GUI tools?
> Check out the full platform: [DataLab](https://datalab-platform.com/)
---
## โ๏ธ Architecture
Sigima is organized by data type:
```text
sigima/
โโโ tools/ # Low-level NumPy-based algorithms supporting some computation functions
โโโ proc/ # High-level processing functions operating on SignalObj/ImageObj
โ โโโ base/ # Common processing functions
โ โโโ signal/ # 1D signal processing
โ โโโ image/ # 2D image processing
```
Each domain provides:
- Low-level functions operating on NumPy arrays
- High-level functions operating on `SignalObj` or `ImageObj`
---
## ๐งช Testing
Sigima comes with unit tests based on `pytest`.
To run all tests:
```bash
pytest
```
To run GUI-assisted validation tests (optional):
```bash
pytest --gui
```
---
## ๐ง License
Sigima is distributed under the terms of the BSD 3-Clause license.
See [LICENSE](./LICENSE) for details.
---
## ๐ค Contributing
Bug reports, feature requests and pull requests are welcome!
See the [CONTRIBUTING](https://datalab-platform.com/en/contributing) guide to get started.
---





---
ยฉ DataLab Platform Developers
|