## org.biojava.bio.structure
Interface Structure

All Superinterfaces:
  Cloneable

All Known Implementing Classes:
  StructureImpl

    public interface Structure

extends Cloneable

Interface for a structure object. Provides access to the data of a PDB file. A structure object allows to access the PDB header information as well as to the data from the ATOM records. The header information is currently available through the following objects:

- `PDBHeader`
- `DBRef`
- `Compound`

The structure object provides access to the data from the ATOM records through a hierarchy of sub-object:

     Structure
             |
             Chain
                 |
                 Group
                     |
                     Atom

For more documentation on how to work with the Structure API please see http://biojava.org/wiki/BioJava:CookBook#Protein_Structure

Q: How can I get a Structure object from a PDB file?

A:

    public Structure loadStructure(String pathToPDBFile){
                    PDBFileReader pdbreader = new PDBFileReader();

                    Structure structure = null;
                    try{
                            structure = pdbreader.getStructure(pathToPDBFile);
                            System.out.println(structure);
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
                    return structure;
            }

Q: How can I calculate Phi and Psi angles of AminoAcids?

A:

    public void calcPhiPsi(Structure structure){

                    // get the first chain from the structure

                    Chain chain  = structure.getChain(0);

                    // A protein chain consists of a number of groups. These can be either
                    // AminoAcid, Hetatom or Nucleotide groups.
                    //
                    // Note: BioJava provides access to both the ATOM and SEQRES data in a PDB file.
                    // since we are interested in doing calculations here, we only request the groups
                    // from the ATOM records

                    //  get the Groups of the chain that are AminoAcids.
                    List<Group> groups = chain.getAtomGroups("amino");

                    AminoAcid a;
                    AminoAcid b;
                    AminoAcid c ;

                    for ( int i=0; i < groups.size(); i++){

                            // since we requested only groups of type "amino" they will always be amino acids
                            // Nucleotide and Hetatom groups will not be present in the groups list.

                            b = (AminoAcid)groups.get(i);

                            double phi =360.0;
                            double psi =360.0;

                            if ( i > 0) {
                                    a = (AminoAcid)groups.get(i-1) ;
                                    try {

                                            // the Calc class provides utility methods for various calculations on
                                            // structures, groups and atoms

                                            phi = Calc.getPhi(a,b);
                                    } catch (StructureException e){
                                            e.printStackTrace();
                                            phi = 360.0 ;
                                    }
                            }
                            if ( i < groups.size()-1) {
                                    c = (AminoAcid)groups.get(i+1) ;
                                    try {
                                            psi = Calc.getPsi(b,c);
                                    }catch (StructureException e){
                                            e.printStackTrace();
                                            psi = 360.0 ;
                                    }
                            }

                            System.out.print(b.getPDBCode() + " " + b.getPDBName() + ":"  );

                            System.out.println(String.format("\tphi: %+7.2f psi: %+7.2f", phi, psi));

                    }

Since:
  1.4
Version:
  %I% %G%
Author:
  Andreas Prlic

Method Summary
`void` `addChain(Chain chain)` add a new chain.
`void` `addChain(Chain chain, int modelnr)` add a new chain, if several models are available.
`void` `addModel(List<Chain> model)` add a new model.
`void` `addSSBond(SSBond ssbond)` add a single SSBond to this structure
`Structure` `clone()` returns an identical copy of this Structure object
`Chain` `findChain(String chainId)` request a particular chain from a structure.
`Chain` `findChain(String chainId, int modelnr)` request a particular chain from a particular model
`Group` `findGroup(String chainId, String pdbResnum)` request a particular group from a structure.
`Group` `findGroup(String chainId, String pdbResnum, int modelnr)` request a particular group from a structure.
`Chain` `getChain(int pos)` retrieve a chain by it's position within the Structure .
`Chain` `getChain(int pos, int modelnr)` retrieve a chain by it's position within the Structure and model number.
`Chain` `getChainByPDB(String chainId)` request a chain by it's PDB code by default takes only the first model
`Chain` `getChainByPDB(String chainId, int modelnr)` request a chain by it's PDB code by default takes only the first model
`List<Chain>` `getChains()` retrieve all chains - if it is a NMR structure will return the chains of the first model.
`List<Chain>` `getChains(int modelnr)` retrieve all chains of a model.
`Compound` `getCompoundById(String molId)` request a particular compound by its id
`List<Compound>` `getCompounds()` get all the Compounds that are defined in the PDB Header
`List<Map<String,Integer>>` `getConnections()` Returns the connections value.
`List<DBRef>` `getDBRefs()` get the list of database references
`Map<String,Object>` `getHeader()` Deprecated. use getPDBHeader instead
`Long` `getId()` get the ID used by Hibernate
`JournalArticle` `getJournalArticle()` get the associated publication as defined by the JRNL records in a PDB file.
`List<Chain>` `getModel(int modelnr)` retrieve all Chains belonging to a model .
`String` `getName()` get biological name of Structure.
`String` `getPDBCode()` get PDB code of structure.
`PDBHeader` `getPDBHeader()` return the header information for this PDB file
`List<SSBond>` `getSSBonds()` get the list of SSBonds as they have been defined in the PDB files
`boolean` `hasChain(String chainId)` check if a chain with the id chainId is contained in this structure.
`boolean` `hasJournalArticle()` return whether or not the entry has an associated journal article or publication.
`boolean` `isNmr()` test if this structure is an nmr structure.
`int` `nrModels()` return number of models .
`void` `setChains(int modelnr, List<Chain> chains)` set the chains for a model
`void` `setChains(List<Chain> chains)` set the chains of a structure, if this is a NMR structure, this will only set model 0.
`void` `setCompounds(List<Compound> molList)` set the compounts
`void` `setConnections(List<Map<String,Integer>> connections)` sets/gets an List of Maps which corresponds to the CONECT lines in the PDB file:
`void` `setDBRefs(List<DBRef> dbrefs)` set the list of database references for this structure
`void` `setHeader(Map<String,Object> h)` set the Header data .
`void` `setId(Long id)` set the ID used by Hibernate
`void` `setJournalArticle(JournalArticle journalArticle)` set the associated publication as defined by the JRNL records in a PDB file.
`void` `setModel(int position, List<Chain> model)` a convenience function if one wants to edit and replace the models in a structure.
`void` `setName(String name)` set biological name of Structure .
`void` `setNmr(boolean nmr)` set NMR flag.
`void` `setPDBCode(String pdb_id)` set PDB code of structure .
`void` `setPDBHeader(PDBHeader header)` the the header information for this PDB file
`void` `setSSBonds(List<SSBond> ssbonds)` set the list of SSBonds for this structure
`int` `size()` return number of Chains in this Structure.
`int` `size(int modelnr)` return number of chains of model.
`String` `toPDB()` create a String that contains the contents of a PDB file .
`String` `toString()` String representation of object.

Method Detail

### clone

    Structure clone()

  returns an identical copy of this Structure object

  Returns:
    identical copy of this Structure object

### toString

    String toString()

  String representation of object.

  Overrides:
    `toString` in class `Object`

### setPDBCode

    void setPDBCode(String pdb_id)

  set PDB code of structure .

  Parameters:
    `pdb_id` - a String specifying the PDBCode
  See Also:
    `getPDBCode()`

### getPDBCode

    String getPDBCode()

  get PDB code of structure.

  Returns:
    a String representing the PDBCode value
  See Also:
    `setPDBCode(java.lang.String)`

### setName

    void setName(String name)

  set biological name of Structure .

  Parameters:
    `name` - a String specifying the biological name of the Structure
  See Also:
    `getName()`

### getName

    String getName()

  get biological name of Structure.

  Returns:
    a String representing the biological name of the Structure
  See Also:
    `setName(java.lang.String)`

### setHeader

    void setHeader(Map<String,Object> h)

  set the Header data .

  Parameters:
    `h` - a Map object specifying the header
  See Also:
    `getHeader()`

### getHeader

    Map<String,Object> getHeader()

  Deprecated. use getPDBHeader instead

  get Header data .

  Returns:
    a Map object representing the header value
  See Also:
    `setHeader(java.util.Map<java.lang.String, java.lang.Object>)`, `getPDBHeader()`

### setConnections

    void setConnections(List<Map<String,Integer>> connections)

  sets/gets an List of Maps which corresponds to the CONECT lines in the PDB file:

             COLUMNS         DATA TYPE        FIELD           DEFINITION
             ---------------------------------------------------------------------------------
              1 -  6         Record name      "CONECT"
              7 - 11         Integer          serial          Atom serial number
             12 - 16         Integer          serial          Serial number of bonded atom
             17 - 21         Integer          serial          Serial number of bonded atom
             22 - 26         Integer          serial          Serial number of bonded atom
             27 - 31         Integer          serial          Serial number of bonded atom
             32 - 36         Integer          serial          Serial number of hydrogen bonded
             atom
             37 - 41         Integer          serial          Serial number of hydrogen bonded
             atom
             42 - 46         Integer          serial          Serial number of salt bridged
             atom
             47 - 51         Integer          serial          Serial number of hydrogen bonded
             atom
             52 - 56         Integer          serial          Serial number of hydrogen bonded
             atom
             57 - 61         Integer          serial          Serial number of salt bridged
             atom

  the HashMap for a single CONECT line contains the following fields:
  - atomserial (mandatory) : Atom serial number
  - bond1 .. bond4 (optional): Serial number of bonded atom
  - hydrogen1 .. hydrogen4 (optional):Serial number of hydrogen bonded atom
  - salt1 .. salt2 (optional): Serial number of salt bridged atom

  Parameters:
    `connections` - a List object specifying the connections
  See Also:
    `getConnections()`

### getConnections

    List<Map<String,Integer>> getConnections()

  Returns the connections value.

  Returns:
    a List object representing the connections value
  See Also:
    `setConnections(java.util.List<java.util.Map<java.lang.String, java.lang.Integer>>)`

### size

    int size()

  return number of Chains in this Structure.

  Returns:
    an int representing the number of Chains in this Structure

### size

    int size(int modelnr)

  return number of chains of model.

  Parameters:
    `modelnr` - an int specifying the number of the Model that should be used
  Returns:
    an int representing the number of Chains in this Model

### nrModels

    int nrModels()

  return number of models . in this implementation also XRAY structures have "1 model", since model is the container for the chains. to test if a Structure is an NMR structure use @see isNMR , since this is based on the info in the PDB file header.

  Returns:
    an int representing the number of models in this Structure

### isNmr

    boolean isNmr()

  test if this structure is an nmr structure.

  Returns:
    true if this Structure has been resolved by NMR

### setNmr

    void setNmr(boolean nmr)

  set NMR flag.

  Parameters:
    `nmr` - true to declare that this Structure has been solved by NMR.

### addModel

    void addModel(List<Chain> model)

  add a new model.

  Parameters:
    `model` - a List object containing the Chains of the new Model

### setModel

    void setModel(int position,
                  List<Chain> model)

  a convenience function if one wants to edit and replace the models in a structure. allows to set (replace) the model at position with the new List of Chains.

  Parameters:
    `position` - starting at 0
    `model` -

### getModel

    List<Chain> getModel(int modelnr)

  retrieve all Chains belonging to a model .

  Parameters:
    `modelnr` - an int
  Returns:
    a List object containing the Chains of Model nr. modelnr
  See Also:
    `getChains(int modelnr)`

### getChains

    List<Chain> getChains()

  retrieve all chains - if it is a NMR structure will return the chains of the first model. This is the same as getChains(0);

  Returns:
    a List object containing the Chains of Model nr. modelnr
  See Also:
    `getModel(int modelnr)`, `getChains(int modelnr)`

### setChains

    void setChains(List<Chain> chains)

  set the chains of a structure, if this is a NMR structure, this will only set model 0.

  Parameters:
    `chains` - the list of chains for this structure.
  See Also:
    `setChains(int, List)`

### getChains

    List<Chain> getChains(int modelnr)

  retrieve all chains of a model.

  Parameters:
    `modelnr` - an int
  Returns:
    a List object containing the Chains of Model nr. modelnr
  See Also:
    `getModel(int)`

### setChains

    void setChains(int modelnr,
                   List<Chain> chains)

  set the chains for a model

  Parameters:
    `chains` -
    `modelnr` -

### addChain

    void addChain(Chain chain)

  add a new chain.

  Parameters:
    `chain` - a Chain object

### addChain

    void addChain(Chain chain,
                  int modelnr)

  add a new chain, if several models are available.

  Parameters:
    `chain` - a Chain object
    `modelnr` - an int specifying to which model the Chain should be added

### getChain

    Chain getChain(int pos)

  retrieve a chain by it's position within the Structure .

  Parameters:
    `pos` - an int for the position in the List of Chains.
  Returns:
    a Chain object

### getChain

    Chain getChain(int pos,
                   int modelnr)

  retrieve a chain by it's position within the Structure and model number.

  Parameters:
    `pos` - an int
    `modelnr` - an int
  Returns:
    a Chain object

### findChain

    Chain findChain(String chainId)
                    throws StructureException

  request a particular chain from a structure. by default considers only the first model.

  Parameters:
    `chainId` - the ID of a chain that should be returned
  Returns:
    Chain the requested chain
  Throws:
    `StructureException`

### hasChain

    boolean hasChain(String chainId)

  check if a chain with the id chainId is contained in this structure.

  Parameters:
    `chainId` - the name of the chain
  Returns:
    true if a chain with the id (name) chainId is found

### findChain

    Chain findChain(String chainId,
                    int modelnr)
                    throws StructureException

  request a particular chain from a particular model

  Parameters:
    `modelnr` - the number of the model to use
    `chainId` - the ID of a chain that should be returned
  Returns:
    Chain the requested chain
  Throws:
    `StructureException`

### findGroup

    Group findGroup(String chainId,
                    String pdbResnum)
                    throws StructureException

  request a particular group from a structure. by default considers only the first model in the structure.

  Parameters:
    `chainId` - the ID of the chain to use
    `pdbResnum` - the PDB residue number of the requested group
  Returns:
    Group the requested Group
  Throws:
    `StructureException`

### findGroup

    Group findGroup(String chainId,
                    String pdbResnum,
                    int modelnr)
                    throws StructureException

  request a particular group from a structure. considers only model nr X. count starts with 0.

  Parameters:
    `chainId` - the ID of the chain to use
    `pdbResnum` - the PDB residue number of the requested group
    `modelnr` - the number of the model to use
  Returns:
    Group the requested Group
  Throws:
    `StructureException`

### getChainByPDB

    Chain getChainByPDB(String chainId)
                        throws StructureException

  request a chain by it's PDB code by default takes only the first model

  Parameters:
    `chainId` - the chain identifier
  Returns:
    the Chain that matches the chainID
  Throws:
    `StructureException`

### getChainByPDB

    Chain getChainByPDB(String chainId,
                        int modelnr)
                        throws StructureException

  request a chain by it's PDB code by default takes only the first model

  Parameters:
    `chainId` - the chain identifier
    `modelnr` - request a particular model;
  Returns:
    the Chain that matches the chainID in the model
  Throws:
    `StructureException`

### toPDB

    String toPDB()

  create a String that contains the contents of a PDB file .

  Returns:
    a String that looks like a PDB file
  See Also:
    `FileConvert`

### setCompounds

    void setCompounds(List<Compound> molList)

  set the compounts

  Parameters:
    `molList` -

### getCompounds

    List<Compound> getCompounds()

  get all the Compounds that are defined in the PDB Header

  Returns:
    a list of compound

### setDBRefs

    void setDBRefs(List<DBRef> dbrefs)

  set the list of database references for this structure

  Parameters:
    `dbrefs` - list of DBRef objects

### getDBRefs

    List<DBRef> getDBRefs()

  get the list of database references

  Returns:
    list of DBRef objects

### getCompoundById

    Compound getCompoundById(String molId)

  request a particular compound by its id

  Parameters:
    `molId` -
  Returns:
    a compound

### getPDBHeader

    PDBHeader getPDBHeader()

  return the header information for this PDB file

  Returns:
    the PDBHeader object

### hasJournalArticle

    boolean hasJournalArticle()

  return whether or not the entry has an associated journal article or publication. The JRNL section is not mandatory and thus may not be present.

  Returns:
    flag if a JournalArticle has been found.

### getJournalArticle

    JournalArticle getJournalArticle()

  get the associated publication as defined by the JRNL records in a PDB file.

  Returns:
    a JournalArticle

### setJournalArticle

    void setJournalArticle(JournalArticle journalArticle)

  set the associated publication as defined by the JRNL records in a PDB file.

  Parameters:
    `journalArticle` -

### getSSBonds

    List<SSBond> getSSBonds()

  get the list of SSBonds as they have been defined in the PDB files

  Returns:
    a list of SSBonds

### setSSBonds

    void setSSBonds(List<SSBond> ssbonds)

  set the list of SSBonds for this structure

  Parameters:
    `ssbonds` -

### addSSBond

    void addSSBond(SSBond ssbond)

  add a single SSBond to this structure

  Parameters:
    `ssbond` -

### setPDBHeader

    void setPDBHeader(PDBHeader header)

  the the header information for this PDB file

  Parameters:
    `header` - the PDBHeader object

### getId

    Long getId()

  get the ID used by Hibernate

  Returns:
    the ID used by Hibernate

### setId

    void setId(Long id)

  set the ID used by Hibernate

  Parameters:
    `id` -