【R】PDB 형식 파일을 3d-plot으로 표시한다

17920 단어 Rbioinformatics

목적



단백질의 입체 구조에 좌표축을 꼬치에 통과시킨 그림을 그리고 싶었다
PyMOL에서 어떻게 할지 몰랐기 때문에 R을 사용했습니다.

표시해 본 것


  • Sirtuin1 (PDBID:5BTR) ... 녹색 라인
  • resveratrol ... 블루 dot

  • R 정보


  • R 버전 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)
    
    

    결과



    할 수 있었다.

    좋은 웹페이지 즐겨찾기