PCR引物设计应该算是生物实验基本技能吧,工具也非常多。Primer-BLAST、Primer Premier 都是比较经典的软件,除此之外还有很多新的在线设计软件,也很方便。不过今天不是要讲怎么用这些现成软件来设计引物,而是要讲讲怎么用Python来做引物设计。
Python拥有众多的第三方包,其中有个叫: Primer3-py
https://pypi.org/project/primer3-py/
Primer3-py 是 Primer3 在 Python 中的一个“包装”,用 Primer3-py 官方的说法就是:提供一个简单可靠的方式让你能更好的自动化设计引物 (The intention is to provide a simple and reliable interface for automated oligo analysis and design)。
注:有人可能没怎么听过 Primer3,这是个引物设计的程序,NCBI 的 Primer-BLAST 引物设计部分用的就是 Primer3。除此之外,Primer3 还有几个网页版和命令行版本,引用次数非常高,高到你难以想象 ... 可以检索一下 Primer3 on the WWW for General Users And For Biologist Programmers
安装:
有两种方法,都非常方便:
方法一,使用 pip:
pip install Cython
pip install primer3-py
方法二,使用 Bioconda:
conda install -c bioconda primer3-py
安装好 Primer3-py 之后,不需要另外再单独安装 Primer3。
注:我个人推荐使用 Bioconda 来安装生物及编程相关的各种软件和包,非常出色的一个管理器,虽然有些小瑕疵,但瑕不掩瑜,对做生信分析的人来说算得上是福音,特别是在你被各种软件各种包的安装问题折磨千百遍之后。(这里特指在 Linux 下,其他类型的系统上没有用过,就不评价了)
功能
Primer3-py 的功能其实分两部分:一部分是其本身自带的 引物“热力学计算” 功能,另一部分就是 调用 Primer3 进行引物设计 的功能。
后文用做示例的模板序列来自于部分 BRCA2 的 DNA 序列,FASTA 序列如下:
>NC_000013.11:32315480-32399672 Homo sapiens chromosome 13, GRCh38.p12 Primary AssemblyGTGGCGCGAGCTTCTGAAACTAGGCGGCAGAGGCGGAGCCGCTGTGGCACTGCTGCGCCTCTGCTGCGCCTCGGGTGTCTTTTGCGGCGGTGGGTCGCCGCCGGGAGAAGCGTGAGGGGACAGATTTGTGACCGGCGCGGTTTTTGTCAGCTTACTCCGGCCAAAAAAGAACTGCACCTCTGGAGCGGGTTAGTGGTGGTGGTAGTGGGT
来源于NCBI:
https://www.ncbi.nlm.nih.gov/nuccore/NC_000013.11report=fasta&from=32315480&to=32399672
Primer3-py 自带功能:引物热力学参数评估
主要有5个可用的命令,分别评估几个引物的热力学参数:
热力学参数 | Primer3-py 命令 |
---|---|
Tm值 | calcTm() |
发夹结构 | calcHairpin() |
同源二聚体 | calcHomodimer() |
异质二聚体 | calcHeterodimer() |
3'端稳定性 | calcEndStability() |
具体例子:
FASTA = """>NC_000013.11:32315480-32399672 Homo sapiens chromosome 13, GRCh38.p12 Primary Assembly
GTGGCGCGAGCTTCTGAAACTAGGCGGCAGAGGCGGAGCCGCTGTGGCACTGCTGCGCCTCTGCTGCGCC
TCGGGTGTCTTTTGCGGCGGTGGGTCGCCGCCGGGAGAAGCGTGAGGGGACAGATTTGTGACCGGCGCGG
TTTTTGTCAGCTTACTCCGGCCAAAAAAGAACTGCACCTCTGGAGCGGGTTAGTGGTGGTGGTAGTGGGT
"""# 计算引物 Tm 值primer3.calcTm("GTGGCGCGAGCTTCTGAAAC")
""" 结 果 >>> 56.89119991230376 """# 检查引物中是否有 发夹结构primer3.calcHairpin("GTGGCGCGAGCTTCTGAAAC")
""" 结 果 >>> ThermoResult(structure_found=True, tm=57.92, dg=-1484.80, dh=-23500.00, ds=-70.98)"""# 计算引物 同源二聚体primer3.calcHomodimer("GTGGCGCGAGCTTCTGAAAC")
""" 结 果 >>> ThermoResult(structure_found=True, tm=9.76, dg=-6863.20, dh=-45200.00, ds=-123.61) """# 计算引物 异质二聚体primer3.calcHeterodimer("GTGGCGCGAGCTTCTGAAAC", FASTA)
""