|
import gradio as gr |
|
import pandas as pd |
|
from datasets import load_dataset |
|
|
|
|
|
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}%" |
|
|
|
|
|
|
|
dataset = load_dataset("mariagrandury/fmti-indicators") |
|
df = pd.DataFrame(dataset["train"]) |
|
grouped = df.groupby(["Domain", "Subdomain"]) |
|
|
|
|
|
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) |
|
|
|
|
|
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") |
|
|
|
|
|
tabbed_interface = gr.TabbedInterface( |
|
interface_list=interfaces, |
|
tab_names=tab_names, |
|
title="The Foundation Model Transparency Index", |
|
) |
|
tabbed_interface.launch() |
|
|