【R】PDB形式ファイルを3d-plotで表示する

More than 1 year has passed since last update.


目的

タンパク質の立体構造に座標軸を串刺しに通した図を描きたかった

PyMOLでどうやるかわからなかったのでRを使った


表示してみたもの


  • Sirtuin1 (PDBID:5BTR) ...緑色のline

  • resveratrol ...青色のdot


Rについて


  • R version 3.4.1


使用したパッケージ


  • bio3d

  • scatterplot3d



コード


pdb_lineplot3d.r

#パッケージ読み込み

library(bio3d)
library(scatterplot3d)

#ファイルの読み込み
pdb <- read.pdb("5btr") #RCSB PDBのIDを指定

#A鎖のCαの座標をdata.frameにする
ca.inds <- atom.select(pdb, "calpha",chain = "A")
pdb_xyz <- matrix(pdb$xyz[, ca.inds$xyz],ncol=3,byrow=T)
pdb_xyz <- data.frame(pdb_xyz)

#resveratrolの座標
stl.inds <- atom.select(pdb,resid = "STL",chain = "A")
stl_xyz <- matrix(pdb$xyz[, stl.inds$xyz],ncol=3,byrow=T)
stl_xyz <- data.frame(stl_xyz)

#3D plot
colnames(pdb_xyz) <- c("x","y","z")

scatterplot3d(pdb_xyz,type="l",color="#b2df8a",lwd=3,
xlim=c(min(pdb_xyz$x),max(pdb_xyz$x)),
ylim=c(min(pdb_xyz$y),max(pdb_xyz$y)),
zlim=c(min(pdb_xyz$z),max(pdb_xyz$z)),
col.axis="gray",col.lab="gray")
par(new=T)
scatterplot3d(stl_xyz,type="p",color="#1f78b4",pch=16,
xlim=c(min(pdb_xyz$x),max(pdb_xyz$x)),
ylim=c(min(pdb_xyz$y),max(pdb_xyz$y)),
zlim=c(min(pdb_xyz$z),max(pdb_xyz$z)),
axis = FALSE,grid=FALSE)

#串刺し
axis_line <- rbind(c(min(pdb_xyz$x),60,0),c(max(pdb_xyz$x),60,0),
c(-10,min(pdb_xyz$y),-0),c(-10,max(pdb_xyz$y),0),
c(-10,60,min(pdb_xyz$z)),c(-10,60,max(pdb_xyz$z)))
par(new=T)
scatterplot3d(axis_line[1:2,],type="l",color=1,
xlim=c(min(pdb_xyz$x),max(pdb_xyz$x)),
ylim=c(min(pdb_xyz$y),max(pdb_xyz$y)),
zlim=c(min(pdb_xyz$z),max(pdb_xyz$z)),
axis = FALSE,grid=FALSE)
par(new=T)
scatterplot3d(axis_line[3:4,],type="l",color=1,
xlim=c(min(pdb_xyz$x),max(pdb_xyz$x)),
ylim=c(min(pdb_xyz$y),max(pdb_xyz$y)),
zlim=c(min(pdb_xyz$z),max(pdb_xyz$z)),
axis = FALSE,grid=FALSE)
par(new=T)
scatterplot3d(axis_line[5:6,],type="l",color=1,
xlim=c(min(pdb_xyz$x),max(pdb_xyz$x)),
ylim=c(min(pdb_xyz$y),max(pdb_xyz$y)),
zlim=c(min(pdb_xyz$z),max(pdb_xyz$z)),
axis = FALSE,grid=FALSE)



結果

できた。

5btr_3dplot.png