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
clinker & clustermap.js finally published in Oxford Bioinformatics 🎉😀 https://t.co/fR8hAsl3B8
— Cameron Gilchrist (@clmgilchrist) 2021年1月19日
2020 12/15
clinker v0.0.10 released: GFF support, parallel alignments, unscaled mode w/ no intergenic gaps, auto-flip loci when anchoring genes, curved links, links as lines + group colouring https://t.co/dMmbFFQUVT pic.twitter.com/QlVK2y4ALM
— Cameron Gilchrist (@clmgilchrist) 2020年12月14日
2020 11/27
Just released clinker 0.0.7, with ability to easily swap/edit gene labels & save/load alignment sessions. Can install via pip https://t.co/JlWcmKWNWq pic.twitter.com/FfBrrZNIYn
— Cameron Gilchrist (@clmgilchrist) 2020年11月26日
11/5
Oh glad you guys discovered the tool and found it could be useful for your work! It's developed by Cam Gilchrist in our lab @SMS_UWA very talented student in bioinformatics. Writing this up atm 🙂. Also checkout https://t.co/QnnVb54M7P by Cam and @BoothThom pic.twitter.com/eYdOxKRREp
— Heng Chooi (@YitHengChooi) 2020年11月4日
インストール
condaでpython3.8の環境を作って導入、テストした(conda create -n clinker python=3.8 && conda activate clinker)。
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ファイルを比較する。
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.
配列比較はコード領域のタンパク質間で行われる。遺伝子間領域は対象ではない。
操作方法は右端に表示される。
画面をドラッグして図をスクロールできる。また、マウスホイール/trackpadで拡大縮小できる。
all versus allで比較するため、ドラッグする事でゲノムの上下位置を自由に入れ替えできる(defaut表示はクラスタリング済み)。
ORFをクリックする事でそのORFの位置が整列される(アラインされる)。
黄色の長いORFをクリックしてこのORFが整列されるようにした。
ORF名をクリックするとリネームできる。
表示パラメータは右下のウィンドウで変更可能。
Show gene labels: ON
vertical spacing: 100
Align labels: OFF
Label rotation (degrees): 45
他にも同名のツールがあるので注意して下さい。
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 !
This looks very useful - clinker, Gene cluster comparison figure generator.
— Philipp Bayer (@PhilippBayer) 2020年11月4日
Takes a bunch of GeneBank files, aligns them globally, sorts input by similarity, and makes a pretty figure of gene content, order and orientation!https://t.co/aaASBAMKPF pic.twitter.com/oZwBPEeRZj