Biojava:HET氨基酸

时间:2016-03-21 10:21:27

标签: biojava

阅读pdb结构2a65我面临的氨基酸残基应该被认为是“蛋白质的配体”,而不是“部分蛋白质” 。

在PDB文件和cif文件中,这个LEU.601残留被标记为HET,遗憾的是,它名为LEU,似乎Biojava将其自动标记为ATOM。 有没有人知道区分“蛋白质链A”和配体“LEU.601”的方法?

2a65.pdb的样本:

HETATM 4149  N   LEU A 601      24.537  32.416  18.866  1.00 15.26           N
HETATM 4150  CA  LEU A 601      25.812  31.696  18.815  1.00 16.66           C
HETATM 4151  C   LEU A 601      25.693  30.381  18.046  1.00 16.48           C
...

我的biojava代码片段:

Group g=s.findGroup("A", "601");
System.out.println(g);
System.out.println(g.getType());

g=s.findGroup("A", "701");
System.out.println(g);
System.out.println(g.getType());

它产生了什么:

AminoAcid ATOM:LEU L 601 true ATOM atoms: 9
amino
Hetatom 701 BOG true atoms: 20
hetatm

1 个答案:

答案 0 :(得分:2)

在biojava 4中,这是通过seqres组和原子组处理的。作为配体一部分的基团将完全不属于seqres。这是一个演示如何循环遍历它们的片段:

import org.biojava.nbio.structure.Chain;
import org.biojava.nbio.structure.Group;
import org.biojava.nbio.structure.Structure;
import org.biojava.nbio.structure.StructureIO;

public class StackOverflowIssue {

    public static void main(String[] args) throws Exception {

        Structure s = StructureIO.getStructure("2a65");         

        Chain c = s.getChainByPDB("A");

        for (Group gr : c.getSeqResGroups()) {
            System.out.println(gr.getResidueNumber()+" "+gr.getPDBName());
        }

        for (Group gr : c.getAtomGroups()) {
            if (!gr.isWater())
                System.out.println(gr.getResidueNumber()+" "+gr.getPDBName());
        }

    }

}

它的输出将显示seqres组如何包含您引用的LEU 601,而原子组不包含它。

在biojava 5中(尚未发布,但您可以使用SNAPSHOT构建或直接从github获取主分支:https://github.com/biojava/biojava),聚合物和非聚合物实体以更好的方式处理。基本上每个配体分子都被分配到它自己的链中,这样就很容易将聚合物(蛋白质或核酸)与其配体分开。

如果您继续使用4,请使用最新的4.2.1(或等待几天直到4.2.2发布)。