macでインフォマティクス

macでインフォマティクス

NGS関連のインフォマティクス情報についてまとめています。

リピート領域をマスクしてプライマー設計を支援するPrimer3_maskerと、プライマーを作成するprimer3

#2018 9/20 brew によるインストールとprimer3のコマンド追加

2018 10/22 わかりにくい部分を修正

 

Primer3_maskerは、ゲノムに対してk-mer頻度のデータベースを構築し、プライマーが高頻度に結合する配列をマスクすることで、特異的なプライマー設計が行えるよう支援するツール。

 

インストール

Github

#primer3を導入すると一緒に入る。
brew install primer3

#またはgithubからクローンしてビルドする。
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でゲノムのfinishingプライマーを設計する。ユニークなプライマーを作成したいので、リピートマスクしてからprimer3でプライマーを設計する。contigの末端を1000bpほど抽出してくる。試してないが、BED形式で領域を書き出して、seqkitやseqtkに任せれば簡単に抽出できるはず。

 

 

まず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=60GC 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