kevinxie06's picture
Upload all utils files
fd7d17f verified
raw
history blame
4.1 kB
import gradio as gr
from gradio_leaderboard import Leaderboard
from typing import List, Tuple, Callable
class UIComponents:
"""Handles creation of UI components for the leaderboard"""
@staticmethod
def create_filter_components() -> Tuple[List[gr.CheckboxGroup], List[str]]:
"""Create all filter components and return them with their labels"""
# Language Filter
all_languages = ['English', 'Spanish', 'Chinese', 'Norwegian',
'Russian', 'Portuguese', 'German', 'Japanese', 'French']
language_options = gr.CheckboxGroup(all_languages, label="Filter Task: Language")
# Task Type Filter
all_task_types = ['Question Answering', 'Text Classification', 'Named Entity Recognition',
'Normalization and Coding', 'Natural Language Inference', 'Summarization',
'Event Extraction', 'Semantic Similarity']
task_type_options = gr.CheckboxGroup(all_task_types, label="Filter Task: Task Type")
# Clinical Context Filter
all_clinical_contexts = ['Neurology', 'Oncology', 'Radiology', 'Pulmonology',
'Cardiology', 'Dermatology', 'Critical Care', 'Nephrology',
'General', 'Endocrinology', 'Pediatrics', 'Pharmacology',
'Gastroenterology', 'Psychology']
cc_options = gr.CheckboxGroup(all_clinical_contexts, label="Filter Task: Clinical Context")
# Applications Filter
all_applications = ['Procudure information', 'Concept standarization',
'Specialist recommendation', 'Negation identification',
'Clinical trial matching', 'Consultation summarization',
'Semantic relation', 'Post-discharge patient management',
'De-identification', 'Billing & Coding', 'Phenotyping',
'Data organization', 'Temporal & Causality relation',
'Summarization', 'Screen & Consultation', 'Diagnosis',
'ADE & Incidents', 'Risk factor extraction', 'Prognosis',
'Medication information']
application_options = gr.CheckboxGroup(all_applications, label="Filter Task: Clinical Application")
# Clinical Stage Filter
all_stages = ['Treatment and Intervention', 'Triage and Referral',
'Initial Assessment', 'Discharge and Administration',
'Research', 'Diagnosis and Prognosis']
stage_options = gr.CheckboxGroup(all_stages, label="Filter Task: Clinical Stage")
# Data Access Filter
all_data_access = ['Open Access', 'Regulated']
da_options = gr.CheckboxGroup(all_data_access, label="Filter Task: Data Access")
components = [language_options, task_type_options, cc_options,
application_options, stage_options, da_options]
filter_types = ["Language", "Task Type", "Clinical Context",
"Applications", "Clinical Stage", "Data Access"]
return components, filter_types
@staticmethod
def setup_filter_events(components: List[gr.CheckboxGroup],
filter_types: List[str],
leaderboard: Leaderboard,
filter_manager,
leaderboard_type: str):
"""Setup event handlers for filter components"""
def create_filter_function(filter_type: str, lb_type: str):
"""Create a filter function with proper closure"""
return lambda values: filter_manager.apply_filter(lb_type, filter_type, values)
for component, filter_type in zip(components, filter_types):
filter_fn = create_filter_function(filter_type, leaderboard_type)
component.change(
fn=filter_fn,
inputs=component,
outputs=leaderboard
)