Metadata-Version: 2.4
Name: phenotypic
Version: 0.14.0b5
Summary: An image processing framework created for Ex-FAB NSF BioFoundry that aims to streamline the development of image processing pipelines for images analysis of phenotypes.
Author-email: Alexander Nguyen <xander-git@protonmail.com>
Project-URL: Repository, https://github.com/Wheeldon-Lab/PhenoTypic
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas
Requires-Dist: numpy
Requires-Dist: seaborn
Requires-Dist: scikit-image
Requires-Dist: scikit-learn
Requires-Dist: scipy
Requires-Dist: opencv-python
Requires-Dist: h5py
Requires-Dist: mahotas
Requires-Dist: pillow
Requires-Dist: tqdm
Requires-Dist: mmh3
Requires-Dist: psutil>=7.0.0
Requires-Dist: colour-science>=0.4.6
Requires-Dist: rawpy; sys_platform != "win32"
Requires-Dist: threadpoolctl>=3.6.0
Requires-Dist: pympler>=1.0.1
Requires-Dist: exifread>=3.5.1
Requires-Dist: polars>=1.0.0
Requires-Dist: click>=8.3.0
Requires-Dist: bm3d>=4.0.3
Requires-Dist: wand>=0.6.13
Requires-Dist: tqdm-joblib>=0.0.5
Requires-Dist: rich>=14.2.0
Requires-Dist: imagecodecs>=2025.3.30
Requires-Dist: findiff>=0.12.2
Requires-Dist: numba>=0.62.1
Requires-Dist: plotly>=6.0.0
Requires-Dist: pyarrow>=23.0.1
Requires-Dist: duckdb>=1.2.0
Requires-Dist: kaleido>=1.2.0
Requires-Dist: ruptures>=1.1.9
Requires-Dist: typing_extensions>=4.0.0
Requires-Dist: pooch>=1.8
Provides-Extra: gui
Requires-Dist: napari[optional,pyqt5]<0.7.0,>=0.5.4; sys_platform != "darwin" and extra == "gui"
Requires-Dist: napari[all]>=0.5.4; sys_platform == "darwin" and extra == "gui"
Requires-Dist: panel>=1.3; extra == "gui"
Requires-Dist: param>=2.0; extra == "gui"
Requires-Dist: bokeh>=3.3; extra == "gui"
Requires-Dist: jinja2>=3.1; extra == "gui"
Requires-Dist: jupyter-bokeh>=4.0.5; extra == "gui"
Requires-Dist: ipykernel>=6.31.0; extra == "gui"
Requires-Dist: ipywidgets>=8.1.7; extra == "gui"
Requires-Dist: jupyter>=1.1.1; extra == "gui"
Provides-Extra: torch
Requires-Dist: torch>=2.5.1; sys_platform != "win32" and extra == "torch"
Requires-Dist: torchvision>=0.20.1; sys_platform != "win32" and extra == "torch"
Requires-Dist: sam2; sys_platform != "win32" and extra == "torch"
Dynamic: license-file

<div style="background-color: white; display: inline-block; padding: 10px; border-radius: 0px;">
  <img src="./docs/source/_static/assets/400x150/gradient_logo_exfab.svg" alt="Phenotypic Logo" style="width: 400px; height: auto;">
</div>

# PhenoTypic: A Python Framework for Bio-Image Analysis

![Development Status](https://img.shields.io/badge/dev_status-beta-orange)

A modular image processing framework developed at the NSF Ex-FAB BioFoundry, focused on
arrayed colony phenotyping on solid media.

---

### Links:

[![docs](https://img.shields.io/badge/Documentation-purple?style=for-the-badge)](https://exfab.github.io/PhenoTypic/)

[![exfab](https://img.shields.io/badge/ExFAB_NSF_BioFoundry-blue?style=for-the-badge)](https://exfab.engineering.ucsb.edu/)

## Overview

PhenoTypic provides a modular toolkit designed to simplify and accelerate the
development of reusable bio-image analysis
pipelines. PhenoTypic provides bio-image analysis tools built-in, but has a streamlined
development method
to integrate new tools.

# Installation

## uv (recommended)

**See more** on
<u>[installing uv](https://docs.astral.sh/uv/getting-started/installation/)</u>

**Regular Install** (recommended when deploying on a cluster)

```bash
uv add phenotypic
```

**Interactive / GUI Install** (napari viewer, Panel dashboards, Jupyter)

```bash
uv add "phenotypic[gui]"
```

## Pip

**Regular Install**

```bash
pip install phenotypic
```

**Interactive / GUI Install**

```bash
pip install "phenotypic[gui]"
```

Note: may not always be the latest version. Install from repo when latest update is
needed

## Manual Installation (For latest updates)

```
git clone https://github.com/exfab/PhenoTypic.git
cd PhenoTypic
uv sync
```

## Dev Installation

For extending PhenoTypic.

```
git clone https://github.com/exfab/PhenoTypic.git
cd PhenoTypic
uv sync --group dev
```

## GPU-Accelerated Detection (SAM2, micro-sam)

PhenoTypic ships optional deep-learning detectors backed by Meta's
[Segment Anything Model 2](https://github.com/facebookresearch/sam2) and
[micro-sam](https://github.com/computational-cell-analytics/micro-sam).

* **SAM2** is available on PyPI and ships in the `torch` extra:

  ```bash
  uv add "phenotypic[torch]"   # Linux/macOS only
  ```

* **micro-sam** is only published on conda-forge (not PyPI), so it is
  **not** bundled with any `phenotypic` extra. If you need
  `MicroSamDetector`, see the "Enabling micro_sam" section of the
  [GPU Detection Setup](https://exfab.github.io/PhenoTypic/how_to/pages/gpu_detection_setup.html)
  guide for a user-side `pixi.toml` that installs `phenotypic` and
  `micro_sam` together in a single environment. `MicroSamDetector`
  remains importable without `micro_sam` installed; the `ImportError`
  is deferred to the first `apply()` call.

See [GPU Detection Setup](https://exfab.github.io/PhenoTypic/how_to/pages/gpu_detection_setup.html)
for model downloads and SLURM deployment instructions.

## Optional Installation

To extract metadata from raw images, PhenoTypic uses the `PyExifTool` module. This
requires an external software called
ExifTool. You can install ExifTool here: https://exiftool.org/install.html. If you don't
use it, some metadata from raw
files may not be able to be imported. Read more
here: https://pypi.org/project/PyExifTool/#pyexiftool-dependencies

# Module Overview

| Module                  | Description                                                                                                                |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------|
| `phenotypic.analysis`   | Tools for downstream analysis of the data from phenotypic in various ways such as growth modeling or statistical filtering |
| `phenotypic.correction` | Different methods to improve the data quality of an image such as rotation to improve grid finding                         |
| `phenotypic.data`       | Sample images to experiment your workflow with                                                                             |
| `phenotypic.detect`     | A suite of operations to automatically detect objects in your images                                                       |
| `phenotypic.enhance`    | Preprocessing tools that alter a copy of your image and can improve the results of the detection algorithms                |
| `phenotypic.grid`       | Modules that rely on grid and object information to function                                                               |
| `phenotypic.measure`    | The various measurements PhenoTypic is capable of extracting from objects                                                  |
| `phenotypic.nn`         | GPU-accelerated detectors (SAM2, micro-sam) with checkpoint management — see [setup guide](https://exfab.github.io/PhenoTypic/how_to/pages/gpu_detection_setup.html) |
| `phenotypic.refine`     | Different tools to edit the detected objects such as morphology, relabeling, joining, or removing                          |
| `phenotypic.prefab`     | Various premade image processing pipelines that are in use at ExFAB                                                        |

# Sponsors

<div style="background-color: white; display: inline-block; padding: 10px; border-radius: 5px;">
  <img src="./docs/source/_static/assets/ExFabLogo.svg" alt="Phenotypic Logo" style="width: 400px; height: auto;">
</div>
