When I try,
from Bio.Alphabet impor开发者_Go百科t IUPAC
from Bio import Seq
my_prot = Seq("AGTACACTGGT", IUPAC.protein)
Why do I encounter the following error:
TypeError: 'module' object is not callable
PS: this is an Example from the BioPython's Cookbook
In the BioPython source code the "Seq" class is located in the file "Seq.py" in the path "/Seq/Seq.py"
Meaning... You need to import Seq (a file) which means its a "Module" and then call the class "Seq" within the 'Module' 'Seq'
So try this:
from Bio.Alphabet import IUPAC
from Bio import Seq
my_prot=Seq.Seq("AGTACACTGGT",IUPAC.protein)
If you are ever confused in Python about what you are importing and what you are calling you can do this:
import Bio.Seq
print type(Bio.Seq)
>>> <type 'module'>
print type(Bio.Seq.Seq)
>>> <type 'classobj'>
Ben gave a nice clear answer explaining the problem. I guess you copied the example wrong,
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> my_prot = Seq("AGTACACTGGT", IUPAC.protein)
>>> my_prot
Seq('AGTACACTGGT', IUPACProtein())
>>> my_prot.alphabet
IUPACProtein()
At least, that's what it currently says http://www.biopython.org/DIST/docs/tutorial/Tutorial.html
Note that the cause of the confusion would be avoided had Biopython used seq (lower case) for the module, and Seq (title case) for the class - which is now recommended practice for Python, see http://www.python.org/dev/peps/pep-0008/
精彩评论