From 4e27840bfefc42c8a4ea00395c9709fa451b0c14 Mon Sep 17 00:00:00 2001
From: Julianne <julianne.cocq@gmail.com>
Date: Wed, 26 Feb 2025 14:03:04 +0100
Subject: [PATCH] get_hash

---
 __pycache__/tp_2_miso_mphf.cpython-311.pyc | Bin 6589 -> 7346 bytes
 tp_2_miso_mphf.py                          |  39 ++++++++++++++-------
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/__pycache__/tp_2_miso_mphf.cpython-311.pyc b/__pycache__/tp_2_miso_mphf.cpython-311.pyc
index 097e73219b3bbdca831893468f81055151c9d3ed..f3f6b2e8d946f32d1cb56e5bed2623aa23462d75 100644
GIT binary patch
delta 1275
zcmdmMyvb5yIWI340|NuY0fGJLMUo5*k3k$5W`{C9`!G(_Fl6MN808|C%AdlS%><Gt
zN=e~rVPIlN6-eQpY{4(*6eY;SkjjxNn8Lk`iGg7?SP@8Jln@g`s&J~%GDZf5)r=q!
z5N2dZ;fWFf$uKdbiZU^zilvH7mSdKgti#M_#RxK&GgT;61kEUMkcL!o45Ju>8B!R7
z88rDOE>UBgvGKGn)8s!)_RK;xLX+*7<;BtLt`)A~OJS@Lo?OCg%r8<STq9D&#lTQ2
zTEn}5eR3g_2uqDnjp*ic%*rf+Oc_Q+f(#4{w-}Reu@oidrBD9P-pk0nxtGJ4aq?Bp
zC^;_v35uPX4JHqm+1ss~tS2x{aOtSJ$Sie*S?U6_)MQ_-R9RLA1_ovZ28Pc`3=9m@
z8A{+`z`#(#Jef~aYO)S9zb;b^g9}3}e+&}?LoIVHOAS*EGc=%CYFLt)7#V^YdIZ3p
zWGY=e`6SoN$y#jbyxF;_MGCeGN~VTNT%41&c(g<9?CcZ_6l`o2G7^h3;&Tf!(iChI
z^0+udib_+tIE&aA7#K8}ig*|p7>am7Y}O(L5L*^R$bo#ymJts!wMd<TfuR`Wb_E56
z$(=mXzJ(wG7X}7~28OR13~ZdeA{{B6Qaw_Q@h$NUf)7L`KQJ&c@q>xRn1-;9kQ=OQ
z9coR{4beBa_!_K1@B=dgo8SWut`4Tn+j!P7GOnDQ!Kce=z`(%Jw|N%dFGj|7lcx%F
zvf3~(Fs#_DEXc#cug}21u#)i>b8$(LCR365WIItO#v_v(Mdz}C6crgvRuP-ZXf=74
zm<?+r0|Ue6&A-L+7}ala#K-3*X6D7mCnJS61IRbvn9u>oM8;%RQRVtcOg%!u3`HP|
zikv|q!c=4q3J1o_Vo(}ZP$<%1U|{&gX;Yk9lANDgU{@5&z`$?`6d0iJYGAm)qYgnc
z7<+>!2zG|`ghBWhc+`uu7#J8{g7VlcMpI3uB9QGxEFfDXZVBclmK5aF=a=MUCg~Ma
z7UblY++u^!McyD6u;!KK7F6D1$}70VQj(dQTI30eBvTNf2_kes1Ss%|z+nOM|1I{E
z{N$3<;*wkJATl>U1r!u{iMgrq@kJnK6bXYgfuj5tYe7+FUWr%{IO^dEq6p-vBK^tt
zB_y~r85kHq;aBX$IGIV(Nh5`kk@o`w2I<Ev$;kbI0Zv#=&XIJhf56P$QFVz~@&dEu
z4R8p}2%QnSz-VUVoX872>KA#`ukffhNZjC%yucwjLt}x{MGo~V9O?}sHyGI(L>o#P
zrCX#Mq#tl_!$gW3iaSg?OeU~&TJ=~p*0<DOWE8)`D1L!a{056)gYN{D87voBWUsKu
eHVA@@kP>YuY?Nq`XaK_xf($HD7nmi%@c{sTL^9z3

delta 653
zcmdmFxz|`@IWI340|NuYY4-i;$r20<k3k$5W`Z(4S1?S}Fl6MM80Es2!Whh;$u+rx
zQH^oV=J|}eOe`skwL+86FxxW=*9cGMW04mZUdG74u$mF7nW0vshA)M&Mr5)Ji!r}w
zjYy4X6&C|Ttw0U$0`|!h1w>eCglhyg&tp+$;bY9a#gt)GB*?(PaEmc{@+FR5MuE)<
zoX(6atZWT}lNWJC%W(@#FzmE!Fnz$x-frDwJ%MS0Ye)4(X6Y-;(ifPeCrfjuPWIvx
zV_Z4;GxtkI<;iz=boi9*?Cccs6l@g?4Y)X!CyVfE3xS2Qb5n~HY!#GDl|aG)yxJyU
zVFLvlTZN3o;*9v*f{Zi;8-+YBPUVoI(o`-^zm*J{OhpO|3=BoG3=9m#pa7bDfmd3n
z7{udbU|?uq_@KeS#MU6P*@AB!BTJDE1H<I!{JO0A3=9mNn<WK)F*2^4EF#p&YR$mF
zuz2$#As!Zf9R>ylO~zZy#U(|WOhsms_lh|&?w=$+mkp$*NPqHT@u`fKlPx7|Si>0@
z7}jmBlE`D^(_|`Q2DyU;q?v#6Dk+(IPf)P2=9T6aRNi9BE4al{l9`)Y<PK700wOd)
zgf55xxuytgI>^LZ>?!%lC8@<Fx7a~sZhi{L*$hQmAf*}%3=F?GY;yBcN^?@}isBg<
z7(g*wyoG^*;R7=xBjXJQ`3qn)xl-ClBaM-f_X7h48N@8Y$o7E&PUuX&EbYd9fkE&B
IgCN)*03LXorvLx|

diff --git a/tp_2_miso_mphf.py b/tp_2_miso_mphf.py
index ac9b827..9cdf618 100644
--- a/tp_2_miso_mphf.py
+++ b/tp_2_miso_mphf.py
@@ -82,8 +82,6 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3):
 	rangs = []
 	# On initialise le rang maximal par 0
 	max_rang = 0
-	#
-	i = 0
 	# On parcours tous les kmers dans set_kmer
 	for kmer in set_kmer:
 		# hacher le kmer
@@ -94,9 +92,9 @@ def construction_mphf(set_kmer, n, gamma=2, nb_niveaux=3):
 			index = grand_tableau.index(h2)
 			# récupérer son rang (utiliser la fonction count())
 			c = grand_tableau[0:index].count(-1)
-			rangs = index - c
+			rang = index - c
 			# ajouter à la mphf [h, rang]
-			mphf.append((h2, rangs))
+			mphf.append((h2, rang))
 			# mettre à jour max_rang
 			max_rang += 1
 
@@ -124,16 +122,21 @@ def get_hash_mphf(mphf, kmer):
 	int: Hash du k-mer.
 
 	Examples:
-	#>>> set_kmer = {str(i) for i in range(10)}
-	#>>> n = 10
-	#>>> mphf = construction_mphf(set_kmer, n)
-	#>>> kmer = "5"
-	#>>> hash_mphf = get_hash_mphf(mphf, kmer)
-	#>>> 0 <= hash_mphf < n
-	#True
+	>>> set_kmer = {str(i) for i in range(10)}
+	>>> n = 10
+	>>> mphf = construction_mphf(set_kmer, n)
+	>>> kmer = "5"
+	>>> hash_mphf = get_hash_mphf(mphf, kmer)
+	>>> 0 <= hash_mphf < n
+	True
 	"""
-	pass # TODO modifier
+	h = abs(hash(kmer))
 
+	for h_kmer, rang in mphf:
+		if h == h_kmer:
+			return rang
+	return -1
+		
 def create_hash_table(set_kmer, n):
     """			for _ in range(len(index)):
 				c = grand_tableau.count(-1)chage.
@@ -199,4 +202,14 @@ def compare_taille(n_max, fichier_sortie):
 #compare_taille(10000,"mphf.png")
 
 import doctest
-doctest.testmod()
\ No newline at end of file
+doctest.testmod()
+
+if __name__ == '__main__':
+	set_kmer = {str(i) for i in range(10)}
+	mphf = construction_mphf(set_kmer, 10)
+	print(mphf)
+	
+	kmer = '5'
+	print(abs(hash(kmer)))
+	h= get_hash_mphf(mphf, kmer)
+	print(h)
\ No newline at end of file
-- 
GitLab