kelsey
kelsey

Reputation: 11

Why is the output file from Biopython not found?

I work with a Mac. I have been trying to make a multiple sequence alignment in Python using Muscle. This is the code I have been running:

from Bio.Align.Applications import MuscleCommandline
cline = MuscleCommandline(input="testunaligned.fasta", out="testunaligned.aln", clwstrict=True)
print(cline)
from Bio import AlignIO
align = AlignIO.read(open("testunaligned.aln"), "clustal")
print(align)

I keep getting the following error:

FileNotFoundError: [Errno 2] No such file or directory: 'testunaligned.aln'

Does anyone know how I could fix this? I am very new to Python and computer science in general, and I am totally at a loss. Thanks!

Upvotes: 1

Views: 451

Answers (1)

fabianegli
fabianegli

Reputation: 2246

cline in your code is an instance of MuscleCommandline object that you initialized with all the parameters. After the initialization, this instance can run muscle, but it will only do that if you call it. That means you have to invoke cline()

When you simply print the cline object, it will return a string that corresponds to the command you can manually run on the command line to get the same result as when you invoke cline().

And here the working code:

from Bio.Align.Applications import MuscleCommandline
cline = MuscleCommandline(
    input="testunaligned.fasta", 
    out="testunaligned.aln", 
    clwstrict=True
)
print(cline)
cline() # this is where mucle runs
from Bio import AlignIO
align = AlignIO.read(open("testunaligned.aln"), "clustal")
print(align)

Upvotes: 1

Related Questions