macでインフォマティクス

macでインフォマティクス

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

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

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

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

2020 3/9 インストール手順修正

2020 3/18 誤字修正

2021 4/18 インストール手順修正

 

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

 

インストール

Github

#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でゲノムの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=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