##目的
タンパク質の立体構造に座標軸を串刺しに通した図を描きたかった
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)