[Biopython-dev] [Bug 2437] comparing alphabet references causes assert to fail when it should pass

bugzilla-daemon at portal.open-bio.org bugzilla-daemon at portal.open-bio.org
Mon Mar 3 16:53:59 EST 2008


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





------- Comment #2 from biopython-bugzilla at maubp.freeserve.co.uk  2008-03-03 16:53 EST -------
Defining __eq__ and __ne__ methods for the Alphabet class would probably work,
but we would also have to do this for the AlphabetEncoder "decorator" class. 
I'm a little wary of this...

    def __ne__(self, other) :
        """Check if this alphabet object <> another alphabet"""
        return not self == other

    def __eq__(self, other) :
        """Check if this alphabet object == another alphabet"""
        #TODO - what exactly do we want to check here?
        if id(self) == id(other) :
            return True
        if not isinstance(other, Alphabet) \
        and not isinstance(other, AlphabetEncoder):
            raise ValueError("Comparing an alphabet to a non-alphabet")
        if self.__class__ <> other.__class__ :
            return False
        if self.size <> other.size :
            return False
        if self.letters <> other.letters :
            return False
        if dir(self) <> dir(other) :
            return False
        for attr in ["gap_char", "stop_symbol"] :
            if hasattr(self, attr) <> hasattr(other, attr) :
                return False
            if hasattr(self, attr) and hasattr(other, attr) \
            and self.__getattr__(attr) <> other.__getattr_(attr) :
                return False
        #Close enough?
        return True

Relaxing the assertion in Bio.Translate would be much safer in terms of any
potential side effects.


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