ssolo / ALE

Amalgamated likelihood estimation (ALE) is a probabilistic approach to exhaustively explore all reconciled gene trees that can be amalgamated as a combination of clades observed in a sample of gene trees. We implement the ALE approach in the context of a reconciliation model (cf. http://arxiv.org/abs/1211.4606 ), which allows for the duplication, transfer and loss of genes. We use ALE to efficiently approximate the sum of the joint likelihood over amalgamations and to find the reconciled gene tree that maximizes the joint likelihood among all such trees.
46 stars 15 forks source link

error when computing consensus tree with ALEml #15

Closed flass closed 5 years ago

flass commented 6 years ago

Hi Gergely and co.,

How are things in Budapest?

I am encountering a bug when running ALEml: it throws a bio++ error when trying to compute the consensus tree.

Results in: ./ENTCGC004129-collapsed-Gtrees.nwk.ale.ml_rec
Calculating consensus tree.
terminate called after throwing an instance of 'bpp::Exception'
  what():  TreeTools::thresholdConsensus. Empty vector passed

Fortunately the main reconciliation file is already saved at that point so it's not a massive loss! Still annoying though. I had that problem with ALE compiled from the commit 63f0a3c964074a15f61fd45156ab9e10b5dd45ef but reproduced it when re-compiling with the last version (commit 23c4a6a896593ef1dc9bd67ace08616e3ad6e0e8).

Would you have an idea of what's the issue?

you can find the input and output data in the attached archive: ENTCGC004129.ale.tar.gz

Cheers! Florent

flass commented 6 years ago

OK I think I know where it came from... my bad. No reconciled gene trees were being sampled - normal it's complicated to compute a consensus! - I guess because I was using the same command-line syntax for ALEml than for ALEml_undated, with ALEml taking raw arguments whereas ALEml_undated take them with argument names: ./ALEml species_tree.newick gene_tree_sample.ale [samples] [gene_name_separator] ./ALEml_undated species_tree.newick gene_tree_sample.ale sample=number_of_samples separators=gene_name_separator

sorry for the fake issue.

I may suggest that you could make ALEml throw an error or warning when the provided parameter does not have the right type, as here it silently interpreted sample=1000 as a value of 0, which led to no sampling taking place. An homogeneous command-line interface between programs would be preferable as well, but really it's down to the user to read the manual correctly...

F