Example #1
0
def get_combined_ranks(ranklists):
	emptyRankList = 0
	nonEmptyRankList = -1
	for ranklist in ranklists:
		if len(ranklist) == 0:
			emptyRankList += 1
	if emptyRankList >= 1:
		for ranklist in ranklists:
			if len(ranklist) > 0:
				sorted_ranklist = sorted(ranklist.items(), key=lambda x:x[1], reverse = True)
				return sorted_ranklist[:10],1.0
		return None,None

	ranker_names = [str(i) for i in xrange(0,len(ranklists))]
	objects = {}
	oid = 0
	oid_name = {}
	num = len(ranklists)
	for i in xrange(0,num):
		sorted_ranklist = sorted(ranklists[i].items(), key=lambda x:x[1], reverse = True)
		for k in xrange(0,len(sorted_ranklist)):
			key = sorted_ranklist[k][0]
			val = float(sorted_ranklist[k][1])
			if key not in objects:
				oid_name[oid] = key
				oid += 1
				objects[oid] = [None for j in xrange(0,num)]
			objects[oid][i] = k
	
	alpha = 0.85
	ranker, score = r.pagerank_aggregator(objects, 0.000001, alpha)
	final_ranklist = sorted(ranker.items(), key=lambda x:x[1])
	final_ranklist = final_ranklist[:10]
	final_keys = []
	for i in xrange(0,len(final_ranklist)):
		final_keys.append(oid_name[final_ranklist[i][0]])
	return final_keys,score
    except:
        print_error("Incorrect file provided, cannot read rankers")

    agg = sys.argv[2]
    arguments = sys.argv[3:]
    
    lastloc = 0
    if agg == 'pg':
        alpha = 0.85
        if len(arguments)>0:
            try:
                alpha = float(arguments[0])
                lastloc = 1
            except:
                print_error("Incorrect alpha provided or alpha is omitted")
        ranker, score = r.pagerank_aggregator(objects, 0.000001, alpha)
        print "Pagerank algorithm, alpha =", alpha, ", score:", score

    elif agg == 'in':
        ranker, score = r.indegree_aggregator(objects)
        print "Indegree algorithm, score:", score

    elif agg == 'rnd':
        k=1
        if len(arguments)>0:
            try:
                k = int(arguments[0])
                lastloc = 1
            except:
                print_error("An integer for the number of tries is required")
        print "Random rank algorithm with k =", k