[Biopython]直鎖状ゲノムを描画する

:::note info
2025-05-23 追記:
[gbdraw](https://github.com/satoshikawato/gbdraw)をリリースしました！
![gbdraw.png](https://raw.githubusercontent.com/satoshikawato/gbdraw/refs/heads/main/examples/gbdraw_social_preview.png)
:::
2024-02-06追記: 直鎖状・環状ゲノムを可視化するスクリプトを[パッケージ化](https://github.com/satoshikawato/gbdraw)しています。お楽しみに
# 動機
ゲノムダイアグラム描画ソフトには[gggenomes](https://github.com/thackl/gggenomes)、[Clinker](https://github.com/gamcil/clinker)や[Artemis comparison tool (ACT)](https://www.sanger.ac.uk/tool/artemis-comparison-tool-act/)などがあるものの、PythonベースでSVG出力可能なものが欲しかった

## plot_linear_genome.py
Generate plot in SVG
### Requirements
- [Biopython](https://biopython.org/)
- [pandas](https://pandas.pydata.org/)
- [SVGwrite](https://svgwrite.readthedocs.io/en/latest/)
### Usage
```
$ ./plot_linear_genome.py
usage: plot_linear_genome.py [-h] -i [INPUT ...] [-b [BLAST ...]] [-t TABLE] [-o OUTPUT] [-n NT] [-w WINDOW] [-s STEP]
                             [--separate_strands] [--show_gc] [--align_center] [--evalue EVALUE] [--bitscore BITSCORE]
                             [--identity IDENTITY]

Generate plot in SVG

optional arguments:
  -h, --help            show this help message and exit
  -i [INPUT ...], --input [INPUT ...]
                        genbank (required)
  -b [BLAST ...], --blast [BLAST ...]
                        input BLAST result file in tab-separated format (-outfmt 6 or 7) (optional)
  -t TABLE, --table TABLE
                        color table (optional)
  -o OUTPUT, --output OUTPUT
                        output prefix (default: diagram)
  -n NT, --nt NT        dinucleotide (default: GC).
  -w WINDOW, --window WINDOW
                        window size (default: 1000)
  -s STEP, --step STEP  step size (default: 100)
  --separate_strands    separate forward and reverse strands (default: False). Features of undefined strands are shown
                        on the forward strand.
  --show_gc             plot GC content below genome (default: False).
  --align_center        Align genomes to the center (default: False).
  --evalue EVALUE       evalue threshold (default=1e-2)
  --bitscore BITSCORE   bitscore threshold (default=50)
  --identity IDENTITY   identity threshold (default=0)
```
GenBank形式ファイル(.gb or .gbk)とBLASTN/TBLASTX出力ファイル（任意; -outfmt 6 or 7）を入力する。
BLAST出力ファイルは、GenBank形式ファイルと同じ配列かつIDのFASTAファイルをもとに作成する。


例として[リンホシスチス病ウイルス](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%83%9B%E3%82%B7%E3%82%B9%E3%83%81%E3%82%B9%E7%97%85)のゲノムダイアグラムを描く。

- [Lymphocystis disease virus 1, complete genome (NC_001824.1)](https://www.ncbi.nlm.nih.gov/nuccore/NC_001824.1)
- [Lymphocystis disease virus Sa isolate SA9, complete genome (NC_033423.1)](https://www.ncbi.nlm.nih.gov/nuccore/NC_033423.1)
- [Lymphocystis disease virus 2 LCDV-JP_Oita_2018 DNA, complete genome (LC534415.1)](https://www.ncbi.nlm.nih.gov/nuccore/LC534415.1)

FASTA形式のゲノム配列ファイルについてTBLASTX (or BLASTN; -outfmt 7)で相同性検索
```sh
$ tblastx -query NC_001824.fasta -subject NC_033423.fasta -outfmt 7 -out NC_001824_NC_033423.tblastx.out
$ tblastx -query NC_033423.fasta -subject LC534415.fasta -outfmt 7 -out NC_033423_LC534415.tblastx.out
```
ゲノムダイアグラムを描く。ファイルの順番に注意されたい。
```sh
./plot_linear_genome.py -i NC_001824.gb NC_033423.gb LC534415.gb -b NC_001824_NC_033423.tblastx.out NC_033423_LC534415.tblastx.out --separate_strands --align_center --evalue 1e-10 --bitscore 100 # output: out.svg
```
![out](https://user-images.githubusercontent.com/58936715/210162432-bb72385c-3942-4d83-bbd1-1b8ac9fca348.svg)