2019 7/13 説明修正
2019 8/1 説明追記
2020 1/21 インストール手順修正
2020 2/4 データベースダウンロード手順修正
2020 4/17 コマンド修正
2020 4/19 binned fastaを使う手順追記
DNAシーケンシング、例えばアンプリコン、メタゲノムおよび全ゲノムシーケンシングは、微生物学および生態学から医学まで、ライフサイエンスの多くの分野において標準的な手順となっている。これらのシークエンシングプロジェクトの大部分における重要なステップは、例えば全ゲノムシークエンシング(WGS)プロジェクトにおける培養汚染を同定するため、またはメタゲノムアセンブリからの特定の連続した配列(コンティグ)を特定の分類学に結び付けるための遺伝物質のtaxonomy分類ステップである。
長年にわたり、アンプリコンシークエンシングとメタゲノムにおけるNGSリードの解析(Caporaso et al、2010; Schloss et al、2009)に特に焦点を当てて、シークエンシングデータをtaxonomyに分類するためのさまざまなアプローチが開発されている(Darling et al、2014; Huson、Auch、Qi、&Schuster、2007; Wood&Salzberg、2014)。ただし、メタゲノムアセンブラとビニングアルゴリズムの精度の向上、およびOxford NanoporeやPacBioシーケンスなどの第3世代シーケンシング(3GS)テクノロジのリード長の向上には、分類学的な分類のためのより一般的なアプローチが必要になる。
Last Common Ancestor (LCA)のtaxonomy推定は、最小共通祖先(lowest common ancestor)(Wood&Salzberg、2014)またはコンセンサス(Caporaso et al、2010)分類法としても知られており、NGSリードのtaxonomy分類に広く使用されているアプローチである。 (Wood&Salzberg、2014)は、長さkの配列を共有するゲノム、いわゆるk-merを、クエリを用いて同定することによって、NGSメタゲノムデータから微生物群集プロファイルを推定した。読み取られたクエリのtaxonomyは、同じk-merを含むすべてのゲノムのLCAとして推定される。同様に、メタゲノム解析ツールキットMEGAN(Huson et al。、2007)は、配列類似性検索ツールDIAMOND(Buchfink、Xie、&Huson、2015)に基づくLCA推定を使用して、NGSリードの分類と機能プロファイルをリンクさせている。 LCA推定の別の例は、アンプリコン配列の分類のためにリードの3つの最良のヒットを使用する、アンプリコン分析フレームワークQIIME(Caporaso et al., 2010)において実施されたBLASTベースのtaxonomy推定である。 LCAアルゴリズムは、十分に精緻化されたターゲットデータベースに依存しているが、非常に正確であることが示されており(McIntyre et al、2017)、使用する比較ツールによっては計算効率が高くなる。しかし、現在のLCA実装はNGSリードまたは短い配列に限定されており、予測して得たアミノ酸配列、ゲノムおよびメタゲノムプロジェクトからアセンブリされたコンティグ、または3GS技術によって生み出されるロングリード配列などを分類する能力がない。さらに、著者らの知る限りでは、既存のLCA実装は、事前定義されたワークフローの外側でシーケンス分類を提供しない、より大きなソフトウェアフレームワークに組み込まれている。
ここでは、塩基配列分類アノテーションツールBASTAを提示する。これは、長さやシーケンシングプラットフォームに関係なく、LCAアルゴリズムをヌクレオチドおよびアミノ酸配列に拡張する高度にカスタマイズ可能なLCA実装を提供する。 BASTAは、多くの一般的な配列類似性検索ツールと一緒に使用することができる、e.g. BLAST (Altschul, Gish, Miller, Myers, & Lipman, 1990)、Diamond (Buchfink et al., 2015)。そしてBASTAは単一のシーケンスならびにシーケンスグループおよびシーケンスビンにアノテーションを付けることができる。 BASTAはpython 2.7で書かれ、GNU General Public Licenseの下で開発されたコマンドラインツールである。すなわちオープンソースでhttps://github.com/timkahlke/BASTAで無料で入手できる。インストールを簡単にするために、BASTAはパッケージマネージャCondaを使ってインストールすることも、pythonのsetuptoolsを使ってネイティブインストールすることもできる。詳細なインストール手順とドキュメントはhttps://github.com/timkahlke/BASTA/wikiにある。
BASTAは、sequence_id - > taxon_id(ftp://ftp.ncbi.nih.gov/pub/taxonomy)の形式の対応するマッピングファイルと共に、NCBIによって公表されたゲノムのtaxonomyを利用している。ヒットしたtaxonomiesは、ヒットのアクセッション番号をそのNCBI tax IDにマッピングすることによって決定される。その後、それは7レベルのtaxonomyとしてresolveされる(論文図1)。 BASTAをインストールしたら、コアtaxonomyをダウンロードしてlevelDBデータベースにインポートする必要がある。このプロセスは完全に自動化されており、BASTAのtaxonomyコマンドに基づいて実行される。 BASTAのダウンロードコマンドは、RefSeq(O'Leary et al、2016)、Uniprot(The Uniprot Consortium、2017)、protein data bank(pdb)( Berman et al、2000)など、最も一般的なシーケンスデータベースのローカルデータベースへのマッピングの自動ダウンロードとそれに続くインポートを実装している。さらに、BASTAのcreate_dbコマンドを使用してカスタムマッピングファイルをインポートすることもできる。(以下略)
HP
https://uts-c3.github.io/project/basta/
https://github.com/timkahlke/BASTA/wiki
BASTA workflow. 論文より転載
インストール
ubuntu16.0.4のminiconda3.4.0.5環境でテストした。
依存
ASTA requires the non-standrad python packages.
- gzip
- hashlib
本体 Github
#ここではcondaの仮想環境を作って導入, diamondも使うので入れる。
conda create -n basta -y
conda activate basta
conda install -c bioconda -c bnoon -c timkahlke basta diamond
テスト
> python -m unittest discover basta
# python -m unittest discover basta
.........--2019-07-08 20:31:48-- http://www.google.com/index.html
Resolving www.google.com... 172.217.26.100, 2404:6800:400a:808::2004
Connecting to www.google.com|172.217.26.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: '/root/.pyenv/versions/miniconda3-4.0.5/lib/python2.7/site-packages/basta/index.html'
/root/.pyenv/versions/miniconda3-4.0.5/lib [ <=> ] 12.33K --.-KB/s in 0.001s
2019-07-08 20:31:48 (12.7 MB/s) - '/root/.pyenv/versions/miniconda3-4.0.5/lib/python2.7/site-packages/basta/index.html' saved [12623]
........
----------------------------------------------------------------------
Ran 17 tests in 0.127s
OK
O.k !
> basta --help
# basta --help
usage: basta [-h] {sequence,single,multiple,download,create_db,taxonomy} ...
Basic sequence taxonomy assignment
positional arguments:
{sequence,single,multiple,download,create_db,taxonomy}
sub-command help
optional arguments:
-h, --help show this help message and exit
> basta download -h
$ basta download -h
usage: basta download [-h] [-d DIRECTORY] [-f FTP]
{wgs,prot,est,gss,gb,pdb,uni}
Download NCBI taxonomy file(s)
positional arguments:
{wgs,prot,est,gss,gb,pdb,uni}
Type of mapping file to be downloaded (prot, est, wgs,
gss or gb)
optional arguments:
-h, --help show this help message and exit
-d DIRECTORY, --directory DIRECTORY
Directory of mapping files (default:
$HOME/.basta/taxonomy)
-f FTP, --ftp FTP URL to NCBI ftp for accession mapping (default:
ftp://ftp.ncbi.nih.gov/pub/taxonomy/accession2taxid/)
データベースの準備
#NCBI taxonomy databaseのセットアップ(7 level taxonomy file)
basta taxonomy -d download_dir
#NCBI's protein-to-taxonIDとgenbank-to-taxonID mapping fileのセットアップ(link)
#下で使うデータベースに合わせたダウンロードする。estを実行するならbasta download est
#ここではprotとgbをダウンロード
basta download gb -d download_dir
basta download prot -d download_dir
以下の既知データベースが利用できる(wikiより)。
- prot - protein-to-taxonID mapping file (protein sequences hosted at the NCBI)
- uni - uniprot-to-taxonID mapping file (complete uniprot, will also be imported into database prot)
- gb - genbank-to-taxonID mapping file (for most nucleotide databases)
- wgs - whole-genome-sequence-to-taxonid mapping file
- pdb - protein-database-to-taxonID mapping file
- est - est-to-taxonID mapping file
- gss - gss-to-taxonID mapping file
保存場所を指定しない場合、defaultではBASTA_INSTALL_DIR/taxonomy/に保存される。
実行方法
様々な使い方があるが、典型的な使い方の1つは、クエリのプロテイン配列とUniprot databaseのproteomeとのblast結果を使ったTaxonomic classificationである。
1、uniprot databaseに対してblast検索を実行する。Diamondを使う。例えばUniProt KnowledgebaseのUniref90をダウンロードしてdiamond makedbでデータベースにしておく。
Diamondを使いblast検索を実行(Uniref90だとかなり重たいので注意、用途に合わせて変更する)。
diamond blastx --query input.fa \
--db uniprot_ref_proteomes.diamond.dmnd \
--outfmt 6\
--sensitive \
> blast.out
2、bastaを実行。<MAPPING_FILE_TYPE> はデータによって変更する。"basta sequence"だと配列それぞれのLCA推定、"basta single"だと全ヒットから1つのLCA推定になる。
#ここでは<MAPPING_FILE_TYPE> は”prot”にする(上のデータベースの準備参照)。
#basta sequence
basta sequence -d download_dir blast.out output prot
#basta single
basta single -d download_dir blast.out output prot
- MAPPING_FILE_TYPE = one of either prot, gb, est, gss,pdb or wgs
E.coliのproteomeを使った時のsingleの出力。
$ cat output
Sequence Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
E.coliのproteomeを使った時のsequenceの出力。
> head output
$ head output
NP_414594.1 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
NP_414596.1 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
NP_414611.1 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
NP_414671.1 Unknown
NP_414695.1 Unknown
NP_414700.1 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
NP_414705.1 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
NP_414756.2 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;
NP_414805.1 Unknown
NP_414815.1 Unknown
メタゲノムのbinned fastaなど複数のblast hitファイルからLCA推定を行うなら"basta multiple”を使う。
#!/bin/sh
#prooka annotation
mkdir blast_outdir
for file in `\find *fa -maxdepth 1 -type f`; do
genome=${file}
out=${file%.fa}
diamond blastx --query $genome --db uniprot_ref_proteomes.diamond.dmnd --outfmt 6 --sensitive > blast_outdir/${out}
done
basta_loop.shとして保存し、binned_fastaのディレクトリで実行する。
./ basta_loop.sh
得られたblast_outdirを指定してbasta multipleを実行。
basta multiple blast_outdir/ basta_out gb
引用
BASTA – Taxonomic classification of sequences and sequence bins using last common ancestor estimations
Tim Kahlke Peter J. Ralph