diff --git a/Readme.md b/Readme.md
index c75d3f207101a1fd72703812a9f4fd2260ea46c8..b867f70188301ecb5b285e07e4a6e698edf1bdac 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,16 +1,31 @@
-Vous commencez votre premier job de bioinformaticien.ne. La personne précédente vous a laissé un code quasi sans commentaire et sans test, et votre chef est biologiste et n'y comprend rien. Il sait seulement que ce code était très pratique pour rechercher des k-mer dans des jeux de données. 
-Vous allez améliorer la situation pour que l'équipe puisse se servir du code de manière pérenne.
-
-1. Décrivez à quoi sert `class SimpleBloomFilter`. Ecrivez les doctests pour cette classe.
-
-2. Décrivez à quoi sert `class StructureNode`. 
-
-3. Décrivez à quoi sert `class Structure`. Ecrivez les doctests pour cette classe.
-
-4. Cette structure mélange donc deux structures de données que nous avons vues. Quelles sont elles ?
-
-4. D'après vous, que peut-on dire sur la complexité de la requête de cette structure ? 
-
-5. Quelles sont les différences avec la table basée sur une MPHF que nous avons vu ? 
-
-6. Bonus : Pouvez-vous retracer de quel papier de bioinformatique vient cette idée ?
+Vous commencez votre premier job de bioinformaticien.ne. La personne précédente vous a laissé un code quasi sans commentaire et sans test, et votre chef est biologiste et n'y comprend rien. Il sait seulement que ce code était très pratique pour rechercher des k-mer dans des jeux de données. 
+Vous allez améliorer la situation pour que l'équipe puisse se servir du code de manière pérenne.
+
+1. Décrivez à quoi sert `class SimpleBloomFilter`. Ecrivez les doctests pour cette classe.
+
+2. Décrivez à quoi sert `class StructureNode`. 
+
+3. Décrivez à quoi sert `class Structure`. Ecrivez les doctests pour cette classe.
+
+4. Cette structure mélange donc deux structures de données que nous avons vues. Quelles sont elles ?
+
+-----
+### La stucture Structure mélange deux structures de données principales:
+
+*** 1-Filtre de Bloom:
+Utilisé pour représenter les k-mers de chaque jeu de données. Le filtre de Bloom permet de tester
+rapidement si un k-mer est potentiellement présent dans un jeu de donnnées, avec un certain taux de
+faux positifs.
+
+
+*** 2-Arbre binaire:
+La structure est organisée sous forme d'arbre binaire, où chaque noeud interne présente l'union
+des filtres de Bloom de ses enfants. Les feuilles de l'arbre correspondent aux jeux de données
+individuels.
+-----
+
+5.D'après vous, que peut-on dire sur la complexité de la requête de cette structure ? 
+
+6.Quelles sont les différences avec la table basée sur une MPHF que nous avons vu ? 
+
+7.Bonus : Pouvez-vous retracer de quel papier de bioinformatique vient cette idée ?
diff --git a/querykmers_tpmiso.py b/querykmers_tpmiso.py
index c989f6c1857cc8400fd16f44c534f99dbe67208e..ddd066aefc7ab2a43076cee2601864682c7579a5 100644
--- a/querykmers_tpmiso.py
+++ b/querykmers_tpmiso.py
@@ -35,6 +35,38 @@ class StructureNode:
 		self.datasets = []  # list of dataset names at leaf nodes
 
 class Structure:
+	"""
+	Une structure arborescente qui organise des jeux de données (datasets) en
+	utilisant des filtres de Bloom pour permettre des requetes efficaces de k-mers.
+
+	Exemples d'utilisation:
+	>>> datasets = ["Dataset1", "Dataset2", "Dataset3", "Dataset4"]
+    >>> kmers_dict = {
+    ...     "Dataset1": ["ACGT", "TGCA", "GCTA"],  # k-mers du Dataset1
+    ...     "Dataset2": ["CGTA", "GCTA", "TACC"],  # k-mers du Dataset2
+    ...     "Dataset3": ["AAGT", "TCCA", "CGGT"],  # k-mers du Dataset3
+    ...     "Dataset4": ["TGGC", "GGCA", "CCAA"]   # k-mers du Dataset4
+    ... }
+    >>> structure= Structure(datasets, kmers_dict, bloom_size=100, num_hashes=1)
+
+    >>> structure.query("TCCA") #Recherche du k-mer "GCTA"
+    ['Dataset1', 'Dataset2'] #"GCTA" est présent dans Dataset1 et Dataset2
+
+     >>> structure.query("TCCA")  # Recherche du k-mer "TCCA"
+    ['Dataset3']  # "TCCA" est présent dans Dataset3
+
+    >>> structure.query("ACGT")  # Recherche du k-mer "ACGT"
+    ['Dataset1']  # "ACGT" est présent dans Dataset1
+
+    >>> structure.query("GGGG")  # Recherche du k-mer "GGGG"
+    []  # "GGGG" n'est présent dans aucun dataset
+
+    >>> structure.query("TGGC")  # Recherche du k-mer "TGGC"
+    ['Dataset4']  # "TGGC" est présent dans Dataset4
+
+    >>> structure.query("CGGT")  # Recherche du k-mer "CGGT"
+    ['Dataset3']  # "CGGT" est présent dans Dataset3
+	"""
 	def __init__(self, datasets, kmers_dict, bloom_size=10000, num_hashes=3):
 		self.leaves = {}  # maps dataset names to their Bloom filter nodes
 		self.root = self._build_tree(datasets, kmers_dict, bloom_size, num_hashes)