macでインフォマティクス

macでインフォマティクス

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

遺伝子クラスターを比較してインタラクティブな図で視覚化する clinker(clustermap.js含む)

2020 11/8 誤字修正、11/10 preprint引用追加、12/15 追記

2021 1/19 論文引用、11/8 ヘルプ更新

2022/11/24 コメント追記

2023/03/31 追記

 

 生物学的パスウェイに関与する遺伝子は、多くの場合、遺伝子クラスターに集まっており、それらを比較することで、その機能や進化の歴史についての貴重な洞察を得ることができる。しかし、遺伝子クラスターの相同性の比較と可視化は、特に多くのクラスターを比較する場合には面倒な作業である。ここでは、Pythonベースのツールであるclinkerと、それに付随するJavaScriptビジュアライゼーションライブラリであるclustermap.jsを紹介する。これらのツールを併用することで、配列ファイルから直接、正確でインタラクティブな出版品質の遺伝子クラスタ比較図を自動的に生成することができる。clinkerとclustermap.jsのソースコードとドキュメントはGitHub (github.com/gamcil/clinkerとgithub.com/gamcil/clustermap.js)でMITライセンスのもとに公開されている。

 

タイトルの通りのツール。簡単に導入でき、ハイクオリティなシンテニー解析図を出力できる。

2021 1/19

2020 12/15

2020 11/27

 11/5

 

 

インストール

condaでpython3.8の環境を作って導入、テストした(conda create -n clinker python=3.8 && conda activate clinker)。

Github

pip install clinker

 

> clinker -h

# clinker -h

usage: clinker [-h] [--version] [-r RANGES [RANGES ...]] [-gf GENE_FUNCTIONS] [-na] [-i IDENTITY] [-j JOBS] [-s SESSION] [-ji JSON_INDENT] [-f] [-o OUTPUT] [-p [PLOT]] [-dl DELIMITER] [-dc DECIMALS] [-hl]

               [-ha] [-mo MATRIX_OUT] [-ufo]

               [files ...]

 

clinker: Automatic creation of publication-ready gene cluster comparison figures.

 

clinker generates gene cluster comparison figures from GenBank files. It performs pairwise local or global alignments between every sequence in every unique pair of clusters and generates interactive, to-scale comparison figures using the clustermap.js library.

 

optional arguments:

  -h, --help            show this help message and exit

  --version             show program's version number and exit

 

Input options:

  files                 Gene cluster GenBank files

  -r RANGES [RANGES ...], --ranges RANGES [RANGES ...]

                        Scaffold extraction ranges. If a range is specified, only features within the range will be extracted from the scaffold. Ranges should be formatted like: scaffold:start-end (e.g.

                        scaffold_1:15000-40000)

  -gf GENE_FUNCTIONS, --gene_functions GENE_FUNCTIONS

                        2-column CSV file containing gene functions, used to build gene groups from same function instead of sequence similarity (e.g. GENE_001,PKS-NRPS).

 

Alignment options:

  -na, --no_align       Do not align clusters

  -i IDENTITY, --identity IDENTITY

                        Minimum alignment sequence identity [default: 0.3]

  -j JOBS, --jobs JOBS  Number of alignments to run in parallel (0 to use the number of CPUs) [default: 0]

 

Output options:

  -s SESSION, --session SESSION

                        Path to clinker session

  -ji JSON_INDENT, --json_indent JSON_INDENT

                        Number of spaces to indent JSON [default: none]

  -f, --force           Overwrite previous output file

  -o OUTPUT, --output OUTPUT

                        Save alignments to file

  -p [PLOT], --plot [PLOT]

                        Plot cluster alignments using clustermap.js. If a path is given, clinker will generate a portable HTML file at that path. Otherwise, the plot will be served dynamically using Python's

                        HTTP server.

  -dl DELIMITER, --delimiter DELIMITER

                        Character to delimit output by [default: human readable]

  -dc DECIMALS, --decimals DECIMALS

                        Number of decimal places in output [default: 2]

  -hl, --hide_link_headers

                        Hide alignment column headers

  -ha, --hide_aln_headers

                        Hide alignment cluster name headers

  -mo MATRIX_OUT, --matrix_out MATRIX_OUT

                        Save cluster similarity matrix to file

 

Visualisation options:

  -ufo, --use_file_order

                        Display clusters in order of input files

 

Example usage

-------------

Align clusters, plot results and print scores to screen:

  $ clinker files/*.gbk

 

Only save gene-gene links when identity is over 50%:

  $ clinker files/*.gbk -i 0.5

 

Save an alignment session for later:

  $ clinker files/*.gbk -s session.json

 

Save alignments to file, in comma-delimited format, with 4 decimal places:

  $ clinker files/*.gbk -o alignments.csv -dl "," -dc 4

 

Generate visualisation:

  $ clinker files/*.gbk -p

 

Save visualisation as a static HTML document:

  $ clinker files/*.gbk -p plot.html

 

Cameron Gilchrist, 2020

 

 

テストラン

5つの小さなgenbankファイルを比較する。

f:id:kazumaxneo:20201108002408p:plain

git clone https://github.com/gamcil/clinker.git
cd clinker/examples/
#defaultブラウザに出力(.gbkや.gbffを入力)
clinker *gbk -p

#またはファイルに保存
clinker *gbk -p out.html

#GFFファイル
clinker *gff -p out.html
  •  -p    Plot cluster alignments using clustermap.js. If a path is given, clinker will generate a portable HTML file at that path. Otherwise, the plot will be served
    dynamically using Python's HTTP server.

f:id:kazumaxneo:20201108002138p:plain

配列比較はコード領域のタンパク質間で行われる。遺伝子間領域は対象ではない。

 

操作方法は右端に表示される。

f:id:kazumaxneo:20201108002253p:plain



画面をドラッグして図をスクロールできる。また、マウスホイール/trackpadで拡大縮小できる。

f:id:kazumaxneo:20201108002833p:plain

 

all versus allで比較するため、ドラッグする事でゲノムの上下位置を自由に入れ替えできる(defaut表示はクラスタリング済み)。

f:id:kazumaxneo:20201108003037p:plain

 

ORFをクリックする事でそのORFの位置が整列される(アラインされる)。

f:id:kazumaxneo:20201108003251p:plain

黄色の長いORFをクリックしてこのORFが整列されるようにした。

 

ORF名をクリックするとリネームできる。

f:id:kazumaxneo:20201108003448p:plain

 

表示パラメータは右下のウィンドウで変更可能。

Show gene labels: ON

vertical spacing: 100

Align labels: OFF

Label rotation (degrees): 45

f:id:kazumaxneo:20201108003840p:plain

 

他にも同名のツールがあるので注意して下さい。

 

2022/11/24追記

調べたい領域をゲノムごとに正確に取ってくるのは意外に骨が折れます。

色々試行錯誤しましが、以下のような流れが効率的でした。

1、クエリの配列で他のゲノムに対してBLASTnサーチし、相同な領域を絞る。

2、その領域をsamtools faidx なので取り出す。この時、余分に10~20kbほど両外まで取り出す。

3、取り出した全ての領域について、prokkaなどで一律にアノテーションをつける。

4、GFFをつかいclinkerで視覚化。どの領域まで視覚化するか考える。

5、端のORFを決めたら、そのORF情報をマウスホバーして取得する。該当するGFFファイルを開いてそのORFより手前のORFを消す。この作業を両端に対して行う(GFFファイルは、両末端数中kbくらいの領域ではORFが1つも存在しないファイルとなる)。

6、編集したORFを再びclinkerで比較する。この時点で端のORFが揃っている状態になっているはず。

7、比較したい遺伝子で揃えてSVGかPDFで書き出す。

8、illustatorなどで端のORFがない領域をトリムするか、ORFの領域だけマスキングで残す。

追記

この方法には問題があることに気づきました。指定したゲノムが小さいと、アノテーションツールの学習が不十分になって小さなORFの予測に失敗する可能性があるからです。小さなゲノム領域だけでアノテーションを行うと、結果として全ゲノムでのアノテーションと結果が微妙に変わってしまう可能性があります。以下のように修正しました。

1、クエリの配列で他のゲノムに対してBLASTnサーチし、比較したい領域を確認する。

2、gbkファイルを開いて、目的の領域を十分に含むようにして不要な遺伝子レコードを消す。ただしgbkファイル下の配列レコードは消さない。ポジションも修正しない。比較したい全てのgbkファイルについてこれを行う。

3、clinkerで視覚化。関心のある領域が含まれていることを確認する。

4、手動でトリミングする。ORFがないゲノム領域は下の画像中央のように横向きの線状になっている。clinkerでは、遺伝子部分にカーソルを合わせると帯がついて移動できるようになるが、この時に選択状態の領域の一番端の黒い縦の線部分が確認できる。この線を左右に移動させると不要なORFをマスクできる。この機能はORF1つごとにトリミングするので、gbkで不要なORFを削っておけば、ゲノムのORFがない領域(横線の非常に長い領域)は一度にマスクできる。

5、整形し、SVGで書き出す。

 

4のマスク前

中央のORFがない領域をマスクした後(横線がなくなっている)。上の作業では、この横線がずっと長いわけですが、摘まんで横に少しだけ動かすと、長い横線部分はORFが1つもないので一度にトリミングできます。

この方法ならアノテーションは全ゲノムで行なっているので結果に差異はないはずです。ソフトトリミングするなら全部の領域で進めても同じですが、全領域を使うと計算に時間がかかり(数が10くらいあるとメモリも100GB以上使う。)、目的の領域の視認性も悪くなります。上の方が効率的に進められれるんじゃないかと思います。

 

もう1つtipsです。ORFにラベルを付けるオプションが用意されています。初期はIDがラベルに付きます。ORFをクリックしてメニューを表示し、変更したいアノテーションをクリックすればラベルを変更できます。以下はORF1つを選んで遺伝子IDをprodigalのアノテーションに変更した画像です。

 

引用

2020 11/10追加

clinker & clustermap.js: Automatic generation of gene cluster comparison figures

Cameron Laurence Mathison Gilchrist, Yit-Heng Heng Chooi

bioRxiv, posted November 09, 2020

 

Clinker & clustermap.js: Automatic generation of gene cluster comparison figures
Cameron L M Gilchrist, Yit-Heng Chooi
Bioinformatics, Published: 18 January 2021

 

関連


 

このツールはPhilipp Bayerさんのツイートで知りました。Thank you so much !