Package ziggy :: Package GraphReduce :: Module LostMass_mapper
[hide private]
[frames] | no frames]

Source Code for Module ziggy.GraphReduce.LostMass_mapper

 1  #! /usr/bin/env python 
 2  ''' 
 3  Created on Aug 18, 2010 
 4   
 5  @author: dwmclary 
 6  ''' 
 7  import sys 
 8   
9 -class PRNode(object):
10 - def __init__(self, nID=None, rank_mass=None, adj=None):
11 if nID != None: 12 self.nID = nID 13 self.page_rank = rank_mass 14 self.adj = adj
15 #self.path = path 16
17 - def write(self):
18 s = str(self.nID)+ " "+ " ".join(map(str,self.adj)) +\ 19 " pr: "+str(self.page_rank) #+ " path: " + " ".join(map(str,self.path)) 20 return s
21
22 - def __str__(self):
23 return self.write()
24 25
26 -def read_adjacency(file, comment="#", sep=None,mass=None):
27 for line in file: 28 line = line.rstrip() 29 if line[0] != comment: 30 entry = line.split(sep) 31 nid = entry[0] 32 if "pr:" in entry: 33 d_index = entry.index("pr:") 34 rank_mass = float(entry[d_index+1]) 35 # p_index = entry.index("path:") 36 # path = entry[p_index+1:] 37 adj = entry[1:d_index] 38 else: 39 rank_mass = mass 40 path = [] 41 adj = entry[1:] 42 43 node = PRNode(nid,rank_mass,adj) 44 yield nid, node
45 46
47 -def main(rank_mass, lost_mass, alpha):
48 data = read_adjacency(sys.stdin, sep=None, mass=rank_mass) 49 for nid, node in data: 50 p = alpha*rank_mass + (1.0 - alpha)*(node.page_rank + lost_mass) 51 node.page_rank = p 52 print node
53 54 55 if __name__ == "__main__": 56 try: 57 import psyco 58 psyco.full() 59 except: 60 pass 61 source = open("rank_mass").readlines() 62 source = source[0].strip() 63 lost_mass = open("lost_mass").readlines() 64 lost_mass = lost_mass[0].strip() 65 alpha = 0.5 66 main(float(source), float(lost_mass), alpha) 67