Pas-Kapli / mptp

mPTP - a tool for single-locus species delimitation
GNU Affero General Public License v3.0
24 stars 5 forks source link

mptp: random.c:119: random_delimitation: Assertion `count == species_count' failed. Aborted (core dumped) #82

Closed githubgig closed 6 years ago

githubgig commented 6 years ago

Hello,

I'm trying to run mptp in MCMC mode with the following command: mptp --mcmc 100000000 --multi --mcmc_runs 10 --mcmc_log 1000000 --minbr 0.0004886600 --outgroup B301 --outgroup_crop --tree_file Tree.nwk --mcmc_burnin 30000000 --seed 49575 --mcmc_startrandom --output_file mptp_MCMC

I tried running this several times and end up with three scenarios. Sometimes the MCMC runs start and reach 10runs, sometimes it only a few runs are completed, and sometimes it doesn't start at all. However, in all of these three cases, the command is not fully executed and I get the following error message and the program is exited: Computing initial delimitation... mptp: random.c:119: random_delimitation: Assertion `count == species_count' failed. Aborted (core dumped)

I'm running mptp on a Linux (Ubuntu 14.04 system) and mptp recognizes the system configuration printing right after the command: mptp 0.2.3_linux_x86_64, 995GB RAM, 64 cores

Thinking this may well be a Linux/Ubuntu ulimit issue, I tried changing to ulimit -c unlimited and ran the command again. However, I get the same message which makes me think there might be some coding issue at the `count == species_count'.

I hope there is a solution to this and appreciate any help to move forward with the analysis.

Thank you.

xflouris commented 6 years ago

Hi @githubgig , thanks for the bug report. How big is the tree you are using?

Could you send me your input tree at flouris@gmail.com such that I can have a look?

Best, tomas

xflouris commented 6 years ago

Hi @githubgig , I have now fixed the issue and created a new release 0.2.4. The problem was during the construction of the initial random delimitation for each run. The method genertes a random number X of putative species and attempts to construct a starting delimitation using a branch-and-bound -like algorithm, by randomly selecting inner nodes to collapse. However, if X is close to the number of tips, it can happen that this randomized construction does not manage to create a delimitation with exactly X species, but Y (where Y smaller than X). Until version 0.2.3, if that happened, (i.e. X != Y) the program stops and displays the error you received.

I have now changed the code, to simply accept the delimitaiton with Y putative species as the starting random tree. This fix does not affect affect correctness, neither previously obtained results.

Please let me know if it works for you so that I can close the issue.

githubgig commented 6 years ago

Hi Tomas, The new release finishes successfully in MCMC mode now. Thanks for resolving this quickly and for providing the background for the error message and the fix.