}
}
+
double RC_fun(double E)
{
// sigmoid function
// pick how many sites to mutate in the new virus
// adapted from WF Virus::mutate()
- //double mu = 6.0e-5; // mut prob upon reproduction
- //double mu = 1.0e-1;
- double mu = iter->first.mu;
- Virus v(H,mu,iter->first.mutated_sites);
+ //double mu = iter->first.mu;
+ Virus v(H,this->mu,iter->first.mutated_sites);
unsigned int n = gsl_ran_binomial(rnd,mu,H.size);
MutatedSiteSequence sites_to_mutate;
while (sites_to_mutate.size() < n) {
sites_to_mutate.insert(gsl_rng_uniform_int(rnd,H.size));
}
for (MutatedSiteSequence::iterator it = sites_to_mutate.begin(),
- end = sites_to_mutate.end();
+ end = sites_to_mutate.end();
it != end; ++it) {
if (v.mutated_sites.count(*it)==0) v.mutated_sites.insert(*it);
else v.mutated_sites.erase(*it);
}
+
double VirusDeathReaction::recalc()
{
V->count = 0;
Tto->count += 1;
}
-
class VirusReaction : public Reaction {
public:
VirusReaction() : Reaction() {}
- VirusReaction(double k) : Reaction(k) {}
+ VirusReaction(double k) : Reaction(k), mu(0) {}
+ double mu;
VirusSpecies* V;
Hamiltonian H;
+
double recalc();
void fire();
};