macでインフォマティクス

macでインフォマティクス

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

TGSデータのためのQCツール LongQC

 2020 7/27 追記 

 

 ショートリードシーケンス技術は、過去 10 年間の生物学のパラダイムを変えてきた。最近では、TGSが登場し、1分子からの非常に長いが比較的エラーが発生しやすいリードを提供している。FastQC (https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) や PRINSEQ (Schmieder and Edwards 2011) のようなショートリードのための標準的な品質管理(QC)方法があるが、これらの方法は、エラーが発生しやすいロングリードを特徴付けるために完全に最適化されていなかった。科学界ではTGSの採用が急速に進んでいるため、ロングリードデータに対するこのような手法の適用可能性と適合性を再考する価値がある。ロングリードデータのユニークな特性を説明するためには、異なる特性を記述するための異なるQC統計量が必要である。

 Phredクオリティスコアは、シーケンシングデータの品質を評価するために広く使われている測定値である。残念ながら、PacBio Sequel システムでは意味のある Phred スコアを提供していない。ベースコールの信頼性を示す指標としての Phred スコアがなければ、データセットから信頼性の高いコンセンサス配列を得るためには、カバレッジが重要な基準となる。これは、主にONTデータセット用に開発された最近リリースされたNanoPack(De Coster et al. 2018)にも影響を与える。PacBio uBamローディングの機能にもかかわらず、NanoPackはPhredスコアの欠如により、データを完全に評価することができない。ONTコミュニティ内で利用可能な他のQCツールは、ONTシステムによって生成されたメタデータを使用してプラットフォーム固有の統計を要約するため、ONTにのみ適している(Loman and Quinlan 2014; Watson et al. 2015; Lanfear et al. 2019)。このようなツールは、完全な分析の前に適用することができるが、メタデータのフォーマット変更の影響を受けやすい。実際、生データのフォーマット(Fast5)やベースコールプログラムの変更は、ONTのために頻繁に行われてきた。以前のONT QCツールは、最新のFast5フォーマットでは使用できなくなった。さらに、Scrappie や Bonito のような新しい ONT ベースコーラーは、Sequel のように Phred スコアの計算をスキップする。

 別の QC アプローチとしては、リードポリッシュツールを適用する方法がある。DASCRUBBERはPacBio社のリードをスクラブするために開発されたスイートである(https://github.com/thegenemyers/DASCRUBBER)が、それ自体はQC専用ではなくて、品質評価に使用することができる。DASCRUBBERのフレームワークの下では、リードのall versus all比較を実行して、誤りのあるセグメントを見つけ出してトリミングする。このプロセスは、完全性と精度のためにワークステーション上で何時間もかかることがある。さらに、サポートされているファイル形式の数が限られていること、異なるパラメータオプションでスイート内で複数のコマンドを実行していること、データの品質を判断するための明示的な手段がないことなどが、経験の浅いユーザーにとっての課題となる可能性がある。

 低品質のポアからのONTリードは、時に誤解を招くほど高い品質スコアを示すことがあるにもかかわらず、ランダムであることが報告されている(Mojarro et al., 2018)。これらのリードは人為的に生成されたものであり、サンプルとの生物学的関連性はない。実際、各TGSデータセットには、一定量の「ノンセンスリード」が含まれることがあり、これは、同じライブラリ内の他のどの分子の配列にもマッピングできないユニークなリードとここで定義する。このように、データセットに含まれるノンセンスリードの割合は、シーケンス品質のロバストな指標として利用できることを提案する。

 ここでは、LongQC(Long read Quality Control)と名付けられたTGSデータのための新しいQCパイプラインを報告する。LongQCは計算効率が高く、プラットフォームに依存しないQCツールで、完全な解析を行う前に問題を発見することができる。このツールは、誤ったロングリード データを対象に統計を視覚化し、生物学的サンプルに起因する潜在的な問題や、シーケンス段階で発生した問題を強調表示する。LongQCは主要な TGS ファイル形式をサポートしている。LongQC は k-mer ベースの内部オーバーラップとスキップ アライメントに依存しているため、リファレンスゲノムがなくても効率的に動作する。

 

インストール

condaの仮想環境を作ってテストした(ubuntu 18.04)。またdockerイメージをビルドしてテストした(macos 10.14)。

依存

LongQC was written in python3 and has dependencies for popular python libraries:

  • numpy
  • scipy
  • matplotlib (version 2.1.2 or higher)
  • scikit-learn
  • pandas (version 0.24.0 or higher)
  • jinja2
  • h5py

Also, it depends on some bioinformatics packages.

Github

#仮想環境に入れる
conda create -n longqc -y
conda activate longqc
conda install h5py pandas scipy jinja2 matplotlib scikit-learn pysam edlib python-edlib -y

git clone https://github.com/yfukasawa/LongQC.git
cd LongQC/
#Modified version of minimap2 is required.
git clone https://github.com/yfukasawa/LongQC.git
cd minimap2_mod
make extra
export PATH=$PATH:$PWD

python longQC.py -h

$ python longQC.py -h

usage: LongQC [-h] [-v] {runqc,sampleqc,help} ...

 

LongQC is a software to asses the quality of long read data from the third

generation sequencers.

 

positional arguments:

  {runqc,sampleqc,help}

    runqc               see `runqc -h`

    sampleqc            see `sampleqc -h`

    help                see `help -h`

 

optional arguments:

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

  -v, --version         show program's version number and exit

 

> python longQC.py runqc -h

$ python longQC.py runqc -h

usage: LongQC runqc [-h] [-s SUF] [-o OUT] platform raw_data_dir

 

positional arguments:

  platform              a platform to be evaluated. [rs2, sequel, minion,

                        gridion]

  raw_data_dir          a path for a dir containing the raw data

 

optional arguments:

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

  -s SUF, --suffix SUF  suffix for each output file.

  -o OUT, --output OUT  path for output directory

 

python longQC.py sampleqc -h

$ python longQC.py sampleqc -h

usage: LongQC sampleqc [-h] -o OUT -x preset [-t] [-n NSAMPLE] [-s SUF]

                       [-c TRIM] [--adapter_5 ADP5] [--adapter_3 ADP3] [-f]

                       [-p NCPU] [-d] [-m MEM] [-i INDS] [-b]

                       input

 

positional arguments:

  input                 Input [fasta, fastq or pbbam]

 

optional arguments:

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

  -o OUT, --output OUT  path for output directory

  -x preset, --preset preset

                        a platform/kit to be evaluated. adapter and some ovlp

                        parameters are automatically applied. (pb-rs2, pb-

                        sequel, ont-ligation, ont-rapid, ont-1dsq)

  -t, --transcript      applies the preset for transcripts, RNA or cDNA

                        sequences

  -n NSAMPLE, --n_sample NSAMPLE

                        the number of sequences for sampling. (>0 and <=10000)

                        [Default is 5000].

  -s SUF, --sample_name SUF

                        sample name is added as a suffix for each output file.

  -c TRIM, --trim_output TRIM

                        path for trimmed reads. If this is not given, trimmed

                        reads won't be saved.

  --adapter_5 ADP5      adapter sequence for 5'.

  --adapter_3 ADP3      adapter sequence for 3'.

  -f, --fast            this turns off sensitive setting. Faster but less

                        accurate.

  -p NCPU, --ncpu NCPU  the number of cpus for LongQC analysis [Default is 4]

  -d, --db              make minimap2 db in parallel to other tasks.

  -m MEM, --mem MEM     memory limit for chunking. Please specify in gigabytes

                        (>0 and <=2). [Default is 0.5]

  -i INDS, --index INDS

                        Give index size for minimap2 (-I) in bp. Reduce when

                        running on a small memory machine.Default is 4G.

  -b, --short           this turns on the highly sensitive setting for very

                        short and erroneous reads (<500bp).

Dockerイメージ

wget https://raw.githubusercontent.com/yfukasawa/LongQC/master/Dockerfile
docker build -t longqc .
docker run -it --rm -v /path/to/shared_dir/:/data longqc

 

 

実行方法

 pacbio

#RS-II
python longQC.py sampleqc -x pb-rs2 -o out_dir input_reads.(fq|fa)

#sequal
python longQC.py sampleqc -x pb-sequel -o out_dir input_reads.bam

 

ONT

#1D ligation
python longQC.py sampleqc -x ont-ligation -o out_dir input_reads.fq

#rapid
python longQC.py sampleqc -x ont-rapid -o out_dir input_reads.fq

 

ValueError: Number of processes must be at least 1 が出て修正できなかった。

追記

issue#3を参考にした。

https://github.com/yfukasawa/LongQC/issues/3

"ーp 4"をつけると動作する。

python longQC.py sampleqc -x ont-rapid -o out_dir input_reads.fq -p 4
  •  -p NCPU, --ncpu NCPU  the number of cpus for LongQC analysis [Default is 4]

 

f:id:kazumaxneo:20200727192311p:plain



f:id:kazumaxneo:20200727191811p:plain

f:id:kazumaxneo:20200727191856p:plain



f:id:kazumaxneo:20200727191830p:plain



引用
LongQC: A Quality Control Tool for Third Generation Sequencing Long Read Data

Yoshinori Fukasawa, Luca Ermini, Hai Wang , Karen Carty , Min-Sin Cheung

G3. 2020 Apr 9;10(4):1193-1196

 

関連