【问题标题】:how to find maximum k-mer in a sequence如何在序列中找到最大 k-mer
【发布时间】:2013-11-13 04:13:02
【问题描述】:

示例输入:

ACGTTGCATGTCGCATGATGCATGAGAGCT # 这是我们的序列 必须搜索

 4 # this is the k-mer(integer value)

样本输出:

CATG GCAT

我不明白该怎么做。请帮我。提前致谢。

【问题讨论】:

  • 这个问题没有明确说明——“a k-mer of length 4”没有告诉我们你正在寻找的序列的内容。请提供更多信息。
  • 你想找出至少出现两次的给定长度的子串吗?
  • 在 Coursera 寻找生物信息学算法的解决方案?

标签: python-2.7 bioinformatics biopython


【解决方案1】:

如果我正确理解了您的问题,以下是处理列表的一种方法:

s="ACGTTGCATGTCGCATGATGCATGAGAGCT"
n=4
k=len(s)-2*n
klist = []
for i in range(k):
    kmer=s[i:i+n]
    if not(kmer in klist) and (kmer in s[i+n:]):
        klist.append(kmer)
print klist

除非我误解,否则您的示例似乎有更多的 kmers:

['TGCA', 'GCAT', 'CATG', 'ATGA']

对于n = 5

['TGCAT', 'GCATG', 'CATGA']

甚至对于n = 6

['TGCATG', 'GCATGA']

【讨论】:

  • 为什么我们要减去“2*n”而不仅仅是“n”? @beroe
  • @user2094920 - 我没有做很多(任何)真正的测试,但因为这是 kmer 的 起点 点,我想我正在尝试修剪关闭最后 2*n 个位置,因此您将从Ys 开始,但不是Xs for n = 4 和AAAAAYYYYYXXXX 使用-(n+1) 可能会更好?
  • 另一方面,-2*n 找到两个具有s='GATGXXXXGATG' 的kmers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2012-04-13
  • 2021-11-06
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
相关资源
最近更新 更多