【发布时间】:2014-04-07 18:53:48
【问题描述】:
您可以在下面找到计算给定序列中蛋白质质量的简单脚本
import re
def make_table(yy):
letter=r"^[A-Z]"
mass= r"[0-9]{1,2}"
#list of aa
table=open(yy,'r')
aa=[i for line in table for i in line if re.match(letter,i)]
table.close()
table=open(yy,'r').readlines()
xz=''.join([line[:-1] for line in table])
mass= re.findall(r"[-+]?\d*\.\d+|\d+", xz)
data = dict(zip(aa, mass))
#print data
calc_mass(seq, data)
def calc_mass(seq, data):
mass=[]
test=[]
for key, value in data.iteritems():
for aa in seq:
if aa==key:
#print aa, value #debug
test.append(aa)
mass.append(float(value))
if test==seq:
print "OK!"
mass_value=sum(mass)
print "The protein mass is %f" %(mass_value)
# DATASET
yy="table.txt"
input=open("sequence.txt",'r').readline().strip()
seq=list(input)
make_table(yy)
它基于给定的序列和列出每个氨基酸的每个质量的表格。简而言之,它需要一些文本 table.txt 数据,看起来像
A 71.03711
C 103.00919
D 115.02694
E 129.04259
F 147.06841
G 57.02146
H 137.05891
I 113.08406
K 128.09496
L 113.08406
M 131.04049
N 114.04293
P 97.05276
Q 128.05858
R 156.10111
S 87.03203
T 101.04768
V 99.06841
W 186.07931
Y 163.06333
并将其转换为字典,然后在给定序列中找到给定 aa 的对应质量。该脚本运行良好,只是无法通过
if test==seq:
print "OK!"
因为 seq 和测试变量中的氨基酸顺序不同。在这样的迭代(在测试中获得)之后,我如何恢复初始顺序(在 seq 中给出)?是否还有其他可能检查所选键的值并将其移动到单独的列表中?
感谢您的帮助,
格莱布
【问题讨论】:
-
您能否解释一下这是输入,这是我所期望的,以及您的 sequence.txt 的样子。这样会更容易理解。
-
请提供示例
seq和data。如果make_table有效,您可以将其完全从您的问题中删除。 -
欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQ 和How to Ask
标签: python bioinformatics