Nanopolishは解析の流れを説明したチュートリアルを公開している。現在レポジトリで公開されているのは、ドラフトゲノムのpolishのワークフロー、メチル化コールのワークフロー、ナノポア・ネイティブRNAシーケンシングで得られたリードからポリAテイルの長さを推定するのワークフロー等になる。頻繁に使用されるドラフトゲノムのpolishのワークフローを確認してみます。
quickstart_consensus
https://github.com/jts/nanopolish/blob/master/docs/source/quickstart_consensus.rst
インストール
mamba create -n nanopolish_consensus
conda activate nanopolish_consensus
mamba install -c bioconda -y nanopolish minimap2 samtools
1、テストデータをダウンロードして解凍する。
wget http://s3.climb.ac.uk/nanopolish_tutorial/ecoli_2kb_region.tar.gz
tar -xvf ecoli_2kb_region.tar.gz
cd ecoli_2kb_region
圧縮データに含まれているのは、E. coliのONTシークエンシングデータ(fast5とbasecallされたfastq)、canuを使ったドラフトアセンブリ、bamになる。bamはドラフトアセンブリにONTのリードをマッピングして作成されている(以下のステップで実施)。
2、ゲノムをダウンロードする。
curl -o ref.fa https://ftp.ncbi.nih.gov/genomes/archive/old_genbank/Bacteria/Escherichia_coli_K_12_substr__MG1655_uid225/U00096.ffn
3、nanopolishのindexの作成
FAST5とbasecallされた配列の両方を指定する。
nanopolish index -d fast5_files/ reads.fasta
インデックス化されたreads.fasta;reads.fasta.index、reads.fasta.index.fai、reads.fasta.index.gzi、reads.fasta.index.readdbができる。
4、ゲノムアセンブリ
チュートリアルではcanuを使用している。準備されているdraft.faがcanuの出力。indexとゲノムアセンブリのdraft.fastaが得られたら、nanopolishを使ってアセンブリを研磨する。
5、オリジナルのリード(reads.fasta)をドラフトアセンブリにアライメントし、ソートされたbamを作成する。
minimap2 -ax map-ont -t 8 draft.fa reads.fasta | samtools sort -o reads.sorted.bam -T reads.tmp
samtools index reads.sorted.bam
reads.sorted.bamとreads.sorted.bam.baiが得られる。
6、コンセンサスアルゴリズムを実行する。大規模なデータセットの場合、nanopolish_makerange.pyを使用して、ドラフトゲノムアセンブリを50kbのセグメントに分割し、各セグメントに対してコンセンサスアルゴリズムを並行して実行できるようにする。今回のデータセットは2kbの領域しかカバーしていないので、このステップをスキップして以下のコマンドを使用する。
nanopolish variants --consensus -o polished.vcf \
-w "tig00000001:200000-202000" \
-r reads.fasta \
-b reads.sorted.bam \
-g draft.fa
出力はfasta形式のpolishされたセグメントになる。
7、nanopolish vcf2fasta コマンドを使い、polishされたドラフトゲノム配列を出力する。
nanopolish vcf2fasta --skip-checks -g draft.fa polished.vcf > polished_genome.fa
テストデータは2kbの領域しかカバーしていないので、polishされたのはその領域のみになる点に注意。
この後、チュートリアルでは、MUMmerのdnadiffコマンドを使ってplishしたアセンブリ配列とリファレンスゲノム配列を比較し、結果を評価しています。チュートリアルを確認して下さい。
引用
nanopolish/quickstart_consensus.rst at master · jts/nanopolish · GitHub