ProSHADE: src/proshade/ProSHADE_misc.cpp Source File

| ProSHADE 0.7.5.1 (JAN 2021) Protein Shape Detection

ProSHADE_misc.cpp
Go to the documentation of this file.
1
22 //==================================================== ProSHADE
23 #include "ProSHADE_misc.hpp"
24
33 void ProSHADE_internal_misc::addToStringVector ( std::vector < std::string >* vecToAddTo, std::string elementToAdd )
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 }
46
55 void ProSHADE_internal_misc::addToSingleVector ( std::vector < proshade_single >* vecToAddTo, proshade_single elementToAdd )
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 }
68
77 void ProSHADE_internal_misc::addToDoubleVector ( std::vector < proshade_double >* vecToAddTo, proshade_double elementToAdd )
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 }
90
99 void ProSHADE_internal_misc::addToUnsignVector ( std::vector < proshade_unsign >* vecToAddTo, proshade_unsign elementToAdd )
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 }
112
121 void ProSHADE_internal_misc::addToSignedVector ( std::vector < proshade_signed >* vecToAddTo, proshade_signed elementToAdd )
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 }
134
143 void ProSHADE_internal_misc::addToDblPtrVector ( std::vector < proshade_double* >* vecToAddTo, proshade_double* elementToAdd )
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 }
156
166 void ProSHADE_internal_misc::addToSigPtrVector ( std::vector < proshade_signed* >* vecToAddTo, proshade_signed* elementToAdd )
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 }
179
188 void ProSHADE_internal_misc::addToUnsignVectorVector ( std::vector < std::vector < proshade_unsign > >* vecToAddTo, std::vector < proshade_unsign > elementToAdd )
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 }
201
210 void ProSHADE_internal_misc::addToDoubleVectorVector ( std::vector < std::vector < proshade_double > >* vecToAddTo, std::vector < proshade_double > elementToAdd )
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 }
223
230 bool ProSHADE_internal_misc::sortSymHlp ( const proshade_double* a, const proshade_double* b )
231 {
232 //================================================ Compare
233 return ( a[5] < b[5] );
234
235 }
236
243 bool ProSHADE_internal_misc::sortSymHlpInv ( const proshade_double* a, const proshade_double* b )
244 {
245 //======================================== Compare
246 return ( a[5] > b[5] );
247
248 }
249
256 bool ProSHADE_internal_misc::sortDSymHlpInv ( const proshade_double* a, const proshade_double* b )
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 }
266
273 bool ProSHADE_internal_misc::sortSymInvFoldHlp ( const proshade_double* a, const proshade_double* b )
274 {
275 //================================================ Compare
276 return ( a[0] > b[0] );
277
278 }
279
287 void ProSHADE_internal_misc::deepCopyAxisToDblPtrVector ( std::vector< proshade_double* >* dblPtrVec, proshade_double* axis )
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 }
310
323 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 )
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 }
ProSHADE_internal_misc::sortSymInvFoldHlp
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.
Definition: ProSHADE_misc.cpp:273
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::sortSymHlp
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.
Definition: ProSHADE_misc.cpp:230
ProSHADE_internal_misc::addToUnsignVectorVector
void addToUnsignVectorVector(std::vector< std::vector< proshade_unsign > > *vecToAddTo, std::vector< proshade_unsign > elementToAdd)
Adds the element to the vector of vectors.
Definition: ProSHADE_misc.cpp:188
ProSHADE_misc.hpp
This header file declares all miscellaneous functions.
ProSHADE_internal_misc::addToDoubleVector
void addToDoubleVector(std::vector< proshade_double > *vecToAddTo, proshade_double elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:77
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::addToSignedVector
void addToSignedVector(std::vector< proshade_signed > *vecToAddTo, proshade_signed elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:121
ProSHADE_internal_misc::sortDSymHlpInv
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...
Definition: ProSHADE_misc.cpp:256
ProSHADE_internal_misc::deepCopyAxisToDblPtrVector
void deepCopyAxisToDblPtrVector(std::vector< proshade_double * > *dblPtrVec, proshade_double *axis)
Does a deep copy of a double array to a vector of double arrays.
Definition: ProSHADE_misc.cpp:287
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
ProSHADE_internal_misc::addToDoubleVectorVector
void addToDoubleVectorVector(std::vector< std::vector< proshade_double > > *vecToAddTo, std::vector< proshade_double > elementToAdd)
Adds the element to the vector of vectors.
Definition: ProSHADE_misc.cpp:210
ProSHADE_internal_misc::addToUnsignVector
void addToUnsignVector(std::vector< proshade_unsign > *vecToAddTo, proshade_unsign elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:99
ProSHADE_internal_misc::addToSingleVector
void addToSingleVector(std::vector< proshade_single > *vecToAddTo, proshade_single elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:55
ProSHADE_internal_misc::sortSymHlpInv
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.
Definition: ProSHADE_misc.cpp:243
ProSHADE_internal_misc::addToStringVector
void addToStringVector(std::vector< std::string > *vecToAddTo, std::string elementToAdd)
Adds the element to the vector.
Definition: ProSHADE_misc.cpp:33
ProSHADE_internal_misc::deepCopyBoundsSigPtrVector
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.
Definition: ProSHADE_misc.cpp:323