原生Python中的DNA序列比对(无biopython)

时间:2010-03-10 19:50:30

标签: python alignment dna-sequence genetics

我有一个有趣的遗传问题,我想在原生Python中解决(标准库之外没有任何东西)。这是为了使解决方案在任何计算机上都非常容易使用,而无需用户安装其他模块。

在这里。我从454新一代测序运行中获得了100,000个DNA序列(最多20亿个)。我想修剪四肢以去除可能存在于两端的引物,包括正常和有义序列。例如:

seq001: ACTGACGGATAGCTGACCTGATGATGGGTTGACCAGTGATC
        --primer-1---                 --primer-2-

引物可以存在一次或多次(一个接一个)。正常感始终在左侧,而在右侧则反向。因此,我的目标是找到引物,切割序列,使得仅保留无引物部分。为此,我想使用已经在本机Python中实现的经典对齐算法(即:Smith-Waterman)(即:不通过biopython)。我知道这可能需要相当长的时间(最多几个小时)。

注意:这不是一个直接的“单词”搜索,因为序列和引物中的DNA可以因各种技术原因而“突变”。

你会用什么?

3 个答案:

答案 0 :(得分:1)

这是关于该主题的论文:

Rocke, On finding novel gapped motifs in DNA sequences, 1998

希望从该论文及其参考资料,以及引用上述内容的其他论文,您可以找到许多算法的想法。您将找不到python代码,但您可能会找到可以在Python中实现的算法描述。

答案 1 :(得分:1)

简要研究一下这个算法,这不是一件容易的事。这将需要一些非常严肃的算法工作。尝试将您的期望从“小时”重新调整为“几天或几周”。

实现此目的的程序员需要:

  • 一般python编程的高能力
  • 算法编程经验,并且对时间复杂性有很好的理解。
  • 很好地理解python数据结构,如dict,set和deque,以及它们的复杂性特征。
  • 熟悉单元测试。

那个程序员现在可能也可能不是你。这听起来像一个很棒的项目,祝你好运!

答案 2 :(得分:1)

你可以简单地使用正则表达式吗?我不认为会那么复杂!事实上,我刚刚完成了一些代码,为大学的其中一个人做了一些与此类似的事情!

如果没有寻找引物的精确拷贝,由于突变,那么可以应用模糊匹配的元素!我做的版本非常简单地在开始和结束时查找精确的引物匹配,并使用以下代码返回值减去这些引物:

pattern = "^" + start_primer + "([A-Z]+)" + end_primer + "$" # start primer and end primer are sequences you are looking to match
regex = re.match(pattern, sequence) # sequence is the DNA sequence you are analyzing
print regex.group(1) # prints the sequence between the start and end primers

这是python http://hackerboss.com/approximate-regex-matching-in-python/

中模糊正则表达式的链接