macでインフォマティクス

macでインフォマティクス

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

ディープラーニングを用いた微生物ゲノムのビンニングツール Vamb

 

 メタゲノミクスワイドゲノム配列データからの微生物種の同定と再構築は、重要かつ挑戦的な課題である。現在の既存のアプローチは、複数のサンプルにわたる遺伝子またはコンティグの共分散情報と、配列中のk-mer組成情報に依存している。ここでは、最近のディープラーニングの進歩を利用して、変分自動エンコーダーを用いて、クラスタリングに先立って共分散情報と組成情報を符号化するアルゴリズムを開発した。本研究では、ディープネットワークがこれら2つの異種データセットを事前知識なしに統合できること、また、3つの異なるベンチマークデータセットから1.8倍から8倍の精度で完全なゲノムビンを再構成することで、既存の最先端技術を凌駕することを示している。さらに、ヒト腸内マイクロバイオームの約1,000万の遺伝子と1,270サンプルの遺伝子カタログにも適用した。結果、130万から180万の遺伝子をクラスタリングし、117から246個の高精度で完全な遺伝子群を再構成することができ、そのうち70個の遺伝子群は従来の方法と比較して全く新しいものであった。本手法 Variational Autoencoders for Metagenomic Binning (VAMB) は、https://github.com/jakobnissen/vamb で自由に利用できる。

 

インストール

Github

#conda、ここでは高速なmambaを使う
mamba create -n Vamb -y
conda activate Vamb
mamba install -c pytorch pytorch torchvision cudatoolkit=10.2
mamba install -c bioconda vamb -y

#pip
pip install https://github.com/RasmussenLab/vamb/archive/3.0.2.zip

> vamb

$ vamb 

usage: vamb outdir tnf_input rpkm_input [options]

 

Vamb: Variational autoencoders for metagenomic binning.

 

    Default use, good for most datasets:

    vamb --outdir out --fasta my_contigs.fna --bamfiles *.bam

 

    For advanced use and extensions of Vamb, check documentation of the package

    at https://github.com/RasmussenLab/vamb.

 

Help:

  -h, --help          print help and exit

 

Output (required):

  --outdir            output directory to create

 

TNF input (either fasta or all .npz files required):

  --fasta             path to fasta file

  --tnfs              path to .npz of TNF

  --names             path to .npz of names of sequences

  --lengths           path to .npz of seq lengths

 

RPKM input (either BAMs, JGI or .npz required):

  --bamfiles  [ ...]  paths to (multiple) BAM files

  --rpkm              path to .npz of RPKM

  --jgi               path to output of jgi_summarize_bam_contig_depths

 

IO options:

  -m                  ignore contigs shorter than this [100]

  -s                  ignore reads with alignment score below this [None]

  -z                  ignore reads with nucleotide identity below this [None]

  -p                  number of subprocesses to spawn [min(8, nbamfiles)]

  --norefcheck        skip reference name hashing check [False]

  --minfasta          minimum bin size to output as fasta [None = no files]

 

VAE options:

  -n  [ ...]          hidden neurons [Auto]

  -l                  latent neurons [32]

  -a                  alpha, weight of TNF versus depth loss [Auto]

  -b                  beta, capacity to learn [200.0]

  -d                  dropout [Auto]

  --cuda              use GPU to train & cluster [False]

 

Training options:

  -e                  epochs [500]

  -t                  starting batch size [256]

  -q [ [ ...]]        double batch size at epochs [25 75 150 300]

  -r                  learning rate [0.001]

 

Clustering options:

  -w                  size of window to count successes [200]

  -u                  minimum success in window [20]

  -i                  minimum cluster size [1]

  -c                  stop after c clusters [None = infinite]

  -o                  binsplit separator [None = no split]

 

 

実行方法

1、アセンブリ配列の結合(複数ある場合)

 concatenate.py /path/to/catalogue.fna.gz sample1/contigs.fasta
sample2/contigs.fasta

 

2、リードのアセンブリへのマッピング

minimap2 -d catalogue.mmi catalogue.fna.gz
minimap2 -t 8 -N 50 -ax sr catalogue.mmi sample1_R1.fq.gz sample1_R2.fq.gz | samtools view -F 3584 -b --threads 8 > sample1.bam
minimap2 -t 8 -N 50 -ax sr catalogue.mmi sample2_R1.fq.gz sample2_R2.fq.gz | samtools view -F 3584 -b --threads 8 > sample2.bam

 

3、ビニング。デフォルトではfasta配列を出力しないので、--minfastaオプションをつける。

vamb --outdir outdir --fasta catalogue.fna.gz  --bamfiles BAM1 BAM2  -o C --minfasta 200000

 

 

 

 Recommended workflow (Githubから)

  • 1) リードの前処理と品質チェック

FastQCと組み合わせたAdapterRemovalを使用している。

  • 2) 各サンプルを個別にアセンブルし、コンティグを取り出す。

各サンプルで個別に metaSPAdes を使用することを勧める。シングルサンプルをアセンブルした後、サンプルごとにビンスプリットすると最良の結果が得られるためです。

  • 3) コンティグヘッダがすべてユニークであることを確認しながら、fastaファイルを連結し、小さなコンティグをフィルタリングする。

重要: Vamb はシーケンスのエンコードニューラルネットワークを使用しており、ニューラルネットワークは小さなデータセットでオーバーフィットする。コンティグ数が 50,000 以下のデータセットではテストしていない。また、非常に短い配列をビニングしようとするべきではない。入力配列の長さのカットオフを決める際には、カットオフを低くしすぎると、ビンに入れにくいコンティグが残ってしまい、高くしすぎると、良いデータを捨ててしまうことになる。デフォルトでは2000bpの長さのカットオフを使用している。

コンティグヘッダはユニークでなければならない。さらに、ビンスプリットを使用したい場合、コンティグヘッダは {Samplename}{Separator}{X} という形式でなければならない。

Vambはメモリ効率が良いが、データセットが大きすぎてRAMに収まりきらない場合は、MASHのようなツールを使用して、類似のサンプルをより小さなバッチにまとめ、それらのバッチを個別にビニングすることもできる。

リードを複数のコンティグにマップできるようにすると、より正確なアバンダンスの推定が可能になる。ただし、1つのリードに対するすべてのBAMレコードはBAMファイル内で連続していなければならない。これは、ほとんどすべてのアライナーの出力におけるデフォルトの順序だが、アライメント位置でソートされた BAM ファイルを使用している場合や、マルチマッピングリードを使用している場合は、最初にリード名でソートする必要がある。

一般的に、コンティグAからのリードがコンティグBにアラインメントされている場合、VambはAとBを一緒に結合する。一般的に、コンティグ A からのリードをコンティグ B に合わせると、Vamb は A と B を一緒に結合する。minimap2を使用することを勧める。

MAPQの低いアラインメントをフィルタリングしてしまうと、相同配列へのアラインメントが除去されてしまい、深度推定にバイアスがかかる。

MetaBAT2のjgi_summarize_bam_contig_depthsプログラムは、Vambのparsebamモジュールよりも正確にBAMの深さを推定することがわかった。最良の結果を得るためには、MetaBAT2をダウンロードし、jgi_summarize_bam_contig_depthsを使って深さを推定し、Vambを--bamfilesの代わりに--jgiで実行することを勧める。また、snakemakeワークフローを使用することも検討してください。

  • 5) ランバンブ

デフォルトでは、Vamb はビンの FASTA ファイルを出力しない。レポジトリの例では、--minfasta 200000 オプションが設定されており、これはサイズが 200kbp 以上のすべてのビンが FASTA ファイルとして出力されることを意味する。

 

引用

Improved metagenome binning and assembly using deep variational autoencoders

Jakob Nybo Nissen, Joachim Johansen, Rosa Lundbye Allesøe, Casper Kaae Sønderby, Jose Juan Almagro Armenteros, Christopher Heje Grønbech, Lars Juhl Jensen, Henrik Bjørn Nielsen, Thomas Nordahl Petersen, Ole Winther & Simon Rasmussen
Nature Biotechnology (2021)

s

Binning microbial genomes using deep learning

Jakob Nybo Nissen, Casper Kaae Sønderby, Jose Juan Almagro Armenteros, Christopher Heje Grønbech, Henrik Bjørn Nielsen, Thomas Nordahl Petersen, Ole Winther, Simon Rasmussen

bioRxiv, Posted December 19, 2018