2011-04-01 4 views
4

Lorsque je tente,objet 'module' est pas appelable - Bio.IUPAC

from Bio.Alphabet import IUPAC 
from Bio import Seq 
my_prot = Seq("AGTACACTGGT", IUPAC.protein) 

Pourquoi dois-je rencontrer l'erreur suivante:

TypeError: 'module' object is not callable 

PS: ceci est un exemple de livre de recettes du biopython

Répondre

8

dans le code source biopython la classe "Seq" se trouve dans le fichier "Seq.py" dans le chemin "/Seq/Seq.py"

Signification ... Vous devez importer Seq (un fichier) qui signifie son « module », puis appeler la classe « Seq » dans le « Seq »

« Module » Donc, essayez ceci:

from Bio.Alphabet import IUPAC 
from Bio import Seq 
my_prot=Seq.Seq("AGTACACTGGT",IUPAC.protein) 

Si jamais vous êtes confus en Python sur ce que vous importez et ce que vous appelez-vous pouvez le faire:

import Bio.Seq 
print type(Bio.Seq) 
>>> <type 'module'> 
print type(Bio.Seq.Seq) 
>>> <type 'classobj'> 
+2

En général, lorsque vous voyez ce modèle, l'auteur de la bibliothèque peut s'attendre à ce que vous écriviez 'à partir de Bio.Seq import Seq'. Ensuite, utilisez la classe 'Seq' que vous avez fait dans votre question. – Wesley

+0

homme merci :), cela m'a aidé –

+0

Notez que depuis [cette engagement] (https://github.com/biopython/biopython/commit/6d9d97b6c09c9b01d18d81900ae7d33e0d4694ea) que 'Seq' est devenu une nouvelle classe de style. Alors maintenant 'type d'impression (Bio.Seq.Seq)' retourne '' . – BioGeek

1

Ben a donné une belle réponse claire expliquant le problème. Je suppose que vous avez copié le mauvais exemple,

>>> 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() 

Au moins, c'est ce qu'il dit actuellement http://www.biopython.org/DIST/docs/tutorial/Tutorial.html

Notez que la cause de la confusion serait évité si Biopython utilisé seq (minuscules) pour le module, et Seq (titre) pour la classe - ce qui est maintenant recommandé pour Python, voir http://www.python.org/dev/peps/pep-0008/

Questions connexes