Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openstructure
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
schwede
openstructure
Commits
b59448d2
Commit
b59448d2
authored
5 years ago
by
Studer Gabriel
Browse files
Options
Downloads
Patches
Plain Diff
allow to adapt parameter defaults in HMMScore
parent
49d815a3
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
modules/seq/alg/pymod/wrap_seq_alg.cc
+7
-1
7 additions, 1 deletion
modules/seq/alg/pymod/wrap_seq_alg.cc
modules/seq/alg/src/hmm_score.cc
+34
-13
34 additions, 13 deletions
modules/seq/alg/src/hmm_score.cc
modules/seq/alg/src/hmm_score.hh
+7
-1
7 additions, 1 deletion
modules/seq/alg/src/hmm_score.hh
with
48 additions
and
15 deletions
modules/seq/alg/pymod/wrap_seq_alg.cc
+
7
−
1
View file @
b59448d2
...
...
@@ -262,7 +262,13 @@ void export_hmm_algorithms() {
def
(
"AddTransitionPseudoCounts"
,
&
AddTransitionPseudoCounts
,
(
arg
(
"profile"
)));
def
(
"AddNullPseudoCounts"
,
&
AddNullPseudoCounts
,
(
arg
(
"profile"
)));
def
(
"HMMScore"
,
&
HMMScore
,
(
arg
(
"profile_0"
),
arg
(
"profile_1"
),
arg
(
"alignment"
),
arg
(
"s_0_idx"
),
arg
(
"s_1_idx"
)));
arg
(
"s_0_idx"
),
arg
(
"s_1_idx"
),
arg
(
"match_score_offset"
)
=-
0.03
,
arg
(
"correl_score_weight"
)
=
0.1
,
arg
(
"del_start_penalty_factor"
)
=
0.6
,
arg
(
"del_extend_penalty_factor"
)
=
0.6
,
arg
(
"ins_start_penalty_factor"
)
=
0.6
,
arg
(
"ins_extend_penalty_factor"
)
=
0.6
));
}
BOOST_PYTHON_MODULE
(
_ost_seq_alg
)
...
...
This diff is collapsed.
Click to expand it.
modules/seq/alg/src/hmm_score.cc
+
34
−
13
View file @
b59448d2
...
...
@@ -31,7 +31,11 @@ void SetupSequence(const ost::seq::ProfileHandle& profile,
Real
InsertionTransitionScore
(
const
ost
::
seq
::
ProfileHandle
&
prof_0
,
const
ost
::
seq
::
ProfileHandle
&
prof_1
,
int
before_0
,
int
before_1
,
int
after_0
,
int
after_1
)
{
int
after_0
,
int
after_1
,
Real
del_start_penalty_factor
,
Real
del_extend_penalty_factor
,
Real
ins_start_penalty_factor
,
Real
ins_extend_penalty_factor
)
{
// option 1:
// s0 switched to insertion state after the beginning of the gap
...
...
@@ -42,10 +46,12 @@ Real InsertionTransitionScore(const ost::seq::ProfileHandle& prof_0,
// s0
ins_score
+=
std
::
log2
(
prof_0
[
before_0
].
GetTransProb
(
ost
::
seq
::
HMM_M2I
))
*
0.6
;
std
::
log2
(
prof_0
[
before_0
].
GetTransProb
(
ost
::
seq
::
HMM_M2I
))
*
ins_start_penalty_factor
;
int
l
=
after_1
-
before_1
-
1
;
ins_score
+=
(
l
-
1
)
*
std
::
log2
(
prof_0
[
before_0
].
GetTransProb
(
ost
::
seq
::
HMM_I2I
))
*
0.6
;
(
l
-
1
)
*
std
::
log2
(
prof_0
[
before_0
].
GetTransProb
(
ost
::
seq
::
HMM_I2I
))
*
ins_extend_penalty_factor
;
ins_score
+=
std
::
log2
(
prof_0
[
before_0
].
GetTransProb
(
ost
::
seq
::
HMM_I2M
));
// s1
...
...
@@ -65,9 +71,11 @@ Real InsertionTransitionScore(const ost::seq::ProfileHandle& prof_0,
// s1
del_score
+=
std
::
log2
(
prof_1
[
before_1
].
GetTransProb
(
ost
::
seq
::
HMM_M2D
))
*
0.6
;
std
::
log2
(
prof_1
[
before_1
].
GetTransProb
(
ost
::
seq
::
HMM_M2D
))
*
del_start_penalty_factor
;
for
(
int
i
=
before_1
+
1
;
i
<
after_1
-
1
;
++
i
)
{
del_score
+=
std
::
log2
(
prof_1
[
i
].
GetTransProb
(
ost
::
seq
::
HMM_D2D
))
*
0.6
;
del_score
+=
std
::
log2
(
prof_1
[
i
].
GetTransProb
(
ost
::
seq
::
HMM_D2D
))
*
del_extend_penalty_factor
;
}
del_score
+=
std
::
log2
(
prof_1
[
after_1
-
1
].
GetTransProb
(
ost
::
seq
::
HMM_D2M
));
...
...
@@ -79,9 +87,15 @@ Real InsertionTransitionScore(const ost::seq::ProfileHandle& prof_0,
namespace
ost
{
namespace
seq
{
namespace
alg
{
Real
HMMScore
(
const
ost
::
seq
::
ProfileHandle
&
prof_0
,
const
ost
::
seq
::
ProfileHandle
&
prof_1
,
const
ost
::
seq
::
AlignmentHandle
&
aln
,
int
seq_0_idx
,
int
seq_1_idx
)
{
const
ost
::
seq
::
ProfileHandle
&
prof_1
,
const
ost
::
seq
::
AlignmentHandle
&
aln
,
int
seq_0_idx
,
int
seq_1_idx
,
Real
match_score_offset
,
Real
correl_score_weight
,
Real
del_start_penalty_factor
,
Real
del_extend_penalty_factor
,
Real
ins_start_penalty_factor
,
Real
ins_extend_penalty_factor
)
{
String
s_0
;
int
s_0_o
;
...
...
@@ -108,7 +122,6 @@ Real HMMScore(const ost::seq::ProfileHandle& prof_0,
int
state
=
0
;
// 0: match
// 1: insertion s0
// 2: insertion s1
Real
offset
=
-
0.03
;
// described in 2005 hmm-hmm comparison paper by soding
// sum up column scores and all MM->MM transition scores
for
(
uint
idx
=
0
;
idx
<
s_0
.
size
();
++
idx
)
{
...
...
@@ -170,14 +183,22 @@ Real HMMScore(const ost::seq::ProfileHandle& prof_0,
transition_score
+=
InsertionTransitionScore
(
prof_0
,
prof_1
,
ins_0_before_col_0
+
s_0_o
,
ins_0_before_col_1
+
s_1_o
,
col_0
+
s_0_o
,
col_1
+
s_1_o
);
col_0
+
s_0_o
,
col_1
+
s_1_o
,
del_start_penalty_factor
,
del_extend_penalty_factor
,
ins_start_penalty_factor
,
ins_extend_penalty_factor
);
}
if
(
state
==
2
&&
ins_1_before_col_1
>=
0
)
{
// an insertion in s0 ends here
transition_score
+=
InsertionTransitionScore
(
prof_1
,
prof_0
,
ins_1_before_col_1
+
s_1_o
,
ins_1_before_col_0
+
s_0_o
,
col_1
+
s_1_o
,
col_0
+
s_0_o
);
col_1
+
s_1_o
,
col_0
+
s_0_o
,
del_start_penalty_factor
,
del_extend_penalty_factor
,
ins_start_penalty_factor
,
ins_extend_penalty_factor
);
}
++
col_0
;
++
col_1
;
...
...
@@ -204,8 +225,8 @@ Real HMMScore(const ost::seq::ProfileHandle& prof_0,
Real
score
=
std
::
accumulate
(
matching_scores
.
begin
(),
matching_scores
.
end
(),
0.0
);
score
+=
n_matches
*
offset
;
score
+=
0.1
*
correl_score
;
score
+=
n_matches
*
match_score_
offset
;
score
+=
correl_score_weight
*
correl_score
;
score
+=
transition_score
;
return
score
;
...
...
This diff is collapsed.
Click to expand it.
modules/seq/alg/src/hmm_score.hh
+
7
−
1
View file @
b59448d2
...
...
@@ -28,7 +28,13 @@ namespace ost{ namespace seq{ namespace alg{
Real
HMMScore
(
const
ost
::
seq
::
ProfileHandle
&
profile_0
,
const
ost
::
seq
::
ProfileHandle
&
profile_1
,
const
ost
::
seq
::
AlignmentHandle
&
aln
,
int
seq_0_idx
,
int
seq_1_idx
);
int
seq_0_idx
,
int
seq_1_idx
,
Real
match_score_offset
=
-
0.03
,
Real
correl_score_weight
=
0.1
,
Real
del_start_penalty_factor
=
0.6
,
Real
del_extend_penalty_factor
=
0.6
,
Real
ins_start_penalty_factor
=
0.6
,
Real
ins_extend_penalty_factor
=
0.6
);
}}}
// ns
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment