2019年11月26日(火)

タンパク質のドメイン構造の書き方

投稿者:

ncRNAの研究をやっているとRNAだけではなく当然それらと相互作用するタンパク質の研究も深く関わってくるわけですが、プレゼンや論文でよく出てくるのがタンパク質のドメイン構造。これまでですとPfamで検索して出てきた構造をイメージキャプチャで切り取って貼り付けるというのが常套手段で、ちょっと手を加えるにしてもその図をイラレやパワポに取り込んでトレースしてそれらしく見せるという、手間がかかる割に元の情報を劣化させてるシーシュポスの神話ばりの意味なし作業をすることが多かったのですが、今の時代もうすこしすっきり綺麗にお手軽に書けないものだろうかと「タンパク質 ドメイン構造 検索」で検索したら、日頃よくお世話になっているKazumaxneoさんのmacでインフォマティックスシリーズの「タンパク質ドメインを検索する HMMER」というページがヒットして、読んでると意外となんとかなりそうだったのであれこれあれこれやってみたメモ書きをここに置いておきます。

まずは、ドメイン構造を書きたいタンパク質のアミノ酸配列をとってきて、fasta形式で保存します。ここではパラスペックルの形成を制御する代表的なRNA結合タンパク質、Fus、Nono、Pspc1、Rbm14、Sfpq、Tardbpを集めてみました。このファイル、一応paraspeckles_fasta.txtでこのページの下のやる気のないリンク、探すのに一苦労のリンク先に置いときます。

次に、このファイルをHMMERに投げて、アミノ酸の何番目から何番目がどのドメインか、という情報をとってきます。HMMERのインストールは毎度おなじみターミナルからのhomebrewで簡単にできるようです。

brew install hmmer

次に、Kazmaxneoさんのページにあるように、タンパク質ドメインのデータベースをとってきて、インデックスをつけときます。ここまでの操作はターミナルで行います。今回はncRNA_reviewというフォルダを作業フォルダにしてやっています。

cd /Users/Nakagawa_imac/GoogleDrive/ncRNA_review
wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/releases/Pfam32.0/Pfam-A.hmm.gz
gzip -dv Pfam-A.hmm.gz
hmmpress Pfam-A.hmm

あとは、同じフォルダに入れたparaspeckles_fasta.txtをhmmerに投げるだけ。アウトプットファイルはRで読み込みやすいように--domtbloutのオプションで指定しています。他はCPUをどれだけ使うかとか、なんちゃらで、意外と高速に結果を出してくれます。

hmmscan --domtblout paraspeckles_domain.txt --cpu 4 -E 1e-10 Pfam-A.hmm paraspeckles_fasta.txt

さて。これで、ドメインの情報が入ったファイルparaspeckles_domain.txtが作られました。ここから先はRの作業です。 ファイルの読み込みはdata.tableのfreadで行ってます。これがやはり一番便利ですね。ただ、#で始まるコメント行が付いていてなんかややこしそう。コメント行を除くには、、、そう。困った時は検索検索!「R fread comment」あたりで検索するとstack overflowの何やらそれらしいページがヒットしてきます。いつぞやトロント大のモリスさんにベンチ屋なんですがなんちゃってレベルで良いのでインフォを勉強したかったらどうしたらいいんですか?とおそるおそる聞いたら、「ググれ」と即答だったのですが、この手の業界の人って、本当にネットとの相性が良いと言いますか、親切なページがたくさんあって本当に助かります。こいつを読んでいると、どうやらgrepと正規表現でチャチャっとできるみたいです。コメント行を除くとヘッダーがなくなってしまうのでヘッダーなしオプションを指定して、あとはなんかRに怒られたのでfill = TRUEをつけています。ここで取り込んだデータテーブル、たくさん列があるのですが、とりあえずドメイン構造を書くためにはドメインの名前、queryのタンパク質の名前、タンパク質の長さ、ドメインの開始と終わりの情報だけあれば良いので、それらの5列を取り出して名前を付け直しています。

library(data.table)
library(ggplot2)
dt <- fread("grep -v '^#' paraspeckles_domain.txt", header = FALSE, fill = TRUE)
dt <- dt[, c(1, 4, 6, 20, 21)]
colnames(dt) <- c("domain_name", "query_name", "length", "query_from", "query_to")

ここまでデータが整形できれば後は我らが強い味方、ggplotに投げるだけです。geom_segmentでタンパク質の全長を書いておいて、geom_rectでドメインの構造を書いて、それぞれのタンパク質の図をfacetで並べて、後はガチャガチャいろいろある軸やらタイトルのラベルをひたすら消しまくってるだけです。最後は見た目が良くなるサイズでpngファイルに書き出してます。

g <- ggplot(data = dt) +
  geom_segment(aes(x = 0, xend = length, y = 5, yend = 5), color="gray", size = 4) +
  geom_rect(aes(xmin = dt$query_from, xmax = dt$query_to, ymin = 0, ymax = 10, fill = domain_name)) +
  facet_grid(vars(query_name)) +
  theme(strip.text.y = element_text(angle = 0)) +
  #erase miscellaneous elements
  xlab("") +
  ylab("") +
  theme(axis.text.y = element_blank()) +
  theme(axis.text.x = element_blank()) +
  theme(panel.grid.major = element_blank()) +
  scale_y_continuous(breaks=NULL) +
  scale_x_continuous(breaks=NULL, expand = c(0, 0)) +
  theme(strip.text.y = element_text(angle = 0))
g
ggsave(filename = "domain.png", g, width = 5, height = 2)

うんうん。なんだかいい感じ。イラレのトレースの時代にはもう戻れません。正確だし、綺麗だし、何より手軽。情報提供の各サイトを作ってくださった方々に感謝です!!

中川 真一

北海道大学 薬学研究院 教授
▶ プロフィールはこちら

ブログアーカイブ

ログイン

サイト内検索