macでインフォマティクス

macでインフォマティクス

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

ONTのロングリードのマッピングからSVを検出する NanoSV

  第二世代DNAシークエンシングは、ヒトの遺伝病の研究と診断に不可欠な技術となっている。ヒトの全エキソームシーケンシングにより、メンデル疾患(ref.1)に関与する遺伝子が同定され、ヒトの全ゲノムシーケンシングにより、遺伝子内だけでなくノンコード領域の遺伝的変化によっても無数の疾患が引き起こされることが明らかになった(ref.2)。ゲノムシーケンシングにより患者のユニークな突然変異プロファイルの完全な解明ができれば個人のオーダーメイド治療が可能になるため、臨床決定の場面で急速に採用されてきている。
 SVは一塩基変異(SNV)よりもはるかに多くの塩基変化を起こす変異の重要なクラスであり、ヒトゲノムの構造変異(SV)を検出する堅牢な方法が不可欠である。さらに、SVは広範な遺伝的障害に関与している(ref.6)。
 ゲノムシーケンシングにおける特に革新的な開発は、DNA配列を直接かつリアルタイムで測定するためのナノポアタンパク質の使用である。消費者向けデバイスで成功した最初の実装は、2014年にOxford Nanopore TechnologiesのMinionによって達成された(ref,8)。 Minionは長さが数百キロベースのDNAのシーケンシングができ、すでにいくつかの生物のゲノムシーケンスにつながった(ref.9,10)。
 ナノポアシーケンシングによって生成されるロングリードの重要かつ自然な応用は、構造変化の同定である。ロングリードシークエンシングは、これまでにないスケールと深さのSVの発見の根拠となっている。最初の成功は、Pacific BioSciences SMRTロングリードシークエンシングプラットフォーム(ref.12,13)およびBioNano (ref.14)および10X Genomics (ref.15)などの代替方法を使用して達成された。 構造変化を正確に同定するために、ショートリードの次世代シーケンシングデータでは(しばしば)複数の間接的な情報源に依存しているが、ロングリードデータは構造変化を直接明らかにできる。
 この研究では、Minionシーケンサーにより二倍体ヒトゲノムの全ゲノムシーケンシングを初めて実証する。著者らは、11-16Xのデプスで2人のクロモリプリシスから生じる先天性疾患患者のゲノムを解析した。我々(著者ら)は、ナノポアリードを使い新規の複雑なSVブレークポイントを高感度に検出する可能性を実証するために、新しい計算パイプラインを採用している。 Minionのロングリードは、ゲノムワイドな遺伝的変異(SNVsおよびSVs)の効率的なフェージングを可能にし、患者におけるクロモリピスの長距離の構造を明らかにした。さらに、同じ患者ゲノムのイルミナのショートリードシーケンシングデータにおいて検出されないSVのかなりの割合を同定した。
 これらの結果は、安価な装置を使って臨床のヒト試料をリアルタイムシーケンシングできる実用性の高さを強調している。ナノポアベースのシーケンシングはほとんど投資を必要とせず、現在のデバイスのフットプリントが非常に小さいため、これらのシーケンサを主流に採用することは、現在の中央センターでのシーケンシング解析パラダイムを根本的に変える可能性がある。

 ここで開発されたNanoSVアルゴリズムhttps://github.com/mroosmalen/nanosv)は、入力としてBAMファイルを使用する(一部略)。NanoSVは、スプリットリードのクラスタリングを使用してSVブレークポイントジャンクションを識別する。第1のステップでは、スプリットされたリードのすべてのマッピングセグメントオリジナルのリード位置に基づいて順序付けられる。整列されたリードは、その整列したセグメント間のギャップ、すなわち挿入(Supplementary Figure 8 , Supplementary Figure 9 )または単に低品質配列により、リファレンスゲノム上のどこにもアライメントしない配列を含みうる(以下略)。

 


 NanoSVに関するツイート。

 インストール 

mac os10.12でテストした。lastはpython2.7環境で実行したが、nanosvはAnaconda3.5.2環境で実行した。

依存

  • samtoolsかsambambaのどちらか
  • ロングリードマッパー(last、mininmap2、graphmap、ngmlrなどいずれか)

本体 Github

#Anaconda環境ならcondaで導入できる(リンク)。
conda install -c bioconda nanosv


#
Anacondaを使ってなくてもpipで導入できる。
pip install nanosv

nanosv -h

$ nanosv -h

usage: nanosv [-h] [-t THREADS] [-s SAMBAMBA] [-c CONFIG] [-b BED] [-o OUTPUT]

              [-f SNP_FILE]

              bam

 

Put here a description.

 

positional arguments:

  bam                   /path/to/file.bam

 

optional arguments:

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

  -t THREADS, --threads THREADS

                        Number of threads [default: 4]

  -s SAMBAMBA, --sambamba SAMBAMBA

                        Give the full path to the sambamba or samtools

                        executable [default: sambamba ]

  -c CONFIG, --config CONFIG

                        Give the full path to your own ini file [ default:

                        config.ini ]

  -b BED, --bed BED     Give the full path to your own bed file, used for

                        coverage depth calculations [default: human_hg19.bed ]

  -o OUTPUT, --output OUTPUT

                        Give the full path to the output vcf file [default:

                        <stdout> ]

  -f SNP_FILE, --snp_file SNP_FILE

                        Give full path to the SNP variant file for phasing.

                        Supporting file formats: BED and VCF

——

 

ラン

1、 はじめにマッピングしてsamを作る。2018年7月現在、いくつかのアライナが利用できる。

#1 bwaを使う(紹介
bwa index ref.fa
bwa mem -x ont2d -M -t 12 ref.fa input.fq > output.sam

#2 minimap2を使う(
紹介
minimap2 -t 12 -a
ref.fa input.fq > output.sam

#3 NGMLR
を使う 紹介
ngmlr -x ont -t 12 -r
ref.fa input.fq > output.sam

$4graphmapを使う。
graphmap align -t 12 -r ref.fa -d
input.fq -o output.sam

 オーサーらは、コンピュータへの負担が大きくなるが、 LASTでマッピングした時が最もnanoSVの検出精度が高かったと述べている。試しましたが、上のマッパーと比べ非常に時間がかかります。データサイズが大きい時は注意してください。

#index
lastdb refdb ref.fa

#dictファイル作成
java -jar picard.jar CreateSequenceDictionary REFERENCE=ref.fa OUTPUT=ref.dict


#マッピングしてデータに適したマッピングパラメータ作成(トレーニング)
last-train -P12 -Q1
refdb input.fq > my-params

#マッピング。シーケンスデータがfastaなので-Qは0。
lastal -P12 -Q0 -p my-params
refdb input.fq | last-split - > output.maf

#mafからsamに変換。
maf-convert -f ref.dict sam -r ‘ID:[id] PL:[nanopore] SM:[sample]’
output.maf > output.sam
  • -P: number of parallel threads (1)
  • -Q    input format: 0=fasta, 1=fastq-sanger, 2=fastq-solexa, 3=fastq-illumina,
    4=prb, 5=PSSM (0)
  • -r     read group info for sam format

LASTを使ったロングリードのマッピングは以前の投稿も参考にして下さい(リンク)。

 

2、sambamba(紹介)を使ってsamからbamに変換。

sambamba view -t 8 -h -S -f=bam output.sam > output.bam
sambamba sort -t 8 output.bam -o output_sorted.bam
  • -f specify which format to use for output (default is SAM)
  • -S specify that input is in SAM format

 

3、NanoSVを使い、bamからSVを検出する。sambambaかsamtoolsのパスをフルパスで与える。詳細なパラメータはconfigファイルで指定する。configファイルはリンク先のように記述する。"-c"で指定しない場合、defaultのconfig条件で実行される。

NanoSV -t 12 -s /usr/local/bin/sambamba -c config.ini -b gene.bed -o output.vcf output_sorted.bam
  • -s     Give the full path to the sambamba or samtools executable [default: sambamba ]
  •  -c    Give the full path to your own ini file [ default: config.ini ]
  • -t      Maximum number of threads to use [default: 4 ]
  • -b     Give the full path to your own bed file, used for coverage depth calculations [default: human_hg19.bed ]

    -o     Give the full path to the output vcf file [default: <stdout> ]

結果はvcf形式で出力される。

 

ハプロタイプフェージングについては、現在チューニング最中と記載されている。

 

引用

Mapping and phasing of structural variation in patient genomes using nanopore sequencing

Mircea Cretu Stancu, Markus J. van Roosmalen, Ivo Renkens, Marleen M. Nieboer, Sjors Middelkamp, Joep de Ligt, Giulia Pregno, Daniela Giachino, Giorgia Mandrile, Jose Espejo Valle-Inclan, Jerome Korzelius, Ewart de Bruijn, Edwin Cuppen, Michael E. Talkowski, Tobias Marschall, Jeroen de Ridder & Wigard P. Kloosterman

Nature Communicationsvolume 8, Article number: 1326 (2017)