Skip to content

Commit 8856006

Browse files
committed
A new dome for quat symmetry detection
1 parent d6c1fb3 commit 8856006

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package demo;
2+
3+
import java.util.List;
4+
5+
import org.biojava.nbio.structure.Structure;
6+
import org.biojava.nbio.structure.StructureException;
7+
import org.biojava.nbio.structure.StructureIO;
8+
import org.biojava.nbio.structure.align.multiple.MultipleAlignment;
9+
import org.biojava.nbio.structure.cluster.SubunitCluster;
10+
import org.biojava.nbio.structure.cluster.SubunitClustererParameters;
11+
import org.biojava.nbio.structure.symmetry.core.QuatSymmetryDetector;
12+
import org.biojava.nbio.structure.symmetry.core.QuatSymmetryParameters;
13+
import org.biojava.nbio.structure.symmetry.core.QuatSymmetryResults;
14+
15+
/**
16+
* A demo on how to use the quaternary symmetry detection algorithms.
17+
*
18+
* @author Jose Duarte
19+
*
20+
*/
21+
public class DemoSymmetry {
22+
23+
public static void main(String[] args) throws Exception {
24+
25+
System.out.println("Getting all bioassemblies");
26+
List<Structure> bioAssemblies = StructureIO.getBiologicalAssemblies("4hhb");
27+
28+
for (Structure bioAssembly : bioAssemblies) {
29+
findQuatSym(bioAssembly);
30+
}
31+
32+
33+
}
34+
35+
private static void findQuatSym(Structure bioAssembly) throws StructureException {
36+
37+
QuatSymmetryParameters symmParams = new QuatSymmetryParameters();
38+
39+
System.out.println("GLOBAL SYMMETRY, NO CLUSTERING");
40+
SubunitClustererParameters clusterParams = new SubunitClustererParameters();
41+
clusterParams.setSequenceIdentityThreshold(0.95);
42+
clusterParams.setRmsdThreshold(0.0);
43+
44+
QuatSymmetryResults globalResults = QuatSymmetryDetector.calcGlobalSymmetry(bioAssembly, symmParams, clusterParams);
45+
46+
47+
48+
System.out.println(globalResults.getSymmetry() + (globalResults.isPseudosymmetric()?"(pseudo)":""));
49+
50+
System.out.println("There are "+globalResults.getSubunitClusters().size()+" subunit clusters");
51+
int i = 1;
52+
for (SubunitCluster suc : globalResults.getSubunitClusters()) {
53+
//System.out.println(suc.getClustererMethod());
54+
MultipleAlignment ma = suc.getMultipleAlignment();
55+
56+
System.out.printf("Cluster %d (clustered by %s), RMSD = %4.2f\n", i, suc.getClustererMethod(), ma.getScore("RMSD"));
57+
58+
i++;
59+
}
60+
61+
System.out.println("\nGLOBAL SYMMETRY, WITH CLUSTERING (PSEUDO-SYMMETRY)");
62+
clusterParams = new SubunitClustererParameters();
63+
// we can either set sequence identity to 40% or rmsd to 2, both would have the same effect of clustering the alpha/beta subunits together
64+
clusterParams.setSequenceIdentityThreshold(0.40);
65+
clusterParams.setRmsdThreshold(0.0);
66+
67+
globalResults = QuatSymmetryDetector.calcGlobalSymmetry(bioAssembly, symmParams, clusterParams);
68+
69+
70+
71+
System.out.println(globalResults.getSymmetry() + (globalResults.isPseudosymmetric()?"(pseudo)":""));
72+
73+
System.out.println("There are "+globalResults.getSubunitClusters().size()+" subunit clusters");
74+
i = 1;
75+
for (SubunitCluster suc : globalResults.getSubunitClusters()) {
76+
//System.out.println(suc.getClustererMethod());
77+
MultipleAlignment ma = suc.getMultipleAlignment();
78+
79+
System.out.printf("Cluster %d (clustered by %s), RMSD = %4.2f\n", i, suc.getClustererMethod(), ma.getScore("RMSD"));
80+
81+
i++;
82+
}
83+
84+
85+
System.out.println("\n\nLOCAL SYMMETRIES");
86+
List<QuatSymmetryResults> localResults = QuatSymmetryDetector.calcLocalSymmetries(bioAssembly, symmParams, clusterParams);
87+
88+
System.out.println("Number of local symmetries: "+localResults.size());
89+
90+
for (QuatSymmetryResults results : localResults) {
91+
System.out.println(results.getSymmetry()+" "+results.getStoichiometry());
92+
}
93+
94+
95+
}
96+
}

0 commit comments

Comments
 (0)