ロングリードやHi-Cは、難易度の高いゲノムに対して連続性の高いアセンブリを可能にし、ゲノムアセンブリの分野に革命をもたらした。現在では、あらゆる種類の生物でハプロイドの染色体レベルのアセンブリが一般的に達成されているため、アセンブリフェージングはゲノム再構成の新たなフロンティアとなっている。ロングリードやHi-Cを用いてアセンブリをフェージングするツールは既にいくつかリリースされているが、いずれも直線的な配列からスタートするため、ヘテロ接合度の高い非モデル生物には適していない。GraphUnzipは、ロングリードやHi-Cデータを用いてアセンブリグラフを構成するハプロタイプにアンジップする、高速でメモリ効率の良い正確なツールである。GraphUnzipは、オーバーラップに基づいて既にリンクしている可能性のある配列のみをアセンブリグラフ内で接続するため、高品質なギャップレススーパーコンティグを生成することができる。GraphUnzipの効果を実証するために、シミュレーションされた二倍体の大腸菌のゲノムと、ワムシのAdineta vagaとジャガイモのSolanum tuberosumのゲノムの2つの実データセットでテストを行った。いずれの場合も、GraphUnzipは連続性の高いフェーズドアッセンブリを得ることができた。
インストール
python3.13の環境を作って導入した。
mamba create -n GraphUnzip python=3 -y
conda activate GraphUnzip
git clone https://github.com/nadegeguiglielmoni/GraphUnzip.git
cd GraphUnzip
pip install -e .
#PyPi
pip install graphunzip
$ graphunzip --help
usage: graphunzip [-h] [-v] {unzip,HiC-IM,linked-reads-IM}
Unzips an assembly graph using Hi-C data and/or long reads and/or linked reads.
positional arguments:
{unzip,HiC-IM,linked-reads-IM}
Sub-command must be one of: unzip (untangle the GFA file), HiC-IM (to prepare Hi-C data) or linked-reads-IM (to prepare linked reads data)
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
$ graphunzip unzip --help
usage: graphunzip [-h] -g GFA [-i HICINTERACTIONS] [-k LINKEDREADSINTERACTIONS] [-l LONGREADS] [-s GENOMESIZE] [-o OUTPUT] [-f FASTA_OUTPUT] [-b BAM_FILE] [-v] [-r] [--dont_merge] [-H] [-c] [-B] [-n] [-e]
options:
-h, --help show this help message and exit
Input of GraphUnzip:
-g, --gfa GFA GFA file to phase
-i, --HiCinteractions HICINTERACTIONS
File containing the Hi-C interaction matrix from HiC-IM [optional]
-k, --linkedReadsInteractions LINKEDREADSINTERACTIONS
File containing the linked-reads interaction matrix from linked-reads-IM [optional]
-l, --longreads LONGREADS
Long reads mapped to the GFA with GraphAligner (GAF format) or SPAligner (TSV format) [optional]
-s, --genomeSize GENOMESIZE
Full genome size, counting all haplotypes - e.g. 100m or 3g [optional but recommended]
Output of GraphUnzip:
-o, --output OUTPUT Output GFA [default: output.gfa]
-f, --fasta_output FASTA_OUTPUT
Optional fasta output [default: None]
-b, --bam_file BAM_FILE
bam file of the Hi-C reads aligned on assembly. GraphUnzip will output bam_file.new.bam corresponding to the new bam file, ready to be used for scaffolding [optional]
Behavior of GraphUnzip:
-H, --haploid Use this option if you wish to obtain a collapsed assembly of a multiploid genome.
-c, --conservative (Hi-C only) Output very robust contigs. Use this option if the coverage information of the graph is not reliable
-B, --bold (Hi-C only)[default] Proposes the best untangling it can get (can be misled by approximate coverage information). Use this option if the contig coverage information of the graph can be trusted
-n, --noisy (Hi-C only) Use this option if you expect that the assembly may contain artefactual contigs, e.g. when you use the .p_utg.gfa of hifiasm
-e, --exhaustive (long reads only) All links not found in the .gaf will be removed
Other options:
-v, --verbose
-r, --dont_rename Use if you don't want to name the resulting supercontigs with short names but want to keep the names of the original contigs
--dont_merge If you don't want the output to have all possible contigs merged
$ graphunzip HiC-IM --help
usage: graphunzip [-h] -g GFA_GRAPH [-b BAM] [-m MATRIX] [-F FRAGMENTS] -i HIC_IM
options:
-h, --help show this help message and exit
-g, --gfa_graph GFA_GRAPH
GFA file that will be untangled (required)
-b, --bam BAM Bam file of Hi-C reads aligned on assembly and sorted by name (if using bam format)
-m, --matrix MATRIX Sparse Hi-C contact map (if using instaGRAAL format)
-F, --fragments FRAGMENTS
Fragments list (if using instaGRAAL format)
-i, --HiC_IM HIC_IM Output file for the Hi-C interaction matrix (required)
$ graphunzip linked-reads-IM --help
usage: graphunzip [-h] -g GFA_GRAPH -p LINKED_READS_IM -b BARCODED_SAM
options:
-h, --help show this help message and exit
-g, --gfa_graph GFA_GRAPH
GFA file that will be untangled (required)
-p, --linked_reads_IM LINKED_READS_IM
Output file for the linked-read interaction matrix (required)
-b, --barcoded_SAM BARCODED_SAM
SAM file of the barcoded reads aligned to the assembly. Barcodes must still be there (use option -C if aligning with BWA) (required)
実行方法
step1
GFA1.0形式のアセンブリグラフとHi-Cデータ(1)、Barcoded linked reads(3)のいずれかを組み合わせる。以下のいずれかのコマンドで準備する。
step1A - Hi-Cリードを使う。アセンブリにHi-Cリードをマッピングして得たbam、または2) hicstuffが出力するフォーマットを使用したスパースコンタクトマトリックスとフラグメントリストのいずれかを準備する。
awk '/^S/{print ">"$2"\n"$3}' assembly.gfa > assembly.fasta
bwa index assembly.fasta
bwa mem -5SP -t 16 assembly.fasta reads_1.fq reads_2.fq | samtools view - -@ 16 -S -h -b -F 3340 | samtools sort -n > mapped.bam
このmapped.bamをstep2で使う
step1B -バーコード付きリンクリードを使う。アセンブリのコンティグにマッピングしてSAMファイルを準備する。バーコードはSAMの各行の末尾にBX:Z:タグ(例:BX:Z:AACTTGTCGGTCAT-1)で指定する必要がある。BWAを使用してバーコード付きリードからこのファイルを取得する。
awk '/^S/{print ">"$2"\n"$3}' assembly.gfa > assembly.fasta
bwa index assembly.fasta
bwa mem assembly barcoded_reads.fastq -C > reads_aligned_on_assembly.sam
step2 - GraphAlignerを使ってロングリードをアセンブリグラフ”GFA”にマップし、GAFファイルを準備する。GraphAlignerの古いバージョン(コミット5217838b436fee4eda5824aabee99406db2a137b)で--global-alginmentオプションをつけるのがベストと書かれている。
GraphAligner --global-alignment -x vg -f reads.fq -g graph.gfa -a longreads_aligned_on_gfa.gaf
longreads_aligned_on_gfa.gafはstep3で使う
step3 graphunzipのラン。graphunzip HiC-IMかgraphunzip linked-reads-IMを使う。
#Hi-C(step1A)
graphunzip HiC-IM -b mapped.bam -g assembly.gfa --HiC_IM hic_interactionmatrix.txt
#linked reads(step1C)
graphunzip linked-reads-IM --barcoded_SAM reads_aligned_on_assembly.sam -g assembly.gfa --linked_reads_IM linkedreads_interactionmatrix.txt
step4 unzipする。step4のinteractionmatrix.txtとstep2のlongreads_aligned_on_gfa.gafを指定する。
graphunzip unzip -g assembly.gfa -i hic_interactionmatrix.txt -k linkedreads_interactionmatrix.txt -l longreads_aligned_on_gfa.gaf -o assembly_unzipped.gfa
graphunzip unzip(hybrid assembly)
リピート部分でもつれたshort read assemblyグラフをunzipするためにも使える(もつれていない断片化したグラフに使っても効果はない)。
#1 short read assembly
spades.py --s short_reads.fastq -o short_read_assembly -k 21,41,61,81,101,121,127 -t 20
#2 spalignerでグラフにロングリードをマッピング
spaligner SPAdes-3.15.4-Linux/share/spaligner/spaligner_config.yaml -d nanopore -g short_read_assembly/assembly_graph_with_scaffolds.gfa -k 127 -s long_reads.fastq.gz -t 20
=> spaligner_result/alignment.tsvが出力される
#3 unzip
graphunzip unzip -g short_read_assembly/assembly_graph_with_scaffolds.gfa -l spaligner_result/alignment.tsv -o assembly.gfa -f assembly.fasta
=> assembly.gfaとassembly.fastaが出力される
SPAdesのハイブリッドアセンブリ(DBISEQ+ONT)とGraphUnzip unzipを比較した。このデータではハイブリッドアセンブリよりもGraphUnzip unzipで得たコンティグの連続性は劣る。しかしGraphUnzip unzipで得たコンティグはハイブリッドアセンブリでは切断されている部位で改善されている可能性もある。
その他(レポジトリより)
- リンクリード(step1C)は、一部のユーザーからの要望により追加した実験的なオプションで広範なテストは行われていない。Hi-Cやロングリードを使用した場合よりも結果が悪くなることが予想される。
コメント
昔紹介しようとした時は、急ぎすぎていてまだ開発中でヘルプにもバグが見られ、そのまま紹介するのを忘れてしまってました。現在はよく整備され、エラーも出なくなっています。
引用
GraphUnzip: unzipping assembly graphs with long reads and Hi-C.
Roland Faure, Nadège Guiglielmoni, Jean-François Flot.
JOBIM 2021 - Journées Ouvertes en Biologie, Informatique et Mathématiques, Jul 2021, Paris, France. pp.1-7. hal-03441016
GraphUnzip: unzipping assembly graphs with long reads and Hi-C
Roland Faure, Nadège Guiglielmoni, Jean-François Flot
BioRxiv, Posted February 01, 2021.
関連