2021年12月16日木曜日

環境 DNA メタバーコーディングとユニバーサルプライマー

20211216_Blogger0017

環境 DNA メタバーコーディングでは自分たちが興味ある特定の分類群に属する生物の DNA をまとめて増幅するための 「ユニバーサルプライマー」 が使用されます。調査・研究の目的に合ったユニバーサルプライマーを選ぶことは環境 DNA メタバーコーディングにおいて最も重要なステップの一つです。

この 「適したユニバーサルプライマーを選ぶ」 という作業、簡単なようでその難易度は研究目的や解析対象の分類群によりかなりばらつきがあります。今回はユニバーサルプライマーに関連して、以下の項目の記事を書いてみようと思います。

1. ユニバーサルプライマーを選ぶ際に考慮する条件
2. 環境 DNA メタバーコーディングで使用されるユニバーサルプライマー ・ 生物分類群 ・ シーケンサー
3. 自分の研究対象の分類群/種はユニバーサルプライマーで増えるのか ?

ユニバーサルプライマーを選ぶ際に考慮する条件

ユニバーサルプライマーの選択の際に考慮すべき条件は概ね以下のとおりです。

  1. 生物分類群 : 自分たちが興味ある分類群の DNA を増幅できること。これは必須の条件です。また、自分たちが興味ない分類群の DNA を増幅しないこと/増幅しすぎないこと、も重要です。
  2. (種) 同定の解像度 : 解読された DNA 配列を用いて 「どの程度の階層 (種・属・科など) まで生物の分類群を同定できるか」 も重要な指標です。
  3. 増幅産物の長さ : 環境 DNA メタバーコーディングでは高スループットなシーケンサーを用いて配列解読を行いますが、シーケンサー毎に解読可能な配列長が異なります。したがって、どのシーケンサーで配列を解読予定か、予め考慮しなければなりません。

ユニバーサルプライマーの開発論文では、コンピュータ上での計算や実際にサンプルを用いた実験により、上記に関する様々な指標の評価が行われています。なお、本記事ではユニバーサルプライマーの開発方法そのものについては解説しません。

環境 DNA メタバーコーディングで使用されるユニバーサルプライマー ・ 生物分類群 ・ シーケンサー

環境 DNA メタバーコーディングで使用可能なユニバーサルプライマー・対応する生物分類群とシーケンサーをいくつか列挙します。当然 (?) 列挙しきることは不可能なので下の方で参考文献・ウェブサイトも紹介します (それでも足りないですが)。

生物分類群とユニバーサルプライマー

その他、哺乳類 (Ushio et al. 2017)、両生類 (Sakata et al. 2021)、水生昆虫 (Leese et al. 2020)、エビ・カニ類 (Komai et al. 2019) などについてのユニバーサルプライマーも報告されています。真核生物の 18S rRNA 遺伝子領域については PR2 Primer Database で多くの情報が手に入ります。また、Environmental DNA: For Biodiversity Research and Monitoring の巻末にあるユニバーサルプライマーリストも非常に便利です。Earch Microbiome Project のウェブサイト東北大の田邉さんのウェブサイト にも記載があります。

対応するシーケンサー

よく使われるプライマーとシーケンサーの組み合わせは以下のとおりです。一般的に解析する DNA が短い方がシーケンサーの選択肢が多く、シーケンス試薬も安い傾向があります。一方で、短い DNA は解析する領域が同じ場合は、種同定の分解能 (科まで同定可能か、種まで同定可能か、など) は低い傾向にあります。

  • 150 bp x 2 Paired End (iSeq 100, MiSeq, HiSeq, NovaSeq など)

    • MiFish-U-F/R
    • 1391F - EukBr
  • 250 bp x 2 Paired End (MiSeq, NovaSeq など)

    • mlCOIintF - HCO2198
    • 515F - 806R
    • 515F-Y - 926R
  • 300 bp x 2 Paired End (MiSeq のみ)

    • ITS1_F_KYO1 - ITS2_KYO2

また、一般的な組み合わせは以上のとおりですが、515F - 806R や ITS1_F_KYO1 - ITS2_KYO2 を iSeq 100 のシングルエンドで 300 bp 程度連続で読んだりすることもできます。このあたりは、使える予算・かけられる時間・求める種同定の分解能などを考慮して決めることになります。

また、近年は Oxford Nanopore MinION などロングリードシーケンサーの登場により環境 DNA でもより長い領域を解析するような研究も報告されつつあります。

ユニバーサルプライマーで自分の興味ある種の DNA は増えるのか?

さて、調査対象の生物分類群全般を増幅してくれるユニバーサルプライマーは非常に頼もしいですが、当然ながら対象分類群に含まれる生物種の DNA を 100% 増幅してくれるわけではありません。例えば、魚類全般を対象とした MiFish-U-F/R を用いても DNA が増えない or 増えにくい魚種が存在します。 例えば ヤツメウナギの DNA は増えないそうですし、エイ・サメの仲間の DNA も増えにくいようです (なので MiFish-E-F/R がデザインされている; Miya et al. 2015)。

このような状況下で、例えば次のような疑問がよく生まれます:
昆虫を mlCOIintF - HCO2198 のプライマーを用いて環境サンプル中の DNA を網羅的に解析予定だが、このプライマーは自分が特に興味あるハチの仲間の DNA も (もし含まれていたら) 増幅してくれるのだろうか?

最近、特にこういった質問をよくされます。そこで、いくつか典型的なやり方をまとめてみました。 (調べましたが、以下の 3 つ以外の方法はよく分かりませんでした。もし他にいい方法があったら教えて下さい)

1. テキストファイルで検索 (眺める)

最もシンプルなのはこの方法です。興味ある生物の DNA 配列 (FASTA ファイル) がすでにある場合は、そのファイルをテキストエディタで開き、プライマーの配列を検索する、ということが可能です。

例えば、以下のようにクサフグのミトコンドリア DNA の配列が手元にあるとします。

クサフグのミトコンドリア DNA の配列

このテキストファイルに MiFish-U-F の配列 (GTCGGTAAAACTCGTGCCAGC) で検索をかけます。

MiFish-U-F の配列で検索

MiFish-U-F の配列が 1 箇所だけにヒットしました。どうやら一致する領域があるようです。さらに、図は出していませんが、MiFish-U-R の配列の逆相補配列 (“CAAACTGGGATTAGATACCCCACTATG”) に一致する場所も見つかります。したがって、クサフグの DNA は MiFish-U-F/R のプライマーセットで増幅できそう、ということになります。

似たようなことは FASTA ファイルの表示に特化した他のソフトウェアでも可能でしょう。

この方法は、特別な技術やソフトウェアが不要で直感的にわかりやすいのでお手軽かもしれません。ただし、配列が手元にないと調べられませんし、調べたい配列数やプライマー数が増えると大変です。また、上記 515F-Y - 926R などに見られるような縮重塩基を含むようなプライマーと一致する領域を検索で探すのも大変です。さらに、プライマー - 鋳型 DNA のミスマッチを許容しつつ探す、ということはできません。

2. NCBI + seqkit amplicon

2 番目はもう少し網羅的な方法で、少し配列解析っぽくなります。

配列データをダウンロード

まず、NCBI (https://www.ncbi.nlm.nih.gov/nuccore) などの公共のデータベースで興味ある種や分類群の DNA 配列を検索します。「1」 と同じく Takifugu niphobles (もしくは Takifugu alboplumbeus?) を検索します。ミトコンドリア DNA の配列が欲しいので、「Takifugu niphobles AND mitochondrion」 で検索してみます。

NCBI Nucleotide で検索

3 件ヒットしました。これらの配列をダウンロードしたい場合は、チェックボックスにチェックを入れます。

図4. 検索結果

その後、ページの上の方にある 「Send to」 のボタンをクリックして、「Complete Record」 → 「File」 → 「FASTA」 → 「Create File」 を選択すると FASTA ファイルとして DNA 配列がダウンロードできます。

配列のダウンロード

seqkit を使ってプライマーと一致する領域を抽出

さて、ダウンロードした配列ファイルは seqkit というツールで調べます。

seqkit のウェブサイト

配列ファイルを操作する様々な機能を備えており、かつ軽くて高速、使い勝手もいいです。非常におすすめのツールです。インストール方法はこちら

macOS の場合は上記のウェブサイトで seqkit_darwin_amd64.tar.gz を選択してダウンロードします。その後、ターミナルで以下をタイプします。

  1. tar -zxvf seqkit_darwin_amd64.tar.gz
  2. sudo cp seqkit /usr/local/bin/
  3. seqkit version とタイプしてバージョンが表示されればインストールされています。

Windows の場合は上記のウェブサイトで seqkit_windows_amd64.exe.tar.gz を選択します。その後、コマンドプロンプトで以下をタイプします。

  1. tar -zxvf seqkit_windows_amd64.exe.tar.gz
  2. seqkit.exeC:\WINDOWS\system32 にコピー。
  3. seqkit version とタイプしてバージョンが表示されればインストールされています。

インストールができたら、NCBI からダウンロードした配列 (sequence.fasta というファイル) があるフォルダに移動して、ターミナルかコマンドプロンプトで以下をタイプして、seqkit amplicon の機能を使用します。

seqkit amplicon -F GTCGGTAAAACTCGTGCCAGC -R CATAGTGGGGTATCTAATCCCAGTTTG -w 0 -m 0 sequence.fasta

-F にフォーワードプライマー配列、-R にリバースプライマー配列を指定します (ここでは MiFish-U-F/R)。-w 0 は出力する DNA 配列の改行なしのオプション、-m 0 はミスマッチ数 0 の仮定のもとでの抽出を行うオプションです。

すると次のように画面上にプライマーと一致する領域およびその間の領域、つまりは PCR で増幅されうる領域が切り出されます。

seqkit amplicon でプライマーと一致する領域を抽出

もしくは、下記のように入力することで出力結果をファイルに保存できます。

seqkit amplicon -F GTCGGTAAAACTCGTGCCAGC -R CATAGTGGGGTATCTAATCCCAGTTTG -w 0 -m 0 sequence.fasta > amplified.fasta

この方法を使えば手持ちの配列がなくても、興味ある生物の DNA が特定のユニバーサルプライマーで増えそうかどうかを調べることができます。また、seqkit amplicon-m オプションを指定すればミスマッチの数を指定して調べることもできます。さらに、プライマー配列に縮重塩基が含まれていても大丈夫です。

3. カスタムスクリプトを作る

多少のコーディング作業がありますが、「2」 のやり方でほぼ完璧なように思えます。しかし、いくつもの生物分類群やプライマーを調べる必要がある場合は、上記の検索作業を何度も繰り返すことになります。検索して、ファイルをダウンロードして、ターミナルを開いて seqkit amplicon を実行、を繰り返すのはなかなか面倒なものです。

基本的には 「配列のダウンロード」 と 「seqkit amplicon」 が使えれば全て解決するはずなので、全ての作業を R で記述し、一つの関数にすることにしました。少し探したのですが、幸い rentrez という良さそうなパッケージがあったのでそれを利用することにしました。

R から配列のダウンロード

まず、検索ワードを指定して配列の ID などを収集します。

# rentrez のインストールと読み込み
devtools::install_github("ropensci/rentrez")
library("rentrez"); packageVersion("rentrez") # v1.2.3

# 検索ワードを指定 (Trachurus かつ mitochondrion かつ 配列長 1000~20000)
SEARCH_QUERY <- "Trachurus AND mitochondrion AND 1000:20000[SLEN]"

# 検索
rentrez_search <- entrez_search(db = "nucleotide", term = SEARCH_QUERY)

配列をダウンロードして、一度書き出して保存します。

# 配列をダウンロード
entrez_fasta <- entrez_fetch(db = "nucleotide", id = rentrez_search$ids, rettype="fasta", parsed = FALSE)

# FASTA ファイルとして書き出し
write.table(entrez_fasta, file = "entrez_fasta.fa", quote = FALSE, col.names = FALSE, row.names = FALSE)

R の system 関数を使って seqkit amplicon を R から実行して、プライマー (ここでは MiFish-U-F/R) と一致する領域を持つ配列を抽出します。

system("seqkit amplicon -F GTCGGTAAAACTCGTGCCAGC -R CATAGTGGGGTATCTAATCCCAGTTTG -w 0 -m 1 entrez_fasta.fa > amplified.fa")

これで amplified.fa という FASTA ファイルに MiFish-U-F/R で増幅されうる領域が書き出されます。以上の操作を関数としてまとめれば、検索ワードを変更するだけでどんどん 「自分の研究対象種/分類群はユニバーサルプライマーで増えるのか ?」 を調べることができます。

おまけ!

実は seqkit amplicon は 「縮重塩基を含むプライマー + -m オプションを使ったミスマッチ数の同時指定」 ができません (これ、昔はまって seqkit の開発者に質問したことがあります; 正確に言うと seqkit 内で解決できる問題ですが、手作業でやると少々ややこしいです)。-F もしくは -R に縮重塩基を含むプライマーを指定すると -m オプションは無視されます。

そのへんの問題を自作の関数で解決しつつ、上記のカスタムスクリプトを関数としてまとめてみました。ついでに以前から興味があった R package の作成に挑戦するのにいい機会 (?) ということで、単純な関数ではありますがパッケージ化を試みました。成果物が以下です。

もし 「自分の研究対象種/分類群はユニバーサルプライマーで増えるのか ?」 を調べる必要があったら使ってあげてください。

rDoAMP (DOes my primer set AMPlify my targets?)
https://github.com/ong8181/rDoAMP

詳しくは Github のページを読んでもらうといいのですが、devtools::install_github("ong8181/rDoAMP") でインストール可能です。seqkit が正しくインストールされていれば macOS と Windows で動作します。Linux でも動くはずですが未確認です。

縮重塩基を含むプライマーの問題は expand_degenerate_primer() という関数を用意して、あり得るプライマーの組み合わせを tsv ファイルとして書き出し、それを用いることで解決しています。例えば以下のようなコマンドを使っています。-p プライマーリスト のオプションと -m のオプションは同時使用可能です。

seqkit amplicon -p primer_list.tsv -m 3 download.fa | seqkit rmdup -w 0

また、entrez_search はヒットした ID を上から順番に取ってくるので、似通った配列の ID が連続して取得されることが多いです。そこで、デフォルトでは予めダウンロード予定の配列数の 10 倍の ID を取得しておいて、その中からランダムにダウンロードする配列を選ぶ、という風にしています。こうすることで取得する配列の多様性が挙がります。

(いろいろ小細工しましたが、ほぼほぼ seqkit amplicon です。seqkit すごいです)

R package の作成は以下のウェブサイトを参考にさせていただきました (どうもありがとうございます)。楽しかったです (もっと勉強します)。

参考文献・情報

Written with StackEdit.

3 件のコメント:

  1. はじめまして。いつも大変参考になる記事ありがとうございます。
    rDoAMPを使っているのですが、配列名に空白が入っている場合、うまく動かないように思います。
    具体的には、属名が同じ配列を複数入れて実行した場合、それらのうち複数種が増幅可能な場合でも、それらのうち1つしかampliconとして出力されません。
    例 : 配列名
    「Dendrogaster asterinae」
    「Dendrogaster tobasuii」
    もしお時間があるようなら修正してもらえるとありがたいです。

    返信削除
    返信
    1. コメントありがとうございます。ちょっと検討したいのですが、もし可能であれば配列ファイルや、解析コードなど(Rパッケージバージョンであれば)を ong8181 あっと gmail.com まで送っていただけないでしょうか?

      (こちら、いつも見ていないのでお返事遅れてすいません)

      削除
  2. このコメントは投稿者によって削除されました。

    返信削除

Empirical Dynamic Modeling with rEDM: (2) Near-future forecasting (Simplex projection)

20231015_Blogger0021 *This is an English version of my previous post (first translated by ChatGPT, checked and edited ...