code: def __getSequenceVariants(self, x1, polyStart, polyStop, listSequence) :
  		
  		if polyStart < len(self.polymorphisms) and polyStart < polyStop: 
  			sequence = copy.copy(listSequence)
  			ret = []
  			
  			pk = self.polymorphisms[polyStart]
  			posInSequence = pk[0]-x1
  			if posInSequence < len(listSequence) : 
  				for allele in pk[1] :
  					sequence[posInSequence] = allele
  					ret.extend(self.__getSequenceVariants(x1, polyStart+1, polyStop, sequence))
  			
  			return ret
  		else :
  			return [''.join(listSequence)]
docs: polyStop, is the polymorphisme at wixh number where the calcul of combinaisons stops