2016-04-04 17 views
-1

Ich versuche, einige unscharfe Suche nach einer Reihe von DNA-Reads zu tun. Ich möchte bis zu 1 Substitutionsfehler zulassen und gleichzeitig zulassen, dass ein bestimmtes Basenpaar eine von zwei Optionen ist (in diesem Fall A oder G).Python Fuzzy Regex mit verschachtelten oder Regex

Ich habe angefangen, mit den folgenden:

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "ATTAGATACCCTGGTAGTCA") 
['ATTAGATACCCTGGTAGTCA'] 

Matches wie erwartet, weil ich gegen die exakte Zeichenfolge bin passende

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCA") 
['GTTAGATACCCTGGTAGTCA'] 

Matches wie erwartet, weil ich gegen die exakte Zeichenfolge bin passend mit der Ausnahme, dass das erste Basenpaar von einem A auf ein G umgeschaltet wurde (zulässig)

Spiele, wie erwartet, da eine einzelne Substitution auftritt (C-> x)

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCx") 
[] 

entspricht nicht (wie erwartet), weil es zwei Substitutionen

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCA") 
[] 

sollte abgestimmt haben, seit dem ersten Basenpaarfehler (x statt A oder G) sollten als Substitution gezählt worden sein.

Antwort

0

Sie haben zwei Substitutionen in Ihrem letzten Beispiel: das erste Basenpaar wird mit einem x ersetzt worden, während die letzten zu einem A geändert wurde. Du erlaubst nur eine Ersetzung, also gibt es keine Übereinstimmung.