Skip to content

Latest commit

Β 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CelluleAnalyse πŸ”¬

A modular, containerized web platform for automated fluorescence microscopy image analysis.

Version Python React FastAPI Docker License


πŸ“‹ Overview

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

πŸš€ Quick Start β€” For End Users (No coding required)

⚠️ Only Docker Desktop is required β€” no Python, no Node.js, no source code needed.

Step 1 β€” Install Docker Desktop

Download and install Docker Desktop for your OS.*

πŸ†˜ First time installing Docker?

Step 2 β€” Download the 3 launcher files

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.

Step 3 β€” Organize your images

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.

Step 4 β€” Launch the app

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.sh

Enter the path to your images folder when prompted (e.g. /Users/marie/Images).

The app will:

  1. Download the Docker images automatically (~500MB, first launch only)
  2. Start the application
  3. Open http://localhost in your browser

Step 5 β€” Use the app

  1. Click "Load WT folder" β†’ enter the full path to your first group (e.g. E:\MyLab\Images\WT)
  2. Click "Load KO folder" β†’ enter the full path to your second group
  3. Click on any file to visualize it
  4. Navigate channels and Z-planes
  5. Launch analysis from the Analysis panel

🐳 Docker Hub Images

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.0

πŸ“Έ Screenshots

Dashboard with image viewer, pipeline status, and analysis configuration

Dashboard


πŸ—οΈ Architecture

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

πŸ”¬ Supported Image Formats

Format Manufacturer Status
.nd2 Nikon βœ… Supported
.czi Zeiss πŸ”„ Coming soon
.tiff Universal πŸ”„ Coming soon
.lif Leica πŸ”„ Coming soon
.oib Olympus πŸ”„ Coming soon

🧠 Detection Methods

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

πŸ’» Local Development

Backend

cd backend
pip install -r requirements.txt
python -m uvicorn main:app --reload
# http://localhost:8000
# http://localhost:8000/docs (Swagger UI)

Frontend

cd frontend
npm install
npm run dev
# http://localhost:5173

Build Docker images locally

docker-compose build
docker-compose up -d

πŸ› οΈ Technical Stack

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

πŸ“Š Use Case

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:

  1. Load .nd2 files from both conditions
  2. Detect nuclei from DNA/DAPI channel (Z-max projection)
  3. Classify cells: interphase (round nucleus) vs mitosis (irregular shape)
  4. Measure fluorescence intensity in channels 1 & 2 within mitotic spindles
  5. Compare WT vs MAP6 KO β€” statistical report

πŸ“š Documentation


πŸ“„ Citation

@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}
}

πŸ‘€ Author

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


πŸ“œ License

MIT License β€” see LICENSE for details.