Skip to content
Snippets Groups Projects
Commit 5d5ae6b4 authored by Rodriguez Tristan's avatar Rodriguez Tristan
Browse files

construction mphf

parent 3e44bcb6
No related branches found
No related tags found
No related merge requests found
...@@ -41,16 +41,22 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3): ...@@ -41,16 +41,22 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3):
l = len(set_kmer_courant) l = len(set_kmer_courant)
tableau_principal = [-1] * (gamma * l) tableau_principal = [-1] * (gamma * l)
for kmer in set_kmer_courant: for kmer in set_kmer_courant:
pass # compléter x = abs(hash(kmer)) % len (tableau_principal) # On calcule le hachage du k-mer avec hash(kmer), puis on prend la valeur absolue de ce hachage pour garantir que l'index est toujours positif et qu'il reste bien dans les limites de la taille de la table de hachage.
if tableau_principal[x] is None: # Si l'index est libre
tableau_principal[x] = kmer # On place le k-mer dans la table
else:
collision.add(kmer) # mettre le kmer dans collision()
# compléter
# hacher le k-mer (attention, hash() peut rendre des entiers signés, nous voulons des entiers positifs) # hacher le k-mer (attention, hash() peut rendre des entiers signés, nous voulons des entiers positifs)
# récupérer l'adresse # récupérer l'adresse
# si le tableau principal est déjà rempli à l'adresse: # si le tableau principal est déjà rempli à l'adresse:
# mettre le kmer dans collision() # mettre le kmer dans collision()
#sinon, écrire le hash à l'adresse dans le tableau principal #sinon, écrire le hash à l'adresse dans le tableau principal
tableaux.append(tableau_principal) # expliquer tableaux.append(tableau_principal) # ajoute le tableau principal à la liste tableaux
set_kmer_courant = collision.copy() # expliquer set_kmer_courant = collision.copy() # On copie l'ensemble des k-mers en collision puis deviendront le nouvel ensemble à traiter dans le niveau suivant
collision = set() # expliquer collision = set() # Réinitialiser les collisions pour le prochain niveau
# Construction de la MPHF # Construction de la MPHF
mphf = [] mphf = []
...@@ -62,7 +68,16 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3): ...@@ -62,7 +68,16 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3):
max_rang = 0 max_rang = 0
i = 0 i = 0
for kmer in set_kmer: for kmer in set_kmer:
pass # compléter: x = abs(hash(kmer)) % len (tableau_principal)
if grand_tableau[h] == kmer:
rang = rangs.count(kmer) # Récupérer le rang du k-mer (utilisation de count() ici)
rangs.append(rang) # Ajouter le rang à la liste des rangs
mphf.append([h, rang]) # Ajouter l'index et le rang à la MPHF
max_rang = max(max_rang, rang) # Mettre à jour le rang maximum
# compléter:
# hacher le kmer # hacher le kmer
# si le hash est dans le grand_tableau # si le hash est dans le grand_tableau
# récupérer son index # récupérer son index
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment