首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过将空列表赋值为"DNA_Sequence“来修正错误

通过将空列表赋值为"DNA_Sequence“来修正错误
EN

Stack Overflow用户
提问于 2018-04-30 09:06:18
回答 2查看 59关注 0票数 2

因此,这个问题是Python-script, which should translate 1000 DNA-Sequences to proteins by 1152 different codontables, don't work上一篇文章的延续。从那时起,我用PyCharm编辑了脚本,现在这个脚本具有这样的外观:

代码语言:javascript
复制
import yaml
file = open('/home/ihor/Документи/біоінформатика/DNA_Sequence72 - Копія.py', 'r')
DNA = file.read()
DNA_Sequences = DNA.split(',')
Genetic_Codes = open('/home/ihor/Документи/біоінформатика/Genetic_Codes.py', 'r')
Genetic_Codes = Genetic_Codes.read()
Genetic_Codes_list = Genetic_Codes.split('\n')
for row in range(1152): #for str in list[Genetic_Codes_list] in range(1152):
    Alternative_Genetic_Codes = Genetic_Codes_list.pop(0)
    for line in range(1000):
        dna = DNA_Sequences.pop(0)
        codontable = yaml.load(Alternative_Genetic_Codes)
        codontable_sequence = ""
        for i in range(0, len(dna)-(3 + len(dna) % 3), 3):
            if codontable.get(dna[i:i + 3], codontable_sequence) == "_":
                break
            codontable_sequence += codontable.get(dna[i:i + 3], codontable_sequence)
        print(list([codontable_sequence]))

现在这个脚本只有一个错误:

IndexError:从空列表中弹出

在对调试器中的变量进行研究之后,我看到了行DNA_Sequences = DNA.split(',')中的变量DNA_Sequences = DNA.split(',')被赋值为'empty list‘。我的脚本只将1000个DNA序列的字符串列表转换为蛋白质,只有一个codontable (字典),但我想要的是,这个脚本在一次运行中将1000个DNA序列的字符串列表转换为1152个不同的共义表。我读了很多关于这个错误,列表等的教程和其他资料,但是我没有找到任何解决我的问题的方法。所有其他变量都是完全正常的。如何用空列表修复此错误?我会非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-30 19:22:16

pop从数组中删除项,因此外部循环的第一次迭代将创建一个空数组。解决方案是按索引访问数组项,而不删除它们:

代码语言:javascript
复制
for line in range(1000):
    dna = DNA_Sequences[line]
票数 2
EN

Stack Overflow用户

发布于 2018-04-30 10:14:27

你的代码毫无意义。但是,答案是检查元素是否为空,如果是空的话。

代码语言:javascript
复制
for row in range(1152): #for str in list[Genetic_Codes_list] in range(1152):
    Alternative_Genetic_Codes = Genetic_Codes_list.pop(0)
    for line in range(1000):
        if len(DNA_Sequences) == 0:
            pass
        else:
            dna = DNA_Sequences.pop(0)
            codontable = yaml.load(Alternative_Genetic_Codes)
            codontable_sequence = ""
            for i in range(0, len(dna)-(3 + len(dna) % 3), 3):
                if codontable.get(dna[i:i + 3], codontable_sequence) == "_":
                    break
                codontable_sequence += codontable.get(dna[i:i + 3], codontable_sequence)
            print(list([codontable_sequence]))

您确实应该使用biopython或类似的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50097284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档