Hi Arthur,
In this case, it is always best to check first whether there have been issues with CODEML settings, the format of the input files, and how the latter were inferred:
1. Have you made sure that the alignment has been inferred correctly and that you are using a codon alignment in PHYLIP format? In other words, have you removed stop codons, made sure that you have deleted or masked unreliable alignment regions, etc.?
2. Have you removed the branch lengths from the tree file you are using?
3. You are running site models, so you need to use an unrooted tree. Is this the case?
4. Have you checked that you are enabling the correct settings to run M0, M1a, M2a, M7, and M8? E.g., `model = 0` and `NSsites = 0 1 2 7 8` to run these site models in a batch, `clock = 0` as no clock is assumed, `fix_omega = 0` and `omega = 0.5` as this enables omega to be estimated, `seqtype = 1` to be codon data, `cleandata = 0` as you do not want to remove sites with ambiguity data. You may want to use the mutation-selection model with observed codon frequencies used as estimates (`CodonFreq = 7` and `estFreq = 0`) as this model accounts for the mutational bias and selection affecting codon usage. Note that, if you are running M8a (null), you will need to set `model = 0`, `NSsites = 8` but then change `fix_omega = 1` and `omega = 1` as you are fixing the value of omega = 1.
4. Have you run LRTs and compared M0 vs M1a, M1a vs M2a, M7 vs M8 to make sure whether the results observed are significant? The LRT might not be significant for some of these model comparisons.
5. Are you checking the BEB results in the CODEML report for the models of positive selection (i.e., M2a and M8)? Remember that the BEB method is an improvement over NEB and accommodates the uncertainties in the MLEs. While CODEML reports results from both methods, the BEB should be used instead of the NEB. If any sites are listed under the BEB analysis, you should only consider sites which posterior probability is larger than 95% (sites will have a "*") or than 99% (sites will have "**"). Also, note that the BEB calculation does not take place under the null models (e.g., M1a or M7), so you will only see this under the models of positive selection (e.g., M2a and M8).
Hope this helps to narrow down the possibility of any technical issues!
All the best,
Sandra