← 文章
「生信软件」

Saturated-mutagenesis-library-NNK:饱和突变文库 oligo 设计脚本

这个脚本解决什么问题

做蛋白质定向进化时,饱和突变(saturation mutagenesis)文库的 oligo 设计是件繁琐的体力活:野生型序列要切成合适长度的片段、每段之间留足重叠区、每个氨基酸位点要生成 19 个突变体(跳过野生型本身)、密码子还要按宿主优化——手工在 Excel 里排又容易出错。

这个 Python 脚本把整条流程自动化了:输入野生型 DNA 序列和上下游引物,直接输出一份可用于合成的 oligo 清单(CSV)。

核心功能

  • 片段化:默认按 300 bp 目标长度切分野生型序列,相邻片段保留 60 bp 重叠区(两端各 30 bp 安全区)
  • 饱和突变:对每个氨基酸位点(起始密码子除外)生成 19 种突变,密码子采用 E. coli 优化
  • 安全区保护:重叠区内的序列保持野生型,不引入突变,保证下游 Gibson 等组装方法的兼容性
  • 引物整合:上下游 PCR 引物自动并入首尾片段
  • 输入校验:只允许 A/T/C/G,序列长度必须是 3 的倍数
  • 覆盖率报告:控制台输出每个片段的切片位置、突变位点范围,并对未覆盖位点或超长 oligo 给出警告

使用示例

python Saturation_mutation_NNK_v1.py \
  --wt_DNA <野生型DNA序> \
  --output s9_NNK_oligo.csv

主要参数:

参数说明默认值
--wt_DNA野生型 DNA 序列(必填)
--up_primer上游引物ACAATTCTGCCTAGGAGATCT
--down_primer下游引物TGACATCTGtagtgcaACAAG
--oligo_lenoligo 目标长度(bp)300
--safe_len片段两端安全区长度(重叠 = 2 × safe_len)30

一次典型运行的输出:

Fragment 1: slice [0:279], length 279, mutated aa 2 to 83
Fragment 2: slice [219:519], length 300, mutated aa 84 to 163
...
All amino acid positions (except start codon) covered.
Generated 8588 oligos. Saved to s9_NNK_oligo.csv

相比全 20 氨基酸饱和的优势

只生成 19 个突变体(排除野生型氨基酸)而不是 20 个,能显著降低 oligo 总量——对大基因的文库来说,合成的成本差距相当可观。

环境要求

Python 3.6+,只用标准库(csv / math / argparse),无需额外安装依赖。

相关链接

原文链接: https://github.com/Caizhaohui/Saturated-mutagenesis-library-NNK