[Biopython] Alphabet question

Eric Talevich eric.talevich at gmail.com
Tue May 11 19:34:22 EDT 2010


On Tue, May 11, 2010 at 7:11 PM, Sebastian Bassi <sbassi at gmail.com> wrote:

> I tried this:
>
> >>> from Bio.Seq import Seq
> >>> from Bio.Alphabet import IUPAC
> >>> seq_1 = Seq('GATCGATGGGCCTATATAGGA', IUPAC.unambiguous_dna)
> >>> seq_1
> Seq('GATCGATGGGCCTATATAGGA', IUPACUnambiguousDNA())
>
> I wonder why the alphabet argument is entered as IUPAC.unambiguous_dna
> but when I see the object, this argument is printed as
> IUPACUnambiguousDNA().
>

Hi Sebastian,

The IUPAC.unambiguous_dna object is a copy of IUPACUnambiguousDNA(), already
instantiated. It shows up in the source code of Bio/Alphabet/IUPAC.py as:

unambiguous_dna = IUPACUnambiguousDNA()

So you could do:

>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> seq_1 = Seq('GATCGATGGGCCTATATAGGA', IUPAC.IUPACUnambiguousDNA())
>>> seq_1
Seq('GATCGATGGGCCTATATAGGA', IUPACUnambiguousDNA())

Looking at it that way, the repr() is kind of deceptive. It doesn't match
unless you've imported the IUPACUnambiguousDNA class directly.


The problem with this is that I was expecting to do:
>
> seq_2 = Seq('GATCGATGGGCCTATATAGGA', IUPACUnambiguousDNA())
>
> Since:
>
> >>> seq_1
> Seq('GATCGATGGGCCTATATAGGA', IUPACUnambiguousDNA())
>
> But when I try to do it, I get this:
>
> >>> seq_2 = Seq('GATCGATGGGCCTATATAGGA', IUPACUnambiguousDNA())
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> NameError: name 'IUPACUnambiguousDNA' is not defined
>

The NameError occurs because you haven't imported IUPACUnambiguousDNA
directly; you just have the IUPAC module, so you need the "IUPAC." prefix.

Cheers,
Eric


More information about the Biopython mailing list