interSet = len(genreValue1) + len(genreValue2) - unionSet; #[unionSet.append(obj) for obj in (genreValue1 + genreValue2) if obj not in unionSet]; nominator = min( len(genreValue1), len( genreValue2 )); return float(interSet)/ float(nominator); #return float(interSet)/float(unionSet) genreMap = GenreMap.GetMap(); # weekly aggregation. print 'Merging weekly data...' widx = 0; logArr1 = DailyLog.mergeLogs( [DailyLog.createFromFile(dataDir + '/' + logfiles[fidx]) \ for fidx in range(widx * 7 + 0, widx * 7 + 7)]); #logArr1 = DailyLog.createFromFile('./data/20131122.tsv'); print 'Computing distance...' kvPairs = logArr1.genreDic.items(); pairwiseComp = dict([ ( (kvPairs[i][0], kvPairs[j][0]), \ genreMergeValue (kvPairs[i][1], kvPairs[j][1])) \ for i in range(0, len(kvPairs)) for j in range(0, len(kvPairs)) if i<j ]); #print pairwiseComp print 'Rank and output results...' sortComp = sorted(pairwiseComp.iteritems(), key=operator.itemgetter(1), reverse = True); sortComp = [item for item in sortComp if item[1] > 0]; # filtering zero ones.