| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3,65 +3,61 @@ Protein Symmetry using BioJava | |||
| 3 | 3 | ||
| 4 | 4 | BioJava can be used to detect, analyze, and visualize **symmetry** and | |
| 5 | 5 | **pseudo-symmetry** in the **quaternary** (biological assembly) and tertiary | |
| 6 | - (**internal**) structural levels. | ||
| 6 | + (**internal**) structural levels of proteins. | ||
| 7 | 7 | ||
| 8 | 8 | ## Quaternary Symmetry | |
| 9 | 9 | ||
| 10 | - The **quaternary symmetry** of a structure defines the relations between | ||
| 11 | - its individual chains or groups of chains. For a more extensive explanation | ||
| 12 | - about symmetery visit the [PDB help page](http://www.rcsb.org/pdb/staticHelp.do?p=help/viewers/jmol_symmetry_view.html). | ||
| 10 | + The **quaternary symmetry** of a structure defines the relation and arrangement of the individual chains or groups of chains that are part of a biological assembly. | ||
| 11 | + For a more exhaustive explanation about protein quaternary symmetery and the different types visit the [PDB help page](http://www.rcsb.org/pdb/staticHelp.do?p=help/viewers/jmol_symmetry_view.html). | ||
| 13 | 12 | ||
| 14 | - In the **quaternary symmetry** detection problem, we are given a set of chains | ||
| 15 | - with its `Atom` coordinates and we are asked to find the higest overall symmetry that | ||
| 16 | - relates them. The solution is divided into the following steps: | ||
| 13 | + In the **quaternary symmetry** detection problem, we are given a set of chains (subunits) that are part of a biological assembly as input, defined by their atomic coordinates, and we are required to find the higest overall symmetry group that | ||
| 14 | + relates them as ouptut. | ||
| 15 | + The solution is divided into the following steps: | ||
| 17 | 16 | ||
| 18 | 17 | 1. First, we need to identify the chains that are identical (or similar | |
| 19 | - in the pseudo-symmetry case). For that, we perform a pairwise alignment of all | ||
| 20 | - chains and determine **clusters of identical chains**. | ||
| 21 | - 2. Next, we reduce the each chains to a single point, its **centroid** (center of mass). | ||
| 22 | - 3. After that, we try different **symmetry relations** to superimpose the chain centroids | ||
| 23 | - and obtain their RMSD. | ||
| 24 | - 4. At last, based on the parameters (cutoffs), we determine the **overall symmetry** of the | ||
| 18 | + in the pseudo-symmetry case). For that purpose, we perform a pairwise alignment of all | ||
| 19 | + chains and identify **clusters of identical or similar subunits**. | ||
| 20 | + 2. Next, we reduce each of the polypeptide chains to a single point, their **centroid** (center of mass). | ||
| 21 | + 3. Afterwards, we try different **symmetry operations** using a grid search to superimpose the chain centroids | ||
| 22 | + and score them using the RMSD. | ||
| 23 | + 4. Finally, based on the parameters (cutoffs), we determine the **overall symmetry** of the | ||
| 25 | 24 | structure, with the symmetry relations obtained in the previous step. | |
| 26 | 25 | 5. In case of asymmetric structure, we discard combinatorially a number of chains and try | |
| 27 | - to detect any **local symmetries** present. | ||
| 26 | + to detect any **local symmetries** present (symmetry that does not involve all subunits of the biological assembly). | ||
| 28 | 27 | ||
| 29 | 28 | The **quaternary symmetry** detection algorithm is implemented in the biojava class | |
| 30 | 29 | [QuatSymmetryDetector](http://www.biojava.org/docs/api/org/biojava/nbio/structure/symmetry/core/QuatSymmetryDetector). | |
| 31 | 30 | An example of how to use it programatically is shown below: | |
| 32 | 31 | ||
| 33 | 32 | ```java | |
| 34 | - //First download the structure in the biological assembly form | ||
| 33 | + // First download the structure in the biological assembly form | ||
| 35 | 34 | Structure s; | |
| 36 | 35 | ||
| 37 | - //Set some parameters if needed different than DEFAULT - see descriptions | ||
| 36 | + // Set some parameters if needed different than DEFAULT - see descriptions | ||
| 38 | 37 | QuatSymmetryParameters parameters = new QuatSymmetryParameters(); | |
| 39 | 38 | SubunitClustererParameters clusterParams = new SubunitClustererParameters(); | |
| 40 | 39 | ||
| 41 | - //Instantiate the detector | ||
| 40 | + // Instantiate the detector | ||
| 42 | 41 | QuatSymmetryDetector detector = QuatSymmetryDetector(s, parameters, clusterParams); | |
| 43 | 42 | ||
| 44 | - //Static methods in QuatSymmetryDetector perform the calculation | ||
| 43 | + // Static methods in QuatSymmetryDetector perform the calculation | ||
| 45 | 44 | QuatSymmetryResults globalResults = QuatSymmetryDetector.getGlobalSymmetry(s, parameters, clusterParams); | |
| 46 | 45 | List<QuatSymmetryResults> localResults = QuatSymmetryDetector.getLocalSymmetries(s, parameters, clusterParams); | |
| 47 | 46 | ||
| 48 | 47 | ``` | |
| 49 | - See also the demo in the BioJava repo: | ||
| 48 | + See also the [demo](https://github.com/biojava/biojava/blob/885600670be75b7f6bc5216bff52a93f43fff09e/biojava-structure/src/main/java/demo/DemoSymmetry.java#L37-L59) provided in **BioJava** for a real case working example. | ||
| 50 | 49 | ||
| 51 | - https://github.com/biojava/biojava/blob/885600670be75b7f6bc5216bff52a93f43fff09e/biojava-structure/src/main/java/demo/DemoSymmetry.java#L37-L59 | ||
| 50 | + The returned `QuatSymmetryResults` object contains all the information of the subunit clustering and structural symmetry. | ||
| 51 | + This object will be used later to obtain axes of symmetry, point group name, stoichiometry or even display the results in Jmol. | ||
| 52 | + The return object of quaternary symmetry (`QuatSymmetryResults`) contains the | ||
| 53 | + In case of asymmetrical structure, the result is a C1 point group. | ||
| 54 | + The return type of the local symmetry is a `List` because there can be multiple valid options of local symmetry. | ||
| 55 | + The list will be empty if there exist no local symmetries in the structure. | ||
| 52 | 56 | ||
| 53 | - The return type are `List` because there can be multiple valid options for the | ||
| 54 | - quaternary symmetry. The local results `List` is empty if there exist no local | ||
| 55 | - symmetry in the structure, and the global results `List` has always size bigger | ||
| 56 | - than 1, returning a C1 point group in the case of asymmetric structure. | ||
| 57 | - | ||
| 58 | - The `QuatSymmetryResults` object contains all the information of the symmetry. | ||
| 59 | - This object will be used later to obtain axes of symmetry, point group name, | ||
| 60 | - stoichiometry or even display the results in Jmol. | ||
| 61 | 57 | ||
| 62 | 58 | ### Global Symmetry | |
| 63 | 59 | ||
| 64 | - In **global symmetry** all chains have to be part of the symmetry description. | ||
| 60 | + In the **global symmetry** mode all chains have to be part of the symmetry result. | ||
| 65 | 61 | ||
| 66 | 62 | #### Point Group | |
| 67 | 63 | ||
@@ -79,15 +75,14 @@ components. | |||
| 79 | 75 | ||
| 80 | 76 | ### Local Symmetry | |
| 81 | 77 | ||
| 82 | - In **local symmetry** a number of chains is left out, so that the symmetry | ||
| 83 | - only applies to a subset of chains. | ||
| 78 | + In **local symmetry** a number of chains is left out, so that the symmetry only applies to a subset of chains. | ||
| 84 | 79 | ||
| 85 | 80 |  | |
| 86 | 81 | ||
| 87 | 82 | ### Pseudo-Symmetry | |
| 88 | 83 | ||
| 89 | 84 | In **pseudo-symmetry** the chains related by the symmetry are not completely | |
| 90 | - identical, but they share a sequence similarity above the pseudo-symmetry | ||
| 85 | + identical, but they share a sequence or structural similarity above the pseudo-symmetry | ||
| 91 | 86 | similarity threshold. | |
| 92 | 87 | ||
| 93 | 88 | If we consider hemoglobin, at a 95% sequence identity threshold the alpha and | |
@@ -122,8 +117,8 @@ create a multiple alignment of the subunits, respecting the symmetry axes. | |||
| 122 | 117 | ||
| 123 | 118 | The **internal symmetry** detection algorithm is implemented in the biojava class | |
| 124 | 119 | [CeSymm](http://www.biojava.org/docs/api/org/biojava/nbio/structure/symmetry/internal/CeSymm). | |
| 125 | - It returns a MultipleAlignment, see the explanation of the model in [Data Models](alignment-data-model.md), | ||
| 126 | - that describes the internal subunits multiple alignment. In case of no symmetry detected, the | ||
| 120 | + It returns a `MultipleAlignment` object, see the explanation of the model in [Data Models](alignment-data-model.md), | ||
| 121 | + that describes the similarity of the internal repeats. In case of no symmetry detected, the | ||
| 127 | 122 | returned alignment represents the optimal self-alignment produced by the first step of the **CE-Symm** | |
| 128 | 123 | algorithm. | |
| 129 | 124 | ||
@@ -202,22 +197,43 @@ The subunit display highlights the differences and similarities between the symm | |||
| 202 | 197 | related subunits of the chain, and helps the user to identify conseved and divergent | |
| 203 | 198 | regions, with the help of the *Sequence Alignment Panel*. | |
| 204 | 199 | ||
| 205 | - ## Combined Global Symmetry | ||
| 200 | + ## Quaternary + Internal Overall Symmetry | ||
| 206 | 201 | ||
| 207 | - Finally, the internal and quaternary symmetries can be combined to obtain the global | ||
| 202 | + Finally, the internal and quaternary symmetries can be merged to obtain the | ||
| 208 | 203 | overall combined symmetry. As we have seen before, the protein 1VYM is a DNA-clamp that | |
| 209 | - has three chains relates by C3 symmetry. Each chain is internally C2 symmetric, and each | ||
| 210 | - part of the C2 internal symmetry is C2 symmetric, so a case of **hierarchical symmetry** | ||
| 211 | - (C2 + C2). Once we have divided the whole structure into its asymmetric parts, we can | ||
| 212 | - analyze the global symmetry that related each one of them. The interesting result is that | ||
| 213 | - in some cases, the internal symmetry **multiplies** the point group of the quaternary symmetry. | ||
| 214 | - What seemed a C3 + C2 + C2 is combined into a D6 overall symmetry, as we can see in the figure | ||
| 215 | - below: | ||
| 204 | + has three chains arranged in a C3 symmetry. | ||
| 205 | + Each chain is internally fourfold symmetric with two levels of symmetry. We can analyze the overall symmetry of the structure by considering together the C3 quaternary symmetry and the fourfold internal symmetry. | ||
| 206 | + In this case, the internal symmetry **augments** the point group of the quaternary symmetry to a D6 overall symmetry, as we can see in the figure below: | ||
| 216 | 207 | ||
| 217 | 208 |  | |
| 218 | 209 | ||
| 219 | - These results can give hints about the function and evolution of proteins and biological | ||
| 220 | - structures. | ||
| 210 | + An example of how to toggle the **combined symmetry** (quaternary + internal symmetries) programatically is shown below: | ||
| 211 | + | ||
| 212 | + ```java | ||
| 213 | + // First download the structure in the biological assembly form | ||
| 214 | + Structure s; | ||
| 215 | + | ||
| 216 | + // Initialize default parameters | ||
| 217 | + QuatSymmetryParameters parameters = new QuatSymmetryParameters(); | ||
| 218 | + SubunitClustererParameters clusterParams = new SubunitClustererParameters(); | ||
| 219 | + | ||
| 220 | + // In SubunitClustererParameters set the clustering method to STRUCTURE and the internal symmetry option to true | ||
| 221 | + clusterParams.setClustererMethod(SubunitClustererMethod.STRUCTURE); | ||
| 222 | + clusterParams.setInternalSymmetry(true); | ||
| 223 | + | ||
| 224 | + // You can lower the default structural coverage to improve the recall | ||
| 225 | + clusterParams.setStructureCoverageThreshold(0.75); | ||
| 226 | + | ||
| 227 | + // Instantiate the detector | ||
| 228 | + QuatSymmetryDetector detector = QuatSymmetryDetector(s, parameters, clusterParams); | ||
| 229 | + | ||
| 230 | + // Static methods in QuatSymmetryDetector perform the calculation | ||
| 231 | + QuatSymmetryResults overallResults = QuatSymmetryDetector.getGlobalSymmetry(s, parameters, clusterParams); | ||
| 232 | + | ||
| 233 | + ``` | ||
| 234 | + | ||
| 235 | + See also the [test](https://github.com/biocryst/biojava/blob/df22da37a86a0dba3fb35bee7e17300d402ab469/biojava-integrationtest/src/test/java/org/biojava/nbio/structure/test/symmetry/TestQuatSymmetryDetectorExamples.java#L167-L192) provided in **BioJava** for a real case working example. | ||
| 236 | + | ||
| 221 | 237 | ||
| 222 | 238 | <!--automatically generated footer--> | |
| 223 | 239 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments