def initSeasonFactors(self, timeSeries):
        """ Computes the initial season smoothing factors.

        :return:    Returns a list of season vectors of length "seasonLength".
        :rtype: list
        """

        seasonLength = self.get_parameter("seasonLength")
        try:
            seasonValues = self.get_parameter("seasonValues")
            assert seasonLength == len(seasonValues), "Preset Season Values have to have to be of season's length"
            return seasonValues
        except KeyError:
            pass

        seasonValues = []
        completeCycles = len(timeSeries) / seasonLength
        A = {} #cache values for A_j

        for i in xrange(seasonLength):
            c_i = 0
            for j in xrange(completeCycles):
                if j not in A:
                    A[j] = self.computeA(j, timeSeries)
                c_i += timeSeries[(seasonLength * j) + i][1] / A[j] #wikipedia suggests j-1, but we worked with indices in the first place
            c_i /= completeCycles
            seasonValues.append(c_i)
        return seasonValues
def initSeasonFactors ( self , timeSeries ) : seasonLength = self . get_parameter ( "seasonLength" ) try : seasonValues = self . get_parameter ( "seasonValues" ) assert seasonLength == len ( seasonValues ) , "Preset Season Values have to have to be of season's length" return seasonValues except KeyError : pass seasonValues = [ ] completeCycles = len ( timeSeries ) / seasonLength A = { } for i in xrange ( seasonLength ) : c_i = 0 for j in xrange ( completeCycles ) : if j not in A : A [ j ] = self . computeA ( j , timeSeries ) c_i += timeSeries [ ( seasonLength * j ) + i ] [ 1 ] / A [ j ] c_i /= completeCycles seasonValues . append ( c_i ) return seasonValues
Computes the initial season smoothing factors.

        :return:    Returns a list of season vectors of length "seasonLength".
        :rtype: list