readme
This commit is contained in:
@@ -1,2 +1,173 @@
|
|||||||
# django-test-tube-scanner
|
|
||||||
django channels redis test tube scanner
|
# PlanarianScanner
|
||||||
|
|
||||||
|
> Système d'imagerie automatisé pour le suivi comportemental de planaires —
|
||||||
|
> Laboratoire de Biologie, Université Champollion, Albi
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Présentation
|
||||||
|
|
||||||
|
**PlanarianScanner** est une application web développée pour le suivi de l'activité
|
||||||
|
et des mouvements de **planaires** (*Platyhelminthes*) dans le cadre de leur étude
|
||||||
|
en laboratoire.
|
||||||
|
|
||||||
|
Le système pilote un scanner multi-puits motorisé composé d'un bras CNC (GRBL) et
|
||||||
|
d'une caméra haute définition ArduCam montée sur Raspberry Pi 4. Il permet
|
||||||
|
l'acquisition automatisée d'images sur une grille de **6×4 puits × 4 plaques**,
|
||||||
|
le stockage haute performance des captures, et leur export vers des machines
|
||||||
|
d'analyse distantes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Matériel
|
||||||
|
|
||||||
|
| Composant | Détail |
|
||||||
|
|---|---|
|
||||||
|
| Carte | Raspberry Pi 4 |
|
||||||
|
| Caméra | ArduCam haute définition |
|
||||||
|
| Motorisation | Bras CNC piloté en GRBL |
|
||||||
|
| Grille de puits | 6×4 × 4 plaques multi-puits |
|
||||||
|
| Réseau | LAN local — export Samba/rsync |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Stack technique
|
||||||
|
|
||||||
|
| Couche | Technologie |
|
||||||
|
|---|---|
|
||||||
|
| Backend | Django + Django Channels |
|
||||||
|
| Temps réel | Redis (broker + channel layer) |
|
||||||
|
| Acquisition | OpenCV + Picamera2 |
|
||||||
|
| Stockage | ReductStore (time series haute performance) |
|
||||||
|
| Tâches asynchrones | Celery + django-celery-beat |
|
||||||
|
| Export | Samba (CIFS), rsync/SSH |
|
||||||
|
| Plateforme | Raspberry Pi 4 — Debian Linux |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
- Pilotage du bras CNC en GRBL — déplacement automatique puits par puits
|
||||||
|
- Acquisition image haute définition via ArduCam (OpenCV + Picamera2)
|
||||||
|
- Stockage des frames en base time série ReductStore
|
||||||
|
- Sessions de scan paramétrables (grille complète ou sélection de puits)
|
||||||
|
- Export asynchrone (Celery) :
|
||||||
|
- Archive ZIP d'images JPEG par session
|
||||||
|
- Vidéo MP4 générée depuis les frames capturées
|
||||||
|
- Transfert automatique des exports vers machines distantes (Linux / Windows)
|
||||||
|
- Planification nocturne des exports via django-celery-beat
|
||||||
|
- Interface web temps réel (Django Channels / WebSocket)
|
||||||
|
- Suivi de progression des tâches longues par polling
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
Raspberry Pi 4
|
||||||
|
├── Django (interface web + API)
|
||||||
|
│ ├── Django Channels ←→ Redis (WebSocket temps réel)
|
||||||
|
│ └── Celery workers
|
||||||
|
│ ├── scanning(session_id) — parcours des puits
|
||||||
|
│ ├── export_images_zip() — génération ZIP JPEG
|
||||||
|
│ ├── export_video_mp4() — génération MP4 (OpenCV)
|
||||||
|
│ └── transfer → /mnt/exports — partage Samba
|
||||||
|
│
|
||||||
|
├── ArduCam ← Picamera2 / OpenCV — capture HD
|
||||||
|
├── CNC GRBL ← Serial — déplacement XY
|
||||||
|
└── ReductStore — stockage time série frames
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
> Documentation complète à venir.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/votre-repo/planarianscanner.git
|
||||||
|
cd planarianscanner
|
||||||
|
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
cp .env.example .env
|
||||||
|
# Éditer .env : SECRET_KEY, REDIS_URL, REDUCTSTORE_URL, ...
|
||||||
|
|
||||||
|
python manage.py migrate
|
||||||
|
python manage.py createsuperuser
|
||||||
|
```
|
||||||
|
|
||||||
|
Démarrage des services :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Django + Channels
|
||||||
|
python manage.py runserver
|
||||||
|
|
||||||
|
# Worker Celery
|
||||||
|
celery -A planarianscanner worker -l info
|
||||||
|
|
||||||
|
# Scheduler (exports nocturnes)
|
||||||
|
celery -A planarianscanner beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
|
||||||
|
|
||||||
|
# Redis (si non géré par systemd)
|
||||||
|
redis-server
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Organisation du dépôt
|
||||||
|
|
||||||
|
```
|
||||||
|
planarianscanner/
|
||||||
|
├── cameras/ # App principale
|
||||||
|
│ ├── models.py # ExportSession, ScanningStatus
|
||||||
|
│ ├── tasks/
|
||||||
|
│ │ ├── export_tasks.py # export_images_zip, export_video_mp4
|
||||||
|
│ │ ├── scanning_tasks.py # scanning, on_scanning_done
|
||||||
|
│ │ └── transfer_tasks.py # copy vers Samba
|
||||||
|
│ ├── consumers.py # WebSocket Channels
|
||||||
|
│ └── views.py
|
||||||
|
├── cnc/ # Pilotage GRBL
|
||||||
|
├── logs/ # Logs Celery (rotation auto)
|
||||||
|
├── media/exports/ # Fichiers exportés temporaires
|
||||||
|
└── requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contexte scientifique
|
||||||
|
|
||||||
|
Les **planaires** sont des vers plats dotés de remarquables capacités de
|
||||||
|
régénération et d'un système nerveux primitif faisant l'objet de nombreuses
|
||||||
|
recherches en neurobiologie et biologie du développement.
|
||||||
|
|
||||||
|
Ce système d'imagerie automatisé permet d'observer et d'enregistrer leur
|
||||||
|
comportement (déplacements, réponses à des stimuli) sur de longues périodes,
|
||||||
|
pour un grand nombre d'individus en parallèle, sans intervention humaine.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Laboratoire
|
||||||
|
|
||||||
|
Développé pour le **Laboratoire de Biologie de l'Université Champollion**, Albi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
> Documentation détaillée et guides d'installation complets à venir prochainement.
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Licence
|
||||||
|
|
||||||
|
MIT — Projet opensource, développé pour le partage et la reproductibilité scientifique.
|
||||||
|
|||||||
Reference in New Issue
Block a user