Skip to content
Snippets Groups Projects
Commit d0c00a82 authored by Antaaa28's avatar Antaaa28
Browse files

maj

parent 09ee32db
Branches
No related tags found
No related merge requests found
...@@ -17,31 +17,16 @@ Vous devez ...@@ -17,31 +17,16 @@ Vous devez
Ecrivez vos réponses et commentaires dans ce document. Ecrivez vos réponses et commentaires dans ce document.
Puis décommenter `compare_taille` à la fin et expliquer les résultats. Puis décommenter `compare_taille` à la fin et expliquer les résultats.
###Comparaison des tailles(compare_taille) ###Explication des courble sur l'image obtenu apres execution du code:
*Résultats: Sur le graphique, on compare la mémoire utilisée par deux structures : une table de hachage construite avec une MPHF (en bleu) et un dictionnaire Python classique (en orange), en fonction du nombre de k-mers qu’on y stocke.
#Courbes:
Le graphique montre l'évolution de la taille en mémoire de la table de hachage avec La table avec MPHF :
MPHF et du dictionnaire en fonction du nombre de k-mers(n) La courbe monte doucement et de façon régulière. Cela montre que la MPHF utilise la mémoire de manière très efficace : elle n’alloue que ce qui est strictement nécessaire. Elle ne laisse pas d’espace vide inutile et reste donc très compacte, ce qui est parfait quand on connaît à l’avance tous les k-mers qu’on veut stocker.
###Interpretation: Le dictionnaire :
#Table avec MPHF: La courbe est beaucoup moins fluide. Elle monte par paliers, car le dictionnaire doit régulièrement agrandir sa structure interne pour pouvoir continuer à insérer des éléments. À chaque palier, il réserve plus d’espace que nécessaire, ce qui entraîne un gaspillage de mémoire. Et plus le nombre de k-mers augmente, plus ça devient lourd.
La taille de la table de hachage avec MPHF augmente linéairement avec n, mais En résumé :
avec une pente plus faible que celle du dictionnaire. Cela est du à l'effcacité de la MPHF qui La MPHF est clairement plus avantageuse en termes de mémoire, surtout quand on travaille avec de très grands ensembles de k-mers, comme c’est souvent le cas en bioinformatique. Le dictionnaire, lui, reste pratique et facile à utiliser, mais il devient vite inefficace quand on monte en volume.
minimise les collisions et donc la taille de la table.
#Dict:
La taille du dictionnaire augmente également linéairement avec n, mais avec une pente elevée.
Cela est du à la surcharge mémoire associée à la gestion des collisions et à la structure de données
plus complexe
#Efficacité:
La table de hachage avec MPHF est plus efficace en termes de mémoire que le dictionnaire
standard, surtout pour de grands ensembles de données. Cela est du à la minimisation des collisions
et à la structure plus compacte de la MPHF.
#Utilisation:
Cette méthode est particulièrement utile dans des applications où la mémoire est une ressource
critique, comme dans le traitement de grands ensembles de données génomiques.###
Bonus : faites varier `nb_niveaux` et `gamma`, voyez quelle influence ils peuvent avoir. Bonus : faites varier `nb_niveaux` et `gamma`, voyez quelle influence ils peuvent avoir.
......
...@@ -144,6 +144,7 @@ def create_hash_table(set_kmer, n): ...@@ -144,6 +144,7 @@ def create_hash_table(set_kmer, n):
""" """
# Créer la MPHF pour les k-mers # Créer la MPHF pour les k-mers
mphf = construction_mphf(set_kmer, n) mphf = construction_mphf(set_kmer, n)
# Initialiser une table de taille n (liste de n cases) # Initialiser une table de taille n (liste de n cases)
table = [None] * n table = [None] * n
# écrire les kmers aux adresses du tableau données par la mphf # écrire les kmers aux adresses du tableau données par la mphf
...@@ -183,6 +184,7 @@ def compare_taille(n_max, fichier_sortie): ...@@ -183,6 +184,7 @@ def compare_taille(n_max, fichier_sortie):
n_values.append(n) n_values.append(n)
table_size.append(sys.getsizeof(tableau)+sys.getsizeof(mphf)) # pourquoi ici on ne mesure pas juste la taille en mémoire du tableau ? table_size.append(sys.getsizeof(tableau)+sys.getsizeof(mphf)) # pourquoi ici on ne mesure pas juste la taille en mémoire du tableau ?
#On ne mesure pas seulement la taille du tableau, car celui-ci contient uniquement les k-mers, mais pas la structure de la fonction de hachage minimale parfaite (MPHF) elle-même
dict_size.append(sys.getsizeof(set_kmer)) dict_size.append(sys.getsizeof(set_kmer))
plt.plot(n_values, table_size, label='Table avec MPHF') plt.plot(n_values, table_size, label='Table avec MPHF')
...@@ -197,3 +199,5 @@ def compare_taille(n_max, fichier_sortie): ...@@ -197,3 +199,5 @@ def compare_taille(n_max, fichier_sortie):
# dé-commenter quand vous êtes prêts, expliquer les résultats # dé-commenter quand vous êtes prêts, expliquer les résultats
compare_taille(10000,"mphf.png") compare_taille(10000,"mphf.png")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment