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()
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()