diff --git a/tp_2_miso_mphf.py b/tp_2_miso_mphf.py index 960be8eb2ddfc7b52cca66bc88fc066527529651..7dce6468447a6103da80866466bfb79c9b5f4d97 100644 --- a/tp_2_miso_mphf.py +++ b/tp_2_miso_mphf.py @@ -33,21 +33,35 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3): True """ # Initialisation + # on copie le contenu de set_kmer dans set_kmer_courant set_kmer_courant = set_kmer.copy() + # on crée un tableau vide tableaux = [] + # structure vide qui contiendra les collisions collision = set() + # on parcours tous les niveaux for _ in range(nb_niveaux): + # si la longueur du nombre de k_mers est positive == verifie que la liste n'est pas vide if len(set_kmer_courant) > 0: + # on définit la longueur de la liste as l l = len(set_kmer_courant) + # on initialise un tableau (une place pour chaque valeur) de taille double (gamma = 2) par rapport au nombre de valeurs tableau_principal = [-1] * (gamma * l) + # on parcourt la liste de k_mers for kmer in set_kmer_courant: pass # compléter # hacher le k-mer (attention, hash() peut rendre des entiers signés, nous voulons des entiers positifs) + h = abs(hash(kmer)) # récupérer l'adresse + adresse = None # si le tableau principal est déjà rempli à l'adresse: + if adresse : # mettre le kmer dans collision() + collision.add(h) #sinon, écrire le hash à l'adresse dans le tableau principal - + else : + tableau_principal[adresse] = h + tableaux.append(tableau_principal) # expliquer set_kmer_courant = collision.copy() # expliquer collision = set() # expliquer