Un pipeline complet de simulation pour le stockage de données sur ADN synthétique, incluant encodage, simulation de canal bruité, décodage par consensus et correction d'erreurs LDPC.
- Vue d'ensemble
- Fonctionnalités
- Architecture du projet
- Installation
- Utilisation
- Modèles statistiques
- Interface web interactive
- Technologies utilisées
- Contexte scientifique
- Licence
- Auteur
Ce projet implémente un simulateur de stockage de données sur ADN, permettant de transformer des données numériques en séquences d'ADN synthétique, de simuler les erreurs du processus physique (synthèse, stockage, séquençage), puis de reconstruire les données originales grâce à des algorithmes de correction d'erreurs.
Données binaires
↓
Encodage LDPC (ajout de redondance)
↓
Conversion en séquence ADN (A, C, G, T)
↓
Simulation du canal bruité (erreurs de synthèse/séquençage)
↓
Algorithme de consensus (alignement de lectures multiples)
↓
Décodage LDPC (correction d'erreurs)
↓
Données binaires restaurées
- Simuler fidèlement les erreurs réelles observées lors de la synthèse et du séquençage d'ADN
- Évaluer la robustesse des codes correcteurs d'erreurs (LDPC)
- Fournir une interface pédagogique pour comprendre le stockage ADN
- Supporter différents modèles de canaux de séquençage (k4_idt_0124, k6_dnarxiv)
- Encodage binaire vers ADN : conversion des données en séquences quaternaires (A, C, G, T)
- Code LDPC paramétrable : protection contre les erreurs avec ratio d'information configurable
- Modèles de canal réalistes : simulation d'erreurs de substitution, insertion et délétion
- Algorithme de consensus : reconstruction à partir de lectures multiples et bruitées
- Correction d'erreurs : décodage LDPC pour restaurer les données originales
- Erreurs dépendantes de la position : début, milieu et fin de séquence
- Erreurs dépendantes du contexte : probabilités conditionnées par les k-mers
- Profils de qualité réalistes : basés sur des données expérimentales (IDT, DNArchive)
- Support multi-modèles : k4_idt_0124 et k6_dnarxiv inclus
- Interface web interactive : visualisation en temps réel du pipeline complet
- Paramètres configurables : taux d'erreur, nombre de lectures, ratio LDPC
- Visualisation pas à pas : affichage détaillé de chaque étape du processus
- Résultats comparatifs : analyse du message original vs décodé
DNA-Storage-Pipeline/
│
├── index.html # Interface web interactive
│
├── Models/ # Modèles statistiques d'erreurs
│ ├── k4_idt_0124/ # Modèle IDT avec k-mers de taille 4
│ │ ├── Kval.txt # Valeur de k
│ │ ├── A2C_Avg.txt # Probabilités de substitution A→C
│ │ ├── AErrAvg.txt # Taux d'erreur pour base A
│ │ ├── BegDelByPosAvg.txt # Délétions en début de séquence
│ │ └── ... # Autres matrices de probabilités
│ │
│ └── k6_dnarxiv/ # Modèle DNArchive avec k-mers de taille 6
│ └── ... # Mêmes types de fichiers
│
├── Simulator_Python/ # Implémentation Python du simulateur
│ ├── test_simulator.ipynb # Notebook de test et démonstration
│ ├── fastaSequences/ # Séquences FASTA pour les tests
│ └── __pycache__/ # Cache Python
│
├── src/ # Code source Python
│ ├── lib_model.py # Chargement et gestion des modèles
│ └── lib_utils.py # Fonctions utilitaires (conversion, etc.)
│
├── requirements.txt # Dépendances Python
├── python3.11_requirements.txt # Instructions d'installation Python 3.11
├── install_muscle.txt # Installation de MUSCLE (alignement)
│
└── LICENSE # Licence MIT
Les dossiers Models/ contiennent des matrices de probabilités pour :
- Substitutions : A2C, A2G, A2T, C2A, etc. (12 fichiers)
- Insertions/Délétions : AInsAvg, ADelAvg, etc. (8 fichiers)
- Erreurs par position : BegErrByPosAvg, MidErrByPosAvg, EndErrByPosAvg
- Contexte k-mer : KmerTrans_RatesAvg, KmerYi_prevYiM_RatesAvg, etc.
- Distributions de longueur : insLenBegRates, unmapLenEndRates
- lib_model.py : classe
Str_Modelpour charger les modèles statistiques - lib_utils.py : fonctions de conversion (Dec2Dna, Dna2Dec, etc.)
- test_simulator.ipynb : notebook Jupyter pour tester le pipeline
- Python 3.11 recommandé (compatible avec 3.8+)
- pip pour la gestion des paquets
- MUSCLE (optionnel) pour l'alignement de séquences
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update && sudo apt install python3.11 python3.11-venv python3.11-dev -y
python3.11 --version
sudo apt install python3-pippython3.11 -m pip install -r requirements.txtLes dépendances incluent :
- numpy ≥ 1.20.0 : calculs numériques et matrices
- matplotlib ≥ 3.5.0 : visualisation des résultats
- Pillow ≥ 9.0.0 : traitement d'images
- biopython ≥ 1.79 : manipulation de séquences biologiques
Pour l'alignement multiple de séquences :
sudo apt install muscleL'interface web index.html permet de tester le pipeline sans installation :
- Ouvrir
index.htmldans un navigateur moderne - Entrer un message texte à encoder
- Configurer les paramètres :
- Ratio LDPC : 0.5 à 0.9 (plus élevé = plus dense, moins robuste)
- Nombre de lectures : 5 à 50 (plus élevé = meilleur consensus)
- Taux d'erreur : 0% à ~13% (simulé par le slider)
- Cliquer sur "Lancer la Simulation"
- Observer les 8 étapes du pipeline en temps réel
cd Simulator_Python
jupyter notebook test_simulator.ipynbimport sys
sys.path.append('./src')
from lib_model import Str_Model
from lib_utils import Dec2Dna
# Charger un modèle
model = Str_Model('./Models/k4_idt_0124')
# Convertir des données en ADN
data = [0, 1, 2, 3, 0, 1] # Représentation quaternaire
dna_sequence = Dec2Dna(data)
print(dna_sequence) # ['A', 'C', 'G', 'T', 'A', 'C']Modèle basé sur les données de Integrated DNA Technologies (IDT), janvier 2024 :
- Longueur de k-mer : 4
- Technologie : Synthèse par phosphoramidite
- Séquençage : Illumina
- Caractéristiques : Erreurs modérées, bon pour prototypage
Modèle basé sur les données de DNArchive :
- Longueur de k-mer : 6
- Technologie : Synthèse avancée
- Séquençage : Oxford Nanopore / PacBio
- Caractéristiques : Plus de contexte, profil d'erreur différent
Remplacement d'une base par une autre (ex : A → C)
- Probabilités dépendantes de la base originale
- 12 matrices : A2C, A2G, A2T, C2A, C2G, C2T, G2A, G2C, G2T, T2A, T2C, T2G
Ajout d'une ou plusieurs bases non désirées
- Probabilités par base (A, C, G, T)
- Distribution de longueur d'insertion
Perte d'une ou plusieurs bases
- Probabilités par base (A, C, G, T)
- Distribution de longueur de délétion
Les erreurs varient selon la position dans la séquence :
- Début (BegErrByPosAvg) : souvent plus d'erreurs
- Milieu (MidErrByPosAvg) : taux d'erreur stable
- Fin (EndErrByPosAvg) : peut augmenter légèrement
Les erreurs dépendent du contexte local (k bases précédentes) :
- KmerTrans_RatesAvg : transitions entre k-mers
- KmerYi_prevYiM_RatesAvg : probabilités conditionnées par l'état précédent
L'interface index.html offre une expérience pédagogique complète :
- Entrée de texte libre
- Contrôles en temps réel :
- Curseur de ratio LDPC (0.5 - 0.9)
- Curseur de nombre de lectures (5 - 50)
- Curseur de taux d'erreur (0% - 13%)
- Bouton de lancement avec effet lumineux
Affichage séquentiel des 8 étapes :
- Encodage binaire : texte → bits
- Protection LDPC : ajout de bits de parité
- Encodage ADN : binaire → A/C/G/T
- Canal bruité : simulation d'erreurs multiples
- Consensus : vote majoritaire sur lectures
- Décodage binaire : ADN → binaire synchronisé
- Correction LDPC : utilisation des bits de parité
- Résultat final : comparaison original/décodé
- 4 étapes physiques : synthèse, stockage, séquençage, décodage
- Avantages du stockage ADN :
- Densité extrême (200 exaoctets/gramme)
- Durabilité millénaire
- Défis actuels :
- Coût élevé
- Vitesse d'écriture/lecture
- Thème sombre : confort visuel pour code et données
- Animations fluides : transitions CSS3
- Responsive : adapté mobile, tablette, desktop
- Typographie : famille Inter pour modernité
- Couleurs : palette bleu nuit/cyan pour cohérence scientifique
| Technologie | Version | Utilisation |
|---|---|---|
| Python | 3.11+ | Langage principal |
| NumPy | ≥ 1.20.0 | Calculs matriciels et statistiques |
| Matplotlib | ≥ 3.5.0 | Visualisation de données |
| BioPython | ≥ 1.79 | Manipulation de séquences ADN |
| Pillow | ≥ 9.0.0 | Traitement d'images |
| MUSCLE | - | Alignement multiple de séquences |
| Technologie | Utilisation |
|---|---|
| HTML5 | Structure de l'interface |
| CSS3 / Tailwind CSS | Styling responsive et moderne |
| JavaScript (Vanilla) | Logique de simulation côté client |
| Google Fonts (Inter) | Typographie |
- Code LDPC : Low-Density Parity-Check pour correction d'erreurs
- Consensus : Vote majoritaire sur lectures multiples
- K-mer modeling : Modèles statistiques contextuels
- Synchronisation : Alignement de séquences bruitées
L'ADN est le support d'information le plus dense et durable connu dans l'univers. Un gramme d'ADN peut théoriquement stocker plus de 200 exaoctets de données, soit l'équivalent de millions de disques durs modernes.
Les données binaires sont converties en séquences d'ADN (A, C, G, T). Des machines spécialisées assemblent chimiquement ces brins base par base.
Les molécules d'ADN sont déshydratées et encapsulées dans des billes de silice pour une conservation millénaire sans énergie.
Les capsules sont réhydratées et analysées par un séquenceur qui lit l'ordre des bases, générant des millions de lectures bruitées.
Des algorithmes (consensus + LDPC) reconstruisent la séquence parfaite et la reconvertissent en données numériques.
Les technologies actuelles introduisent des erreurs :
- Substitutions : ~0.1% à 1% (base changée)
- Insertions : ~0.01% à 0.5% (base ajoutée)
- Délétions : ~0.01% à 0.5% (base manquante)
- Redondance : codes correcteurs d'erreurs (LDPC, Reed-Solomon)
- Consensus : séquençage multiple pour vote majoritaire
- Modèles statistiques : prédiction des erreurs probables
- Archivage à long terme : données historiques, culturelles
- Sauvegarde critique : génomes, connaissances humaines
- Stockage spatial : missions longue durée, résistance aux radiations
Ce projet est distribué sous licence MIT.
MIT License
Copyright (c) 2025 TeodoreAutuly
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Voir le fichier LICENSE pour plus de détails.
Téodore Autuly
Projet supervisé par Elsa Dupraz
- Elsa Dupraz pour la supervision scientifique
- Integrated DNA Technologies (IDT) pour les données de modèle k4
- DNArchive pour les données de modèle k6
- La communauté de recherche en stockage ADN pour les avancées continues
- Church, G. M., et al. (2012). "Next-Generation Digital Information Storage in DNA"
- Erlich, Y., & Zielinski, D. (2017). "DNA Fountain enables a robust and efficient storage architecture"
- Organick, L., et al. (2018). "Random access in large-scale DNA data storage"
DNA Storage Pipeline - Transformer des mots en molécules, préserver l'information pour l'éternité.