ProSHADE: src/proshade/ProSHADE_maths.hpp File Reference

| ProSHADE 0.7.5.4 (MAR 2021) Protein Shape Detection

Classes | Namespaces | Functions
ProSHADE_maths.hpp File Reference

This header file declares all the functions required for computing various information from the ProSHADE data. More...

`#include "ProSHADE_misc.hpp"`

Go to the source code of this file.

## Classes
class | ProSHADE_internal_spheres::ProSHADE_rotFun_sphere
| This class contains all inputed data for the rotation function angle-axis converted spheres. More...
class | ProSHADE_internal_maths::BicubicInterpolator

## Namespaces
| ProSHADE_internal_spheres
| This namespace contains the structure and functions required for storing internal map projections onto a set of concentric spheres.
| ProSHADE_internal_maths
| This namespace contains the internal functions for common mathematical operations.

## Functions
void | zgesdd_ (char *jobz, int *m, int *n, std::complex< double > *a, int *lda, double *s, std::complex< double > *u, int *ldu, std::complex< double > *vt, int *ldvt, std::complex< double > *work, int *lwork, double *rwork, int *iwork, int *info)
void | ProSHADE_internal_maths::complexMultiplication (proshade_double *r1, proshade_double *i1, proshade_double *r2, proshade_double *i2, proshade_double *retReal, proshade_double *retImag)
| Function to multiply two complex numbers. More...
void | ProSHADE_internal_maths::complexMultiplicationConjug (proshade_double *r1, proshade_double *i1, proshade_double *r2, proshade_double *i2, proshade_double *retReal, proshade_double *retImag)
| Function to multiply two complex numbers by using the second number's conjugate. More...
proshade_double | ProSHADE_internal_maths::complexMultiplicationRealOnly (proshade_double *r1, proshade_double *i1, proshade_double *r2, proshade_double *i2)
| Function to multiply two complex numbers and return the real part only. More...
proshade_double | ProSHADE_internal_maths::complexMultiplicationConjugRealOnly (proshade_double *r1, proshade_double *i1, proshade_double *r2, proshade_double *i2)
| Function to conjuggate multiply two complex numbers and return the real part only. More...
void | ProSHADE_internal_maths::vectorMeanAndSD (std::vector< proshade_double > *vec, proshade_double *&ret)
| Function to get vector mean and standard deviation. More...
void | ProSHADE_internal_maths::vectorMedianAndIQR (std::vector< proshade_double > *vec, proshade_double *&ret)
| Function to get vector median and inter-quartile range. More...
void | ProSHADE_internal_maths::arrayMedianAndIQR (proshade_double *vec, proshade_unsign vecSize, proshade_double *&ret)
| Function to get array median and inter-quartile range. More...
proshade_double | ProSHADE_internal_maths::pearsonCorrCoeff (proshade_double *valSet1, proshade_double *valSet2, proshade_unsign length)
| Function for computing the Pearson's correlation coefficient. More...
void | ProSHADE_internal_maths::getLegendreAbscAndWeights (proshade_unsign order, proshade_double *abscissas, proshade_double *weights, proshade_unsign taylorSeriesCap)
| Function to prepare abscissas and weights for Gauss-Legendre integration. More...
void | ProSHADE_internal_maths::getGLPolyAtZero (proshade_unsign order, proshade_double *polyValue, proshade_double *deriValue)
| This function obtains the Legendre polynomial values and its derivative at zero for any positive integer order polynomial. More...
void | ProSHADE_internal_maths::getGLFirstEvenRoot (proshade_double polyAtZero, proshade_unsign order, proshade_double *abscAtZero, proshade_double *weighAtZero, proshade_unsign taylorSeriesCap)
| This function finds the first root for Legendre polynomials of odd order. More...
proshade_double | ProSHADE_internal_maths::evaluateGLSeries (proshade_double *series, proshade_double target, proshade_unsign terms)
| This function evaluates the Taylor expansion. More...
proshade_double | ProSHADE_internal_maths::advanceGLPolyValue (proshade_double from, proshade_double to, proshade_double valAtFrom, proshade_unsign noSteps, proshade_unsign taylorSeriesCap)
| This function finds the next value of the polynomial. More...
void | ProSHADE_internal_maths::completeLegendreSeries (proshade_unsign order, proshade_double *abscissa, proshade_double *weights, proshade_unsign taylorSeriesCap)
| This function completes the Legendre polynomial series assuming you have obtained the first values. More...
proshade_double | ProSHADE_internal_maths::gaussLegendreIntegrationReal (proshade_double *vals, proshade_unsign valsSize, proshade_unsign order, proshade_double *abscissas, proshade_double *weights, proshade_double integralOverRange, proshade_double maxSphereDists)
| Function to compute real part of the Gauss-Legendre integration over spherical harmonic values in different shells. More...
void | ProSHADE_internal_maths::gaussLegendreIntegration (proshade_complex *vals, proshade_unsign valsSize, proshade_unsign order, proshade_double *abscissas, proshade_double *weights, proshade_double integralOverRange, proshade_double maxSphereDists, proshade_double *retReal, proshade_double *retImag)
| Function to compute the complete complex Gauss-Legendre integration over spherical harmonic values in different shells. More...
void | ProSHADE_internal_maths::complexMatrixSVDSigmasOnly (proshade_complex **mat, int dim, double *&singularValues)
| Function to compute the complete complex matrix SVD and return only the sigmas. More...
void | ProSHADE_internal_maths::complexMatrixSVDUandVOnly (proshade_double *mat, int dim, proshade_double *uAndV, bool fail=true)
| Function to compute the real matrix SVD and return the U and V matrices. More...
void | ProSHADE_internal_maths::getEulerZXZFromSOFTPosition (proshade_signed band, proshade_signed x, proshade_signed y, proshade_signed z, proshade_double *eulerAlpha, proshade_double *eulerBeta, proshade_double *eulerGamma)
| Function to find Euler angles (ZXZ convention) from index position in the inverse SOFT map. More...
void | ProSHADE_internal_maths::getSOFTPositionFromEulerZXZ (proshade_signed band, proshade_double eulerAlpha, proshade_double eulerBeta, proshade_double eulerGamma, proshade_double *x, proshade_double *y, proshade_double *z)
| Function to find the index position in the inverse SOFT map from given Euler angles (ZXZ convention). More...
void | ProSHADE_internal_maths::getRotationMatrixFromEulerZXZAngles (proshade_double eulerAlpha, proshade_double eulerBeta, proshade_double eulerGamma, proshade_double *matrix)
| Function to find the rotation matrix from Euler angles (ZXZ convention). More...
void | ProSHADE_internal_maths::getAxisAngleFromRotationMatrix (proshade_double *rotMat, proshade_double *x, proshade_double *y, proshade_double *z, proshade_double *ang)
| This function converts rotation matrix to the axis-angle representation. More...
void | ProSHADE_internal_maths::getAxisAngleFromRotationMatrix (std::vector< proshade_double > *rotMat, proshade_double *x, proshade_double *y, proshade_double *z, proshade_double *ang)
| This function converts rotation matrix to the axis-angle representation. More...
void | ProSHADE_internal_maths::getRotationMatrixFromAngleAxis (proshade_double *rotMat, proshade_double x, proshade_double y, proshade_double z, proshade_double ang)
| This function converts the axis-angle representation to the rotation matrix representation. More...
void | ProSHADE_internal_maths::getEulerZXZFromRotMatrix (proshade_double *rotMat, proshade_double *eA, proshade_double *eB, proshade_double *eG)
| This function converts rotation matrix to the Euler ZXZ angles representation. More...
void | ProSHADE_internal_maths::getEulerZXZFromAngleAxis (proshade_double axX, proshade_double axY, proshade_double axZ, proshade_double axAng, proshade_double *eA, proshade_double *eB, proshade_double *eG, proshade_unsign angDim)
| This function converts angle-axis representation to the Euler ZXZ angles representation. More...
void | ProSHADE_internal_maths::getEulerZXZFromAngleAxisFullSearch (proshade_double axX, proshade_double axY, proshade_double axZ, proshade_double axAng, proshade_double *eA, proshade_double *eB, proshade_double *eG, proshade_signed angDim)
| This function converts angle-axis representation to the Euler ZXZ angles representation using full search. More...
void | ProSHADE_internal_maths::multiplyTwoSquareMatrices (proshade_double *A, proshade_double *B, proshade_double *res, proshade_unsign dim=3)
| Function to compute matrix multiplication. More...
std::vector< proshade_signed > | ProSHADE_internal_maths::primeFactorsDecomp (proshade_signed number)
| Function to find prime factors of an integer. More...
proshade_double | ProSHADE_internal_maths::normalDistributionValue (proshade_double mean, proshade_double standardDev, proshade_double value)
| Function to the heiht of normal distribution given by mean and standard deviation for a given value. More...
proshade_double | ProSHADE_internal_maths::computeDotProduct (proshade_double *x1, proshade_double *y1, proshade_double *z1, proshade_double *x2, proshade_double *y2, proshade_double *z2)
| Simple 3D vector dot product computation. More...
proshade_double | ProSHADE_internal_maths::computeDotProduct (proshade_double x1, proshade_double y1, proshade_double z1, proshade_double x2, proshade_double y2, proshade_double z2)
| Simple 3D vector dot product computation. More...
proshade_double * | ProSHADE_internal_maths::computeCrossProduct (proshade_double *x1, proshade_double *y1, proshade_double *z1, proshade_double *x2, proshade_double *y2, proshade_double *z2)
| Simple 3D vector cross product computation. More...
proshade_double * | ProSHADE_internal_maths::compute3x3MatrixMultiplication (proshade_double *mat1, proshade_double *mat2)
| Function for computing a 3x3 matrix multiplication. More...
proshade_double * | ProSHADE_internal_maths::compute3x3MatrixVectorMultiplication (proshade_double *mat, proshade_double x, proshade_double y, proshade_double z)
| Function for computing a 3x3 matrix to 3x1 vector multiplication. More...
proshade_double * | ProSHADE_internal_maths::compute3x3MatrixInverse (proshade_double *mat)
| Function for computing a 3x3 matrix inverse. More...
void | ProSHADE_internal_maths::transpose3x3MatrixInPlace (proshade_double *mat)
| Transposes 3x3 matrix in place. More...
proshade_double * | ProSHADE_internal_maths::findRotMatMatchingVectors (proshade_double x1, proshade_double y1, proshade_double z1, proshade_double x2, proshade_double y2, proshade_double z2)
| Computation of rotation matrix rotating one vector onto the other. More...
std::vector< proshade_double > | ProSHADE_internal_maths::findVectorFromTwoVAndTwoD (proshade_double x1, proshade_double y1, proshade_double z1, proshade_double x2, proshade_double y2, proshade_double z2, proshade_double dot1, proshade_double dot2)
| Function for finding a vector which would have a given two dot products to two other vectors. More...
std::vector< proshade_double > | ProSHADE_internal_maths::findVectorFromThreeVAndThreeD (proshade_double x1, proshade_double y1, proshade_double z1, proshade_double x2, proshade_double y2, proshade_double z2, proshade_double x3, proshade_double y3, proshade_double z3, proshade_double dot1, proshade_double dot2, proshade_double dot3)
| Function for finding a vector which would have a given three dot products to three other vectors. More...
std::vector< proshade_double > | ProSHADE_internal_maths::multiplyGroupElementMatrices (std::vector< proshade_double > *el1, std::vector< proshade_double > *el2)
| This function computes matrix multiplication using the ProSHADE group element matrix format as input and output. More...
bool | ProSHADE_internal_maths::rotationMatrixSimilarity (std::vector< proshade_double > *mat1, std::vector< proshade_double > *mat2, proshade_double tolerance=0.1)
| This function compares the distance between two rotation matrices and decides if they are similar using tolerance. More...
bool | ProSHADE_internal_maths::vectorOrientationSimilarity (proshade_double a1, proshade_double a2, proshade_double a3, proshade_double b1, proshade_double b2, proshade_double b3, proshade_double tolerance=0.1)
| This function compares two vectors using cosine distance and decides if they are similar using tolerance. More...
bool | ProSHADE_internal_maths::vectorOrientationSimilaritySameDirection (proshade_double a1, proshade_double a2, proshade_double a3, proshade_double b1, proshade_double b2, proshade_double b3, proshade_double tolerance=0.1)
| This function compares two vectors using cosine distance and decides if they are similar using tolerance. More...
void | ProSHADE_internal_maths::optimiseAxisBiCubicInterpolation (proshade_double *bestLattitude, proshade_double *bestLongitude, proshade_double *bestSum, std::vector< proshade_unsign > *sphereList, std::vector< ProSHADE_internal_spheres::ProSHADE_rotFun_sphere * > *sphereMappedRotFun, proshade_double step=0.05)
| This function provides axis optimisation given starting lattitude and longitude indices. More...
void | ProSHADE_internal_maths::prepareBiCubicInterpolatorsMinusMinus (proshade_double bestLattitude, proshade_double bestLongitude, std::vector< proshade_unsign > *sphereList, std::vector< ProSHADE_internal_maths::BicubicInterpolator * > *interpols, std::vector< ProSHADE_internal_spheres::ProSHADE_rotFun_sphere * > *sphereMappedRotFun)
| This function prepares the interpolation objects for the bi-cubic interpolation. More...
void | ProSHADE_internal_maths::prepareBiCubicInterpolatorsMinusPlus (proshade_double bestLattitude, proshade_double bestLongitude, std::vector< proshade_unsign > *sphereList, std::vector< ProSHADE_internal_maths::BicubicInterpolator * > *interpols, std::vector< ProSHADE_internal_spheres::ProSHADE_rotFun_sphere * > *sphereMappedRotFun)
| This function prepares the interpolation objects for the bi-cubic interpolation. More...
void | ProSHADE_internal_maths::prepareBiCubicInterpolatorsPlusMinus (proshade_double bestLattitude, proshade_double bestLongitude, std::vector< proshade_unsign > *sphereList, std::vector< ProSHADE_internal_maths::BicubicInterpolator * > *interpols, std::vector< ProSHADE_internal_spheres::ProSHADE_rotFun_sphere * > *sphereMappedRotFun)
| This function prepares the interpolation objects for the bi-cubic interpolation. More...
void | ProSHADE_internal_maths::prepareBiCubicInterpolatorsPlusPlus (proshade_double bestLattitude, proshade_double bestLongitude, std::vector< proshade_unsign > *sphereList, std::vector< ProSHADE_internal_maths::BicubicInterpolator * > *interpols, std::vector< ProSHADE_internal_spheres::ProSHADE_rotFun_sphere * > *sphereMappedRotFun)
| This function prepares the interpolation objects for the bi-cubic interpolation. More...
bool | ProSHADE_internal_maths::isAxisUnique (std::vector< proshade_double * > *CSymList, proshade_double *axis, proshade_double tolerance=0.1, bool improve=false)
| This function checks if new axis is unique, or already detected. More...
bool | ProSHADE_internal_maths::isAxisUnique (std::vector< proshade_double * > *CSymList, proshade_double X, proshade_double Y, proshade_double Z, proshade_double fold, proshade_double tolerance)
| This function checks if new axis is unique, or already detected. More...
std::vector< proshade_unsign > | ProSHADE_internal_maths::findAllPrimes (proshade_unsign upTo)
| This function finds all prime numbers up to the supplied limit. More...

## Detailed Description

This header file declares all the functions required for computing various information from the ProSHADE data.

This header file declares the ProSHADE_internal_maths namespace, which groups all the functions required to computed various information from the specific ProSHADE data and its organisation. The functionalities available here include complex number computations, rotation representation conversions as well as Gauss-Legendre integration or Taylor series approximation.

Copyright by Michal Tykac and individual contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of Michal Tykac nor the names of this code's contributors may be used to endorse or promote products derived from this software without specific prior written permission.

This software is provided by the copyright holder and contributors "as is" and any express or implied warranties, including, but not limitted to, the implied warranties of merchantibility and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or the contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limitted to, procurement of substitute goods or services, loss of use, data or profits, or business interuption) however caused and on any theory of liability, whether in contract, strict liability or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

Author
  Michal Tykac
  Garib N. Murshudov

Version
  0.7.5.4

Date
  MAR 2021

Definition in file ProSHADE_maths.hpp.