MCMCTree Error: oom p2s or zt.

Skip to first unread message

ke yang

Feb 21, 2024, 9:33:30 PMFeb 21
to PAML discussion group


 Recently, I have used the software MCMCTree which is helpful.

  I try to calculate the divergence time with approximate likelihood. But something is wrong. I don't know how to solve it. I’ve attached the sequence alignment file with phylip format, the tree file and the mcmctree.ctl.

  My first command is "mcmctree mcmctree.ctl", which is used to generate the out.BV file.

  My linux command line shows error message below:

MCMCTREE in paml version 4.9j, February 2020

Reading options from mcmctree.ctl..
finetune is deprecated now.
Reading master tree.
(((MA, (MS, MP)), MT), PP);

Reading sequence data..  1 loci

*** Locus 1 ***
ns = 5  ls = 429100000
Reading sequences, sequential format..
Reading seq # 5: MT       
Sequences read..
Counting site patterns..  0:30

Error: oom p2s or zt.

  Thank you in advance for any help and I am looking forward to your early reply.

prepared files.docx

Sishuo Wang

Feb 22, 2024, 12:59:07 AMFeb 22
to PAML discussion group
Dear Ke,

Not sure, but I guess perhaps your sequence is too long indicated by "ls = ", since it occurred perhaps during p2s which means counting and mapping pattern to site? i think other experts may want to help. you might also want to upload your files so that others can directly test. thx!


Sandra AC

Feb 22, 2024, 3:12:44 AMFeb 22
to PAML discussion group
Hi there,

I believe that the error has to do with an "out of memory" problem, but I may be wrong. Have you tried to increase the requested memory if you are running these analyses in a server? If you are running this analysis in your PC, perhaps the program is requesting more memory than the one your PC has, which may be causing this error. Perhaps other users have other suggestions!

All the best,


Feb 22, 2024, 2:50:36 PMFeb 22
to PAML discussion group
i took a look at the code that generated the error message.   "oom" is my short form for "out of memory.
yes, as sandra and sishuo mentioned, this is a memory problem becauses you have a large dataset.
with 429100000 sites (about 500M), the program will easily run out of momery".  
in this  case, it is trying to get two pieces of memory from the OS: 
for p2s.   this will be 2GB if one int is 4 bytes or 4GB if one int is 8bytes.
the second piece is 
ls*(ns+1) = ls*6 = 3GB.
i think usually with today's computers/compilers, you can get 2GB in one malloc call, but there may be problems if you try to get 4GB or more.

the other thing is that even if memory is not a problem i suspect you will have other computaitonal problems..  
the simplest solution may be for you to sample 10k or 100k sites from 0.5GB sites.
if you are analysing all sites as one partition, 10k sites may be just as good as 0.5GB sites, because the uncertainties in time estimates are mostly from the uncertainties in fossil calibrations, rather than from random sampling errors due to a finite number of sites. 
best wishes, ziheng
Reply all
Reply to author
0 new messages