CustomRateProcess是Process的派生类,
主要表示不同位置上速率不同的反应

此类是Process的派生类,所以在Process类中的成员变量为protected,而且很多成员函数都为虚函数。

成员数据

1
2
3
4
5
// 由于不同site上面的速率不同,因此此vector存放对应sites_的速率
std::vector<double> site_rates_;

// 递增的速率列表
std::vector<double> incremental_rate_table_;

具体可以用下图表示:

成员函数

其他成员函数的作用与Process类似,只是由于每个位点的速率不同所采用的求和和抽取的方法稍有差别,这里就不做详解了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 根据site_rates_生成incremental_rate_table_
void CustomRateProcess::updateRateTable()
{
// Resize and update the incremental rate table.
incremental_rate_table_.resize(site_rates_.size());
double previous = 0.0;
for (size_t i = 0; i < site_rates_.size(); ++i)
{
incremental_rate_table_[i] = previous + site_rates_[i];
previous = incremental_rate_table_[i];
}

// DONE
}

Comments