Spaces:
Running
Running
| # import streamlit as st | |
| # import pandas as pd | |
| # import altair as alt | |
| # # Set page layout to wide mode | |
| # st.set_page_config( | |
| # page_title="PathVLM-Eval Leaderboard", | |
| # page_icon="π", | |
| # layout="wide" | |
| # ) | |
| # # Load the leaderboard data | |
| # df = pd.read_csv("leaderboard.csv") | |
| # # Add title and description | |
| # st.title("PathVLM-Eval Leaderboard π") | |
| # st.markdown(""" | |
| # Welcome to the **PathVLMs Leaderboard**! This leaderboard displays evaluation results for various Vision-Language Models (VLMs) in Pathology, focusing on multiple-choice questions (MCQs), answers, and explanations. | |
| # You can search, filter, and visualize metrics for better insights. | |
| # """) | |
| # # Sidebar Filters | |
| # with st.sidebar: | |
| # st.subheader("Filters") | |
| # # Search by model name (fuzzy search) | |
| # search_query = st.text_input("Search for Model Name", value="", placeholder="e.g., llava") | |
| # # Filter by model size | |
| # model_sizes = df['Params (B)'].unique() | |
| # selected_sizes = st.multiselect("Select Model Sizes", options=model_sizes, default=model_sizes) | |
| # # Filter by model type | |
| # if 'Language Model' in df.columns: | |
| # model_types = df['Language Model'].unique() | |
| # selected_types = st.multiselect("Select Model Types", options=model_types, default=model_types) | |
| # else: | |
| # selected_types = [] | |
| # # Apply Filters | |
| # filtered_df = df[ | |
| # (df['Params (B)'].isin(selected_sizes)) & | |
| # (df['Language Model'].isin(selected_types) if selected_types else True) & | |
| # (df['Method'].str.contains(search_query, case=False, na=False)) | |
| # ] | |
| # # Main Leaderboard Section | |
| # st.subheader("Leaderboard Table") | |
| # if filtered_df.empty: | |
| # st.warning("No results found. Try adjusting the filters.") | |
| # else: | |
| # # Display table in wide layout | |
| # st.dataframe( | |
| # filtered_df, | |
| # height=600, # Adjust table height | |
| # width=1600 # Adjust table width | |
| # ) | |
| # # Visualization of selected metric | |
| # st.subheader("Performance Metrics Visualization") | |
| # metric = st.selectbox("Select Metric to Visualize", options=filtered_df.columns[5:]) | |
| # # Visualization Chart | |
| # chart = alt.Chart(filtered_df).mark_bar().encode( | |
| # x=alt.X('Method', sort=alt.EncodingSortField(field=metric, order='descending'), title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=600 # Increased height | |
| # ) | |
| # st.altair_chart(chart, use_container_width=True) | |
| # # Highlight Top N Models | |
| # st.subheader("Highlight Top N Models") | |
| # top_n = st.slider("Number of Top Models", min_value=1, max_value=len(filtered_df), value=5) | |
| # top_models_df = filtered_df.nlargest(top_n, metric) | |
| # top_chart = alt.Chart(top_models_df).mark_bar().encode( | |
| # x=alt.X('Method', title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=400 # Adjusted height for smaller chart | |
| # ) | |
| # st.altair_chart(top_chart, use_container_width=True) | |
| # # Download Button | |
| # @st.cache | |
| # def convert_df_to_csv(dataframe): | |
| # return dataframe.to_csv(index=False).encode('utf-8') | |
| # csv_data = convert_df_to_csv(filtered_df) | |
| # st.download_button( | |
| # label="Download Filtered Results", | |
| # data=csv_data, | |
| # file_name="filtered_leaderboard.csv", | |
| # mime="text/csv" | |
| # ) | |
| # interactive Bubble plot | |
| # import streamlit as st | |
| # import pandas as pd | |
| # import altair as alt | |
| # # Set page layout to wide mode | |
| # st.set_page_config( | |
| # page_title="PathVLMs Leaderboard", | |
| # page_icon="π", | |
| # layout="wide" | |
| # ) | |
| # # Load the leaderboard data | |
| # df = pd.read_csv("leaderboard.csv") | |
| # # Add title and description | |
| # st.title("PathVLMs Leaderboard π") | |
| # st.markdown(""" | |
| # Welcome to the **PathVLMs Leaderboard**! This leaderboard displays evaluation results for various Vision-Language Models (VLMs) in Pathology, focusing on multiple-choice questions (MCQs), answers, and explanations. | |
| # You can search, filter, and visualize metrics for better insights. | |
| # """) | |
| # # Sidebar Filters | |
| # with st.sidebar: | |
| # st.subheader("Filters") | |
| # # Search by model name (fuzzy search) | |
| # search_query = st.text_input("Search for Model Name", value="", placeholder="e.g., llava") | |
| # # Filter by model size | |
| # model_sizes = df['Params (B)'].unique() | |
| # selected_sizes = st.multiselect("Select Model Sizes", options=model_sizes, default=model_sizes) | |
| # # Filter by model type | |
| # if 'Language Model' in df.columns: | |
| # model_types = df['Language Model'].unique() | |
| # selected_types = st.multiselect("Select Model Types", options=model_types, default=model_types) | |
| # else: | |
| # selected_types = [] | |
| # # Apply Filters | |
| # filtered_df = df[ | |
| # (df['Params (B)'].isin(selected_sizes)) & | |
| # (df['Language Model'].isin(selected_types) if selected_types else True) & | |
| # (df['Method'].str.contains(search_query, case=False, na=False)) | |
| # ] | |
| # # Main Leaderboard Section | |
| # st.subheader("Leaderboard Table") | |
| # if filtered_df.empty: | |
| # st.warning("No results found. Try adjusting the filters.") | |
| # else: | |
| # # Display table in wide layout | |
| # st.dataframe( | |
| # filtered_df, | |
| # height=600, # Adjust table height | |
| # width=1600 # Adjust table width | |
| # ) | |
| # # Visualization of selected metric | |
| # st.subheader("Performance Metrics Visualization") | |
| # metric = st.selectbox("Select Metric to Visualize", options=filtered_df.columns[5:]) | |
| # # Visualization Chart | |
| # chart = alt.Chart(filtered_df).mark_bar().encode( | |
| # x=alt.X('Method', sort=alt.EncodingSortField(field=metric, order='descending'), title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=600 # Increased height | |
| # ) | |
| # st.altair_chart(chart, use_container_width=True) | |
| # # Interactive Bubble Plot: Metric vs. Model Size | |
| # st.subheader("Interactive Bubble Plot: Metric vs. Model Size") | |
| # bubble_metric = st.selectbox("Select Metric for Bubble Plot", options=filtered_df.columns[5:], index=0) | |
| # if bubble_metric in filtered_df.columns and 'Params (B)' in filtered_df.columns: | |
| # interactive_bubble_chart = alt.Chart(filtered_df).mark_circle(size=200).encode( | |
| # x=alt.X('Params (B):Q', title="Model Size (in Billion Params)"), | |
| # y=alt.Y(f'{bubble_metric}:Q', title=bubble_metric), | |
| # size=alt.Size('Params (B):Q', legend=None), | |
| # color=alt.Color('Method:N', title="Model"), | |
| # tooltip=['Method', 'Params (B)', bubble_metric] | |
| # ).properties( | |
| # width=800, | |
| # height=600 | |
| # ) | |
| # st.altair_chart(interactive_bubble_chart, use_container_width=True) | |
| # else: | |
| # st.warning(f"Columns '{bubble_metric}' and 'Params (B)' are required for the bubble plot.") | |
| # # # Highlight Top N Models | |
| # # st.subheader("Highlight Top N Models") | |
| # # top_n = st.slider("Number of Top Models", min_value=1, max_value=len(filtered_df), value=5) | |
| # # top_models_df = filtered_df.nlargest(top_n, metric) | |
| # # top_chart = alt.Chart(top_models_df).mark_bar().encode( | |
| # # x=alt.X('Method', title="Model"), | |
| # # y=alt.Y(metric, title=metric), | |
| # # color='Method', | |
| # # tooltip=['Method', metric] | |
| # # ).properties( | |
| # # width=1400, # Full width | |
| # # height=400 # Adjusted height for smaller chart | |
| # # ) | |
| # # st.altair_chart(top_chart, use_container_width=True) | |
| # # Highlight Top N Models | |
| # st.subheader("Highlight Top N Models") | |
| # top_n = st.slider("Number of Top Models", min_value=1, max_value=len(filtered_df), value=5) | |
| # top_models_df = filtered_df.nlargest(top_n, metric) | |
| # top_chart = alt.Chart(top_models_df).mark_bar().encode( | |
| # x=alt.X('Method', title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=400 # Adjusted height for smaller chart | |
| # ) | |
| # st.altair_chart(top_chart, use_container_width=True) | |
| # # Download Button | |
| # @st.cache | |
| # def convert_df_to_csv(dataframe): | |
| # return dataframe.to_csv(index=False).encode('utf-8') | |
| # csv_data = convert_df_to_csv(filtered_df) | |
| # st.download_button( | |
| # label="Download Filtered Results", | |
| # data=csv_data, | |
| # file_name="filtered_leaderboard.csv", | |
| # mime="text/csv" | |
| # ) | |
| # inteactive bubble plot and pagination | |
| import streamlit as st | |
| import pandas as pd | |
| import altair as alt | |
| # Set page layout to wide mode | |
| st.set_page_config( | |
| page_title="PathVLM-Eval Leaderboard", | |
| page_icon="π", | |
| layout="wide" | |
| ) | |
| # Load the leaderboard data | |
| df = pd.read_csv("updated-leaderboard.csv") | |
| print(df.columns) | |
| # Add title and description | |
| st.title("PathVLM-Eval Leaderboard π") | |
| st.markdown(""" | |
| Welcome to the **PathVLM-Eval Leaderboard**! This leaderboard displays evaluation results for various Vision-Language Models (VLMs) in Pathology, focusing on multiple-choice questions (MCQs), answers, and explanations. | |
| You can search, filter, and sort the leaderboard dynamically by score for better insights. | |
| """) | |
| # Sidebar Filters | |
| with st.sidebar: | |
| st.subheader("Filters") | |
| # Search by model name (fuzzy search) | |
| search_query = st.text_input("Search for Model Name", value="", placeholder="e.g., llava") | |
| # Filter by model size | |
| model_sizes = df['Params (B)'].unique() | |
| selected_sizes = st.multiselect("Select Model Sizes", options=model_sizes, default=model_sizes) | |
| # Filter by model type | |
| if 'Language Model' in df.columns: | |
| model_types = df['Language Model'].unique() | |
| selected_types = st.multiselect("Select Model Types", options=model_types, default=model_types) | |
| else: | |
| selected_types = [] | |
| # Apply Filters | |
| filtered_df = df[ | |
| (df['Params (B)'].isin(selected_sizes)) & | |
| (df['Language Model'].isin(selected_types) if selected_types else True) & | |
| (df['Method'].str.contains(search_query, case=False, na=False)) | |
| ] | |
| # Add Sorting Option | |
| st.subheader("Leaderboard Table with Dynamic Sorting") | |
| if filtered_df.empty: | |
| st.warning("No results found. Try adjusting the filters.") | |
| else: | |
| # Dropdown to select the score column to sort by | |
| sort_column = st.selectbox( | |
| "Sort by Score Column", | |
| options=filtered_df.columns[5:], # Only score-related columns | |
| index=0 # Default to the first score column | |
| ) | |
| # Sort the dataframe by the selected column in descending order | |
| sorted_df = filtered_df.sort_values(by=sort_column, ascending=False) | |
| # Display the sorted table | |
| st.dataframe(sorted_df, use_container_width=True) | |
| # Visualization of selected metric | |
| st.subheader("Performance Metrics Visualization") | |
| metric = st.selectbox("Select Metric to Visualize", options=filtered_df.columns[5:]) | |
| # Visualization Chart | |
| chart = alt.Chart(sorted_df).mark_bar().encode( | |
| x=alt.X('Method', sort=alt.EncodingSortField(field=metric, order='descending'), title="Model"), | |
| y=alt.Y(metric, title=metric), | |
| color='Method', | |
| tooltip=['Method', metric] | |
| ).properties( | |
| width=1400, # Full width | |
| height=600 # Increased height | |
| ) | |
| st.altair_chart(chart, use_container_width=True) | |
| # Bubble Plot: Metric vs. Model Size | |
| st.subheader("Interactive Bubble Plot: Metric vs. Model Size") | |
| bubble_metric = st.selectbox("Select Metric for Bubble Plot", options=filtered_df.columns[5:], index=0) | |
| if bubble_metric in filtered_df.columns and 'Params (B)' in filtered_df.columns: | |
| interactive_bubble_chart = alt.Chart(filtered_df).mark_circle(size=200).encode( | |
| x=alt.X('Params (B):Q', title="Model Size (in Billion Params)"), | |
| y=alt.Y(f'{bubble_metric}:Q', title=bubble_metric), | |
| size=alt.Size('Params (B):Q', legend=None), | |
| color=alt.Color('Method:N', title="Model"), | |
| tooltip=['Method', 'Params (B)', bubble_metric] | |
| ).properties( | |
| width=800, | |
| height=600 | |
| ) | |
| st.altair_chart(interactive_bubble_chart, use_container_width=True) | |
| else: | |
| st.warning(f"Columns '{bubble_metric}' and 'Params (B)' are required for the bubble plot.") | |
| # Highlight Top N Models | |
| st.subheader("Highlight Top N Models") | |
| top_n = st.slider("Number of Top Models", min_value=1, max_value=len(filtered_df), value=5) | |
| top_models_df = sorted_df.nlargest(top_n, metric) | |
| top_chart = alt.Chart(top_models_df).mark_bar().encode( | |
| x=alt.X('Method', title="Model"), | |
| y=alt.Y(metric, title=metric), | |
| color='Method', | |
| tooltip=['Method', metric] | |
| ).properties( | |
| width=1400, # Full width | |
| height=400 # Adjusted height for smaller chart | |
| ) | |
| st.altair_chart(top_chart, use_container_width=True) | |
| # Download Button | |
| def convert_df_to_csv(dataframe): | |
| return dataframe.to_csv(index=False).encode('utf-8') | |
| csv_data = convert_df_to_csv(sorted_df) | |
| st.download_button( | |
| label="Download Sorted Results", | |
| data=csv_data, | |
| file_name="sorted_leaderboard.csv", | |
| mime="text/csv" | |
| ) | |
| # with bubble plot | |
| # import streamlit as st | |
| # import pandas as pd | |
| # import altair as alt | |
| # # Set page layout to wide mode | |
| # st.set_page_config( | |
| # page_title="PathVLM-Eval Leaderboard", | |
| # page_icon="π", | |
| # layout="wide" | |
| # ) | |
| # # Load the leaderboard data | |
| # df = pd.read_csv("leaderboard.csv") | |
| # # Add title and description | |
| # st.title("PathVLM-Eval Leaderboard π") | |
| # st.markdown(""" | |
| # Welcome to the **PathVLM-Eval Leaderboard**! This leaderboard displays evaluation results for various Vision-Language Models (VLMs) in Pathology, focusing on multiple-choice questions (MCQs), answers, and explanations. | |
| # You can search, filter, and visualize metrics for better insights. | |
| # """) | |
| # # Sidebar Filters | |
| # with st.sidebar: | |
| # st.subheader("Filters") | |
| # # Search by model name (fuzzy search) | |
| # search_query = st.text_input("Search for Model Name", value="", placeholder="e.g., llava") | |
| # # Filter by model size | |
| # model_sizes = df['Params (B)'].unique() | |
| # selected_sizes = st.multiselect("Select Model Sizes", options=model_sizes, default=model_sizes) | |
| # # Filter by model type | |
| # if 'Language Model' in df.columns: | |
| # model_types = df['Language Model'].unique() | |
| # selected_types = st.multiselect("Select Model Types", options=model_types, default=model_types) | |
| # else: | |
| # selected_types = [] | |
| # # Apply Filters | |
| # filtered_df = df[ | |
| # (df['Params (B)'].isin(selected_sizes)) & | |
| # (df['Language Model'].isin(selected_types) if selected_types else True) & | |
| # (df['Method'].str.contains(search_query, case=False, na=False)) | |
| # ] | |
| # # Main Leaderboard Section | |
| # st.subheader("Leaderboard Table") | |
| # if filtered_df.empty: | |
| # st.warning("No results found. Try adjusting the filters.") | |
| # else: | |
| # # Display table in wide layout | |
| # st.dataframe( | |
| # filtered_df, | |
| # height=600, # Adjust table height | |
| # width=1600 # Adjust table width | |
| # ) | |
| # # Visualization of selected metric | |
| # st.subheader("Performance Metrics Visualization") | |
| # metric = st.selectbox("Select Metric to Visualize", options=filtered_df.columns[5:]) | |
| # # Visualization Chart | |
| # chart = alt.Chart(filtered_df).mark_bar().encode( | |
| # x=alt.X('Method', sort=alt.EncodingSortField(field=metric, order='descending'), title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=600 # Increased height | |
| # ) | |
| # st.altair_chart(chart, use_container_width=True) | |
| # # Bubble Plot for Accuracy vs. Model Size | |
| # st.subheader("Bubble Plot: Accuracy vs. Model Size") | |
| # if 'Avg score' in filtered_df.columns and 'Params (B)' in filtered_df.columns: | |
| # bubble_chart = alt.Chart(filtered_df).mark_circle(size=200).encode( | |
| # x=alt.X('Params (B):Q', title="Model Size (in Billion Params)"), | |
| # y=alt.Y('Avg score:Q', title="Avg score"), | |
| # size=alt.Size('Params (B):Q', legend=None), | |
| # color=alt.Color('Method:N', title="Model"), | |
| # tooltip=['Method', 'Avg score', 'Params (B)'] | |
| # ).properties( | |
| # width=800, | |
| # height=600 | |
| # ) | |
| # st.altair_chart(bubble_chart, use_container_width=True) | |
| # else: | |
| # st.warning("Columns 'Accuracy' and 'Params (B)' are required for the bubble plot.") | |
| # # Highlight Top N Models | |
| # st.subheader("Highlight Top N Models") | |
| # top_n = st.slider("Number of Top Models", min_value=1, max_value=len(filtered_df), value=5) | |
| # top_models_df = filtered_df.nlargest(top_n, metric) | |
| # top_chart = alt.Chart(top_models_df).mark_bar().encode( | |
| # x=alt.X('Method', title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=400 # Adjusted height for smaller chart | |
| # ) | |
| # st.altair_chart(top_chart, use_container_width=True) | |
| # # Download Button | |
| # @st.cache | |
| # def convert_df_to_csv(dataframe): | |
| # return dataframe.to_csv(index=False).encode('utf-8') | |
| # csv_data = convert_df_to_csv(filtered_df) | |
| # st.download_button( | |
| # label="Download Filtered Results", | |
| # data=csv_data, | |
| # file_name="filtered_leaderboard.csv", | |
| # mime="text/csv" | |
| # ) | |
| # with all bubble plot | |
| # import streamlit as st | |
| # import pandas as pd | |
| # import altair as alt | |
| # # Set page layout to wide mode | |
| # st.set_page_config( | |
| # page_title="PathVLM-Eval Leaderboard", | |
| # page_icon="π", | |
| # layout="wide" | |
| # ) | |
| # # Load the leaderboard data | |
| # df = pd.read_csv("leaderboard.csv") # Replace with the actual filename | |
| # # Add title and description | |
| # st.title("PathVLMs Leaderboard π") | |
| # st.markdown(""" | |
| # Welcome to the **PathVLMs Leaderboard**! This leaderboard displays evaluation results for various Vision-Language Models (VLMs) in Pathology, focusing on multiple-choice questions (MCQs), answers, and explanations. | |
| # You can search, filter, and visualize metrics for better insights. | |
| # """) | |
| # # Sidebar Filters | |
| # with st.sidebar: | |
| # st.subheader("Filters") | |
| # # Search by model name | |
| # search_query = st.text_input("Search for Model Name", value="", placeholder="e.g., llava") | |
| # # Filter by model size | |
| # model_sizes = df['Params (B)'].unique() | |
| # selected_sizes = st.multiselect("Select Model Sizes", options=model_sizes, default=model_sizes) | |
| # # Filter by model type | |
| # if 'Language Model' in df.columns: | |
| # model_types = df['Language Model'].unique() | |
| # selected_types = st.multiselect("Select Model Types", options=model_types, default=model_types) | |
| # else: | |
| # selected_types = [] | |
| # # Apply Filters | |
| # filtered_df = df[ | |
| # (df['Params (B)'].isin(selected_sizes)) & | |
| # (df['Language Model'].isin(selected_types) if selected_types else True) & | |
| # (df['Method'].str.contains(search_query, case=False, na=False)) | |
| # ] | |
| # # Main Leaderboard Section | |
| # st.subheader("Leaderboard Table") | |
| # if filtered_df.empty: | |
| # st.warning("No results found. Try adjusting the filters.") | |
| # else: | |
| # # Display the filtered table | |
| # st.dataframe(filtered_df) | |
| # # Dataset columns to plot | |
| # dataset_columns = ['Socialpath Tiny', 'Socialpath All', 'Education Content Tiny', 'Education Content All', 'Pubmed Tiny', 'Pubmed All', 'Avg score'] | |
| # # Generate Bubble Plots for each dataset column | |
| # for dataset in dataset_columns: | |
| # st.subheader(f"Bubble Plot: {dataset}") | |
| # bubble_chart = alt.Chart(filtered_df).mark_circle(size=200).encode( | |
| # x=alt.X('Params (B):Q', title="Model Size (in Billion Params)"), | |
| # y=alt.Y(f'{dataset}:Q', title=dataset), | |
| # size=alt.Size('Params (B):Q', legend=None), | |
| # color=alt.Color('Method:N', title="Model"), | |
| # tooltip=['Method', 'Params (B)', dataset] | |
| # ).properties( | |
| # width=800, | |
| # height=600 | |
| # ) | |
| # st.altair_chart(bubble_chart, use_container_width=True) | |
| # # Download Button | |
| # @st.cache | |
| # def convert_df_to_csv(dataframe): | |
| # return dataframe.to_csv(index=False).encode('utf-8') | |
| # csv_data = convert_df_to_csv(filtered_df) | |
| # st.download_button( | |
| # label="Download Filtered Results", | |
| # data=csv_data, | |
| # file_name="filtered_leaderboard.csv", | |
| # mime="text/csv" | |
| # ) | |
| # this also with bubble | |
| # import streamlit as st | |
| # import pandas as pd | |
| # import altair as alt | |
| # # Set page layout to wide mode | |
| # st.set_page_config( | |
| # page_title="PathVLMs Leaderboard", | |
| # page_icon="π", | |
| # layout="wide" | |
| # ) | |
| # # Load the leaderboard data | |
| # df = pd.read_csv("leaderboard.csv") # Replace with your actual CSV file name | |
| # # Add title and description | |
| # st.title("PathVLMs Leaderboard π") | |
| # st.markdown(""" | |
| # Welcome to the **PathVLMs Leaderboard**! This leaderboard displays evaluation results for various Vision-Language Models (VLMs) in Pathology, focusing on multiple-choice questions (MCQs), answers, and explanations. | |
| # You can search, filter, and visualize metrics for better insights. | |
| # """) | |
| # # Sidebar Filters | |
| # with st.sidebar: | |
| # st.subheader("Filters") | |
| # # Search by model name | |
| # search_query = st.text_input("Search for Model Name", value="", placeholder="e.g., llava") | |
| # # Filter by model size | |
| # model_sizes = df['Params (B)'].unique() | |
| # selected_sizes = st.multiselect("Select Model Sizes", options=model_sizes, default=model_sizes) | |
| # # Filter by model type | |
| # if 'Language Model' in df.columns: | |
| # model_types = df['Language Model'].unique() | |
| # selected_types = st.multiselect("Select Model Types", options=model_types, default=model_types) | |
| # else: | |
| # selected_types = [] | |
| # # Apply Filters | |
| # filtered_df = df[ | |
| # (df['Params (B)'].isin(selected_sizes)) & | |
| # (df['Language Model'].isin(selected_types) if selected_types else True) & | |
| # (df['Method'].str.contains(search_query, case=False, na=False)) | |
| # ] | |
| # # Main Leaderboard Section | |
| # st.subheader("Leaderboard Table") | |
| # if filtered_df.empty: | |
| # st.warning("No results found. Try adjusting the filters.") | |
| # else: | |
| # # Display table in wide layout | |
| # st.dataframe( | |
| # filtered_df, | |
| # height=600, # Adjust table height | |
| # width=1600 # Adjust table width | |
| # ) | |
| # # Visualization of selected metric | |
| # st.subheader("Performance Metrics Visualization") | |
| # metric = st.selectbox("Select Metric to Visualize", options=filtered_df.columns[5:]) | |
| # # Visualization Chart | |
| # chart = alt.Chart(filtered_df).mark_bar().encode( | |
| # x=alt.X('Method', sort=alt.EncodingSortField(field=metric, order='descending'), title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=600 # Increased height | |
| # ) | |
| # st.altair_chart(chart, use_container_width=True) | |
| # # Dataset columns to plot | |
| # dataset_columns = ['Socialpath Tiny', 'Socialpath All', 'Education Content Tiny', 'Education Content All', 'Pubmed Tiny', 'Pubmed All', 'Avg score'] | |
| # # Generate Bubble Plots for each dataset column | |
| # for dataset in dataset_columns: | |
| # st.subheader(f"Bubble Plot: {dataset}") | |
| # bubble_chart = alt.Chart(filtered_df).mark_circle(size=200).encode( | |
| # x=alt.X('Params (B):Q', title="Model Size (in Billion Params)"), | |
| # y=alt.Y(f'{dataset}:Q', title=dataset), | |
| # size=alt.Size('Params (B):Q', legend=None), | |
| # color=alt.Color('Method:N', title="Model"), | |
| # tooltip=['Method', 'Params (B)', dataset] | |
| # ).properties( | |
| # width=800, | |
| # height=600 | |
| # ) | |
| # st.altair_chart(bubble_chart, use_container_width=True) | |
| # # Highlight Top N Models | |
| # st.subheader("Highlight Top N Models") | |
| # top_n = st.slider("Number of Top Models", min_value=1, max_value=len(filtered_df), value=5) | |
| # top_models_df = filtered_df.nlargest(top_n, metric) | |
| # top_chart = alt.Chart(top_models_df).mark_bar().encode( | |
| # x=alt.X('Method', title="Model"), | |
| # y=alt.Y(metric, title=metric), | |
| # color='Method', | |
| # tooltip=['Method', metric] | |
| # ).properties( | |
| # width=1400, # Full width | |
| # height=400 # Adjusted height for smaller chart | |
| # ) | |
| # st.altair_chart(top_chart, use_container_width=True) | |
| # # Download Button | |
| # @st.cache | |
| # def convert_df_to_csv(dataframe): | |
| # return dataframe.to_csv(index=False).encode('utf-8') | |
| # csv_data = convert_df_to_csv(filtered_df) | |
| # st.download_button( | |
| # label="Download Filtered Results", | |
| # data=csv_data, | |
| # file_name="filtered_leaderboard.csv", | |
| # mime="text/csv" | |
| # ) | |