我正在做3个单词的迭代,每个单词大约有500万个字符,我想找到20个字符的序列来识别每个单词.也就是说,我想在一个单词中找到长度为20的所有序列,这个序列对于该单词是唯一的.我的问题是我写的代码需要很长时间才能运行.我甚至没有完成一个单词来运行我的程序过夜.
下面的函数采用包含字典的列表,其中每个字典包含20个可能的单词,以及500万个单词之一的位置.
如果有人知道如何优化这个我会非常感激,我不知道如何继续......
这是我的代码示例:
def findUnique(list):
# Takes a list with dictionaries and compairs each element in the dictionaries
# with the others and puts all unique element in new dictionaries and finally
# puts the new dictionaries in a list.
# The result is a list with (in this case) 3 dictionaries containing all unique
# sequences and their locations from each string.
dicList=[]
listlength=len(list)
s=0
valuelist=[]
for i in list:
j=i.values()
valuelist.append(j)
while s<listlength:
currdic=list[s]
dic={}
for key …Run Code Online (Sandbox Code Playgroud) 我们从事系统生物学研究.我们更喜欢使用现有的数据集,因为收集新的生物数据是昂贵的.因此,我们编写的许多脚本只不过是将一个数据集转换为另一个数据集.
最终,我们将结果放在网上 - 越来越多的期刊需要这样的东西.
因此,对我来说,尝试将Rails用于我的项目并不是一个很大的飞跃.我可以设置简单的可重复实验,逐步通过数据库表(例如使用rake)转换数据,并使用像flotomatic和gnuplot 这样的宝石显示结果.如果我需要的东西很快跑,我甚至可以用C编写自定义的宝石++使用水稻,或者使用并行八哥和workling.
最后,我开始怀疑是否有其他人正在使用Rails进行生物信息学或科学研究.
我想,"如果我是一个科学研究Rails宝石,我该怎么办?"
这样的宝石有什么额外的功能?也许迁移适应了一个可以管理的管道?也许更高级的图形功能?内置后台工作?
在阅读这个问题时,我认为以下问题很简单StringSplit
给定以下字符串,我想在每个"D"的左侧"剪切"它,以便:
我得到一个片段列表(序列不变)
StringJoin@fragments返回原始字符串(但如果我必须重新排序片段以获得此字符串,则无关紧要).也就是说,每个片段中的序列很重要,我不想丢失任何字符.
(我感兴趣的例子是蛋白质序列(字符串),其中每个字符代表一个字母代码中的氨基酸.我想获得通过用已知在"D"之前分裂的酶处理获得的所有片段的理论列表. )
str = "MTPDKPSQYDKIEAELQDICNDVLELLDSKGDYFRYLSEVASGDN"
Run Code Online (Sandbox Code Playgroud)
我能想到的最好的是在每个"D"之前插入一个空格StringReplace然后使用StringSplit.至少可以说,这似乎很尴尬.
frags1 = StringSplit@StringReplace[str, "D" -> " D"]
Run Code Online (Sandbox Code Playgroud)
作为输出:
{"MTP", "DKPSQY", "DKIEAELQ", "DICN", "DVLELL", "DSKG", "DYFRYLSEVASG", "DN"}
Run Code Online (Sandbox Code Playgroud)
或者,使用StringReplacePart:
frags1alt =
StringSplit@StringReplacePart[str, " D", StringPosition[str, "D"]]
Run Code Online (Sandbox Code Playgroud)
最后(更现实地),如果我想在"D"之前分裂,前提是它前面的残留物不是"P"[即PD,(Pro-Asp)键未被切割],我这样做:
StringSplit@StringReplace[str, (x_ /; x != "P") ~~ "D" -> x ~~ " D"]
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?
速度不一定是个问题.我不太可能处理大于500个字符的字符串.我正在使用Mma 7.
更新
我添加了生物信息学标签,我认为从该领域添加一个例子可能会引起兴趣.
以下使用eutils从NCBI数据库中导入蛋白质序列(牛血清白蛋白,登录号3336842),然后产生(理论上的)胰蛋白酶消化物.假设A2不是"R","K"或"P",我认为当A1是"R"或"K"时,酶tripin在残基A1-A2之间切割.如果有人有任何改进建议,请随时提出修改建议.
使用sakra方法的修改('db ='之后的回车可能需要删除):
StringJoin /@
Split[Characters[#],
And @@ Function[x, …Run Code Online (Sandbox Code Playgroud) 所以我试图解决这个问题,我必须在python的某些行中找到最常用的6个字母的字符串,所以我意识到可以做这样的事情:
>>> from collections import Counter
>>> x = Counter("ACGTGCA")
>>> x
Counter({'A': 2, 'C': 2, 'G': 2, 'T': 1})
Run Code Online (Sandbox Code Playgroud)
现在,我使用的数据是DNA文件,文件的格式如下:
> name of the protein
ACGTGCA ... < more sequences>
ACGTGCA ... < more sequences>
ACGTGCA ... < more sequences>
ACGTGCA ... < more sequences>
> another protein
AGTTTCAGGAC ... <more sequences>
AGTTTCAGGAC ... <more sequences>
AGTTTCAGGAC ... <more sequences>
AGTTTCAGGAC ... <more sequences>
Run Code Online (Sandbox Code Playgroud)
我们可以从一次运行一个蛋白质开始,但是如何修改上面的代码块来搜索最常见的6个字符的字符串模式?谢谢.
您正在使用基因表达矩阵,片段计数来计算差异表达的基因.我想知道如何删除值为0的行.然后我的数据集将是紧凑的,并且我将使用此矩阵为下游分析提供更少的虚假结果.
输入
gene ZPT.1 ZPT.0 ZPT.2 ZPT.3 PDGT.1 PDGT.0
XLOC_000001 3516 626 1277 770 4309 9030
XLOC_000002 342 82 185 72 835 1095
XLOC_000003 2000 361 867 438 454 687
XLOC_000004 143 30 67 37 90 236
XLOC_000005 0 0 0 0 0 0
XLOC_000006 0 0 0 0 0 0
XLOC_000007 0 0 0 0 1 3
XLOC_000008 0 0 0 0 0 0
XLOC_000009 0 0 0 0 0 0
XLOC_000010 7 1 5 3 0 1
XLOC_000011 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用仿射空位罚函数实现用于局部序列比对的Smith-Waterman算法.我想我理解如何启动和计算计算校准分数所需的矩阵,但我不知道如何追溯以找到对齐.要生成所需的3个矩阵,我有以下代码
for j in range(1, len2):
for i in range(1, len1):
fxOpen = F[i][j-1] + gap
xExtend = Ix[i][j-1] + extend
Ix[i][j] = max(fxOpen, xExtend)
fyOpen = F[i-1][j] + gap
yExtend = Iy[i-1][j] + extend
Iy[i][j] = max(fyOpen, yExtend)
matchScore = (F[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]])
xScore = Ix[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
yScore = Iy[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
F[i][j] = max(0, matchScore, xScore, yScore)
Run Code Online (Sandbox Code Playgroud)
我不确定我是否需要一个矩阵用于追溯,或者只需要1?任何关于如何从F中的最大分数追溯的澄清将非常感激.
我有一个Fortran程序,并希望在python中为多个文件执行它.我有2000个输入文件,但在我的Fortran代码中,我一次只能运行一个文件.我应该如何在python中调用Fortran程序?
我的剧本:
import subprocess
import glob
input = glob.glob('C:/Users/Vishnu/Desktop/Fortran_Program_Rum/*.txt')
output = glob.glob('C:/Users/Vishnu/Desktop/Fortran_Program_Rum/Output/')
f = open("output", "w")
for i in input:
subprocess.Popen(["FORTRAN ~/C:/Users/Vishnu/Desktop/Fortran_Program_Rum/phase1.f", "--domain "+i])
f.write(i)
Run Code Online (Sandbox Code Playgroud)
错误:
runfile('C:/Users/Vishnu/Desktop/test_fn/test.py', wdir='C:/Users/Vishnu/Desktop/test_fn')
Traceback (most recent call last):
File "<ipython-input-3-f8f378816004>", line 1, in <module>
runfile('C:/Users/Vishnu/Desktop/test_fn/test.py', wdir='C:/Users/Vishnu/Desktop/test_fn')
File "C:\Users\Vishnu\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\Users\Vishnu\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Vishnu/Desktop/test_fn/test.py", line 30, in <module>
subprocess.Popen(["FORTRAN ~/C:/Users/Vishnu/Desktop/Fortran_Program_Rum/phase1.f", "--domain "+i])
File "C:\Users\Vishnu\Anaconda3\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Users\Vishnu\Anaconda3\lib\subprocess.py", line …Run Code Online (Sandbox Code Playgroud) 我有兴趣找到一些需要拓扑排序的真实世界海量数据集(> = 1M).也许与生物信息学相关的东西?
分类学是在共同特征的基础上定义和命名生物有机体群的科学.生物被组合成分类群(单数:分类单元),这些组被赋予分类等级.现代使用的主要等级是领域,王国,门,阶级,秩序,家庭,属和物种.有关维基百科中的分类和分类排名的更多信息.
按照维基百科文章分类排名中的红狐狸示例,我需要创建一个这样的JSON输出:
{
"species": "vulpes",
"genus": "Vulpes",
"family": "Canidae",
"order": "Carnivora",
"class": "Mammalia",
"phylum": "Chordata",
"kingdom": "Animalia",
"domain": "Eukarya"
}
Run Code Online (Sandbox Code Playgroud)
由于Django REST Framework基于字段名称创建密钥,因此问题出现在分类等级类(示例中为粗体),因为它是Python中的保留字,不能用作变量名.
在Django中创建的模型类看起来像这样:
class Species(models.Model):
species = models.CharField()
genus = models.CharField()
family = models.CharField()
# class = models.CharField() - class is reserved word in Python
# class_ = models.CharField() - Django doesn't allow field names
# ending with underscore. That wouldn't be either …Run Code Online (Sandbox Code Playgroud) python django bioinformatics python-3.x django-rest-framework
bioinformatics ×10
python ×5
python-3.x ×2
r ×2
string ×2
bioconductor ×1
biopython ×1
django ×1
f2py ×1
genetics ×1
genome ×1
iteration ×1
python-2.7 ×1