lutteropp / NetRAX

Phylogenetic Network Inference without ILS
GNU General Public License v3.0
17 stars 1 forks source link

Switch to Search in Waves #30

Open lutteropp opened 3 years ago

lutteropp commented 3 years ago

In the whiteboard meeting today, we discovered some challenges with the current network topology search algorithm.

lutteropp commented 3 years ago

Done in https://github.com/lutteropp/NetRAX/commit/dd6dd2a04507a5bd5f3629fc0d0f39775fdf3ff3.

lutteropp commented 3 years ago

I entirely rewrote it in https://github.com/lutteropp/NetRAX/commit/fa5057591b8baa1aaf7a47c75d592ce03cba1df4. NetRAX is still fighting with failing assertions here and there (some branch lengths issue, likely caused by me trying to switch to only use the branch_lengths array in network inference/ likely broke something there)...

But it already looking like this search strategy finds the network much faster. Also, it only has to start from raxml-ng best tree.

lutteropp commented 3 years ago

Search in waves rocks! :) Here a few more arguments for it, taken from the Slack channel:

lutteropp commented 3 years ago

I highly advocate for exclusively using the search in waves strategy, at least in the first paper. It has so much optimization potential! I especially like that it allows us to (as a heuristic) reuse the old blob optimization code etc (NEPAL likelihood) within the waves...

lutteropp commented 3 years ago

So far, search in waves just randomly adds a reticulation to the new network for the next wave (the within-wave horizontal moves are then used to reposition the reticulation). Later (for the second paper), we can try to speed this up by making use of the ideas from the whiteboard meeting (pdf attached) to find positions where a reticulation is likely more beneficial... Whiteboard Meeting.pdf

lutteropp commented 3 years ago

Another reason why search in waves might be working so much more nicely right now: Only adding/removing reticulations messes up the pmatrix- and clv-indices (because they change number of nodes/edges). The search in waves could just be better at avoiding some bugs that can happen when not correctly taking care of these index changes...

stamatak commented 3 years ago

that all sounds great Sarah :-)

On 09.12.20 17:01, Sarah Lutteropp wrote:

Another reason why search in waves might be working so much more nicely right now: Only adding/removing reticulations messes up the pmatrix- and clv-indices (because they change number of nodes/edges). The search in waves could just be better at avoiding some bugs that can happen when not correctly taking care of these index changes...

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/lutteropp/NetRAX/issues/30#issuecomment-741827245, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGXB6TMY6CV4T6FAVTNY73ST6GLVANCNFSM4UR2EP2A.

-- Alexandros (Alexis) Stamatakis

Research Group Leader, Heidelberg Institute for Theoretical Studies Full Professor, Dept. of Informatics, Karlsruhe Institute of Technology

www.exelixis-lab.org

celinescornavacca commented 3 years ago

So waves is the strategy in this drawing ?

Screenshot 2020-12-18 at 09 41 57

If yes, I totally agree that we go for this, and I thought that I had already advocated for it at the beginning of the project (in slack so I am not sure and we will never fund the info, github is super!)

It is also discussed in the "moves" paper with Fabio.

lutteropp commented 3 years ago

@celinescornavacca Yes! :) NetRAX fully switched to the search in waves now. I have also added an arrow back, to check whether an arc removal in the best found n+1-reticulations network leads to a better n-reticulation-network than what we encountered so far. If this is the case, redo the n+1-reticulation-search from that updated/improved n-reticulation network.