城子江
2021-05-29 00:51
采纳率: 100%
浏览 27

Python获取基因库序列并排序

下面代码哪里错了,为什么提示"list index out of range"

import reimport randomseq_count = 0list = []list_1 = []list_2 = []seq = []seq_2 = []q = 0v = []count_1 = []with open('sequence.fasta', 'r') as f: for line in f: if line[0] == '>': seq_count += 1 line = 'contig' f = re.sub(r'[N]+|(\n)', '', line) list.append(f) seq = ''.join(list) seq = re.split('contig', seq) seq = seq[1:]print(seq_count)print(seq)while q < 5000: a = random.randint(0, 23) length = len(seq[a]) n = random.randint(0, length-200) seq_5000 = seq[a][n:n + 200] seq_2.append(seq_5000) q += 1# print(seq_2)for line_1 in seq_2: a = line_1.count('G') b = line_1.count('g') c = line_1.count('C') d = line_1.count('c') GC = (a + b + c + d) / 200 list_1.append(GC) list_1.sort(reverse=True)# print(list_1)# print(list_1[0:10])seq_3 = ''.join(seq_2) # //将取出的每一条条200bp的序列转化为字符串list_2.append(seq_3)seq_all = ''.join(list_2) # //将5000条200bp的列表转化为一整条长字符串seq_all_1 = seq_all.upper()# print(seq_all)seq_fen = [seq_all_1[i:i + 4] for i in range(0, len(seq_all_1), 4)]# print(seq_fen)

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 已采纳

    list index out of range 错误出现的原因主要有两个,一个可能是下标超出范围,一个可能是list是空的,没有一个元素

    比如

        a = random.randint(0, 23)

        length = len(seq[a])

    a最大是23,你seq列表中有24个元素吗

     

    请使用<代码段>重发一下代码,你这样代码没有格式别人没法分析。

    尤其是python代码,要求格式不能乱。

     

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-05-31 16:12

    您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

    ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

    【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
    【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题