Browse code

Implemented minor suggestions

Tiger Gao authored on 06/06/2018 15:53:48
Showing 2 changed files

... ...
@@ -1,6 +1,7 @@
1 1
 #include "GapsRunner.h"
2 2
 #include "math/SIMD.h"
3 3
 #include "math/Random.h"
4
+#include "GapsAssert.h"
4 5
 #include <algorithm>
5 6
 
6 7
 #ifdef __GAPS_OPENMP__
... ...
@@ -13,6 +14,7 @@
13 14
 // samples gene names as well
14 15
 static std::vector< std::vector<unsigned> > sampleIndices(unsigned n, unsigned nSets)
15 16
 {
17
+    unsigned setSize = (int) (n - 1) / (nSets - 1);
16 18
     std::vector< std::vector<unsigned> > sampleIndices;
17 19
     std::vector<unsigned> toBeSampled;
18 20
     for (unsigned i = 1; i < n; ++i)
... ...
@@ -20,15 +22,14 @@ static std::vector< std::vector<unsigned> > sampleIndices(unsigned n, unsigned n
20 22
         toBeSampled.push_back(i);
21 23
     }
22 24
 
23
-    for (unsigned i = 0; i < (n - 1); ++i)
25
+    for (unsigned i = 0; i < (nSets - 1); ++i)
24 26
     {
25
-        sampleIndices.push_back(gaps::random::sample(toBeSampled, (int) (n - 1) / (nSets - 1)));
27
+        sampleIndices.push_back(gaps::random::sample(toBeSampled, setSize));
26 28
     }
27 29
 
28
-    if (!toBeSampled.empty())
29
-    {
30
-        sampleIndices.push_back(toBeSampled);
31
-    }
30
+    GAPS_ASSERT(!toBeSampled.empty());
31
+
32
+    sampleIndices.push_back(toBeSampled);
32 33
 
33 34
     return sampleIndices;
34 35
 
... ...
@@ -185,12 +185,12 @@ std::vector<unsigned> sample(std::vector<unsigned> &elements, unsigned n) {
185 185
     std::vector<unsigned> sampleVect;
186 186
     for (unsigned i = 0; i < n; ++i)
187 187
     {
188
-        if (elements.empty()) {
189
-            break;
190
-        }
188
+        GAPS_ASSERT(n <= elements.size());
191 189
         unsigned sampleIndex = gaps::random::uniform64(0, elements.size());
192 190
         sampleVect.push_back(elements.at(sampleIndex));
193
-        elements.erase(std::remove(elements.begin(), elements.end(), elements.at(sampleIndex)), elements.end());
191
+
192
+        elements[sampleIndex] = elements.back();
193
+        elements.pop_back();
194 194
     }
195 195
     return sampleVect;
196 196