macでインフォマティクス

macでインフォマティクス

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

ヘテロ接合度の高い非モデル生物のアセンブリグラフをハプロタイプにアンジップする GraphUnzip

 

 ロングリードやHi-Cは、難易度の高いゲノムに対して連続性の高いアセンブリを可能にし、ゲノムアセンブリの分野に革命をもたらした。現在では、あらゆる種類の生物でハプロイドの染色体レベルのアセンブリが一般的に達成されているため、アセンブリフェージングはゲノム再構成の新たなフロンティアとなっている。ロングリードやHi-Cを用いてアセンブリフェージングするツールは既にいくつかリリースされているが、いずれも直線的な配列からスタートするため、ヘテロ接合度の高い非モデル生物には適していない。GraphUnzipは、ロングリードやHi-Cデータを用いてアセンブリグラフを構成するハプロタイプにアンジップする、高速でメモリ効率の良い正確なツールである。GraphUnzipは、オーバーラップに基づいて既にリンクしている可能性のある配列のみをアセンブリグラフ内で接続するため、高品質なギャップレススーパーコンティグを生成することができる。GraphUnzipの効果を実証するために、シミュレーションされた二倍体の大腸菌のゲノムと、ワムシのAdineta vagaとジャガイモのSolanum tuberosumのゲノムの2つの実データセットでテストを行った。いずれの場合も、GraphUnzipは連続性の高いフェーズドアッセンブリを得ることができた。

 

インストール

python3.13の環境を作って導入した。

Github

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.

 

関連