This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Biopython And Codeml Module. Error.

Hi, I'm trying to use the codeml biopython module. I tried with my own alignment and tree's files but since it was not working I decided to try the ones that come with PAML, lysozyme_small set.

Loading the .ctl file seems to work fine but when I actually run the model I get a subprocess error that I cannot understand. Any help will be appreciated.

>>> import subprocess
>>> from Bio.Phylo.PAML import codeml
>>> cml = codeml.Codeml()
>>> cml.read_ctl_file("codemlfreeratioMASTER.ctl")
>>> cml.print_options() verbose = 0 CodonFreq = 3 cleandata = 1 fix_blength = None NSsites = 0 fix_omega = 0 clock = 0 ncatG = 8 runmode = 0 fix_kappa = 0 fix_alpha = 1 Small_Diff = 5e-07 method = 0 fix_rho = None Malpha = 0 aaDist = 0 RateAncestor = 1 aaRatefile = dat/jones.dat icode = 0 rho = None alpha = 0.0 seqtype = 1 omega = 0.4 getSE = 0 noisy = 9 Mgene = 0 kappa = 2 model = 1 ndata = None
>>> cml.alignment 'output/lysozymeSmall.nuc'
>>> cml.run() 

Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/usr/local/lib/python2.7/dist-packages/biopython-1.60-py2.7-linux-x86_64.egg/Bio/Phylo/PAML/codeml.py", line 190, in run
            Paml.run(self, ctl_file, verbose, command)   File "/usr/local/lib/python2.7/dist-packages/biopython-1.60-py2.7-linux-x86_64.egg/Bio/Phylo/PAML/_paml.py", line 139, in run
            stdout=subprocess.PIPE)   File "/usr/lib/python2.7/subprocess.py", line 493, in call
            return Popen(*popenargs, **kwargs).wait()   File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
            errread, errwrite)   File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
            raise child_exception OSError: [Errno 2] No such file or directory
biopython paml codeml

There is something amiss with your example - the parameter setting part seems to be missing a whole load of commas or something.

1 answer

From the trace, subprocess is telling you it can't find the file you want to run.

Is codeml on your $path? If not you can specify a path to the executable with the command argumentent of codeml.run()

I had id exported, but there was an error there. Thanks!

Log in to answer this question.