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