Skip to content
Snippets Groups Projects
Commit cd05ae9c authored by Ayât Chergui's avatar Ayât Chergui
Browse files

docteste

parent c46bf5bb
Branches main
No related tags found
No related merge requests found
......@@ -6,18 +6,37 @@ class SimpleBloomFilter:
self.num_hashes = num_hashes
self.bit_array = [0] * size
def _hashes(self, item):
def _hashes(self, item):
"""
Donnes des valeurs de hachage pour un élément donnée
>>> bf = SimpleBloomFilter(10,2)
>>> len(bf._hasches("test"))==2
True
"""
hash_values = []
for i in range(self.num_hashes):
hash_func = hashlib.sha256((str(i) + item).encode()).hexdigest()
hash_func = hashlib.sha256((str(i) + item).encode()).hexdigest()
hash_values.append(int(hash_func, 16) % self.size)
return hash_values
def add(self, item):
"""
Ajoute un élément dans le Filtre Bloom
"""
for pos in self._hashes(item):
self.bit_array[pos] = 1
def contains(self, item):
"""
Verifie si un élemnt est présent dans le filtre de Bloom
>>> bf = SimpleBloomFilter(10, 2)
>>> bf.add("test")
>>> bf.contains("test")
True
>>> bf.contains("not_in")
False
"""
return all(self.bit_array[pos] for pos in self._hashes(item))
def merge(self, other):
......@@ -70,6 +89,17 @@ class Structure:
return nodes[0] if nodes else None
def query(self, kmer):
"""
>>> datasets = ["D1", "D2"]
>>> kmers_dict = {"D1": ["ACGT"], "D2": ["TGCA"]}
>>> s = Structure(datasets, kmers_dict, 10, 1)
>>> s.query("ACGT")
['D1']
>>> s.query("TGCA")
['D2']
>>> s.query("GCTA")
[]
"""
results = []
self._query_recursive(self.root, kmer, results)
return results
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment