diff --git a/hi-classifier/restriction_site.py b/hi-classifier/restrictionsite.py
similarity index 91%
rename from hi-classifier/restriction_site.py
rename to hi-classifier/restrictionsite.py
index cc28b647a633dbc5be30d092c9a097d7744bdc71..e2303f18e50b6429a7650b3c7231581880372c09 100644
--- a/hi-classifier/restriction_site.py
+++ b/hi-classifier/restrictionsite.py
@@ -133,7 +133,7 @@ def get_restriction_site_patterns(
     de motifs regex compilés (et leur longueur).
 
     Si le site est, par exemple, "N^GATC_N", la partie effective devient "GATC"
-    (après suppression de '^', '_' et des 'N' superflus).
+    (après suppression de '^', '_', et des 'N' superflus autour).
 
     Parameters:
         enzymes (List[str]): Liste des noms d'enzymes (ex: ["HindIII", "DpnII"]).
@@ -141,29 +141,37 @@ def get_restriction_site_patterns(
     Returns:
         List[Tuple[re.Pattern, int]]:
             Liste de tuples (motif_compilé, longueur).
-            Ex: [(re.compile("GATC"), 4), (re.compile("GATC"), 4)] pour un palindrome.
+            Ex: [(re.compile("GATC"), 4)] pour DpnII (palindromique).
 
     Examples:
         >>> # Exemple avec DpnII, qui a un site palindromique GATC
         >>> result = get_restriction_site_patterns(["DpnII"])
         >>> result
-        [(re.compile('.GATC.'), 6)]
+        [(re.compile('GATC'), 4)]
     """
     results: List[Tuple[re.Pattern, int]] = []
     restriction_batch = RestrictionBatch(enzymes)
 
     for enzyme in restriction_batch:
         site_raw = enzyme.elucidate()
+        # 1) On enlève '^' et '_' (si présents)
         site_clean = site_raw.replace("^", "").replace("_", "")
 
-        # Remplacer 'N' par '.' pour autoriser n'importe quelle base
-        pattern_fw = re.compile(site_clean.replace("N", "."))
+        # 2) Supprimer les 'N' en début
+        while site_clean.startswith("N"):
+            site_clean = site_clean[1:]
+        # 3) Supprimer les 'N' en fin
+        while site_clean.endswith("N"):
+            site_clean = site_clean[:-1]
+
+        # Le motif final
+        pattern_fw = re.compile(site_clean)
         results.append((pattern_fw, len(site_clean)))
 
-        # Vérifier le RC
+        # 4) Calcul du reverse complément
         rc_site = str(Seq(site_clean).reverse_complement())
         if rc_site != site_clean:
-            pattern_rc = re.compile(rc_site.replace("N", "."))
+            pattern_rc = re.compile(rc_site)
             results.append((pattern_rc, len(rc_site)))
 
     return results
@@ -190,7 +198,7 @@ def SearchInDataBase(Enzymes: str) -> Tuple[List[Any], List[Any]]:
         >>> result = SearchInDataBase("dpnii")
         Ligation sites: GATCGATC
         >>> result
-        ([(re.compile('GATCGATC'), 4)], [(re.compile('.GATC.'), 6)])
+        ([(re.compile('GATCGATC'), 4)], [(re.compile('GATC'), 4)])
 
         >>> # Exemple avec DpnII, qui a un site palindromique GATC
         >>> result = SearchInDataBase("arima")
@@ -201,8 +209,7 @@ def SearchInDataBase(Enzymes: str) -> Tuple[List[Any], List[Any]]:
         Ligation sites: GATCA.TC
         Ligation sites: GA.TA.TC
         >>> result
-        ([(re.compile('GATCGATC'), 4), (re.compile('GATCA.TC'), 4), (re.compile('GA.TGATC'), 4), (re.compile('GA.TGATC'), 4), (re.compile('GATCA.TC'), 4), (re.compile('GA.TA.TC'), 4)], [(re.compile('.GATC.'), 6), (re.compile('GA.TC'), 5)])
-
+        ([(re.compile('GATCGATC'), 4), (re.compile('GATCA.TC'), 4), (re.compile('GA.TGATC'), 4), (re.compile('GA.TGATC'), 4), (re.compile('GATCA.TC'), 4), (re.compile('GA.TA.TC'), 4)], [(re.compile('GATC'), 4), (re.compile('GANTC'), 5)])
     """
     if Enzymes == "No restriction enzyme found":
         print(Enzymes)