You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I believe the index of node_has_unique should be best_j_vec[k], not just k, in line 610 of usher_common.cpp:
609 for (size_t k=0; k < best_j_vec.size(); k++) {
610 bool include_self = !bfs[best_j_vec[k]]->is_leaf() && !node_has_unique[k];
In this loop k is iterating over the number of optimal placements, but node_has_unique[] needs a node index as for bfs[].
In my test case (sequence can't be shared publicly but I can share privately or find/construct another), the input sequence is placed at a node that has a clade annotation -- but that node has several mutations that the input sequence does not have, so in mapper2_body, has_unique is set to true for that node. I expected that that node's clade would not be assigned, but instead the next ancestral clade. However, include_self was set to true because node_has_unique[k] (with k=0) was false, so the node's annotated clade was assigned even though the sequence was missing several of its mutations.
When I changed node_has_unique[k] to node_has_unique[best_j_vec[k]], the has_unique = true for that node was passed forward, include_self was false as expected, and the ancestral clade was assigned as expected.
It's a very small change so I will send a pull request in a few minutes...
The text was updated successfully, but these errors were encountered:
I believe the index of
node_has_unique
should bebest_j_vec[k]
, not justk
, in line 610 of usher_common.cpp:In this loop k is iterating over the number of optimal placements, but
node_has_unique[]
needs a node index as forbfs[]
.In my test case (sequence can't be shared publicly but I can share privately or find/construct another), the input sequence is placed at a node that has a clade annotation -- but that node has several mutations that the input sequence does not have, so in
mapper2_body
,has_unique
is set totrue
for that node. I expected that that node's clade would not be assigned, but instead the next ancestral clade. However,include_self
was set to true becausenode_has_unique[k]
(with k=0) wasfalse
, so the node's annotated clade was assigned even though the sequence was missing several of its mutations.When I changed
node_has_unique[k]
tonode_has_unique[best_j_vec[k]]
, thehas_unique = true
for that node was passed forward,include_self
wasfalse
as expected, and the ancestral clade was assigned as expected.It's a very small change so I will send a pull request in a few minutes...
The text was updated successfully, but these errors were encountered: