【发布时间】:2013-11-29 23:44:37
【问题描述】:
您可以在这里获取数据! 2shared底部下载
我正在用 python 分析生物数据。
我已经编写了一个代码来在长字符串列表中查找匹配的子字符串。
子串在一个列表中,长度为 7 个核苷酸。
所以在列表中,从 AAAAAAA 到 TTTTTTT,存在 16384 个主题(子字符串),排列 A、C、G、T。
这段代码有一个for循环,用于子字符串列表和嵌套在里面的长字符串列表。
它工作正常,但由于列表有12000行,代码处理很慢。
换句话说,提供有关 AAAAAAA 的信息以及下一个 AAAAAAC 需要 2 分钟。
因此需要 16384 个图案在 2 分钟内通过 12000 行,这将需要 (16384*2 == 32768 分钟 -> 546 小时 -> 22 天...)
我正在使用 scipy 和 numpy 来获取 Pvalues。
我想要的是计算序列列表中存在和不存在子字符串的数量
长字符串列表和代码如下:
list_of_lists_long = [
[BGN, -0.054, AGGCAGCTGCAGCCACCGCGGGGCCTCAGTGGGGGTCTCTGG....]
[ABCB7, 0.109, GTCACATAAGACATTTTCTTTTTTTGTTGTTTTGGACTACAT....]
[GPR143, -0.137, AGGGGATGTGCTGGGGGTCCAGACCCCATATTCCTCAGACTC....]
[PLP2, -0.535, GCGAACTTCCCTCATTTCTCTCTGCAATCTGCAAATAACTCC....]
[VSIG4, 0.13, AAATGCCCCATTAGGCCAGGATCTGCTGACATAATTGCCTAG....]
[CCNB3, -0.071, CAGCAGCCACAGGGCTAAGCATGCATGTTAACAGGATCGGGA....]
[TCEAL3, 0.189, TGCCTTTGGCCTTCCATTCTGATTTCTCTGATGAGAATACGA....]
....] #12000 lines
是否有更快的逻辑可以更快地执行代码??
我需要你的帮助!
提前谢谢你。
======================================
有没有更简单的方法,无需实现任何其他东西?
我认为模式匹配的迭代是问题...
我想要找到的是,长度为 7 的基序在整个序列列表中出现了多少次,而且也没有出现!!!。所以如果一个主题存在于一个字符串中,它是 TRUE 作为 bool,然后增加一个值 AND FALSE,然后增加另一个值。
不是字符串中图案的数量。
【问题讨论】:
-
不重要,但您的代码中有一些错误,例如
for sMotif in motifs,可能您的意思是motifList和listoflists_long,请将字符串放在引号之间。 -
@elyase,谢谢,错误已修复。
-
一个快速提示是使用
if subs in s而不是find检查字符串。这应该可以让你的速度提高 2 倍。 -
每个单独的字符串有多长?
标签: python string numpy scipy bioinformatics