[Biopython-dev] [Bug 2853] New: Support the "in" keyword with Seq objects / define __contains__ method

bugzilla-daemon at portal.open-bio.org bugzilla-daemon at portal.open-bio.org
Tue Jun 9 12:02:21 EDT 2009


http://bugzilla.open-bio.org/show_bug.cgi?id=2853

           Summary: Support the "in" keyword with Seq objects / define
                    __contains__ method
           Product: Biopython
           Version: Not Applicable
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Main Distribution
        AssignedTo: biopython-dev at biopython.org
        ReportedBy: biopython-bugzilla at maubp.freeserve.co.uk


Currently the "in" keyword isn't properly supported in the Seq object, meaning
instead of this:

>>> if "TAG" in my_seq:
>>>    print "Found TAG"

you have to do something else like this (using the find method added on Bug
2809):

>>> if my_seq.find("TAG") >= 0 :
>>>    print "Found TAG"

In dealing with Bug 2809 we already have a policy in place for dealing with the
alphabet issues, so the code to do this is very simple. Patch to follow.

Because we don't define __contains__ yet, when someone uses "in" at the moment
Python does something indirectly via our __getitem__ method, which means "in"
returns True when used for a single letter (as a string) that is in the
sequence, and False otherwise (e.g. a multi-letter string, or a Seq object).

i.e. currently:

>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_dna, generic_rna, generic_protein
>>> my_dna=Seq("AAGTGCTAATAGAAAAA", generic_dna)
>>> "N" in my_dna #works
False
>>> "A" in my_dna #works
True
>>> Seq("A") in my_dna #I think this is broken, should be True
False
>>> "TAG" in my_dna #I think this is broken, should be True
False
>>> "TAG" in my_dna.tostring()
True
>>> "TAG" in str(my_dna)
True


-- 
Configure bugmail: http://bugzilla.open-bio.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


More information about the Biopython-dev mailing list