macでインフォマティクス

macでインフォマティクス

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

アンプリコンシーケンスのindelを検出する Amplicon Indel Hunter

 

 次世代シークエンシング(NGS)技術の性能とコストにより、臨床検査機関への採用を推進し続けており、これによって従来の多くの分子遺伝学的解析システムの書き換えが急速に進んでいる。これは腫瘍診断領域において特に当てはまり、low mutant allelic frequencies (MAFs)を含む、臨床的に関連する突然変異の検出でゲノム領域の大幅な拡大を可能にした。

 しかしながら、NGSは、癌研究および臨床試験において、単一ヌクレオチド変異の検出および小さな挿入および欠失(indels)のための優れた感度および特異性プロフィールを有することが判明しているが、多くの研究室はより大きなindels(> 20 bp)の検出には、いまだ伝統的な臨床検査技術を好んで使っている。結果として、このような突然変異に対して十分な臨床的および分析的感受性を保証するために、従来の平行した方法がしばしば用いられる。

 indelがwetのラボラトリーのライブラリ作成手法に干渉していないならば、NGSの indel の感受性の低さの原因は、たいていのNGSベースのアライメントソフトウェアに依存したバイオインフォマティクスパイプラインに原因がある。アライナーの品質にかかわらず、このようなアルゴリズムは全て、リファレンスゲノムとの配列相同性に依存しているハンディキャップがある(一部略)。

 癌検体の標的配列決定のため、ゲノムDNA調製に使用される多数のライブラリー調製法のうち、多くのアプローチは、関心領域をカバーする特定のアンプリコン生成物の生成法に依存する。このアンプリコンベースのNGSアプローチは、臨床検査室で広く使用されている。これらの調製サンプルは、標的上の速度の改善、個々の領域にわたる均一な深度プロファイル、およびより迅速なターンアラウンド・タイムを含む、ランダム断片化/ハイブリッドキャプチャの方法と比較していくつかの利点を有する。しかしながら、これらのライブラリーの短い断片の性質およびPCR産物に特徴的な均一な開始停止ゲノム位置は、ランダムハイブリッドキャプチャに基づく配列決定に一般的に使用される様々な大規模indel検出アルゴリズムの適用を妨げる。全ゲノムおよびハイブリッド捕獲配列決定アッセイにおいてindelsを検出するために多くの異なるアルゴリズムが利用可能であるが、これらはシーケンシングライブラリーの本質的に異なる性質のためにアンプリコンデータの分析には一般的にあまり適していない。これには、ローカルデノボアセンブリアルゴリズムと、ペアエンドリードのインサートサイズやマッピングされていなリードのsplitアライメントなどを行うBreakdancer(論文より ref.5)やPindel(ref.5)などのフラグメント解析メソッドが含まれる。

 以前に報告されたアンプリコンベースのNGSデータにおけるindel検出のための唯一の方法は、マッピングされていなリードの監視であり、特定のアンプリコンに対して異常な割合でアンマップが存在する場合、手動でraw fastqを分析する方法である。しかし、Novoalign(Novocraft、Inc.、Selangor、Malaysia)やBWA-MEM(ref.8)のような新しいアライナーは、大部分のindelを含むリードを上手くマップするが、リードをクリッピングしたり不適切な注釈を残す可能性がある。

 著者らは異なるアプローチを選択し、アンプリコンデータを利用して、臨床的に重要な体細胞変異(5bp>)を生のfastqファイルから、低い頻度のアレルまで含め、高感度に検出可能なAmplicon Indel Hunter (AIH)を開発した。In silicoの突然変異データセットでの試験を得て、検体のサンプルを使った比較では、AIHは、100bp以下のindelおよび100bp以上のindel検出で、確認済みindelsの検出のためのクラス最高のアライメントベースのアルゴリズムより優れていた。

 

インストール

依存

  • python2.7

Github

https://github.com/skadri01/aiHunter

git clone https://github.com/skadri01/aiHunter.git
cd aiHunter/

 > python amplicon_indel_hunter.py -h

$ python amplicon_indel_hunter.py -h

usage: amplicon_indel_hunter.py [-h] [-f R1FASTQ] [-r R2FASTQ] [-o OUTDIR]

                                [-i INFOFILE] [-c CUSHION] [-s SIGTHRESH]

 

optional arguments:

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

  -f R1FASTQ

  -r R2FASTQ

  -o OUTDIR

  -i INFOFILE

  -c CUSHION

  -s SIGTHRESH

uesaka-no-Air-2:aiHunter kazumaxneo$ 

 

ラン

テストデータをランしてみる。

 

解析には、ペアエンドのアンプリコンシーケンスfastqと、プライマー配列等記載したconfigファイル(example_data.amplicons.txt)、インサートのfasta(プライマー1と2の間の増幅配列(プライマー配列は除く)、が必要になる。exampleの例をのせておく。

example_data.amplicons.txt

f:id:kazumaxneo:20180406200730j:plain

example_data.inserts.fa

f:id:kazumaxneo:20180406201215j:plain

 

準備できたら、以下のようなコマンドを打つことで、変異が検出される。

python aiHunter.py --read1 example_data_R1_001.fastq --read2 example_data_R2_001.fastq --amp example_data.amplicons.txt --inserts example_data.inserts.fa 

 

出力  example_data_R1_001.fastq.R2fastq.finalindelstats.vcf

f:id:kazumaxneo:20180406201554j:plain

 

 

引用

Amplicon Indel Hunter Is a Novel Bioinformatics Tool to Detect Large Somatic Insertion/Deletion Mutations in Amplicon-Based Next-Generation Sequencing Data.

Kadri S, Zhen CJ, Wurst MN, Long BC, Jiang ZF, Wang YL, Furtado LV, Segal JP.

J Mol Diagn. 2015 Nov;17(6):635-43.

 

抗生物質耐性遺伝子のde brujin graphを出力する metacherchant

  

 抗生物質に対する微生物の抵抗性(抗生物質耐性、AR)の広がりは、世界的な医療問題である。多剤耐性の病原性微生物は特に危険性が高い。 AMR(O'Neill、2016)の報告書によれば、AR関連死亡者の負担は、2050年までに年間1000万人、世界的な経済的負担は100兆ドルに増加すると予測されている。耐性拡大に寄与する主な要因は、抗生物質の広範な医療利用および農業利用である(Rolain、2013)。

 ヒト腸内微生物叢はARの貯留庫である(Sommer et al、2009)。抗生物質治療の間、微生物と抵抗性物質の組成は大きく変化する可能性がある(Shashkova et al、2016; Wright、2007)。特定の遺伝子は、抗生物質に対する耐性を介してその担体微生物の利点を与えるため、豊富に増加し得る。一部は、水平移動によって他の細菌種に伝染する可能性がある。それらが消費された物質自体に抵抗性を与えない場合、そのような遺伝子を持つ同じmobile elementの共局在化のために、普及が起こり得る。同時に、他の遺伝子の存在は、薬物作用に起因するキャリアの減少した割合のために枯渇する可能性がある。

 腸内微生物叢内の遺伝子の水平伝達(HGT)のために、抗生物質を消費する世界人口の被験体の数によって増幅される抵抗性の増加は、病原性微生物が人体に生息する抵抗性共生微生物から遺伝的抵抗決定因子を得る機会を強く増加させる。したがって、抗生物質摂取中およびその後の抵抗力動態の同定ならびにヒトの腸内でのAR伝達の機序の同定は、現実のものである。

 世界中の集団における腸内抵抗性のメタゲノム分析は、抗生物質の使用および社会経済的要因に関連する医療の全国的な特徴が、抵抗性組成物ならびに環境からの補充の程度に反映されることを示した(Forslund et al、2013; Pehrsson et al、2016)。興味深いことに、抗生物質(Rampelli et al、2015)へのアクセスを持たない孤立した集団の腸のメタゲノムにおいても有意なレベルのARdeterminantsが検出され、微生物世界におけるAR伝達の性質を示唆した。

 個々のバクテリアゲノムの単離およびシークエンシングによって遺伝子レベルのAR決定因子を調べることができる(Dai et al、2016)。しかしながら、最新の技術でも、腸内微生物のわずかな割合しか培養することができない。一方、各ショットガンヒト腸内メタゲノムは、潜在的にコミュニティに存在するすべての主要な種についての情報を含んでおり、孤立した系統の配列決定から利用可能なデータを予測することを可能にする。個々のAR遺伝子またはオペロンのゲノム状況(環境)を探索することによって、AR遺伝子(Yarygin et al、2017a、b)の相対的存在量をより詳細なレベルで分析できる。この作業への一般的なアプローチには、メタゲノムデノボアセンブリおよびコンティグのその後の分析が含まれる。 AR遺伝子はコンティグ中で同定され、ゲノム内の遺伝子の位置とその遺伝子周辺のmobile elementsの組成を同定するためにゲノムを分析する。

 このようなシナリオは、遺伝子がメタゲノム内の単一の種に存在し、ゲノムにおいて正確に1回生じる場合にうまく機能する。しかしながら、ゲノムがいくつかのAR遺伝子コピーを含むことができるという事実に加えて、腸内微生物細菌叢は、亜種レベルの多様性、すなわち多様なゲノムを有する単一種の複数の亜種を示すことが知られている(Greenblum et al、2015)。さらに、単一被験者の腸内微生物叢内では、遺伝子が同時にいくつかの種に存在する可能性があり、抗生物質の影響下で活性化する可能性がある(Crémetet al、2012; Gorenら、2010)。言及された条件は、通常のメタゲノム集合の間、線状コンティグがゲノムリピートに対応する位置で終了する可能性があり、AR遺伝子の実際のゲノムコンテキストの単純すぎるコンセンサスイメージしか提供しないことを示唆している。そのような簡略化された表現は、環境を正しく評価することを可能にせず、したがって種の同定を妨げ、AR遺伝子のドナーおよびそれぞれのアクセプターを妨害する。In vivoでのAR進化のより正確な再構成技術は、患者に対する抵抗プロファイリングの効率および最適な抗生物質治療スキームの選択を改善する。グローバルヘルスケアの観点からは、それは抵抗性の広がりおよびその制御の重要な傾向の追跡を容易にするであろう。

 この論文ではMetaCherchantを紹介する。これは、local de Bruijn graphアセンブリに基づいた、メタゲノミックデータから抗生物質耐性遺伝子のゲノム環境をグラフの形で抽出するアルゴリズムである。このアルゴリズムは、いくつかのシミュレーションデータおよび公開データセットで検証され、抗生物質療法を受けたヘリコバクターピロリ患者の腸内微生物叢の新しい「ショットガン」メタゲノムにも適用された。MetaCherchantは、メタゲノムデータを用いてバクテリアのゲノム内の耐性遺伝子を有する可動要素の再構成を可能にする。差動モードにおけるMetaCherchantの適用は、抗生物質治療の結果として起こったmobile element内の可能性のある耐性遺伝子伝達の証拠を示唆する特定のgraph構造を生成した。 MetaCherchantは、メタゲノムデータを基にしたin vivoでの抵抗伝達ダイナミクスの洞察を研究者に提供する有望なツールである。

 

インストール

依存

  • JRE 1.6 or higher

本体 Github

https://github.com/ctlab/metacherchant

git clone https://github.com/ctlab/metacherchant.git
cd metacherchant/out/

#metacherchant.shに実行権をつける
chmod +x metacherchant*

 > ./metacherchant.sh

$ ./metacherchant.sh  --help-all

Tool:           environment-finder

Description:    Finds graphic environment for many genomic sequences in given metagenomic reads

Input parameters (all):

-k, --k <arg>                           k-mer size (MANDATORY)

-i, --reads <args>                      FASTQ, BINQ, FASTA reads (optional, default: [])

--seq <arg>                             FASTA file with sequences (MANDATORY)

-o, --output <arg>                      output directory (MANDATORY)

--maxkmers <arg>                        maximum number of k-mers in created subgraph (optional)

--maxradius <arg>                       maximum distance in k-mers from starting gene (optional)

--coverage <arg>                        minimum depth of k-mers to consider (optional, default: 1)

--bothdirs                              run graph search in both directions from starting sequence (optional)

--chunklength <arg>                     minimum node length for BLAST search (optional, default: 1)

--forcehash                             force k-mer hashing (even for k <= 31) (optional)

--hash <arg>                            hash function to use: poly or fnv1a (optional, default: poly)

--threads <arg>                         how many java threads to use (optional, default: 32)

--trim                                  trim all not maximal paths? (optional)

 

Launch options (all):

-ts, --tools                            print available tools (optional)

-t, --tool <arg>                        set certain tool to run (optional, default: environment-finder)

-m, --memory <arg>                      memory to use (for example: 1500M, 4G, etc.) (optional, default: 2 Gb)

-p, --available-processors <arg>        available processors (optional, default: all (24))

-w, --work-dir <arg>                    working directory (optional, default: workDir)

-c, --continue                          continue the previous run from last succeed stage, saved in working directory (optional)

--force                                 force run with rewriting old results (optional)

-s, --start <arg>                       first force run stage (with rewriting old results) (optional)

-f, --finish <arg>                      stop after running this stage (optional)

-ea, --enable-assertions                enable assertions (optional, default: assertions disabled)

-v, --verbose                           enable debug output (optional)

-h, --help                              print short help message (optional)

-ha, --help-all                         print full help message (optional)

 

 

ラン

ターゲットゲノムのfastaとシーケンスリード(fastq or fasta)を指定してランする。

 ./metacherchant.sh --tool environment-finder -k 31 -c 5 -m 15000M --threads 20 --seq target_reference.fa --reads fastq_dir/*fq --maxkmers=100000 --output output_dir
  • -k   the size of k-mer used in de Bruijn graph. 
  • -c   the minimum coverage threshold for a k-mer to be included in the graph.
  • --seq    a FASTA file with the target nucleotide sequences, for each of which a genomic environment will be built.
  • --reads    list of all input files with metagenomic reads separated by space. FASTA and FASTQ formats are supported.
  • --output    output folder.
  • --work-dir    working directory with intermediate files and logs.
  • --maxkmers    maximum allowed number of distinct k-mers present in the resulting genomic environment.
  • --bothdirs    flag setting the BFS (breadth-first search) algorithm to make 1 bidirectional pass from the target sequence. If this flag is not set, BFS makes two one-directional passes.
  • --chunklength    minimum length of a contracted graph node to be included in output FASTA file for further analysis.
  • --threads   how many java threads to use (optional, default: 32)

 

終わるとgraph.gfa (GFA形式のde brujin graph)が得られる。graph.gfaはbandageに読み込んで可視化できる。

 

引用

MetaCherchant: analyzing genomic context of antibiotic resistance genes in gut microbiota.

Olekhnovich EI, Vasilyev AT, Ulyantsev VI, Kostryukova ES, Tyakht AV

Bioinformatics. 2018 Feb 1;34(3):434-444.

 

ハプロタイプフェージングを行う whatshap

 2019 3/18 インストールの流れ修正

2019 3/26 誤字修正

2019 11/8 タイトル修正

 

  ヒトゲノムは二倍体であり、すなわち、その常染色体の各々は2コピーである。これらの親のコピーは、異なる一塩基多型SNPs)の影響を受ける。変異がどちらの染色体由来かアサインすることは進化遺伝学の助けになり、例えばpopulation研究(論文より The 1000 Genomes Project Consortium、2010; Francioli et al、2014)における選択的な圧力と亜集団の特定に関係し、おそらく病気の原因となるSNPsを相互に結びつける(Hartl and Clark、2007)。アサインするプロセスはphasing(以後フェージング)と呼ばれ、結果のSNPsグループはハプロタイプと呼ばれる。国際的に協調した取り組みにより、対応する下流分析に役立つ多様な集団のハプロタイプの参照パネルが作成された(International HapMap Consortium、2007、2010)。
 バリアントのフェージングには2つの主要なアプローチがある。第1のアプローチは、SNPsのアレルのそれらの接合体のステータスつきリストとなる遺伝子型に依存する。ホモ接合の対立遺伝子は相同染色体両コピー上に現れ、明らかに両方のハプロタイプに適用されるが、ヘテロ接合対立遺伝子はコピーのうちの1つにのみ現れ、したがって2つのグループに分けられなければならない。 よってm個のヘテロ接合のSNPsアレルがあると、2のm乗通りのハプロタイプの可能性が生じる。対応する手法は、通常は統計手法になり、既存の参照パネルを統合する。根底にある仮定は、計算されるハプロタイプは、減数分裂中に組換えから生じる基準ハプロタイプブロックのモザイクであるということである。観察された遺伝子型が与えられると、統計的に最も可能性の高いモザイクが出力される。最も一般的なアプローチは、潜在変数モデリング(Howie et al、2009; Li et al、2010; Scheet and Stephens、2006)に基づいている。他のアプローチでは、マルコフ連鎖モンテカルロ法を用いる(Menelaou and Marchini、2013)。

  他のアプローチは、シーケンシングデータを直接読み込む。このようなアプローチは、実質的に同一の染色体コピーからのリードを集め、 haplotype assembly approachesと呼ばれる。原則に従えば、目標は、2つのハプロタイプを計算して、最小限の量の配列エラーを訂正してすべてのリードを割り当てることである。このような処方の中で、最近の注目の大半は最小誤差訂正(MEC)問題が生じている。セクション2で正式に定義するMECの問題は、リードを競合のない2つのハプロタイプに配置するために、配列決定されたヌクレオチドに対して行われる補正の最小数を見つけることにある。 MECの主な利点は、phredスケールのエラー確率に対処するために、重み付きバージョン(wMEC)に容易に適合させることができることである。このようなphredベースのエラースキームは、特に将来の技術によって生成されたロングリードを処理するためには不可欠である。 wMEC問題の最適解は、修正されるべきエラーと比較した最尤シナリオに変換される。
 ますます増大するリード長および減少するシーケンス決定コストのテラスケールシーケンスプロジェクト(例えば、Boomsma et al、2013; The 1000 Genomes Project Consortium、2010)は、明らかにリードデータから直接フェーズを合わせることが望ましい。しかし、(i)大部分のNGSリードは、いわゆるvariant desertsをブリッジするにはまだ短すぎるため、統計的アプローチが依然として選択される。しかし、連続的なリードベースのフェージングには、隣接するヘテロ接合のSNPsアレルが全てカバーされないといけない。 (ii)MECの問題はNP困難であり、他のすべての同様の問題の定式化もそうである。
 MEC(Chen et al、2013; He et al。、2010)の最も進んだ既存のアルゴリズムソリューションは、皮肉なことにvariant desertsから正確に利益を得ていることが多い。しかし、リードベースのアプローチの主な動機は、可能な限り多くのバリアントをカバーするロングリードを処理することで、すべてのバリアントをブリッジすることである。したがって、現在のハプロタイプアセンブリの認識は、それが克服するのが難しい理論上の限界の根底にあることが多い。
 この論文では、カバレッジ、つまりSNPs位置をカバーするフラグメントの数が唯一のパラメータである、wMECに対する固定パラメータの扱いやすい(FPT)アプローチであるWhatsHapを紹介する。よって著者らのアプローチの実行時間は、SNPs数の多項式(実際には線形)である。 wMECのための線形ランタイムソリューションは、将来のシークエンシング技術が数万塩基対(bp)のリードを生成し、それらが高い配列決定エラー率を被る可能性が高いことの両方に対処する。慎重に設計されたアルゴリズムを実装することで、標準的なワークステーション上で最大20時間のオーダーで最大カバレッジの全ゲノムデータセットを処理することができる。カバレッジの高いデータセットでは、合理的な選択肢を選択するテクニックを提供する。 WhatsHapはさまざまな面でさまざまな長さのシミュレートされたリードに基づいて比較され、評価された。これらのすべてが真のゲノムに由来する(Levy et al、2007)。そしてハプロタイプアセンブリでのフェージングのエラー率を低くするには10〜15のカバレッジで十分であることを示す。最先端のハプロタイプアセンブリアプローチと比較して、WhatsHapは、特に10〜15カバレッジのデータセット、すなわち重要なカバレッジレートに優れたランタイムを持つことを実証する。 WhatsHapによって計算されたハプロタイプはわずかな誤差しかないことが証明されている。統計的なフェージングアプローチと比較してもエラー率がかなり有利であることは注目に値するかもしれないが、依然として現実的な最先端技術を構成している。

 

 

マニュアル

https://whatshap.readthedocs.io/en/latest/guide.html

イルミナ、Nanopore、pacbioいずれのデータセットでも機能する。 

 

インストール

Bitbucket

https://bitbucket.org/whatshap/whatshap

condaによるインストールと、pipによるインストールがサポートされている。

#Anacondaを使っているなら
conda install -c bioconda -c conda-forge whatshap

>whatshap -h

$ whatshap -h

usage: whatshap [-h] [--version] [--debug]

                {phase,stats,compare,hapcut2vcf,unphase,haplotag,genotype} ...

 

positional arguments:

  {phase,stats,compare,hapcut2vcf,unphase,haplotag,genotype}

    phase               Phase variants in a VCF with the WhatsHap algorithm

    stats               Print phasing statistics of a single VCF file

    compare             Compare two or more phasings

    hapcut2vcf          Convert hapCUT output format to VCF

    unphase             Remove phasing information from a VCF file

    haplotag            Tag reads by haplotype

    genotype            Genotype variants

 

optional arguments:

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

  --version             show program's version number and exit

  --debug               Print debug messages

whatshap phase

$ whatshap phase

usage: whatshap phase [-h] [-o OUTPUT] [--reference FASTA] [--tag {PS,HP}]

                      [--output-read-list FILE]

                      [--algorithm {whatshap,hapchat}] [--merge-reads]

                      [--max-coverage MAXCOV] [--mapping-quality QUAL]

                      [--indels] [--ignore-read-groups] [--sample SAMPLE]

                      [--chromosome CHROMOSOME]

                      [--error-rate READ_MERGING_ERROR_RATE]

                      [--maximum-error-rate READ_MERGING_MAX_ERROR_RATE]

                      [--threshold READ_MERGING_POSITIVE_THRESHOLD]

                      [--negative-threshold READ_MERGING_NEGATIVE_THRESHOLD]

                      [--full-genotyping] [--distrust-genotypes]

                      [--include-homozygous] [--default-gq DEFAULT_GQ]

                      [--gl-regularizer GL_REGULARIZER]

                      [--changed-genotype-list FILE] [--ped PED/FAM]

                      [--recombination-list FILE] [--recombrate RECOMBRATE]

                      [--genmap FILE] [--no-genetic-haplotyping]

                      [--use-ped-samples]

                      VCF [PHASEINPUT [PHASEINPUT ...]]

 

Phase variants in a VCF with the WhatsHap algorithm

 

Read a VCF and one or more files with phase information (BAM/CRAM or VCF phased

blocks) and phase the variants. The phased VCF is written to standard output.

 

positional arguments:

  VCF                   VCF file with variants to be phased (can be gzip-

                        compressed)

  PHASEINPUT            BAM, CRAM or VCF file(s) with phase information,

                        either through sequencing reads (BAM/CRAM) or through

                        phased blocks (VCF)

 

optional arguments:

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

  -o OUTPUT, --output OUTPUT

                        Output VCF file. Add .gz to the file name to get

                        compressed output. If omitted, use standard output.

  --reference FASTA, -r FASTA

                        Reference file. Provide this to detect alleles through

                        re-alignment. If no index (.fai) exists, it will be

                        created

  --tag {PS,HP}         Store phasing information with PS tag (standardized)

                        or HP tag (used by GATK ReadBackedPhasing) (default:

                        PS)

  --output-read-list FILE

                        Write reads that have been used for phasing to FILE.

  --algorithm {whatshap,hapchat}

                        Choose an algorithm from whatshap or hapchat (default:

                        whatshap)

 

Input pre-processing, selection and filtering:

  --merge-reads         Merge reads which are likely to come from the same

                        haplotype (default: do not merge reads)

  --max-coverage MAXCOV, -H MAXCOV

                        Coverage reduction parameter in the core phasing

                        algorithm. Phasing quality may improve slightly if

                        this is increased, but runtime increases

                        exponentially! Do not increase beyond 20. (default:

                        15)

  --mapping-quality QUAL, --mapq QUAL

                        Minimum mapping quality (default: 20)

  --indels              Also phase indels (default: do not phase indels)

  --ignore-read-groups  Ignore read groups in BAM/CRAM header and assume all

                        reads come from the same sample.

  --sample SAMPLE       Name of a sample to phase. If not given, all samples

                        in the input VCF are phased. Can be used multiple

                        times.

  --chromosome CHROMOSOME

                        Name of chromosome to phase. If not given, all

                        chromosomes in the input VCF are phased. Can be used

                        multiple times.

 

Read merging:

  The options in this section are only active when --merge-reads is used

 

  --error-rate READ_MERGING_ERROR_RATE

                        The probability that a nucleotide is wrong in read

                        merging model (default: 0.15).

  --maximum-error-rate READ_MERGING_MAX_ERROR_RATE

                        The maximum error rate of any edge of the read merging

                        graph before discarding it (default: 0.25).

  --threshold READ_MERGING_POSITIVE_THRESHOLD

                        The threshold of the ratio between the probabilities

                        that a pair of reads come from the same haplotype and

                        different haplotypes in the read merging model

                        (default: 1000000).

  --negative-threshold READ_MERGING_NEGATIVE_THRESHOLD

                        The threshold of the ratio between the probabilities

                        that a pair of reads come from different haplotypes

                        and the same haplotype in the read merging model

                        (default: 1000).

 

Genotyping:

  The options in this section require that either --distrust-genotypes or --full-genotyping is used

 

  --full-genotyping     Completely re-genotype all variants based on read

                        data, ignores all genotype data that might be present

                        in the VCF (EXPERIMENTAL FEATURE).

  --distrust-genotypes  Allow switching variants from hetero- to homozygous in

                        an optimal solution (see documentation).

  --include-homozygous  Also work on homozygous variants, which might be

                        turned to heterozygous

  --default-gq DEFAULT_GQ

                        Default genotype quality used as cost of changing a

                        genotype when no genotype likelihoods are available

                        (default 30)

  --gl-regularizer GL_REGULARIZER

                        Constant (float) to be used to regularize genotype

                        likelihoods read from input VCF (default None).

  --changed-genotype-list FILE

                        Write list of changed genotypes to FILE.

 

Pedigree phasing:

  --ped PED/FAM         Use pedigree information in PED file to improve

                        phasing (switches to PedMEC algorithm). Columns 2, 3,

                        4 must refer to child, mother, and father sample names

                        as used in the VCF and BAM/CRAM. Other columns are

                        ignored.

  --recombination-list FILE

                        Write putative recombination events to FILE.

  --recombrate RECOMBRATE

                        Recombination rate in cM/Mb (used with --ped). If

                        given, a constant recombination rate is assumed

                        (default: 1.26cM/Mb).

  --genmap FILE         File with genetic map (used with --ped) to be used

                        instead of constant recombination rate, i.e. overrides

                        option --recombrate.

  --no-genetic-haplotyping

                        Do not merge blocks that are not connected by reads

                        (i.e. solely based on genotype status). Default: when

                        in --ped mode, merge all blocks that contain at least

                        one homozygous genotype in at least one individual

                        into one block.

  --use-ped-samples     Only work on samples mentioned in the provided PED

                        file.

whatshap phase: error: the following arguments are required: VCF, PHASEINPUT

 

ラン

whatshapのphaseコマンドは以下のような処理を行う。

これはSample1とSample2のマージしたvcfファイルだが、samle1だけ、GT(genotype)フィールドが5つのアレルすべてでヘテロ(0/1)になっている。

f:id:kazumaxneo:20180405222348j:plain

公式より転載

 

phaseコマンドはGTフィールドが0/1のものをフェーズがそろうよう並べ替えて、/ のかわりにパイプ( | )で区切る。Sample1の1つのハプロタイプはA, G, T, T, A、もう片方のハプロタイプはT, C, G, A, Gと推定した(0/1ではヘテロとしかわからない。|で区切ることで、REFかALTか明確にしている)。

f:id:kazumaxneo:20180405222715j:plain

公式より転載

 

phasingを行うには、バリアントコーラーが出力したVCFと、マッピングしたbamファイルが必要になる。 phaseコマンドを使う。

whatshap phase -o phased.vcf input.vcf mapped.bam

 

1000genomesのデータを3つ解析してみる。サンプル名は通し番号とする。

シェルスクリプト variant_call.sh

#!/bin/sh

#複数のbamを順に処理する。
#依存ツール
#BBtools - interleave fastqの作成
#sickle - quality trimming
#SAMTools - sam=>bam、ソート、index
#BWA MEM - mapping
#vcftools - VCFのマージ
#samblaster

#パラメータ
thread=20 #スレッド数

#保存場所
#全サンプルのfastq: ~/fastq/ #ペアエンド名はstrain通し番号_pair1/2.fq.gz (e.g., strain1_pair1.fq.gz & strain1_pair2.fq.gz)
#interleave_fastq: ~/interleave_fastq/
#reference.fasta: ~/ref/
#bam: ~/bam/
#VCF: ~/vcf/


#indexを作る。
ref=~/ref/Homo_sapiens.GRCh38.dna.chromosome.fa
bwa index $ref #isはたしか2GBまで
samtools faidx $ref


#3サンプルのループ処理
sample=(1 2 3)
for name in ${sample[@]}; do   
echo sample$name
r1=strain${name}_pair1.fq.gz
r2=strain${name}_pair2.fq.gz

  #interleaveのfastq.gz作成#interleaveのfastq.gz作成
reformat.sh in1=$r1 in2=$r2 out=~/interleave_fastq/${name}_interleave.fq.gz

fastq=~/interleave_fastq/${name}_interleave.fq.gzfastq=~/interleave_fastq/${name}_interleave.fq.gz
sleep 1s

#quality trimming
sickle pe -c $fastq -g -t sanger -l 20 -q 20 -m ~/interleave_fastq/${name}_interleave_qc.fq.gz -s single.fq.gz && rm single.fq.gz
qcfastq=~/interleave_fastq/${name}_interleave_qc.fq.gz

#mapping samblasrにパイプしてduplicationは捨てる
bwa mem -R "@RG\tID:1a\tLB:library1\tSM:Sample${name}\tPL:ILLUMINA" -t $thread $ref $qcfastq | samblaster -r -e -d samp.disc.sam -s samp.split.sam |samtools view -@ $thread -bS - > ${name}.bam

samtools sort -@ $thread ${name}.bam > ~/bam/${name}_sorted.bam && rm ${name}.bam #ソート
samtools index ~/bam/${name}_sorted.bam #bamのindex

freebayes -f $ref -C 5 -p 2 ~/bam/${name}_sorted.bam > ~/vcf/${name}_output.vcf && #バリアントのコール
bgzip -c ~/vcf/${name}_output.vcf > ~/vcf/${name}_output.vcf.gz && rm ~/vcf/${name}_output.vcf #vcfの圧縮
tabix -p vcf ~/vcf/${name}_output.vcf.gz #vcfのindex
done

GATKは遅すぎるのでfreebayesを使った。1_sorted.bam、2_sorted.bam、3_sorted.bam、とそのvcfファイルである1_output.vcf.gz、2_output.vcf.gz、3_output.vcf.gzが得られた。

 

 VCFのマージ。

vcf-merge 1_output.vcf.gz 2_output.vcf.gz 3_output.vcf.gz | bgzip -c > merge.vcf.gz

merge.vcf.gzが出力される。

 

Sample1のphasingを行う。 WhatsHapのphaseコマンドを使う。ロングリードならリファンレスを与えて精度をあげる必要がある(see manual)。Sample1のchromosome1のみに限定する。

whatshap phase --indels --sample SampleA --chromosome 1 -o phased.vcf merge.vcf.gz 1_sorted.bam
  • --max-coverage     Reduce coverage (default: 15).
  •  --mapping-quality    Minimum mapping quality (default: 20)
  • --indels     Also phase indels (default: do not phase indels)
  • --ignore-read-groups      Ignore read groups in BAM header and assume all reads come from the same sample.
  • --sample     Name of a sample to phase. If not given, all samples in the input VCF are phased. Can be used multiple
  • --chromosome     Name of chromosome to phase. If not given, all chromosomes in the input VCF are phased. Can be used multiple times.

phased.vcfが出力される。

 

gz圧縮してindexをつける。

bgzip phased.vcf 
tabix phased.vcf.gz

 

フェーズ分析結果をもとにハプロタイプの配列を出力。

bcftools consensus -H 1 -s Sample1 -f Homo_sapiens.GRCh38.dna.chromosome.fa  phased.vcf.gz > haplotype1.fa
bcftools consensus -H 2 -s Sample1 -f Homo_sapiens.GRCh38.dna.chromosome.fa phased.vcf.gz > haplotype2.fa

 

 フェーズ分析結果をもとにGTFを出力。phasingされた数などのstatisticsも標準出力される。

whatshap stats --sample SampleA --chromosome 1 --indels --gtf=phased.gtf phased.vcf.gz 
  • --gtf      Write phased blocks to GTF file.
  • --sample     Name of the sample to process. If not given, use first sample found in VCF.
  • --only-snvs     Only process SNVs and ignore all other variants.
  • --chromosome     Name of chromosome to process. If not given, all chromosomes in the input VCF are considered.

 

 IGVに読み込む。 

igv -g Homo_sapiens.GRCh38.dna.chromosome.fa phased.vcf.gz,phased.gtf,1_sorted.bam

 f:id:kazumaxneo:20180406080539j:plain

 

 

他にも2つ以上のphasing解析結果を比較するcompareなどのコマンドがある。

 

引用

WhatsHap: Weighted Haplotype Assembly for Future-Generation Sequencing Reads.

Patterson M, Marschall T, Pisanti N, van Iersel L, Stougie L, Klau GW, Schönhuth A

J Comput Biol. 2015 Jun;22(6):498-509.

 

 

ソフトクリップされたリードから複雑な欠失を検出する Sprites

 

 もともと、構造変異(SV)は大きさが1k bpを超える挿入、欠失および逆位として定義されていた(Feuk et al、2006)、現在はずっと小さな変異(例えば50 bp以上の長さ) et al、2011)、転座やタンデムの複製など、より多くのタイプのバリアントが含まれる(SVの定義が変わってきている)。これらの変異は、ヒト集団において一般的であり、ヒト疾患、複雑な形質および進化と関連している(Baker、2012)。したがって、SVを見つけることは重要な作業となる。ハイスループットシーケンシングの最近の進歩により、これまで以上に多くのバリアントが明らかになってきている。ハイスループット配列決定データから変異を検出するための多くの努力がなされている。例えば、1000ゲノムプロジェクトコンソーシアムは、14のpopulationsから1092人のSVデータを発表した(Consortium et al、2012)。いくつかの方法(SVSeq(Zhang and Wu、2011)、MindTheGap(Rizk et al。、2014))は特定のタイプのSVを検出するために特別に設計されている。欠失は、リファレンスゲノムと比較して、個々のゲノムに欠けているDNAセグメント(ドナー/サンプルゲノムとしても知られている)を示す。疾患データベースのデータベースの染色体不均衡の80%、Ensembl Resources(DECIPHER)を用いたヒトの表現型は、欠失によって引き起こされる(Weischenfeldt et al、2013)。欠失はSVの重要なタイプであり、ほとんどすべてのSV検出ツールが欠失を見つけるためのモジュールを開発している。この論文では、欠失の発見に焦点を当てている。

 ペアエンドリードは、現在のシーケンシングデータの最も一般的な形式である。 DNAライブラリーは、一般に、ゲノムを断片に切断し、断片をクローニングし、サイズを選択することによって構築される。ライブラリは、おおよそ同じサイズのフラグメントの集合である。2つの末端のアダプターを除いた断片の長さは、一般にインサートサイズと呼ばれる。インサートのサイズは、フラグメントごとに異なる。各断片のインサートサイズの正確な値は決定できないが、その近似値はサンプリングによって推定することができる。通常のインサートサイズの範囲は、ライブラリーの平均値と標準偏差によって指定される(Luo et al、2015a、b)。1つのフラグメントの両末端をシーケンシングすることによって、ペアの2つのリードが生成される。 BWA(Li and Durbin、2009)やBowtie2(Langmead and Salzberg、2012)などのリードマッパーを使用して、これらのペアエンドリードをリファレンスゲノムにマッピングする必要がある。ペアエンドの2つのリードがうまくマッピングされた場合、そのインサートサイズは、リファレンスゲノム上の2つの対応する位置の間の距離として与えられる。

 バリアントを明らかにするためにdiscordantなペアエンドリードを分析することは、最も一般的なアプローチの1つである。 BreakDancer(Chen et al、2009)、PEMer(Korbel et al、2009)、VariationHunter(Hormozdiari et al、2009、2010)およびGASV(Sindi et al、2009)などの多くのツールは、カバレッジの高いデータでの検出解像度を向上させることができるが、ブレークポイントの正確な位置はコールしない。 Read depthの手法は、おおよそのブレークポイントを与える別の方法である。depthとは、ゲノムの特定の部分にマッピングされたリードの数を示し、領域のコピー数を示すことができるが、コピーがどこにあるかを示すことはできない(Baker、2012)。このアプローチを適用するアルゴリズムの例として、SegSeq(Chiang et al、2009)、EWT(Yoon et al、2009)、CNVnator(Abyzov et al、2011)が挙げられる。

 アセンブリおよびsplit readsメソッドは、塩基レベルの分解能でバリアントを検出できる2つのアプローチである。アセンブリメソッドは、リファレンスゲノムからの収差を利用して、バリアントが存在する可能性のある位置を特定し、その領域のリードだけをアセンブルする(Baker、2012)。コンティグを参照ゲノム上の領域と比較することにより、正確なブレークポイントを有する変異体を検出できる。しかし、アセンブルには限界があります。ローカルアセンブリのみが実行されるが、アセンブリに必要なk-merスペクトルを構築するために、ライブラリのすべてのリードが処理される。このステップでは、実行には大量の時間とメモリが必要となる。それはまた、相同染色体の対のうちの1つのみで起こるヘテロ接合の変異(Baker、2012)を上手く扱えない傾向がある。

 Split readsは、シングルエンドであろうとペアエンドであろうと、バリアントのブレークポイントをカバーするものを指す。スプリット・リード・メソッドは、その名前が示すように、これらのスプリット・リードからバリアントを検出する(一部略)。場合によっては、シーケンシングエラーまたはマッピングエラーのためにスプリットリードではない場合がある。スプリットリードを使用してバリアントを検出するには、split readsマッピングとソフトクリッピングマッピングによる2つの方法がある。Split readsマッピングは、ペアのマップされなかった側に重点を置いている。マップされていないリードは、最初に2つの部分に分割される。次に、これらの2つの部分がそれぞれリファレンス配列にマッピングされ、対応するバリアントのブレークポイントが特定される。スプリット・リード・マッピングに基づく方法の例には、Pindel(Ye et al、2009)、AGE(Abyzov and Gerstein、2011)、SVSeq(Zhang and Wu、2011)、PRISM(Jiang et al、2012)、DELLY et al、2012)がある。Soft-clipped mappingは、5 ' または3 'がソフトクリップされたリードに焦点を当てる("ソフト"なので情報は残っている)。これらのリードは、ソフトクリッピングリードとも呼ばれる。バリアントの1つのブレークポイントは、ソフトクリッピングが発生するマッピング場所によって指定される。他のブレークポイントは、リードのソフトクリッピングされたセグメントをリファレンスシーケンスに揃えることによって決定される。ソフトクリップに基づく方法の代表的なものとして、ClipCrop(Suzuki et al、2011)、CREST(Wang et al、2011)、SVSeq2(Zhang et al、2012)、Socrates(Schröderet al、2014)がある。 Split readsの方法には、時間およびメモリの非効率性、および高い偽陽性率および偽陰性率の問題がある。それらのうちのいくつかは、カバレッジの低いデータではうまく機能しない。

 ヒトゲノムでは3種類の欠失が観察される。(1)blunt deletions:ブレークポイントには欠失以外の特別な変化が見られない、(2)deletions with microhomologies::欠失ブレークポイントで2つの小さい同一の配列が観察される、および(3)deletions with microinsertions:小さなuntemplated配列が挿入される。 Conrad et al (2010)は、315の欠失のブレークポイントを研究し、ブレークポイントの70%が1〜30 bpのmicrohomologiesを有し、ブレークポイントの33%が1〜369 bpの挿入を含み、ブレークポイントの10%がこの2つを同時に有することを見出した。いくつかのブレークポイント(〜7%)のみが(1)のblunt deletionとなる。microhomologiesとmicroinsertionsの存在は、クリップされた部分の再アライメントの問題を引き起こす。ソフトクリッピングリードのmicrohomologiesは、クリッピングされた部分の位置合わせが短すぎる原因となる。アライメントアルゴリズムは、クリップされた部分に対して複数のヒットを返す。これらのヒットのうち正しいものを見つけることは難しい。クリップされた部分のmicroinsertionsは、挿入された配列が参照と一致しないため、位置合わせが失敗する。しかし、スプリットリードマッピングはmicrohomologiesとmicroinsertionsを扱うことができる。 Pindelはパターン拡大アプローチを使用して、microinsertionsによる削除を報告する。 AGEは、2つの所与の配列の5 'および3'末端を同時にアライメントさせ、それらの存在に対処するためのジャンプギャップを作成する。 DellyはAGEアプローチに従い、AGEに変更を加える。これらのツールが利用可能であるにもかかわらず、microhomologiesとmicroinsertionsを用いた欠失の検出には、高精度の方法が必要である。

 この論文では、シーケンシングデータから欠失を検出するためのSprites(Structuredバリアントを削除するための再読み込み)を提案する。Spritesはmicrohomologiesとmicroinsertionsが引き起こす問題を解決することができる。ターゲットシーケンス内の一致するリードの最長接頭部または接尾部を見つけるために、クリップされた部分ではなくリード全体をターゲットシーケンス、すなわちリファレンスのセグメントに再アライメントする。microhomologiesの場合、適合されるべき配列の長さは、クリップされた部分の長さにmicrohomologiesの長さを加えたものまで拡張される。リードの最長の接頭辞または接尾辞は、通常、microhomologiesをカバーできる。したがって、欠失を決定することは容易である。microinsertionsの場合、リードの最長マッチプレフィックスまたはサフィックスは、microinsertionsが検出に及ぼす影響を回避することができる。ソフトクリッピングされたセグメントの再アライメントと全リードの比較が図1に示されている。

 再アライメントは、検出において最も時間のかかる作業の1つである。ソフトクリッピングリードの場合、SpritesはSVをスパンしたペアを使用してターゲットシーケンスのサイズと位置を決定する。これらの標的配列の大部分が数百塩基対の長さしか持たないことを考えると、ソフトクリッピングリードをそれらに再アライメントすることは大きく時間を節約する。Spritesは最初から最後まで一度だけ横断し、欠失検出に役立つソフトクリッピングリードに関する情報を格納する。これにより、Spritesのメモリフットプリントが削減される。 Spritesは、カバレッジの低いデータに対する優れたパフォーマンスに加えて、カバレッジの高いデータの分析にも使用できる。シミュレートされたデータと実際のシーケンシングデータを幅広くテストし、SVSeq2、LUMPY、Delly、Pindelなどの4つの検出ツールと比較した。結果は、これらのツールの中でも、Spritesは比較的低い誤検出率で非常に高感度であり、したがって多くの場合、最大のF measureを有することを示している。

(1)著者らの方法は、再アライメントを実行することによって標的配列に一致するソフトクリッピングリードの最長の接頭辞または接尾辞を見つけることができる。 (2)配列決定データから発見されることが非常に困難であるmicroinsertionsおよび欠失を伴う欠失の問題を解決する。 (3) 時間とメモリの使用が劇的に減少するようにアラインメントの長さを制限する。 (4)オープンソースソフトウェアが実装されており、自由に利用できる。

 

追記

誤りがあったので修正しました。

 

インストール

Github

https://github.com/zhangzhen/sprites

ビルド済みのバイナリがあるので、Github内のリンクからダウンロードする。

chmod u+x sprites_OSX
./sprites_OSX

$ ./sprites_OSX 

sprites: missing arguments

sprites: the reference file must be specified

 

Usage: sprites [OPTION] ... BAMFILE

Find deletions from records in BAMFILE

 

      --help                           display this help and exit

      -v, --verbose                    display verbose output

      -r, --reffile=FILE               read the reference sequence from FILE

      -o, --outfile=FILE               write the deletion calls to FILE (default: BAMFILE.calls)

      -e, --error-rate=F               the maximum error rate allowed between two sequences to consider them overlapped (default: 0.04)

      -m, --min-overlap=LEN            minimum overlap required between two reads (default: 12)

      -q, --mapping-qual=MAPQ          minimum mapping quality of a read (default: 1)

      -n, --allowed-num=SIZE           a soft-clip is defined as valid, when the clipped part is not less than SIZE (default: 5)

 

The following two option must appear together (if ommitted, attempt ot learn the mean and the standard deviation of insert size):

      -i, --insert-mean=N              the mean of insert size

          --enhanced-mode              enable the enhanced mode, in which reads of type 2 are considered besides type 1

      -s, --insert-sd=N                the standard deviation of insert size

 

Report bugs to zhangz@csu.edu.cn

パスの通ったディレクトリに移動しておく。

 

ラン

Spritesは、BWAによって生成されたアラインメントを使用する。

1、リードをリファレンスにマッピングする。

bwa index ref.fa
bwa mem -M -t 20 ref.fa pair1.fq pair2.fq |samtools view -@ 20 -bS - > aln.bam

#ソート& index
samtools sort -@ 20 aln.bam > sort.bam && samtools index sort.bam

2、欠失の検出。

sprites_OSX -v -o output.txt -r ref.fa sort.bam
  • -v    display verbose output
  • -o    write the deletion calls to FILE
  • -r     read the reference sequence from FILE

 出力は、VCF形式には準じていない。

 

引用

Sprites: detection of deletions from sequencing data by re-aligning split reads.

Zhang Z, Wang J, Luo J, Ding X, Zhong J, Wang J, Wu FX, Pan Y

Bioinformatics. 2016 Jun 15;32(12):1788-96.

 

高速なロング/ショートリードアライナー minimap2

2018/12/21 ドラフトアセンブリ追記

2019 6/1 index追記、7/17追記、7/24 誤字修正、8/3 help更新

2020 1/19 追記、7/21 preset parameter追加

2021 1/17, 1/20 例追加、7/3 構成変更、10/9 新しい論文引用

2023/02/13 help更新, 07/06 追記

2024/02/15 分かりにくい説明を整頓

 

  

  Single Molecule Real-Time(SMRT)シークエンシング技術とOxford Nanopore technologies(ONT)は、10kbp以上の長さのリードを約15%のエラー率で生成する。そのようなデータのためにいくつかのアライナーが開発されている(論文より Chaisson and Tesler、2012; Li、2013; Liu et al、2016; Sovic et al、2016; Liu et al、2017; Lin and Hsu、2017; Sedlazeck et al、2017)。それらの大半は、秒あたりマッピングされる塩基数の点で、主流のショートリードアライナー(Langmead and Salzberg、2012; Li、2013)の5倍の遅さであった。ショートリードアライメントのボトルネックであるリピート領域をより効果的にスキップすることができるため、10kbの配列は100bpのリードよりもマッピングが容易でなければならないという考えには、スピードアップの余地が大きいと推測された。著者らは、BWA-MEM(Li、2016)より約50倍速い近似マッピングを達成することによって、推測を確認した。 Suzuki and Kasahara(2018)(BMC)は、ベースレベルのアラインメントを生成するための高速かつ新規なアルゴリズムを使用してこの論文の著者の作業を拡張した。それがきっかけとなって、minimap2の開発が促された。

 SMRTおよびONTの両方が、スプライシングされたmRNA(RNA-seq)の配列決定に適用されている。伝統的なmRNAアライナーは機能するが(Wu and Watanabe、2005; Iwata and Gotoh、2012)、長時間のノイズの多いシーケンスリードには最適化されておらず、専用のロングリードアライナーよりも数十倍遅い。最初にゲノムDNAのみをアライメントさせるためのminimap2を開発する際には、わずかな改変がmRNAをマップするためのベースアルゴリズムを可能にすることが分かった。 Minimap2は、長いノイズの多いロングリード用に特別に設計された最初のRNA-seqアライナーになる。また、元のアルゴリズムを拡張して、いくつかの主流のショート・リード・マッパーよりも速い速度でショート・リードをマッピングする。

 この論文では、minimap2アルゴリズムとさまざまなタイプの入力シーケンスへのそのアプリケーションについて説明する。 いくつかのシミュレートされたデータセットとリアルデータセットでminimap2の性能と精度を評価し、minimap2の多様性を実証する。

Minimap2は、ほとんどのフルゲノムアライナーで使用されている典型的なseed-chain-align手順に従っています。参照配列のミニマム化(Roberts et al., 2004)を収集し、ミニマム化のハッシュをキー、ミニマム化のコピーの位置のリストを値とするハッシュテーブルにインデックスします。次に、各クエリ配列に対して、minimap2は、クエリの最小化子をシードとし、参照配列との完全一致(すなわちアンカー)を見つけ、コリニアなアンカーのセットをチェーンとして識別します。ベースレベルのアライメントが要求された場合、minimap2はダイナミックプログラミング(DP)を適用して、チェーンの端から延長し、チェーン内の隣接するアンカー間の領域を閉じます。

minimap2は、minimap(Li, 2016)に類似したインデックス化とシード化のアルゴリズムを使用しており、より正確なチェイニング、ベースレベルアライメントの生成機能、スプライスされたアライメントのサポートなど、前身の機能をさらに強化している。

 

Minimap2は、ほとんどのフルゲノムアライナーで使用されている典型的なseed-chain-align手順に従っている。参照配列のminimizers (Roberts et al., 2004)を収集し、minimizers のハッシュをキー、ミニマム化のコピーの位置のリストを値とするハッシュテーブルにインデックスする。次に、各クエリ配列に対して、minimap2は、クエリのminimizers をシードとし、参照配列との完全一致(すなわちアンカー)を見つけ、コリニアなアンカーのセットをチェーンとして識別する。ベースレベルのアライメントが要求された場合、minimap2はダイナミックプログラミング(DP)を適用して、チェーンの端から延長し、チェーン内の隣接するアンカー間の領域を閉じる。

minimap2は、minimap(Li, 2016)に類似したインデックス化とシード化のアルゴリズムを使用しており、より正確なチェイニング、ベースレベルアライメントの生成機能、スプライスされたアライメントのサポートなど、前身の機能をさらに強化している。

 

ブログ

Minimap2 and the future of BWA

ブログより

”しかし、DNAnexusのAndrew Carroll氏は最近、彼の手による2つのNovaSeqの実行において、minimap2がbwa-memよりも遅いことを示してくれました。その理由の一つは、NovaSeqの2回の実行ではエラー率がやや高く、minimap2の高価なヒューリスティックがより頻繁に起動されるためだと思います。さらに、bwa-memは短いマッチに対してより敏感なので、Hi-Cアライメントではbwa-memの方がminimap2よりも優れているだろうとも考えています。

中略

minimap2は競争力のあるショートリードマッパーであると考えており、私の研究プロジェクトでは頻繁に使用します。しかし、様々な品質のショートリードに対してminimap2の性能がbwa-memほど安定していないことを考えると、少なくとも私がminimap2を改良する方法を見つけるまでは、生産的な用途ではbwa-memの方がまだ良いでしょう”。

 

2021 12/27

2021 8/13

2021/5/27

2019/3/4

2018/5/10

 

FAQ

https://github.com/lh3/minimap2/blob/master/FAQ.md

 

DNAのショートリード、ロングリードのmappingだけでなく、long RNAのスプリットアライメントも可能で、RNAマッピングにも使えます。デフォルトはPAF出力で、ゲノム間の相同性をゲノムワイドに調べる用途にも使えます(LASTやMAMMERに似た使い方)。

 PAF format (D-GENIES manualより)

http://dgenies.toulouse.inra.fr/documentation/formats#index-file 

 

minimap2 cookbook

 

インストール

Github

GitHub - lh3/minimap2: A versatile pairwise aligner for genomic and spliced nucleotide sequences

git clone https://github.com/lh3/minimap2 
cd minimap2 && make

#conda
mamba install -c bioconda minimap2 -y

> ./minimap2 #v2.24-r1122

$ minimap2 -h

Usage: minimap2 [options] <target.fa>|<target.idx> [query.fa] [...]

Options:

  Indexing:

    -H           use homopolymer-compressed k-mer (preferrable for PacBio)

    -k INT       k-mer size (no larger than 28) [15]

    -w INT       minimizer window size [10]

    -I NUM       split index for every ~NUM input bases [4G]

    -d FILE      dump index to FILE

  Mapping:

    -f FLOAT     filter out top FLOAT fraction of repetitive minimizers [0.0002]

    -g NUM       stop chain enlongation if there are no minimizers in INT-bp [5000]

    -G NUM       max intron length (effective with -xsplice; changing -r) [200k]

    -F NUM       max fragment length (effective with -xsr or in the fragment mode) [800]

    -r NUM[,NUM] chaining/alignment bandwidth and long-join bandwidth [500,20000]

    -n INT       minimal number of minimizers on a chain [3]

    -m INT       minimal chaining score (matching bases minus log gap penalty) [40]

    -X           skip self and dual mappings (for the all-vs-all mode)

    -p FLOAT     min secondary-to-primary score ratio [0.8]

    -N INT       retain at most INT secondary alignments [5]

  Alignment:

    -A INT       matching score [2]

    -B INT       mismatch penalty (larger value for lower divergence) [4]

    -O INT[,INT] gap open penalty [4,24]

    -E INT[,INT] gap extension penalty; a k-long gap costs min{O1+k*E1,O2+k*E2} [2,1]

    -z INT[,INT] Z-drop score and inversion Z-drop score [400,200]

    -s INT       minimal peak DP alignment score [80]

    -u CHAR      how to find GT-AG. f:transcript strand, b:both strands, n:don't match GT-AG [n]

  Input/Output:

    -a           output in the SAM format (PAF by default)

    -o FILE      output alignments to FILE [stdout]

    -L           write CIGAR with >65535 ops at the CG tag

    -R STR       SAM read group line in a format like '@RG\tID:foo\tSM:bar'

    -c           output CIGAR in PAF

    --cs[=STR]   output the cs tag; STR is 'short' (if absent) or 'long' [none]

    --MD         output the MD tag

    --eqx        write =/X CIGAR operators

    -Y           use soft clipping for supplementary alignments

    -t INT       number of threads [3]

    -K NUM       minibatch size for mapping [500M]

    --version    show version number

  Preset:

    -x STR       preset (always applied before other options; see minimap2.1 for details) []

                 - map-pb/map-ont - PacBio CLR/Nanopore vs reference mapping

                 - map-hifi - PacBio HiFi reads vs reference mapping

                 - ava-pb/ava-ont - PacBio/Nanopore read overlap

                 - asm5/asm10/asm20 - asm-to-ref mapping, for ~0.1/1/5% sequence divergence

                 - splice/splice:hq - long-read/Pacbio-CCS spliced alignment

                 - sr - genomic short-read mapping

 

 

 

ラン

1、ONTのロングリード

minimap2 -t 8 -ax map-ont ref.fa nanopore.fq > aln.sam
  • -a       output in the SAM format (PAF by default)
  • -t       number of threads [3]
  •  -x <STR>   preset (always applied before other options) []
    map-pb: -Hk19 (PacBio vs reference mapping)
    map-ont: -k15 (Oxford Nanopore vs reference mapping)
    asm5: -k19 -w19 -A1 -B19 -O39,81 -E3,1 -s200 -z200 (asm to ref mapping; break at 5% div.)
    asm10: -k19 -w19 -A1 -B9 -O16,41 -E2,1 -s200 -z200 (asm to ref mapping; break at 10% div.)
    ava-pb: -Hk19 -Xw5 -m100 -g10000 --max-chain-skip 25 (PacBio read overlap)
    ava-ont: -k15 -Xw5 -m100 -g10000 -r2000 --max-chain-skip 25 (ONT read overlap)
    splice: long-read spliced alignment (see minimap2.1 for details)
    sr: short single-end reads without splicing (see minimap2.1 for details)

flagなしだとpafフォーマット出力になる。最近のsuper accuracy ONTリードでも動作するはずと述べられている(link)。

 

2、Pacific biosciencesのロングリード

#CLR
minimap2 -t 8 -ax map-pb ref.fa pacbio.fq > aln.sam

#HiFi(CCS)
minimap2 -t 8 -ax map-hifi ref.fa pacbio.fq > aln.sam

 

3、ペアエンドショートリード

#ペアエンド(消えていたので修正)
minimap2 -t 8 -ax sr ref.fa pair1.fq.gz pair2.fq.gz > aln.sam

#interleaveのペアエンド
minimap2 -t 8 -ax sr ref.fa interleaved.fq.gz > aln.sam

 

4、イルミナロングリード

minimap2 -ax map-iclr ref.fa iclr-reads.fq > aln.sam  

 

5、ONTのRNA drect reads

minimap2 -ax splice -k14 -uf SIRV_E2.fa SIRV_ont-drna.fa > aln.sam

 

6、indexを作成してからmapping

ヒトゲノムのラージゲノムのmampingを繰り返し行うなら、これによって時間短縮できる。 ただし、k-mer長などのパラメータはインデックス作成後には変更できないので注意する。

minimap2 -ax sr -d GRCh38_latest_genomic.mmi GRCh38_latest_genomic.fna
minimap2 -ax sr -t 40 GRCh38_latest_genomic.mmi pair1.fq.gz pair2.fq.gz > mapped.sam

 

7、4Gより大きいラージゲノム

4Gbより長い参照塩基がある場合、minimap2はすべての配列を見ることができず、正しいSAMヘッダを出力しなくなってしまう(samtools viewでエラーが起きる)。2つの解決策があり、第一に、-Iオプションを例えば-I8gに増やして、より多くの参照塩基をインデックスすることができる(利用可能なメモリが十分なメモリがある場合)。十分なメモリが利用できない場合、--split-prefixを使う。この方法は一時的にディスク領域を使う。メモリ使用量は少なくなるが、処理速度は遅くなる。

メモリが潤沢なとき。-Iオプションの使用

#indexing
minimap2 -ax sr -I 8g -d large_genome.mmi large_genome.fna
#mapping
minimap2 -ax sr -t 40 large_genome.mmi pair1.fq.gz pair2.fq.gz > mapped.sam

メモリが潤沢に利用できない環境。--split-prefixオプションの使用

minimap2 -ax sr -t 8 --split-prefix=tmp large_genome.fna pair1.fq.gz pair2.fq.gz > mapped.sam

 

preset  parameter

f:id:kazumaxneo:20200721142907p:plain

manualより

 

 

その他

ONTのロングリードをマッピングしてPAF出力

minimap2 -t 8 -x map-ont ref.fa nanopore.fq > mapping.paf

 pafはstartとendの位置情報は持つが、1bp解像度のアライメント情報は持たない(miniasm PAF)。ゲノム間の相同性をHarr plotで解析したりするのに使う。

 long RNAマッピングについては、下記ページが詳しい。

CSC - minimap2 - Software

 

リードグループを追加(*1)。サンプル名はsample1とする。

minimap2 -R "@RG\tID:X\tLB:Y\tSM:sample1\tPL:ILLUMINA" -t 8 -ax sr ref.fa pair1.fq pair2.fq > aln.sam

#ヘッダーを確認
samtools view -H aln.sam

 

パイプしてbam出力。スレッドは8、メモリは2G / thread。

minimap2 -R "@RG\tID:X\tLB:Y\tSM:sample1\tPL:ILLUMINA" -t 8 -ax sr \
ref.fa pair1.fq.gz pair2.fq.gz \
|samtools sort -@ 8 -m 2G -O BAM - > sorted.bam \
&& samtools index -@ 8 sorted.bam

#注 CRAM出力なら-O BAMを-O CRAMに変えて下さい。&& でindexを実行することでbam出力が成功した時だけindexするようにします。"-O BAM"はなくても機能します。


#sortコマンドが高速なsambambaに切り替える(フィルタリング機能がある、view, sortしているのでフィルタリングが不要ならsamtools sortよりかえって遅くなる可能性がある)
#sambamba sortはbamを受け付けないのでsambamba viewでbamにしてからsortする。
minimap2 -R "@RG\tID:X\tLB:Y\tSM:sample1\tPL:ILLUMINA" -t 8 -ax sr \
ref.fa pair1.fq.gz pair2.fq.gz \
| sambamba view -f bam -S /dev/stdin |sambamba sort -t 20 -o sorted.bam /dev/stdin

 

ーK”でチャンクサイズ(データのサブセットのサイズ)を変える。デフォルトは500Mとなっているが50Mの間違いと思われる。I/Oとの兼ね合いで少なくすると高速化する場合もある(少なくすればメモリ使用量は確実に減る)。

minimap2 -t3 -ax sr -K100M ref.fasta pair_*.fq.gz > out.sam

 

ONTロングリードのドラフトアセンブリにも使える(紹介)。

minimap2 -x ava-ont long-read.fq long-read.fq > ont.paf
miniasm -f long-read.fq ont.paf > assembly.gfa
awk '/^S/{print ">"$2"\n"$3}' assembly.gfa | fold > assembly.fasta

#any2fasta(紹介)を使うこともできる。
any2fasta assembly.gfa > assembly.fasta

このあとracon等でコンセンサスコールを行い、精度を上げる。

 

minimap2からワンライナーでバリアントコール

The Genome Factory

http://thegenomefactory.blogspot.com/2018/10/a-unix-one-liner-to-call-bacterial.html

 

minimap2のpaftoolsを使うと、長い配列を比較して変異コールすることができる。minimap2のコンパニオンツールとしての性質を持つ。

 

all versus allリードマッピングにfpaのフィルタリングを取り込む。

引用

Minimap2: pairwise alignment for nucleotide sequences.

Li H

Bioinformatics. 2018 May 10.
publishされたため、preprintリンクからpubmedリンクに修正 

 

2021 10/8

v2.22のパフォーマンスアップデートについての論文

https://academic.oup.com/bioinformatics/advance-article/doi/10.1093/bioinformatics/btab705/6384570

 

 参考ページ

CSC Services for Research

 

*1

https://github.com/lh3/minimap2/issues/14

https://github.com/lh3/minimap2/commit/bbb37d95f207108acff6784b257171fdecfeb797

 

追記


関連

 

2021 12/11

結論。正確さと実行時間の指標を評価する際に、%アラインドリードを見ることは重要である。難しいリード(繰り返しのある領域や、エラーや変動のためにレスキューが必要な領域)をスキップすることで、プログラムをより速く、より正確にすることができる(ツイートより)。

精度は最高でもマッピング率が低ければ実用的とは言えませんし、精度と感度の調和平均のような指標で表されるバランスが大事になります。

 

2022/05/26

"現在、ロングリードのマッピングに特化した数十のツールが存在し、そのヒューリスティックは時間とともにかなり進化している。この分野の急速な発展は、データの頻繁な改良と同期しており、文献や実装を追いかけることは容易ではない。そこで、本論文では、ロングリードのマッピング手法の概要とアルゴリズムの詳細について述べる。"


2022/07/07

T2T2アセンブリの論文。ONTリードからテロメア配列を組み立てるためにminimap2が使われています。テロメアリピートを持つロングリードを取り出し、minimap2によるAll-versus-allマッピングを最小クエリーカバレッジ95%を有する重複リードのみ行い、iGraphネットワークでキュレート、全ゲノムアセンブリと繋げて伸ばすという戦略が取られています。勉強になりました。


2022/07/30

M1 mac

(1月のツイート)

 

2023/10/28

https://twitter.com/lh3lh3/status/1716295082259697846

ソフトクリップ情報からSVを検出する seeksv

 

 構造変化(SV)は欠失(DEL)、挿入(INS)、複製、逆位(INV)および他の複雑な再編成を含む50bpを超えるセグメントをカバーする。一塩基多型(SNP)と比較して、SVは、カバーされたヌクレオチドの数が多いため、ヒトゲノムの差異をよりたくさん説明する(Baker、2012)。現在の方法は、大部分がハイスループット配列決定(HTS)のリードに基づいている。これらのメソッドは、depth of coverage(DOC)、paired-end mapping(PEM)、split read(SR)およあびアセンブリベース(AS)の4つのカテゴリに分類できる。これらの方法はすべて制限があり、包括的なSV検出には適していない。 DOCベースの方法(Abyzov et al、2011; Szatkiewicz et al、2013; Xie and Tammi、2009)は、リードが染色体に沿って均一であり、領域に入るリード数がポアソン分布に従うと仮定している。 cn.MOPS(Klambauer et al、2012)は、ゲノム位置ごとに複数のサンプルを読み込み、テクニカルおよび生物学的要因によるリード数の変動に強いモデル化をしている。リードのカウントは、バリエーション検出の重要なシグネチャになる。 DOCメソッドは、重複やDELなどのコピー数の変動に最適である。 PEMに基づく方法(Abyzov and Gerstein、2011; Chen et al、2009; Hormozdiari et al、2010; Korbel et al、2009; Sindi et al、2009; Qi and Zhao、2011)はマッピングされたペアリードのインサートサイズと方向をシグネチャとする。 InGAP-sv(Qi and Zhao、2011)は、不一致のペアリングされたリード信号と、ローカルDOC、マッピングクオリティ、関連するタンデムリピートを含むいくつかの特徴に基づいてSVを検出し、視覚化する。検出されたコピー数変化およびコピー数不変バリアントは、ブレークポイントの正確な分解能ではなく、複雑さの低いゲノム領域での検出能力が低い。 SRベースの方法(Li et al、2013; Wang et al、2011; Ye et al、2009; Zhang et al、2016)は、ペアエンドの片方のリードが参照に一意的にアライメントされ、他はできない。アライメントされなかった側のリードは、ブレークポイントをまたがるマップができるように、分割マップされる。Sprites(Zhang et al、2016)は、クリップされた部分ではなくマッピングされていない全体のリードを、標的配列にアライメントするために使用する。これは、マイクロホモロジーまたはマイクロINSでDELを検出することを目的としている。 SRベースの方法は、検出可能なSVサイズが制限されているため、bpレベルの分解能に達する可能性がある。 アセンブリベースの方法(Alkan et al、2011; Chen et al、2014; Li et al、2011; Zhuang and Weng、2015)が最良の方法であり、ゲノムの複雑さを考慮すると、このような方法は一般に単純な生物の変化の検出に適用可能であるが、従来のデノボアセンブリ方法は変異を検出するようには設計されていない(Zhuang and Weng、2015)。上記の4つの主要アプローチのいずれも包括的ではなく(Alkan、et al、2011)、それらはお互いを補完している。現在のSV検出法(Bellos et al、2012; Jiang et al、2012; Rausch et al、2012; Sindi et al、2012)は、2つまたは3つのシグネチャを利用しており、良好な検出効果を達成する。 Svclassify(Parikh et al、2016)は、異なる配列決定技術からの全ゲノムシーケンシングデータセットを組み合わせ、教師なし機械学習法を用いてSVを遺伝子型分類し、候補SVを真陽性または偽陽性に分類することで、信頼性の高いSVコールを行う。

 しかし、これらの方法は、正常な遺伝子機能を変化させ(Yang et al、2013)、腫瘍形成を導く単一サンプルおよび体細胞SVに基づいて生殖系列ゲノムを検出することを目指している(Carter et al、2012)。 Somatic SVは、癌遺伝子の過剰発現または過小発現に関与し、癌発生に役割を果たす。 CREST(Wang、et al、2011)は、ソフトクリッピングされたリードを使用してブレークポイントを正確に特定する。それは体細胞的に獲得されたSVを検出するのに特に適しているが、いくつかの欠陥がある。(以下略)

 本論文では、体細胞SV検出(germlineにも使用できる)のために開発されたseeksvという新しいSV検出パイプラインを提案する。SR信号、不一致PEM信号、DOC信号、両末端不一致の各種検出信号を網羅的に使用している。 Seeksvはアセンブリに依存せずコンティグを基準に戻すためにBurrows-Wheeler Aligner(BWA)を使用する。 アライメント結果からマッピングされていない2つの末端を持つフラグメントを抽出し、COPE(Liu et al、2012)を呼び出して長いシングルエンドリードを取得し、リファレンスシーケンスにアラインする。一般的には、ペアエンドシーケンシングリードはSVを解析するために利用されるが、Seeksvはペアエンドシーケンシングリードやシングルエンドシーケンシングリードなど、さまざまなタイプのシーケンシングデータに対応する。著者らが知る限り、SeeksvはSV検出のためのシングルエンドリードを利用する最初のツールである。複雑なゲノムは、相同性が最大の相同配列を多数含み、ブレークポイントがマルチアライメントの相同領域に位置する場合、一部のSVは見逃される。 Seeksvは、繰り返し領域に位置するSVを扱うレスキューモデルを開発している。モードがオンになると、マルチアラインメントの詳細な結果を保存してブレークポイントの位置を計算する。

 ウイルス配列の宿主ゲノムへの組み込みは特別なSVである。宿主細胞に侵入する腫瘍ウイルスは、細胞増殖および制御されない増殖をもたらし、最終的に細胞形質転換および腫瘍形成を誘導し得る。ウイルスの発生と発生のメカニズムを明らかにするために、ウイルスと宿主との間の統合関係を分析する必要がある。 SVツールは、腫瘍発生研究にとって不可欠なウイルス組み込み部位を検出できる。 Seeksvは、全ゲノムシーケンシングデータまたはプローブキャプチャデータを用いてウイルス組み込み部位を同定する優れた能力を有する。従来の研究方法と比較して、seeksvの分解能は単一ベースレベルを達成し、より高い精度と効率で、すべてのウィルス組み込みイベントを同時に検出する。

 

インストール

cent OSに導入した。

Github

https://github.com/qiukunlong/seeksv

git clone https://github.com/qiukunlong/seeksv.git 
cd seeksv/seeksv/
./seeksv #ビルドし直すならmake clean && make

$ ./seeksv 

Program: seeksv (a tool for structural variation detection and virus integration detection)

Version: 1.2.3

Contact: Kunlong Qiu(290832867@qq.com)

 

Usage: seeksv <command> [options]

 

Command: getclip    get soft-clipped reads

         getsv      get final sv

         somatic    get somatic sv

  

ラン

1、単一サンプルのSV検出。

step0 (optional): PCR duplicationの検出。

java -jar picard.jar MarkDuplicates INPUT=input.bam OUTPUT=dedup_reads.bam METRICS_FILE=metrics.txt

dedup_reads.bamが出力される。

 

step1: soft-clipリードの抽出。

seeksv getclip -o output dedup_reads.bam

output.clip.fq.gz、output.clip.gz、unmapのread1, 2が出力される。

 

step2: soft-clipしたリードをリファレンスにマッピング

bwa mem reference.fa output.clip.fq.gz |samtools view -Sb -o output.clip.bam -

output.clip.bamが出力される。

 

step3: soft-clipしたリードをリファレンスにマッピング。オリジナルbamとgeclipで出力したoutput.clip.gzを指定する。

seeksv getsv output.clip.bam dedup_reads.bam output.clip.gz SV.txt unmap.fq.gz

output.clip.fq.gz、output.clip.gzとunmapのread1、2が出力される。

出力は一般的なVCFにはのっとっていない。

f:id:kazumaxneo:20180402200547j:plain

検出感度を調整するにはseeksv getsv で表示されるオプション一覧を確認してください。

 

 

 

2、コントロールと比較したSV検出。ここではexample/にある体細胞の腫瘍のSV検出をコントロールと差分をとって行う。

準備するもの。

  • normal.bam ノーマルサンプル(コントロール)のbamファイル。
  • tumor.sv.txt  tumorのSV検出結果。上のフローで作成する。

 

soft-clipリードの抽出。

seeksv getclip -o normal normal.bam

normal.clip.gz、normal.clip.fq.gzが出力される。

 

somatic SVの検出(normalと差分を取る)。

seeksv somatic normal.bam normal.clip.gz tumor.sv.txt tumor.somatic.sv.txt

tumor.somatic.sv.txtが出力される。

 

引用

Seeksv: an accurate tool for somatic structural variation and virus integration detection.

Liang Y, Qiu K, Liao B, Zhu W, Huang X, Li L, Chen X, Li K

Bioinformatics. 2017 Jan 15;33(2):184-191. 

 

ロングリードを使い環状DNAかどうか調べる Circlator

2019 2/26 condaインストール追記

 

 デノボアセンブリの課題は、世界初の自動DNAシーケンサーの登場以来ずっと存在していた。初期ゲノムシーケンスデータのアセンブリは、大きく2つの戦略に基づいていた:BAC / YACタイリングまたは全ゲノムショットガン[論文より ref.1]。これらのストラテジーは、今日ではリファレンスゲノムとして頻繁に使用される高品質のゲノム配列作製を可能にするが、それらは低速で高価であり、そして必要な場合には、ゲノム配列の完成および最終段階で手間と費用がかかる手動の仕上げ作業が必要である。ハイスループットなシークエンシング技術が導入されたことにより、高度な全ゲノム配列データを生成するのに必要な時間とコストが大幅に削減された。しかし、これらのデータからのデノボゲノムアセンブリは、断片化されたゲノムしか生成されないのが一般的であり、その結果、ほとんどのショートリードアセンブリアルゴリズムは完成したゲノムの環状化などの問題に取り組まない。

 最近、Pacific Biosciences(PacBio)とOxford Nanopore Technologies(ONT)の高スループット、ロングリード(数十キロベースまで)のシーケンシング技術が利用できるようになり、自動化されたデノボアセンブリの連続性が向上した。DNA分子あたり1つのコンティグの生産が、細菌および小規模な真核生物のゲノムにとって前例のない規模で可能になっている[ref.2]。ショートリードの技術と比較して、PacBio、特にONTリードのエラー率は高いが、これはシーケンサースループットの高さおよびランダムエラーモデルを利用することによって軽減される。セルフマッピングを使用したrawシーケンシングリードのエラーを修正することによりエラーは訂正され、それからオーバーラップレイアウトコンセンサスアセンブリアプローチ(例えばHGAP [ref.3]、PBcR [ref.4]、およびSPRAI [ ref.5])によってアセンブルされる。

 これらの新しい技術は、ゲノム配列のルーティンな自動完成の率を高めているが、現在のロングリードアセンブリソフトウェアは、典型的には、それらが生成するコンティグが線形であると仮定している。対照的に、ほとんどすべての種のゲノムは、少なくとも1つの環状DNA構造で、例えばバクテリアのクロモソームとプラスミドならびに真核生物の色素体およびミトコンドリアゲノムがこれに含まれる。これらの分子の正確な完了および環化は、臨床診療において日常的に使用される場合には不可欠である。全ゲノムシークエンシングは、すでに細菌疫学において改善された分解能を提供しており[ref.6]、抗菌抵抗性のin silico予測を可能にしている[ref.7]。多くの重要な抗菌剤耐性および病原性決定因子がプラスミド上に担持され、これらの環状配列について完全で正確な情報を有することの重要性が示される。同様に、ヒトにおいて、ミトコンドリアゲノムは、うつ病[ref.8,9]、Leber遺伝性視神経症[ref.10]、および筋障害および真性糖尿病[ref.11]のような表現型の制御に関与している。

 従って、環状DNA構造の正確な表現を自動生成できることは明らかに重要である。しかし、環状DNA構造を表すためにアセンブリプログラムによって生成された直線状のコンティグは、エラーを含む可能性がある。コンティグの両端には、ほぼ同一のオーバーラップがしばしば見られる。これを解決するには、かなりの手動介入が必要になる(論文 図1a)。あるいは、配列は不完全であり、コンティグの終わりに合流する短い配列を欠いていてもよい(論文 図1b)。最後に、アセンブルされる配列がいくつかのリード長よりも短い場合、それは環状ゲノム全体の複数の重複として誤ったアセンブルデータを含む可能性がある(図1c)。現在、各コンティグ末端で共通配列を同定するアプローチが2つ存在する。それらはBLAST [ref.12]およびMinimus2 [ref.13]である。著者らの評価では、これらの方法は、新規のアセンブラによって生成された重大な不正確な構造表現に対処することができず、従って、環状DNA構造の正確な表現を生成するためにさらなる手動作業を必要とする。

 本論文では、環状DNA構造を生成するためのアセンブリ後の改良ツールキットCirclatorを紹介する。 このツールはコンティグの末端でエラー訂正されたロングリードのローカルアセンブリを使用してコンティグを環状化する。 これにより、低品質のコンティグ端の間で共通のシーケンスを探すことを回避し、重複が存在しない場合でも循環を可能にする。 Circlatorは広範なバクテリア、ヒトゲノム、Plasmodiumサンプルを用いて評価され、現在の方法より優れていることを示した。

  

 

公式サイト

http://sanger-pathogens.github.io/circlator/

wiki

https://github.com/sanger-pathogens/circlator/wiki

  

インストール

依存

  • Python3
  • BWA version >= 0.7.12
  • prodigal version >= 2.6
  • SAMtools (versions 0.1.9 to 1.3)
  • MUMmer version >= 3.23
  • Canu and/or SPAdes. SPAdes version 3.6.2 or higher is required, but 3.7.1 is recommended (marginally gave the best results on NCTC data from the Circlator publication, tested on all SPAdes versions 3.6.2-3.9.0).

標準ではspadesアセンブラを利用するため、canuはインストールされてなくても動く。環境変数$CIRCLATOR_SPADESをspadesのパスに定義して置かないと、spadesのパスを探す 。spades3.7をインストールすることが推奨されているので、最新のspadesを使っているなら、spades3.7を別にインストールして$CIRCLATOR_SPADESをexportしとく(See Github)。

 

本体 Github

https://github.com/sanger-pathogens/circlator

#anaxcondaを使っているなら
conda install -c bioconda -y circlator


#または
pip install circlator

 #動作テスト

circlator progcheck

$ circlator progcheck

Circlator version: 1.5.5

 

External dependencies:

bwa 0.7.17 /usr/local/bin/bwa

canu 1.6 /usr/local/bin/canu

nucmer 3.1 /usr/local/bin/nucmer

prodigal 2.6.3 /usr/local/bin/prodigal

samtools 1.6 /Users/user/.pyenv/versions/anaconda3-4.2.0/bin/samtools

WARNING: SPAdes version 3.11.0 is being used. It will work, but better results are usually obtained from Circlator using SPAdes version 3.7.1. Although 3.7.1 is not the latest version, we recommend it for Circlator.

spades 3.11.0 /usr/local/bin/spades.py

 

Python version:

3.5.2 |Anaconda custom (64-bit)| (default, Jul  2 2016, 17:52:12) 

[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]

 

Python dependencies:

openpyxl 2.3.2 /Users/user/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/openpyxl/__init__.py

pyfastaq 3.17.0 /Users/user/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/pyfastaq/__init__.py

pymummer 0.10.3 /Users/user/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/pymummer/__init__.py

pysam 0.13 /Users/user/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/pysam/__init__.py

 

#ヘルプ

> circlator 

$ circlator

Usage: circlator <command> [options] <required arguments>

 

To get minimal usage for a command use:

circlator command

 

To get full help for a command use one of:

circlator command -h

circlator command --help

 

 

Available commands:

 

all        Run mapreads, bam2reads, assemble, merge, clean, fixstart

mapreads   Map reads to assembly

bam2reads  Make reads from mapping to be reassembled

assemble   Run assembly using reads from bam2reads

merge      Merge original assembly and new assembly made by assemble

clean      Remove small and completely contained contigs from assembly

fixstart   Change start position of circular sequences

minimus2   Run the minimus2 based circularisation pipeline

get_dnaa   Download file of dnaA (or other of user's choice) genes

progcheck  Checks dependencies are installed

test       Run Circlator on a small test set

version    Print version and exit

allモードでは上記のコマンドのいくつかが順に実行されている。

 

 

ラン

Circulatorのパイプラインは、上のコマンドを順番に進めるモードと、一気にランするモード(all)がある。allは以下のコマンドで実行できる。

 

Pacbioのシーケンスデータ。

circlator all assembly.fasta long_reads.fq.gz output_directory --verbose --threads 20
  • --threads    Number of threads [1] 
  • --verbose   Be verbose

 

Nanoporeのデータ。シーケンスエラーが多いため、Pacbiの時より少し緩和したパラメータで動かす。

circlator all --merge_min_id 85 --merge_breaklen 1000 assembly.fasta long_reads.fq.gz output_directory --verbose --threads 20
  • --merge_breaklen    breaklen option used by nucmer [500] 
  • --merge_min_id     Nucmer minimum percent identity [95]

 

....................................................................................................

# CONSTRUCTIONTIME /usr/local/Cellar/mummer/3.23_2/mummer p.ntref 1.82

# reading input file "/Volumes/3TB4/E_coli_nanopore/circular_output2/05.clean.remove_small.fa" of length 4404394

# matching query-file "/Volumes/3TB4/E_coli_nanopore/circular_output2/05.clean.remove_small.fa"

# against subject-file "p.ntref"

# COMPLETETIME /usr/local/Cellar/mummer/3.23_2/mummer p.ntref 5.80

# SPACE /usr/local/Cellar/mummer/3.23_2/mummer p.ntref 8.54

4: FINISHING DATA

 

______________________________ Running fixstart _______________________________

[fixstart] loaded input contigs

[fixstart] Running promer to look for reference genes

[fixstart] Running prodigal on sequences that had no promer match

[fixstart] Fixing start positions of contigs

[fixstart] Writing final FASTA file of contigs

___________________________________ Summary ___________________________________

Number of input contigs: 1

Number of contigs after merging: 1

Circularized 0 of 1 contig(s)

ランが終わると、circularと判断されたFASTA配列が出力される。

 

引用

Circlator: automated circularization of genome assemblies using long sequencing reads.

Hunt M, Silva ND, Otto TD, Parkhill J, Keane JA, Harris SR

Genome Biol. 2015 Dec 29;16:294.