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.
#仮想環境に入れる
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]
引用
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
関連