diff --git a/main.py b/main.py
index dc2555851d046a51f51a0ec65878485712550aa2..550e9478900dadad174f7f6a2ed3533fb9c6d1d0 100644
--- a/main.py
+++ b/main.py
@@ -17,13 +17,13 @@ label = "NC_007357.1 Influenza A virus (A/Goose/Guangdong/1/96(H5N1)) polymerase
 
 # Lectures des reads :
 reads = {}
-with gzip.open('SRR10971381_1.fastq.gz', 'rt') as fastq:
-    counter = 0
-    for i, record in enumerate(SeqIO.parse(fastq, 'fastq'), start=1):
-        reads[i] = (str(record.seq))
-        counter+=1
-        if counter >= 1000:
-            break
+with gzip.open('data/covid.gz', 'rt') as fastq:
+	counter = 0
+	for i, record in enumerate(SeqIO.parse(fastq, 'fastq'), start=1):
+		reads[i] = (str(record.seq))
+		counter+=1
+		if counter >= 1000:
+			break
 
 # Lectures de Grippe A :
 genes_grippe = IOAlignment('data/covid.fna')
@@ -35,74 +35,139 @@ genes_grippe = genes_grippe.ParseFasta() # ID long => garder l'entier en entier
 #genome="BGAABCGHJ"
 
 
-
+# Genome
+## - genome
+## + create_suffix_table()
+## + search_suffix()
+## + get_suffix()
+
+# Reads
+## + 
+## + split_k_mers(k)
+## 
+
+class Genome:
+	def __init__(self, seq):
+		self.__seq = seq
+		self.__suffix_table = self.__create_suffix_table(self)
+
+	# crée la table des indices des suffixes triés
+	def __create_suffix_table(self):
+		# génère indices de 0 à la taille du génome
+		indices = [i for i in range(len(self.__seq))]
+		return sorted(indices, key=self.__get_suffix)
+
+	# obtenir le suffixe à la position i - pour trier correctement
+	def __get_suffix(self, i):
+		return self.__seq[i:]
+
+	def search_indice(self, seq_to_search):
+		return self.__search_suffix(seq_to_search, 0, len(self.__seq))
+
+	def __search_suffix(self, seq_to_search, i1, i2):
+		# kmer non trouvé
+		if i2 - i1 < 1:
+			return -1
+
+		m = (i1 + i2) // 2
+
+		# si le kmer est trouvé au début du suffixe, renvoyer la position
+		if self.__seq[self.__suffix_table[m]:].startswith(seq_to_search):
+			return self.__suffix_table[m]
+		# si le kmer est plus grand que le suffixe du milieu, parcourir la droite du tableau des suffixes
+		if seq_to_search > self.__seq[self.__suffix_table[m]:]:
+			return self.__search_suffix(self.__seq, self.__suffix_table, seq_to_search, m+1, i2)
+		# s'il est plus petit, parcourir la gauche
+		else:
+			return self.__search_suffix(self.__seq, self.__suffix_table, seq_to_search, i1, m)
 
 # découpe le genome en n kmers de taille k
-def split_kmers(genome, k):
-    i = 0
-    res = []
+# def split_kmers(genome, k):
+# 	i = 0
+# 	res = []
 
-    # chaque k lettres, découper un nouveau mot et le placer dans la liste des kmers
-    for i in range(0, len(genome), k):
-        res.append(genome[i:i+k])
+# 	# chaque k lettres, découper un nouveau mot et le placer dans la liste des kmers
+# 	for i in range(0, len(genome), k):
+# 		res.append(genome[i:i+k])
 
-    # si le kmer de fin est trop petit le retirer
-    if len(res[len(res)-1]) < k:
-        res.pop()
+# 	# si le kmer de fin est trop petit le retirer
+# 	if len(res[len(res)-1]) < k:
+# 		res.pop()
 
-    return res
+# 	return res
 
 # crée la table des indices des suffixes triés
-def create_suffix_table(genome):
-    # génère indices de 0 à la taille du génome
-    indices = [i for i in range(len(genome))]
-    return sorted(indices, key=get_suffix)
+# def create_suffix_table(genome):
+#	génère indices de 0 à la taille du génome
+	# indices = [i for i in range(len(genome))]
+	# return sorted(indices, key=get_suffix)
 
 # obtenir le suffixe à la position i
-def get_suffix(i):
-    return gene_grippe[i:]
-
-def search_suffix(genome, suffix_table, kmer, i1, i2):
-    # kmer non trouvé
-    if i2 - i1 < 1:
-        return -1
-
-    m = (i1 + i2) // 2
-
-    # si le kmer est trouvé au début du suffixe, renvoyer la position
-    if genome[suffix_table[m]:].startswith(kmer):
-        return suffix_table[m]
-    # si le kmer est plus grand que le suffixe du milieu, parcourir la droite du tableau des suffixes
-    if kmer > genome[suffix_table[m]:]:
-        return search_suffix(genome, suffix_table, kmer, m+1, i2)
-    # s'il est plus petit, parcourir la gauche
-    else:
-        return search_suffix(genome, suffix_table, kmer, i1, m)
+# def get_suffix(i):
+# 	return gene_grippe[i:]
+
+# def search_suffix(genome, kmer, i1, i2):
+# 	# kmer non trouvé
+# 	if i2 - i1 < 1:
+# 		return -1
+
+# 	m = (i1 + i2) // 2
+
+# 	# si le kmer est trouvé au début du suffixe, renvoyer la position
+# 	if genome[suffix_table[m]:].startswith(kmer):
+# 		return suffix_table[m]
+# 	# si le kmer est plus grand que le suffixe du milieu, parcourir la droite du tableau des suffixes
+# 	if kmer > genome[suffix_table[m]:]:
+# 		return search_suffix(genome, suffix_table, kmer, m+1, i2)
+# 	# s'il est plus petit, parcourir la gauche
+# 	else:
+# 		return search_suffix(genome, suffix_table, kmer, i1, m)
+
+class Read:
+	def __init__(self, seq):
+		self.__seq = seq
+
+	def split_into_kmers(self, k):
+		i = 0
+		res = []
+
+		# chaque k lettres, découper un nouveau mot et le placer dans la liste des kmers
+		for i in range(0, len(self.__seq), k):
+			res.append(self.__seq[i:i + k])
+
+		# si le kmer de fin est trop petit le retirer
+		if len(res[len(res) - 1]) < k:
+			res.pop()
+
+		return res
+
+
 
 #print(split_kmers(reads[1], 10))
 for read in reads.values():
-    kmers = split_kmers(read, 11)
-
-    for gene_grippe in genes_grippe.values():   
-        suffix_table = create_suffix_table(gene_grippe)
-
-        for kmer in kmers:
-            pos = search_suffix(gene_grippe, suffix_table, kmer, 0, len(suffix_table))
-
-            if pos != -1:
-                start = pos - len(read)
-                end = pos + len(read)
-
-                # aligner le genome sur le read (les gaps du genome ne sont pas pénalisés)
-                # print(str(max(start,0)) + " " + str(min(end, len(gene_grippe)-1)))
-                # print(str(start) + " " + str(end))
-                al = parasail.sg_dx_scan_sat(read, gene_grippe[max(start,0):min(end, len(gene_grippe)-1)], 16, 4, parasail.dnafull)
-                print(al.score / len(read))
-                al=parasail.sg_dx_trace_scan_sat(gene_grippe[start:end], read, 5, 1, parasail.dnafull)
-                traceback=al.get_traceback()
-                print(traceback.ref)
-                print("--------------------------")
-                print(traceback.query)
+	r = Read(read)
+	kmers = r.split_kmers(11)
+
+	for gene_grippe in genes_grippe.values():   
+		_suffix_table = create_suffix_table(gene_grippe)
+
+		for kmer in kmers:
+			pos = search_suffix(gene_grippe, suffix_table, kmer, 0, len(suffix_table))
+
+			if pos != -1:
+				start = pos - len(read)
+				end = pos + len(read)
+
+				# aligner le genome sur le read (les gaps du genome ne sont pas pénalisés)
+				# print(str(max(start,0)) + " " + str(min(end, len(gene_grippe)-1)))
+				# print(str(start) + " " + str(end))
+				al = parasail.sg_dx_scan_sat(read, gene_grippe[max(start,0):min(end, len(gene_grippe)-1)], 16, 4, parasail.dnafull)
+				print(al.score / len(read))
+				al=parasail.sg_dx_trace_scan_sat(gene_grippe[start:end], read, 5, 1, parasail.dnafull)
+				traceback=al.get_traceback()
+				print(traceback.ref)
+				print("--------------------------")
+				print(traceback.query)