如何用Python/Biopython生成指定肽链最多3个AA替换的独特突变体
肽突变序列生成Python实现
以下代码为纯Python实现,无需安装额外依赖,可直接运行,也可快速对接Biopython的序列处理工具:
基础参数说明
- 原始肽骨架:
CKASGFTFS(长度9个氨基酸) - 允许替换的氨基酸池:20种标准氨基酸
A,R,N,D,E,G,C,Q,H,I,L,K,M,F,P,S,T,W,Y,V - 突变规则:仅替换1/2/3个位点,其余位点保持原序列,最终输出去重后的突变序列列表
完整可运行代码
import itertools # 定义基础参数 original_seq = "CKASGFTFS" aa_pool = ["A","R","N","D","E","G","C","Q","H","I","L","K","M","F","P","S","T","W","Y","V"] max_mut = 3 # 最多替换3个位点 # 用set存储自动去重 unique_mutants = set() # 遍历突变数目:1个、2个、3个位点 for mut_count in range(1, max_mut+1): # 选出所有可能的mut_count个不同的突变位点组合 for positions in itertools.combinations(range(len(original_seq)), mut_count): # 每个突变位点对应的可选氨基酸(排除和原位点相同的氨基酸,避免无效突变) possible_aas = [ [aa for aa in aa_pool if aa != original_seq[pos]] for pos in positions ] # 遍历所有氨基酸组合的笛卡尔积 for aa_sub in itertools.product(*possible_aas): # 把字符串转成列表方便修改 seq_list = list(original_seq) for idx, pos in enumerate(positions): seq_list[pos] = aa_sub[idx] # 转成字符串加入去重集合 unique_mutants.add("".join(seq_list)) # 转成列表格式输出 mutant_list = list(unique_mutants) # 测试输出:打印前10条序列和总数量 print(f"总突变序列数:{len(mutant_list)}") print("前10条序列示例:", mutant_list[:10])
补充说明
- 代码运行后总生成约59万条有效去重序列,普通消费级电脑可在3秒内完成计算
- 若需要使用Biopython处理生成的序列,仅需在生成序列后调用
Bio.Seq.Seq()方法包裹字符串即可,核心生成逻辑无需修改 - 若允许保留和原氨基酸相同的替换(即包含无效突变),直接把
possible_aas的过滤条件删除即可
内容的提问来源于stack exchange,提问作者shivam Gupta
相关产品推荐
相关产品推荐

