dustalov commited on
Commit
0704646
1 Parent(s): 9977893

Add PageRank

Browse files
Files changed (2) hide show
  1. app.py +16 -1
  2. requirements.txt +1 -0
app.py CHANGED
@@ -15,9 +15,10 @@
15
  __author__ = 'Dmitry Ustalov'
16
  __license__ = 'Apache 2.0'
17
 
18
- from typing import IO, Tuple, List, cast
19
 
20
  import gradio as gr
 
21
  import numpy as np
22
  import numpy.typing as npt
23
  import pandas as pd
@@ -67,6 +68,19 @@ def bradley_terry(wins: npt.NDArray[np.int64], ties: npt.NDArray[np.int64],
67
  return p
68
 
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  # https://gist.github.com/dustalov/41678b70c40ba5a55430fa5e77b121d9#file-newman-py
71
  def newman(wins: npt.NDArray[np.int64], ties: npt.NDArray[np.int64],
72
  seed: int = 0, tolerance: float = 10e-6, limit: int = 20) -> npt.NDArray[np.float64]:
@@ -117,6 +131,7 @@ def newman(wins: npt.NDArray[np.int64], ties: npt.NDArray[np.int64],
117
 
118
  ALGORITHMS = {
119
  'Bradley-Terry (1952)': bradley_terry,
 
120
  'Newman (2023)': newman,
121
  }
122
 
 
15
  __author__ = 'Dmitry Ustalov'
16
  __license__ = 'Apache 2.0'
17
 
18
+ from typing import IO, Tuple, List, cast, Dict
19
 
20
  import gradio as gr
21
+ import networkx as nx
22
  import numpy as np
23
  import numpy.typing as npt
24
  import pandas as pd
 
68
  return p
69
 
70
 
71
+ def pagerank(wins: npt.NDArray[np.int64], ties: npt.NDArray[np.int64],
72
+ seed: int = 0, tolerance: float = 10e-6, limit: int = 100) -> npt.NDArray[np.float64]:
73
+ A = wins + .5 * ties
74
+
75
+ G = nx.from_numpy_array(A, create_using=nx.DiGraph)
76
+
77
+ pagerank: Dict[int, float] = nx.algorithms.pagerank(G, max_iter=limit, tol=tolerance)
78
+
79
+ scores = np.array([pagerank[i] for i in range(len(G))])
80
+
81
+ return scores
82
+
83
+
84
  # https://gist.github.com/dustalov/41678b70c40ba5a55430fa5e77b121d9#file-newman-py
85
  def newman(wins: npt.NDArray[np.int64], ties: npt.NDArray[np.int64],
86
  seed: int = 0, tolerance: float = 10e-6, limit: int = 20) -> npt.NDArray[np.float64]:
 
131
 
132
  ALGORITHMS = {
133
  'Bradley-Terry (1952)': bradley_terry,
134
+ 'PageRank': pagerank,
135
  'Newman (2023)': newman,
136
  }
137
 
requirements.txt CHANGED
@@ -1 +1,2 @@
 
1
  plotly_express
 
1
+ networkx
2
  plotly_express