k-mer模式的d-邻域是所有k-mers的集合,这些k-mers最多距离d与模式之间的距离。
模式的三个邻域中有多少个4-mers = ACGT?
请注意,模式的d邻域包括模式。
发布于 2022-06-25 09:09:17
通常,你不应该在堆叠溢出时问家庭作业问题,因为它们非常具体,不会帮助别人。我不会给您一个复制粘贴解决方案,但是下面是我解决这个问题的方法:
这可以通过迭代一个模式,然后将值与另一个模式中相同位置的值进行比较,并在不匹配的情况下增加一个计数器:
def hamming_distance(pattern_1, pattern_2):
for idx, c in enumerate(pattern_1):
if c != pattern_2[idx]:
# increase a counter
return counter接下来,您需要生成要检查的所有4-mers。为此,您可以使用itertools产品。
itertools.product("AGCT", repeat=4)然后,您需要将这些组合加入到可以与上面编写的函数进行比较的字符串中。也许,您还需要对本质上不存在的组合进行一些筛选。
3-neighborhood中的
最后,循环所有生成的组合,并计算与参考模式的汉明距离。如果它小于或等于3,增加一个计数器。然后打印计数器,你就完成了!
reference_pattern = "ACGT"
counter = 0
for pattern in generate_all_k_mers(k=4):
if hamming_distance(reference_pattern, pattern) <= 3:
counter += 1
print(f"{counter} patterns are in the 3-neighborhood of {reference_pattern}")祝好运!
https://stackoverflow.com/questions/72701050
复制相似问题