File size: 5,493 Bytes
a33ace4
63d7feb
82fc346
a52b9c1
63d7feb
a33ace4
 
 
f9e1958
 
 
 
 
a33ace4
 
 
 
 
 
 
 
 
 
 
 
 
 
a788ea0
7786c4d
a52b9c1
3b02b87
7786c4d
a33ace4
a52b9c1
 
 
a33ace4
a52b9c1
 
 
 
 
a33ace4
a52b9c1
 
 
 
 
 
a788ea0
a52b9c1
 
 
 
 
 
a33ace4
a788ea0
a52b9c1
 
 
 
 
a33ace4
a52b9c1
a33ace4
 
 
a788ea0
a33ace4
 
 
 
 
 
 
 
 
 
 
a52b9c1
 
a33ace4
a52b9c1
a33ace4
 
 
 
 
 
 
 
 
a52b9c1
a33ace4
 
7786c4d
c146544
7786c4d
c146544
a52b9c1
 
 
 
 
a33ace4
a52b9c1
7786c4d
 
a52b9c1
a33ace4
82fc346
 
 
 
 
 
a33ace4
a52b9c1
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import gradio as gr
import pandas as pd
# from gradio_huggingfacehub_search import HuggingfaceHubSearch
import requests

def update_table(category):
    data_dict = {
        "Overall": {
            "Rank": [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],
            "Model": ["Model A", "Model B", "Model C", "Model D", "Model E", "Model F", "Model G", "Model H", "Model I", "Model J", "Model K", "Model L", "Model M", "Model N", "Model O", "Model P", "Model Q", "Model R", "Model S", "Model T", "Model U", "Model V", "Model W", "Model X", "Model Y", "Model Z"],
            "Votes": [1250, 200, 3150, 4250, 5200, 6150, 7250, 8200, 9150, 10250, 11200, 12150, 13250, 21250, 200, 3150, 4250, 5200, 6150, 7250, 8200, 9150, 10250, 11200, 12150, 13250],
            "Organization": ["Org A", "Org B", "Org C", "Org D", "Org E", "Org F", "Org G", "Org H", "Org I", "Org J", "Org K", "Org L", "Org M", "Org N", "Org O", "Org P", "Org Q", "Model R", "Model S", "Model T", "Model U", "Model V", "Model W", "Model X", "Model Y", "Model Z"],
            "License": ["1MIT", "2Apache 2.0", "3GPL", "4MIT", "5Apache 2.0", "6GPL", "7MIT", "8Apache 2.0", "9GPL", "10MIT", "11Apache 2.0", "12GPL", "13MIT", "1MIT", "2Apache 2.0", "3GPL", "4MIT", "5Apache 2.0", "6GPL", "7MIT", "8Apache 2.0", "9GPL", "10MIT", "11Apache 2.0", "12GPL", "13MIT"]
        },
        "Biology": {
            "Rank": [1, 2],
            "Model": ["GenePredict", "BioSeq"],
            "Votes": [180, 160],
            "Organization": ["BioTech", "Genomics Inc"],
            "License": ["GPL", "MIT"]
        }
    }
    
    data = data_dict.get(category, {"Rank": [], "Model": [], "Votes": [], "Organization": [], "License": []})
    df = pd.DataFrame(data)
    return df


def get_user(profile: gr.OAuthProfile | None) -> str:
    if profile is None:
        return ""
    return profile.username


def submit_vote(username, category, vote):
    if not category or not vote:
        return "All fields are required!"
    if not username:
        return "You need to log in to submit a vote."
    if username.startswith("Hello "):
        username = username[6:]

    url = "https://sdk.nexa4ai.com/task"   # Will have a new endpoint
    data = {
        "category": category,
        "model_id": vote,
        "username": username
    }
    
    print("Submitting vote with payload:", data) 
    response = requests.post(url, json=data)
    
    if response.status_code == 200:
        return f"Vote '{vote}' submitted successfully!"
    else:
        return f"Failed to vote: {response.text}"


def submit_model(category, model_id):
    if not category or not model_id:
        return "All fields are required!"
    
    url = "https://sdk.nexa4ai.com/task"   # Will have a new endpoint
    data = {
        "category": category,
        "model_id": model_id
    }
    
    print("Submitting model with payload:", data) 
    response = requests.post(url, json=data)
    
    if response.status_code == 200:
        return "Your request has been submitted successfully. We will notify you by email once processing is complete."
    else:
        return f"Failed to submit request: {response.text}"


with gr.Blocks() as app:
    with gr.Tabs():
        with gr.TabItem("Table"):
            category = gr.Dropdown(
                choices=["Overall", "Biology", "Physics", "Business", "Chemistry", "Economics", "Philosophy", "History", "Culture", "Computer Science", "Math", "Health", "Law", "Engineering", "Other"],
                label="Select Category",
                value="Overall"
            )
            
            initial_data = update_table("Overall")
            table = gr.Dataframe(
                headers=["Rank", "Model", "Votes", "Organization", "License"],
                datatype=["number", "str", "number", "str", "str"],
                value=initial_data,
                col_count=(5, "fixed"),
            )
            category.change(update_table, inputs=category, outputs=table)
        
        with gr.TabItem("Vote"):
            username_text = gr.State(value="")
            login_button = gr.LoginButton()
            app.load(get_user, inputs=None, outputs=username_text)

            category = gr.Dropdown(
                choices=["Biology", "Physics", "Business", "Chemistry", "Economics", "Philosophy", "History", "Culture", "Computer Science", "Math", "Health", "Law", "Engineering", "Other"], 
                label="Select Category"
            )
            vote = gr.CheckboxGroup(choices=["Option 1", "Option 2", "Option 3"], label="Choose your options")
            submit_button = gr.Button("Submit Vote")
            submit_result = gr.Label()

            submit_button.click(fn=submit_vote, inputs=[username_text, category, vote], outputs=submit_result)

        
        # with gr.TabItem("Submit Model"):
        #     category = gr.Dropdown(choices=["Biology", "Physics", "Business", "Chemistry", "Economics", "Philosophy", "History", "Culture", "Computer Science", "Math", "Health", "Law", "Engineering", "Other"], label="Select Category")
        #     model_id = HuggingfaceHubSearch(label="Hub Model ID", placeholder="Search for model id on Huggingface", search_type="model")
        #     submit_model_button = gr.Button("Submit Model")
        #     submit_model_result = gr.Label()
        #     submit_model_button.click(fn=submit_model, inputs=[category, model_id], outputs=submit_model_result)

app.launch()