Update app.py
Browse files
app.py
CHANGED
@@ -23,7 +23,7 @@ import re
|
|
23 |
import subprocess
|
24 |
from dataclasses import dataclass
|
25 |
from tempfile import NamedTemporaryFile
|
26 |
-
from typing import
|
27 |
|
28 |
import gradio as gr
|
29 |
import matplotlib.pyplot as plt
|
@@ -47,7 +47,7 @@ class Algorithm:
|
|
47 |
global_params: Optional[str] = None
|
48 |
bin: Optional[str] = None
|
49 |
|
50 |
-
def args_clustering(self) ->
|
51 |
args = [self.name]
|
52 |
|
53 |
if self.mode:
|
@@ -66,7 +66,7 @@ class Algorithm:
|
|
66 |
|
67 |
return args
|
68 |
|
69 |
-
def args_graph(self) ->
|
70 |
args = []
|
71 |
|
72 |
if self.local_name:
|
@@ -78,7 +78,7 @@ class Algorithm:
|
|
78 |
return args
|
79 |
|
80 |
|
81 |
-
ALGORITHMS:
|
82 |
'CW_top': Algorithm('cw', 'top'),
|
83 |
'CW_lin': Algorithm('cw', 'lin'),
|
84 |
'CW_log': Algorithm('cw', 'log'),
|
@@ -122,8 +122,8 @@ def visualize(G: nx.Graph, seed: int = 0) -> Figure:
|
|
122 |
|
123 |
|
124 |
# noinspection PyPep8Naming
|
125 |
-
def watset(G: nx.Graph, algorithm: str, seed: int = 0,
|
126 |
-
jar: str = 'watset.jar', timeout: int = 10) ->
|
127 |
with (NamedTemporaryFile() as graph,
|
128 |
NamedTemporaryFile(mode='rb') as clusters,
|
129 |
NamedTemporaryFile(mode='rb') as senses):
|
@@ -164,7 +164,7 @@ def watset(G: nx.Graph, algorithm: str, seed: int = 0,
|
|
164 |
return df_clusters, None
|
165 |
|
166 |
|
167 |
-
def handler(file:
|
168 |
if file is None:
|
169 |
raise gr.Error('File must be uploaded')
|
170 |
|
@@ -178,10 +178,10 @@ def handler(file: IO[bytes], algorithm: str, seed: int) -> Tuple[pd.DataFrame, F
|
|
178 |
except csv.Error:
|
179 |
delimiter = ','
|
180 |
|
181 |
-
G: nx.Graph = nx.read_edgelist(file.name, delimiter=delimiter, comments='\n', data=[('weight', float)])
|
182 |
|
183 |
-
mapping:
|
184 |
-
reverse:
|
185 |
|
186 |
for i, node in enumerate(G):
|
187 |
mapping[node] = i
|
@@ -217,7 +217,7 @@ def main() -> None:
|
|
217 |
label='Graph'
|
218 |
),
|
219 |
gr.Dropdown(
|
220 |
-
choices=cast(
|
221 |
value='Watset[MCL, CW_lin]',
|
222 |
label='Algorithm'
|
223 |
),
|
|
|
23 |
import subprocess
|
24 |
from dataclasses import dataclass
|
25 |
from tempfile import NamedTemporaryFile
|
26 |
+
from typing import cast, BinaryIO, Optional
|
27 |
|
28 |
import gradio as gr
|
29 |
import matplotlib.pyplot as plt
|
|
|
47 |
global_params: Optional[str] = None
|
48 |
bin: Optional[str] = None
|
49 |
|
50 |
+
def args_clustering(self) -> list[str]:
|
51 |
args = [self.name]
|
52 |
|
53 |
if self.mode:
|
|
|
66 |
|
67 |
return args
|
68 |
|
69 |
+
def args_graph(self) -> list[str]:
|
70 |
args = []
|
71 |
|
72 |
if self.local_name:
|
|
|
78 |
return args
|
79 |
|
80 |
|
81 |
+
ALGORITHMS: dict[str, Algorithm] = {
|
82 |
'CW_top': Algorithm('cw', 'top'),
|
83 |
'CW_lin': Algorithm('cw', 'lin'),
|
84 |
'CW_log': Algorithm('cw', 'log'),
|
|
|
122 |
|
123 |
|
124 |
# noinspection PyPep8Naming
|
125 |
+
def watset(G: nx.Graph[str], algorithm: str, seed: int = 0,
|
126 |
+
jar: str = 'watset.jar', timeout: int = 10) -> tuple[pd.DataFrame, Optional[nx.Graph[str]]]:
|
127 |
with (NamedTemporaryFile() as graph,
|
128 |
NamedTemporaryFile(mode='rb') as clusters,
|
129 |
NamedTemporaryFile(mode='rb') as senses):
|
|
|
164 |
return df_clusters, None
|
165 |
|
166 |
|
167 |
+
def handler(file: BinaryIO, algorithm: str, seed: int) -> tuple[pd.DataFrame, Figure]:
|
168 |
if file is None:
|
169 |
raise gr.Error('File must be uploaded')
|
170 |
|
|
|
178 |
except csv.Error:
|
179 |
delimiter = ','
|
180 |
|
181 |
+
G: nx.Graph[str] = nx.read_edgelist(file.name, delimiter=delimiter, comments='\n', data=[('weight', float)])
|
182 |
|
183 |
+
mapping: dict[str, int] = {}
|
184 |
+
reverse: dict[int, str] = {}
|
185 |
|
186 |
for i, node in enumerate(G):
|
187 |
mapping[node] = i
|
|
|
217 |
label='Graph'
|
218 |
),
|
219 |
gr.Dropdown(
|
220 |
+
choices=cast(list[str], ALGORITHMS),
|
221 |
value='Watset[MCL, CW_lin]',
|
222 |
label='Algorithm'
|
223 |
),
|