LoginSignup
0
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-13

目的

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

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3