ロングリードシーケンス技術は、de novo ゲノムアセンブリの大きな進歩を可能にする。しかし、生のリードはエラー率が高く、エラー分布も広いため、結果的にアセンブリに多くのエラーが発生してしまう。ポリッシングは、ドラフトアセンブリのエラーを修正し、ゲノム解析の信頼性を向上させるための手順である。しかし、既存の方法では、アセンブリのすべての領域を平等に扱っているのに対し、各領域の誤差分布には根本的な違いがある。このような状況下で、いかにして高精度なゲノムアセンブリを実現するかは、依然として困難な課題である。本著者らは、アセンブリの異なる領域における不均等なエラーに触発され、BlockPolishと名付けられた新しい研磨ワークフローを提案する。この方法では、コンティグを、アラインメントされた塩基の統計に基づいて、複雑さの低いブロックと複雑さの高いブロックに分ける。複雑なブロックに含まれる生のリードを再調整し、アライメント結果を最適化するために、Multiple Sequence Alignmentを適用する。些細なブロックと複雑なブロックではエラー率の分布が異なるため、2つのマルチタスク双方向長短期記憶(LSTM)ネットワークを提案し、コンセンサス配列を予測する。Wtdbg2とFlyeがNanoporeデータを用いてアセンブルしたNA12878の全ゲノムアセンブリにおいて、BlockPolishはRacon、Medaka、MarginPolish & HELENを含む他の最先端技術よりも高い研磨精度を示す。すべてのアセンブリーにおいて、エラーは主にindelsであり、BlockPolishはその修正に優れた性能を発揮する。Nanoporeアセンブリに加えて、BlockPolishはPacBioアセンブリのエラーも低減できることをさらに実証している。BlockPolishのソースコードは、Github(https://github.com/huangnengCSU/BlockPolish)で自由に入手できる。
インストール
依存
- minimap2
- samtools
- Racon
- BPFGM
BPFGM
#依存関係、仮想環境を作っていれる
mamba create -n BlockPolish python=3.8 -y
conda activate BlockPolish
pip install pyyaml editdistance python-Levenshtein biopython tensorboardX tqdm six
mamba install -c pytorch pytorch==1.4.0 #GPU version
mamba install -c conda-forge pytorch-cpu #CPU only version
#依存ツール
mamba install -c bioconda -y racon
mamba install -c bioconda -y minimap2
mamba install -c bioconda -y samtools
#BPFGM(link)
git clone https://github.com/huangnengCSU/BPFGM.git
cd BPFGM
mkdir build
cd build
cmake ..
make
export PATH=$PATH:$(pwd)
#本体
git clone https://github.com/huangnengCSU/BlockPolish.git
cd BlockPolish
> python brnnctc_generate.py -h
$ python brnnctc_generate.py -h
usage: brnnctc_generate.py [-h] [-config CONFIG] -model MODEL -data DATA -output OUTPUT [--no_cuda]
optional arguments:
-h, --help show this help message and exit
-config CONFIG
-model MODEL
-data DATA
-output OUTPUT
--no_cuda If running on cpu device, set the argument.
$ block -h
usage: block -b <BAM_FILE> -s <TRIVIAL_BLOCK_FEATURES> -c <COMPLEX_BLOCK_FEATURES>
Generate the features for BlockPolish polishing using reads-to-assembly alignments in BAM_FILE.
Required arguments:
BAM_FILE is the alignment of reads to the assembly.
TRIVIAL_BLOCK_FEATURES is the output file of the features of the trivial blocks.
COMPLEX_BLOCK_FEATURES is the output file of the features of the trivial blocks.
実行方法
1、raconによるpolishing(1回)。
minimap2 -x map-ont assembly.fa reads.fq -t 40 > reads2asm.paf
racon reads.fq reads2asm.paf assembly.fa -t 40 > racon_cons0.fasta
2、生のリードをRacon polished assemblyにアラインする。
minimap2 -ax map-ont racon_cons0.fasta reads.fq -t 40 |samtools sort -@ 10 > reads2racon.sorted.bam
samtools index -@ 10 reads2racon.sorted.bam
3、ドラフトアセンブリを、リードとアセンブリのアラインメントに応じて、品質の異なるトリビアルブロックとコンプレックスブロックに分割する。次に、各ブロックの特徴行列を抽出し、各位置における異なる塩基の割合、挿入、削除を含む。この処理はBPFGMを使う。
block -b reads2racon.sorted.bam -s trivial_features.txt -c complex_features.txt
complex_features.txtとtrivial_features.txtが出力される。
4、trivialなブロックを研磨する(モデルファイル)。
#ONT
python brnnctc_generate.py -config trivial_block_config.yaml -model trivial_block_model.chkpt -data trivial_features.txt -output trivial_polished.txt
5、complexなブロックを研磨する(4と同時にランしてもO.K)。
#ONT
python brnnctc_generate.py -config test_complex_config.yaml -model complex_model.chkpt -data complex_features.txt -output complex_polished.txt
6、trivialなブロックとcomplexなブロックの研磨結果をマージする。
python needle.py --t trivial_polished.txt --c complex_polished.txt -output polished_assembly.fa
CPU版のpytouchだと5−6のステップで上手くランできなかった。
引用
BlockPolish: accurate polishing of long-read assembly via block divide-and-conquer
Neng Huang, Fan Nie, Peng Ni, Xin Gao, Feng Luo, Jianxin Wang
Brief Bioinform. 2021 Oct 8;bbab405