Multiple epitopes; one per line in .ep file. All have same penalty for now.
authorDariusz Murakowski <murakdar@mit.edu>
Mon, 17 Feb 2014 14:18:30 +0000 (09:18 -0500)
committerDariusz Murakowski <murakdar@mit.edu>
Mon, 17 Feb 2014 14:24:11 +0000 (09:24 -0500)
wf.cpp
wf.h

diff --git a/wf.cpp b/wf.cpp
index c53acf9..245b0ac 100644 (file)
--- a/wf.cpp
+++ b/wf.cpp
@@ -99,7 +99,8 @@ void run(RunParameters &r, unsigned seed) {
             for (unsigned int n=0;n<r.num_runs;n++) {
             
                 EpitopeHamiltonian H(r.couplingsInfile);
-                H.set_epitope(r.eWT, r.eMut, r.penalty);
+                for (unsigned ep=0; ep<r.numEpitopes; ++ep)
+                    H.set_epitope(r.eWT[ep], r.eMut[ep], r.penalty);
                 H.set_temp(r.bh, r.bJ);
                 Population P(H, r.n, r.mu, r.initPop, r.initFrac);
 
@@ -242,30 +243,52 @@ void importEpitope(RunParameters &r) {
     while (fscanf(input,"%u",&site)==1) {
 
         std::cout << site; // XXX
+
+        std::vector<unsigned int> tempEp;
     
-        r.eWT.push_back(site);
-        
-        fscanf(input,"%c",&o);
-        std::cout << o; // XXX
-        if (o=='\n') break;
+        tempEp.push_back(site);
+        //r.eWT.push_back(site);
         
-    }
+        while (fscanf(input,"%c",&o) == 1) {
+            std::cout << o; // XXX
 
-    if (fscanf(input,"%c",&o) != 1 || o != '|') { perror((std::string("ERROR in importEpitope: ") + r.epitopeInfile).c_str()); exit(1); }
-    std::cout << o; // XXX
-    if (fscanf(input,"%c",&o) != 1 || o != '\t') { perror((std::string("ERROR in importEpitope: ") + r.epitopeInfile).c_str()); exit(1); }
-    std::cout << o; // XXX;
+            if (fscanf(input,"%u",&site)==1) {
+                std::cout << site; // XXX
+                tempEp.push_back(site);
+            }
+            else {
+                break;
+            }
+        }
 
-    while (fscanf(input,"%u",&site)==1) {
+        r.eWT.push_back(tempEp);
 
-        std::cout << site; // XXX
-    
-        r.eMut.push_back(site);
-        
-        fscanf(input,"%c",&o);
+        if (fscanf(input,"%c",&o) != 1 || o != '|') { std::cout<<((std::string("ERROR in parsing importEpitope: ") + r.epitopeInfile).c_str()); exit(1); }
         std::cout << o; // XXX
-        if (o=='\n') break;
+        if (fscanf(input,"%c",&o) != 1 || o != '\t') { std::cout<<((std::string("ERROR2 in parsing importEpitope: ") + r.epitopeInfile).c_str()); exit(1); }
+        std::cout << o; // XXX;
+
+        tempEp.clear();
+
+        while (fscanf(input,"%u",&site)==1) {
+
+            std::cout << site; // XXX
         
+            tempEp.push_back(site);
+            //r.eMut.push_back(site);
+            
+            fscanf(input,"%c",&o);
+            std::cout << o; // XXX
+            if (o=='\n') break;
+            
+        }
+
+        r.eMut.push_back(tempEp);
+
+        r.numEpitopes++;
+
+        //if (o=='\n') break;
+
     }
 
 }
diff --git a/wf.h b/wf.h
index bcfd2e9..a787b4f 100644 (file)
--- a/wf.h
+++ b/wf.h
@@ -103,9 +103,10 @@ public:
     
     std::vector<std::set<unsigned int> > initPop;   // Initial population sequences
     std::vector<double>                  initFrac;  // Initial population fraction
-    std::vector<unsigned int>            eWT;       // Sites that are consensus (WT) in the targeted epitope
-    std::vector<unsigned int>            eMut;      // Sites that are mutant in the targeted epitope
+    std::vector<std::vector<unsigned int> >           eWT;       // Sites that are consensus (WT) in the targeted epitope
+    std::vector<std::vector<unsigned int> >           eMut;      // Sites that are mutant in the targeted epitope
     double                               penalty;   // Energy penalty if sequence contains the targeted epitope
+    unsigned int numEpitopes;   // how many epitopes are targeted
     
     std::string couplingsInfile;
     std::string trajectoryOutfile;
@@ -142,6 +143,8 @@ public:
         J12 = 0.0;
 
         write_mod = 1;
+
+        numEpitopes = 0;
         
     }
     void setFiles() {