kr-colab / discoal

discoal is a coalescent simulation program capable of simulating models with recombination, selective sweeps, and demographic changes including population splits, admixture events, and ancient samples
GNU General Public License v3.0
48 stars 10 forks source link

Repeated positions provided in simulation output #31

Open MattHartfield opened 4 months ago

MattHartfield commented 4 months ago

Hi, I noticed that some positions are repeated in the output file, so two different polymorphism states are assigned to the same location.

Minimal example: discoal 30 1 110000 -t 550 -r 110 > all_sims.out

Then obtaining positions and showing duplicates: sed -n 6p all_sims.out | awk -F ': ' '{print $2}' | awk '{for(i = 1; i <= NF; i++) printf ("%.6f\n",$i)}' | uniq -D

andrewkern commented 4 months ago

Hi @MattHartfield -

this is about the accuracy of the printf formatting. If you'd like to turn it up for greater precision you could alter the makeGametesMS() function in discoal_functions.c and alter line 2079 to something like

fprintf(stdout,"%.9lf ",allMuts[i] );

that will print up to 9 digits to the right of the decimal place. run make again and you should be all set i believe.

andrewkern commented 4 months ago

generally if this is biting people I'm happy to update the discoal code

MattHartfield commented 4 months ago

Hi! That works better now, thanks for the quick reply!