#2018 9/20 brew によるインストールとprimer3のコマンド追加、10/22 わかりにくい部分を修正
2020 3/9 インストール手順修正、3/18 誤字修正
2021 4/18 インストール手順修正
Primer3_maskerは、ゲノムに対してk-mer頻度のデータベースを構築し、プライマーが高頻度に結合する配列をマスクすることで、特異的なプライマー設計が行えるよう支援するツール。
インストール
#biocondaチャネルでprimer3を導入するとprimer3_maskerも一緒に入る。
conda install -c bioconda primer3
#homebrew
brew install primer3
#conda
mamba install -c bioconda primer3 -y
#from source
git clone https://github.com/bioinfo-ut/primer3_masker
cd primer3_masker/src/
make primer3_masker
#k-mer_listのダウンロード ヒトゲノム向け
cd ../kmer_lists/
wget http://primer3.ut.ee/lists/homo_sapiens_11.list #11-merのリスト
wget http://primer3.ut.ee/lists/homo_sapiens_16.list #16-merのリスト
> ./primer3_masker
$ primer3_masker
Usage: ./primer3_masker [OPTIONS] <INPUTFILE>
Options:
-h, --help - print this usage screen and exit
-p, --probability_cutoff - masking cutoff [0, 1] (default: >=0.1)
-lh, --kmer_lists_path - path to the kmer list files (default: ../kmer_lists/)
-lp, --list_prefix - prefix of the k-mer lists to use with default model (default: homo_sapiens)
-a, --absolute_value_cutoff - masking cutoff based on k-mer count; requires a single list name, defined with -l
-l, --list - define a single k-mer list for masking with absolute cutoff option -a
-m5, --mask_5p - nucleotides to mask in 5' direction (default: 1)
-m3, --mask_3p - nucleotides to mask in 3' direction (default: 0)
-c, --masking_char - character used for masking (default: N)
-s, --soft_mask - use soft masking (default: false)
-d, --masking_direction - a strand to mask (fwd, rev, both) (default: both)
パスの通ったディレクトリに移動しておく。
テストラン
ここではtemplate.fasta(ヒトゲノムの配列)のリピートをtest_data/の定義に従いマスクする。中身を確認。
$ cat ../test_data/template.fasta |fold -w 80
>template
TTGTCAAGGTTAGATGCTGTTTCTACAGGTCACCAACTGCGGAAACAATGACATGGTCTGAAAATATGGACACGCTTTTA
GCCAACCAAGGTAAGATTTAACTAATAATAGGCTTAAAATACAATAATTAAATATAAATTATTAAATTCTGAAAGTTGGT
AACATATCATAAAGTATGAGTTTAATCAATGAAGTATAAAATTATTAATAATCATAAATTCATAAAAATCCAAAATCTAA
ATAGAATCAGGTTGGGGCTAAAATAAGTTTATAGGTTAACTCTGTACATTAAAACAAAAGGGAAATTCAATCTAGCAAGT
GAAATTTTCCATTGCCTTAGACTCACTTTAACATTTTTTATTATTTTTTATTTTAATACAGAGTCTCACTCTCTCTCTCT
ATCAGGCTGGAGTGCAGTGGCATGATCTCAGCTCACTGCAAACTCCACCTTCTGGGTTCAAGCAATTTTCCTGACTCAGC
CTCCTGAGTAGCTGAGATTACAGACATGCACCACCATACCCGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACC
ATGTTGGCCAGGCTGGTATCAAACTCCTGACCTCAGGTGATCCACCCACCTCAGCATCCCAAAGTGCTGGGATTCAATTC
AGGTGTGAGCCACTGTGCCAGCCCTAGGCTCGCTGTGTGTGTGTGTGTGTGTATACACACATACACATACATATATATAT
GTATTTTTTTTTTTTTTGAGACGGAGTCTTGCTTTACCACCCAGACTGGAGTGTAGAGTGTAGTGGTGTGATCTCTGCTC
ACTGCAACCTCTGCCTCCCGGGTTCAAGGGATTCTCCTGCCTCAGCCTCCCGAGGAGCTGGGACTACGGGAGCATGCCAC
GACACCAAGCTAATATGTGTATTTTTAGTAGAGACAGGTGTTCGCCACATTAGCCAGGCTGGTCTCGAACTTCTGACCCC
AGATGATCTGCCTGCCTTGACCTCCCAAAGTGCTAGGAT
1、k-mer listをダウンロードする。
http://primer3.ut.ee/lists.htm
リストにない生き物のゲノムのマスキングを行いたい場合は、GenomeTester4を用いて自分で作成する。
例えば-c 2をつけてglistmaker(紹介)を実行。
glistmaker input.fasta -w 16 -c 2 -o output
オーサーに連絡してもリストファイルは作ってもらえるようです( リンク上)。
2、FASTA配列のマスクを実行。
primer3_masker -lh test_data/test_16.list \
-lp test test_data/template.fasta
- -lh path to the kmer list files (default: ../kmer_lists/)
- -lp define prefix of the k-mer lists to use (default: homo_sapiens)
結果 (foldに渡し、80文字折り返し出力)
>template
TTGTCAAGGTTAGATGCTGTTTCTACAGGTCACCAACTGCGGAAACAATGACATGGTCTGAAAATATGGACACGCTTTTA
GCCAACCAAGGTAAGATTTAACTAATAATAGGCTTAAAATACAATAATTAAATATAAATTATTAAATTCTGAAAGTTGGT
AACATATCATAAAGTATGAGTTTAATCAATGAAGTATAAAATTATTAATAATCATAAATTCATAAAAATCCAAAATCTAA
ATAGAATCAGGTTGGGGCTAAAATAAGTTTATAGGTTAACTCTGTACATTAAAACAAAAGGGAAATTCAATCTAGCAAGT
GAAATTTTCCATTGCCTTAGACTCACTTTAACATTTTTTATTATTTTTTATTTTAATACAGAGTCTCACTCTCTCTCTCT
ATNNNNNNNNAGTGCAGNNNNNTGNNCTCAGCTCACTGCNNACTCCACCTTCTGGGTTCAAGCAATTTTCCTGANNNNNC
CTCCTGAGTNNNNNAGATTACAGACATGCACCACCATACCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNCANN
NNGTTNGCNNNNCNNGNATCANNNNCCTGACCTCAGGTGATCCACCCACCTCAGCANNNCAAAGTGCTGGGNNNCAATTC
AGGTGTGAGCCACTGTGCCAGCCCTAGGCTCGCNNNNNNNGTGTGTGNNNNNNTACACACATACACATACATATATATAT
GTANNNNNNNNNTTNNNGNNNNGGAGTCTTGCTTTACCACCCAGACTGGAGTGTAGAGTGTAGTGGTGTGATCTCTNNNN
NCTGCAACCTCTGCCTCCCGGGTTCAAGGNNNNNNNNNNCCTCANNNNNNNNAGGAGCTGGGACTACGGGAGCATGCCAC
GACACCAAGCTAATATGNNNNNNTTTAGTAGANNNAGGTGTTCGCCACATTAGCCAGGCTGGTCTCGAACTTCTGACCCC
AGATGATCTGCCTGCCTTGACCTCCCAAAGTGCTAGGAT
k-mer頻度を指定する。例えば頻度10以上の配列はマスクする。
primer3_masker -a 10 -l test_data/test_16.list \
test_data/template.fasta |fold -w 80
- -a masking cutoff based on k-mer count; requires a single list name, defined with -l
- -l define a single k-mer list; for using with absolute cutoff option -a
>template
TTGTCAAGGTTAGATGCTGTTTCTACAGGTCACCAACTGCGGAAACAATGACATGGTCTGAAAATATGGACACGCTTTTA
GCCAACCAAGGTAAGATTTAACTAATAATAGGCTTAAAATACAATAATTAAATATAAATTATTAAATTCTGAAAGTTGGT
AACATATCATAAAGTATGAGTTTAATCAATGAAGTATAAAATTATTAATAATCATAAATTCATAAAAATCCAAAATCTAA
ATAGAATCAGGTTGGGGCTAAAATAAGTTTATAGGTTAACTCTGTACATTAAAACAAAAGGGAAATTCAATCTAGCAAGT
GAAATTTTCCATTGCCTTAGACTCACTTTAACATTTTTTATTATTTTTTATTTTAATACAGAGTCTCACTCTCTCTCTCT
ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNACTCCACCTTNTGGGTNCAAGCAATNTNCCTNANNNNNN
NNCNTGNNTNNNNNNNNTTACNNACATGCACCACCATNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNCAAAGTGCTGGGNNNCAATTN
NNNNGTGAGCCACTNNNNNAGCCCTAGGCTCGNNNNNNNNGTGTGTGNNNNNNNNCACACATACACATACATATATATAN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTACNACCCAGACTGGAGTNTAGAGTGTAGTGGTGTGNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTNNNNNNNNNNNNGAGCTGGGACTACGGGAGCATGCCAC
GACACCAAGCTAATANNNNNNNNTTTAGTANNNNNNNNTGTTCGCCACANTANNNNGGCTGGTCNCGNNNNTCTGACCCC
AGANGATCTGCCTGNNNNNANNNNCCAAANNNNNANNNN
-aが2だと、当然より多くの領域がマスクされる。
primer3_masker -a 2 -l test_data/test_16.list \
test_data/template.fasta |fold -w 80
>template
TTGTCAAGGTTAGATGCTGTTTCTACAGGTCACCAACTGCGGAAACAATGACATGGTCTGAAAATATGGACACGCTTTTA
GCCAACCAAGGTAAGATTTAACTAATAATAGGCTTAAAATACAATAATTAAATATAAATTATTAAATTCTGAAAGTTGGT
AACATATCATAAAGTATGAGTTTAATCAATGAAGTATAAAATTATTAATAATCATAAATTCATAAAAATCCAAAATCTAA
ATAGAATCAGGTTGGGGCTAAAATAAGTTTATAGGTTAACTCTGTACATTAAAACAAAAGGGAAATTCAATCTAGCAAGT
GAAATTTTCCATTGCCTTAGACTCACTTTANCANNTNNNATTATTNTTNNTNNNAATACAGAGNNTCACTCTCTCTCTNN
ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTGNNNNNNNNNNNNNTNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNANNNNCANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAANNGCTNNNNNNNNATTN
NNNNNNGAGCCACTNNNNNNNCCCTAGGCTCNNNNNNNNNNNNNNTNNNNNNNNNNNNNNNNNNNNNNNNNNNTANNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTACNNNNCAGACTGGAGTNNNNNNTGTNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCTANGGGNGCATGCCAC
GACACCAAGCTAATANNNNNNNNNTTAGTANNNNNNNNNGTTCGCCACNNNANNNNNNNNNNNNNNGNNNNNNNNNNNCN
NNNNGATCTGNNNNNNNNNNNNNNCNNNNNNNNNNNNNN
追記
primer3でユニークに増幅できるプライマーを作成する。デザインしたプライマーがユニークにアニールするようにリピートマスクしてからprimer3でプライマーを設計する。
まずprimer3を導入する。brewでprimer3を導入した場合、primer3_configファイルが入ってなくて”but path to thermodynamic parameters not specified”とのエラーが出て怒られてしまうので、手動で、/optにconfigファイルを入れる。
git clone https://github.com/primer3-org/primer3.git
sudo mv primer3/src/primer3_config /opt
primer3はconfigファイルの設定でprimerを設計する。configファイルを作成する。ヒアドキュメントでconfig作成。ゲノムフィニッシングに使うなら、アセンブリした配列の下流末端だけ抽出し、forwardのプライマーのみ作成する。"SEQUENCE_TEMPLATE="の行にはprimerを作成したい配列を記載する。あらかじめPrimer3_maskerでリピートマスクしておけば、特異的なプライマーを設計できる。
cat > test_config <<EOF
SEQUENCE_ID=example
SEQUENCE_TEMPLATE=NNNNNNNNNNNNNNNNNNNNNCATGCATGCATGCATGCATCATGCATGCATGCATGCATGCATGCATGCATNNMMMMMMATGC
PRIMER_TASK=generic
PRIMER_PICK_LEFT_PRIMER=1
PRIMER_PICK_INTERNAL_OLIGO=0
PRIMER_PICK_RIGHT_PRIMER=0
PRIMER_OPT_SIZE=22
PRIMER_MIN_SIZE=20
PRIMER_MAX_SIZE=26
PRIMER_PRODUCT_SIZE_RANGE=75-150
PRIMER_EXPLAIN_FLAG=1
PRIMER_NUM_RETURN=1
PRIMER_MAX_GC=60
PRIMER_MAX_END_GC=3
PRIMER_MIN_TM=55
PRIMER_OPT_TM=60
PRIMER_MAX_TM=63
PRIMER_MUST_MATCH_THREE_PRIME=nnnns
PRIMER_MUST_MATCH_FIVE_PRIME=wnnnn
EOF
PRIMER_MUST_MATCH_THREE_PRIME=nnnnsで5'endはTかA、PRIMER_MUST_MATCH_FIVE_PRIME=wnnnnで3'endはGかCにしています。PRIMER_MAX_GC=60によりGC maxは60%に、PRIMER_OPT_TM=60により至適Tm値は60℃に設定。SEQUENCE_TEMPLATEには、プライマーをデザインしたい配列を登録する(スクリプトを書いて放り込む作業を自動化してしまえば楽になります)。多数のパラメータがある。primer3 documentの"9. "GLOBAL" INPUT TAGS"を参照
準備が出来たらプライマーを作成する。作成したconfigファイルを指定する。
primer3_core test_config
引用
Primer3_masker: integrating masking of template sequence with primer design software
Triinu Kõressaar, Maarja Lepamets, Lauris Kaplinski, Kairi Raime, Reidar Andreson, Maido Remm
Bioinformatics, bty036 Published: 19 January 2018