def betterclumpfinding(genome, k, t, L):
    frequentpatterns = []
    clump = []
    for i in range(0, pow(4, k)):
        clump.append(0)
    text = genome[0:L]
    freqArray = computingfrequencies.computing_frequencies(text, k)

    for i in range(0, pow(4, k)):
        if freqArray[i] >= t:
            clump[i] = 1

    for i in range(1, len(genome) - L + 1):
        firstPattern = genome[i - 1 : i - 1 + k]
        index = computingfrequencies.patternToNumber(firstPattern)
        freqArray[index] = freqArray[index] - 1
        lastPattern = genome[i + L - k : i + L]
        index = computingfrequencies.patternToNumber(lastPattern)
        freqArray[index] = freqArray[index] + 1
        if freqArray[index] >= t:
            clump[index] = 1

    for i in range(0, pow(4, k)):
        if clump[i] == 1:
            pattern = numberToPattern(i, k)
            frequentpatterns.append(pattern)
    return frequentpatterns
def betterclumpfinding(genome, k, t, L):
    frequentpatterns = []
    clump = []
    for i in range(0, pow(4, k)):
        clump.append(0)
    text = genome[0:L]
    freqArray = computingfrequencies.computing_frequencies(text, k)

    for i in range(0, pow(4, k)):
        if freqArray[i] >= t:
            clump[i] = 1

    for i in range(1, len(genome) - L + 1):
        firstPattern = genome[i - 1:i - 1 + k]
        index = computingfrequencies.patternToNumber(firstPattern)
        freqArray[index] = freqArray[index] - 1
        lastPattern = genome[i + L - k:i + L]
        index = computingfrequencies.patternToNumber(lastPattern)
        freqArray[index] = freqArray[index] + 1
        if freqArray[index] >= t:
            clump[index] = 1

    for i in range(0, pow(4, k)):
        if clump[i] == 1:
            pattern = numberToPattern(i, k)
            frequentpatterns.append(pattern)
    return frequentpatterns
def clumpfinding(genome, k, t, L):
    frequentpatterns = []
    clump = []
    for i in range(0, pow(4, k)):
        clump.append(0)
    for i in range(0, len(genome) - L + 1):
        text = genome[i : i + L]
        freqArray = computingfrequencies.computing_frequencies(text, k)
        for indx in range(0, pow(4, k)):
            if freqArray[indx] >= t:
                clump[indx] = 1
    for i in range(0, pow(4, k)):
        if clump[i] == 1:
            pattern = numberToPattern(i, k)
            frequentpatterns.append(pattern)
    return frequentpatterns
def clumpfinding(genome, k, t, L):
    frequentpatterns = []
    clump = []
    for i in range(0, pow(4, k)):
        clump.append(0)
    for i in range(0, len(genome) - L + 1):
        text = genome[i:i + L]
        freqArray = computingfrequencies.computing_frequencies(text, k)
        for indx in range(0, pow(4, k)):
            if freqArray[indx] >= t:
                clump[indx] = 1
    for i in range(0, pow(4, k)):
        if clump[i] == 1:
            pattern = numberToPattern(i, k)
            frequentpatterns.append(pattern)
    return frequentpatterns