demo.DemoLoadStructure Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biojava-structure Show documentation
Show all versions of biojava-structure Show documentation
The protein structure modules of BioJava.
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
* Created on Jan 27, 2010
* Author: Andreas Prlic
*
*/
package demo;
import org.biojava.nbio.structure.*;
import org.biojava.nbio.structure.align.util.AtomCache;
import org.biojava.nbio.structure.io.FileParsingParameters;
import org.biojava.nbio.structure.io.PDBFileReader;
import org.biojava.nbio.core.util.InputStreamProvider;
/** Example for how to load protein structures (from PDB files).
*
* @author Andreas Prlic
*
*/
public class DemoLoadStructure
{
public static void main(String[] args){
DemoLoadStructure demo = new DemoLoadStructure();
demo.loadStructureIO();
//demo.basicLoad();
//demo.loadStructureFromCache();
}
public void loadStructureIO(){
try {
Structure s1 = StructureIO.getStructure("1gav");
System.out.println(s1.getPDBCode() + " asym unit has nr atoms:");
System.out.println(StructureTools.getNrAtoms(s1));
Chain chain1 = s1.getChainByIndex(0);
System.out.println("First chain: " + chain1);
System.out.println("Chain " + chain1.getName() + " has the following sequence mismatches:");
for (SeqMisMatch mm : chain1.getSeqMisMatches()){
System.out.println(mm);
}
Structure s2 = StructureIO.getBiologicalAssembly("1gav");
System.out.println(s2.getPDBCode() + " biological assembly has nr atoms:");
System.out.println(StructureTools.getNrAtoms(s2));
} catch (Exception e){
e.printStackTrace();
}
}
public void basicLoad(){
try {
PDBFileReader reader = new PDBFileReader();
// the path to the local PDB installation
reader.setPath("/tmp");
// configure the parameters of file parsing
FileParsingParameters params = new FileParsingParameters();
// should the ATOM and SEQRES residues be aligned when creating the internal data model?
params.setAlignSeqRes(true);
// should secondary structure get parsed from the file
params.setParseSecStruc(false);
reader.setFileParsingParameters(params);
Structure structure = reader.getStructureById("4hhb");
System.out.println(structure);
Chain c = structure.getPolyChainByPDB("C");
System.out.print(c);
System.out.println(c.getEntityInfo());
} catch (Exception e){
e.printStackTrace();
}
}
public void loadStructureFromCache(){
String pdbId = "4hhb";
String chainName = "4hhb.A";
String entityName = "4hhb:0";
// we can set a flag if the file should be cached in memory
// this will enhance IO massively if the same files have to be accessed over and over again.
// since this is a soft cache, no danger of memory leak
// this is actually not necessary to provide, since the default is "true" if the AtomCache is being used.
System.setProperty(InputStreamProvider.CACHE_PROPERTY, "true");
AtomCache cache = new AtomCache();
try {
System.out.println("======================");
Structure s = cache.getStructure(pdbId);
System.out.println("Full Structure:" + s);
Atom[] ca = cache.getAtoms(chainName);
System.out.println("got " + ca.length + " CA atoms");
Structure firstEntity = cache.getStructure(entityName);
System.out.println("First entity: " + firstEntity);
} catch (Exception e){
e.printStackTrace();
}
}
}