我有一个有趣的遗传问题,我想在原生Python中解决(标准库之外没有任何东西)。这是为了使解决方案在任何计算机上都非常容易使用,而无需用户安装其他模块。
在这里。我从454新一代测序运行中获得了100,000个DNA序列(最多20亿个)。我想修剪四肢以去除可能存在于两端的引物,包括正常和有义序列。例如:
seq001: ACTGACGGATAGCTGACCTGATGATGGGTTGACCAGTGATC
--primer-1--- --primer-2-
引物可以存在一次或多次(一个接一个)。正常感始终在左侧,而在右侧则反向。因此,我的目标是找到引物,切割序列,使得仅保留无引物部分。为此,我想使用已经在本机Python中实现的经典对齐算法(即:Smith-Waterman)(即:不通过biopython)。我知道这可能需要相当长的时间(最多几个小时)。
注意:这不是一个直接的“单词”搜索,因为序列和引物中的DNA可以因各种技术原因而“突变”。
你会用什么?
答案 0 :(得分:1)
这是关于该主题的论文:
Rocke, On finding novel gapped motifs in DNA sequences, 1998
希望从该论文及其参考资料,以及引用上述内容的其他论文,您可以找到许多算法的想法。您将找不到python代码,但您可能会找到可以在Python中实现的算法描述。
答案 1 :(得分:1)
简要研究一下这个算法,这不是一件容易的事。这将需要一些非常严肃的算法工作。尝试将您的期望从“小时”重新调整为“几天或几周”。
实现此目的的程序员需要:
那个程序员现在可能也可能不是你。这听起来像一个很棒的项目,祝你好运!
答案 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/
中模糊正则表达式的链接