A modular, containerized web platform for automated fluorescence microscopy image analysis.
CelluleAnalyse is a production-ready web platform for automated analysis of fluorescence microscopy images (.nd2, .czi, .tiff). It provides a complete pipeline from image loading to statistical reporting, with a modular architecture that supports multiple detection methods — from classical thresholding to deep learning.
| Feature | Description | Status |
|---|---|---|
| 🔵 Nucleus detection | Automated detection from DAPI/DNA channel | ✅ Stable |
| 🔬 Cell classification | Interphase vs mitosis classification | ✅ Stable |
| 📊 Fluorescence measurement | Intensity quantification in mitotic spindles | ✅ Stable |
| 📈 Group comparison | Statistical comparison between two conditions | 🔄 In development |
| 🧠 ML/DL detection | Cellpose, StarDist integration | 🔄 In development |
⚠️ Only Docker Desktop is required — no Python, no Node.js, no source code needed.
Download and install Docker Desktop for your OS.*
🆘 First time installing Docker?
Download only these 3 files from the deploy/ folder:
| File | For |
|---|---|
docker-compose.yml |
All OS |
lancer.bat |
Windows only |
lancer.sh |
Mac / Linux only |
Put all 3 files in the same folder.
Your images must be organized in subfolders like this:
MyImagesFolder/
WT/
image1.nd2
image2.nd2
MAP6_KO/
image1.nd2
image2.nd2
The subfolder names can be anything — WT, KO, Control, Treatment, etc.
Windows:
Double-click lancer.bat
Enter the path to your images folder when prompted (e.g. E:\MyLab\Images).
Mac / Linux:
chmod +x lancer.sh
./lancer.shEnter the path to your images folder when prompted (e.g. /Users/marie/Images).
The app will:
- Download the Docker images automatically (~500MB, first launch only)
- Start the application
- Open http://localhost in your browser
- Click "Load WT folder" → enter the full path to your first group (e.g.
E:\MyLab\Images\WT) - Click "Load KO folder" → enter the full path to your second group
- Click on any file to visualize it
- Navigate channels and Z-planes
- Launch analysis from the Analysis panel
The application is available as pre-built Docker images:
| Image | Link |
|---|---|
| Backend (FastAPI) | smill/celluleanalyse-backend:v0.2.0 |
| Frontend (React/Nginx) | smill/celluleanalyse-frontend:v0.2.0 |
Pull manually if needed:
docker pull smill/celluleanalyse-backend:v0.2.0
docker pull smill/celluleanalyse-frontend:v0.2.0Dashboard with image viewer, pipeline status, and analysis configuration
CelluleAnalyse/
├── backend/ # FastAPI Python backend
│ ├── api/
│ │ ├── routes_chargement.py # File loading routes
│ │ ├── routes_visualisation.py # Image rendering routes
│ │ ├── routes_analyse.py # Analysis routes
│ │ └── routes_rapport.py # Report generation (coming soon)
│ ├── modules/
│ │ ├── chargement/
│ │ │ ├── loader_nd2.py # Nikon .nd2 reader
│ │ │ ├── loader_czi.py # Zeiss .czi reader (coming soon)
│ │ │ └── projection_z.py # 3D to 2D Z-projection (max/mean/sum)
│ │ ├── detection_noyaux/
│ │ │ ├── base_detector.py # Abstract detector interface
│ │ │ ├── detector_threshold.py # Otsu thresholding + watershed
│ │ │ ├── detector_cellpose.py # Cellpose ML (coming soon)
│ │ │ └── detector_stardist.py # StarDist DL (coming soon)
│ │ ├── classification/
│ │ │ ├── base_classifier.py # Abstract classifier interface
│ │ │ ├── classifier_shape.py # Geometric shape classifier
│ │ │ ├── classifier_ml.py # ML classifier (coming soon)
│ │ │ └── classifier_dl.py # DL classifier (coming soon)
│ │ ├── detection_fuseau/
│ │ │ ├── base_fuseau.py # Abstract spindle detector
│ │ │ ├── fuseau_threshold.py # Threshold-based detection
│ │ │ └── fuseau_ml.py # ML-based detection (coming soon)
│ │ ├── intensite/
│ │ │ └── mesure_intensite.py # Fluorescence intensity measurement
│ │ └── statistiques/
│ │ ├── stats_comparaison.py # WT vs KO statistical comparison
│ │ └── rapport_generator.py # HTML/PDF report generation
│ ├── cache_shared.py # Shared in-memory cache
│ ├── main.py # FastAPI app entry point
│ └── requirements.txt
│
├── frontend/ # React frontend
│ └── src/
│ ├── components/
│ │ ├── layout/ # Header, Sidebar, MainContent
│ │ ├── groups/ # Group loader and file list
│ │ ├── pipeline/ # Pipeline status tracker
│ │ ├── viewer/ # Image viewer, channel selector, Z-slider
│ │ ├── metrics/ # Metric cards and grid
│ │ ├── files/ # File list component
│ │ └── analysis/ # Method selector and config panel
│ ├── api/ # Backend API calls
│ ├── context/ # Global app state (AppContext)
│ └── styles/ # CSS variables (light/dark theme)
│
├── deploy/ # End-user distribution files
│ ├── v0.1.0/ # Version 0.1.0
│ │ ├── docker-compose.yml
│ │ ├── lancer.bat
│ │ └── lancer.sh
│ └── v0.2.0/ # Version 0.2.0 (latest)
│ ├── docker-compose.yml
│ ├── lancer.bat
│ └── lancer.sh
│
├── Dockerfile.backend
├── Dockerfile.frontend
├── docker-compose.yml # Development docker-compose
├── nginx.conf
└── README.md
| Format | Manufacturer | Status |
|---|---|---|
.nd2 |
Nikon | ✅ Supported |
.czi |
Zeiss | 🔄 Coming soon |
.tiff |
Universal | 🔄 Coming soon |
.lif |
Leica | 🔄 Coming soon |
.oib |
Olympus | 🔄 Coming soon |
| Module | Method | Status |
|---|---|---|
| Nucleus detection | Otsu thresholding + Watershed | ✅ Available |
| Nucleus detection | Cellpose (ML) | 🔄 Coming soon |
| Nucleus detection | StarDist (DL) | 🔄 Coming soon |
| Nucleus detection | Custom model (YOLO/fine-tuned) | 🔄 Coming soon |
| Classification | Geometric shape (circularity) | ✅ Available |
| Classification | Classical ML | 🔄 Coming soon |
| Classification | Deep Learning | 🔄 Coming soon |
| Spindle detection | Threshold-based | 🔄 Coming soon |
| Spindle detection | ML-based | 🔄 Coming soon |
cd backend
pip install -r requirements.txt
python -m uvicorn main:app --reload
# http://localhost:8000
# http://localhost:8000/docs (Swagger UI)cd frontend
npm install
npm run dev
# http://localhost:5173docker-compose build
docker-compose up -d| Category | Technology | Version |
|---|---|---|
| Backend framework | FastAPI | 0.128 |
| ASGI server | Uvicorn | 0.39 |
| Image reading | nd2 | 0.11 |
| Image processing | scikit-image | 0.21 |
| Numerical computing | NumPy | 1.26 |
| Data analysis | Pandas | 2.0 |
| Visualization | Matplotlib, Seaborn | 3.7, 0.12 |
| Frontend framework | React | 18 |
| Build tool | Vite | 8 |
| HTTP client | Axios | 1.4 |
| Web server | Nginx | 1.27 |
| Containerization | Docker + Compose | 28.x |
| Languages | Python, JavaScript, CSS | 3.11, ES2022 |
This platform was developed for the analysis of fluorescence microscopy images comparing:
- WT cells (wild-type) — normal cells
- MAP6 KO cells — cells depleted of the MAP6 microtubule-associated protein
Research question: Does MAP6 depletion affect tubulin modifications (acetylation, polyglutamylation) in mitotic spindles?
Pipeline:
- Load
.nd2files from both conditions - Detect nuclei from DNA/DAPI channel (Z-max projection)
- Classify cells: interphase (round nucleus) vs mitosis (irregular shape)
- Measure fluorescence intensity in channels 1 & 2 within mitotic spindles
- Compare WT vs MAP6 KO — statistical report
@software{celluleanalyse2026,
author = {Millimono, Sory ; Paim , Lia Gomes},
title = {CelluleAnalyse: A modular web platform for automated fluorescence microscopy analysis},
year = {2026},
url = {https://github.com/Millimono/CelluleAnalyse}
}Sory Millimono — Bioinformatician · AI Researcher Université de Montréal
Lia Gomes Paim — Professeure adjointe Faculté de médecine vétérinaire - Département de biomédecine HY 3200Sicotte 2980
📧 millimono64.sm@gmail.com 🔗 LinkedIn 🔬 ORCID
MIT License — see LICENSE for details.
