Skip to content

Commit

Permalink
This commit introduces the new version 0.7.6.4 (APR 2022). The major …
Browse files Browse the repository at this point in the history
…changes are:

1) Considerable speed-up in the E-matrix computation.
2) Removal of trace sigma descriptor bug occuring when progressive sphere mapping is used.
3) Improvements in thresholding and deciding the recommended symmetry.
4) Now FSC is used to decide which non-prime axes are to be considered. This may be slightly slower in some cases, but in a few cases this makes 100x time difference.
5) Other minor bug removals and improvements.

Merge remote-tracking branch 'origin/development'
  • Loading branch information
michaltykac committed Apr 14, 2022
2 parents af07d84 + cd796f7 commit 4435bcd
Show file tree
Hide file tree
Showing 69 changed files with 930 additions and 556 deletions.
61 changes: 36 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
ProSHADE
========

Protein Shape Description and Symmetry Detection version 0.7.6.3 (FEB 2022)
Protein Shape Description and Symmetry Detection version 0.7.6.4 (APR 2022)

# Introduction

Expand Down Expand Up @@ -323,7 +323,7 @@ To demonstrate how the tool can be run and the standard output for the symmetry

```
$: ./proshade -S -f ./emd_6324.map
ProSHADE 0.7.6.3 (FEB 2022):
ProSHADE 0.7.6.4 (APR 2022):
============================
... Starting to read the structure: ./emd_6324.map
Expand All @@ -346,21 +346,32 @@ ProSHADE 0.7.6.3 (FEB 2022):
... Starting I symmetry prediction.
... Starting recommended symmetry decision procedure.
Detected C symmetry with fold 12 about point [2.9202 , 2.92307 , 13.017] away from centre of mass .
Detected C symmetry with fold 12 about point [-0.0347284 , -0.0296968 , 13.0487] away from centre of mass .
Fold X Y Z Angle Height Average FSC
+12 -0.00001 +0.00002 +1.00000 -0.52360 +0.95258 +0.99413
+12 +0.00000 +0.00000 +1.00000 +0.52360 +0.99840 +0.99443
To facilitate manual checking for symmetries, the following is a list of all detected C symmetries:
Fold X Y Z Angle Height Average FSC
+2 +0.00096 +0.00000 +1.00000 +3.14159 +0.99402 +0.99624
+4 +0.00000 +0.00000 +1.00000 +1.57080 +0.99359 +0.99720
+12 -0.00001 +0.00002 +1.00000 -0.52360 +0.95258 +0.99413
+6 -0.00000 +0.00000 +1.00000 -1.04720 +0.94835 +0.99353
+3 +0.00000 +0.00000 +1.00000 +2.09440 +0.93690 +0.99211
+4 +0.00080 +0.00000 +1.00000 +1.57080 +0.99978 +0.99785
+2 +0.00080 +0.00000 +1.00000 +3.14159 +0.99980 +0.99706
+12 +0.00000 +0.00000 +1.00000 +0.52360 +0.99840 +0.99443
+6 +0.00000 +0.00000 +1.00000 +1.04720 +0.99826 +0.99395
+3 +0.00000 +0.00000 +1.00000 +2.09440 +0.99788 +0.99264
+24 +0.00000 +0.00000 +1.00000 +0.26180 +0.95467 +0.50824
+8 +0.00000 +0.00000 +1.00000 +0.78540 +0.95121 +0.46326
+36 -0.00150 -0.00056 +1.00000 -0.17453 +0.95492 +0.38587
+18 +0.00000 +0.00000 +1.00000 +0.34907 +0.95360 +0.36790
+29 +0.00000 +0.00000 +1.00000 +0.21666 +0.95457 +0.34070
+23 +0.00000 +0.00000 +1.00000 +0.27318 +0.95434 +0.33475
+9 +0.00000 +0.00000 +1.00000 +0.69813 +0.95071 +0.32845
+19 +0.00000 +0.00000 +1.00000 +0.33069 +0.95375 +0.32822
+17 +0.00000 +0.00000 +1.00000 +0.36960 +0.95341 +0.32379
+13 +0.00000 +0.00000 +1.00000 +0.48332 +0.95265 +0.31051
+11 +0.00000 +0.00000 +1.00000 +0.57120 +0.95179 +0.30020
======================
ProSHADE run complete.
Time taken: 52 seconds.
Time taken: 120 seconds.
======================
```

Expand All @@ -376,7 +387,7 @@ Time taken: 52 seconds.

```
$: ./proshade -D -f ./1BFO_A_dom_1.pdb -f ./1H8N_A_dom_1.pdb -f ./3IGU_A_dom_1.pdb -r 6
ProSHADE 0.7.6.3 (FEB 2022):
ProSHADE 0.7.6.4 (APR 2022):
============================
... Starting to read the structure: ./1BFO_A_dom_1.pdb
Expand Down Expand Up @@ -407,9 +418,9 @@ Time taken: 52 seconds.
... Starting trace sigma distance computation.
... Starting rotation function distance computation.
Distances between ./1BFO_A_dom_1.pdb and ./1H8N_A_dom_1.pdb
Energy levels distance : 0.855606
Trace sigma distance : 0.964671
Rotation function distance: 0.624527
Energy levels distance : 0.851642
Trace sigma distance : 0.910876
Rotation function distance: 0.621719
... Starting to read the structure: ./3IGU_A_dom_1.pdb
... Map left at original position.
... Map rotation centre not shifted.
Expand All @@ -426,9 +437,9 @@ Time taken: 52 seconds.
... Starting trace sigma distance computation.
... Starting rotation function distance computation.
Distances between ./1BFO_A_dom_1.pdb and ./3IGU_A_dom_1.pdb
Energy levels distance : 0.560643
Trace sigma distance : 0.753095
Rotation function distance: 0.465186
Energy levels distance : 0.542158
Trace sigma distance : 0.575506
Rotation function distance: 0.439295
======================
ProSHADE run complete.
Expand All @@ -450,7 +461,7 @@ Time taken: 52 seconds.

```
$ ./proshade -RMf ./emd_5762.map.gz
ProSHADE 0.7.6.3 (FEB 2022):
ProSHADE 0.7.6.4 (APR 2022):
============================
... Starting to read the structure: ./emd_5762.map.gz
Expand All @@ -468,7 +479,7 @@ ProSHADE 0.7.6.3 (FEB 2022):
======================
ProSHADE run complete.
Time taken: 9 seconds.
Time taken: 19 seconds.
======================
```

Expand All @@ -494,7 +505,7 @@ Time taken: 9 seconds.

```
$ ./proshade -O -f ./1BFO_A_dom_1.pdb -f ./1H8N_A_dom_1.pdb -r 1
ProSHADE 0.7.6.3 (FEB 2022):
ProSHADE 0.7.6.4 (APR 2022):
============================
... Starting to read the structure: ./1BFO_A_dom_1.pdb
Expand Down Expand Up @@ -546,14 +557,14 @@ Time taken: 9 seconds.
... Starting translation function computation.
The rotation centre to origin translation vector is: -18.5 -20.5 -22.6
The rotation matrix about origin is : -0.861 +0.179 -0.476
: +0.0969 -0.861 -0.499
: -0.499 -0.476 +0.724
The rotation centre to overlay translation vector is: +2 +6 -4
The rotation matrix about origin is : -0.861 +0.18 -0.476
: +0.0967 -0.861 -0.499
: -0.5 -0.476 +0.724
The rotation centre to overlay translation vector is: +2 +8 -4
======================
ProSHADE run complete.
Time taken: 18 seconds.
Time taken: 24 seconds.
======================
```
# Using the ProSHADE library
Expand Down
11 changes: 6 additions & 5 deletions proshade/examples/libproshade/advancedAccess_distances.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
\author Michal Tykac
\author Garib N. Murshudov
\version 0.7.6.3
\date FEB 2022
\version 0.7.6.4
\date APR 2022
*/

//==================================================== ProSHADE
Expand Down Expand Up @@ -51,7 +51,8 @@ int main ( int argc, char **argv )
settings->setPhaseUsage ( true ); // Use full maps, or Patterson-like maps?
settings->setSphereDistances ( 0.0 ); // The distance between spheres. Use 0.0 for automatic determination.
settings->setIntegrationOrder ( 0 ); // The order of the Gauss-Legendre integration computation. Set to 0 for automatic determination.
settings->setTaylorSeriesCap ( 10 ); // Set the Taylor series approximation cap. 10 seems like a fast and accurate value, but feel free to change.
settings->setIntegrationApproxSteps ( 5 ); // Set the number of steps in the Gauss-Legendre quadrature approximation.
settings->setIntegrationSpeedUp ( true ); // Should the computation be spead up using the integration improvement?
settings->setNormalisation ( false ); // Should internal map representation be normalised to mean 0 and standard deviation 1?
settings->setMapInversion ( false ); // Should all map positions x,y,z be swapped to -x,-y,-z? Use this only if your helices have the wrong hand as a result of first runs of map computation.
settings->setMasking ( false ); // Should maps be masked by blurring?
Expand Down Expand Up @@ -126,8 +127,8 @@ int main ( int argc, char **argv )

//================================================ Expected output
// Energy levels distance : 0.85561
// Trace sigma distance : 0.96467
// Rotation function distance : 0.62453
// Trace sigma distance : 0.97777
// Rotation function distance : 0.6

//================================================ Release the settings and runProshade objects
delete structure1;
Expand Down
17 changes: 9 additions & 8 deletions proshade/examples/libproshade/advancedAccess_overlay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
\author Michal Tykac
\author Garib N. Murshudov
\version 0.7.6.3
\date FEB 2022
\version 0.7.6.4
\date APR 2022
*/

//==================================================== ProSHADE
Expand Down Expand Up @@ -70,7 +70,8 @@ int main ( int argc, char **argv )
settings->setBandwidth ( 0 ); // The spherical harmonics bandwidth to which to compute. Set to 0 for automatic determination.
settings->setSphereDistances ( 0.0 ); // The distance between spheres. Use 0.0 for automatic determination.
settings->setIntegrationOrder ( 0 ); // The order of the Gauss-Legendre integration computation. Set to 0 for automatic determination.
settings->setTaylorSeriesCap ( 10 ); // Set the Taylor series approximation cap. 10 seems like a fast and accurate value, but feel free to change.
settings->setIntegrationApproxSteps ( 5 ); // Set the number of steps in the Gauss-Legendre quadrature approximation.
settings->setIntegrationSpeedUp ( true ); // Should the computation be spead up using the integration improvement?
settings->setEnergyLevelsComputation ( true ); // Should energy levels descriptor be computed, assuming Distances are required (irrelevant otherwise)?
settings->setTraceSigmaComputation ( true ); // Should trace sigma descriptor be computed, assuming Distances are required (irrelevant otherwise)?
settings->setRotationFunctionComputation ( true ); // Should rotation function descriptor be computed, assuming Distances are required (irrelevant otherwise)?
Expand Down Expand Up @@ -125,10 +126,10 @@ int main ( int argc, char **argv )
std::cout << " : " << rotMat[6] << " ; " << rotMat[7] << " ; " << rotMat[8] << std::endl;

//================================================ Expected output
// Optimal rotation Euler angles are: 4.01301 ; 0.698058 ; 5.40991
// Optimal rotation matrix is : -0.90328 ; 0.116827 ; -0.41284
// : 0.113553 ; -0.862809 ; -0.492612
// : -0.413753 ; -0.491846 ; 0.766092
// Optimal rotation Euler angles are: 4.01163 ; 0.698203 ; 5.40945
// Optimal rotation matrix is : -0.90313 ; 0.118517 ; -0.412686
// : 0.111992 ; -0.862857 ; -0.492886
// : -0.414504 ; -0.491357 ; 0.765999

//================================================ Delete the Patterson maps. They are no longer needed as we will now proceed with phased maps.
delete staticStr;
Expand Down Expand Up @@ -185,7 +186,7 @@ int main ( int argc, char **argv )

//================================================ Expected output
// Rot. Centre to origin translation: 9.14286 ; 17.7778 ; 17.7778
// Rot. Centre to optimal overlay translation: 16 ; 16 ; -8
// Rot. Centre to optimal overlay translation: 16 ; 24 ; -8

//================================================ Write out the output files
movingStr->writeOutOverlayFiles ( settings, optimalEulerRot.at(0), optimalEulerRot.at(1), optimalEulerRot.at(2), &rotationCentre, &optimalTranslation );
Expand Down
7 changes: 4 additions & 3 deletions proshade/examples/libproshade/advancedAccess_reboxing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
\author Michal Tykac
\author Garib N. Murshudov
\version 0.7.6.3
\date FEB 2022
\version 0.7.6.4
\date APR 2022
*/

//==================================================== ProSHADE
Expand Down Expand Up @@ -73,7 +73,8 @@ int main ( int argc, char **argv )
settings->setBandwidth ( 0 ); // The spherical harmonics bandwidth to which to compute. Set to 0 for automatic determination.
settings->setSphereDistances ( 0.0 ); // The distance between spheres. Use 0.0 for automatic determination.
settings->setIntegrationOrder ( 0 ); // The order of the Gauss-Legendre integration computation. Set to 0 for automatic determination.
settings->setTaylorSeriesCap ( 10 ); // Set the Taylor series approximation cap. 10 seems like a fast and accurate value, but feel free to change.
settings->setIntegrationApproxSteps ( 5 ); // Set the number of steps in the Gauss-Legendre quadrature approximation.
settings->setIntegrationSpeedUp ( true ); // Should the computation be spead up using the integration improvement?
settings->setProgressiveSphereMapping ( false ); // Should smaller spheres be less sampled? It is considerably faster, but may sacrifice some (little) accuracy.
settings->setEnergyLevelsComputation ( true ); // Should energy levels descriptor be computed, assuming Distances are required (irrelevant otherwise)?
settings->setTraceSigmaComputation ( true ); // Should trace sigma descriptor be computed, assuming Distances are required (irrelevant otherwise)?
Expand Down
25 changes: 13 additions & 12 deletions proshade/examples/libproshade/advancedAccess_symmetry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
\author Michal Tykac
\author Garib N. Murshudov
\version 0.7.6.3
\date FEB 2022
\version 0.7.6.4
\date APR 2022
*/

//==================================================== ProSHADE
Expand Down Expand Up @@ -72,7 +72,8 @@ int main ( int argc, char **argv )
settings->setBandwidth ( 0 ); // The spherical harmonics bandwidth to which to compute. Set to 0 for automatic determination.
settings->setSphereDistances ( 0.0 ); // The distance between spheres. Use 0.0 for automatic determination.
settings->setIntegrationOrder ( 0 ); // The order of the Gauss-Legendre integration computation. Set to 0 for automatic determination.
settings->setTaylorSeriesCap ( 10 ); // Set the Taylor series approximation cap. 10 seems like a fast and accurate value, but feel free to change.
settings->setIntegrationApproxSteps ( 5 ); // Set the number of steps in the Gauss-Legendre quadrature approximation.
settings->setIntegrationSpeedUp ( true ); // Should the computation be spead up using the integration improvement?
settings->setEnergyLevelsComputation ( true ); // Should energy levels descriptor be computed, assuming Distances are required (irrelevant otherwise)?
settings->setTraceSigmaComputation ( true ); // Should trace sigma descriptor be computed, assuming Distances are required (irrelevant otherwise)?
settings->setRotationFunctionComputation ( true ); // Should rotation function descriptor be computed, assuming Distances are required (irrelevant otherwise)?
Expand Down Expand Up @@ -135,8 +136,8 @@ int main ( int argc, char **argv )

//================================================ Expected output
// Detected symmetry: D-6 with axes:
// Symmetry axis number 0: Fold 6 XYZ: 0 ; 0 ; 1 Angle (radians): 1.0472 , axis peak: 0.955807 and averaged FSC of 0.975556
// Symmetry axis number 1: Fold 2 XYZ: 0.87222 ; 0.489037 ; 0.00868856 Angle (radians): 3.14159 , axis peak: 0.957264 and averaged FSC of 0.612032
// Symmetry axis number 0: Fold 6 XYZ: 0 ; 0 ; 1 Angle (radians): 1.0472 , axis peak: 0.978024 and averaged FSC of 0.976069
// Symmetry axis number 1: Fold 2 XYZ: 0.0096167 ; 0.999954 ; 6.12323e-17 Angle (radians): 3.14159 , axis peak: 1 and averaged FSC of 0.841425

//================================================ Find all C axes
std::vector < std::vector< proshade_double > > allCs = settings->allDetectedCAxes;
Expand All @@ -150,7 +151,7 @@ int main ( int argc, char **argv )
std::cout << "Internal map processing shifted the map COM by: [" << comMove.at(0) << " , " << comMove.at(1) << " , " << comMove.at(2) << "]." << std::endl;

//================================================ Expected output
// Internal map processing shifted the map COM by: [3.19419 , 3.1979 , 1.36808].
// Internal map processing shifted the map COM by: [6.36407 , 6.38724 , 4.58921].

//================================================ Release the object
delete simpleSym;
Expand Down Expand Up @@ -191,9 +192,9 @@ int main ( int argc, char **argv )
}

//================================================ Expected output
// Detected symmetry: D-3 as requested. The axes are
// Symmetry axis number 0: Fold 3 XYZ: 0 ; 0 ; 1 Angle (radians): 2.0944 and axis peak: 0.948237
// Symmetry axis number 1: Fold 2 XYZ: 0.0088698 ; 0.999961 ; 6.12323e-17 Angle (radians): 3.14159 and axis peak: 1
// Detected symmetry: D-3 as requested. The axes are:
// Symmetry axis number 0: Fold 3 XYZ: -7.7335e-05 ; -4.5076e-05 ; 1 Angle (radians): -2.0944 and axis peak: 0.974444
// Symmetry axis number 1: Fold 2 XYZ: 0.0096167 ; 0.999954 ; 6.12323e-17 Angle (radians): 3.14159 and axis peak: 1


// NOTE: To get all the point group elements, one needs to supply the list of all cyclic point groups which comprise the
Expand Down Expand Up @@ -270,9 +271,9 @@ int main ( int argc, char **argv )

//================================================ Expected output
// Point group D3-2 has been found to have 6 group elements, with the first element (excluding the identity one) having rotation matrix:
// -0.50 | +0.87 | +0.00
// -0.87 | -0.50 | +0.00
// +0.00 | +0.00 | +1.00
// -0.50 | +0.87 | -0.00
// -0.87 | -0.50 | -0.00
// -0.00 | -0.00 | +1.00

//================================================ Release the settings and runProshade objects
delete requestSym;
Expand Down
4 changes: 2 additions & 2 deletions proshade/examples/libproshade/proshadeBinary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
\author Michal Tykac
\author Garib N. Murshudov
\version 0.7.6.3
\date FEB 2022
\version 0.7.6.4
\date APR 2022
*/

//==================================================== ProSHADE
Expand Down
Loading

0 comments on commit 4435bcd

Please sign in to comment.