'1001', '1010', '1011', '1100', '1101', '1110', '1111'
]
nPatterns = len(patterns)

for formatType in formats:
    patternFreqs = dict(zip(patterns, [0 for i in range(nPatterns)]))
    filename = 'Brackets/{0}/allBrackets{0}.json'.format(formatType)
    with open(filename, 'r') as inputFile:
        jsonData = inputFile.read().replace('\n', '')
    jsonToPython = json.loads(jsonData)
    bracketList = jsonToPython['brackets']
    numBrackets = len(bracketList)

    for i in range(numBrackets):
        bracketDict = bracketList[i]['bracket']
        bracket = buildBracketFromJson(bracketDict)
        offset = 15
        finalGames = ''
        for region in range(4):
            finalGames += bracket.fullVector[14 + region * offset]
        patternFreqs[finalGames] = patternFreqs[finalGames] + 1

    # rowSums = [patternFreqs['000'] + patternFreqs['001'], patternFreqs['010'] + patternFreqs['011'], patternFreqs['100'] + patternFreqs['101'], patternFreqs['110'] + patternFreqs['111']]
    # colSums = [patternFreqs['000'] + patternFreqs['010'] + patternFreqs['100'] + patternFreqs['110'], patternFreqs['001'] + patternFreqs['011'] + patternFreqs['101'] + patternFreqs['111']]
    # nObservations = numBrackets * numRegions

    print '{0}: Regional Finals GOF Test'.format(formatType)
    print patternFreqs

    expFreq = numBrackets / nPatterns
    chiSquare = 0
Exemplo n.º 2
0
    region = pos / 15
    offset = 15 * region
    posMod15 = pos - offset

    # Only looking at R64 and R32 positions
    if region >= 4 or posMod15 >= 12:
        continue

    print 'Position:,{0}'.format(pos)

    if posMod15 > 7:
        freqs_1 = dict(zip(patterns, zeroList))  # R32 vs. S16E8 triplet
        triplet_1 = getS16E8Positions(pos)

        for i in range(numBrackets):
            bracket = buildBracketFromJson(bracketList[i]['bracket'])
            bracketString = bracket.fullVector
            string_1 = '{0}{1}{2}'.format(bracketString[triplet_1[0]],
                                          bracketString[triplet_1[1]],
                                          bracketString[triplet_1[2]])

            string_1 = '{0}_{1}'.format(str(bracketString[pos]), string_1)

            freqs_1[string_1] += 1

        print 'R32 vs. S16/E8 Triplet:'
        printTable(pos, triplet_1, freqs_1)

        continue

    freqs_2 = dict(zip(patterns, zeroList))  # R64 vs. R32->S16->E8 path
Exemplo n.º 3
0
def testPairwiseIndependence(pos1, pos2, formatType, isPooled=False):
    patterns = ['00', '01', '10', '11']
    patternFreqs = [0 for i in range(4)]

    filename = 'Brackets/{0}/allBrackets{0}.json'.format(formatType)

    with open(filename, 'r') as inputFile:
        jsonData = inputFile.read().replace('\n', '')

    jsonToPython = json.loads(jsonData)
    bracketList = jsonToPython['brackets']
    numBrackets = len(bracketList)

    for i in range(numBrackets):
        bracketDict = bracketList[i]['bracket']
        bracket = buildBracketFromJson(bracketDict)

        nRegions = 1
        if isPooled:
            nRegions = 4

        for region in range(nRegions):
            offset = region * 15
            pos1Result = int(bracket.fullVector[pos1 + offset])
            pos2Result = int(bracket.fullVector[pos2 + offset])
            index = pos1Result * 2 + pos2Result
            patternFreqs[index] = patternFreqs[index] + 1

    nObservations = numBrackets * nRegions

    n11 = patternFreqs[3]
    n10 = patternFreqs[2]
    n01 = patternFreqs[1]
    n00 = patternFreqs[0]

    n1x = n11 + n10
    n0x = n01 + n00
    nx1 = n11 + n01
    nx0 = n10 + n00

    phiNum = n11 * n00 - n10 * n01
    phiDen = sqrt(n1x * n0x * nx1 * nx0)
    if phiDen > 0:
        phi = phiNum / phiDen
    else:
        phi = 0
    chiSquare = phi * phi * nObservations

    summaryString = '{0:02d},{1:02d},{2},{3},{4},{5},{6:.2f},{7:.2f}'.format(
        pos1, pos2, n11, n10, n01, n00, phi, chiSquare)

    # The chi-square critical value for 1 degree of freedom and alpha = 0.05
    # is 3.841. (Source: http://www.itl.nist.gov/div898/handbook/eda/section3/eda3674.htm)
    # We print the result only if it is deemed significant.

    isSignificant = 0

    if chiSquare >= 3.841:
        isSignificant = 1

    print summaryString

    return isSignificant
Exemplo n.º 4
0
def testTwoToOneIndependence(pos1, pos2, pos3, isPooled=False):
    formats = ['TTT', 'TTF', 'TFT', 'TFF', 'FTT', 'FTF', 'FFT', 'FFF']
    patterns = ['000', '001', '010', '011', '100', '101', '110', '111']

    numRegions = 4
    if not isPooled:
        numRegions = 1

    print 'formatType, pos1, pos2, pos3, chiSquared, n111, n110, n101, n100, n011, n010, n001, n000'

    for formatType in formats:
        patternFreqs = dict(zip(patterns, [0 for i in range(8)]))
        filename = 'Brackets/{0}/allBrackets{0}.json'.format(formatType)
        with open(filename, 'r') as inputFile:
            jsonData = inputFile.read().replace('\n', '')
        jsonToPython = json.loads(jsonData)
        bracketList = jsonToPython['brackets']
        numBrackets = len(bracketList)

        for i in range(numBrackets):
            bracketDict = bracketList[i]['bracket']
            bracket = buildBracketFromJson(bracketDict)
            for region in range(numRegions):
                offset = region * 15
                threeGames = ''
                if pos1 + offset >= len(bracket.fullVector):
                    print 'Houston, we have a problem. pos1 + offset = {0}'.format(
                        pos1 + offset)
                threeGames += bracket.fullVector[pos1 + offset]
                threeGames += bracket.fullVector[pos2 + offset]
                threeGames += bracket.fullVector[pos3 + offset]
                patternFreqs[threeGames] = patternFreqs[threeGames] + 1

        n000 = patternFreqs['000']
        n001 = patternFreqs['001']
        n010 = patternFreqs['010']
        n011 = patternFreqs['011']
        n100 = patternFreqs['100']
        n101 = patternFreqs['101']
        n110 = patternFreqs['110']
        n111 = patternFreqs['111']

        nxx1 = n001 + n011 + n101 + n111
        nxx0 = n000 + n010 + n100 + n110

        n11x = n111 + n110
        n10x = n101 + n100
        n01x = n011 + n010
        n00x = n001 + n000

        nObservations = numBrackets * numRegions

        rowSums = [
            patternFreqs['000'] + patternFreqs['001'],
            patternFreqs['010'] + patternFreqs['011'],
            patternFreqs['100'] + patternFreqs['101'],
            patternFreqs['110'] + patternFreqs['111']
        ]
        colSums = [
            patternFreqs['000'] + patternFreqs['010'] + patternFreqs['100'] +
            patternFreqs['110'], patternFreqs['001'] + patternFreqs['011'] +
            patternFreqs['101'] + patternFreqs['111']
        ]

        chiSquare = 0
        for r in range(len(rowSums)):
            for c in range(len(colSums)):
                expFreq = rowSums[r] * colSums[c] * 1.0 / nObservations
                if expFreq == 0:  # This hack dodges division by zero
                    expFreq = 0.00000001
                obsFreq = patternFreqs[patterns[2 * r + c]] * 1.0
                chiSquare += (obsFreq - expFreq)**2 / expFreq

        summaryString = '{12},{0:02d},{1:02d},{2:02d},{3:.3f},{4},{5},{6},{7},{8},{9},{10},{11}'.format(
            pos1, pos2, pos3, chiSquare, n111, n110, n101, n100, n011, n010,
            n001, n000, formatType)

        # if chiSquare >= 7.815: # critical value for 3 degrees of freedom, alpha = 0.05
        print summaryString