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

docteste

parent c46bf5bb
No related branches found
No related tags found
No related merge requests found
...@@ -6,18 +6,37 @@ class SimpleBloomFilter: ...@@ -6,18 +6,37 @@ class SimpleBloomFilter:
self.num_hashes = num_hashes self.num_hashes = num_hashes
self.bit_array = [0] * size 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 = [] hash_values = []
for i in range(self.num_hashes): 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) hash_values.append(int(hash_func, 16) % self.size)
return hash_values return hash_values
def add(self, item): def add(self, item):
"""
Ajoute un élément dans le Filtre Bloom
"""
for pos in self._hashes(item): for pos in self._hashes(item):
self.bit_array[pos] = 1 self.bit_array[pos] = 1
def contains(self, item): 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)) return all(self.bit_array[pos] for pos in self._hashes(item))
def merge(self, other): def merge(self, other):
...@@ -70,6 +89,17 @@ class Structure: ...@@ -70,6 +89,17 @@ class Structure:
return nodes[0] if nodes else None return nodes[0] if nodes else None
def query(self, kmer): 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 = [] results = []
self._query_recursive(self.root, kmer, results) self._query_recursive(self.root, kmer, results)
return results return results
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment