はじめに
腸内細菌の研究において、シークエンスで読まれた微生物のDNA配列がどの細菌に由来するのかを分類し、菌叢構成を推定する手法に、Taxonomy 推定
があります。この Taxonomy 推定の精度は使用する分類器とデータベースの種類に依存します。
16S アンプリコンシークエンスの解析において、16S の V3-V4 を読むショートリードシークエンスでは、QIIME2
などのパイプラインがあります。一方でショートリードシークエンスはやや実施するコストが高いため、Nanopore などの比較的安価なロングリードシークエンスより塩基配列データを取得し、Taxonomy 推定を行いたいです。得られたロングリードデータを用いた Taxonomy 推定については、Kraken2
(https://home.hiroshima-u.ac.jp/~tigawa/?p=2217) や Emu
といった分類手法があります。が、どの分類手法が自身の目的とする細菌叢を最も精度よく分類できるのかについて調べるためには、自身で仮想的な菌叢データを作ってみて分類の性能を確かめる必要があります。
そのため、自身で仮想的な菌叢構成データを作成するため、biopython
を用いて微生物の16S 配列を NCBI のデータベースからダウンロードし、適当な割合で混合します。今回は安価に手に入る菌叢カクテルである NBRCヒト常在菌菌体カクテル (Cell-Mock-003)の菌叢構成を参考に、データをダウンロードし、.fasta
の形式で保存します。
実装
# import library
from Bio import Entrez, SeqIO
# set e-mail
Entrez.email = "your_email_address"
# NBRC_coctail 16s seq
id_16s = ["NR_028915.1", "NR_044691.2", "NR_044054.1", "NR_028604.1", "NR_044715.2", "NR_029356.1", "NR_113575", "NR_036800.1", "NR_042817.1", "NR_040866.1", "NR_114042.1", "NR_041342.1", "NR_113641.1", "NR_113028.1", "NR_113957.1", "NR_112629.1", "NR_113651.1"]
# number of downloads for each strain
rep_700= [22,29,73,29,66,36,36,22,36,51,22,58,36,51,51,44,36]
ids = id_16s
with open(f"NBRC_16s_mock_read_700.fasta", "w") as file:
for i, seq_id in enumerate(ids):
# get the genome info
handle = Entrez.efetch(db="nucleotide", id=seq_id, rettype="fasta", retmode="text")
data = handle.read()
handle.close()
for i in range(rep_700[i]):
file.write(data)
おわりに
分類器の精度は PCR の増幅バイアスやデータの品質にも影響されるため、実際に菌叢カクテルから DNA を抽出し、シークエンスを行い実験データを得ることで、実データに対する分類器の精度を評価する必要があります。どなたかのお役に立てば幸いです。