import string

sequence = 'acgtccgcgcgtata'

def baseGCCount(base):
    if ((base == 'C') or (base == 'G')):
        return 1
    if ((base == 'c') or (base == 'g')):
        return 1
    return 0

def sequenceGCCount(sequence,position,size):
    count = 0
    for pos in range(position, position+size):
        count = count + baseGCCount(sequence[pos])
    return count/float(size)

def acceptableGCCount(sequence, position, size):
    gccount = sequenceGCCount(sequence,position,size)
    print('Trying segment %s: [pos=%d, size=%d, gccount=%f]' % (sequence[position:position+size],position,size, gccount))
    threshold = 0.99
    return (sequenceGCCount(sequence,position,size) > threshold)

def findSegmentPositionAroundPivot(sequence, pivot, segmentSize,acceptableSegment):
    if (acceptableSegment(sequence,pivot, segmentSize)):
        return pivot
    else:
        for delta in range(1,int(segmentSize/2.0)+1):
            if ((pivot+delta < len(sequence)) and (acceptableSegment(sequence,pivot+delta,segmentSize))):
                return pivot+delta
            elif ((pivot-delta >= 0) and (acceptableSegment(sequence,pivot-delta,segmentSize))):
                return pivot-delta
        print ("Error: Later throw exception")

def findSampleSegments(sequence,pivotSpacing, segmentSize,acceptable):
    for pivot in range(0,len(sequence),pivotSpacing):
        print (findSegmentPositionAroundPivot(sequence, pivot,segmentSize,acceptable))
        
