fantom_zona’s diary

Impact the world!!!

RNA描画ツールRNAcloudを作ってみた話

この記事はkyoto.bioinfoアドベントカレンダーの企画でお送りしております.
adventar.org

TL;DR

低分子集団をいい感じにプロットするmolcloudを改変して,RNAcloudという描画ツール作ってみた.
RNAcloudで君だけのRNAを描画しよう!!(molcloudのオプションとして使用できる)
github.com

動機・目的

発表スライドや資料に研究対象のいい感じの図を貼りたいことが往々にしてある.私の場合,RNAをやっているので,RNAの集合を描きたいのだが,手でちまちまやるのは結構めんどくさい,もういっそのこと自動的に作るツールを作りたいなと思っていた.単一RNAの可視化ツールは色々あるが,集合にするのは結構めんどくさそう...と思っていた時,Andrew White先生がmolcloudという描画ツールを作ったというツイートが流れてきた.


「おお,こんなのが欲しいな,というかもうこれじゃん!」と思い,molcloudを改変してRNAcloudを作ることにした.

インストール・使い方・出来上がり図

mocloudのオプションとしてインストールしてください.

pip install molcloud[all]
rnacloud fasta_file

fastaファイルは以下の形式で入力してください.

>sequence_id
AGUGUGUCGAUGCUAGUCGAUGC
...((((((((....))))))))

出来上がり図はこんな感じです.構造を取っているRNAが多いともっと見栄えがいいはず.

やったことの説明

そもそもmolcloudが何をしているのかと言う話に入らないといけない.中身を覗いてみると,どうやらnetworkxというpythonのライブラリを使って低分子をグラフに変換して描画をしている.networkxでの操作を手短に説明すると,グラフの集合から和を取って一つのグラフオブジェクトにして,ノードの初期位置ランダムでプロット,その後にノード間に斥力を入れて位置を調整するらしい.

なので,RNAをnetworkxのオブジェクトにするパートを書けば終わり.そういえば,PythonRNAの可視化ライブラリというと,Vienna大学TBIが出してるforgiが思いつく.こちらではどうなっているのだろうと思い見てみると,なんとnetworkxのオブジェクトを作成する関数が実装されているではないか!*1 これで殆ど話は終わりで,塩基対と共有結合を区別するようにしただけ.

感想・その他

正直,molcloudの発想が優れていて,それに相乗りしただけ.
RNAcloudに変更するにあたって殆ど書いてないが,それなりに満足のいくものができて嬉しい.
今回,この記事を書くにあたって色々とRNAcloudの細かいアップデートを行いたいなと思ったのだが,余裕がなくてできなかった.気になる点は色々とあるので,追々アップデートしていきたい.*2
大きな変更点で言うと,RNAの図をもっと良くしたい.R2Rという描画ソフトっぽくしたいのだが,molcloudの枠組みに乗って実現することはなかなか難しそう.
単純な発展版として糖鎖版のglycocloudも簡単にできそう.糖鎖はtokenの種類と対応する図のルール (Symbol Nomenclature for Glycans, SNFG) が決まっているのでこちらの方が一直線だと思う.
その他,改善点や何かこうした方が良い等と思われる点があったらご指摘して頂きたい.機会があったら是非使って欲しい.

*1:この関数はforgi内部ではあまり使われていないので,本当に偶然か何かっぽい

*2:例えばmolcloudは画像のmaskingができるのだが,RNAcloudではできない.あとはSHAPE reactivityみたいな外部スコアを色で表現したい.