Python脚本将序列添加到一起。不包括第一个元素?

2024-04-26 10:49:30 发布

您现在位置:Python中文网/ 问答频道 /正文

因为某些原因,它不包括第一个条目,我不知道为什么?当我使用第一个条目时,即

">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"]

Tags: innoneid条目rangetempseqfile
1条回答
网友
1楼 · 发布于 2024-04-26 10:49:30

问题是你的while循环。对于列表的第一个元素,indx是0。在布尔上下文中,0的计算结果是False,因此循环永远不会对第一个元素执行。由于从不修改循环中的indx,而是依赖break退出循环,因此可以改用while True:

对于这种情况,还有其他算法不重新处理序列行,但这是对所列代码的最简单更改

相关问题 更多 >