def testLen(self): a = HashSet() self.assertEqual(len(a), 0, "incorrect default size") a.add('a') a.add('b') self.assertEqual(len(a), 2, "incorrect size") a.remove('b') self.assertEqual(len(a), 1, "incorrect size after removal") a.add('a') self.assertEqual(len(a), 1, "incorrect size after duplicate add")
def testLen(self): a = HashSet() self.failUnless(len(a) == 0, "incorrect default size") a.add('a') a.add('b') self.failUnless(len(a) == 2, "incorrect size") a.remove('b') self.failUnless(len(a) == 1, "incorrect size after removal") a.add('a') self.failUnless(len(a) == 1, "incorrect size after duplicate add")
class System: """Abstraction for a collection of reactions. This class is used in the Bio.Pathway framework to represent an arbitrary collection of reactions without explicitly defined links. Attributes: None """ def __init__(self, reactions = []): """Initializes a new System object.""" self.__reactions = HashSet(reactions) def __repr__(self): """Returns a debugging string representation of self.""" return "System(" + ",".join(map(repr,self.__reactions.list())) + ")" def __str__(self): """Returns a string representation of self.""" return "System of " + str(len(self.__reactions)) + \ " reactions involving " + str(len(self.species())) + \ " species" def add_reaction(self, reaction): """Adds reaction to self.""" self.__reactions.add(reaction) def remove_reaction(self, reaction): """Removes reaction from self.""" self.__reactions.remove(reaction) def reactions(self): """Returns a list of the reactions in this system.""" return self.__reactions.list() def species(self): """Returns a list of the species in this system.""" s = HashSet(reduce(lambda s,x: s + x, [x.species() for x in self.reactions()], [])) return s.list() def stochiometry(self): """Computes the stoichiometry matrix for self. Returns (species, reactions, stoch) where species = ordered list of species in this system reactions = ordered list of reactions in this system stoch = 2D array where stoch[i][j] is coef of the jth species in the ith reaction, as defined by species and reactions above """ # Note: This an inefficient and ugly temporary implementation. # To be practical, stochiometric matrices should probably # be implemented by sparse matrices, which would require # NumPy dependencies. # # PS: We should implement automatic checking for NumPy here. species = self.species() reactions = self.reactions() stoch = [] * len(reactions) for i in range(len(reactions)): stoch[i] = 0 * len(species) for s in reactions[i].species(): stoch[species.index(s)] = reactions[i].reactants[s] return (species, reactions, stoch)
class System: """Abstraction for a collection of reactions. This class is used in the Bio.Pathway framework to represent an arbitrary collection of reactions without explicitly defined links. Attributes: None """ def __init__(self, reactions=[]): """Initializes a new System object.""" self.__reactions = HashSet(reactions) def __repr__(self): """Returns a debugging string representation of self.""" return "System(" + ",".join(map(repr, self.__reactions.list())) + ")" def __str__(self): """Returns a string representation of self.""" return "System of " + str(len(self.__reactions)) + \ " reactions involving " + str(len(self.species())) + \ " species" def add_reaction(self, reaction): """Adds reaction to self.""" self.__reactions.add(reaction) def remove_reaction(self, reaction): """Removes reaction from self.""" self.__reactions.remove(reaction) def reactions(self): """Returns a list of the reactions in this system.""" return self.__reactions.list() def species(self): """Returns a list of the species in this system.""" s = HashSet( reduce(lambda s, x: s + x, [x.species() for x in self.reactions()], [])) return s.list() def stochiometry(self): """Computes the stoichiometry matrix for self. Returns (species, reactions, stoch) where species = ordered list of species in this system reactions = ordered list of reactions in this system stoch = 2D array where stoch[i][j] is coef of the jth species in the ith reaction, as defined by species and reactions above """ # Note: This an inefficient and ugly temporary implementation. # To be practical, stochiometric matrices should probably # be implemented by sparse matrices, which would require # NumPy dependencies. # # PS: We should implement automatic checking for NumPy here. species = self.species() reactions = self.reactions() stoch = [] * len(reactions) for i in range(len(reactions)): stoch[i] = 0 * len(species) for s in reactions[i].species(): stoch[species.index(s)] = reactions[i].reactants[s] return (species, reactions, stoch)