[Biopython] Primer3Commandline rookie question
Jukka-Pekka Verta
jp.verta at gmail.com
Wed Nov 3 16:30:19 EDT 2010
Thanks Brad,
calling
test()
results in error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.6/site-packages/biopython-1.55-py2.6-macosx-10.6-universal.egg/Bio/Application/__init__.py", line 487, in __call__
% (str(self), return_code))
RuntimeError: Command eprimer3 -auto -outfile=output.pr3 -sequence=sequence -hybridprobe=True -psizeopt=200 -oligosize=20 -explainflag=True returned non-zero exit status 127
as does calling
import subprocess
subprocess.check_call(str(test))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 499, in check_call
retcode = call(*popenargs, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 486, in call
return Popen(*popenargs, **kwargs).wait()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 672, in __init__
errread, errwrite)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1201, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Ummm.... ?
JP
On 2010-11-03, at 3:38 PM, Brad Chapman wrote:
> JP;
>
>> Thanks Peter for the response.
>>
>> Though doing
>>
>> test = Primer3Commandline(sequence="sequence", auto=True, hybridprobe=True)
>>
>> doesn't fix the problem (no output is created). Other suggestions?
>
> In addition to what Peter mentioned, your code here creates a
> commandline object, but never actually runs it:
>
>> test = Primer3Commandline(sequence = sequence_handle, auto=True, hybridprobe=True)
>> test.explainflag = True
>> test.oligosize=20
>> test.psizeopt=200
>> test.outfile = "output.pr3"
>> print test
>
> This is probably why you weren't seeing any error messages from passing in
> a file handle, and explains why there is no output file. You can
> either call your command line directly:
>
> test()
>
> or use the Python subprocess module:
>
> subprocess.check_call(str(test))
>
> [As an aside, it's good practice to use meaningful variable names.
> At least a 'cl' for commandline would be nice here and may help
> you spot these types of issues.]
>
> Hope this helps,
> Brad
More information about the Biopython
mailing list