 |
ProSHADE
0.7.6.2 (DEC 2021)
Protein Shape Detection
|
This namespace contains the main driving functions for each task.
More...
|
void | MapManipulationTask (ProSHADE_settings *settings, std::vector< proshade_signed * > *originalBounds, std::vector< proshade_signed * > *reboxedBounds, std::vector< proshade_double * > *manipulatedMaps) |
| The re-boxing task driver function. More...
|
|
void | DistancesComputationTask (ProSHADE_settings *settings, std::vector< proshade_double > *enLevs, std::vector< proshade_double > *trSigm, std::vector< proshade_double > *rotFun) |
| The distances computation task driver function. More...
|
|
void | SymmetryDetectionTask (ProSHADE_settings *settings, std::vector< proshade_double * > *axes, std::vector< std::vector< proshade_double > > *allCs, std::vector< proshade_double > *mapCOMShift) |
| The symmetry detection task driver function. More...
|
|
void | MapOverlayTask (ProSHADE_settings *settings, std::vector< proshade_double > *rotationCentre, std::vector< proshade_double > *eulerAngles, std::vector< proshade_double > *finalTranslation) |
| The symmetry detection task driver function. More...
|
|
void | SymmetryCentreDetectionTask (ProSHADE_settings *settings, std::vector< std::vector< proshade_double > > *allCs, std::vector< proshade_double * > *axes, proshade_unsign strIndex=0) |
| The task for finding the structure centre based on phase-less symmetry detection. More...
|
|
void | ReportDistancesResults (ProSHADE_settings *settings, std::string str1, std::string str2, proshade_double enLevDist, proshade_double trSigmDist, proshade_double rotFunDist) |
| Simple function for reporting the distances computation results. More...
|
|
void | checkMapManipulationSettings (ProSHADE_settings *settings) |
| The re-boxing settings checks. More...
|
|
void | checkDistancesSettings (ProSHADE_settings *settings) |
| The distances computation settings checks. More...
|
|
void | checkSymmetrySettings (ProSHADE_settings *settings) |
| The symmetry computation settings checks. More...
|
|
void | checkOverlaySettings (ProSHADE_settings *settings) |
| The map overlay computation settings checks. More...
|
|
This namespace contains the main driving functions for each task.
The ProSHADE_internal_tasks namespace contains the driving functions for all the tasks that can be accomplished by the ProSHADE tool. The user should not need to access this namespace when using the library.
◆ checkDistancesSettings()
The distances computation settings checks.
This function is called to check the settings object for having all the required information for the distances computation task to proceed.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how distances computation should be done. |
Definition at line 258 of file ProSHADE_tasks.cpp.
263 throw ProSHADE_exception (
"There are not enough structures for distance computation.",
"ED00012", __FILE__, __LINE__, __func__,
"There needs to be at least two structures between which\n : distances are computed. The ProSHADE_settings object\n : contains less than two structures and therefore cannot\n : proceed. Please supply at least two structures by\n : repeatedly using the addStructure() function." );
267 const FloatingPoint< proshade_single > lhs ( settings->
requestedResolution ), rhs ( -1.0f );
268 if ( lhs.AlmostEquals ( rhs ) )
270 throw ProSHADE_exception (
"Resolution value not set.",
"ED00013", __FILE__, __LINE__, __func__,
"The resolution value was not set. Please set the\n : resolution value for the distance computation by using\n : the setResolution() function." );
◆ checkMapManipulationSettings()
void ProSHADE_internal_tasks::checkMapManipulationSettings |
( |
ProSHADE_settings * |
settings | ) |
|
The re-boxing settings checks.
This function is called to check the settings object for having all the required information for the Re-Boxing task to proceed.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how re-boxing should be done. |
Definition at line 106 of file ProSHADE_tasks.cpp.
111 throw ProSHADE_exception (
"There is no input structure for map manipulation.",
"EB00002", __FILE__, __LINE__, __func__,
"The ProSHADE_settings object does not contain any\n : structure that could be manipulated. Please supply exactly\n : one structure using the addStructure() function." );
117 ProSHADE_internal_messages::printWarningMessage ( settings->
verbose,
"!!! ProSHADE WARNING !!! The input file is not of the MAP (MRC) format. Will output re-boxed map, but beware that this is simple PDB->MAP conversion and REFMAC5 should be used to compute more appropriate maps.",
"WB00004" );
122 throw ProSHADE_exception (
"No resolution given for PDB file re-boxing.",
"EB00011", __FILE__, __LINE__, __func__,
"The ProSHADE_settings object does not contain any\n : resolution value. However, resolution is required when\n : re-boxing structures read from PDB files. Please supply\n : the resolution value using the setResolution() function." );
129 throw ProSHADE_exception (
"No output file name.",
"EB00016", __FILE__, __LINE__, __func__,
"There is no output file name set in the settings object.\n : Please supply the file name to where the re-boxed map\n : should be saved using the setOutputFilename() function." );
◆ checkOverlaySettings()
The map overlay computation settings checks.
This function is called to check the settings object for having all the required information for the map overlay task to proceed.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how map overlay should be done. |
Definition at line 673 of file ProSHADE_tasks.cpp.
678 throw ProSHADE_exception (
"There are not enough structures for map overlay\n : computation.",
"EO00033", __FILE__, __LINE__, __func__,
"There needs to be exactly two structures for map overlay\n : mode to work; the first structure is the static and the\n : second is the moving structure." );
◆ checkSymmetrySettings()
The symmetry computation settings checks.
This function is called to check the settings object for having all the required information for the symmetry computation task to proceed.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how symmetry detection should be done. |
Definition at line 580 of file ProSHADE_tasks.cpp.
585 throw ProSHADE_exception (
"There are not enough structures for symmetry detection.",
"ES00028", __FILE__, __LINE__, __func__,
"There needs to be at least one structure for which\n : symmetry is to be detected. Please supply at least one\n : structure by using the addStructure() function." );
591 throw ProSHADE_exception (
"Symmetry axis detection tolerance set to negative value.",
"ES00053", __FILE__, __LINE__, __func__,
"The symmetry axis detection tolerance was manually set to\n : negative value. This makes no sense, please supply\n : value >= 0.0." );
◆ DistancesComputationTask()
void ProSHADE_internal_tasks::DistancesComputationTask |
( |
ProSHADE_settings * |
settings, |
|
|
std::vector< proshade_double > * |
enLevs, |
|
|
std::vector< proshade_double > * |
trSigm, |
|
|
std::vector< proshade_double > * |
rotFun |
|
) |
| |
The distances computation task driver function.
This function is called to proceed with the distances computation task according to the information placed in the settings object passed as the first argument.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how distances computation should be done. |
[in] | enLevs | Pointer to vector where all energy levels distances are to be saved into. |
[in] | trSigm | Pointer to vector where all trace sigma distances are to be saved into. |
[in] | rotFun | Pointer to vector where all rotation function distances are to be saved into. |
Definition at line 147 of file ProSHADE_tasks.cpp.
168 for ( proshade_unsign iter = 1; iter < static_cast<proshade_unsign> ( settings->
inputFiles.size() ); iter++ )
186 proshade_double enLevDist = 0.0;
190 proshade_double trSigmDist = 0.0;
194 proshade_double rotFunDist = 0.0;
207 delete compareChanging;
212 delete compareAgainst;
◆ MapManipulationTask()
void ProSHADE_internal_tasks::MapManipulationTask |
( |
ProSHADE_settings * |
settings, |
|
|
std::vector< proshade_signed * > * |
originalBounds, |
|
|
std::vector< proshade_signed * > * |
reboxedBounds, |
|
|
std::vector< proshade_double * > * |
manipulatedMaps |
|
) |
| |
The re-boxing task driver function.
This function is called to proceed with the map re-boxing task according to the information placed in the settings object passed as the first argument.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how re-boxing should be done. |
[in] | originalBounds | Vector to which the original map boundaries of each re-boxed map will be saved into. |
[in] | reboxedBounds | Vector to which the re-boxed map boundaries of each re-boxed map will be saved into. |
[in] | manipulatedMaps | Vector to which the map values of each re-boxed map will be saved into. |
Definition at line 35 of file ProSHADE_tasks.cpp.
41 for ( proshade_unsign iter = 0; iter < static_cast<proshade_unsign> ( settings->
inputFiles.size() ); iter++ )
62 proshade_signed* nonZeroBounds =
new proshade_signed[6];
69 delete[] nonZeroBounds;
74 ss << settings->
outName <<
"_" << iter <<
".map";
77 else { strToRebox->
writeMap ( ss.str() ); }
85 proshade_double* mapCopy =
nullptr;
◆ MapOverlayTask()
void ProSHADE_internal_tasks::MapOverlayTask |
( |
ProSHADE_settings * |
settings, |
|
|
std::vector< proshade_double > * |
rotationCentre, |
|
|
std::vector< proshade_double > * |
eulerAngles, |
|
|
std::vector< proshade_double > * |
finalTranslation |
|
) |
| |
The symmetry detection task driver function.
This function is called to run the detect symmetries task according to the information placed in the settings object passed as the first argument.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how distances computation should be done. |
[in] | rotationCentre | Pointer to vector for saving the position of the centre of rotation about which the rotation is to be done. |
[in] | eulerAngles | Pointer to vector where the three Euler angles will be saved into. |
[in] | finalTranslation | Pointer to a vector where the translation required to move structure from origin to optimal overlay with static structure will be saved into. |
Definition at line 609 of file ProSHADE_tasks.cpp.
615 proshade_double eulA, eulB, eulG, trsX, trsY, trsZ;
626 delete staticStructure;
627 delete movingStructure;
647 movingStructure->
writeOutOverlayFiles ( settings, eulA, eulB, eulG, rotationCentre, finalTranslation );
655 movingStructure->
reportOverlayResults ( settings, rotationCentre, eulerAngles, finalTranslation );
658 delete staticStructure;
659 delete movingStructure;
◆ ReportDistancesResults()
void ProSHADE_internal_tasks::ReportDistancesResults |
( |
ProSHADE_settings * |
settings, |
|
|
std::string |
str1, |
|
|
std::string |
str2, |
|
|
proshade_double |
enLevDist, |
|
|
proshade_double |
trSigmDist, |
|
|
proshade_double |
rotFunDist |
|
) |
| |
Simple function for reporting the distances computation results.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how distances computation should be done. |
[in] | str1 | The name of the structure to which all other structures are to be compared to. |
[in] | str2 | The name of the structure which is compared to str1. |
[in] | enLevDist | The value of the energy levels descriptor for the two structures. |
[in] | trSimDist | The value of the trace sigma descriptor for the two structures. |
[in] | rotFunDist | The value of the roation function descriptor for the two structures. |
Definition at line 228 of file ProSHADE_tasks.cpp.
230 std::stringstream hlpSS;
231 hlpSS <<
"Distances between " << str1 <<
" and " << str2;
234 std::stringstream hlpSSE;
235 hlpSSE <<
"Energy levels distance : " << enLevDist;
238 std::stringstream hlpSSS;
239 hlpSSS <<
"Trace sigma distance : " << trSigmDist;
242 std::stringstream hlpSSR;
243 hlpSSR <<
"Rotation function distance: " << rotFunDist;
◆ SymmetryCentreDetectionTask()
void ProSHADE_internal_tasks::SymmetryCentreDetectionTask |
( |
ProSHADE_settings * |
settings, |
|
|
std::vector< std::vector< proshade_double > > * |
allCs, |
|
|
std::vector< proshade_double * > * |
axes, |
|
|
proshade_unsign |
strIndex = 0 |
|
) |
| |
The task for finding the structure centre based on phase-less symmetry detection.
This function is called to compute the symmetry of the phase-less map so that (in case there is any) it could then find the centre of rotation and thus the centre of the structure.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how symmetry centre detection should be done. |
[in] | strIndex | The index of the structure to be read from the structure list available in the settings object. |
Definition at line 366 of file ProSHADE_tasks.cpp.
391 if ( relSym.size() == 0 )
394 settings->
centrePosition.at(0) = std::numeric_limits< proshade_double >::infinity();
395 settings->
centrePosition.at(1) = std::numeric_limits< proshade_double >::infinity();
396 settings->
centrePosition.at(2) = std::numeric_limits< proshade_double >::infinity();
401 if ( relSym.size() == 2 )
414 fftw_complex *origMap =
nullptr, *origCoeffs =
nullptr, *rotMapComplex =
nullptr, *rotCoeffs =
nullptr, *trFunc =
nullptr, *trFuncCoeffs =
nullptr;
415 fftw_plan planForwardFourier, planForwardFourierRot, planReverseFourierComb;
416 ProSHADE_internal_symmetry::allocateCentreOfMapFourierTransforms ( symStr->
getXDim(), symStr->
getYDim(), symStr->
getZDim(), origMap, origCoeffs, rotMapComplex, rotCoeffs, trFunc, trFuncCoeffs, &planForwardFourier, &planForwardFourierRot, &planReverseFourierComb );
419 for (
size_t it = 0; it < static_cast< size_t > ( symStr->
getXDim() * symStr->
getYDim() * symStr->
getZDim() ); it++ ) { origMap[it][0] = symStr->
getMapValue( it ); origMap[it][1] = 0.0; }
420 fftw_execute ( planForwardFourier );
437 if ( relSym.size() == 1 )
440 proshade_double xMapCOM = 0.0, yMapCOM = 0.0, zMapCOM = 0.0;
441 std::vector< proshade_unsign > axLst;
442 std::vector< std::vector< proshade_double > > symElems;
449 origCoeffs, rotMapComplex,
450 rotCoeffs, planForwardFourierRot,
451 trFuncCoeffs, trFunc,
452 planReverseFourierComb );
455 ProSHADE_internal_mapManip::findMAPCOMValues ( symStr->
internalMap, &xMapCOM, &yMapCOM, &zMapCOM, symStr->
xDimSize, symStr->
yDimSize, symStr->
zDimSize, symStr->
xFrom, symStr->
xTo, symStr->
yFrom, symStr->
yTo, symStr->
zFrom, symStr->
zTo );
458 proshade_double xBoxCentre = ( ( symStr->
xTo - symStr->
xFrom ) / 2 ) + symStr->
xFrom;
459 proshade_double yBoxCentre = ( ( symStr->
yTo - symStr->
yFrom ) / 2 ) + symStr->
yFrom;
460 proshade_double zBoxCentre = ( ( symStr->
zTo - symStr->
zFrom ) / 2 ) + symStr->
zFrom;
463 proshade_double xCOMFromBoxCen = xBoxCentre - ( xMapCOM /
static_cast< proshade_double
> ( symStr->
xDimSize / symStr->
xDimIndices ) );
464 proshade_double yCOMFromBoxCen = yBoxCentre - ( yMapCOM /
static_cast< proshade_double
> ( symStr->
yDimSize / symStr->
yDimIndices ) );
465 proshade_double zCOMFromBoxCen = zBoxCentre - ( zMapCOM /
static_cast< proshade_double
> ( symStr->
zDimSize / symStr->
zDimIndices ) );
469 pointPos.at(1) - yCOMFromBoxCen,
470 pointPos.at(2) - zCOMFromBoxCen,
471 allCs->at(relSym.at(0))[1],
472 allCs->at(relSym.at(0))[2],
473 allCs->at(relSym.at(0))[3] ) /
475 allCs->at(relSym.at(0))[2],
476 allCs->at(relSym.at(0))[3],
477 allCs->at(relSym.at(0))[1],
478 allCs->at(relSym.at(0))[2],
479 allCs->at(relSym.at(0))[3] );
482 settings->
centrePosition.at(0) = pointPos.at(0) + ( alpha1 * allCs->at(relSym.at(0))[1] );
483 settings->
centrePosition.at(1) = pointPos.at(1) + ( alpha1 * allCs->at(relSym.at(0))[2] );
484 settings->
centrePosition.at(2) = pointPos.at(2) + ( alpha1 * allCs->at(relSym.at(0))[3] );
490 std::vector< proshade_unsign > axLst;
491 std::vector< std::vector< proshade_double > > symElems;
498 origCoeffs, rotMapComplex,
499 rotCoeffs, planForwardFourierRot,
500 trFuncCoeffs, trFunc,
501 planReverseFourierComb );
504 axLst.at(0) =
static_cast< proshade_unsign
> ( relSym.at(1) );
508 origCoeffs, rotMapComplex,
509 rotCoeffs, planForwardFourierRot,
510 trFuncCoeffs, trFunc,
511 planReverseFourierComb );
515 allCs->at(relSym.at(1))[1], allCs->at(relSym.at(1))[2], allCs->at(relSym.at(1))[3] );
518 tangentToAxes[0], tangentToAxes[1], tangentToAxes[2] );
521 tangentToAxes[0], tangentToAxes[1], tangentToAxes[2] );
525 point2Pos.at(1) - point1Pos.at(1),
526 point2Pos.at(2) - point1Pos.at(2),
527 correctedFirstAxis[0], correctedFirstAxis[1], correctedFirstAxis[2] ) /
529 correctedFirstAxis[0], correctedFirstAxis[1], correctedFirstAxis[2] );
531 point1Pos.at(1) - point2Pos.at(1),
532 point1Pos.at(2) - point2Pos.at(2),
533 correctedSecondAxis[0], correctedSecondAxis[1], correctedSecondAxis[2] ) /
535 correctedSecondAxis[0], correctedSecondAxis[1], correctedSecondAxis[2] );
538 settings->
centrePosition.at(0) = ( ( point1Pos.at(0) + ( alpha1 * allCs->at(relSym.at(0))[1] ) ) + ( point2Pos.at(0) + ( alpha2 * allCs->at(relSym.at(1))[1] ) ) ) / 2.0;
539 settings->
centrePosition.at(1) = ( ( point1Pos.at(1) + ( alpha1 * allCs->at(relSym.at(0))[2] ) ) + ( point2Pos.at(1) + ( alpha2 * allCs->at(relSym.at(1))[2] ) ) ) / 2.0;
540 settings->
centrePosition.at(2) = ( ( point1Pos.at(2) + ( alpha1 * allCs->at(relSym.at(0))[3] ) ) + ( point2Pos.at(2) + ( alpha2 * allCs->at(relSym.at(1))[3] ) ) ) / 2.0;
543 delete[] tangentToAxes;
544 delete[] correctedSecondAxis;
545 delete[] correctedFirstAxis;
◆ SymmetryDetectionTask()
void ProSHADE_internal_tasks::SymmetryDetectionTask |
( |
ProSHADE_settings * |
settings, |
|
|
std::vector< proshade_double * > * |
axes, |
|
|
std::vector< std::vector< proshade_double > > * |
allCs, |
|
|
std::vector< proshade_double > * |
mapCOMShift |
|
) |
| |
The symmetry detection task driver function.
This function is called to run the detect symmetries task according to the information placed in the settings object passed as the first argument.
- Parameters
-
[in] | settings | ProSHADE_settings object specifying the details of how distances computation should be done. |
[in] | axes | A pointer to a vector to which all the axes of the recommended symmetry (if any) will be saved. |
[in] | allCs | A pointer to a vector to which all the detected cyclic symmetries will be saved into. |
[in] | mapCOMShift | A pointer to a vector containing the distance from the centre of the map to the point about which the symmetry detection was done. |
Definition at line 288 of file ProSHADE_tasks.cpp.
294 for ( proshade_unsign iter = 0; iter < static_cast<proshade_unsign> ( settings->
inputFiles.size() ); iter++ )
321 std::stringstream ss;
350 delete symmetryStructure;
void computeSphericalHarmonics(ProSHADE_settings *settings)
This function computes the spherical harmonics decomposition for the whole structure.
proshade_signed zFrom
This is the starting index along the z axis.
proshade_unsign xDimIndices
This is the size of the map cell x dimension in indices.
bool computeTraceSigmaDesc
If true, the trace sigma descriptor will be computed, otherwise all its computations will be omitted.
bool findSymCentre
Should phase-less map be used to determine centre of symmetry?
bool computeRotationFuncDesc
If true, the rotation function descriptor will be computed, otherwise all its computations will be om...
void addToDblPtrVector(std::vector< proshade_double * > *vecToAddTo, proshade_double *elementToAdd)
Adds the element to the vector.
void createNewMapFromBounds(ProSHADE_settings *settings, ProSHADE_data *&newStr, proshade_signed *newBounds)
This function creates a new structure from the calling structure and new bounds values.
bool isFilePDB(std::string fName)
Function determining if the input data type is PDB.
void computeRotationFunction(ProSHADE_settings *settings)
This function computes the self-rotation function for this structure.
void getReBoxBoundaries(ProSHADE_settings *settings, proshade_signed *&ret)
This function finds the boundaries enclosing positive map values and adds some extra space.
proshade_double * 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.
void checkDistancesSettings(ProSHADE_settings *settings)
The distances computation settings checks.
std::vector< proshade_unsign > findReliableUnphasedSymmetries(std::vector< std::vector< proshade_double > > *allCs, proshade_signed verbose, proshade_signed messageShift, proshade_double tolerance)
This function checks the list of detected axes (presumably from phaseless symmetry detection) and ret...
This class is the representation of ProSHADE exception.
std::string outName
The file name where the output structure(s) should be saved.
std::vector< proshade_double > findPointFromTranslations(ProSHADE_internal_data::ProSHADE_data *symStr, std::vector< std::vector< proshade_double > > symElems, fftw_complex *origCoeffs, fftw_complex *rotMapComplex, fftw_complex *rotCoeffs, fftw_plan planForwardFourierRot, fftw_complex *trFuncCoeffs, fftw_complex *trFunc, fftw_plan planReverseFourierComb)
This function computes the average of optimal translations for a cyclic point group.
std::string requestedSymmetryType
The symmetry type requested by the user. Allowed values are C, D, T, O and I.
void allocateCentreOfMapFourierTransforms(proshade_unsign xDim, proshade_unsign yDim, proshade_unsign zDim, fftw_complex *&origMap, fftw_complex *&origCoeffs, fftw_complex *&rotMapComplex, fftw_complex *&rotCoeffs, fftw_complex *&trFunc, fftw_complex *&trFuncCoeffs, fftw_plan *planForwardFourier, fftw_plan *planForwardFourierRot, fftw_plan *planReverseFourierComb)
This function allocates the required memory for the Fourier transforms required to find the centre of...
proshade_double computeRotationFunctionDescriptor(ProSHADE_internal_data::ProSHADE_data *obj1, ProSHADE_internal_data::ProSHADE_data *obj2, ProSHADE_settings *settings)
This function computes the rotation function descriptor value between two objects.
This class contains all inputed and derived data for a single structure.
proshade_single zDimSize
This is the size of the map cell z dimension in Angstroms.
proshade_single requestedResolution
The resolution to which the calculations are to be done.
proshade_double mapCOMProcessChangeX
The change in X axis between the creation of the structure (originalMapXCom) and just before rotation...
void findMAPCOMValues(proshade_double *map, proshade_double *xCom, proshade_double *yCom, proshade_double *zCom, proshade_single xAngs, proshade_single yAngs, proshade_single zAngs, proshade_signed xFrom, proshade_signed xTo, proshade_signed yFrom, proshade_signed yTo, proshade_signed zFrom, proshade_signed zTo)
This function finds the Centre of Mass for a map.
proshade_double originalPdbRotCenY
The centre of rotation as it relates to the original PDB positions (and not the ProSHADE internal map...
void checkOverlaySettings(ProSHADE_settings *settings)
The map overlay computation settings checks.
proshade_double mapCOMProcessChangeZ
The change in Z axis between the creation of the structure (originalMapZCom) and just before rotation...
bool usePhase
If true, the full data will be used, if false, Patterson maps will be used instead and phased data wi...
void getOptimalRotation(ProSHADE_settings *settings, ProSHADE_internal_data::ProSHADE_data *staticStructure, ProSHADE_internal_data::ProSHADE_data *movingStructure, proshade_double *eulA, proshade_double *eulB, proshade_double *eulG)
This function finds the optimal rotation between two structures as described by the settings object.
void optimiseDGroupAngleFromAxesHeights(std::vector< std::vector< proshade_double > > *ret, ProSHADE_internal_data::ProSHADE_data *dataObj, ProSHADE_settings *settings)
This function takes two axes with almost dihedral angle and optimises their relative positions as wel...
void printWarningMessage(proshade_signed verbose, std::string message, std::string warnCode)
General stderr message printing (used for warnings).
proshade_signed * getXFromPtr(void)
This function allows access to the map start along the X axis.
proshade_signed verbose
Should the software report on the progress, or just be quiet? Value between -1 (nothing) and 4 (loud)
proshade_unsign yDimIndices
This is the size of the map cell y dimension in indices.
void deepCopyMap(proshade_double *&saveTo, proshade_signed verbose)
This function copies the internal map into the supplied pointer, which it also allocates.
proshade_signed messageShift
This value allows shifting the messages to create more readable log for sub-processes.
void addToDoubleVector(std::vector< proshade_double > *vecToAddTo, proshade_double elementToAdd)
Adds the element to the vector.
proshade_unsign getXDim(void)
This function allows access to the map size in indices along the X axis.
proshade_double originalPdbTransX
The optimal translation vector as it relates to the original PDB positions (and not the ProSHADE inte...
proshade_signed zTo
This is the final index along the z axis.
void readInStructure(std::string fName, proshade_unsign inputO, ProSHADE_settings *settings, proshade_double *maskArr=nullptr, proshade_unsign maskXDim=0, proshade_unsign maskYDim=0, proshade_unsign maskZDim=0, proshade_double *weightsArr=nullptr, proshade_unsign weigXDim=0, proshade_unsign weigYDim=0, proshade_unsign weigZDim=0)
This function initialises the basic ProSHADE_data variables and reads in a single structure.
proshade_signed xTo
This is the final index along the x axis.
void mapToSpheres(ProSHADE_settings *settings)
This function converts the internal map onto a set of concentric spheres.
proshade_double originalPdbTransY
The optimal translation vector as it relates to the original PDB positions (and not the ProSHADE inte...
proshade_signed yTo
This is the final index along the y axis.
proshade_single xDimSize
This is the size of the map cell x dimension in Angstroms.
proshade_double 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.
proshade_double * internalMap
The internal map data representation, which may be amended as the run progresses.
void reportOverlayResults(ProSHADE_settings *settings, std::vector< proshade_double > *rotationCentre, std::vector< proshade_double > *eulerAngles, std::vector< proshade_double > *finalTranslation)
This function reports the results of the overlay mode.
proshade_signed xFrom
This is the starting index along the x axis.
void writeMap(std::string fName, std::string title="Created by ProSHADE and written by GEMMI", int mode=2)
Function for writing out the internal structure representation in MRC MAP format.
bool reBoxMap
This switch decides whether re-boxing is needed.
void getOptimalTranslation(ProSHADE_settings *settings, ProSHADE_internal_data::ProSHADE_data *staticStructure, ProSHADE_internal_data::ProSHADE_data *movingStructure, proshade_double *trsX, proshade_double *trsY, proshade_double *trsZ, proshade_double eulA, proshade_double eulB, proshade_double eulG)
This function finds the optimal translation between two structures as described by the settings objec...
proshade_single addExtraSpace
If this value is non-zero, this many angstroms of empty space will be added to the internal map.
proshade_unsign getYDim(void)
This function allows access to the map size in indices along the Y axis.
This class stores all the settings and is passed to the executive classes instead of a multitude of p...
proshade_double originalPdbTransZ
The optimal translation vector as it relates to the original PDB positions (and not the ProSHADE inte...
void writeOutOverlayFiles(ProSHADE_settings *settings, proshade_double eulA, proshade_double eulB, proshade_double eulG, std::vector< proshade_double > *rotCentre, std::vector< proshade_double > *ultimateTranslation)
This function writes out the rotated map, co-ordinates and transformation JSON file.
void SymmetryCentreDetectionTask(ProSHADE_settings *settings, std::vector< std::vector< proshade_double > > *allCs, std::vector< proshade_double * > *axes, proshade_unsign strIndex=0)
The task for finding the structure centre based on phase-less symmetry detection.
void processInternalMap(ProSHADE_settings *settings)
This function simply clusters several other functions which should be called together.
proshade_unsign getZDim(void)
This function allows access to the map size in indices along the Z axis.
std::vector< proshade_double > centrePosition
The position of the centre of the map in "real space" co-ordinates.
bool changeMapResolution
Should maps be re-sampled to obtain the required resolution?
proshade_double getMapValue(proshade_unsign pos)
This function returns the internal map representation value of a particular array position.
void releaseCentreOfMapFourierTransforms(fftw_complex *origMap, fftw_complex *origCoeffs, fftw_complex *rotMapComplex, fftw_complex *rotCoeffs, fftw_complex *trFunc, fftw_complex *trFuncCoeffs, fftw_plan planForwardFourier, fftw_plan planForwardFourierRot, fftw_plan planReverseFourierComb)
This function releases the allocated memory for the Fourier transforms used to find the centre of the...
void ReportDistancesResults(ProSHADE_settings *settings, std::string str1, std::string str2, proshade_double enLevDist, proshade_double trSigmDist, proshade_double rotFunDist)
Simple function for reporting the distances computation results.
proshade_double computeTraceSigmaDescriptor(ProSHADE_internal_data::ProSHADE_data *obj1, ProSHADE_internal_data::ProSHADE_data *obj2, ProSHADE_settings *settings)
This function computes the trace sigma descriptor value between two objects.
proshade_signed * getYToPtr(void)
This function allows access to the map last position along the Y axis.
bool moveToCOM
Logical value stating whether the structure should be moved to have its Centre Of Mass (COM) in the m...
proshade_signed * getXToPtr(void)
This function allows access to the map last position along the X axis.
proshade_signed * getYFromPtr(void)
This function allows access to the map start along the Y axis.
proshade_double mapCOMProcessChangeY
The change in Y axis between the creation of the structure (originalMapYCom) and just before rotation...
void reportSymmetryResults(ProSHADE_settings *settings)
This function takes prints the report for symmetry detection.
proshade_signed yFrom
This is the starting index along the y axis.
void addToUnsignVector(std::vector< proshade_unsign > *vecToAddTo, proshade_unsign elementToAdd)
Adds the element to the vector.
std::vector< std::string > inputFiles
This vector contains the filenames of all input structure files.
proshade_double computeEnergyLevelsDescriptor(ProSHADE_internal_data::ProSHADE_data *obj1, ProSHADE_internal_data::ProSHADE_data *obj2, ProSHADE_settings *settings)
This function computes the energy levels descriptor value between two objects.
void checkMapManipulationSettings(ProSHADE_settings *settings)
The re-boxing settings checks.
proshade_double originalPdbRotCenZ
The centre of rotation as it relates to the original PDB positions (and not the ProSHADE internal map...
proshade_double axisErrTolerance
Allowed error on vector axis in in dot product ( acos ( 1 - axErr ) is the allowed difference in radi...
void checkSymmetrySettings(ProSHADE_settings *settings)
The symmetry computation settings checks.
proshade_unsign zDimIndices
This is the size of the map cell z dimension in indices.
void detectSymmetryFromAngleAxisSpace(ProSHADE_settings *settings, std::vector< proshade_double * > *axes, std::vector< std::vector< proshade_double > > *allCs)
This function runs the symmetry detection algorithms on this structure using the angle-axis space and...
proshade_double originalPdbRotCenX
The centre of rotation as it relates to the original PDB positions (and not the ProSHADE internal map...
void printProgressMessage(proshade_signed verbose, proshade_signed messageLevel, std::string message, proshade_signed messageShift=0)
General stdout message printing.
proshade_single yDimSize
This is the size of the map cell y dimension in Angstroms.
std::vector< std::vector< proshade_double > > getAllGroupElements(ProSHADE_settings *settings, std::vector< proshade_unsign > axesList, std::string groupType="", proshade_double matrixTolerance=0.05)
This function returns the group elements as rotation matrices of any defined point group.
void deepCopyBoundsSigPtrVector(std::vector< proshade_signed * > *sigPtrVec, proshade_signed *xFrom, proshade_signed *xTo, proshade_signed *yFrom, proshade_signed *yTo, proshade_signed *zFrom, proshade_signed *zTo)
Does a deep copy of a signed int array to a vector of signed int arrays.
proshade_signed * getZFromPtr(void)
This function allows access to the map start along the Z axis.
proshade_signed * getZToPtr(void)
This function allows access to the map last position along the Z axis.
bool computeEnergyLevelsDesc
If true, the energy levels descriptor will be computed, otherwise all its computations will be omitte...