-
-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy pathalisimulatorinvar.h
53 lines (41 loc) · 1.49 KB
/
alisimulatorinvar.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//
// alisimulatorinvar.h
// iqtree
//
// Created by Nhan Ly-Trong on 23/03/2021.
//
#ifndef alisimulatorinvar_h
#define alisimulatorinvar_h
#include "alisimulator.h"
class AliSimulatorInvar : public AliSimulator
{
protected:
double invariant_proportion;
/**
simulate a sequence for a node from a specific branch after all variables has been initializing
*/
virtual void simulateASequenceFromBranchAfterInitVariables(int segment_start, ModelSubst *model, double *trans_matrix, vector<short int> &dad_seq_chunk, vector<short int> &node_seq_chunk, Node *node, NeighborVec::iterator it, int* rstream, string lengths = "");
/**
initialize variables (e.g., site-specific rate)
*/
virtual void initVariablesRateHeterogeneity(int sequence_length, default_random_engine& generator, bool regenerate_root_sequence = false);
/**
* insert a new sequence into the current sequence
*
*/
virtual void insertNewSequenceForInsertionEvent(vector<short int> &indel_sequence, int position, vector<short int> &new_sequence, default_random_engine& generator);
/**
initialize site_specific_rates
*/
void initSiteSpecificRates(vector<double> &site_specific_rates, int sequence_length);
public:
/**
constructor
*/
AliSimulatorInvar(Params *params, double invar_prop);
/**
constructor
*/
AliSimulatorInvar(AliSimulator *alisimulator, double invar_prop);
};
#endif /* alisimulatorinvar_h */