-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathModelBuilder.C
129 lines (100 loc) · 2.97 KB
/
ModelBuilder.C
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/**************************************************************
ModelBuilder.C
Copyright (C)2013 William H. Majoros ([email protected]).
This is OPEN SOURCE SOFTWARE governed by the Gnu General Public
License (GPL) version 3, as described at www.opensource.org.
***************************************************************/
#include "ModelBuilder.H"
#include <iostream>
#include "MarkovChain.H"
#include "WMM.H"
#include "WAM.H"
#include "WWAM.H"
#include "ThreePeriodicMarkovChain.H"
#include "IMM.H"
#include "ThreePeriodicIMM.H"
#include "BranchAcceptor.H"
ModelBuilder::ModelBuilder(GarbageCollector &gc,Alphabet &alphabet,
int minSampleSize,int order,int windowSize)
: alphabet(alphabet),
minSampleSize(minSampleSize),
order(order),
windowSize(windowSize),
gc(gc),
branchContextLength(19) // default for GENSCAN is 19
{
// ctor
}
ContentSensor *ModelBuilder::buildContentSensor(ModelType modelType,
BOOM::Vector<TrainingSequence*> &seqs,
ContentType contentType)
{
switch(modelType)
{
case MARKOV_CHAIN:
return new MarkovChain(seqs,order,minSampleSize,
MarkovChain::NO_PHASE,contentType);
case THREE_PERIODIC:
return new ThreePeriodicMarkovChain(seqs,order,minSampleSize,
contentType);
case IMM_MODEL:
return new IMM(seqs,order,minSampleSize,
MarkovChain::NO_PHASE,contentType);
case IMM_3P:
return new ThreePeriodicIMM(seqs,order,minSampleSize,contentType);
}
}
SignalSensor *ModelBuilder::buildSignalSensor(ModelType modelType,
BOOM::Vector<TrainingSequence*> &
sequences,
SignalType signalType,
int consensusOffset,
int consensusLength)
{
switch(modelType)
{
case WMM_MODEL:
return new WMM(gc,sequences,signalType,consensusOffset,
consensusLength);
case WAM_MODEL:
return new WAM(gc,sequences,order,minSampleSize,signalType,
consensusOffset,consensusLength);
case WWAM_MODEL:
return new WWAM(gc,sequences,order,minSampleSize,signalType,
consensusOffset,consensusLength);
case BRANCH_ACCEPTOR:
return new BranchAcceptor(gc,sequences,branchOrder,order,
branchContextLength,minSampleSize,
consensusOffset,AG);
/*
case MARKOV_CHAIN:
return new NthOrderMarkovChain(sequences,order,alphabet,minSampleSize);
case IMM_MODEL:
return new IMM(sequences,order,alphabet,minSampleSize);
case CODON_BIAS:
return new CodingPotential(sequences,alphabet);
*/
default:
throw "Error in ModelBuilder::buildModel()";
}
}
void ModelBuilder::changeOrder(int order)
{
this->order=order;
}
void ModelBuilder::changeWindowSize(int windowSize)
{
this->windowSize=windowSize;
}
void ModelBuilder::changeMinSampleSize(int minSampleSize)
{
this->minSampleSize=minSampleSize;
}
void ModelBuilder::changeBranchContextLength(int l)
{
branchContextLength=l;
}
void ModelBuilder::changeBranchOrder(int o)
{
branchOrder=o;
}