Skip to content
Snippets Groups Projects
Commit d6c43a59 authored by Bertache's avatar Bertache
Browse files

Correction position RE + Renaming

parent 51b6c367
Branches
No related tags found
No related merge requests found
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment