見出し画像

タンパク質の模式図をRで描いてみよう

タンパク質の基本構造
タンパク質は20種類のアミノ酸(または、そのうちのいくつか)が直鎖状に連なったポリペプチド鎖で構成されています。このアミノ酸残基の配列を「一次構造」といいます。ポリペプチド鎖は折りたたまれて立体的な構造をとり、その中で、αヘリックス構造やβシート構造など、特定のドメインに形成される基本的な構造を「二次構造」と呼びます。この二次構造が連なった一本のポリペプチド鎖全体の立体構造、すなわちタンパク質全体の三次元構造を「三次構造」といいます。さらに、複数のタンパク質が相互作用し集合した構造を「四次構造」と呼びます。

Gene ID
遺伝子やタンパク質について論文に記載する場合には、遺伝子名やIDを記載します。例えば、シロイヌナズナの場合には、The Arabidopsis Information Resource (TAIR)に記載されたGene IDが使用されます。イネ、トマト、ミヤコグサなど、全ゲノム配列が解読された植物種については、それぞれのデータベースが公開されており、各遺伝子にはGene IDが付与されています。新たに発見したDNA配列であれば、GeneBankに配列を登録し、その登録番号を論文に記載します。

例、ARABIDOPSIS THALIANA HOMEOBOX25 (ATHB25, AT5G65410)

タンパク質構造の模式図
また、Gene IDに合わせて、その遺伝子がコードするタンパク質の構造をわかりやすく示すために、以下のような模式図をつけることが一般的です。

Hanano et l., (2020) iScience 23, 101332 より

模式図は、Microsoft PowerPointやApple Keynote、あるいはAdobe Illustratorなどのソフトウェアで作成されるのが一般的ですが、複数のパラログやオーソログを並べて図を作成するのは、思いのほか手間がかかります。特に、全長のアミノ酸残基数や、それぞれのドメインの開始位置と終了位置が数値データとして得られているのに、それに合わせてマウスを使って図を手動で描くのは非効率的で面倒です。

そこで、Rでタンパク質の模式図を描いてみましょう。

Rでタンパク質のドメイン構造を示す模式図を作成
先ほどのATHB25のパラログを例として、以下の図を描いてみます。

Tan et al (2006) Plant Physiol. 140: 1095-1108 https://academic.oup.com/plphys/article/140/3/1095/6103085
Figure 1A より

まず、各遺伝子のコードするタンパク質の全長アミノ酸配列の長さとzinc finger regionおよびhomeodomain領域のアミノ酸の位置を調べて、以下のようなcsvファイルを作成しましょう。

ここでは、zinc finger regionとhomeodomainは、それぞれ、以下のサイトのPfamとSuperFamilyの位置を参考にしました。

Plant Transcription Factor Database

それでは、Rを起動して図を描いてみます。

まず、ggplotsとdplyrライブラリを読み込みます。

>  library(ggplot2)
>  library(dplyr)

次に、先ほど作成したATHBs_structure.csvを読み込んで、内容を確認してみましす。

> data <- read.csv("ATHBs_structure.csv")
> data
                 gene total ZF_start ZF_end HD_start HD_end
1  ATHB25 (AT5G65410)   279       73    124      182    252
2  ATHB22 (AT4G24660)   220       47     99      145    218
3  ATHB33 (AT1G75240)   309       74    126      234    301
4  ATHB21 (AT2G02540)   310       85    137      210    283
5  ATHB34 (AT3G28920)   312       50    104      183    252
6  ATHB29 (AT1G69600)   242       29     82      148    214
7  ATHB31 (AT1G14440)   312       88    140      207    279
8  ATHB30 (AT5G15210)   271       55    108      166    237
9  ATHB23 (AT5G39760)   334       55    108      188    261
10 ATHB28 (AT3G50890)   249       59    110      174    243
11 ATHB26 (AT5G60480)   223       35     88      112    172
12 ATHB24 (AT2G18350)   262       80    132      185    259
13 ATHB27 (AT5G42780)   242       63    111      167    237
14 ATHB32 (AT1G14687)   168        5     50       98    164

geneの列をfactorに変換して、plotで図を描画します。

> data$gene <- factor(data$gene, levels = data$gene)

> plot <- ggplot(data, aes(y = gene))
 + geom_rect(aes(xmin = 0, xmax = total, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "lightgrey") 
 + geom_rect(aes(xmin = ZF_start, xmax = ZF_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "green") 
 + geom_rect(aes(xmin = HD_start, xmax = HD_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "yellow") 
 + labs(x = "Amino Acid Position", y = "genes", title = "Zinc Finger and Homeodomain region in ATHB structure") 
 + theme_minimal()

出力すると、

> print(plot)

順番を引用論文と同じにしてみましょう。

> sorted_data <- data[order(sub("ATHB", "", data$gene), decreasing = TRUE), ]
> sorted_data
                 gene total ZF_start ZF_end HD_start HD_end
5  ATHB34 (AT3G28920)   312       50    104      183    252
3  ATHB33 (AT1G75240)   309       74    126      234    301
14 ATHB32 (AT1G14687)   168        5     50       98    164
7  ATHB31 (AT1G14440)   312       88    140      207    279
8  ATHB30 (AT5G15210)   271       55    108      166    237
6  ATHB29 (AT1G69600)   242       29     82      148    214
10 ATHB28 (AT3G50890)   249       59    110      174    243
13 ATHB27 (AT5G42780)   242       63    111      167    237
11 ATHB26 (AT5G60480)   223       35     88      112    172
1  ATHB25 (AT5G65410)   279       73    124      182    252
12 ATHB24 (AT2G18350)   262       80    132      185    259
9  ATHB23 (AT5G39760)   334       55    108      188    261
2  ATHB22 (AT4G24660)   220       47     99      145    218
4  ATHB21 (AT2G02540)   310       85    137      210    283

> sorted_data$gene <- factor(sorted_data$gene, levels = sorted_data$gene)

> plot <- ggplot(sorted_data, aes(y = gene)) 
 + geom_rect(aes(xmin = 0, xmax = total, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "lightgrey")
 + geom_rect(aes(xmin = ZF_start, xmax = ZF_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "green")
 + geom_rect(aes(xmin = HD_start, xmax = HD_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "yellow")
 + labs(x = "Amino Acid Position", y = "ATHBs", title = "Protein Structures with Zinc Finger and Homeodomain domain")
 + theme_minimal()

> print(plot)

できました。

フォントのサイズを少し大きくしてみましょう。

>plot <- ggplot(sorted_data, aes(y = gene))
 + geom_rect(aes(xmin = 0, xmax = total, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "lightgrey")
 + geom_rect(aes(xmin = ZF_start, xmax = ZF_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "green")
 + geom_rect(aes(xmin = HD_start, xmax = HD_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "yellow")
 + labs(x = "Amino Acid Position", y = "ATHBs", title = "Protein Structures with Zinc Finger and Homeodomain domain")
 + theme_minimal()
 + theme(axis.title.x = element_text(size = 14), axis.title.y = element_text(size = 14), axis.text.x = element_text(size = 12), axis.text.y = element_text(size = 12))

tiffファイルとして保存します。

> tiff("protein_structure.tiff", width = 1200, height = 1200)
> plot <- ggplot(sorted_data, aes(y = gene))
 + geom_rect(aes(xmin = 0, xmax = total, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "lightgrey")
 + geom_rect(aes(xmin = ZF_start, xmax = ZF_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "green")
 + geom_rect(aes(xmin = HD_start, xmax = HD_end, ymin = as.numeric(gene) - 0.4, ymax = as.numeric(gene) + 0.4), fill = "yellow")
 + labs(x = "Amino Acid Position", y = "ATHBs", title = "Protein Structures with Zinc Finger and Homeodomain domain")
 + theme_minimal()
 + theme(axis.title.x = element_text(size = 24), axis.title.y = element_text(size = 24), axis.text.x = element_text(size = 24), axis.text.y = element_text(size = 24))
> print(plot)
> dev.off()

600 x 600 pixelでは画像が粗いので、1200 x 1200 pixelで、フォントサイズは24にしています。

Tan et al. の論文とATHB34の長さが違うようですが、おそらく論文公表時とアノテーションが変わったか、オルターナティブスプライシングのパターンの異なるタンパク質を図示しているものと推測されます。

簡単に模式図を描くことができました。

いいなと思ったら応援しよう!