ProSHADE: ProSHADE_internal_misc Namespace Reference

| ProSHADE 0.7.5.4 (MAR 2021) Protein Shape Detection

Functions
ProSHADE_internal_misc Namespace Reference

This namespace contains all the miscellaneous functions used throughout the code but unrelated to it. More...

## Functions
void | addToStringVector (std::vector< std::string > *vecToAddTo, std::string elementToAdd)
| Adds the element to the vector. More...
void | addToSingleVector (std::vector< proshade_single > *vecToAddTo, proshade_single elementToAdd)
| Adds the element to the vector. More...
void | addToDoubleVector (std::vector< proshade_double > *vecToAddTo, proshade_double elementToAdd)
| Adds the element to the vector. More...
void | addToUnsignVector (std::vector< proshade_unsign > *vecToAddTo, proshade_unsign elementToAdd)
| Adds the element to the vector. More...
void | addToSignedVector (std::vector< proshade_signed > *vecToAddTo, proshade_signed elementToAdd)
| Adds the element to the vector. More...
void | addToDblPtrVector (std::vector< proshade_double * > *vecToAddTo, proshade_double *elementToAdd)
| Adds the element to the vector. More...
void | addToSigPtrVector (std::vector< proshade_signed * > *vecToAddTo, proshade_signed *elementToAdd)
| Adds the element to the vector. More...
void | addToUnsignVectorVector (std::vector< std::vector< proshade_unsign > > *vecToAddTo, std::vector< proshade_unsign > elementToAdd)
| Adds the element to the vector of vectors. More...
void | addToDoubleVectorVector (std::vector< std::vector< proshade_double > > *vecToAddTo, std::vector< proshade_double > elementToAdd)
| Adds the element to the vector of vectors. More...
bool | sortSymHlp (const proshade_double *a, const proshade_double *b)
| This function compares two arrays of two based on the fifth number, sorting lowest first. More...
bool | sortSymHlpInv (const proshade_double *a, const proshade_double *b)
| This function compares two arrays of two based on the fifth number, sorting highest first. More...
bool | sortDSymHlpInv (const proshade_double *a, const proshade_double *b)
| This function compares two arrays of the ProSHADE dihedral symmetry list based on combination of axes folds and heightst. More...
bool | sortSymInvFoldHlp (const proshade_double *a, const proshade_double *b)
| This function compares two arrays of two based on the first number, sorting highest first. More...
void | deepCopyAxisToDblPtrVector (std::vector< proshade_double * > *dblPtrVec, proshade_double *axis)
| Does a deep copy of a double array to a vector of double arrays. More...
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. More...
template<class chVar >
void | checkMemoryAllocation (chVar checkVar, std::string fileP, unsigned int lineP, std::string funcP, std::string infoP="This error may occurs when ProSHADE requests memory to be\n : allocated to it and this operation fails. This could\n : happen when not enough memory is available, either due to\n : other processes using a lot of memory, or when the machine\n : does not have sufficient memory available. Re-run to see\n : if this problem persists.")
| Checks if memory was allocated properly. More...

## Detailed Description

This namespace contains all the miscellaneous functions used throughout the code but unrelated to it.

The ProSHADE_internal_misc namespace contains all the functions which are useful, but not really related to shape description or data processing.

## Function Documentation

## ◆ addToDblPtrVector()

void ProSHADE_internal_misc::addToDblPtrVector | ( | std::vector< proshade_double * > * | vecToAddTo,
|  | proshade_double * | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of complex<double> and a single complex<double> element and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of complex<double>'s which should be elongated.
  [in] | elementToAdd | complex<double> to be added to the back of the vector.

Definition at line 143 of file ProSHADE_misc.cpp.

144 {
145 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
146 #if __cplusplus >= 201103L
147 vecToAddTo->emplace_back ( elementToAdd );
148 #else
149 vecToAddTo->push_back ( elementToAdd );
150 #endif
151
152 //================================================ Done
153 return ;
154
155 }

## ◆ addToDoubleVector()

void ProSHADE_internal_misc::addToDoubleVector | ( | std::vector< proshade_double > * | vecToAddTo,
|  | proshade_double | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of proshade_double and a single proshade_double element and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of proshade_double's which should be elongated.
  [in] | elementToAdd | proshade_double to be added to the back of the vector.

Definition at line 77 of file ProSHADE_misc.cpp.

78 {
79 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
80 #if __cplusplus >= 201103L
81 vecToAddTo->emplace_back ( elementToAdd );
82 #else
83 vecToAddTo->push_back ( elementToAdd );
84 #endif
85
86 //================================================ Done
87 return ;
88
89 }

## ◆ addToDoubleVectorVector()

void ProSHADE_internal_misc::addToDoubleVectorVector | ( | std::vector< std::vector< proshade_double > > * | vecToAddTo,
|  | std::vector< proshade_double > | elementToAdd
| ) |  |

Adds the element to the vector of vectors.

This function takes a pointer to a vector of vectors of doubles and a single vector of doubles and adds this element to the end of the vector of vectors. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of vectors of doubles which should be elongated.
  [in] | elementToAdd | vector of doubles to be added to the back of the vector.

Definition at line 210 of file ProSHADE_misc.cpp.

211 {
212 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
213 #if __cplusplus >= 201103L
214 vecToAddTo->emplace_back ( elementToAdd );
215 #else
216 vecToAddTo->push_back ( elementToAdd );
217 #endif
218
219 //================================================ Done
220 return ;
221
222 }

## ◆ addToSignedVector()

void ProSHADE_internal_misc::addToSignedVector | ( | std::vector< proshade_signed > * | vecToAddTo,
|  | proshade_signed | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of proshade_signed and a single proshade_signed element and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of proshade_signed's which should be elongated.
  [in] | elementToAdd | proshade_signed to be added to the back of the vector.

Definition at line 121 of file ProSHADE_misc.cpp.

122 {
123 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
124 #if __cplusplus >= 201103L
125 vecToAddTo->emplace_back ( elementToAdd );
126 #else
127 vecToAddTo->push_back ( elementToAdd );
128 #endif
129
130 //================================================ Done
131 return ;
132
133 }

## ◆ addToSigPtrVector()

void ProSHADE_internal_misc::addToSigPtrVector | ( | std::vector< proshade_signed * > * | vecToAddTo,
|  | proshade_signed * | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of proshade_signed pointers and a single proshade_signed pointer and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of complex<double>'s which should be elongated.
  [in] | elementToAdd | complex<double> to be added to the back of the vector.

Definition at line 166 of file ProSHADE_misc.cpp.

167 {
168 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
169 #if __cplusplus >= 201103L
170 vecToAddTo->emplace_back ( elementToAdd );
171 #else
172 vecToAddTo->push_back ( elementToAdd );
173 #endif
174
175 //================================================ Done
176 return ;
177
178 }

## ◆ addToSingleVector()

void ProSHADE_internal_misc::addToSingleVector | ( | std::vector< proshade_single > * | vecToAddTo,
|  | proshade_single | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of proshade_single and a single proshade_single element and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of proshade_single's which should be elongated.
  [in] | elementToAdd | proshade_single to be added to the back of the vector.

Definition at line 55 of file ProSHADE_misc.cpp.

56 {
57 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
58 #if __cplusplus >= 201103L
59 vecToAddTo->emplace_back ( elementToAdd );
60 #else
61 vecToAddTo->push_back ( elementToAdd );
62 #endif
63
64 //================================================ Done
65 return ;
66
67 }

## ◆ addToStringVector()

void ProSHADE_internal_misc::addToStringVector | ( | std::vector< std::string > * | vecToAddTo,
|  | std::string | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of strings and a single string element and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of strings which should be elongated.
  [in] | elementToAdd | String to be added to the back of the vector.

Definition at line 33 of file ProSHADE_misc.cpp.

34 {
35 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
36 #if __cplusplus >= 201103L
37 vecToAddTo->emplace_back ( elementToAdd );
38 #else
39 vecToAddTo->push_back ( elementToAdd );
40 #endif
41
42 //================================================ Done
43 return ;
44
45 }

## ◆ addToUnsignVector()

void ProSHADE_internal_misc::addToUnsignVector | ( | std::vector< proshade_unsign > * | vecToAddTo,
|  | proshade_unsign | elementToAdd
| ) |  |

Adds the element to the vector.

This function takes a pointer to a vector of proshade_unsign and a single proshade_unsign element and adds this element to the end of the vector. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of proshade_unsign's which should be elongated.
  [in] | elementToAdd | proshade_unsign to be added to the back of the vector.

Definition at line 99 of file ProSHADE_misc.cpp.

100 {
101 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
102 #if __cplusplus >= 201103L
103 vecToAddTo->emplace_back ( elementToAdd );
104 #else
105 vecToAddTo->push_back ( elementToAdd );
106 #endif
107
108 //================================================ Done
109 return ;
110
111 }

## ◆ addToUnsignVectorVector()

void ProSHADE_internal_misc::addToUnsignVectorVector | ( | std::vector< std::vector< proshade_unsign > > * | vecToAddTo,
|  | std::vector< proshade_unsign > | elementToAdd
| ) |  |

Adds the element to the vector of vectors.

This function takes a pointer to a vector of vectors of unsigns and a single vector of unsigns adds this element to the end of the vector of vectors. The reason for this function is to make vector elongation C++ standard independent (push_back vs. emplace_back)

Parameters

  [in] | vecToAddTo | Pointer to vector of vectors of unsigns which should be elongated.
  [in] | elementToAdd | vector of unsigns to be added to the back of the vector.

Definition at line 188 of file ProSHADE_misc.cpp.

189 {
190 //================================================ Based on the compiler C++11 support, use the correct vector addition function.
191 #if __cplusplus >= 201103L
192 vecToAddTo->emplace_back ( elementToAdd );
193 #else
194 vecToAddTo->push_back ( elementToAdd );
195 #endif
196
197 //================================================ Done
198 return ;
199
200 }

## ◆ checkMemoryAllocation()

template<class chVar >

void ProSHADE_internal_misc::checkMemoryAllocation | ( | chVar | checkVar,
|  | std::string | fileP,
|  | unsigned int | lineP,
|  | std::string | funcP,
|  | std::string | infoP = `"This error may occurs when ProSHADE requests memory to be\n : allocated to it and this operation fails. This could\n : happen when not enough memory is available, either due to\n : other processes using a lot of memory, or when the machine\n : does not have sufficient memory available. Re-run to see\n : if this problem persists."`
| ) |  |
| inline

Checks if memory was allocated properly.

This function checks if the memory allocation has suceeded for a given pointer, printing error message if not.

Parameters

  [in] | checkVar | Pointer to be checked.

Definition at line 65 of file ProSHADE_misc.hpp.

65 : allocated to it and this operation fails. This could\n : happen when not enough memory is available, either due to\n : other processes using a lot of memory, or when the machine\n : does not have sufficient memory available. Re-run to see\n : if this problem persists." )
66 {
67 //============================================ Check against NULL
68 if ( checkVar == NULL )
69 {
70 throw ProSHADE_exception ( "Failed to allocate memory.", "E000007", fileP, lineP, funcP, infoP );
71 }
72
73 //============================================ Done
74 return ;
75
76 }

## ◆ deepCopyAxisToDblPtrVector()

void ProSHADE_internal_misc::deepCopyAxisToDblPtrVector | ( | std::vector< proshade_double * > * | dblPtrVec,
|  | proshade_double * | axis
| ) |  |

Does a deep copy of a double array to a vector of double arrays.

This function deep copies a single symmetry axis ( proshade_double[6] ) into a vector of such arrays.

Parameters

  [in] | dblPtrVec | Pointer to vector of proshade_double arrays to which the second argument is to be deep copied.
  [in] | axis | The proshade_double array to be copied to the first argument.

Definition at line 287 of file ProSHADE_misc.cpp.

288 {
289 //================================================ Allocate new memory
290 proshade_double* symAx = new proshade_double[6];
291
292 //================================================ Check memory allocation
293 ProSHADE_internal_misc::checkMemoryAllocation ( symAx, __FILE__, __LINE__, __func__ );
294
295 //================================================ Copy the 6 values
296 symAx[0] = axis[0];
297 symAx[1] = axis[1];
298 symAx[2] = axis[2];
299 symAx[3] = axis[3];
300 symAx[4] = axis[4];
301 symAx[5] = axis[5];
302
303 //================================================ Save
304 ProSHADE_internal_misc::addToDblPtrVector ( dblPtrVec, symAx );
305
306 //================================================ Done
307 return ;
308
309 }

## ◆ deepCopyBoundsSigPtrVector()

void ProSHADE_internal_misc::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.

This function deep copies a single bounds array ( proshade_signed[6] ) into a vector of such arrays.

Parameters

  [in] | sigPtrVec | Pointer to vector of proshade_signed arrays to which the second argument is to be deep copied.
  [in] | xFrom | Pointer to the index value from which the x dimension start.
  [in] | xTo | Pointer to the index value to which the x dimensions runs.
  [in] | yFrom | Pointer to the index value from which the y dimension start.
  [in] | yTo | Pointer to the index value to which the y dimensions runs.
  [in] | zFrom | Pointer to the index value from which the z dimension start.
  [in] | zTo | Pointer to the index value to which the z dimensions runs.

Definition at line 323 of file ProSHADE_misc.cpp.

324 {
325 //================================================ Allocate new memory
326 proshade_signed* bounds = NULL;
327 bounds = new proshade_signed[6];
328
329 //================================================ Check memory allocation
330 ProSHADE_internal_misc::checkMemoryAllocation ( bounds, __FILE__, __LINE__, __func__ );
331
332 //================================================ Copy the 6 values
333 bounds[0] = *xFrom;
334 bounds[1] = *xTo;
335 bounds[2] = *yFrom;
336 bounds[3] = *yTo;
337 bounds[4] = *zFrom;
338 bounds[5] = *zTo;
339
340 //================================================ Save
341 ProSHADE_internal_misc::addToSigPtrVector ( sigPtrVec, bounds );
342
343 //================================================ Done
344 return ;
345
346 }

## ◆ sortDSymHlpInv()

bool ProSHADE_internal_misc::sortDSymHlpInv | ( | const proshade_double * | a,
|  | const proshade_double * | b
| ) |  |

This function compares two arrays of the ProSHADE dihedral symmetry list based on combination of axes folds and heightst.

Parameters

  [in] | a | The first array to compare.
  [in] | b | The second array to compare.
  [out] | X | Boolean whether the first is smaller than the second.

Definition at line 256 of file ProSHADE_misc.cpp.

257 {
258 //================================================ Get weighted averages
259 proshade_double aScore = ( ( a[0] * a[5] ) + ( a[6] * a[11] ) ) / ( a[0] + a[6] );
260 proshade_double bScore = ( ( b[0] * b[5] ) + ( b[6] * b[11] ) ) / ( b[0] + b[6] );
261
262 //================================================ Compare
263 return ( aScore > bScore );
264
265 }

## ◆ sortSymHlp()

bool ProSHADE_internal_misc::sortSymHlp | ( | const proshade_double * | a,
|  | const proshade_double * | b
| ) |  |

This function compares two arrays of two based on the fifth number, sorting lowest first.

Parameters

  [in] | a | The first array to compare.
  [in] | b | The second array to compare.
  [out] | X | Boolean whether the first is smaller than the second.

Definition at line 230 of file ProSHADE_misc.cpp.

231 {
232 //================================================ Compare
233 return ( a[5] < b[5] );
234
235 }

## ◆ sortSymHlpInv()

bool ProSHADE_internal_misc::sortSymHlpInv | ( | const proshade_double * | a,
|  | const proshade_double * | b
| ) |  |

This function compares two arrays of two based on the fifth number, sorting highest first.

Parameters

  [in] | a | The first array to compare.
  [in] | b | The second array to compare.
  [out] | X | Boolean whether the first is smaller than the second.

Definition at line 243 of file ProSHADE_misc.cpp.

244 {
245 //======================================== Compare
246 return ( a[5] > b[5] );
247
248 }

## ◆ sortSymInvFoldHlp()

bool ProSHADE_internal_misc::sortSymInvFoldHlp | ( | const proshade_double * | a,
|  | const proshade_double * | b
| ) |  |

This function compares two arrays of two based on the first number, sorting highest first.

Parameters

  [in] | a | The first array to compare.
  [in] | b | The second array to compare.
  [out] | X | Boolean whether the first is smaller than the second.

Definition at line 273 of file ProSHADE_misc.cpp.

274 {
275 //================================================ Compare
276 return ( a[0] > b[0] );
277
278 }
ProSHADE_internal_misc::addToDblPtrVector
void addToDblPtrVector(std::vector< proshade_double * > *vecToAddTo, proshade_double *elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:143
ProSHADE_internal_misc::addToSigPtrVector
void addToSigPtrVector(std::vector< proshade_signed * > *vecToAddTo, proshade_signed *elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:166
ProSHADE_internal_misc::checkMemoryAllocation
void checkMemoryAllocation(chVar checkVar, std::string fileP, unsigned int lineP, std::string funcP, std::string infoP="This error may occurs when ProSHADE requests memory to be\n : allocated to it and this operation fails. This could\n : happen when not enough memory is available, either due to\n : other processes using a lot of memory, or when the machine\n : does not have sufficient memory available. Re-run to see\n : if this problem persists.")
Checks if memory was allocated properly.
Definition: ProSHADE_misc.hpp:65