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

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代码,要求格式不能乱。

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题