-1

我正在尝试对一串 DNA 读数进行一些模糊匹配。我想允许最多 1 个替换错误,同时允许一个特定的碱基对成为两个选项之一(在这种情况下是 A 或 G)。

我从以下开始:

>>> 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']

符合预期,因为发生了单个替换 (C->x)

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

不匹配(如预期),因为有两个替换

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

应该匹配,因为第一个碱基对错误(x 而不是 A 或 G)应该被算作替换。

4

1 回答 1

0

在上一个示例中,您有两个替换:第一个碱基对已被替换为,x而最后一个已更改为A. 你只允许一个替换,所以没有匹配。

于 2016-04-04T16:15:32.380 回答