StochHMM
v0.34
Flexible Hidden Markov Model C++ Library and Application
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
state.h
Go to the documentation of this file.
1
//state.h
2
//Copyright (c) 2007-2012 Paul C Lott
3
//University of California, Davis
4
//Genome and Biomedical Sciences Facility
5
//UC Davis Genome Center
6
//Ian Korf Lab
7
//Website: www.korflab.ucdavis.edu
8
//Email: lottpaul@gmail.com
9
//
10
//Permission is hereby granted, free of charge, to any person obtaining a copy of
11
//this software and associated documentation files (the "Software"), to deal in
12
//the Software without restriction, including without limitation the rights to
13
//use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
14
//the Software, and to permit persons to whom the Software is furnished to do so,
15
//subject to the following conditions:
16
//
17
//The above copyright notice and this permission notice shall be included in all
18
//copies or substantial portions of the Software.
19
//
20
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
22
//FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
23
//COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
24
//IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
25
//CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
27
28
#ifndef STATE_H
29
#define STATE_H
30
31
#include <string>
32
#include <vector>
33
#include "
text.h
"
34
#include "
emm.h
"
35
#include "
transitions.h
"
36
#include <stdint.h>
37
#include <stdlib.h>
38
#include <bitset>
39
40
#ifndef SIZE_MAX
41
#define SIZE_MAX ((size_t)-1)
42
#endif
43
44
//Define size of bitset. If not set in makefile then will use default 1024.
45
#ifndef STATE_MAX
46
#define STATE_MAX 1024
47
#endif
48
49
namespace
StochHMM{
50
51
class
transition;
52
53
class
state
{
54
public
:
55
state
();
56
//state(int);
57
state
(std::string&,
stringList
&,
tracks
&,
weights
*,
StateFuncs
*);
//!Create state from string
58
~state
();
59
60
friend
class
model
;
61
62
//ACCESSOR
63
64
//!Get the states integer index value
65
//! \return integer
66
inline
size_t
getIterator
(){
return
stateIterator
;};
67
68
//!Get the name of the state
69
//! \return std::string Name of state
70
inline
std::string&
getName
(){
return
name
;};
71
72
//!Get the GFF tag to use for the state
73
//! \results std::string GFF tag
74
inline
std::string&
getGFF
(){
return
gff
;};
75
76
//!Get the Label used for the state
77
//! \result std::string
78
inline
std::string&
getLabel
(){
return
label
;};
79
80
//!Get all transition defined for the state
81
//!\return std::vector<transitions*>* Pointer to all transitions in state
82
inline
std::vector<transition*>*
getTransitions
(){
return
transi
;};
83
84
//!Get all states that this state has transitions to
85
//! \return std::vector<state*>* Pointer to all state that are transitioned to
86
inline
std::bitset<STATE_MAX>*
getTo
(){
return
&
to
;};
87
88
89
90
//!Get all states that transition to this state
91
//!\return std::vector<state*>* Pointer to all state that transition to this state
92
inline
std::bitset<STATE_MAX>*
getFrom
(){
return
&
from
;};
93
94
95
//TODO: Check that undefined return values are NULL
96
//!Get transition at index
97
//! \param iter Index to get transition for
98
//! \return transition* pointer to the transition
99
inline
transition
*
getTrans
(
size_t
iter){
return
(*
transi
)[iter];};
100
101
//!Get the ending transition
102
//! \return transition* Pointer to ending transition
103
//! \If not defined return value should be NULL
104
inline
transition
*
getEnding
(){
return
endi
;};
105
106
//!Get the emission defined at index
107
//!\param iter Index of emm to get
108
//!\results emm* pointer to emission
109
inline
emm
*
getEmission
(
size_t
iter){
return
emission
[iter];};
110
111
double
get_emission_prob
(
sequences
& seqs,
size_t
iter);
//get emission for given (position)
112
double
get_transition_prob
(
sequences
& seqs,
size_t
to
,
size_t
iter);
//get transition (position,from or too)
113
double
getEndTrans
();
114
115
void
print
();
116
std::string
stringify
();
117
118
//MUTATORS
119
bool
parse
(std::string&,
stringList
&,
tracks
&,
weights
*,
StateFuncs
*);
120
121
//!Add the transition to the state
122
//!\param trans Pointer to transition to add to the state
123
inline
void
addTransition
(
transition
* trans){
transi
->push_back(trans);};
124
125
//!Set the ending transition to a given transition
126
//!\param trans Pointer to transition to be used as ending transition
127
inline
void
setEndingTransition
(
transition
* trans){
endi
=trans;};
128
129
//!Add emission to the state
130
//!\param em Pointer to the emission to be added
131
inline
void
addEmission
(
emm
* em){
emission
.push_back(em);};
132
133
//!Set the name of the state
134
//!\param txt Name of the state
135
inline
void
setName
(std::string& txt){
name
=txt;};
136
137
//!Set the GFF Tag for the state
138
inline
void
setGFF
(std::string& txt){
gff
=txt;};
139
140
//!Set the Label for the state
141
inline
void
setLabel
(std::string& txt){
label
=txt;};
142
143
//!Add state that this state transitions to
144
inline
void
addToState
(
state
* st){
to
[st->
getIterator
()]=1;};
145
146
//!Add state that transitions to this state
147
inline
void
addFromState
(
state
* st){
from
[st->
getIterator
()]=1;};
148
149
//!Set the index value to be used for the state
150
inline
void
setIter
(
size_t
val){
stateIterator
=val;};
151
152
bool
hasComplexEmission
();
153
bool
hasComplexTransition
();
154
155
bool
hasSimpleEmission
();
156
bool
hasSimpleTransition
();
157
158
bool
isSimple
();
159
160
void
checkLabels
(std::set<std::string>& ,std::set<std::string>& ,std::set<std::string>& );
161
162
void
_finalizeTransitions
(std::map<std::string,state*>& state_index);
163
164
private
:
165
std::string
name
;
/* State name */
166
std::string
gff
;
/* State features description */
167
std::string
label
;
/* State feature path label */
168
169
std::vector<transition*>*
transi
;
170
transition
*
endi
;
171
172
// Track Emissions //
173
std::vector<emm*>
emission
;
174
175
176
//Linking State Information (These are assigned at model finalization)
177
size_t
stateIterator
;
//index of state in HMM
178
std::bitset<STATE_MAX>
to
;
179
std::bitset<STATE_MAX>
from
;
180
181
bool
_parseHeader
(std::string&);
182
bool
_parseTransition
(std::string&,
stringList
&,
tracks
&,
weights
* ,
StateFuncs
*);
183
bool
_parseEmission
(std::string&,
stringList
&,
tracks
&,
weights
*,
StateFuncs
*);
184
};
185
186
}
187
#endif
/*STATE_H*/
Generated on Tue Jul 30 2013 13:23:11 for StochHMM by
1.8.1