Metadata-Version: 2.5
Name: iaf
Version: 1.5.2
Summary: Code repository for the Practical Course "Methods in Cell Analysis and Laboratory Automation" (Biotechnology Master Students).
Project-URL: Homepage, https://git.bsse.ethz.ch/scu_courses/iaf
Project-URL: Documentation, https://iaf.readthedocs.io/en/latest/index.html
Project-URL: Repository, https://git.bsse.ethz.ch/scu_courses/iaf.git
Author-email: Aaron Ponti <aaron.ponti@bsse.ethz.ch>, Marvin Albert <marvin.albert@bsse.ethz.ch>, "Andreas P. Cuny" <andreas.cuny@bsse.ethz.ch>
License-Expression: Apache-2.0
License-File: LICENSE.md
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Education
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Education
Requires-Python: <3.14,>=3.10
Requires-Dist: h5py<4,>=3.11.0
Requires-Dist: imagecodecs<2025,>=2024.6.1
Requires-Dist: ipython<9,>=8.26.0
Requires-Dist: matplotlib==3.10.8
Requires-Dist: natsort<9,>=8.4.0
Requires-Dist: nd2reader<4,>=3.3.0
Requires-Dist: notebook<8,>=7.2.1
Requires-Dist: numpy<2.4.6
Requires-Dist: opencv-python-headless<5,>=4.10.0.84
Requires-Dist: pandas<3,>=2.2.2
Requires-Dist: pillow<11,>=10.4.0
Requires-Dist: pyarrow<19,>=18.0.0
Requires-Dist: pystackreg<0.3,>=0.2.7
Requires-Dist: requests<3,>=2.32.3
Requires-Dist: scikit-image<0.26,>=0.25.0
Requires-Dist: scikit-learn<2,>=1.5.1
Requires-Dist: scipy<2,>=1.14.0
Requires-Dist: tifffile<2025,>=2024.7.24
Description-Content-Type: text/markdown

# <u>I</u>mage <u>A</u>nalysis <u>F</u>undamentals (iaf)

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Version](https://img.shields.io/badge/version-v1.5.1-green)]()
[![Supported platforms](https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-lightgrey)]()
[![Documentation Status](https://readthedocs.org/projects/iaf/badge/?version=latest)](https://iaf.readthedocs.io/en/latest/?badge=latest)




The `iaf` library is a helper library that adds user-friendly functionality to [scikit-image](https://scikit-image.org/),
[scipy](https://scipy.org/), [matplotlib](https://matplotlib.org/) and other libraries for the purpose of teaching the
fundamentals of image analysis.

## Installation

The `iaf` package installs all necessary dependencies. It is recommended to create a dedicated (conda or venv) 
environment for installation. 

```bash
$ conda create -n iaf-env python=3.11         # Optional
$ conda activate iaf-env                     # Optional
$ pip install iaf
```

Currently, [iaf](https://ia-res.ethz.ch/docs/iaf/index.html) is compatible with python 3.10, 3.11, 2.12, and 3.13.

## Development

The project uses [uv](https://docs.astral.sh/uv/) for dependency management and
[hatchling](https://hatch.pypa.io/latest/) as the build backend. After
[installing uv](https://docs.astral.sh/uv/getting-started/installation/):

```commandline
uv sync --group dev
uv run pytest
```

`uv sync` creates `.venv/` and resolves dependencies from `pyproject.toml`.
Prefix commands with `uv run` to execute them inside that environment. The
generated `uv.lock` is intentionally not committed.

To add or change a dependency, edit `pyproject.toml` and run `uv sync`.

## Documentation

The official documentation is hosted on [https://iaf.readthedocs.org](https://iaf.readthedocs.org). 

To generate the documentation locally run:

```commandline
uv run --group docs python -m sphinx -b html docs docs/_build/html
```

## Build and publish

From your project root, run:

```commandline
uv build
```

This creates artifacts in dist/ such as a wheel and a source tarball.

### Upload to PyPi

Release artifacts are built automatically by GitLab CI. Bump `__version__` in
[iaf/__init__.py](iaf/__init__.py) (it is the single source of truth for the
package version), commit, then push a matching tag:

```commandline
git tag v1.5.2
git push origin v1.5.2
```

The tag pipeline builds the package and verifies that the tag matches
`__version__`. Uploads are always started manually from the tag pipeline in
GitLab: run `publish:testpypi` for an optional TestPyPI dry run, then run
`publish:pypi` when the artifacts are ready for the production release. See
[.gitlab-ci.yml](.gitlab-ci.yml) for the required CI/CD variables.

To publish manually instead:

```commandline
uv publish --token <your-pypi-token>
```


## License

Apache License 2.0. See [LICENSE](LICENSE).

Copyright © 2026 ETH Zurich

Creators: Aaron Ponti (original creator), Marvin Albert, Andreas P. Cuny

The morph module contains reimplementations, in pure
Python/numpy/scipy, of equivalent functions in the ``centrosome`` library (https://github.com/CellProfiler/centrosome) 
licensed under BSD 3-Clause License, and we hereby wish to credit the algorithmic source per the
terms of centrosome's own license.

We further would like to acknowledge the anonymous contributors of the test images used in the test suite of this package.
