Proper species names. Initial counts CTL counts for each type.
authorDariusz Murakowski <murakdar@mit.edu>
Tue, 21 Apr 2015 17:27:18 +0000 (13:27 -0400)
committerDariusz Murakowski <murakdar@mit.edu>
Tue, 21 Apr 2015 17:27:18 +0000 (13:27 -0400)
pop_ss.h
ss.cpp
ss.h

index 83cd367..7451e4f 100644 (file)
--- a/pop_ss.h
+++ b/pop_ss.h
@@ -30,17 +30,23 @@ public:
     std::string name;
     Species() : count(0), name("") {}
     Species(long c) : count(c), name("") {}
+    Species(std::string x) : count(0), name(x) {}
+    Species(std::string x, long c) : count(c), name(x) {}
 };
 
 class SimpleSpecies : public Species {
     SimpleSpecies() : Species() {}
     SimpleSpecies(long c) : Species(c) {}
+    SimpleSpecies(std::string x) : Species(x) {}
+    SimpleSpecies(std::string x, long c) : Species(x,c) {}
 };
 
 class VirusSpecies : public Species {
 public:
     VirusSpecies() : Species() {}
     VirusSpecies(long c) : Species(c) {}
+    VirusSpecies(std::string x) : Species(x) {}
+    VirusSpecies(std::string x, long c) : Species(x,c) {}
     virus_map pop;
 };
 
@@ -48,6 +54,8 @@ class CTLSpecies : public Species {
 public:
     CTLSpecies() : Species(), num_ep(0) {}
     CTLSpecies(long c) : Species(c), num_ep(0) {}
+    CTLSpecies(std::string x) : Species(x), num_ep(0) {}
+    CTLSpecies(std::string x, long c) : Species(x,c), num_ep(0) {}
 
     std::vector<EpitopeRecognizer> epitopes;
     std::vector<double> affinity;
diff --git a/ss.cpp b/ss.cpp
index dbeac56..33d0a29 100644 (file)
--- a/ss.cpp
+++ b/ss.cpp
@@ -64,15 +64,15 @@ void run(RunParameters_SS &r, unsigned seed) {
     Species_parray species;
     Rxn_parray reactions;
 
-    std::string couplingsFile = "neutral_2site.j";
-    Hamiltonian H(couplingsFile);
+    //std::string couplingsFile = "neutral_2site.j";
+    Hamiltonian H(r.couplingsInfile);
     H.set_temp(r.bh, r.bJ);
     //H.set_temp(0.01);
     //double mu = 6.0e-5;
     //double mu = 1.0e-1;
 
     // initialize virus
-    VirusSpecies s1;
+    VirusSpecies s1("I");
     species.push_back(&s1);
     if (r.importState) {
         importState(r);      // <infile>.st
@@ -262,14 +262,13 @@ void importState(RunParameters_SS &r) {
 void importEpitope(RunParameters_SS &r, Species_parray &species, Rxn_parray &reactions, VirusSpecies *V, Species_parray &print_spec)
 {
 
-    if ((r.num_CTL_clones != r.epitopefiles.size()) || 
-        (r.num_CTL_clones != r.init_CTL_num.size())) {
+    if (r.num_CTL_clones != r.epitopefiles.size()) {
         std::cerr << "ERROR in importEpitope: invalid number of CTL clones" << std::endl;
         exit(1);
     }
 
     for (size_t i = 0; i != r.num_CTL_clones; ++i) {
-        CTLSpecies* T = new CTLSpecies(r.init_CTL_num[i]);
+        CTLSpecies* T = new CTLSpecies("E",r.init_CTL_numT[i]);
 
         std::ifstream input(r.epitopefiles[i].c_str());   // <infile>.ep
         if (!input) { perror((std::string("ERROR in importEpitope: ") + r.epitopeInfile).c_str()); exit(1); }
@@ -337,9 +336,11 @@ void importEpitope(RunParameters_SS &r, Species_parray &species, Rxn_parray &rea
         species.push_back(T);   // effector
 
         CTLSpecies* N = new CTLSpecies(*T);     // naive
+        N->name = "N";  N->count = r.init_CTL_numN[i];
         species.push_back(N);
 
         CTLSpecies* M = new CTLSpecies(*T);     // memory
+        M->name = "M";  M->count = r.init_CTL_numM[i];
         species.push_back(M);
 
         print_spec.push_back(T);
@@ -425,7 +426,9 @@ void usage()
 " -o  (string)        output file stem\n"
 " -s  (string)        input state file, containing initial population fraction\n"
 " -ep (string)        input file containing targeted epitope\n"
-" -en (int)           corresponding number of that CTL (ordered!)\n"
+" -epN0 (int)         initial number of naive CTL (corresp. to latest epitope)\n"
+" -epM0 (int)         initial number of memory CTL (corresp. to latest epitope)\n"
+" -epT0 (int)         initial number of effector CTL (corresp. to latest epitope)\n"
 " -n  (int/double)    population size\n"
 " -e  (int/double)    time to end simulation\n"
 " -t  (int/double)    sampling time interval\n"
@@ -470,8 +473,10 @@ int main(int argc, char *argv[]) {
         else if (strcmp(argv[i],"-i")==0) { if (++i==argc) break; else r.infile=argv[i];                            }
         else if (strcmp(argv[i],"-o")==0) { if (++i==argc) break; else r.outfile=argv[i];                           }
         else if (strcmp(argv[i],"-s")==0) { if (++i==argc) break; else { r.statefile=argv[i]; r.importState=true; } }
-        else if (strcmp(argv[i],"-ep")==0) { if (++i==argc) break; else { r.epitopefiles.push_back(argv[i]); r.useEpitope=true; ++r.num_CTL_clones; } }
-        else if (strcmp(argv[i],"-en")==0) { if (++i==argc) break; else { r.init_CTL_num.push_back((long)strtodouble(argv[i])); r.useEpitope=true; } }
+        else if (strcmp(argv[i],"-ep")==0) { if (++i==argc) break; else { r.epitopefiles.push_back(argv[i]); r.useEpitope=true; ++r.num_CTL_clones; r.init_CTL_numN.push_back(0); r.init_CTL_numM.push_back(0); r.init_CTL_numT.push_back(0); } }
+        else if (strcmp(argv[i],"-epN0")==0) { if (++i==argc) break; else { r.init_CTL_numN.back() = (long)strtodouble(argv[i]); } }
+        else if (strcmp(argv[i],"-epM0")==0) { if (++i==argc) break; else { r.init_CTL_numM.back() = (long)strtodouble(argv[i]); } }
+        else if (strcmp(argv[i],"-epT0")==0) { if (++i==argc) break; else { r.init_CTL_numT.back() = (long)strtodouble(argv[i]); } }
         
         else if (strcmp(argv[i],"-n")==0)  { if (++i==argc) break; else r.n=(unsigned int)strtodouble(argv[i]); }
         else if (strcmp(argv[i],"-mu")==0) { if (++i==argc) break; else r.mu=strtodouble(argv[i]);              }
diff --git a/ss.h b/ss.h
index e3b5b63..0b86e4e 100644 (file)
--- a/ss.h
+++ b/ss.h
@@ -137,7 +137,9 @@ public:
 
 
     std::vector<std::string> epitopefiles;
-    std::vector<long> init_CTL_num;
+    std::vector<long> init_CTL_numN;
+    std::vector<long> init_CTL_numM;
+    std::vector<long> init_CTL_numT;
     unsigned int num_CTL_clones;
 
     double rate_s;