DNA 読み取りの文字列に対してファジー マッチングを実行しようとしています。特定の塩基対を 2 つのオプション (この場合は A または G) のいずれかにできるようにすると同時に、最大 1 つの置換エラーを許可したいと思います。
私は次のことから始めました:
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "ATTAGATACCCTGGTAGTCA")
['ATTAGATACCCTGGTAGTCA']
正確な文字列と照合しているため、期待どおりに一致します
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCA")
['GTTAGATACCCTGGTAGTCA']
最初の塩基対が A から G に切り替えられていることを除いて、正確な文字列と照合しているため、期待どおりに一致します (許可されています)。
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCx")
['GTTAGATACCCTGGTAGTCx']
1 つの置換が発生するため (C->x)、期待どおりに一致します。
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCx")
[]
2 つの置換があるため、(予想どおり) 一致しません
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCA")
[]
最初の塩基対エラー (A または G の代わりに x) が置換としてカウントされているはずなので、 一致する必要があります。