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

Correction position RE + Renaming

parent 51b6c367
No related branches found
No related tags found
No related merge requests found
...@@ -133,7 +133,7 @@ def get_restriction_site_patterns( ...@@ -133,7 +133,7 @@ def get_restriction_site_patterns(
de motifs regex compilés (et leur longueur). de motifs regex compilés (et leur longueur).
Si le site est, par exemple, "N^GATC_N", la partie effective devient "GATC" 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: Parameters:
enzymes (List[str]): Liste des noms d'enzymes (ex: ["HindIII", "DpnII"]). enzymes (List[str]): Liste des noms d'enzymes (ex: ["HindIII", "DpnII"]).
...@@ -141,29 +141,37 @@ def get_restriction_site_patterns( ...@@ -141,29 +141,37 @@ def get_restriction_site_patterns(
Returns: Returns:
List[Tuple[re.Pattern, int]]: List[Tuple[re.Pattern, int]]:
Liste de tuples (motif_compilé, longueur). 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: Examples:
>>> # Exemple avec DpnII, qui a un site palindromique GATC >>> # Exemple avec DpnII, qui a un site palindromique GATC
>>> result = get_restriction_site_patterns(["DpnII"]) >>> result = get_restriction_site_patterns(["DpnII"])
>>> result >>> result
[(re.compile('.GATC.'), 6)] [(re.compile('GATC'), 4)]
""" """
results: List[Tuple[re.Pattern, int]] = [] results: List[Tuple[re.Pattern, int]] = []
restriction_batch = RestrictionBatch(enzymes) restriction_batch = RestrictionBatch(enzymes)
for enzyme in restriction_batch: for enzyme in restriction_batch:
site_raw = enzyme.elucidate() site_raw = enzyme.elucidate()
# 1) On enlève '^' et '_' (si présents)
site_clean = site_raw.replace("^", "").replace("_", "") site_clean = site_raw.replace("^", "").replace("_", "")
# Remplacer 'N' par '.' pour autoriser n'importe quelle base # 2) Supprimer les 'N' en début
pattern_fw = re.compile(site_clean.replace("N", ".")) 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))) 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()) rc_site = str(Seq(site_clean).reverse_complement())
if rc_site != site_clean: 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))) results.append((pattern_rc, len(rc_site)))
return results return results
...@@ -190,7 +198,7 @@ def SearchInDataBase(Enzymes: str) -> Tuple[List[Any], List[Any]]: ...@@ -190,7 +198,7 @@ def SearchInDataBase(Enzymes: str) -> Tuple[List[Any], List[Any]]:
>>> result = SearchInDataBase("dpnii") >>> result = SearchInDataBase("dpnii")
Ligation sites: GATCGATC Ligation sites: GATCGATC
>>> result >>> 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 >>> # Exemple avec DpnII, qui a un site palindromique GATC
>>> result = SearchInDataBase("arima") >>> result = SearchInDataBase("arima")
...@@ -201,8 +209,7 @@ def SearchInDataBase(Enzymes: str) -> Tuple[List[Any], List[Any]]: ...@@ -201,8 +209,7 @@ def SearchInDataBase(Enzymes: str) -> Tuple[List[Any], List[Any]]:
Ligation sites: GATCA.TC Ligation sites: GATCA.TC
Ligation sites: GA.TA.TC Ligation sites: GA.TA.TC
>>> result >>> 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": if Enzymes == "No restriction enzyme found":
print(Enzymes) print(Enzymes)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment