macでインフォマティクス

macでインフォマティクス

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

PCR duplicationにタグをつけたりエラーを取り除く gencore

2018/12/22 タイトル修正

 

 HIgh depthの次世代シークエンス(NGS)は、癌の精密な診断と治療に広く使用されている。このようなディープシーケンシングデータから、体細胞突然変異を検出して、パーソラナイズされた標的療法または免疫療法のガイドにすることができる。最近、circulating tumor DNA (ctDNA)シーケンシングが癌治療およびモニタリングのための有望なバイオマーカーとして認識されている。腫瘍由来のDNAは、通常、血中の細胞フリーなDNAの一部であるため、ctDNAシークエンシングデータから検出されるバリアントのmutant allele frequency (MAF)は非常に低い(0.1%程度)。このような低スペクトラムのバリアントを検出するために、通常、シーケンシングデプスを増加させる(10,000xを超える可能性がある)。しかし、NGSライブラリーとシークエンシングを作成するプロセスには、エラーがないわけではない。特に、PCR技術を用いたライブラリー増幅は、多くのエラーを引き起こす可能性があり、その結果、NGSデータ解析の結果にいくつかの偽陽性突然変異を引き起こす。
 ライブラリー増幅の結果、NGSデータは重複する可能性がある。シーケンシングデプスが多いほど、データの重複が多くなる。伝統的には、duplicated reads をマークし、ダウンストリーム分析の前にそれらを削除する。デプスの少ないペアエンドのNGSデータの場合、同じ開始および終了マッピング位置のペアリードは、同じ元のDNA断片に由来するduplicated reads として扱うことができる。一緒にクラスタリングされたリードは、次に1つのリードに併合することができる。通常はエラーがランダムに発生するという性質から、クラスター化されたリードグループ内の不一致を除去してコンセンサス読み取りを生成できる。
 しかし、非常に深いシーケンシングのために、異なるDNA断片から同じポジションを有する2つのペアリードが誘導される可能性がある。この可能性は、DNAフラグメントがより短い場合に高くなり得る。例えば、無細胞DNAは、通常、約167bpのピーク長を有し、通常断片化されたゲノムDNAのピーク長よりもはるかに短い。異なるDNA断片由来のシーケンシングリードをよりよく同定するために、unique molecular identifier (UMI)と呼ばれる技術が開発されている。 UMI技術を用いて、各DNAフラグメントは、DNA増幅プロセス前に独特のランダムなバーコードと連結される。 UMIは、リードの正確なクラスタリングに使用できる。
 現在、Picard MarkDuplicatesのような従来の重複除去ツールは、コンセンサスリードを良好に実行することができず、UMI統合データを処理することができない。さらに、Picard MarkDuplicatesの速度が遅すぎ、メモリ使用量が多すぎるため、クラウドベースの展開には適していない。これらの満たされていない要件により、gencoreという新しいツールを開発した。これは、エラーを排除し、コンセンサスリードを生成することによって重複を削除する。

 gencoreには、ソートされたBAMファイルとリファレンスゲノムFASTAファイルの入力が必要になる。 FASTQデータにUMIがある場合は、UMIを読み取りシーケンスからUMIに移動するためにfastp(Chen、Zhou、Chen、&Gu、2018)を使用して前処理することができる。gencoreは、各クラスタに対して、マッピング位置とUMI(該当する場合)によってペアリードからコンセンサスリードを生成する。

 

f:id:kazumaxneo:20181222202926j:plain

Githubより

 

インストール

mac os10.14でテストした。

本体 Github

#linux向けバイナリ
wget http://opengene.org/gencore/gencore
chmod a+x ./gencore

#ビルドする
git clone https://github.com/OpenGene/gencore.git
cd gencore
make

 >  ./gencore -h

$ gencore -h

undefined short option: -h

Version: 0.10.0, usage: gencore --ref=string [options] ... 

options:

  -i, --in                   input sorted bam/sam file. STDIN will be read from if it's not specified (string [=-])

  -o, --out                  output bam/sam file. STDOUT will be written to if it's not specified (string [=-])

  -r, --ref                  reference fasta file name (should be an uncompressed .fa/.fasta file) (string)

  -u, --umi_prefix           the prefix for UMI, if it has. None by default. Check the README for the defails of UMI formats. (string [=])

  -s, --supporting_reads     only output consensus reads/pairs that merged by >= <supporting_reads> reads/pairs. The valud should be 1~10, and the default value is 2. (int [=2])

  -a, --ratio_threshold      if the ratio of the major base in a cluster is less than <ratio_threshold>, it will be further compared to the reference. The valud should be 0.5~1.0, and the default value is 0.8 (double [=0.8])

  -c, --score_threshold      if the score of the major base in a cluster is less than <score_threshold>, it will be further compared to the reference. The valud should be 1~20, and the default value is 6 (int [=6])

      --high_qual            the threshold for a quality score to be considered as high quality. Default 30 means Q30. (int [=30])

      --moderate_qual        the threshold for a quality score to be considered as moderate quality. Default 20 means Q20. (int [=20])

      --low_qual             the threshold for a quality score to be considered as low quality. Default 15 means Q15. (int [=15])

  -j, --json                 the json format report file name (string [=gencore.json])

      --debug                output some debug information to STDERR.

      --quit_after_contig    stop when <quit_after_contig> contigs are processed. Only used for fast debugging. Default 0 means no limitation. (int [=0])

  -?, --help                 print this message

 

 

実行方法 

ウルトラディープシーケンシングでduplicated readsも多数予想される時、クリーニングされたbamを出力する。

gencore -i in.bam -o out.bam -r hg19.fa -s 2
  • -s, --supporting_reads     only output consensus reads/pairs that merged by >= <supporting_reads> reads/pairs. The valud should be 1~10, and the default value is 2. (int [=2])

 

PCR duplicationにタグをつける。Picard(ピカード)のmarkduplicateの代わりに使える(s=1でリードは除去しない)。

gencore -i in.bam -o out.bam -r hg19.fa -s 1

 

クオリティの低いリードを除きクリーニングする。

gencore -i in.bam -o out.bam -r hg19.fa -s 1 --score_threshold=8

 

 UMIt tag付きデータの扱いについてはGithubで確認してください。

引用

gencore: an efficient tool to generate consensus reads for error suppressing and duplicate removing of NGS data
Shifu Chen, Yanqing Zhou, Yaru Chen, Tanxiao Huang, Wenting Liao, Yun Xu, Zhihua Liu, Jia Gu

bioRxiv preprint first posted online Dec. 19, 2018