[ゲノム解析] IGVで視覚的にゲノム解析を行おう

# ゲノム比較してえなあ、そんなあなたにIGV
Integrative Genomics Viewer ([IGV](https://igv.org/doc/desktop/)) は視覚的なゲノムビューアです。ゲノムビューアってなんぞやって話ですが、ゲノムを比較して遺伝子変異を視覚的に解析できるツールです。IGVを使いこなせれば、サンプル間の遺伝子変異（挿入・欠失・増幅などなど）を効率的に探すことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/f1440e30-ade1-4716-90dd-1e0b4dd3d940.png)

よくある用途として、一塩基多型（SNP）の探索があげられます。遺伝子を比較したいサンプルAとBがあるとすると、AのFASTAファイルにBのシーケンスデータをマッピングし、そのマッピング結果を以下の写真のように表示させます。遺伝子の位置と（青い帯）SNPの場所を見ながら、変異を探せるわけです。マッピングのやり方は別記事で話すとして、今回はその結果の表示方法を説明したいと思います。
![スクリーンショット 2023-11-30 20.56.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/9276c5ce-cb5d-4127-9d3b-f86281a1cbe0.png)

# 流れ
- レファレンスの登録
- マッピングの表示

# レファレンスの登録
### レファレンスの用意
まずは、レファレンスゲノムを用意しましょう。必要な形式は、FASTAとGenbank（GFF形式）になります。NCBIからダウンロードするか、もしくはローカルでアノテーションしましょう。今回は、[緑膿菌PAO1](https://www.ncbi.nlm.nih.gov/datasets/taxonomy/287/)のゲノムファイルを用います。

### レファレンスFASTAをindex化しよう
レファレンスのFASTAはそのままの形式ではIGVで読めません。まずは、SNP解析に用いたリファレンスのFASTAファイルをindex化します。index化によって、FASTAはIGVに対応した形式に変換され、きちんと読み込まれるようになります。
index化には`samtools`を使います。[`samtools`のインストール方法はこちらです](https://kazumaxneo.hatenablog.com/entry/2019/01/04/220013)。ちなみに筆者はcondaで使ってます。
samtoolsのコマンドは以下のとおりです。。

```
# samtoolsによるindex化
samtools faidx PAO1.fasta
```
index化すると、`reference.fasta.fai`というファイルが生成されます。正しく生成されれば成功です。

### Genbankの編集
Genbankファイルも編集が必要です。やることはgffファイルのFASTA部分を切り取ることです。
gffは遺伝子情報（塩基番号や転写方向、遺伝子名など）が行で記載されている形式ですが、遺伝子情報の下に、FASTAが書かれていることがあります。このFASTAはgffをIGVで読む時には必要ないので、削除しましょう。
![スクリーンショット 2023-11-30 20.50.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/ae2e482b-918f-1623-9a63-dceeed1b5bc9.png)

筆者は`Vim`で開いて、コマンド`/FASTA`を入力してFASTAを検索後、キーボードで`V`→`G`→`dd`で削除しました。

### JSONファイルの作成
ここが少し山場です。ここまで編集したFASTAやGenbankをIGVに読み込ませて表示させるためには、JSON形式のファイルを作成します。[フォーマット](https://github.com/igvteam/igv/wiki/JSON-Genome-Format)に則って作ればOKです。注意点として、contigの名前と数をFASTAとgffで一致させることがあります。一致していない場合、JSONをIGVで読み込んでも遺伝子情報（青い帯）が出てくれません。

以下のテキストは筆者が書いたJSONファイルです。参考になれば幸いです。
```PAO1.json
{
  "id": "PAO1",
  "name": "Pseudomonas aeruginosa PAO1",
  "fastaURL": "/YOUR/DIRECTORY/PAO1.fna",
  "indexURL": "/YOUR/DIRECTORY/PAO1.fna.fai",
  "chromosomeOrder": [
  "NC_002516.2"
  ],
  "tracks": [
    {
      "name": "PAO1 genes",
      "format": "gff",
      "url": "/YOUR/DIRECTORY/PAO1.gff"
    }
  ]
}
```

### JSONファイルをIGVに読み込み
最後に、JSONファイルをLoadします。Loadはメニューバー[Genomes -> Load Genome from File...]をクリックし、jsonファイルを選択します。画面が遷移して、左上のタブにJSONファイルで書いた`name`が出てきて、下部に遺伝子の青い帯が出てくれば成功です。
![スクリーンショット 2023-11-30 21.04.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/94c99a79-4c6d-c60a-35d3-34fbab0ca228.png)

### JSON読ませてもうまくいかない時
筆者の経験ですが、原因は以下の可能性があります。
- gff内に書かれてるFASTAを消してない
- JSONに書いたFASTAやGenbankのパスがおかしい
- JSONに書いた`chromosomeOrder`のコンティグ名や数がFASTA及びgffと一致してない

失敗した時は見てみてください。

# マッピングの表示
リファレンスの登録が済んだら、マッピング結果を表示させます。
マッピング結果なバイナリファイル（`BAMファイル`）をindex化します。
index化は`samtools`で行います。
```
samtools index mapping_result.bam
```
これによって、`mapping_result.bam.bai`ができます。

index化できたら、IGVで読み込みます。メニューバー[File -> Load from File]をクリックし、`mapping_result.bam`を選択します。**`bam.bai`ではないです。**

![スクリーンショット 2023-11-30 21.13.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/04669d4d-f932-a3c3-6e19-bef6d770b0b0.png)

すると、マッピング結果が出てきます。あとはみたい箇所をズームして、変異をみていくだけです。
![スクリーンショット 2023-11-30 20.56.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519906/a1bb1cc1-0c36-b2ee-5b89-bcda9ebc1fc9.png)


# 終わりに
今回はIGVによるSNP解析を紹介しました。今回は、表示させるまでを解説しましたが、IGVにはマッピングを信頼値によってフィルタリングしたり、マッピングされたリードを見やすくしたりといった、解析面及び視覚面で有用な機能があります。今後も紹介していきたいと思います！