Pan-genomeの圧縮解凍ツールAGCを使ってみた

## はじめに

Pan-genomeは、2023年ごろに論文が出た比較的新しいゲノムの地図です。

これまでのリファレンス配列は hg19/GRCh37、hg38/GRCh38、hs1/chm13/T2T など、一本のアセンブリに基づくものでした。Pan-genomeでは、アフリカ人、アメリカ先住民、アジア人などを含む47人の多様な人々の全DNAを1つの巨大な遺伝子地図帳にまとめて、今よりも網羅的で汎用性の高いリファレンスを作ろうとする試みです。

- [ヒトの多様性を説明、新たなゲノム地図「パンゲノム」が発表 - MIT Tech Review](
https://www.technologyreview.jp/s/307200/this-new-genome-map-tries-to-capture-all-human-genetic-variation/)
- [Pan-genome - Wikipedia](https://en.wikipedia.org/wiki/Pan-genome)
- [A draft human pangenome reference - Nature](https://www.nature.com/articles/s41586-023-05896-x) (英語の論文）

しかし、リファレンスゲノムはファイルサイズが大きいです。例えばGRCh38はgzip圧縮した状態で約850Mbあります。しかしヒトゲノムはほとんど同じなので、複数のFASTAファイルを集めて一つのファイルに圧縮した方がようでしょう。これがAGC形式です。

FASTAをAGC形式に圧縮したり展開するツールが [Assembled Genomes Compressor (AGC)](https://github.com/refresh-bio/agc) です。

## Assembled Genomes Compressor (AGC)

AGCのリポジトリはこちらです。

https://github.com/refresh-bio/agc

[論文](https://www.biorxiv.org/content/10.1101/2022.04.07.487441v1.full)もあるようです。

### インストール

```
conda install -c bioconda agc
```

筆者は、M1/M2 Macでこれを動かしてみようと試みましたが[うまくいきません](https://github.com/refresh-bio/agc/issues/7)でした。Dockerを使って、`--platform linux/amd64` を指定してもうまく動作しませんでした。M1/M2 Macで動かす方法がわかる方がいたら教えてください。（2023-06-08時点）
Linuxでも、ソースからコンパイルするときにPythonのヘッダーファイルが必要になり、`libpython3-dev` と `python-dev` をインストールする必要がありました。

## 使ってみる

### Pan-genomeのダウンロード

Pan-genomeのデータは [HPP_Year1_Assemblies - GitHub](https://github.com/human-pangenomics/) にまとまっています。例えば、Pan-genomeのデータを一人ひとりのアセンブリとして手に入れたい場合は、[S3アドレス](https://github.com/human-pangenomics/HPP_Year1_Assemblies/blob/main/assembly_index/Year1_assemblies_v2_genbank.index)から入手できます。（ダウンロード料金は無料だそうです）

今回はagcを使う記事なので、Zenodoからagc形式のファイルをダウンロードします。

- [AGC archives of human and SARS-CoV-2 genomes - Zenodo](https://zenodo.org/record/5826274/)

上のリンク先の、`HPRC-yr1.agc` をダウンロードします。ファイルは1.4Gbであり、47人のアセンブリを集約したものであることを考えると、かなり効率的に圧縮されているという感じがします。


#### ゲノム名のリストを表示する

```
$ agc listset HPRC-yr1.agc
```

```
CHM13Y
HG002.1
HG002.2
HG00438.1
HG00438.2
HG005.1
HG005.2
HG00621.1
HG00621.2

--- 中略 ---

NA20129.2
NA21309.1
NA21309.2
```

#### 特定のアセンブリを展開する

```
$ agc getset HPRC-yr1.agc CHM13Y > chm13.fa
```

```
grep ">" chm13.fa

>chr1
>chr2

--- 中略 ---

>chrX
>chrY
>chrM
```

#### Contigのリストを表示する

```
agc listctg HPRC-yr1.agc CHM13Y
```


#### Contigを抽出する

```
$ agc getctg chrM > chrM.fa
```

または

```
$ agc getctg HPRC-yr1.agc chrM@CHM13Y
```

複数のcontigを指定することもできる。

```
$ agc getctg HPRC-yr1.agc chrX@CHM13Y chrY@CHM13Y
```

#### すべてのゲノムを抽出する

`-o` でディレクトリを指定します。(ディレクトリを指定しない場合は、すべてが標準出力に表示されます）

```
$ mkdir pan-genome # pan-genome ディレクトリを作成
$ agc getcol -o pan-genome HPRC-yr1.agc
```

ちなみに、上記のコマンドはpan-genomeディレクトリ内に100個近い3GBのファイルを作り出します。ご注意ください。

#### 圧縮する

圧縮はそれほど使う機会は多くないかもしれませんが、

```
agc create a1.fa a2.fa a3.fa > all.agc
```

などとすればいいようです。しかも、あらたにゲノムを追加することもできるようです。

```
agc append all.agc a4.fa > all.agc
```

#### ファイルの情報を表示する

```
$ agc info HPRC-yr1.agc
```

```
No. samples      : 95
k-mer length     : 31
Min. match length: 20
Batch size       : 50
Command lines:
 : agc create -t32 -o HPRC-yr1.agc CHM13Y.fa HG002.1.gz HG002.2.gz HG00438.1.gz HG00438.2.gz HG005.1.gz HG005.2.gz HG00621.1.gz HG00621.2.gz HG00673.1.gz HG00673.2.gz HG00733.1.gz HG00733.2.gz HG00735.1.gz HG00735.2.gz HG00741.1.gz HG00741.2.gz HG01071.1.gz HG01071.2.gz HG01106.1.gz HG01106.2.gz HG01109.1.gz HG01109.2.gz HG01123.1.gz HG01123.2.gz HG01175.1.gz HG01175.2.gz HG01243.1.gz HG01243.2.gz HG01258.1.gz HG01258.2.gz HG01358.1.gz HG01358.2.gz HG01361.1.gz HG01361.2.gz HG01891.1.gz HG01891.2.gz HG01928.1.gz HG01928.2.gz HG01952.1.gz HG01952.2.gz HG01978.1.gz HG01978.2.gz HG02055.1.gz HG02055.2.gz HG02080.1.gz HG02080.2.gz HG02109.1.gz HG02109.2.gz HG02145.1.gz HG02145.2.gz HG02148.1.gz HG02148.2.gz HG02257.1.gz HG02257.2.gz HG02486.1.gz HG02486.2.gz HG02559.1.gz HG02559.2.gz HG02572.1.gz HG02572.2.gz HG02622.1.gz HG02622.2.gz HG02630.1.gz HG02630.2.gz HG02717.1.gz HG02717.2.gz HG02723.1.gz HG02723.2.gz HG02818.1.gz HG02818.2.gz HG02886.1.gz HG02886.2.gz HG03098.1.gz HG03098.2.gz HG03453.1.gz HG03453.2.gz HG03486.1.gz HG03486.2.gz HG03492.1.gz HG03492.2.gz HG03516.1.gz HG03516.2.gz HG03540.1.gz HG03540.2.gz HG03579.1.gz HG03579.2.gz NA18906.1.gz NA18906.2.gz NA19240.1.gz NA19240.2.gz NA20129.1.gz NA20129.2.gz NA21309.1.gz NA21309.2.gz
```

以上、agc のコマンドを実行して、Pan-genomeのデータを個別のアセンブリに解凍する方法を見ました。

この記事は以上です。