[Biopython] subclassing SeqRecord

Björn Johansson bjorn_johansson at bio.uminho.pt
Tue Apr 26 11:16:22 EDT 2011


Hi, I tried to subclass the SeqRecord object to make it take a new parameter
which is a int describing the annealing position for a primer. I tried the
code below, but it does not produce the result I want and it is also ugly,
mostly where indicated. This question may be more about Python the
BioPython, but I run into the wall here.
The comments in the code point out where it goes wrong.

I have RTFM but in the Python docs, but I still did not figure this one out.
I suspect that I am complicating things.

If someone knows how to do this, I would be grateful!

cheers,
bjorn


from Bio.Alphabet.IUPAC import ambiguous_dna
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq

#Subclassing of of the SeqRecord class

class Primer(SeqRecord):
    def __init__(self, primer, annealing_position):
        assert type(primer) == SeqRecord
        primer.seq.alphabet = ambiguous_dna
        SeqRecord.__init__(self,primer,primer.id,primer.name,primer.description)

        # Is this how to do it ???
        #I want to pass the SeqRecord object given as parameter to my new
primer object
        self.annealing_position = annealing_position

a = SeqRecord(Seq("aaa"),"id","name")

print a.seq
# prints aaa

print type(a.seq)
# prints <class 'Bio.Seq.Seq'>

b= Primer(a,33)

print b.annealing_position
# prints 33

print b.seq
#prints
#ID: id
#Name: name
#Description: <unknown description>
#Number of features: 0
#Seq('aaa', IUPACAmbiguousDNA())

print type(b.seq)
#<class 'Bio.SeqRecord.SeqRecord'>
# here I was expection Bio.Seq.Seq


More information about the Biopython mailing list