因为某些原因,它不包括第一个条目,我不知道为什么?当我使用第一个条目时,即
">mm10_ensGene_ENSMUST00000038432 range=chr1:172956768-172956796 5'pad=0 3'pad=0 strand=+ repeatMasking=none"
在D_ID_seq
字典中,我得到一个keyrerror
为什么它适用于所有其他人,但不适用于第一个?
in_file = [">mm10_ensGene_ENSMUST00000038432 range=chr1:172956768-172956796 5'pad=0 3'pad=0 strand=+ repeatMasking=none",
'TTTCCCCTTTTAGACACCCATAGAACAGA',
">mm10_ensGene_ENSMUST00000060693 range=chr1:174089038-174089041 5'pad=0 3'pad=0 strand=+ repeatMasking=none",
'AGCA',
">mm10_ensGene_ENSMUST00000061990 range=chr1:174250926-174250976 5'pad=0 3'pad=0 strand=- repeatMasking=none",
'CAACTGCCATGGTGGAAGGAACCAACAGGATCACAAGGACAATCATTCAG',
'A',
">mm10_ensGene_ENSMUST00000062353 range=chr1:92512027-92518515 5'pad=0 3'pad=0 strand=- repeatMasking=none",
'CCACGTCCTCGCACATGGGGAAGGAAGCTTCCCTTTTCTCTCAGTGCCTC',
'CTTTAAACCAGCTGTGGCTCAAGTGGGCCAGCTGCTCTGAGGGATTAGCC',
'AGGCTGCAGCAGAAGCCAGGTGTCTGGGGGTGACAGTGGACAGAGAGAAG',
'TGGTTTCAGAAGACTGAGGACAGACACACAGACACCGGCAGATCTCCAAG']
IDs = []
D_ID_seq = {}
D_ID_EJnum = {}
for indx in range(0,len(in_file)):
if in_file[indx][0] == '>':
IDs.append(in_file[indx])
temp_seq = ''
while indx:
for i in range((indx+1),len(in_file)):
if in_file[i][0] != '>':
temp_seq = temp_seq + in_file[i]
else:
break
D_ID_seq[in_file[indx]] = temp_seq
break
print D_ID_seq.keys()
结果
[">mm10_ensGene_ENSMUST00000062353 range=chr1:92512027-92518515 5'pad=0 3'pad=0 strand=- repeatMasking=none", ">mm10_ensGene_ENSMUST00000061990 range=chr1:174250926-174250976 5'pad=0 3'pad=0 strand=- repeatMasking=none", ">mm10_ensGene_ENSMUST00000060693 range=chr1:174089038-174089041 5'pad=0 3'pad=0 strand=+ repeatMasking=none"]
问题是你的
while
循环。对于列表的第一个元素,indx
是0。在布尔上下文中,0的计算结果是False
,因此循环永远不会对第一个元素执行。由于从不修改循环中的indx
,而是依赖break
退出循环,因此可以改用while True:
对于这种情况,还有其他算法不重新处理序列行,但这是对所列代码的最简单更改
相关问题 更多 >
编程相关推荐