macでインフォマティクス

macでインフォマティクス

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

Pacbioロングリードのシミュレーター PBSIM

2019 7/28 condaインストール追記

 

PBSIMはPacbioリードのシミュレーションを行うツール。ユーザーの持っているPacbioデータをもとにリードの長さやクオリティをシミュレートすることもできるため、実際の解析に適用しやすい。

 

 インストール

GitHub - pfaucon/PBSIM-PacBio-Simulator: This is an updated mirror of the original PacBio Read Simulatorからソースコードをダウンロードしてビルドする。

Github

git clone https://github.com/pfaucon/PBSIM-PacBio-Simulator.git
autoreconf -i
./configure
make

#bioconda (link)
conda install -c bioconda -y pbsim

ビルドが終わると、src/にpbsimができる。これにパスを通す。Pacbioのモデルデータとして/dataのファイルを参照する。

> pbsim

 

USAGE: pbsim [options] <reference>

 

 <reference>           FASTA format file.

 

 [general options]

 

  --prefix             prefix of output files (sd).

  --data-type          data type. CLR or CCS (CLR).

  --depth              depth of coverage (CLR: 20.0, CCS: 50.0).

  --length-min         minimum length (100).

  --length-max         maximum length (CLR: 25000, CCS: 2500).

  --accuracy-min       minimum accuracy.

                       (CLR: 0.75, CCS: fixed as 0.75).

                       this option can be used only in case of CLR.

  --accuracy-max       maximum accuracy.

                       (CLR: 1.00, CCS: fixed as 1.00).

                       this option can be used only in case of CLR.

  --difference-ratio   ratio of differences. substitution:insertion:deletion.

                       each value up to 1000 (CLR: 10:60:30, CCS:6:21:73).

  --seed               for a pseudorandom number generator (Unix time).

 

 [options of sampling-based simulation]

 

  --sample-fastq       FASTQ format file to sample.

  --sample-profile-id  sample-fastq (filtered) profile ID.

                       when using --sample-fastq, profile is stored.

                       'sample_profile_<ID>.fastq', and

                       'sample_profile_<ID>.stats' are created.

                       when not using --sample-fastq, profile is re-used.

                       Note that when profile is used, --length-min,max,

                       --accuracy-min,max would be the same as the profile.

 

 [options of model-based simulation].

 

  --model_qc           model of quality code.

  --length-mean        mean of length model (CLR: 3000.0, CCS:450.0).

  --length-sd          standard deviation of length model.

                       (CLR: 2300.0, CCS: 170.0).

  --accuracy-mean      mean of accuracy model.

                       (CLR: 0.78, CCS: fixed as 0.98).

                       this option can be used only in case of CLR.

  --accuracy-sd        standard deviation of accuracy model.

                       (CLR: 0.02, CCS: fixed as 0.02).

                       this option can be used only in case of CLR.

 

root@3dff20ac5227:/data# 

 

 

 

実行方法

リードのシミュレーション

pbsim --data-type CCS --depth 20 \
--model_qc PBSIM-PacBio-Simulator/data/model_qc_ccs ref.fa

 --depth カバレッジ指定

--data-type CCSを指定。他にCLRがある。

--model_qc

 エラー率とリード長はオーサーらの設定したモデルが反映される。CLR、CCSは大崎さんのブログを参照してください。 

 

終わると、fasta一つに付き、3つのファイルが出力される。一つはシミュレートされたfastqファイルで、欲しいのはこれである。他2つはリファレンスから作られたエラー導入前のfasta配列とリファレンス、アライメント結果のファイルである。

 

生成されたfastqをもとの配列にアライメントしてみる。

bwa mem -x pacbio -t 12 ref.fa sd_0001.fastq > sd_0001.sam

sd_0001.fastqがPBSIMでジェネレートされたfastqファイルである。-x pacbio をつけ、

Pacbioのアライメントに最適化している("-k17 -W40 -r10 -A1 -B1 -O1 -E1 -L0"をつけるのと同じになる)。

 

sd_0001.samをsamtoolsでbamにしてソートし、IGVで開く。下はCLRのシミュレートリード。

f:id:kazumaxneo:20170617154716j:plain

数kbpのリードがアライメントされているが、indel、ミスマッチはやや多い。

 

 

CCSもテストする。

pbsim --data-type CCS --depth 20 --model_qc PBSIM-PacBio-Simulator-master/data/model_qc_ccs ref.fa

 bamにして、CLRのリードとエラーを比べてみる。

上がCCS、下が先ほどのCLRのリードである。一目見てCCSのエラーが減ってるのが分かる。

f:id:kazumaxneo:20170617161824j:plain

 

 

引用

PBSIM: PacBio reads simulator--toward accurate genome assembly
Ono Y, Asai K, Hamada M

Bioinformatics. 2013 Jan 1;29(1):119-21.

 

contigからScaffoldを作るツール

contigからScaffoldを作るツールがいくつか発表されているので試してみる。

 

 

SSPACE-LONGREAD

ダウンロードリンク

https://www.baseclear.com/genomics/bioinformatics/basetools/SSPACE-longread

ダウンロードには上記リンクから名前や所属の入力が必要。登録するとダウンロードリンクに飛び、SSPACE-STANDARDやSSPACE-LONGREADなどをダウンロードできるようになっている。

インストー

本体はperlスクリプトである。macでもperlのモジュール

Perl4::CoreLibs - search.cpan.orgを入れておくとランは可能だったが、scaffoldingが全く起きなかったので多分正常に動いてないと考えられる。早々に諦めcent OSにインストールした。

本体を公式リンクからダウンロードして解凍し、perl SSPACE-LongRead.plをフルパスで打ち込めばランできる。

 

 ラン

perl SSPACE-LongRead.pl -t 12 -c contig.fasta -p long_read.fa -b test
  • -c  Fasta file containing contig sequences used for scaffolding (REQUIRED)
  • -p  File containing PacBio CLR sequences to be used scaffolding (REQUIRED)
  • -b  Output folder name where the results are stored (optional, default -b 'PacBio_scaffolder_results')
  • -t  The number of threads to run BLASR with

-pでPacbioなどのロングリードを指定する。Pacbioのロングリードシーケンスデータでなくてもfastaファイルであれば利用可能で、例えばナノポアリードも使うことができる。

 

 

 

 

 

 

SMIS

サンガー研の開発した、nanoporeやPacbioのロングリードを使ってScaffoldを構築するツール。

http://www.sanger.ac.uk/science/tools/smis

 

公式サイトからbinaryがダウンロードできる(リンク)。ただしmacでは動かないのでcent OSでランする。

 

 ラン

./smis_pipeline -nodes 20 -score 50 -len 2000 -step 200 -contig 3000 -edge 5 <ONT_fasta/q_file> <assembly_fasta/q_file> <scaffold-output.fasta_file> 
  • nodes - number of CPUs requested
  • score - minimum smith-waterman alignment score to report a hit
  • len - length of fregments of fake mate pairs
  • step - jump length to cut out fregments
  • contig - minimum contig length to be included for scaffolding
  • edge - minimum number of edges to confirm a merge

となっている。smis_pipelineはフルパスで指定しないとエラーになった。

 

 

OPERA-LG

ダウンロードリンク

マニュアル 

OPERA-LGは、ショートリードのペアリード情報やロングリード情報を使ってcontigからscaffoldを構築するツール。macでもインストール可能なようだが、依存ツールの関係でcent OSに入れた。

 

ソースコードをダウンロードして、OPERA-LGのルートディレクトリで

make install

だけでビルドできる。

ランするには、bwa、samtools、blasr、OPERA-LGのbin/にパスが通っている必要がある。マニュアルHPにはテストデータも用意されている。 

 

ロングリード情報を使いscaffoldを作るには、contigファイルとロングリードファイルの他に、contigを作った時のペアリードファイルも必要である。

例えばランは以下のようなコマンドになる。

perl bin/OPERA-long-read.pl \
--contig-file contigs.fa \
--illumina-read1 illumina_1.fastq.gz \
--illumina-read2 illumina_2.fastq.gz \
--long-read-file nanopore.fa \
--output-prefix opera-lr \
--output-directory RESULTS

--contig-fileでショートリードから作ったcontigファイルを指定する。

 

追記

ファイルがないと怒られた場合、フルパスで指定する。

 

 

 

その他、NaShttp://www.genoscope.cns.fr/externe/nas/)などもテストしたかったが、Nasのランに必要なNewblerのスクリプトがRocheからダンローどできなくなっていたので諦めた。

 

 

ツールを使って見た結果は以下のエントリーを参考にしてください。

 

 

 

 

 

 

 

 

 

引用

SSPACE-LongRead: scaffolding bacterial draft genomes using long read sequence information

Marten Boetzer and Walter Pirovano

BMC Bioinformatics201415:211 DOI: 10.1186

https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-15-211

 

Mind the Gap: Upgrading Genomes with Pacific Biosciences RS Long-Read Sequencing Technology

Adam C. English*, Stephen Richards, Yi Han, Min Wang, Vanesa Vee, Jiaxin Qu, Xiang Qin, Donna M. Muzny, Jeffrey G. Reid, Kim C. Worley, Richard A. Gibbs

PLoS ONE 7(11): e47768. doi:10.1371

Mind the Gap: Upgrading Genomes with Pacific Biosciences RS Long-Read Sequencing Technology

 

OPERA-LG: efficient and exact scaffolding of large, repeat-rich eukaryotic genomes with performance guarantees

Song Gao†, Denis Bertrand†, Burton K. H. Chia and Niranjan NagarajanE Genome Biology201617:102 DOI: 10.1186

https://genomebiology.biomedcentral.com/articles/10.1186/s13059-016-0951-y

 

 

QUAST: quality assessment tool for genome assemblies 

Alexey Gurevich Vladislav Saveliev Nikolay Vyahhi Glenn Tesler

Bioinformatics (2013) 29 (8): 1072-1075. DOI: 

https://academic.oup.com/bioinformatics/article-lookup/doi/10.1093/bioinformatics/btt086

 

 

 

 

 

 

 

Oxford nanoporeやpacbioのロングリードのアセンブリツール canu

2018 10/23 追記 

2019 1/16 追記5

2019 3/16 bioconda追記6、canu -hヘルプ追記

2019 3/18 追記7

2019 4/12 追記8 dcokerリンク追加

2019 5/14 追記8リンク追加

2019 8/4 説明追加

2019 8/14 リンク追加

2019 11/5 canu v1.9 updateのお知らせtwitter追加

2019 11/11 biocondaインストールリンク追加、dockerを使ったrrun例を修正

2020 9/5 2.1 ツイート追記

 

 1分子ロングリードシークエンシングはデノボゲノムアセンブリに革命をもたらし、参照品質ゲノムの自動再構成を可能にした。しかしながら、そのような技術の比較的高いエラー率を考慮すると、大きなリピート配列および密接に関連するハプロタイプの効率的かつ正確なアセンブルは依然として困難である。これらの問題は、ノイズの多い単一分子シーケンス用に特別に設計されたCelera Assemblerの後継製品であるCanuで解決する。 Canuはナノポアシークエンシングをサポートし、カバレッジ深度の要件を半分にし、アセンブリのcontiguityを向上させると同時に、Celera Assembler 8.2と比較して大きなゲノムでランタイムを一桁も短縮する。これらの進歩は tf-idf weighted MinHash と sparse assembly graph constructionによってリピートやハプロタイプによる崩壊を防ぐアセンブリアルゴリズムの結果である。著者らはCanuがPacific Biosciences(PacBio)またはOxford Nanoporeのいずれかを用いて完全なバクテリアゲノムおよびほぼ完全な真核生物染色体を確実にアセンブルし、ヒトおよびショウジョウバエのPacBioデータセットで> 21MbpのコンティグNG50を達成することを示す。

 

CanuはPacbioやnanoporeなどの1分子シーケンス用のアセンブラとして開発された。下記にはCanuを使ってヒトゲノムのアセンブリを行った例が紹介されている。

canuはPBcRの後継にもなっており、PBcRのダウンロードページでは、特別な理由がない限りPBcRの代わりにcanuをロングリードのアセンブリに使うことを推奨している。

http://wgs-assembler.sourceforge.net/wiki/index.php/PBcR

  

 

インストール

github


macはbinaryのみ提供されている。version1.5のページのcanu-1.5.Darwin-amd64.tar.xzをダウンロードした(mac OSXはDarwin系列のunix)。ダウンロードが終わったら解凍する。

gunzip -dc canu-1.5.Darwin-amd64.tar.xz | tar -xf -

できたディレクトリを適切な場所に移動させる。

ディレクトリ中Darwin-amd64/binに本体が入っているので、そこにパスを通せばランの準備は整う。

 追記6

#bioconda(link)2019年11月現在1.9が最新
conda install -y -c bioconda canu

 

dockerhubにdockerイメージもたくさん上げられている。

https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=canu&starCount=0

ここではbiocontainerのイメージを使う(tagリンク)。

docker pull biocontainers/canu:v1.8dfsg-2-deb_cv1

#カレントにデータがあるなら以下のような感じでランできる。ONTのデータ
docker run --rm -itv $PWD:/data/ -w /data biocontainers/canu:v1.8dfsg-2-deb_cv1 \
canu -p test -d assembly-directory genomeSize=4.8m -nanopore-raw oxford.fasta

canu

$ canu

 

usage: canu [-correct | -trim | -assemble | -trim-assemble] \

            [-s <assembly-specifications-file>] \

             -p <assembly-prefix> \

             -d <assembly-directory> \

             genomeSize=<number>[g|m|k] \

             errorRate=0.X \

            [other-options] \

            [-pacbio-raw | -pacbio-corrected | -nanopore-raw | -nanopore-corrected] *fastq

 

  By default, all three stages (correct, trim, assemble) are computed.

  To compute only a single stage, use:

    -correct       - generate corrected reads

    -trim          - generate trimmed reads

    -assemble      - generate an assembly

    -trim-assemble - generate trimmed reads and then assemble them

 

  The assembly is computed in the (created) -d <assembly-directory>, with most

  files named using the -p <assembly-prefix>.

 

  The genome size is your best guess of the genome size of what is being assembled.

  It is used mostly to compute coverage in reads.  Fractional values are allowed: '4.7m'

  is the same as '4700k' and '4700000'

 

  The errorRate is not used correctly (we're working on it).  Don't set it

  If you want to change the defaults, use the various utg*ErrorRate options.

 

  A full list of options can be printed with '-options'.  All options

  can be supplied in an optional sepc file.

 

  Reads can be either FASTA or FASTQ format, uncompressed, or compressed

  with gz, bz2 or xz.  Reads are specified by the technology they were

  generated with:

    -pacbio-raw         <files>

    -pacbio-corrected   <files>

    -nanopore-raw       <files>

    -nanopore-corrected <files>

 

Complete documentation at http://canu.readthedocs.org/en/latest/

 

ERROR:  Assembly name prefix not supplied with -p.

ERROR:  Directory not supplied with -d.

ERROR:  Invalid 'corErrorRate' specified; must be set

ERROR:  Required parameter 'genomeSize' is not set

追記

canu-racon dockerイメージ

https://hub.docker.com/r/staphb/canu-racon/

 

 

テストラン

公式ページで提供されているnanoporeのシーケンスデータ(fastaに変換されている)を使って、テストランを行う。

curl -L -o oxford.fasta http://nanopore.s3.climb.ac.uk/MAP006-PCR-1_2D_pass.fasta

oxford.fasta (145MB) がカレントディレクトリにダウンロードされる。

アセンブル

canu -p ecoli -d assembly-directory genomeSize=4.8m -nanopore-raw oxford.fasta

プリフィックスとしてecoliという名前をつけている。-dでランディレクトリを指定する。今回だとassembly-directoryディレクトリの中で、アセンブル前のエラーコレクション、エラーのトリミング、unitig作成が行われる。

ランが進むと、作業ディレクトリにレポートが出力される。

correction.htmlを開く。

f:id:kazumaxneo:20170616135136j:plain

correction.html.files/中にはRで描かれたと思われるオリジナルのjpgが保存されている。インサートサイズのjpgを開く。

f:id:kazumaxneo:20170616135633p:plain

ポアソン分布に近い裾野が長い分布になっている。

 

ランが進むと、trimming.htmlができる。開くとトリミングに関するレポートをみることができる。

 

 Pacbioのデータでも試してみる(Pacbioのテストラン)。

ダウンロード

curl -L -o p6.25x.fastq http://gembox.cbcb.umd.edu/mhap/raw/ecoli_p6_25x.filtered.fastq

p6.25x.fastq (233MB) がカレントディレクトリにダウンロードされる(fastqになっている)。

アセンブル

canu -p ecoli -d ecoli-auto genomeSize=4.8m -pacbio-raw p6.25x.fastq

 

エラーコクレションされたリード 

f:id:kazumaxneo:20190805015908p:plain

 

 

エラーの多い1Dのデータをアセンブルすると、Miniasmだとできないなりに最後までプロセスは進みますが、canuはerrorで止まルようです。あまりにノイジーアセンブルできないなら、ナノポアのロングリード自体でロングリードをpolishするか、illuminaのショートリードでポリッシュするようなフローが必要になります。ご注意ください。

以下の論文では5つのエラー修復方法を検討しています。

https://www.nature.com/articles/srep28625

 

 

追記1  2018/03時点ですでに100回以上引用されている(リンク)。中にはONTリードをcanuでアセンンブルして、ドラフトゲノムとしてgenome anouncementに出した論文も出てきている。。

 canuは特にパラメータ設定次第でアセンブル結果がかなり変化するので、最適化するには複数回繰り返すのが望ましいでしょう。

 

 

追記4

Flyeというロングリードのアセンブラも出てきています。試した限り、canuより短時間かつ少ないリソースでアセンブリできました。アセンブリ精度についても、canuと同等か、それ以上になりました。ぜひcanuとFlye両方試してみてください。


追記5

canu 1.8に関するツイート

 

 

追記7

canuの最適化 


追記9

他のツールとの比較。

 

日本語だとこちらが参考になります。


 

 

引用

Canu: scalable and accurate long-read assembly via adaptive k-mer weighting and repeat separation.

Koren S, Walenz BP, Berlin K, Miller JR, Bergman NH, Phillippy AM

Genome Res. 2017 May;27(5):722-736. 

 

 

 

 

 

 

 

 

 

ナノポアリードの分析ツール

 

2017年現在、すでにOXford nanoporeの分析ツールは色々発表されている。いくつかインストールとして実際に使ってみた結果を紹介する。

 

NanoOK

  

インストール

マニュアルページ

https://documentation.tgac.ac.uk/display/NANOOK/NanoOK+tutorial

本体以外に必要なものが記載されている。

  1. Java SE runtime environmenta.
  2. R statistical environment 
  3. LaTeX environment
  4. HDF5 tools
  5. LAST
  6. Git 

 

java SE、git、Rはたいていの人が持っているので、他のツールのインストールを行う。詳細は公式ページをみてください。

brew install LAST #ない人だけ
brew cask install mactex #LATEXのインストール 数時間かかった。

HDF5 toolsのbinaryリンク。

Obtaining the HDF5-1.8.7 Software

Mac OS X 10.7.0 (Intel 64-bit) を選んでダウンロードした。ダウンロードが終わったら適切な場所に移動させてhdf5-1.8.7-mac-intel-x86_64-shared/bin/へパスを通す。

 

テストラン

fast5からfastaを抽出し、アライメントしてレポートを出力するまでの流れをテストする。

 

1、NanoOK公式ページfast5テストデータをダウンロードする (約500MB)。

ダウンロードしたデータはE.coliをナノポアでシーケンスしたもので、中にはfast5のディレクトリとリファレンス配列のフォルダが入っている。

 

ダウンロードしたN79596_dh10b_8kb_11022015/のreferenceに移動してLASTのインデックスを作成する。

cd N79596_dh10b_8kb_11022015/references/ #移動
lastdb -Q 0 ecoli_dh10b_cs ecoli_dh10b_cs.fasta #index作成

LASTのindexファイルであるecoli~というファイルが7つできる。

 

2、fast5からfastaを抽出。

nanook extract -s N79596_dh10b_8kb_11022015

-sでfast5のディレクトリN79596_dh10b_8kb_11022015/を指定している。

 

--参考-- N79596_dh10b_8kb_11022015/にはfail/とpass/ディレクトリが入っている。

f:id:kazumaxneo:20170616141826j:plain

 

  passを展開すると、このようにたくさんのファイルが見つかる。

f:id:kazumaxneo:20170616141804j:plain

 

nanookコマンドでfastaの抽出を行うと、fasta/とlogs/ができる。

f:id:kazumaxneo:20170616141958j:plain

 

 

3、aリファレンスへのLASTを使ったアライメントを実行する。1でインデックスをつけたリファレンスを使う。

nanook align -s N79596_dh10b_8kb_11022015 -r references/ecoli_dh10b_cs.fasta

-sでfast5のディレクトリN79596_dh10b_8kb_11022015/を指定

-rでリファレンスを指定。

 N79596_dh10b_8kb_11022015/の中にlastディレクトリができる。

 

 

 

4、

レポートを出力する。

nanook analyse -s N79596_dh10b_8kb_11022015 -r references/ecoli_dh10b_cs.fasta -passonly

 

latex_last_passonly/にN79596_dh10b_8kb_11022015.texができる。これをアプリのtexで開き、

f:id:kazumaxneo:20170616231129j:plain

左上のダイプセットボタンをクリックするとレポートのpdfが現像される。

 

pdfはこのようなファイルになっている。

f:id:kazumaxneo:20170616231243j:plain

 

f:id:kazumaxneo:20170616232406j:plain

f:id:kazumaxneo:20170616232443j:plain

f:id:kazumaxneo:20170616232450j:plain

 

 

 

 

 

 

 

 

 

引用-------------------------------------------------------------------------------------------------------------

NanoOK

NanoOK tutorial - NanoOK - Earlham Institute Documentation

ゲノムの相同性の高い領域の網羅的な検索 LAST

2019 6/9 biocondaインストール追記

2021 2/19 曖昧な日本語を修正

2021 7/28 maf-convert追記

 

 ゲノム配列のアラインメントは多くの研究の基礎を成している。ゲノムアラインメントは、さまざまな日常的ではあるが重要な選択、たとえばリピートをマスクする方法や使用するスコアパラメータに依存する。驚くべきことに、実際のゲノムデータを用いたこれらの選択の大規模な評価はない。さらに、疑わしいアライメントの速度を制御するための厳密な手順は採用されていない。

 動物、植物、真菌ゲノムのアラインメントについて、495のスコアパラメータの組み合わせを評価した。我々の正確さのゴールドスタンダードとして、我々はタンパク質と構造RNAのマルチプルアラインメントによって暗示されるゲノムアラインメントを使用した。UCSCゲノムデータベースにおけるアラインメントの基礎をなすHOXDスコアリングスキームが最適からは程遠いことを見出し、そしてより良いパラメーターを示唆する。 X-dropパラメータの値が大きいほど、必ずしも良いとは限らない。 E値は疑わしいアライメントの割合を正確に示すが、これはタンデムリピートが非標準的な方法でマスクされている場合に限られる。最後に、γ-セントロイド(確率的)アラインメントがアラインメントされた塩基の信頼性の高いサブセットを見つけることができることを示す。

 

 

マニュアル

http://last.cbrc.jp/doc/last-tutorial.html

 

インストール

condaやbrewワンライナー導入できる。

 #bioconda (link)
cponda install -c bioconda -y last

#homebrew
brew install LAST

 

ラン 

相同性の高い領域を検索するには、はじめに比較するリファンレスゲノム(ref.fa)のインデックスを作る必要がある。

lastdb -cR01 db ref.fa

いくつか.dbファイルができる。

 -cR01でcacacacacacacacacacacacaなど単純リピートのアライメントが除かれる。

 

比較したいゲノム配列(compare.fa)を指定して以下のコマンドを打つ。

lastal db qurry.fa -P0 > myalns.maf

 比較結果がmyalns.mafに保存される。

 -P: CPU数。maxまで使うなら-P0

 

結果を表示するには-Sをつけてlessを打つ(-S 長い文字列を改行せず表示)。

less -S myalns.maf

f:id:kazumaxneo:20170623142453j:plain

このような画面が表示される。先頭部分のみ載せた。

 

比較するゲノムがリアレンジメントを起こしており、 途中で配列を切ってアライメントさせる必要がある場合、last-splitに出力をパイプすることが推奨されている(RNAとゲノムの比較など)。

lastal db qurry.fa -P0 | last-split > myalns.maf

 

mafフォーマットからsamへの変換はmaf-convertを使う(last)。このツールでmafからaxt, blast, blasttab, html, psl, sam, tabへ変換できるmamba install -c bioconda last -y )。

maf-convert sam myalns.maf -r ''ID:X SN:Lambda_NEB LN:48502' > last-alignments.sam

 

 

 

LASTは次世代シークエンシングリードのアライメントにも使うことができる。 まずindexを作る。

lastdb -uNEAR -R01 db re.fa

 -uNEARで短いが強い相同性を示すものをアライメントするスキームになる。

 

fastqのアライメントを行う。

lastal -Q1 -D100 db queries.fq | last-split > myalns.maf

ランタイムはあまり短くない。おおよそ10万リードで1分程度の時間がかかる。 

 

 LASTを使ってエラーの多いnanoporeリードをアライメントする設定は、以下の記事を参考にしてください。


 

 

proteinの相同性探索を行うこともできる。流れは塩基配列の場合と同じである。

比較するリファンレスアミノ酸配列(ref.aa)のインデックスを作る。

lastdb -cR01 db ref.aa

 

比較したいゲノム配列(compare.fa)を指定して以下のコマンドを打つ。

lastal db query.aa > myalns.maf

LASTは、長い配列ならば相同性がある程度低くても見つけるスコア設定になっている。40.a.aより短い相同性が非常に高いアミノ酸配列を見つけるなら-pPAM30をつけることが推奨されている (example 4)。

lastal -pPAM30 db query.aa > myalns.maf

 

less -Sで結果を見る。

f:id:kazumaxneo:20170623143459j:plain

 

LASTのレシピは公式サイトに色々紹介されている。

LAST Tutorial

 

 

引用

Parameters for accurate genome alignment
Martin C Frith, Michiaki Hamada, Paul Horton

BMC Bioinformatics. 2010; 11: 80

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Oxford Nanoporeリードのマッピング

7/10 LAST コマンドミス修正

  

bwa memとLASTがナノポア向けにチューニングされたとナノポア公式ページでアナウンスされている。

https://nanoporetech.com/publications/bwa-and-last-have-been-tuned-work-nanopore-reads

bwa memはショートリード時代から1Mbpのリードのマッピングに対応していた有名なアライメントツールである。LASTはゲノム中の相同性の高い領域を探すために開発されたツールである。また、2016年にはGraphmapというロングリードのアライメントツールがnature communicationsに発表されている(ref.1)。この辺りを導入して、パフォーマンスを比較してみる。

 

LASTとbwaはbrewコマンドでmacに導入できる。(ない人だけ)。

brew install bwa
brew install LAST

 

1、bwa mem

bwa memを使ってnanopore readをリファンレスマッピングするには、bwaのバージョン0.7.11から導入されたnanopore用のオプションを使うのが良いとされる。

bwa mem -x ont2d -t 20 ref.fa R1.fq R2.fq > nanopore.sam
  • -t  number of threads [1]
  • -R read group header line such as '@RG id:foo SM:bar' [null]

 

-x ont2Dでナノポアリード向けのパラメータの一括調整を行なっている。このオプションをつけると-k14 -W20 -r10 -A1 -B1 -O1 -E1 -L0と同じ意味になる。

  • -k INT        minimum seed length [19]
  • -W INT        discard a chain if seeded bases shorter than INT [0]
  • -r FLOAT      look for internal seeds inside a seed longer than {-k} * FLOAT [1.5]
  • -A INT        score for a sequence match, which scales options -TdBOELU unless overridden [1]
  • -B INT        penalty for a mismatch [4]
  • -O INT[,INT]  gap open penalties for deletions and insertions [6,6]
  • -E INT[,INT]  gap extension penalty; a gap of size k cost '{-O} + {-E}*k' [1,1]
  • -L INT[,INT]  penalty for 5'- and 3'-end clipping [5,5]

スコアの変更点を見るに、ミスマッチやギャップアライメントのペナルティーを下げ、最初のマッチングに使われるシード領域も短くしてアライメントが伸びるように工夫されたものと思われる。

Pacbioのリードは -x pacbioをつける。

 

詳細はこちらを確認してください。bwa memのパラメータチューニングをロングリードに向けどう変更していくかについて触れられています。Heng LiさんのBlogです。

BWA-MEM for long error-prone reads

 

 

 

2、LAST

LASTのチュートリアルHP LAST Tutorial

 リファンレンスのindexを作る。

lastdb -uNEAR -R01 db ref.fa
  •  uNEAR selects a seeding scheme that makes it better at finding short-and-strong similarities. (It also changes the default scoring scheme.)
  • -R01 単純リピートへのマッピング抑制

 

アライメントを行う。

lastal -Q1 -q1 -r1 -a1 -b1 -P0 db input.fq | last-split > myalns.maf
  • -r: match score (2 if -M, else 6 if 0<Q<5, else 1 if DNA)
  • -q: mismatch cost (3 if -M, else 18 if 0<Q<5, else 1 if DNA)
  • -a: gap existence cost (DNA: 7, protein: 11, 0<Q<5: 21)
  • -b: gap extension cost (DNA: 1, protein: 2, 0<Q<5: 9)
  •  -Q: input format: 0=fasta, 1=fastq-sanger, 2=fastq-solexa, 3=fastq-illumina, 4=prb, 5=PSSM (0)
  • -P: number of parallel threads (1). #P0でmaximum

 mafフォーマットからsamへの変換はmaf-convertを使う(マニュアル)。このツールでmafからaxt, blast, blasttab, html, psl, sam, tabへ変換できるマニュアルリンク)。

maf-convert sam myalns.maf -r 'ID:X SN:Lambda_NEB LN:48502' > last-alignments.sam

リードグループも加えて変換する。ただし、できたsamのリードグループ情報2行目

@HD VN:1.3 SO:unsorted

@RG ID:X SN:Lambda_NEB LN:48502

のRGはSQに変えないとsam->bam変換でsamtools viewでエラーになってしまう(リードグループ)。vimかvi等で修正しておく。

 

アライメントのパラメーター設定であるが、bwaの戦略と方向性は同じで、ミスマッチペナルティやギャップペナルティを下げることでアライメント感度を高めている。特にgap existence costは標準の7-->1へと大きく下げている。このパラメータはONTリードをバクテリアにアライメントさせた論文(ref. 3)でも用いられている。

Both LAST alignment settings use a match score of 1 (-r1), gap opening penalty of 1 (option -a1) and a gap extension penalty of 1 (option -b1). Values of 1 (-q1) and 2 (-q2) were tried for the nucleotide substitution penalty parameters.

 

LASTの開発チームはONTリードをアライメントさせるパラメータについて特設ページを設けて考えを述べている。リンク=>

last-rna/last-long-reads.md at master · mcfrith/last-rna · GitHub

 

 

 

 

3、Graphmap

macにインストールするのは面倒そうだったので、cent OSにインストールした。

git clone https://github.com/isovic/graphmap.git 
cd graphmap
make modules
make

make modulesでmake前に必要なものをダウンロードしている。

 

ビルドしてできた/graphmap/bin/Linux-x64/に本体が入っている。パスを通す。リファレンスへのアライメントは

graphmap align -t 12 -r ref.fa -d reads.fasta -o output.sam  

-t:  thread数

-d: シーケンスデータ(fasta、fastqに対応)。

-r: リファレンスファイル指定

-o: 出力

 

  

1−3の方法で作ったsamそれぞれをbamに変換してソート。 

samtools view -@ 20 -bS input.sam |samtools sort -@ 20 -o sorted.bam

最初の方からパイプで繋いでも良い。

bamのindexをつける。

samtools index sorted.bam

 

 

 検証

MNIONの1dモードでλコントロールを1時間ほど読んだデータを使う。データは

fasqに変換し、Porechopでトリムしてある。リファレンスのλゲノム配列 (47kb)NCBIからダウンロードした。

 

0、アライメント状況

gifを貼ると重くなるので動画でリンクを貼る。λに貼り付けた時のエラーの出方はこんな感じになる(上半分がbwa mem、下半分がgraphmap)。

 

1、カバレッジ

samtools depth dorted.bam > depth.txt

平均カバレッジ(read depth / bp)は以下のようになった。

  1. bwa mem (-x ont2dなし1515  (1515)
  2. bwa mem (-x ont2dあり)1694  (1695)
  3. LAST           1772  (1774)
  4. graphmapデフォルト条件  1692 (1692)

( )はアダプタートリミング前のfastqを使った時の結果。

 

IGVでミスマッチの出方を見る。

f:id:kazumaxneo:20170620142250j:plain

Preferenceからtrack heightを300に変えて見やすくしている。上から、

  1. bwa mem (-x ont2dなし
  2. bwa mem (-x ont2dあり)
  3. LAST
  4. graphmap

の順である。ぱっと見、一番ミスマッチが少なそうなのはgraphmapである。

 

2、mapされたリードの割合。

samファイルの3フィールド目の*(unmap)を数えて算出した。結果をまとめると

  1. bwa mem (-x ont2dなし => 84.5 %(84.5)
  2. bwa mem (-x ont2dあり) => 82.3 %(82.3)
  3. LAST            => 100 %(100 %)
  4. graphmap         => 81.6 %(81.6)

( )はアダプタートリミング前のfastqを使った時の結果。

 

 

 

 

LASTはすべてのリードがλゲノムにアライメントされていた。ここで考えるべきは、LAST以外のマッパーでアライメントできなかった配列は何かである。

perlスクリプトを使いunmapのリードを抽出し、NCBIのblastにかけて調べてみることにした。まずmegablastとdiscontiguous megablastにかけたが、ヒットした配列が0になった。そこで断片的に似た配列を検索できるSomewhat similar sequences (blastn)を使ってみた。その結果、ヒットが出た配列は半分ほどになった。ただし、ほとんどがラムダに関係ないゲノムとの局所的なマッチだったので、Organismをλゲノムに限定してやり直した。そうすると、本数はわずかであるが、リードが部分的にλゲノムと一定の相同性を示すリードがあることがわかった。その画面を貼っておく。

f:id:kazumaxneo:20170620180259j:plain

 黒いブロック1つは50bpほど。

 

f:id:kazumaxneo:20170620180626j:plain

 赤いブロックのアライメントを貼っておく。

f:id:kazumaxneo:20170620180719j:plain

 できればこうゆうリードはclippingしてアライメントして欲しいところ。 

 

マッピングできなかったリードの大半は、よくわからないリードであった。信号がどこでおかしくなるのかは不明だが、fast5からの変換ツール次第で結果が変わる可能性もある。

 

 

 

 

アライメントされたリードの平均サイズ

 Picardの CollectAlignmentSummaryMetrics を使う。

picard CollectAlignmentSummaryMetrics I=sorted.bam OUTPUT=aln_sum_metric.tsv
  1. bwa mem (-x ont2dなし => 6073 bp(6107)
  2. bwa mem (-x ont2dあり) => 6073 bp(6107)

( )はアダプタートリミング前のfastqを使った時の結果。

graphmapとLASTで作ったbamはエラーになった。

 

Picardの代わりに、BAMstatsで4つのbamを比較する。順番は以下の通り、前と逆の順番にしてしまった。見にくくて申し訳ないです。

  1. graphmap
  2. LAST
  3. bwa mem (-x ont2dあり)
  4. bwa mem (-x ont2dあり)

アライメントされたリードの平均サイズ

f:id:kazumaxneo:20170620162746j:plain

 

カバレッジ

f:id:kazumaxneo:20170620162540j:plain

 

マッピングクオリティ

f:id:kazumaxneo:20170620163056j:plain

 

今回試した中では、graphmapが一番マッピング率とエラー率の少なさのバランスが取れているように感じた (計算時間はbwa memよりは劣るが悪くはない)。

 

 

追記

他のマッパーも出てきています。


引用 

 1、Fast and sensitive mapping of nanopore sequencing reads with GraphMap

Ivan Sović, Mile Šikić, Andreas Wilm, Shannon Nicole Fenlon, Swaine Chen & Niranjan Nagarajan

Nature Communications 7, Article number: 11307 (2016) doi:10.1038/ncomms11307

 

 2、LAST: Genome-Scale Sequence Comparison

LAST: genome-scale sequence comparison

 

3、A reference bacterial genome dataset generated on the MinION™ portable single-molecule nanopore sequencer

Joshua Quick,1,2 Aaron R Quinlan,3 and Nicholas J Loman Gigascience. 2014; 3: 22.

Published online 2014 Oct 20. doi: 10.1186/2047-217X-3-22

A reference bacterial genome dataset generated on the MinION™ portable single-molecule nanopore sequencer

 

関連


 

 

 

blast解析からArtemis comparison tool 起動まで自動で行うラッパーツール

ローカルblastは通常genbankファイルを扱えない。そのため、ACTのようなツールでゲノム比較を行うためには以下のような面倒な流れを取る必要がある。

 

gbkファイルの入手。

fastaファイルの抽出(またはgenbankと同じfaファイルの入手)

ローカルblast、またはblastサーバーで総当たりblast解析

ACTを起動して、genbankファイルとblast結果テキストを読み込ませる。

ゲノムの比較

  

となり、比較が3生物以上になると作業はかなり煩雑になる。Bryan Weeが開発したラッパーツールbwastはこの作業を半自動化するものである。ツール導入後、ワークフローは以下のようになる。

 sample1-3を比較するなら、以下のように打つ。

bwast.py sample1.gbk sample2.gbk sample3.gbk -a
  • -a, --act Run ACT after performing BLAST 

bwastがfastaファイルの抽出、総当たりblast、ACTの起動を自動処理。

ゲノムの比較

 

 

面倒な部分を完全自動化できていることが分かる。

以下の動画は、このbwastを使って2つのgenbankを比較する例である。解析スタートからACT起動まで30秒程度で済んでいる。


genbankファイルのblast解析を簡単に行うためのツール

 

 

 bwastと必要なツールのダウンロード

作者のGithubページからダウンロードできる。

pythonスクリプトなので、ビルドは必要ない。bwast-master/bwast.pyにパスを通すすだけでどこからでもランできる。

git clone https://github.com/bawee/bwast.git
cd bwast/

python bwast.py -h

$ python bwast.py -h

usage: bwast.py [-h] [-f FLAGS] [-v] [-a] [-b {blastn,tblastx}]

                input [input ...]

 

Wrapper script to run blast on Genbank/EMBL files without having to first convert to fasta.

    

Input: Genbank, EMBL or Fasta

    

Requires: BLAST+, ACT and BioPython on your PATH

    

 

positional arguments:

  input                 Specify at least 2 input files

 

optional arguments:

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

  -f FLAGS, --flags FLAGS

                        Custom BLAST options, enclosed in quotes. E.g. -f '-task blastn -evalue 0.001'

  -v, --verbose         Verbose mode

  -a, --act             Run ACT.

  -b {blastn,tblastx}, --blast {blastn,tblastx}

                        Blast program to use. Default [blastn]

——

 

ただし、本体の他にACT、blast+、biopythonが必要である。ない人は以下のコマンドでインストールする。

pip install biopython
brew install homebrew/science/blast

ACTは以前の記事でインストールについて書いている。 

http://www.sanger.ac.uk/science/tools/artemis-comparison-tool-actにアクセスしてmac版をクリック→ダウンロード後に解凍してできた4つのアプリファイルをApplications/にコピーする。

bwastの公式サイトにあるようにApplicationsにパスを通す。

export PATH="$PATH:/Applications/Artemis.app/Contents"

これで準備は完了。

 

 

 

ラン

 

genbankファイル2つを比較。

bwast.py -a sample1.gbk sample2.gbk 
  • -a, --act Run ACT after performing BLAST

  • -b {blastn,tblastx}, --blast {blastn,tblastx} Blast program to use. Either tblastn or blastn. Default is blastn

デフォルトではblastnが実行される。-aをつけないと、ACTは自動起動しない。

 

領域を指定

bwast.py sample1.gbk 200..2000 sample2.gbk 7000..9000

 

eバリューをblast+のデフォルトから変更。

bwast.py -a sample1.gbk sample2.gbk -f '-evalue 0.0001'
  • -f FLAGS, --flags FLAGS Custom BLAST options, enclosed in quotes. E.g. -f '-task blastn -evalue 0.001'

 

blastプログラムをデフォルトのblastnからtblastxに変更。

bwast.py -a sample1.gbk sample2.gbk -f '-evalue 0.0001' --blast tblastx

 

3つ以上のファイルを比較。

bwast.py -a sample1.gbk sample2.gbk sample3.fa sample4.gbk 

sample3はfastaファイルである。

 

感度を上げないならtblastxなどに変えてみるとよい。ただし時間は相応にかかる。

 

詳細は公式ページを見てください。

GitHub - bawee/bwast: Command line BLAST made-easy

 

 

追記