BioJava:CookBook:PDB:bioassembly
Since BioJava 3.0.5 the protein structure modules can parse the biological assembly information out of PDB and mmcif files and create a biologically correct representation of protein structures.
For more information about the differences between the asymmetric unit and the biological assembly see a tutorial at RCSB PDB
An comparison of the asymmetric unit and the biological assembly of Streptavidin is shown in this screenshot: It compares the asymmetric unit of PDB ID 1STP (left side) with its biological assembly (right side).
Here some example code how to load the biological assembly:
// good examples: 1stp 1gav 1hv4 1hho 7dfr 3fad 1qqp
// assembly 0 ... asym Unit
// assembly 1 ... the first bio assembly
// example 1fah has 2 assemblies (two copies of the assembly in asymmetric unit)
// Various interesting symmetries: (see Lawson, 2008)
// Circular - 1TJA
// Dihedral - 1ei7
// Icosahedral - 1a34
// Helical - 1cgm
// DNA 173D .. 2
// we load the bio assembly info out of the PDB files
BioUnitDataProviderFactory.setBioUnitDataProvider(BioUnitDataProviderFactory.pdbProviderClassName);
//Structure bioAssembly = StructureIO.getBiologicalAssembly("4A1I",2);
Structure bioAssembly = StructureIO.getBiologicalAssembly("1ei7",1);
StructureAlignmentJmol jmolPanel = new StructureAlignmentJmol();
//jmolPanel.evalString("set autobond=false");
jmolPanel.setStructure(bioAssembly);
// send some commands to Jmol
jmolPanel.evalString("select * ; color structure ; spacefill off; wireframe off; backbone off; cartoon on; select ligands ; spacefill 0.4; color cpk;");
System.out.println("done!");