macでインフォマティクス

macでインフォマティクス

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

集団特異的なリファレンスゲノムを作成するための高速なゲノム研磨ツール JASPER

 

 ロングリードシーケンス技術の進歩により、ゲノムアセンブリの連続性と完全性が劇的に改善された。最新のナノポアシーケンサーを用いれば、フローセル1個からヒトゲノムのアセンブリに必要なデータを生成することができる。これらのシーケンスから得られるロングリードデータを用いて、ゲノムの半分以上がメガベーススケールのコンティグに含まれるde novoゲノムアセンブリを日常的に作成することができるようになった。しかし、ナノポアデータのみで作成されたアセンブリは、比較的エラー率が高く、より正確なリードを使用してコンセンサス配列のエラーを修正する、ポリッシングと呼ばれるプロセスが有効である。この原稿では、JASPER (Jellyfish-based Assembly Sequence Polisher for Error Reduction) と呼ばれる、ゲノムポリッシングのための新しいツールを紹介する。他のポリッシング手法とは対照的に、JASPERはリードのアセンブリへのアライメントを回避することで効率を高めている。その代わり、JASPERはリードから作成したk-mer数のデータベースを用いて、コンセンサスのエラーを検出・修正する。ゲノムのポリッシングに使用するだけでなく、JASPERは、既存のリファレンスゲノムと対象集団の複数の個体からのシーケンスリードを使用して集団特異的ゲノムを作成することもできる。このモードでは、JASPERはリファレンスゲノムを変更し、ターゲット集団に共通するバリアントを含むようにする。著者らの実験では、日本人特有のリファレンスゲノムを作成した後、東京の個人からの全ゲノムシーケンスリードを使用して、ホモ接合バリアントコールが27%減少することを確認した。

要約すると、JASPERはゲノムを磨くための非常に高速なツールであり、最も高速なアライメントベースのポリッシャーよりも約6倍高速である。ポリッシングツールとしての有用性に加え、JASPERは新しい個人ゲノムを効率的に作成するために使用することもできる。

 

インストール

ubuntu18でcondaを使って環境を作ってテストした。
Github

tar -xzf jasper-1.0.0.tar.gz
cd jasper-1.0.0
./configure --prefix=$PWD
make install

Python バインディングが必要(jellyfishRubyPythonPerlへのバインディングが提供されているので、それを利用している)。

jellyfishリリースからダウンロードする。

wget https://github.com/gmarcais/Jellyfish/releases/download/v2.3.0/jellyfish-2.3.0.tar.gz
tar -xzf jellyfish-2.3.0.tar.gz
cd jellyfish-2.3.0/
autoreconf -i
./configure --enable-python-binding --prefix=$HOME
make -j12
sudo make install

#環境変数PYTHONPATHを設定(自分はpython3.9)
export PYTHONPATH=/home/kazu/lib/python3.9/site-packages/

#Jellyfishがすでにインストールされている場合(pkg-config --exists jellyfish-2.0 && echo OK prints OK でOKが出るなら)、以下のようにしてバインディングをインストールする。$PREFIXは任意のインストール先
cd jellyfish-2.3.0/swig/python/
python setup.py build
python setup.py install --prefix=$PREFIX --user
#run(自分はpython3.9)
python3 $HOME/lib/python3.9/site-packages/jellyfish.py

cd jasper-1.0.0/

> $PWD/bin/jasper.sh -h

 

Usage: jasper.sh [options]

Options:

Options (default value in (), *required):

-b, --batch=uint64               Desired batch size for the query (default value based on number of threads and assembly size). For the efficiency of jellyfish database loading, the max number of batches is limited to 8.

-t, --threads=uint32             Number of threads (1)

-a --assembly                    *Path to the assembly file

-j --jf                          Path to the jellyfish database file. Required if --reads is not provided

-r --reads                       Path to the file(s) containing the reads to construct a jellyfish database. If two or more files are provided, please enclose the list with single-quotes, e.g. -r '/path_to/file1.fa /path_to/file2.fa'. Required if --jf is not provided

-k, --kmer=uint64                k-mer size (25)

-p, --num_passes=utint16         The number of iterations of running jasper for fixing (2). A number smaller than 6 is usually more than sufficient

-h, --help                       This message

-v, --verbose                    Output information (False)

-d. --debug                      Debug mode. If supplied, all the _iter*batch*csv and _iter*batch*fa.temp files will be kept to help debugging

 

 

実行方法

JASPERを実行するには--readsでショートリードを指定する。16スレッド、4パスで assembly.fasta を研磨する。

jasper.sh --reads '/path/read1.fastq /path/read2.fastq' -a assembly.fasta -k 25 -t 16 -p 4 1>jasper.out 2>&1

jasper.out には研磨前後の誤ったk-merの割合に基づいて、アセンブリの全体的な品質値(QV)を報告する。配列ごとに分断して研磨出力後(temporrary)、研磨後のアセンブリは最終的に assembly.fasta.fixed.fasta として出力される。

出力例

mer_counts.jfがすでに存在する場合、k-merカウントはスキップされる。動作は非常に高速で、スモールゲノムでは数秒で終了する。

 

コメント

論文中では研磨後の配列品質を評価していますが、その文脈の中で、”k-merベースの品質評価ツールは、リピート領域における偽の補正を行い、リピートコピーをゲノムの別の場所からの同じリピートのコピーに不正に見せ、リピートコピー間の小さな違いを消し去ってしまう。このような偽の補正は、アセンブリ内の不正確なk-merの数を減らし、結果として誤ったが高いアセンブリ品質スコアをもたらす可能性がある。そのため、MUMmerパッケージのdnadiffツールを用いて、研磨したアセンブリをAthal-Berlin referenceにアラインメントし、アラインメントを解析した。”、とあります。確かにその通りで、自分も気を付けたいと思います。

引用

JASPER: a fast genome polishing tool that improves accuracy and creates population-specific reference genomes
Alina Guo,  Steven L. Salzberg,  Aleksey V. Zimin

bioRxiv, Posted June 16, 2022.

 

参考

https://github.com/gmarcais/Jellyfish/issues/134

 

関連