Interface Chain

All Superinterfaces:
Serializable
All Known Implementing Classes:
ChainImpl

public interface Chain extends Serializable

Defines the interface for a Chain. A Chain corresponds to a Chain in a PDB file. A chain consists of a list of Group objects. A Group can either be an AminoAcid, Hetatom or Nucleotide.

The BioJava API provides access to both the ATOM and SEQRES records in a PDB file. During parsing of a PDB file it aligns the ATOM and SEQRES groups and joins them. The SEQRES sequence can be accessed via getSeqResGroups() and the ATOM groups via getAtomGroups(). Groups that have been observed (i.e. they are in the ATOM records) can be detected by Group.has3D()

Since:
1.4
Version:
%I% %G%
Author:
Andreas Prlic
  • Method Details

    • clone

      Returns an identical copy of this Chain.
      Returns:
      an identical copy of this Chain
    • addGroup

      void addGroup(Group group)
      Add a group to the list of ATOM record group of this chain. To add SEQRES records a more complex alignment between ATOM and SEQRES residues is required, please see SeqRes2AtomAligner for more details on that.
      Parameters:
      group - a Group object
    • getId

      Get the 'private' asymId (internal chain IDs in mmCif) for this chain.
      Returns:
      the asymId
      See Also:
    • setId

      void setId(String asymId)
      Set the 'private' asymId (internal chain IDs in mmCif) for this chain.
      Parameters:
      asymId - the internal chain Id
    • setName

      void setName(String authId)
      Set the 'public' authId (chain ID in PDB file)
      Parameters:
      authId - the 'public' authId (chain ID in PDB file)
      See Also:
    • getName

      Get the 'public' authId (chain ID in PDB file)
      Returns:
      the authId for this chain.
      See Also:
    • getAtomGroup

      Group getAtomGroup(int position)
      Return the Group at given position, from within Groups with observed density in the chain, i.e. those with coordinates in ATOM and HETATMS (including waters) records.
      Parameters:
      position - an int
      Returns:
      a Group object
      See Also:
    • getSeqResGroup

      Group getSeqResGroup(int position)
      Return the Group at given position, from within groups in the SEQRES records of the chain, i.e. the aminoacids/nucleotides in the construct.
      Parameters:
      position - an int
      Returns:
      a Group object
      See Also:
    • getAtomGroups

      Return all Groups with observed density in the chain, i.e. those with coordinates in ATOM and HETATMS (including waters) records.
      Returns:
      a List object representing the Groups of this Chain.
      See Also:
    • setAtomGroups

      void setAtomGroups(List<Group> groups)
      Set all Groups with observed density in the chain, i.e. those with coordinates in ATOM and HETATMs (including waters) records.
      Parameters:
      groups - a List object representing the Groups of this Chain.
      See Also:
    • getAtomGroups

      Return a List of all (observed) Groups of a special type, one of: GroupType.AMINOACID, GroupType.HETATM or GroupType.NUCLEOTIDE. Note that if a standard aminoacid appears as a HETATM (because it is part of a ligand) then it is still considered as GroupType.AMINOACID and not as GroupType.HETATM.
      Parameters:
      type - GroupType
      Returns:
      a List object
      See Also:
    • getGroupByPDB

      Get a group by its PDB residue numbering. If the PDB residue number is not known, throws a StructureException.
      Parameters:
      resNum - the PDB residue number of the group
      Returns:
      the matching group
      Throws:
      StructureException
    • getGroupsByPDB

      Group[] getGroupsByPDB(ResidueNumber pdbresnumStart, ResidueNumber pdbresnumEnd) throws StructureException
      Get all groups that are located between two PDB residue numbers.
      Parameters:
      pdbresnumStart - PDB residue number of start. If null, defaults to the chain start.
      pdbresnumEnd - PDB residue number of end. If null, defaults to the chain end.
      Returns:
      Groups in between. or throws a StructureException if either start or end can not be found,
      Throws:
      StructureException
    • getGroupsByPDB

      Group[] getGroupsByPDB(ResidueNumber pdbresnumStart, ResidueNumber pdbresnumEnd, boolean ignoreMissing) throws StructureException
      Get all groups that are located between two PDB residue numbers. In contrast to getGroupsByPDB this method call ignores if the exact outer groups are not found. This is useful e.g. when requesting the range of groups as specified by the DBREF records - these frequently are rather inaccurate.
      Parameters:
      pdbresnumStart - PDB residue number of start. If null, defaults to the chain start.
      pdbresnumEnd - PDB residue number of end. If null, defaults to the chain end.
      ignoreMissing - ignore missing groups in this range.
      Returns:
      Groups in between. or throws a StructureException if either start or end can not be found,
      Throws:
      StructureException
    • getAtomLength

      Returns the number of Groups with observed density in the chain, i.e. those with coordinates in ATOM and HETATMs (including waters) records
      Returns:
      the length
      See Also:
    • getSeqResLength

      Returns the number of groups in the SEQRES records of the chain, i.e. the number of aminoacids/nucleotides in the construct
      Returns:
      the length
      See Also:
    • setEntityInfo

      void setEntityInfo(EntityInfo entityInfo)
      Sets the Entity information
      Parameters:
      entityInfo - the EntityInfo
      See Also:
    • getEntityInfo

      Returns the EntityInfo for this chain.
      Returns:
      the EntityInfo object
      See Also:
    • toString

      Overrides:
      toString in class Object
    • getBJSequence

      Converts the SEQRES groups of a Chain to a Biojava Sequence object.
      Returns:
      the SEQRES groups of the Chain as a Sequence object.
    • getAtomSequence

      Returns the sequence of amino acids as it has been provided in the ATOM records.
      Returns:
      amino acid sequence as string
      See Also:
    • getSeqResSequence

      Returns the PDB SEQRES sequence as a one-letter sequence string. Non-standard residues are represented by an "X".
      Returns:
      one-letter PDB SEQRES sequence as string
      See Also:
    • getSeqResGroups

      Returns a List of all SEQRES groups of a special type, one of: GroupType.AMINOACID, GroupType.HETATM or GroupType.NUCLEOTIDE.
      Parameters:
      type - a GroupType
      Returns:
      an List object
      See Also:
    • getSeqResGroups

      Returns a list of all groups in SEQRES records of the chain, i.e. the aminoacids/nucleotides in the construct.
      Returns:
      a List of all Group objects of this chain
      See Also:
    • setSeqResGroups

      void setSeqResGroups(List<Group> seqResGroups)
      Sets the list of SeqResGroups for this chain.
      Parameters:
      seqResGroups - a List of Group objects that from the SEQRES groups of this chain.
      See Also:
    • setStructure

      void setStructure(Structure parent)
      Sets the back-reference to its parent Structure.
      Parameters:
      parent -
    • getStructure

      Returns the parent Structure of this chain.
      Returns:
      the parent Structure object
      See Also:
    • toPDB

      Convert this Chain to a String in PDB format
      Returns:
    • toMMCIF

      Convert this Chain to a String in mmCIF format
      Returns:
    • setSeqMisMatches

      void setSeqMisMatches(List<SeqMisMatch> seqMisMatches)
      Sets annotated sequence mismatches for this chain. This is based on the STRUCT_REF_SEQ_DIF mmCif category
      Parameters:
      seqMisMatches -
    • getSeqMisMatches

      Gets annotated sequence mismatches for this chain. This is based on the STRUCT_REF_SEQ_DIF mmCif category
      Returns:
      a list of sequence mismatches (or null if none found)
    • getEntityType

      Returns the EntityType of this chain. Equivalent to getEntityInfo().getType()
      Returns:
      See Also:
    • isWaterOnly

      boolean isWaterOnly()
      Tests if a chain is consisting of water molecules only
      Returns:
      true if there are only solvent molecules in this chain.
    • isPureNonPolymer

      boolean isPureNonPolymer()
      Returns true if the given chain is composed of non-polymeric (including water) groups only.
      Returns:
      true if only non-polymeric groups in this chain.
    • getPredominantGroupType

      Get the predominant GroupType for a given Chain, following these rules:
      • if the ratio of number of residues of a certain GroupType to total non-water residues is above the threshold 0.95, then that GroupType is returned
      • if there is no GroupType that is above the threshold then the GroupType with most members is chosen, logging it

      See also ChemComp.getPolymerType() and ChemComp.getResidueType() which follow the PDB chemical component dictionary and provide a much more accurate description of groups and their linking.

      Returns:
      the predominant group type
    • isProtein

      boolean isProtein()
      Tell whether given chain is a protein chain
      Returns:
      true if protein, false if nucleotide or ligand
      See Also:
    • isNucleicAcid

      boolean isNucleicAcid()
      Tell whether given chain is DNA or RNA
      Returns:
      true if nucleic acid, false if protein or ligand
      See Also: