从单个 PDB 文件中提取多个蛋白质链
Extract multiple protein chains from single PDB file
我有一个包含多个链的 PDB 文件,但没有链 ID。我想使用 R 来分配 chainid,这样我就可以分析单个蛋白质链并在每个蛋白质链中找到特定的位点。
我目前正在使用 Rpdb 提取文件和示例数据(来自单个 pdb 文件的每个链的前几行)如下。
REMARK 99 Chain ID : 1
REMARK 99 Residues : 593
REMARK 99 Atoms : 4782
REMARK 99 File : final.sc.pdb
ATOM 1 N MET 1 17.471 -55.657 42.605 1.00 0.00
ATOM 2 CA MET 1 17.516 -55.479 41.136 1.00 0.00
ATOM 3 CB MET 1 16.328 -56.188 40.460 1.00 0.00
ATOM 4 C MET 1 17.525 -54.045 40.745 1.00 0.00
ATOM 5 O MET 1 17.991 -53.186 41.492 1.00 0.00
ATOM 6 CG MET 1 14.961 -55.764 41.001 1.00 0.00 C
ATOM 7 SD MET 1 14.550 -56.460 42.632 1.00 0.00 S
ATOM 8 CE MET 1 12.951 -55.613 42.782 1.00 0.00 C
ATOM 9 N THR 2 17.012 -53.760 39.535 1.00 0.00
ATOM 10 CA THR 2 16.993 -52.420 39.040 1.00 0.00
ATOM 11 CB THR 2 16.552 -52.347 37.612 1.00 0.00
TER
REMARK 99 Chain ID : 1
REMARK 99 Residues : 531
REMARK 99 Atoms : 4211
REMARK 99 File : final.sc.pdb
ATOM 1 N MET 1 55.179 17.162 2.445 1.00 0.00
ATOM 2 CA MET 1 55.489 16.069 3.613 1.00 0.00
ATOM 3 CB MET 1 55.199 16.623 5.019 1.00 0.00
ATOM 4 C MET 1 53.890 15.434 3.310 1.00 0.00
ATOM 5 O MET 1 52.902 15.782 3.971 1.00 0.00
ATOM 6 CG MET 1 56.062 17.833 5.341 1.00 0.00 C
ATOM 7 SD MET 1 55.937 18.517 7.006 1.00 0.00 S
ATOM 8 CE MET 1 56.886 17.217 7.874 1.00 0.00 C
ATOM 9 N ALA 2 53.854 14.445 2.424 1.00 0.00
ATOM 10 CA ALA 2 52.895 13.660 2.231 1.00 0.00
ATOM 11 CB ALA 2 53.134 12.918 0.924 1.00 0.00
ATOM 12 C ALA 2 52.253 12.986 3.391 1.00 0.00
ATOM 13 O ALA 2 51.034 12.834 3.347 1.00 0.00
TER
列名由 Rpdb 添加为(注意:chainid、insert 和 segid 没有值):
recname eleid elename alt resname chainid resid insert x1 x2 x3 occ temp segid
有谁知道添加上述 chainid 的方法吗?
谢谢!
通过使用 "TER" 来定义蛋白质链的开始和结束,我现在可以做一些工作,但是如果有人有 better/smoother/faster 方法请告诉我:
#works for pdb file with two chains
pdb.input.table=read.delim(file.choose(),sep="",header=F)
#pdb chain splitting
chainAstart=1
chainAend=which(pdb.input.table=="TER")[1]
chainBstart=which(pdb.input.table=="TER")[1]+1
chainBend=which(pdb.input.table=="TER")[2]
new.chain.id=c(rep("A",chainAend),rep("B",chainBend-chainAend))
pdb.dock.input=cbind(pdb.input.table,new.chain.id)
我有一个包含多个链的 PDB 文件,但没有链 ID。我想使用 R 来分配 chainid,这样我就可以分析单个蛋白质链并在每个蛋白质链中找到特定的位点。
我目前正在使用 Rpdb 提取文件和示例数据(来自单个 pdb 文件的每个链的前几行)如下。
REMARK 99 Chain ID : 1
REMARK 99 Residues : 593
REMARK 99 Atoms : 4782
REMARK 99 File : final.sc.pdb
ATOM 1 N MET 1 17.471 -55.657 42.605 1.00 0.00
ATOM 2 CA MET 1 17.516 -55.479 41.136 1.00 0.00
ATOM 3 CB MET 1 16.328 -56.188 40.460 1.00 0.00
ATOM 4 C MET 1 17.525 -54.045 40.745 1.00 0.00
ATOM 5 O MET 1 17.991 -53.186 41.492 1.00 0.00
ATOM 6 CG MET 1 14.961 -55.764 41.001 1.00 0.00 C
ATOM 7 SD MET 1 14.550 -56.460 42.632 1.00 0.00 S
ATOM 8 CE MET 1 12.951 -55.613 42.782 1.00 0.00 C
ATOM 9 N THR 2 17.012 -53.760 39.535 1.00 0.00
ATOM 10 CA THR 2 16.993 -52.420 39.040 1.00 0.00
ATOM 11 CB THR 2 16.552 -52.347 37.612 1.00 0.00
TER
REMARK 99 Chain ID : 1
REMARK 99 Residues : 531
REMARK 99 Atoms : 4211
REMARK 99 File : final.sc.pdb
ATOM 1 N MET 1 55.179 17.162 2.445 1.00 0.00
ATOM 2 CA MET 1 55.489 16.069 3.613 1.00 0.00
ATOM 3 CB MET 1 55.199 16.623 5.019 1.00 0.00
ATOM 4 C MET 1 53.890 15.434 3.310 1.00 0.00
ATOM 5 O MET 1 52.902 15.782 3.971 1.00 0.00
ATOM 6 CG MET 1 56.062 17.833 5.341 1.00 0.00 C
ATOM 7 SD MET 1 55.937 18.517 7.006 1.00 0.00 S
ATOM 8 CE MET 1 56.886 17.217 7.874 1.00 0.00 C
ATOM 9 N ALA 2 53.854 14.445 2.424 1.00 0.00
ATOM 10 CA ALA 2 52.895 13.660 2.231 1.00 0.00
ATOM 11 CB ALA 2 53.134 12.918 0.924 1.00 0.00
ATOM 12 C ALA 2 52.253 12.986 3.391 1.00 0.00
ATOM 13 O ALA 2 51.034 12.834 3.347 1.00 0.00
TER
列名由 Rpdb 添加为(注意:chainid、insert 和 segid 没有值):
recname eleid elename alt resname chainid resid insert x1 x2 x3 occ temp segid
有谁知道添加上述 chainid 的方法吗? 谢谢!
通过使用 "TER" 来定义蛋白质链的开始和结束,我现在可以做一些工作,但是如果有人有 better/smoother/faster 方法请告诉我:
#works for pdb file with two chains
pdb.input.table=read.delim(file.choose(),sep="",header=F)
#pdb chain splitting
chainAstart=1
chainAend=which(pdb.input.table=="TER")[1]
chainBstart=which(pdb.input.table=="TER")[1]+1
chainBend=which(pdb.input.table=="TER")[2]
new.chain.id=c(rep("A",chainAend),rep("B",chainBend-chainAend))
pdb.dock.input=cbind(pdb.input.table,new.chain.id)