Add option to initialize state completely randomly.
authorDariusz Murakowski <murakdar@mit.edu>
Tue, 21 Jul 2015 20:56:37 +0000 (16:56 -0400)
committerDariusz Murakowski <murakdar@mit.edu>
Tue, 21 Jul 2015 20:56:59 +0000 (16:56 -0400)
mainQEE.cpp
qEpitopeEval.cpp
qEpitopeEval.h

index 3cd263b..04676cd 100755 (executable)
@@ -134,6 +134,7 @@ int main(int argc, char *argv[]) {
         else if (strcmp(argv[i],"-v")==0)   { r.useVerbose=true;                                                            }\r
 \r
         else if (strcmp(argv[i],"-trackE")==0)   { r.trackE=true;                                                           }\r
+        else if (strcmp(argv[i],"-randInit")==0) { r.randomStart=true;                                                      }\r
         \r
         else printf("Unrecognized command! '%s'\n",argv[i]);\r
         \r
index 4807def..ba6d3bc 100755 (executable)
@@ -76,6 +76,16 @@ void runEpitopeEval(RunParameters &r, std::vector<std::vector<int> > &eStates, s
         for (int i=0;i<N;i++) fscanf(startIn,"%d",&lattice[i]);\r
     \r
     }\r
+\r
+    else if (r.randomStart) {\r
+        srand((unsigned)time(0));\r
+        int numThreads=1;\r
+        unsigned long seed[numThreads];\r
+        for (int i=0;i<numThreads;i++) seed[i]=rand();\r
+        MT::MersenneTwist mt;\r
+        mt.init_genrand(seed[0]);\r
+        for (int i=0; i<N; i++) lattice[i] = mt.uniform_int_closed(0, (int)p[i].size());\r
+    }\r
     \r
     else { for (int i=0;i<N;i++) lattice[i]=(int) p[i].size(); }\r
     \r
index a4d3e24..6ee3345 100755 (executable)
@@ -36,6 +36,7 @@ public:
     bool savePk;                    // If true, record P(k) mutations curve\r
 \r
     bool trackE;                    // if true, save relative contribution to energy from fields and couplings\r
+    bool randomStart;               // if true, set the initial state randomly\r
     \r
     RunParameters() {\r
         \r
@@ -53,6 +54,7 @@ public:
         savePk=false;\r
 \r
         trackE = false;\r
+        randomStart = false;\r
         \r
     }\r
     std::string getInfile()                   { return (directory+"/"+infile+".j");                   }\r