macでインフォマティクス

macでインフォマティクス

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

ONTのロングリードを自動でアセンブリして公開し、比較できるツール poreTally

 

 ナノポアシークエンシングは、エラーが発生しやすいクオリティが一貫したロングリードを生成する第3世代のシークエンシング方法である。簡単に言うと、DNAまたはRNA鎖がタンパク質の細孔を通って引っ張られ、細孔を介して電気抵抗に影響を与えこれが記録される。Base callers、すなわち塩基の特定の組み合わせについての電流レベルに関する経験的に得られた情報を使用するソフトウェアツールは、その後、経時的に電流を核酸配列に翻訳する。

 ナノポアシーケンシングは、オックスフォードナノポアテクノロジーズ(ONT)による手持ちできるMinIONシーケンサーの導入により、商業的には2014年に登場した。 2つのスケールアップされたプラットフォーム、GridIONとPromethIONがすぐ後に続いた。その後、ユーザーはより長いリード長と、ナノポアリードの特徴である高いシーケンスエラー率(約75%[ref.17])に対応するさまざまなオープンソース分析ツールを開発した。予想されたように、シーケンシングハードウェア、base callersおよびサンプル調製プラクティスはそれらが導入されてから多くの変更を受けてきた。これまでのすべての改善の累積的な結果として、未処理のMinIONリードは今やユーザーの手元で93%の同定率に達すると報告されており[ref.11]、リード長分布はおよそ10 kb前後 [ref.18]である。ただしこれらの特徴はサンプルの調製方法や種によって異なることが知られている[ref.20、21]。
 ONTのアップデートスケジュールは、着実に価値を高めるツールをユーザーコミュニティに提供しているが、ダウンストリーム分析ツールの開発者はツールを繰り返し再パラメータ化する必要がある。これらのツールに最新のベンチマークを提供することも同様に困難であることが証明されている。 de novoアセンブリパイプラインの場合、ある時点で最も人気のあるツールのいくつかのベンチマークが実行され、査読誌に掲載されている[ref.9、4、6、1]。ただし、いずれの場合も、ONTはpublish後にリードの品質の一部を大幅に改善し、それ故に比較は部分的に古くなっている。さらに、各ベンチマークの取り組みは1つの生物に焦点を当てているが、リードの品質と最良のアセンブリ方法はtaxonごとに異なる可能性があることが示されている[ref.19、15、16]。 ONTはプラットフォームの頻繁な改良を続けていくつもりであるため、ONTのハードウェアを大幅に更新しない限り、現実には合理的に多様な生物群についてde novoアセンブリパイプラインのベンチマークを行い、その成果を発表することはできない。

 ナノポアシーケンシングの急速な発展に追いつくために、ONTユーザーコミュニティは新しいツールを広めるいくつかの戦略を採用した。例えば、コミュニティはBioRxivのようなプレプリントサーバへのpublishを受け入れ、伝統的な査読付き(peer-reviewed)ジャーナルへのpublishはむしろユーザコミュニティがそれ自身の非公式の評価を行ったずっと後にformallyに研究の妥当性を確認するために行われている [e.g. ref.7, 8]。同様に、学術雑誌出版社のF1000によって提供された高速オープンピアレビューシステムは、ナノポアシーケンシング専用の出版チャネル(link)での活動から明らかなように、やや普及してきていることが証明された。最近、Wick et et alは興味深いアプローチを取っており、新しい発見があると定期的にGithubベンチマークを更新して、MinION base caller のパフォーマンスに関する調査結果を共有している [ref.22 github]。ショートリードアセンブリパイプライン用のベンチマークプラットフォームであるnucleotid.esにはより協調的な取り組みが採用されており、ユーザーがパイプラインのDockerイメージを送信してこれらを標準データセットで評価できるようにしている。 nucleotid.esは、このように繰り返しのベンチマークとパイプラインの客観的比較を容易にする。ただし、エラーが発生しやすいロングリードやユーザー提供のデータセットベンチマークはできない。また、生のナノポアシグナルを使用したアセンブリ後のpolishなど、ナノポアアセンブリの基本的な方法もサポートされていない。
 ハードおよびソフトウェアの更新によるde novoアセンブリパイプラインベンチマークの急速なdevaluationと分類群間でのパフォーマンスのばらつきの両方に対処するために、ここでは、コミュニティ主導の頻繁なベンチマークラクティスを提案し、これを容易にするツールを提示する。ナノポアシーケンシングを利用する研究グループに、標準化された手順に従って興味のある生物のアセンブリパイプラインのベンチマークを行い、その結果をオンラインで直接公開することを勧める。これは、同じまたは類似の分類群で作業している他のユーザーに、最新のハードウェアおよびソフトウェアを使用した自分のケースに最適なアセンブリパイプラインの指示を提供する。本ツール、poreTallyは、頻繁に使用されるアセンブリパイプライン、パフォーマンス分析ルーチン、レポート生成、および無料のリポジトリホスティングサービスGithubまたはGitlabでのpublishを1つのパッケージで提供し、プロセス全体の透明性を高める。 poreTallyは、異なるパラメータ設定で他のパイプラインまたは同じパイプラインの複数のインスタンスに簡単に拡張できるように設計されている。任意選択的に、ユーザはそれらの結果を集団的ベンチマークエフォートに提出することができる。提出されたベンチマーク結果は定期的に要約され、全体的なパフォーマンスの尺度および特定のユーザー事例の選択ガイドとしてコミュニティに提示される。もちろん、提出者は正式にクレジットされ、referされる。

 

poreTallyに関するツイート 

f:id:kazumaxneo:20190113162656p:plain

Schematic representation of the poreTally workflow. Preprintより転載

 

インストール

ubuntu16.04のminiconda3-4.3.21環境でテストした(docker使用。ホストOS: mac os10.14)。

依存

Ensure you have python3.6, miniconda/anaconda and git installed on your system.

sudo apt install zlib1g-dev
pip install setuptools --upgrade
pip install requests --upgrade

本体 Github

pip install git+https://github.com/cvdelannoy/poreTally.git


#またはdockerを使う
#ビルド
docker build https://github.com/cvdelannoy/poreTally.git -t poretally
#ヘルプ
docker run -t -v mount_this:to_that poretally run_benchmark -h

最初に実行するときにNCBI taxonomy databaseが自動でダウンロードされる。

> poreTally

$ poreTally

NCBI database not present yet (first time used?)

Downloading taxdump.tar.gz from NCBI FTP site (via HTTP)...

Done. Parsing...

Loading node names...

2043937 names loaded.

205187 synonyms loaded.

Loading nodes...

2043937 nodes loaded.

Linking nodes...

Tree is loaded.

Updating database: /home/kazu/.etetoolkit/taxa.sqlite ...

 2043000 generating entries... 

Uploading to /home/kazu/.etetoolkit/taxa.sqlite

 

Inserting synonyms:      205000 

Inserting taxid merges:  50000 

Inserting taxids:       2040000

 

 

ヘルプ

> poreTally -h

$ poreTally -h

usage: poreTally [-h]

                 {run_benchmark,run_assemblies,run_analysis,publish_results}

                 ...

 

A tool for for easy MinION de-novo assembler benchmarking. Runs a number of

assemblers, produces read quality measures, assembly quality and assembler

performance measures and parses the results into a format immediately

publishable on Github/Gitlab. Optionally, upload your data to a collaborative

benchmarking effort and help the MinION user community gain insight in

assembler performance.

 

optional arguments:

  -h, --help            show this help message and exit

 

commands:

  {run_benchmark,run_assemblies,run_analysis,publish_results}

> poreTally run_benchmark -h

$ poreTally run_benchmark -h

usage: poreTally run_benchmark [-h] -w WORKING_DIR [-f FAST5_DIR]

                               [-a SHORT_READS_DIR [SHORT_READS_DIR ...]]

                               [-p PIPELINES [PIPELINES ...]] -r REF_FASTA

                               [-t THREADS_PER_JOB] [-s SLURM_CONFIG]

                               [-g GFF_FILE] -i USER_INFO [--git GIT]

                               reads_dir [reads_dir ...]

 

positional arguments:

  reads_dir             directory or list of MinION reads in fastq format

 

optional arguments:

  -h, --help            show this help message and exit

  -w WORKING_DIR, --working-dir WORKING_DIR

                        Intermediate folder where results are stored.

  -f FAST5_DIR, --fast5-dir FAST5_DIR

                        Directory containing fast5-reads for the provided

                        reads. Required for some tools (e.g. Nanopolish).

  -a SHORT_READS_DIR [SHORT_READS_DIR ...], --short-reads-dir SHORT_READS_DIR [SHORT_READS_DIR ...]

                        Directory containing short accurate reads in fasta

                        format. Required for some tools (e.g. for error

                        correction). Config file variable: {SHORT_READS}

  -p PIPELINES [PIPELINES ...], --pipelines PIPELINES [PIPELINES ...]

                        Run benchmark for one or more specific pipelines,

                        instead of the standard 5. Given names must either be

                        one of the included pipelines

                        (minimap2_miniasm_nanopolish, wtdbg2, smartdenovo,

                        canu, flye, minimap2_miniasm,

                        minimap2_miniasm_raconX2), or be a path to a yaml file

                        defining the commands and prerequisites (mixing

                        allowed). Provide keyword 'default' to also run Canu,

                        Flye,SMARTdenovo, Minimap2+Miniasm and

                        Minimap2+Miniasm+RaconX2

  -r REF_FASTA, --ref-fasta REF_FASTA

                        Reference genome in fasta-format, not provided to

                        assemblers but used to estimate genome size and stored

                        for later use in analysis step.

  -t THREADS_PER_JOB, --threads-per-job THREADS_PER_JOB

                        Define how many threads each job (most importantly

                        assembly pipeline, but also analysis job) can

                        maximally use. (default is 4).

  -s SLURM_CONFIG, --slurm-config SLURM_CONFIG

                        If jobs need to be run using SLURM, provide a json-

                        file containing header information, (i.e. partition,

                        running time, memory etc.)

  -g GFF_FILE, --gff-file GFF_FILE

                        Gene annotation file in GFF(v2/3) format. If provided,

                        report number of found genes.

  -i USER_INFO, --user-info USER_INFO

                        Provide a yaml-file with author names, organism name

                        and/or NCBI Taxonomy ID, basecaller, ONT flowcell type

                        and ONT chemistry kit.

  --git GIT             Full ssh address of a Github/Gitlab repo for which you

                        set up access with a key pair.If provided, poreTally

                        pushes the results of your benchmark run to this repo.

 

 

実行方法

ランにはリードとリファレンスゲノム、ユーザー情報を記したyamlファイルが必要になる。

yamlファイルの内容例

authors: B. Honeydew
species: Escherichia coli
basecaller: Albacore 2.2.7
flowcell: FLO-MIN106
kit: SQK-LSK108

オーサー、種名、ベースコーラー、フローセル、キット名を書くようになっている。

 

準備ができたら実行する。リファレンスゲノム(fasta)、yamlファイル、スレッド数、作業ディレクトリ、そして最後にbasecallして得たfastqが収納されているディレクトリを指定する。

poreTally run_benchmark \
-w path/to/working_directory \
-r reference_genome.fasta \
-i user_info.yaml \
-t 16 \

fastqs_dir/

オンラインで直接公開したい場合、-git フラグとURLを指定し、指定したレポジトリに結果を自動でpushすることもできます(前もって共通鍵認証してsshアクセスできるようにしておく)。

Environment for ../assembler_results/conda_files/flye.yaml created (location: .snakemake/conda/28e5af27)

Creating conda environment ../assembler_results/conda_files/canu.yaml...

Downloading remote packages.

Environment for ../assembler_results/conda_files/canu.yaml created (location: .snakemake/conda/c96fb034)

Using shell: /bin/bash

Provided cores: 16

Rules claiming more threads will be scaled down.

Job counts:

count jobs

1 canu

1 flye

1 minimap2_miniasm

1 minimap2_miniasm_raconX2

1 smartdenovo

5

 

[Mon Jan 14 14:37:33 2019]

rule flye:

    input: /data/work/all_reads.fastq

    output: /data/work/assembler_results/assemblies/flye.fasta

    log: /data/work/assembler_results/log_files/flye.log

    jobid: 0

    benchmark: /data/work/assembler_results/cpu_files/flye.bm

    threads: 16

ランが終わるとanalysis/に様々なレポートが出力される。

f:id:kazumaxneo:20190116141458j:plain

 

command_files/  - 実行されたコマンド

> cat minimap2_miniasm_raconX2.cmd

$ cat /work/analysis/summary/command_files/minimap2_miniasm_raconX2.cmd 

minimap2 -x ava-ont -t 20 {input.fastq} {input.fastq} | gzip -1 > minimap2.paf.gz

miniasm -f {input.fastq} minimap2.paf.gz > minimap2_miniasm.gfa

grep -Po '(?<=S\t)utg.+\s[ACTG]+' minimap2_miniasm.gfa | awk '{{print ">"$1"\\n"$2}}' | fold > minimap2_miniasm.fasta

minimap2 -x ava-ont -t 20 minimap2_miniasm.fasta {input.fastq} > minimap2_readsToContigs1.paf

racon -t 20 {input.fastq} minimap2_readsToContigs1.paf minimap2_miniasm.fasta > minimap2_miniasm_raconX1.fasta

minimap2 -x ava-ont -t 20 minimap2_miniasm_raconX1.fasta {input.fastq} > minimap2_readsToContigs2.paf

racon -t 20 {input.fastq} minimap2_readsToContigs2.paf minimap2_miniasm_raconX1.fasta > {output}

 

quast PDFレポート

f:id:kazumaxneo:20190116141545j:plain

NanoPlot-report.html

f:id:kazumaxneo:20190116141622j:plain

 

multiqc_report - アセンブリ要約統計。multiQC(紹介)で統合され、htmlレポートになっている。

f:id:kazumaxneo:20190116142051j:plain

f:id:kazumaxneo:20190116142054j:plain

 

assembler_results/にはrunning logやアセンブリされた配列などが保存されている。

f:id:kazumaxneo:20190116141917j:plain

running logは何らかの理由でアセンブリが正しく終わらなかった時、エラー原因を探るのに役立ちます。テストでは、2ツールのみ正常に終わりました。

引用

poreTally: run and publish de novo Nanopore assembler benchmarks

Carlos de Lannoy, Judith Risse, Dick de Ridder

Bioinformatics, bty1045, https://doi.org/10.1093/bioinformatics/bty1045
Published: 24 December 2018

 

poreTally: run and publish de novo Nanopore assembler benchmarks

Carlos de Lannoy, Judith Risse, Dick de Ridder

bioRxiv preprint first posted online Sep. 23, 2018