使用NCBI-ePCR和Primer3进行引物批量化设计

NCBI已经不再维护并下架了ePCR软件,转而推荐使用其Primer-BLAST网页工具。这对于单个引物设计任务比较方便,但不利于基因组较大的非模式物种的特异性引物设计或批量化的引物设计。

本教程讲解使用NCBI-ePCR和Primer3进行引物批量化设计。

1.下载并安装NCBI-ePCR和Primer3软件

$ wget http://ftp.debian.org/debian/pool/main/e/epcr/epcr_2.3.12-1.orig.tar.gz -P ~/software
$ tar zxf ~/software/epcr_2.3.12-1.orig.tar.gz -C /opt/biosoft/
$ make -j 4
$ echo 'PATH=$PATH:/opt/biosoft/e-PCR-2.3.12/' >> ~/.bashrc
$ source ~/.bashrc
$ wget https://sourceforge.net/projects/primer3/files/primer3/2.4.0/primer3-2.4.0.tar.gz -P ~/software/
$ tar zxf ~/software/primer3-2.4.0.tar.gz -C /opt/biosoft/
$ cd /opt/biosoft/primer3-2.4.0/src/
$ make all
$ echo 'PATH=$PATH:/opt/biosoft/primer3-2.4.0/src/' >> ~/.bashrc
$ source ~/.bashrc

2. 使用ePCR进行引物验证

首先,使用famap命令和fahash命令分两步将基因组序列转换为哈希数据库。

$ famap -t N -b genome.famap genome.fasta
程序将FASTA格式的序列转换为famap数据库文件。

常用参数:
-t <string>
设置碱基类型。可以设置4种值:n,允许含有小写碱基atcgn,其它字符转换为n或N;nx,允许含有小写碱基和兼并碱基字符,其它字符转换为n或N;N,仅允许大写碱基,atcgn自动转换为大写,其它字符转换为N;NX,允许大写碱基和兼并碱基字符,其它字符转换为N。 -b <string>
设置输出的famap数据库文件路径。

$ fahash -b genome.hash -w 12 -f 3 genome.famap
程序进一步将famap文件转换为hash数据库文件。

常用参数:
-b <string>
输出hash数据库文件。
-w <int>
设置wordsize长度。
-f <int>
设置wordcnt长度。

然后,使用re-PCR将引物和数据库进行比对,寻找引物比对结果。

分别对多个引物进行比对,得到各个引物的匹配结果:
$ re-PCR -p genome.hash -n 1 -g 1 ACTATTGATGATGA AGGTAGATGTTTTT …

输入一对引物,并设置产物长度期望值,得到一对引物的匹配结果:
$ re-PCR -s genome.hash -n 1 -g 1 ACTATTGATGATGA AGGTAGATGTTTTT 50-1000
常用参数:
-p
输入hash数据库,在命令行中直接输入引物序列,将引物和数据库进行比对。
-s
输入hash数据库,在命令行中必须输入一对引物和产物长度期望范围,得到一对引物的匹配结果。
-n
设置允许的错配碱基数。
-g
设置允许的gap数。

3. Primer3软件的使用

Primer3是命令行形式的引物设计软件,能很好地用于引物的批量设计。 其主程序是primer3_core。 该命令的输入是Boulder-IO格式,适合于软件读入数据;输出文件默认下是适合人类阅读的格式,也可以是Boulder-IO格式,有助于下一步引物结果的批量操作。 Boulder-IO格式以文本形式记录着引物设计信息,且每个引物信息的结尾使用“等于换行符”分隔。每个记录由多个标签和对应的值构成,用于指定输入信息或输出结果。例如:

SEQUENCE_ID=example
SEQUENCE_TEMPLATE=GTAGTCAGTAGACNATGACNACTGACGATGCAGACNACACACACACACACAGCACACAGGTATTAGTGGGCCATTCGATCCCGACCCAAATCGATAGCTACGATGACG
SEQUENCE_TARGET=37,21
PRIMER_TASK=generic
PRIMER_PICK_LEFT_PRIMER=1
PRIMER_PICK_INTERNAL_OLIGO=1
PRIMER_PICK_RIGHT_PRIMER=1
PRIMER_OPT_SIZE=18
PRIMER_MIN_SIZE=15
PRIMER_MAX_SIZE=21
PRIMER_MAX_NS_ACCEPTED=1
PRIMER_PRODUCT_SIZE_RANGE=75-100
P3_FILE_FLAG=1
SEQUENCE_INTERNAL_EXCLUDED_REGION=37,21
PRIMER_EXPLAIN_FLAG=1

Primer3使用示例和参数:

$ primer3_core -p3_settings_file p3_settings_file -strict_tags -format_output input_file result.p3.out
程序的输入文件要求是Boulder-IO格式,如果没有输入文件,则会从标准输入读取数据。

常用参数:
-p3_settings_file
用于输入primer3的配置文件。这是因为primer3可设置的参数太多了,将大部分参数放入到该配置文件,有利于参数的输入。primer3的默认参数不好,特别是默认参数下没有开启热力学计算。推荐使用配置文件来根据自己的需求来设定相关参数。此外,输入文件中的参数设置能取代此文件中的设定值。
此文件格式:第1行固定为"Primer3 File - http://primer3.sourceforge.net";第2行固定为"P3_FILE_TYPE=settings";第3行是个空行;从第4行开始则是标准的Boulder-IO格式内容。
-format_output
让primer3_core产生人类易读的结果,否则产生机器易读的结果(Boulder-IO格式结果)。
-strict_tags
要求输入文件中的标签要全部正确。设置该参数后,如果有标签不能被程序识别,则报错并停止执行。不设置此参数,则软件忽略不识别的参数。
-p3_settings_file=file_path
指定 primer_core 的配置文件,该配置文件的设定会取代默认设置。当然,
-echo_settings_file
打印出p3_settings_file中的设置信息。如果没有指定设置文件,或含有-format_output,则该参数失效。
-output=file_path
指定输出文件路径,如果不指定,则输出到标准输出。
-error=file_path
指定错误信息输出路径,如果不指定,则输出到stderr中。

Primer3使用的难点是根据自身需求准备p3_settings_file文件。我的一个示例如下(使用时需要去掉#注释部分和空行,且必须第三行留空行):

Primer3 File - http://primer3.sourceforge.net
P3_FILE_TYPE=settings

P3_FILE_ID=P3 Settings from Lianfu Chen
PRIMER_FIRST_BASE_INDEX=1
PRIMER_TASK=generic
PRIMER_NUM_RETURN=5
PRIMER_PICK_LEFT_PRIMER=1
PRIMER_PICK_INTERNAL_OLIGO=0
PRIMER_PICK_RIGHT_PRIMER=1
PRIMER_PICK_ANYWAY=1
PRIMER_THERMODYNAMIC_PARAMETERS_PATH=/opt/biosoft/primer3-2.4.0/src/primer3_config/

### 引物 TM 值设定: ###
PRIMER_TM_FORMULA=1                 # TM 的计算方法, 1 表示使用 the SantaLucia parameters (Proc Natl Acad Sci 95:1460-65)
PRIMER_MIN_TM=55.0  
PRIMER_OPT_TM=60.0
PRIMER_MAX_TM=65.0
PRIMER_PAIR_MAX_DIFF_TM=5.0         # 两个引物之间的 TM 值最多相差 5 摄氏度
PRIMER_WT_TM_LT=0
PRIMER_WT_TM_GT=0
PRIMER_PAIR_WT_DIFF_TM=0.0

### 引物长度设定: ###
PRIMER_MIN_SIZE=18
PRIMER_OPT_SIZE=20
PRIMER_MAX_SIZE=22
PRIMER_WT_SIZE_LT=0
PRIMER_WT_SIZE_GT=0

### 引物 GC 含量设定:###
PRIMER_MIN_GC=30.0
PRIMER_MAX_GC=70.0
PRIMER_WT_GC_PERCENT_LT=0.0
PRIMER_WT_GC_PERCENT_GT=0.0

### 引物的热力学计算: ###
# 开启热力学计算,开启后,根据热力学的值 TH 值来计算罚分。 TH 的罚分方法为:罚分系数 * (1 / (引物TM - 4 - TH值))。
# 该方法好处是,TH 值越大,罚分力度越重。
PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT=1

# 引物自身进行反向互补,罚分系数计算为 9 / ( 1/(60-4-45) - 1/(60-4-0) ) = 123.2
# 这样计算罚分系数的原则是,若 TM 为最佳 60 摄氏度的时候,所允许的最大罚分值减去最小罚分值为 9,和 3' 端碱基的稳定性的罚分额度一致。
PRIMER_MAX_SELF_ANY=8.00
PRIMER_WT_SELF_ANY=0.0
PRIMER_MAX_SELF_ANY_TH=45.00
PRIMER_WT_SELF_ANY_TH=123.2

# 引物自身进行 3' 端反向互补形成引物二聚体,罚分系数计算为 9 / ( 1/(60-4-35) - 1/(60-4-0) ) = 302.4
PRIMER_MAX_SELF_END=3.00
PRIMER_WT_SELF_END=0.0
PRIMER_MAX_SELF_END_TH=35.00
PRIMER_WT_SELF_END_TH=302.4

# left primer 和 right primer 序列的反向互补
PRIMER_PAIR_MAX_COMPL_ANY=8.00
PRIMER_PAIR_WT_COMPL_ANY=0.0
PRIMER_PAIR_MAX_COMPL_ANY_TH=45.00
PRIMER_PAIR_WT_COMPL_ANY_TH=123.2

# left primer 和 right primer 进行 3' 端反向互补形成引物二聚体
PRIMER_PAIR_MAX_COMPL_END=3.00
PRIMER_PAIR_WT_COMPL_END=0.0
PRIMER_PAIR_MAX_COMPL_END_TH=35.00
PRIMER_PAIR_WT_COMPL_END_TH=302.4

# 发夹结构,罚分系数计算为 9 / ( 1/(60-4-24) - 1/(60-4-0) ) = 672
PRIMER_MAX_HAIRPIN_TH=24.00
PRIMER_WT_HAIRPIN_TH=672

# 3' 端碱基的稳定性
PRIMER_MAX_END_STABILITY=9.0
PRIMER_WT_END_STABILITY=1

### 碱基序列设定: ###
PRIMER_LOWERCASE_MASKING=0              # 模板序列中包含小写字符不影响引物设计
PRIMER_MAX_POLY_X=4                     # 引物序列中不能包含单核苷酸连续长度超过 4 bp
PRIMER_MAX_NS_ACCEPTED=0                # 引物中允许的 N 的数目
PRIMER_WT_NUM_NS=0.0                    # 每个 N 的罚分
PRIMER_MAX_END_GC=5                     # 引物中 3' 端 5bp 碱基中允许的最大 Gs 或 Cs 的数目
PRIMER_GC_CLAMP=0                       # 引物中 3' 端碱基中不能出现连续的 Gs 和 Cs 序列
PRIMER_LIBERAL_BASE=1                   # 是否允许有诸如 N A R Y 等类型的碱基。必须在设定PRIMER_MAX_NS_ACCEPTED 不为 0 后方有效。
PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=0  # 如果设置为 1,则 C 能与 S 完美匹配,任意碱基能和 N 完美匹配。

### 碱基质量设定: ###
PRIMER_MIN_QUALITY=0                    # primer 序列允许最小的碱基质量
PRIMER_MIN_END_QUALITY=0
PRIMER_QUALITY_RANGE_MIN=0
PRIMER_QUALITY_RANGE_MAX=100
PRIMER_WT_SEQ_QUAL=0.0
PRIMER_WT_END_QUAL=0.0

## 引物位置设置: ###
PRIMER_SEQUENCING_LEAD=50               # 该参数仅在 PRIMER_TASK=pick_sequencing_primers 时有效. 表明引物的 3' 端距目标区域有 50bp。
PRIMER_SEQUENCING_SPACING=500           # 该参数仅在 PRIMER_TASK=pick_sequencing_primers 时有效. 该值决定了在同一条链上的两个引物的距离.
PRIMER_SEQUENCING_INTERVAL=250          # 该参数仅在 PRIMER_TASK=pick_sequencing_primers 时有效. 该值决定了在不同链上的两个引物的距离。
PRIMER_SEQUENCING_ACCURACY=20           # 该参数仅在 PRIMER_TASK=pick_sequencing_primers 时有效. 该值决定了引物设计的区间.
PRIMER_OUTSIDE_PENALTY=0
PRIMER_INSIDE_PENALTY=-1.0
PRIMER_WT_POS_PENALTY=0.0

### PCR 反应体系设定: ###
PRIMER_SALT_MONOVALENT=50.0                 # 单价盐离子浓度(mM)
PRIMER_SALT_CORRECTIONS=1                   # PRIMER_SALT_CORRECTIONS=1 means use the salt correction in SantaLucia et al 1998
PRIMER_SALT_DIVALENT=1.5                    # 二价镁离子浓度(mM)
PRIMER_DNTP_CONC=0.6                        # 总dNTPs浓度(mM)
PRIMER_DNA_CONC=50.0                        # DNA产物浓度(mM)

### PCR 产物的设定: ###
PRIMER_PRODUCT_MIN_TM=-1000000.0
PRIMER_PRODUCT_OPT_TM=0.0
PRIMER_PRODUCT_MAX_TM=1000000.0
PRIMER_PAIR_WT_PRODUCT_TM_LT=0.0
PRIMER_PAIR_WT_PRODUCT_TM_GT=0.0
PRIMER_PRODUCT_OPT_SIZE=0
PRIMER_PAIR_WT_PRODUCT_SIZE_LT=0.0
PRIMER_PAIR_WT_PRODUCT_SIZE_GT=0.0

## 罚分因子: ###
PRIMER_PAIR_WT_PR_PENALTY=1.0                # left primer和right primer的罚分之和。此和乘以此系数,再加其它罚分作为最终罚分。
PRIMER_PAIR_WT_IO_PENALTY=0.0                # 将 internal oligo 的罚分乘以此系数,加入到引物的最终罚分中。

### internal oligo 的设定:###
# TM 值
PRIMER_INTERNAL_MIN_TM=57.0
PRIMER_INTERNAL_OPT_TM=60.0
PRIMER_INTERNAL_MAX_TM=63.0
PRIMER_INTERNAL_WT_TM_LT=1.0
PRIMER_INTERNAL_WT_TM_GT=1.0

# 长度
PRIMER_INTERNAL_MIN_SIZE=18
PRIMER_INTERNAL_OPT_SIZE=20
PRIMER_INTERNAL_MAX_SIZE=27
PRIMER_INTERNAL_WT_SIZE_LT=1.0
PRIMER_INTERNAL_WT_SIZE_GT=1.0

# GC 含量
PRIMER_INTERNAL_MIN_GC=20.0
PRIMER_INTERNAL_MAX_GC=80.0
PRIMER_INTERNAL_OPT_GC_PERCENT=50.0
PRIMER_INTERNAL_WT_GC_PERCENT_LT=0.0
PRIMER_INTERNAL_WT_GC_PERCENT_GT=0.0

# 热力学
PRIMER_INTERNAL_MAX_SELF_ANY=12.00
PRIMER_INTERNAL_WT_SELF_ANY=0.0
PRIMER_INTERNAL_MAX_SELF_END=12.00
PRIMER_INTERNAL_WT_SELF_END=0.0

# 碱基序列
PRIMER_INTERNAL_MAX_POLY_X=5
PRIMER_INTERNAL_MAX_NS_ACCEPTED=0

# 碱基质量
PRIMER_INTERNAL_MIN_QUALITY=0
PRIMER_INTERNAL_WT_END_QUAL=0.0
PRIMER_INTERNAL_WT_SEQ_QUAL=0.0

# 非引物数据库
#PRIMER_INTERNAL_MAX_LIBRARY_MISHYB=12.00
#PRIMER_INTERNAL_WT_LIBRARY_MISHYB=0.0

# PCR 反应体系
PRIMER_INTERNAL_SALT_MONOVALENT=50.0
PRIMER_INTERNAL_SALT_DIVALENT=1.5
PRIMER_INTERNAL_DNA_CONC=50.0
PRIMER_INTERNAL_DNTP_CONC=0.0
=

4. 编写程序调用primer3进行引物设计再调用e-PCR软件进行特异性验证

编写程序primer3_with_ePCR_validation.pl,输入模板序列的FASTA文件,即可对所有的模板序列批量化进行引物设计。若同时输入全基因组的序列,进一步可以对设计出的引物进行特异性筛选。

#!/usr/bin/perl
use strict;
use Getopt::Long;

my $usage = <<USAGE;
Usage:
    $0 [options] seq.fasta > primer3.out

    程序对seq.fasta文件中的序列调用primer3进行引物批量化设计。并将结果输出到标准输出。

    --min_product_length <INT>  default: 80
    设置引物得到的最小产物长度。

    --max_product_length <INT>  default: 150
    设置引物得到的最大产物长度。

    --primer-num <int>    default: 5
    设置使用primer3软件设计的引物对数量。

    --p3_setting_file <STRING>
    程序使用Primer3进行引物批量设计,该参数设置所使用的Primer3配置文件路径。该参数是必须的,以利于primer3设置正确有效的引物。

    --CPU <int>    default: 1
    设置并行化运行primer3的任务数。程序调用ParaFly命令进行并行化运算,需要能直接在terminal中直接运行ParaFly命令。

    --db <string>
    若使用该参数输入FASTA格式的数据库序列,程序能额外对primer3得到的引物进行e-PCR验证。

    --max-mismatch <int>    default: 1
    --max-gap <int>    default: 1
    设置e-PCR过程中允许引物和数据库序列最大的错配和gap数量。设置更高能得到更好的特异性。

    --max-hit <int>    default: 1
    设置允许e-PCR对数据库搜索得到的最大结果数量。若模板序列存在数据库中,推荐设置为1,若模板序列不存在数据库中,推荐设置为0。

    --no-primer-seq <string>
    若设置该参数的值,则生成相应的文件,输出没有引物结果的序列。

    --tmp-dir <string>    default: primer3_with_ePCR_validation.tmp
    设置临时文件夹,程序的中间文件放入该文件夹中。

USAGE
if (@ARGV==0){die $usage}

...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据