macでインフォマティクス

macでインフォマティクス

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

Linked readsを使ってミスアセンブリを検出する tigmint

 

 ショートリード・シーケンシング・データのアセンブリは、シーケンシング・ライブラリのフラグメント・サイズよりも大きいリピート配列によって容易に混乱させられる。リピートのサイズがライブラリのフラグメントサイズを超えると、コンティグは最善のケースでは終了するか、最悪のケースでは誤ってアセンブリされる。ミスアセンブリは、下流分析を複雑にするばかりでなく、アセンブリの連続性も制限する。誤ってアセンブリされた各配列は、論文の図1に示すように、アセンブリスキャホールド間の正しい接続を妨げる。

 ロングリードシークエンシング技術はアセンブリの連続性を大幅に改善したが、現在のところ、ショートリードシーケンシング技術よりもかなり高いコストがかかる。集団調査やその他の経済的に重要な作物種などのラージゲノムをシーケンシングする場合、このコストは法外な場合がある。10x Genomics(Pleasanton、CA)のChromiumテクノロジーは、標準的なショートリードシーケンシング技術に匹敵するコストで、大きなDNA分子からリンクリードを生成する。ペアエンドシーケンシングでは小さなDNA断片の両側からシーケンシングが行われ2つのリードが得られるが、リンクリードでは典型的なサイズが100キロベースの分子からおよそ100のリードペアが生成される。リンクされたリードは、同じDNA分子(または同じバーコードを共有している分子)からどのリードが得られたかを示し、そのためベースのゲノムでは近接しているはずである。この技術は、リファレンス[ref.1]を用いて二倍体ゲノムをフェージングしたり、ギガベースクラスの複雑なゲノムをde novoアセンブリしたり[ref.2]、さらにドラフトアセンブリ[ref.3,4]に使用されてきた。 

 多くのソフトウェアツールが、さまざまなアプリケーション向けにリンクリードを採用している。Long Rangerツールは、リピート配列にリードをマッピングし、smallバリアントをフェージングし、構造変異を識別する[ref.5]。一方、Supernova [ref.2]は二倍体ゲノム配列をアセンブリする。どちらのツールもベンダー元によって開発されている。 GROCSVs [ref.6]、NAIBR [ref.7]、そしてTopsorter [ref.8]は構造変化を識別し、ARCS [ref.4]、Architect [ref.9]、そしてfragScaff [ref.10]はゲノムアセンブリのスキャフォールディングを行う。

 デノボシークエンシングプロジェクトでは、結果として得られるアセンブリの正確性を確保することは重要だが、それはチャレンジングなことである。誤ったアセンブリを訂正するツールは、通常、アセンブリに戻って配置されたリードを検査し、矛盾を特定する。 Pilon [ref.11]は、アラインメントを検査して、バリアントを同定し、小規模の誤組物を修正する(紹介)。 NxRepair [ref.12]は、イルミナのメイトペアシーケンシングを使用して、大規模な構造的ミスアセンブリを修正する(紹介)。ミスアセンブリは、optical mappingとchromosome conformation captureを用いて補正することもできる[ref.13 pubmed]。リンクリードは、コスト効果の高い方法で誤ったアセンブリを識別するために、大きなDNA分子に由来する長距離情報を使用する機会を提供するが、リンクリードを使用して誤ったアセンブリを訂正するソフトウェアツールは現在存在しない。ここでは、この新しい有用なデータタイプを使用してミスアセンブリを識別するソフトウェアツールTigmintを紹介する。

 Tigmintは、最初にリンクリードアセンブリにアライメントし、これらのアラインメントから大きなDNA分子の範囲を推測する。次に、カバレッジの不規則な落ち込みを探索し、起こり得るミスアセンブリ位置を明らかにする。アセンブリの正確性を向上させるために、これらの位置でアセンブリされたシーケンスをカットする。リンクリードは、場合によっては、リンクリードを共有しているcontig末端を ARCS [ref.4]などを用いて再びつなぎ直し、スキャホールドにすることもできる。

 

f:id:kazumaxneo:20181202163516p:plain

Githubより

 

tigmintに関するツイート

 

インストール

mac os10.14のpython3.4環境でテストした。

依存

Python package

  • intervaltree pybedtools pysam statistics

The dependencies of Tigmint

  • bedtools bwa samtools

the dependencies of ARCS (optional)

arcs links-scaffolder

#python library
pip3 install intervaltree pybedtools pysam statistics

#tigment dependency
brew tap brewsci/bio
brew install bedtools bwa samtools

#optional
brew install abyss seqtk

dockerイメージも準備されている。

 本体 Github

様々なパッケージマネージャを使った導入がサポートされている。いずれのパッケージマネージャもlinuxmacをサポートしている。

#conda(python3)
conda install -c bioconda -c conda-forge tigmint

#pip3
pip3 install tigmint

#homebrew、linuxbrew
brew install tigmint

dockerイメージも準備されている。

#pullしてラン
docker run -it bcgsc/tigmint

> tigmint -h

$ tigmint -h

Usage: make [options] [target] ...

Options:

  -b, -m                      Ignored for compatibility.

  -B, --always-make           Unconditionally make all targets.

  -C DIRECTORY, --directory=DIRECTORY

                              Change to DIRECTORY before doing anything.

  -d                          Print lots of debugging information.

  --debug[=FLAGS]             Print various types of debugging information.

  -e, --environment-overrides

                              Environment variables override makefiles.

  -f FILE, --file=FILE, --makefile=FILE

                              Read FILE as a makefile.

  -h, --help                  Print this message and exit.

  -i, --ignore-errors         Ignore errors from commands.

  -I DIRECTORY, --include-dir=DIRECTORY

                              Search DIRECTORY for included makefiles.

  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no arg.

  -k, --keep-going            Keep going when some targets can't be made.

  -l [N], --load-average[=N], --max-load[=N]

                              Don't start multiple jobs unless load is below N.

  -L, --check-symlink-times   Use the latest mtime between symlinks and target.

  -n, --just-print, --dry-run, --recon

                              Don't actually run any commands; just print them.

  -o FILE, --old-file=FILE, --assume-old=FILE

                              Consider FILE to be very old and don't remake it.

  -p, --print-data-base       Print make's internal database.

  -q, --question              Run no commands; exit status says if up to date.

  -r, --no-builtin-rules      Disable the built-in implicit rules.

  -R, --no-builtin-variables  Disable the built-in variable settings.

  -s, --silent, --quiet       Don't echo commands.

  -S, --no-keep-going, --stop

                              Turns off -k.

  -t, --touch                 Touch targets instead of remaking them.

  -v, --version               Print the version number of make and exit.

  -w, --print-directory       Print the current directory.

  --no-print-directory        Turn off -w, even if it was turned on implicitly.

  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE

                              Consider FILE to be infinitely new.

  --warn-undefined-variables  Warn when an undefined variable is referenced.

 

This program built for x86_64-pc-linux-gnu

Report bugs to <bug-make@gnu.org>

 

実行方法

samtools faidx draft.fa
bwa index draft.fa
bwa mem -t8 -p -C draft.fa reads.fq.gz | samtools sort -@8 -tBX -o draft.reads.sortbx.bam
tigmint-molecule draft.reads.sortbx.bam | sort -k1,1 -k2,2n -k3,3n >draft.reads.molecule.bed
tigmint-cut -p8 -o draft.tigmint.fa draft.fa draft.reads.molecule.bed 

 

または自動で実行。アセンブリfastaとリンクリードを指定する。

tigmint-make tigmint draft=myassembly reads=myreads

 

引用
Tigmint: correcting assembly errors using linked reads from large molecules

Shaun D. Jackman,  Lauren Coombe, Justin Chu, Rene L. Warren, Benjamin P. Vandervalk, Sarah Yeo,1Zhuyi Xue, Hamid Mohamadi, Joerg Bohlmann, Steven J.M. Jones, Inanc Birol

BMC Bioinformatics. 2018; 19: 393