File size: 2,129 Bytes
a85a5e9
5368a96
168e052
a85a5e9
91f4a96
 
 
 
a85a5e9
 
91f4a96
 
 
 
 
 
 
a85a5e9
91f4a96
 
a85a5e9
ab8868f
a85a5e9
 
91f4a96
 
 
 
 
 
 
 
 
 
 
 
 
 
168e052
 
339a5a9
5368a96
91f4a96
ab8868f
 
339a5a9
ab8868f
 
339a5a9
ab8868f
 
 
 
339a5a9
91f4a96
ab8868f
 
339a5a9
a85a5e9
91f4a96
 
 
 
 
 
 
 
 
 
 
 
ab8868f
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import gradio as gr
import pandas as pd
from datasets import load_dataset

# Initialize total counts
total_yes_count = 0
total_count = 0


def calculate_percentage(*answers):
    """
    Calculate the percentage of 'yes' answers.

    :param answers: Iterable containing the answers.
    :returns: Percentage of 'yes' answers.
    """
    global total_yes_count, total_count
    yes_count = sum(answers)
    total_yes_count += yes_count
    total_count += len(answers)
    percentage = yes_count / len(answers) * 100
    return f"{percentage}%"


def calculate_overall_percentage():
    """
    Calculate the overall percentage of 'yes' answers.

    :returns: Overall percentage of 'yes' answers.
    """
    global total_yes_count, total_count
    if total_count != 100:
        return "Make sure you have submitted your answers in all the tabs."
    overall_percentage = total_yes_count
    return f"{overall_percentage}%"


# Load data
dataset = load_dataset("mariagrandury/fmti-indicators")
df = pd.DataFrame(dataset["train"])
grouped = df.groupby(["Domain", "Subdomain"])

# Create an interface per group of indicators
interfaces = []
tab_names = []
for (domain, subdomain), group in grouped:
    questions = group["Definition"].tolist()
    inputs = [gr.Checkbox(label=question) for question in questions]
    output = gr.Textbox(label="Subdomain Percentage")
    iface = gr.Interface(
        fn=calculate_percentage,
        inputs=inputs,
        outputs=output,
        title=f"{domain} - {subdomain}",
        allow_flagging="never",
    )
    interfaces.append(iface)
    tab_names.append(subdomain)

# Add overall percentage button
overall_button = gr.Interface(
    fn=calculate_overall_percentage,
    inputs=[],
    outputs=gr.Textbox(label="Overall Percentage"),
    title="Transparency Score",
    allow_flagging="never",
)
interfaces.append(overall_button)
tab_names.append("Total Transparency Score")

# Create the tabbed interface
tabbed_interface = gr.TabbedInterface(
    interface_list=interfaces,
    tab_names=tab_names,
    title="The Foundation Model Transparency Index",
)
tabbed_interface.launch()