#620 closed defect (fixed)
tree operations produce invalid tree states
Reported by: | westram | Owned by: | westram |
---|---|---|---|
Priority: | critical | Milestone: | arb7.0 |
Component: | ARB_PARSIMONY | Version: | SVN |
Keywords: | Cc: |
Description
parsimony uses a node-stack to be able to discard unsuccessful topology modifications.
while attempting to write general unit-tests (#619) problems with this stack emerged. i tried to use the stack inside the unit-tests to return back to a known topology in order to document the differences between similar operations all starting from the same state.
Doing so failed and failures depend on order of performed operations, i.e. some operations leave the stack in an invalid state and doing a pop() possibly causes the next (or even the next but one) operation to fail.
What was revealed so far:
- some higher level operations failed, depending on what has been done before
- failures occurred e.g. in calc_branchlengths()
- seq-information is missing for some inner nodes, but root-node has seq-info (added a function to test for that state)
Change History (9)
comment:1 Changed 10 years ago by westram
- Status changed from new to _started
comment:2 follow-up: ↓ 4 Changed 10 years ago by westram
- Resolution set to fixed
- Status changed from _started to closed
comment:3 Changed 10 years ago by westram
- Resolution fixed deleted
- Status changed from closed to _started
still fails thorough checks reactivated in [13142]
comment:4 in reply to: ↑ 2 Changed 10 years ago by westram
- Resolution set to fixed
- Status changed from _started to closed
by [13143]
Replying to westram:
One such condition occurred when adding multiple species as partials (shown by this changed test result).
This conclusion was wrong - test result has been reverted.
comment:5 Changed 10 years ago by westram
- Resolution fixed deleted
- Status changed from closed to _started
comment:6 in reply to: ↑ description Changed 10 years ago by westram
Replying to description:
What was revealed so far:
- some higher level operations failed, depending on what has been done before
- failures occurred e.g. in calc_branchlengths()
fixed by [13138] (s.a. [13339])
- seq-information is missing for some inner nodes, but root-node has seq-info
fixed by [13342]
comment:7 Changed 10 years ago by westram
- Resolution set to fixed
- Status changed from _started to closed
The problems were caused by a combination of bugs:
- marked species have an effect on the edge-chain used to iterate through the when doing topology optimization (fixed by [13353])
- reverting a change of root-node did fail, if several root-changes were stored (fixed by [13207] and [13196])
- pushing nodes twice onto same stack frame (caused invalidated sequences higher -levels, while root-node still has valid sequence; fixed by [13138])
- first accepting and later reverting -states corrupted all nodes for which the accepted information had changed more data than then following revert undid (fixed by [13333])
- accepting -states was generally broken if no -push was active (never happened in interactive mode, because there always exists a push; fixed by [13330])
- inserting to son of root lacked a STRUCTURE push (fixed by [13342])
comment:8 Changed 9 years ago by westram
- Milestone set to arb6.1
mark changes that got fixed after arb 6.0.x
by [13138]
This fix causes a recalculation of some inner nodes for which it was skipped before (due to the ), i.e. it produces different costs under some conditions. One such condition occurred when adding multiple species as partials (shown by this changed test result).