Opened 7 years ago

Closed 7 years ago

Last modified 5 months ago

#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 tree operations all starting from the same state.

Doing so failed and failures depend on order of performed tree operations, i.e. some tree 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 7 years ago by westram

  • Status changed from new to _started

comment:2 follow-up: Changed 7 years ago by westram

  • Resolution set to fixed
  • Status changed from _started to closed

by [13138]

This fix causes a recalculation of some inner nodes for which it was skipped before (due to the bug), i.e. it produces different tree costs under some conditions. One such condition occurred when adding multiple species as partials (shown by this changed test result).

comment:3 Changed 7 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 7 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 7 years ago by westram

  • Resolution fixed deleted
  • Status changed from closed to _started

still struggling with this problem. see [13147] + [13151]

comment:6 in reply to: ↑ description Changed 7 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 7 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 tree 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 tree-levels, while root-node still has valid sequence; fixed by [13138])
  • first accepting and later reverting tree-states corrupted all nodes for which the accepted information had changed more data than then following revert undid (fixed by [13333])
  • accepting tree-states was generally broken if no user-push was active (never happened in interactive mode, because there always exists a user push; fixed by [13330])
  • inserting to son of root lacked a STRUCTURE push (fixed by [13342])

comment:8 Changed 6 years ago by westram

  • Milestone set to arb6.1

mark changes that got fixed after arb 6.0.x

comment:9 Changed 5 months ago by westram

  • Milestone changed from arb6.1 to arb7.0

Milestone renamed

Note: See TracTickets for help on using tickets.