Esempio n. 1
0
def updateAvgSS(dataFN, oFF, simDir, simBase, mm, numSims = 100):

    #get simulation information (# unique sims, num UFBS)
    fileNames = ['%s/simulation.%s/%s.%s' % (simDir, i, simBase, mm) for i in range(numSims)]
    sID_numSimUFBS = {}
    sID_simSeqs = {}
    for fN in fileNames:
        oNX = Nexus(fN, oFF)
        oNX.load(['numUFBS', 'sequence'])
        while oNX.nextID():
            if oNX.sequence in sID_simSeqs.get(oNX.id, set()):
                pass #dont count again
            else:
                sID_numSimUFBS.setdefault(oNX.id, []).append(oNX.numUFBS)
                sID_simSeqs.setdefault(oNX.id, set()).add(oNX.sequence)

    #update data based on sim info
    dataNX = Nexus(dataFN, oFF)
    dataNX.load(['avgNumSimSS', 'numUniqueSims', 'totalNumUFBSSim'])
    while dataNX.nextID():

        numUniqueSims = len(sID_numSimUFBS.get(dataNX.id, []))
        totalSimUFBS = sum(sID_numSimUFBS.get(dataNX.id, []))
        avgSimUFBS = totalSimUFBS/float(numUniqueSims) if numUniqueSims != 0 else -1
        dataNX.avgNumSimSS = avgSimUFBS
        dataNX.numUniqueSims = numUniqueSims
        dataNX.totalNumUFBSSim = totalSimUFBS 

    dataNX.save()
Esempio n. 2
0
def updateAvgSS(dataFN, oFF, simDir, simBase, mm, numSims=100):

    #get simulation information (# unique sims, num UFBS)
    fileNames = [
        '%s/simulation.%s/%s.%s' % (simDir, i, simBase, mm)
        for i in range(numSims)
    ]
    sID_numSimUFBS = {}
    sID_simSeqs = {}
    for fN in fileNames:
        oNX = Nexus(fN, oFF)
        oNX.load(['numUFBS', 'sequence'])
        while oNX.nextID():
            if oNX.sequence in sID_simSeqs.get(oNX.id, set()):
                pass  #dont count again
            else:
                sID_numSimUFBS.setdefault(oNX.id, []).append(oNX.numUFBS)
                sID_simSeqs.setdefault(oNX.id, set()).add(oNX.sequence)

    #update data based on sim info
    dataNX = Nexus(dataFN, oFF)
    dataNX.load(['avgNumSimSS', 'numUniqueSims', 'totalNumUFBSSim'])
    while dataNX.nextID():

        numUniqueSims = len(sID_numSimUFBS.get(dataNX.id, []))
        totalSimUFBS = sum(sID_numSimUFBS.get(dataNX.id, []))
        avgSimUFBS = totalSimUFBS / float(
            numUniqueSims) if numUniqueSims != 0 else -1
        dataNX.avgNumSimSS = avgSimUFBS
        dataNX.numUniqueSims = numUniqueSims
        dataNX.totalNumUFBSSim = totalSimUFBS

    dataNX.save()