1

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

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

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

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

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

你会用什么?

4

3 回答 3

1

这是一篇关于该主题的论文:

Rocke,关于在 DNA 序列中发现新的缺口基序,1998 年

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

于 2010-03-10T19:55:25.087 回答
1

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

实现这一点的程序员将需要:

  • 对一般 python 编程有很高的能力
  • 算法编程经验,对时间复杂度有很好的理解。
  • 对 dict、set 和 deque 等 Python 数据结构及其复杂性特征有很好的理解。
  • 熟悉单元测试。

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

于 2010-03-10T23:04:07.290 回答
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/

于 2010-09-10T08:01:41.680 回答