macでインフォマティクス

macでインフォマティクス

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

Hi-Cシーケンスデータのリファレンスベースもしくはリファレンスフリーの品質評価ツール qc3C

 

 Hi-Cは、DNA分子間の空間的な相互作用をゲノム全体で捉えることができるハイスループットシーケンシングを可能にするサンプル調製法である。この技術は、クロマチンの3次元構造解析、大規模ゲノムアセンブリのスキャフォールド構築、最近ではメタゲノムアセンブリゲノム(MAG)の正確な解析など、困難な問題の解決に成功している。しかし、改良が続けられているにもかかわらず、Hi-Cライブラリーの調製は依然として複雑な実験プロトコルである。コストのかかる失敗を避け、成功の確率を最大化するためには、真摯な品質管理が推奨される。現在のウェットラボの手法では、Hi-Cライブラリの品質を粗く評価することしかできない。また、シーケンス後の品質を示す主要な指標は、これまでのところ、リファレンスベースのリードマッピングに依存している。リファレンスにアクセスできる場合、不完全または不正確なリファレンスが結果として得られる品質指標を歪めてしまうという、品質に対する懸念が生じる。そこで著者らは、プロキシミティライゲーションで生成されたリードペアの合計割合を推定する、リファレンスフリーの新しいアプローチを提案する。このHi-Cライブラリの品質の定量化には,わずかな量のシーケンスデータしか必要とせず,他のアプリケーション固有の基準に依存しない。このアルゴリズムは、近接ライゲーションイベントが、サンプル中に自然には存在しないk-merを作り出す可能性が高いという観察に基づいている。本ソフトウェアツール(qc3C)は、著者らの知る限り、リファレンスフリーのHi-C QCツールを初めて実装したものであり、リファレンスベースのQCも提供することで、非モデル生物や環境サンプルにHi-Cをより簡単に適用することができる。この新しいアルゴリズムの精度を、シミュレーションおよび実データセットで評価し、リファレンスベースの手法と比較する。

 

 標準的なHi-Cライブラリのプロトコルでは、無傷の細胞や組織から始まる巧妙なサンプル調製法によって、DNA:DNA相互作用の観察が行われる。まず、サンプル内のDNAをホルマリン固定により生体内で架橋し、各細胞内のDNAとタンパク質の物理的な接触を凍結させる。次に、細胞を溶解し、架橋されたDNA-タンパク質複合体を抽出・精製する。精製したDNA-タンパク質複合体を制限酵素で消化してフリーエンドを作り、それをビオチン化してブラント化させる。精製したDNA-タンパク質複合体を希釈して、あるいは固体基板に固定化して、フリーエンドライゲーションを行う。DNA-タンパク質複合体を希釈または固定化した環境下でライゲーション反応を行うと、生体内で空間的に近接していたフリーエンドが結合するように強くバイアスがかかる(proximity ligation (PL))。ライゲーションが完了すると、架橋が解除され、タンパク質が分解される。その後、DNAをせん断し、ビオチンアフィニティ精製により、ビオチンタグ付きのPLジャンクションを含むフラグメントを濃縮する。最後に、PLが濃縮されたフラグメントは、イルミナのペアエンドシーケンスライブラリのテンプレートDNAとなる。

 Hi-Cライブラリのシーケンスを行うと、PLを含む断片から得られるペアエンドリードの一部が実験のシグナルとなり、残りの部分はHi-Cプロトコル内のノイズとなる(論文図1)。ノイズの例としては、精製時の非特異的結合、ライゲーションされていないビオチン化された自由末端のプルダウン、偽のライゲーション産物などが考えられる。シグナルを形成するペアについては、ペア内の各リードが2つの相互作用する遺伝子座の1つに対応している。ここで、nPLはPLを含むリードペアの数、Nはシーケンシング実行中にライブラリから生成されたペアの総数である。Hi-Cシーケンスデータを利用するアルゴリズムは基本的にカウント実験であるため、その統計的検出力は利用可能なPL観測数に強く影響される。そのため、シグナルコンテンツはHi-Cライブラリの品質を示す最良の指標となるが、すべてのペアに存在する本質的な識別機能がないため、nPLを直接計算することはできない。

 

 

Githubより

qc3Cの主な目的は、Hi-Cシーケンスライブラリ内の「シグナル」の割合を推測し、品質管理の手段を提供することです(プロキシミティライゲーションで生成されたリードペアの合計割合を推定する)。qc3Cの大きな利点は、これまでモデル生物を含まないプロジェクトでは大きな障害となっていたリファレンス配列にアクセスすることなく行うことができることです。

シグナル」とは、望ましくないプロセスで生じたペアではなく、proximity ligationの真の産物であるリードペアの割合を意味しますが、これは下流の分析では実験のノイズとなります。Hi-Cペアの割合を推論する際、その分離距離に制限はない。これは、一般的に長距離でマッピングされたペアの割合(例:10kbp以上離れたペアの数)のみを調べるリファレンスベースの方法とは対照的です。

長距離ペアの割合は確かに重要な属性ですが、この種の情報はリファレンス配列(できれば高品質のもの)を使用しなければ確立できません。ドラフトアセンブリを使用した場合、配列の断片化により、大きな分離を持つペアが観察される可能性は低くなります。

しかし、リファレンスベースの評価から得られる詳細は依然として興味深いものであるため、qc3Cはこのタイプの分析も行うことができます。「bamモード」と呼ぶ解析です。このモードで得られる統計には、リードスルーイベントの数やHiCProスタイルのペアの分類(例:dangling-end、self-circleなど)などの詳細が含まれます。

 

インストール

対応プラットフォーム(Githubより)

依存関係の問題から、qc3Cは現在、Linux x86_64プラットフォームでのみ動作します。しかし、DockerとSingularityの両方でqc3Cを他のプラットフォームで動作させることができるDockerイメージを用意しています。

GIthub

#conda(qc3Cといくつかのサポートパッケージの両方について、独自のcondaパッケージをAnacondaチャンネルのcerebisで管理している)
mamba create -y -n qc3c -c cerebis -c conda-forge -c bioconda qc3C
conda activate qc3c

#latest qc3C docker image
docker pull cerebis/qc3c

#Singularity

qc3C -h

# qc3C -h

usage: qc3C [-h] [-V] {mkdb,bam,kmer} ...

 

qc3C: Hi-C quality control

 

optional arguments:

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

  -V, --version    Version

 

commands:

  Valid commands

 

  {mkdb,bam,kmer}  choose an analysis stage for further options

qc3C mkdb -h

# qc3C mkdb -h

usage: qc3C mkdb [-h] [-d] [-y] [-v] [-t N] [-o PATH] [--ascii-base {33,64}] [--min-quality MIN_QUALITY] [--hash-size HASH_SIZE] [--kmer-size KMER_SIZE] -r FASTQ_FILE -l KMER_LIB

 

Create kmer database.

 

optional arguments:

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

  -d, --debug           Enable debug output

  -y, --yes             Do not ask for confirmation

  -v, --verbose         Verbose output

  -t N, --threads N     Number of threads [1]

  -o PATH, --output-path PATH

                        Write output files to this folder [.]

  --ascii-base {33,64}  Ascii-encoding base for quality scores [guessed]

  --min-quality MIN_QUALITY

                        Minimum quality before a base position is converted to N [3]

  --hash-size HASH_SIZE

                        Initial hash size in generating a library (eg. 10M, 2G) [10M]

  --kmer-size KMER_SIZE

                        K-mer size to use in generating a library [24]

  -r FASTQ_FILE, --reads FASTQ_FILE

                        FastQ format reads to use in generating the k-mer library (use multiple times for multiple files)

  -l KMER_LIB, --lib KMER_LIB

                        Output Jellyfish k-mer library base name

qc3C bam -h

# qc3C bam -h

usage: qc3C bam [-h] [-d] [-y] [-v] [-t N] [-o PATH] [-p {range (0,1]}] [-s SEED] [-M MAX_OBS] [--no-json] [--no-html] (-k {phase,arima} | -e NEB_NAME) [-q MIN_MAPQ] -f FASTA -b BAM

 

Alignment-based analysis.

 

optional arguments:

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

  -d, --debug           Enable debug output

  -y, --yes             Do not ask for confirmation

  -v, --verbose         Verbose output

  -t N, --threads N     Number of threads [1]

  -o PATH, --output-path PATH

                        Write output files to this folder [.]

  -p {range (0,1]}, --sample-rate {range (0,1]}

                        Sample only a proportion of all read-pairs [None]

  -s SEED, --seed SEED  Random seed used in sampling the read-set [None]

  -M MAX_OBS, --max-obs MAX_OBS

                        Stop after collecting this many observations

  --no-json             Do not write a JSON report

  --no-html             Do not write an HTML report

  -k {phase,arima}, --library-kit {phase,arima}

                        Define digest by the commercial library kit used

  -e NEB_NAME, --enzyme NEB_NAME

                        Define digest by explicitly naming up to two case-sensitive NEB enzyme names

  -q MIN_MAPQ, --min-mapq MIN_MAPQ

                        Minimum acceptable mapping quality [60]

  -f FASTA, --fasta FASTA

                        Reference sequences

  -b BAM, --bam BAM     Input name-sorted bam file of Hi-C reads mapped to references

> qc3C kmer -h

# qc3C kmer -h

usage: qc3C kmer [-h] [-d] [-y] [-v] [-t N] [-o PATH] [-p {range (0,1]}] [-s SEED] [-M MAX_OBS] [--no-json] [--no-html] (-k {phase,arima} | -e NEB_NAME) [--ascii-base {33,64}] [--min-quality MIN_QUALITY] [--hash-size HASH_SIZE] [--kmer-size KMER_SIZE]

                 [--write-table] [--num-sample NUM_SAMPLE] [--frac-sample {range (0,1]}] [-x {range (0,1]}] -m MEAN_INSERT [-l KMER_LIB] -r FASTQ_FILE

 

Kmer-based analysis.

 

optional arguments:

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

  -d, --debug           Enable debug output

  -y, --yes             Do not ask for confirmation

  -v, --verbose         Verbose output

  -t N, --threads N     Number of threads [1]

  -o PATH, --output-path PATH

                        Write output files to this folder [.]

  -p {range (0,1]}, --sample-rate {range (0,1]}

                        Sample only a proportion of all read-pairs [None]

  -s SEED, --seed SEED  Random seed used in sampling the read-set [None]

  -M MAX_OBS, --max-obs MAX_OBS

                        Stop after collecting this many observations

  --no-json             Do not write a JSON report

  --no-html             Do not write an HTML report

  -k {phase,arima}, --library-kit {phase,arima}

                        Define digest by the commercial library kit used

  -e NEB_NAME, --enzyme NEB_NAME

                        Define digest by explicitly naming up to two case-sensitive NEB enzyme names

  --ascii-base {33,64}  Ascii-encoding base for quality scores [guessed]

  --min-quality MIN_QUALITY

                        Minimum quality before a base position is converted to N [3]

  --hash-size HASH_SIZE

                        Initial hash size in generating a library (eg. 10M, 2G) [10M]

  --kmer-size KMER_SIZE

                        K-mer size to use in generating a library [24]

  --write-table         Save the collected observations to a file

  --num-sample NUM_SAMPLE

                        Number of samples to use in bootstrapping confidence interval [100]

  --frac-sample {range (0,1]}

                        Fraction of observations to use per-bootstrap iteration [1]

  -x {range (0,1]}, --max-freq-quantile {range (0,1]}

                        Ignore k-mers possessing frequencies above this quantile [0.9]

  -m MEAN_INSERT, --mean-insert MEAN_INSERT

                        Mean fragment length to use in estimating the unobserved junction rate

  -l KMER_LIB, --lib KMER_LIB

                        Jellyfish kmer database

  -r FASTQ_FILE, --reads FASTQ_FILE

                        FastQ format reads that were used to generate the k-mer library (use multiple times for multiple files)

 

 

実行方法

qc3Cは、2つの方法でHi-Cリードセットの品質評価を行うことができる;リードをリファレンス配列にアライメントする方法と、リファレンスフリーのk-merベースのアプローチとなる。

 

リファレンスフリーの方法

1、サブコマンドmkdbでデフォルトの設定でHi-Cショートリードのk-merデータベースを作成する。

qc3C mkdb --reads reads_r1.fq.gz --reads reads_r2.fq.gz --lib kmers.jf

 

2、k-merモード解析の実行。

qc3C kmer --mean-insert 300 --enzyme DpnII --lib kmers.jf --reads reads_r1.fq.gz --reads reads_r2.fq.gz --output-path output

出力例

output/

f:id:kazumaxneo:20211113202247p:plain

出力ファイルは、コマンドラインオプションの--output-path [-o]で指定された場所に書き込まれる。出力はMultiQCでサポートされている(複数のライブラリを検査する時など)。

 

リードをリファレンス配列にアライメントして進める方法もあります(bwa memを使ってbamを作成)。レポジトリを確認して下さい。

引用

qc3C: Reference-free quality control for Hi-C sequencing data

Matthew Z DeMaere, Aaron E Darling

PLoS Comput Biol. 2021 Oct 11;17(10):e1008839