我是一个初级python用户(尝试学习生物信息学),我有困难,使我的最终'for循环'正确。我使用了一个基于网络的生物信息学程序来评估某些蛋白质的亚细胞定位(ORF中包含的蛋白质名称和序列),我正在尝试分析结果(包含在targetp中)。我使用的基于网络的程序会截短蛋白质的名称(不包括序列),我想分析我的结果文件,这样我就可以以FASTA格式获得每个蛋白质的完整名称和序列(这意味着在一行上有一个“>;”+蛋白质名称,在下一行有蛋白质序列)。我认为在最后一段代码之前一切都很顺利;我最终得到了正确的蛋白质名称,但它们都被附加到同一序列中。我知道一定有一些简单的事情我做错了,但我就是想不通。有什么想法吗?在
谢谢!在
ORFs文件如下所示(它是FASTA,但是“不应该在那里,只有>;):
“>;HsaNP_000700支链酮酸脱氢酶E1,α多肽 这是一个用以解决的问题。一个有限责任公司的一个项目。一个项目是一个项目,一个项目是一个项目,一个项目是一个项目,一个项目是一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一个项目,一QPFLIEAMTRIGHHSTSDSSAYRSVDEvnywdkqdhpisrhyllsqgwweeqekawrkqsrkvmmeafeqaerkpkpnnllfsdvyqempaqqqeslarhlqtygehyplhdk
“>;HsaNP_060914丙酮酸脱氢酶磷酸酶前体 另一方面,这两个部门又一个部门,另一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门,一个部门EAKSVKQDRLLMP公司FRAFGDVKKWSIDLQKRVIESGPDQLNDNEYTKFPNYHTPPYLPEVTYHRPQDKKVLVLVLETMHRQDVrivgeylTGMHHQQPIAVGGYKVTLGQMHGLLTERRTKMSSVFEDQNAATHLHAVGNNEFGTVDHERLSKMLSLPEALRMYRDDIIIVQFQFNSVVGAYQNQQE
targetp文件如下所示(M位于第57位,但此处的格式将其忽略):
HsaNP U 000700 445 0.939 0.020 0.089米1
汇丰银行060914 537 0.309 0.073 0.629
targetp中最左边的列是标识符(上面每个蛋白质序列的标题行的一部分),我只想返回第57位带有“M”(即不是“uu”)的条目,以及来自ORFs(标题行)的蛋白质名称。在
我的剧本是:
#!/usr/bin/python
ORFs = open('Human.MitoCarta.fasta', 'U')
targetp = open('MitoCarta_TargetP_combined.out', 'U')
report = targetp.readlines()
protfile = open('mitocarta_no_mTP.fasta','w')
protid = []
seqdict = {}
for seq in ORFs:
seq = seq.rstrip()
if seq[0] == '':
continue
if seq[0] == '>':
name = seq[1:]
seqdict[name] = ''
continue
seqdict[name] += seq
for entry in report:
if entry.startswith('HsaNP'):
if entry[57] != 'M':
protid.append(entry[0:20])
protid = [x.strip(' ') for x in protid]
nameslist = seqdict.keys()
c = 0
for i in protid:
if i in nameslist[c]:
protfile.write('>%s\n%s\n\n' % (nameslist[c], seqdict[name]))
c += 1
protfile.close()
是的,你写的是nameslist[c]和seqdict[name],但你从不更改'name'。所以如果你想得到不同的序列,你需要改变'名字'。你应该写:
那样的话你就应该做对了。在
相关问题 更多 >
编程相关推荐