You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现支持序列列表输入的指定突变率DNA随机突变功能

优化实现方案

首先你原有代码存在缩进逻辑错误:return语句放在了for循环内部,只会执行第一轮循环就直接返回结果,根本没有遍历所有序列位点,突变逻辑无法正常运行。

以下是修复bug并支持序列列表输入的完整实现:

import random

def mutate_v2(sequence_input, mutation_rate):
    # 处理输入为序列列表的情况
    if isinstance(sequence_input, list):
        output = []
        for seq in sequence_input:
            output.append(_mutate_single(seq, mutation_rate))
        return output
    # 处理输入为单个序列的情况
    else:
        return _mutate_single(sequence_input, mutation_rate)

# 抽离单个序列突变逻辑,复用代码
def _mutate_single(sequence, mutation_rate):
    dna_list = list(sequence)
    seq_length = len(dna_list)
    for i in range(seq_length):
        r = random.random()
        if r < mutation_rate:
            # 随机选择突变位点和替换碱基
            mutation_site = random.randint(0, seq_length - 1)
            dna_list[mutation_site] = random.choice(['A', 'T', 'C', 'G'])
    return ''.join(dna_list)

使用示例

# 单个序列输入测试
single_input = 'ATCTAGGAT'
print(mutate_v2(single_input, 0.05))

# 序列列表输入测试
list_sequences = ['ATTCTGTA', 'TTCGCTAA', 'ACCCGCTA']
mutated_list = mutate_v2(list_sequences, 0.01)
print(mutated_list)

核心修改说明

  • 修复原函数return缩进错误,保证遍历所有序列位点后再返回结果
  • 新增输入类型判断,自动适配单个序列/序列列表两种输入场景
  • 抽离单个序列的突变逻辑为内部函数,避免代码冗余
  • 移除了原代码中的调试打印语句,如果你需要观察突变位点可以自行加回

内容的提问来源于stack exchange,提问作者user8769986

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:27:02