unikill066's picture
Update README.md
9a713a9 verified
---
title: Cellpose+SAM DRG Segmentation
license: mit
sdk: streamlit
emoji: 🏃
colorFrom: indigo
colorTo: purple
app_file: streamlit_app.py
---
# Spinal Cord Segmentation Pipeline
Automated, end‑to‑end processing and segmentation of spinal‑cord microscopy images with [Cellpose](https://cellpose.readthedocs.io/).
## Overview
This repository provides a **turn‑key workflow** for turning raw histological slides of the spinal cord (TIFF) into high‑quality, full‑resolution segmentation masks—in a *single command*.
## Key Features
| Stage | Purpose |
|-------|---------|
| **TIFF → PNG conversion** | Converts raw `.tiff` slides to compressed `.png`, with optional down‑scaling to speed up processing. |
| **Smart tiling** | Splits very large images into manageable tiles that fit comfortably in GPU/CPU memory. |
| **Cellpose inference** | Runs the *cyto3* (default) or any other Cellpose model on every tile. |
| **Mask stitching** | Re‑assembles the individual tile masks into a single, full‑resolution segmentation mask. |
## Requirements
* Python **3.9+**
* GPU‑enabled PyTorch build (optional but recommended)
* Dependencies (installed automatically via `requirements.txt`):
* `cellpose==3.1.1.1`
* `opencv‑python`
* `numpy`
* `pillow`
* `tifffile`
## Installation
```bash
# Clone the repository
git clone https://github.com/your‑username/spinal‑cord‑segmentation.git
cd spinal‑cord‑segmentation
# Create / activate a virtualenv (optional but recommended)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
```
## Quick Start
1. **Place** your raw `.tiff` images in `data/input/` (or adjust the paths in `bin/constants.py`).
2. **Run** the pipeline:
```bash
python main.py
```
3. **Collect** your results:
* PNG conversions → `data/png/`
* Split tiles → `data/tiles/`
* Cellpose masks → `data/masks/`
* Stitched masks → `data/output/`
## Detailed Workflow
```mermaid
flowchart LR
A[TIFF images] --> B[generate_pngs.py]:::step
classDef step fill:#fafafa,stroke:#333,stroke-width:1px;
B --> C[generate_split_images.py]:::step
C --> D[run_cellpose.py]:::step
D --> E[generate_masks.py]:::step
E --> F[Final segmentation]:::step
```
*All paths, tile overlap, and Cellpose parameters are configurable in* **`bin/constants.py`**.
## Project Layout
```
.
├── main.py # Orchestrates the full pipeline
├── bin/
│ ├── constants.py # Centralised paths & tunables
│ ├── generate_pngs.py # TIFF → PNG converter
│ ├── generate_split_images.py
│ └── generate_masks.py
├── model/
│ └── run_cellpose.py # Wrapper around Cellpose API
├── requirements.txt
└── LICENSE
```
## License
Distributed under the terms of the **MIT License**. See `LICENSE` for full text.
## Contributing
Contributions, issues and feature requests are welcome! Please open an issue or submit a pull request — and ensure your code passes `flake8`/`black` checks and includes appropriate tests.
## Citation
If you use this pipeline in your research, please cite *Cellpose* **and** this repository:
```text
@article{stringer_cellpose_2021,
title = {Cellpose: a generalist algorithm for cellular segmentation},
author = {Stringer, Carsen and Pachitariu, Marius},
journal = {Nature Methods},
year = {2021}
}
```