Spaces:
Sleeping
Sleeping
inoki-giskard
commited on
Commit
•
58c39e0
1
Parent(s):
e84a865
Format code and imports
Browse files- app.py +2 -1
- app_debug.py +17 -5
- app_leaderboard.py +8 -4
- app_text_classification.py +44 -40
- io_utils.py +1 -3
- pipe.py +1 -2
- run_jobs.py +2 -1
- text_classification.py +3 -3
- text_classification_ui_helpers.py +17 -20
- utils.py +7 -2
- validate_queue.py +0 -1
- wordings.py +1 -1
app.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
import atexit
|
|
|
2 |
import gradio as gr
|
3 |
|
|
|
4 |
from app_leaderboard import get_demo as get_demo_leaderboard
|
5 |
from app_text_classification import get_demo as get_demo_text_classification
|
6 |
-
from app_debug import get_demo as get_demo_debug
|
7 |
from run_jobs import start_process_run_job, stop_thread
|
8 |
|
9 |
try:
|
|
|
1 |
import atexit
|
2 |
+
|
3 |
import gradio as gr
|
4 |
|
5 |
+
from app_debug import get_demo as get_demo_debug
|
6 |
from app_leaderboard import get_demo as get_demo_leaderboard
|
7 |
from app_text_classification import get_demo as get_demo_text_classification
|
|
|
8 |
from run_jobs import start_process_run_job, stop_thread
|
9 |
|
10 |
try:
|
app_debug.py
CHANGED
@@ -1,10 +1,14 @@
|
|
1 |
-
import gradio as gr
|
2 |
-
import pipe
|
3 |
from os import listdir
|
4 |
from os.path import isfile, join
|
|
|
|
|
|
|
|
|
|
|
5 |
LOG_PATH = "./tmp"
|
6 |
CONFIG_PATH = "./cicd/configs"
|
7 |
|
|
|
8 |
def get_accordions_of_files(path, files):
|
9 |
components = []
|
10 |
for file in files:
|
@@ -15,14 +19,23 @@ def get_accordions_of_files(path, files):
|
|
15 |
gr.Markdown(f.read())
|
16 |
return components
|
17 |
|
|
|
18 |
def get_accordions_of_log_files():
|
19 |
-
log_files = [
|
|
|
|
|
20 |
return get_accordions_of_files(LOG_PATH, log_files)
|
21 |
|
|
|
22 |
def get_accordions_of_config_files():
|
23 |
-
config_files = [
|
|
|
|
|
|
|
|
|
24 |
return get_accordions_of_files(CONFIG_PATH, config_files)
|
25 |
|
|
|
26 |
def get_demo(demo):
|
27 |
with gr.Row():
|
28 |
# check if jobs is an attribute of pipe
|
@@ -34,4 +47,3 @@ def get_demo(demo):
|
|
34 |
with gr.Accordion(label="Log Files", open=False):
|
35 |
log_accordions = get_accordions_of_log_files()
|
36 |
demo.load(get_accordions_of_log_files, outputs=log_accordions, every=1)
|
37 |
-
|
|
|
|
|
|
|
1 |
from os import listdir
|
2 |
from os.path import isfile, join
|
3 |
+
|
4 |
+
import gradio as gr
|
5 |
+
|
6 |
+
import pipe
|
7 |
+
|
8 |
LOG_PATH = "./tmp"
|
9 |
CONFIG_PATH = "./cicd/configs"
|
10 |
|
11 |
+
|
12 |
def get_accordions_of_files(path, files):
|
13 |
components = []
|
14 |
for file in files:
|
|
|
19 |
gr.Markdown(f.read())
|
20 |
return components
|
21 |
|
22 |
+
|
23 |
def get_accordions_of_log_files():
|
24 |
+
log_files = [
|
25 |
+
f for f in listdir(LOG_PATH) if isfile(join(LOG_PATH, f)) and f.endswith("_log")
|
26 |
+
]
|
27 |
return get_accordions_of_files(LOG_PATH, log_files)
|
28 |
|
29 |
+
|
30 |
def get_accordions_of_config_files():
|
31 |
+
config_files = [
|
32 |
+
f
|
33 |
+
for f in listdir(CONFIG_PATH)
|
34 |
+
if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml")
|
35 |
+
]
|
36 |
return get_accordions_of_files(CONFIG_PATH, config_files)
|
37 |
|
38 |
+
|
39 |
def get_demo(demo):
|
40 |
with gr.Row():
|
41 |
# check if jobs is an attribute of pipe
|
|
|
47 |
with gr.Accordion(label="Log Files", open=False):
|
48 |
log_accordions = get_accordions_of_log_files()
|
49 |
demo.load(get_accordions_of_log_files, outputs=log_accordions, every=1)
|
|
app_leaderboard.py
CHANGED
@@ -3,7 +3,8 @@ import logging
|
|
3 |
import datasets
|
4 |
import gradio as gr
|
5 |
|
6 |
-
from fetch_utils import check_dataset_and_get_config,
|
|
|
7 |
|
8 |
|
9 |
def get_records_from_dataset_repo(dataset_id):
|
@@ -94,7 +95,10 @@ def get_demo():
|
|
94 |
label="Model id", choices=model_ids, value=model_ids[0], interactive=True
|
95 |
)
|
96 |
dataset_select = gr.Dropdown(
|
97 |
-
label="Dataset id",
|
|
|
|
|
|
|
98 |
)
|
99 |
|
100 |
with gr.Row():
|
@@ -123,9 +127,9 @@ def get_demo():
|
|
123 |
df = records[(records["task"] == task)]
|
124 |
# filter the table based on the model_id and dataset_id
|
125 |
if model_id and model_id != "Any":
|
126 |
-
df = df[(df[
|
127 |
if dataset_id and dataset_id != "Any":
|
128 |
-
df = df[(df[
|
129 |
|
130 |
# filter the table based on the columns
|
131 |
df = df[columns]
|
|
|
3 |
import datasets
|
4 |
import gradio as gr
|
5 |
|
6 |
+
from fetch_utils import (check_dataset_and_get_config,
|
7 |
+
check_dataset_and_get_split)
|
8 |
|
9 |
|
10 |
def get_records_from_dataset_repo(dataset_id):
|
|
|
95 |
label="Model id", choices=model_ids, value=model_ids[0], interactive=True
|
96 |
)
|
97 |
dataset_select = gr.Dropdown(
|
98 |
+
label="Dataset id",
|
99 |
+
choices=dataset_ids,
|
100 |
+
value=dataset_ids[0],
|
101 |
+
interactive=True,
|
102 |
)
|
103 |
|
104 |
with gr.Row():
|
|
|
127 |
df = records[(records["task"] == task)]
|
128 |
# filter the table based on the model_id and dataset_id
|
129 |
if model_id and model_id != "Any":
|
130 |
+
df = df[(df["model_id"] == model_id)]
|
131 |
if dataset_id and dataset_id != "Any":
|
132 |
+
df = df[(df["dataset_id"] == dataset_id)]
|
133 |
|
134 |
# filter the table based on the columns
|
135 |
df = df[columns]
|
app_text_classification.py
CHANGED
@@ -1,22 +1,16 @@
|
|
1 |
-
import gradio as gr
|
2 |
import uuid
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
check_model_and_show_prediction,
|
16 |
-
write_column_mapping_to_config,
|
17 |
-
select_run_mode,
|
18 |
-
deselect_run_inference,
|
19 |
-
)
|
20 |
|
21 |
MAX_LABELS = 20
|
22 |
MAX_FEATURES = 20
|
@@ -70,17 +64,24 @@ def get_demo(demo):
|
|
70 |
with gr.Accordion(label="Model Wrap Advance Config (optional)", open=False):
|
71 |
run_local = gr.Checkbox(value=True, label="Run in this Space")
|
72 |
run_inference = gr.Checkbox(value="False", label="Run with Inference API")
|
|
|
73 |
@gr.on(triggers=[uid_label.change], inputs=[uid_label], outputs=[run_inference])
|
74 |
def get_run_mode(uid):
|
75 |
-
return (
|
76 |
-
|
|
|
77 |
)
|
78 |
-
inference_token = gr.Textbox(value="", label="HF Token for Inference API", visible=False, interactive=True)
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
label="
|
|
|
|
|
83 |
)
|
|
|
|
|
|
|
|
|
84 |
@gr.on(triggers=[uid_label.change], inputs=[uid_label], outputs=[scanners])
|
85 |
def get_scanners(uid):
|
86 |
selected = read_scanners(uid)
|
@@ -88,9 +89,9 @@ def get_demo(demo):
|
|
88 |
# Reason: data_leakage barely raises any issues and takes too many requests
|
89 |
# when using inference API, causing rate limit error
|
90 |
scan_config = selected + ["data_leakage"]
|
91 |
-
return
|
92 |
-
|
93 |
-
|
94 |
|
95 |
with gr.Row():
|
96 |
run_btn = gr.Button(
|
@@ -105,8 +106,9 @@ def get_demo(demo):
|
|
105 |
demo.load(get_logs_file, uid_label, logs, every=0.5)
|
106 |
|
107 |
dataset_id_input.change(
|
108 |
-
check_dataset_and_get_config,
|
109 |
-
inputs=[dataset_id_input],
|
|
|
110 |
)
|
111 |
|
112 |
dataset_config_input.change(
|
@@ -118,19 +120,21 @@ def get_demo(demo):
|
|
118 |
scanners.change(write_scanners, inputs=[scanners, uid_label])
|
119 |
|
120 |
run_inference.change(
|
121 |
-
select_run_mode,
|
122 |
-
inputs=[run_inference, inference_token, uid_label],
|
123 |
-
outputs=[inference_token, run_local]
|
124 |
-
|
|
|
125 |
run_local.change(
|
126 |
-
deselect_run_inference,
|
127 |
-
inputs=[run_local],
|
128 |
-
outputs=[inference_token, run_inference]
|
129 |
-
|
|
|
130 |
inference_token.change(
|
131 |
-
write_inference_type,
|
132 |
-
|
133 |
-
|
134 |
gr.on(
|
135 |
triggers=[label.change for label in column_mappings],
|
136 |
fn=write_column_mapping_to_config,
|
|
|
|
|
1 |
import uuid
|
2 |
+
|
3 |
+
import gradio as gr
|
4 |
+
|
5 |
+
from io_utils import (get_logs_file, read_inference_type, read_scanners,
|
6 |
+
write_inference_type, write_scanners)
|
7 |
+
from text_classification_ui_helpers import (check_dataset_and_get_config,
|
8 |
+
check_dataset_and_get_split,
|
9 |
+
check_model_and_show_prediction,
|
10 |
+
deselect_run_inference,
|
11 |
+
select_run_mode, try_submit,
|
12 |
+
write_column_mapping_to_config)
|
13 |
+
from wordings import CONFIRM_MAPPING_DETAILS_MD, INTRODUCTION_MD
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
MAX_LABELS = 20
|
16 |
MAX_FEATURES = 20
|
|
|
64 |
with gr.Accordion(label="Model Wrap Advance Config (optional)", open=False):
|
65 |
run_local = gr.Checkbox(value=True, label="Run in this Space")
|
66 |
run_inference = gr.Checkbox(value="False", label="Run with Inference API")
|
67 |
+
|
68 |
@gr.on(triggers=[uid_label.change], inputs=[uid_label], outputs=[run_inference])
|
69 |
def get_run_mode(uid):
|
70 |
+
return gr.update(
|
71 |
+
value=read_inference_type(uid) == "hf_inference_api"
|
72 |
+
and not run_local.value
|
73 |
)
|
|
|
74 |
|
75 |
+
inference_token = gr.Textbox(
|
76 |
+
value="",
|
77 |
+
label="HF Token for Inference API",
|
78 |
+
visible=False,
|
79 |
+
interactive=True,
|
80 |
)
|
81 |
+
|
82 |
+
with gr.Accordion(label="Scanner Advance Config (optional)", open=False):
|
83 |
+
scanners = gr.CheckboxGroup(label="Scan Settings", visible=True)
|
84 |
+
|
85 |
@gr.on(triggers=[uid_label.change], inputs=[uid_label], outputs=[scanners])
|
86 |
def get_scanners(uid):
|
87 |
selected = read_scanners(uid)
|
|
|
89 |
# Reason: data_leakage barely raises any issues and takes too many requests
|
90 |
# when using inference API, causing rate limit error
|
91 |
scan_config = selected + ["data_leakage"]
|
92 |
+
return gr.update(
|
93 |
+
choices=scan_config, value=selected, label="Scan Settings", visible=True
|
94 |
+
)
|
95 |
|
96 |
with gr.Row():
|
97 |
run_btn = gr.Button(
|
|
|
106 |
demo.load(get_logs_file, uid_label, logs, every=0.5)
|
107 |
|
108 |
dataset_id_input.change(
|
109 |
+
check_dataset_and_get_config,
|
110 |
+
inputs=[dataset_id_input],
|
111 |
+
outputs=[dataset_config_input],
|
112 |
)
|
113 |
|
114 |
dataset_config_input.change(
|
|
|
120 |
scanners.change(write_scanners, inputs=[scanners, uid_label])
|
121 |
|
122 |
run_inference.change(
|
123 |
+
select_run_mode,
|
124 |
+
inputs=[run_inference, inference_token, uid_label],
|
125 |
+
outputs=[inference_token, run_local],
|
126 |
+
)
|
127 |
+
|
128 |
run_local.change(
|
129 |
+
deselect_run_inference,
|
130 |
+
inputs=[run_local],
|
131 |
+
outputs=[inference_token, run_inference],
|
132 |
+
)
|
133 |
+
|
134 |
inference_token.change(
|
135 |
+
write_inference_type, inputs=[run_inference, inference_token, uid_label]
|
136 |
+
)
|
137 |
+
|
138 |
gr.on(
|
139 |
triggers=[label.change for label in column_mappings],
|
140 |
fn=write_column_mapping_to_config,
|
io_utils.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
import os
|
2 |
import subprocess
|
|
|
3 |
import yaml
|
4 |
|
5 |
import pipe
|
@@ -44,7 +45,6 @@ def write_scanners(scanners, uid):
|
|
44 |
f.close()
|
45 |
|
46 |
|
47 |
-
|
48 |
# read model_type from yaml file
|
49 |
def read_inference_type(uid):
|
50 |
inference_type = ""
|
@@ -73,7 +73,6 @@ def write_inference_type(use_inference, inference_token, uid):
|
|
73 |
f.close()
|
74 |
|
75 |
|
76 |
-
|
77 |
# read column mapping from yaml file
|
78 |
def read_column_mapping(uid):
|
79 |
column_mapping = {}
|
@@ -103,7 +102,6 @@ def write_column_mapping(mapping, uid):
|
|
103 |
f.close()
|
104 |
|
105 |
|
106 |
-
|
107 |
# convert column mapping dataframe to json
|
108 |
def convert_column_mapping_to_json(df, label=""):
|
109 |
column_mapping = {}
|
|
|
1 |
import os
|
2 |
import subprocess
|
3 |
+
|
4 |
import yaml
|
5 |
|
6 |
import pipe
|
|
|
45 |
f.close()
|
46 |
|
47 |
|
|
|
48 |
# read model_type from yaml file
|
49 |
def read_inference_type(uid):
|
50 |
inference_type = ""
|
|
|
73 |
f.close()
|
74 |
|
75 |
|
|
|
76 |
# read column mapping from yaml file
|
77 |
def read_column_mapping(uid):
|
78 |
column_mapping = {}
|
|
|
102 |
f.close()
|
103 |
|
104 |
|
|
|
105 |
# convert column mapping dataframe to json
|
106 |
def convert_column_mapping_to_json(df, label=""):
|
107 |
column_mapping = {}
|
pipe.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
|
2 |
def init():
|
3 |
global jobs
|
4 |
-
jobs = list()
|
|
|
|
|
1 |
def init():
|
2 |
global jobs
|
3 |
+
jobs = list()
|
run_jobs.py
CHANGED
@@ -1,6 +1,7 @@
|
|
|
|
1 |
import threading
|
2 |
import time
|
3 |
-
|
4 |
import pipe
|
5 |
from io_utils import pop_job_from_pipe
|
6 |
|
|
|
1 |
+
import logging
|
2 |
import threading
|
3 |
import time
|
4 |
+
|
5 |
import pipe
|
6 |
from io_utils import pop_job_from_pipe
|
7 |
|
text_classification.py
CHANGED
@@ -9,9 +9,9 @@ from transformers import pipeline
|
|
9 |
|
10 |
def get_labels_and_features_from_dataset(dataset_id, dataset_config, split):
|
11 |
if not dataset_config:
|
12 |
-
dataset_config =
|
13 |
if not split:
|
14 |
-
split =
|
15 |
try:
|
16 |
ds = datasets.load_dataset(dataset_id, dataset_config)[split]
|
17 |
dataset_features = ds.features
|
@@ -54,7 +54,7 @@ def text_classification_map_model_and_dataset_labels(id2label, dataset_features)
|
|
54 |
continue
|
55 |
if len(feature.names) != len(id2label_mapping.keys()):
|
56 |
continue
|
57 |
-
|
58 |
dataset_labels = feature.names
|
59 |
# Try to match labels
|
60 |
for label in feature.names:
|
|
|
9 |
|
10 |
def get_labels_and_features_from_dataset(dataset_id, dataset_config, split):
|
11 |
if not dataset_config:
|
12 |
+
dataset_config = "default"
|
13 |
if not split:
|
14 |
+
split = "train"
|
15 |
try:
|
16 |
ds = datasets.load_dataset(dataset_id, dataset_config)[split]
|
17 |
dataset_features = ds.features
|
|
|
54 |
continue
|
55 |
if len(feature.names) != len(id2label_mapping.keys()):
|
56 |
continue
|
57 |
+
|
58 |
dataset_labels = feature.names
|
59 |
# Try to match labels
|
60 |
for label in feature.names:
|
text_classification_ui_helpers.py
CHANGED
@@ -9,11 +9,13 @@ import gradio as gr
|
|
9 |
from transformers.pipelines import TextClassificationPipeline
|
10 |
|
11 |
from io_utils import (get_yaml_path, read_column_mapping, save_job_to_pipe,
|
12 |
-
write_column_mapping,
|
13 |
-
|
14 |
from text_classification import (check_model, get_example_prediction,
|
15 |
get_labels_and_features_from_dataset)
|
16 |
-
from wordings import
|
|
|
|
|
17 |
|
18 |
MAX_LABELS = 20
|
19 |
MAX_FEATURES = 20
|
@@ -42,30 +44,23 @@ def check_dataset_and_get_split(dataset_id, dataset_config):
|
|
42 |
# gr.Warning(f"Failed to load dataset {dataset_id} with config {dataset_config}: {e}")
|
43 |
pass
|
44 |
|
|
|
45 |
def select_run_mode(run_inf, inf_token, uid):
|
46 |
if run_inf:
|
47 |
if len(inf_token) > 0:
|
48 |
write_inference_type(run_inf, inf_token, uid)
|
49 |
-
return (
|
50 |
-
gr.update(visible=True),
|
51 |
-
gr.update(value=False))
|
52 |
else:
|
53 |
-
return (
|
54 |
-
|
55 |
-
gr.update(value=True))
|
56 |
|
57 |
def deselect_run_inference(run_local):
|
58 |
if run_local:
|
59 |
-
return (
|
60 |
-
gr.update(visible=False),
|
61 |
-
gr.update(value=False)
|
62 |
-
)
|
63 |
else:
|
64 |
-
return (
|
65 |
-
|
66 |
-
|
67 |
-
)
|
68 |
-
|
69 |
def write_column_mapping_to_config(
|
70 |
dataset_id, dataset_config, dataset_split, uid, *labels
|
71 |
):
|
@@ -83,7 +78,7 @@ def write_column_mapping_to_config(
|
|
83 |
all_mappings["labels"] = dict()
|
84 |
for i, label in enumerate(labels[:MAX_LABELS]):
|
85 |
if label:
|
86 |
-
all_mappings["labels"][label] = ds_labels[i%len(ds_labels)]
|
87 |
if "features" not in all_mappings.keys():
|
88 |
all_mappings["features"] = dict()
|
89 |
for _, feat in enumerate(labels[MAX_LABELS : (MAX_LABELS + MAX_FEATURES)]):
|
@@ -204,7 +199,9 @@ def try_submit(m_id, d_id, config, split, local, uid):
|
|
204 |
gr.Warning(CONFIRM_MAPPING_DETAILS_FAIL_RAW)
|
205 |
return (gr.update(interactive=True), gr.update(visible=False))
|
206 |
label_mapping = {}
|
207 |
-
for i, label in zip(
|
|
|
|
|
208 |
label_mapping.update({str(i): label})
|
209 |
|
210 |
if "features" not in all_mappings.keys():
|
|
|
9 |
from transformers.pipelines import TextClassificationPipeline
|
10 |
|
11 |
from io_utils import (get_yaml_path, read_column_mapping, save_job_to_pipe,
|
12 |
+
write_column_mapping, write_inference_type,
|
13 |
+
write_log_to_user_file)
|
14 |
from text_classification import (check_model, get_example_prediction,
|
15 |
get_labels_and_features_from_dataset)
|
16 |
+
from wordings import (CHECK_CONFIG_OR_SPLIT_RAW,
|
17 |
+
CONFIRM_MAPPING_DETAILS_FAIL_RAW,
|
18 |
+
MAPPING_STYLED_ERROR_WARNING)
|
19 |
|
20 |
MAX_LABELS = 20
|
21 |
MAX_FEATURES = 20
|
|
|
44 |
# gr.Warning(f"Failed to load dataset {dataset_id} with config {dataset_config}: {e}")
|
45 |
pass
|
46 |
|
47 |
+
|
48 |
def select_run_mode(run_inf, inf_token, uid):
|
49 |
if run_inf:
|
50 |
if len(inf_token) > 0:
|
51 |
write_inference_type(run_inf, inf_token, uid)
|
52 |
+
return (gr.update(visible=True), gr.update(value=False))
|
|
|
|
|
53 |
else:
|
54 |
+
return (gr.update(visible=False), gr.update(value=True))
|
55 |
+
|
|
|
56 |
|
57 |
def deselect_run_inference(run_local):
|
58 |
if run_local:
|
59 |
+
return (gr.update(visible=False), gr.update(value=False))
|
|
|
|
|
|
|
60 |
else:
|
61 |
+
return (gr.update(visible=True), gr.update(value=True))
|
62 |
+
|
63 |
+
|
|
|
|
|
64 |
def write_column_mapping_to_config(
|
65 |
dataset_id, dataset_config, dataset_split, uid, *labels
|
66 |
):
|
|
|
78 |
all_mappings["labels"] = dict()
|
79 |
for i, label in enumerate(labels[:MAX_LABELS]):
|
80 |
if label:
|
81 |
+
all_mappings["labels"][label] = ds_labels[i % len(ds_labels)]
|
82 |
if "features" not in all_mappings.keys():
|
83 |
all_mappings["features"] = dict()
|
84 |
for _, feat in enumerate(labels[MAX_LABELS : (MAX_LABELS + MAX_FEATURES)]):
|
|
|
199 |
gr.Warning(CONFIRM_MAPPING_DETAILS_FAIL_RAW)
|
200 |
return (gr.update(interactive=True), gr.update(visible=False))
|
201 |
label_mapping = {}
|
202 |
+
for i, label in zip(
|
203 |
+
range(len(all_mappings["labels"].keys())), all_mappings["labels"].keys()
|
204 |
+
):
|
205 |
label_mapping.update({str(i): label})
|
206 |
|
207 |
if "features" not in all_mappings.keys():
|
utils.py
CHANGED
@@ -1,5 +1,8 @@
|
|
1 |
-
import yaml
|
2 |
import sys
|
|
|
|
|
|
|
|
|
3 |
# read scanners from yaml file
|
4 |
# return a list of scanners
|
5 |
def read_scanners(path):
|
@@ -9,16 +12,18 @@ def read_scanners(path):
|
|
9 |
scanners = config.get("detectors", None)
|
10 |
return scanners
|
11 |
|
|
|
12 |
# convert a list of scanners to yaml file
|
13 |
def write_scanners(scanners):
|
14 |
with open("./scan_config.yaml", "w") as f:
|
15 |
# save scanners to detectors in yaml
|
16 |
yaml.dump({"detectors": scanners}, f)
|
17 |
|
|
|
18 |
# convert column mapping dataframe to json
|
19 |
def convert_column_mapping_to_json(df, label=""):
|
20 |
column_mapping = {}
|
21 |
column_mapping[label] = []
|
22 |
for _, row in df.iterrows():
|
23 |
column_mapping[label].append(row.tolist())
|
24 |
-
return column_mapping
|
|
|
|
|
1 |
import sys
|
2 |
+
|
3 |
+
import yaml
|
4 |
+
|
5 |
+
|
6 |
# read scanners from yaml file
|
7 |
# return a list of scanners
|
8 |
def read_scanners(path):
|
|
|
12 |
scanners = config.get("detectors", None)
|
13 |
return scanners
|
14 |
|
15 |
+
|
16 |
# convert a list of scanners to yaml file
|
17 |
def write_scanners(scanners):
|
18 |
with open("./scan_config.yaml", "w") as f:
|
19 |
# save scanners to detectors in yaml
|
20 |
yaml.dump({"detectors": scanners}, f)
|
21 |
|
22 |
+
|
23 |
# convert column mapping dataframe to json
|
24 |
def convert_column_mapping_to_json(df, label=""):
|
25 |
column_mapping = {}
|
26 |
column_mapping[label] = []
|
27 |
for _, row in df.iterrows():
|
28 |
column_mapping[label].append(row.tolist())
|
29 |
+
return column_mapping
|
validate_queue.py
CHANGED
@@ -13,7 +13,6 @@ def sleep_a_while():
|
|
13 |
return str(seconds)
|
14 |
|
15 |
|
16 |
-
|
17 |
with gr.Blocks() as iface:
|
18 |
text = gr.Textbox(label="Slept second")
|
19 |
|
|
|
13 |
return str(seconds)
|
14 |
|
15 |
|
|
|
16 |
with gr.Blocks() as iface:
|
17 |
text = gr.Textbox(label="Slept second")
|
18 |
|
wordings.py
CHANGED
@@ -36,4 +36,4 @@ MAPPING_STYLED_ERROR_WARNING = """
|
|
36 |
<h3 style="text-align: center;color: coral; background-color: #fff0f3; border-radius: 8px; padding: 10px; ">
|
37 |
Sorry, we cannot auto-align the labels/features of your dataset and model. Please double check.
|
38 |
</h3>
|
39 |
-
"""
|
|
|
36 |
<h3 style="text-align: center;color: coral; background-color: #fff0f3; border-radius: 8px; padding: 10px; ">
|
37 |
Sorry, we cannot auto-align the labels/features of your dataset and model. Please double check.
|
38 |
</h3>
|
39 |
+
"""
|