File size: 3,443 Bytes
			
			b0e6781  | 
								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  | 
								import streamlit as st
import pandas as pd
import numpy as np
from streamlit_echarts import st_echarts
# from streamlit_echarts import JsCode
from streamlit_javascript import st_javascript
# from PIL import Image 
from app.show_examples import *
links_dic = {}
links_dic = {k.lower().replace('_', '-') : v for k, v in links_dic.items()}
# huggingface_image = Image.open('style/huggingface.jpg')
def nav_to(value):
    try:
        url = links_dic[str(value).lower()]
        js = f'window.open("{url}", "_blank").then(r => window.parent.location.href);'
        st_javascript(js)
    except:
        pass
def draw(folder_name, category_name, dataset_name, metrics):
    
    folder = f"./results/{metrics}/"
    display_names = {
        'SU': 'Speech Understanding',
        'ASU': 'Audio Scene Understanding',
        'VU': 'Voice Understanding'
    }
    
    data_path = f'{folder}/{category_name.lower()}.csv'
    chart_data = pd.read_csv(data_path).round(2)
    # if sorted == 'Ascending':
    #     ascend = True 
    # else:
    #     ascend = False
    new_dataset_name = dataset_name.replace('-', '_').lower()
    chart_data = chart_data[['Model', new_dataset_name]]
    
    chart_data = chart_data.sort_values(by=[new_dataset_name], ascending=True).dropna(axis=0)
    if len(chart_data) == 0:
        return
    
    min_value = round(chart_data.iloc[:, 1::].min().min() - 0.1, 1) 
    max_value = round(chart_data.iloc[:, 1::].max().max() + 0.1, 1)         
    options = {
        "title": {"text": f"{display_names[folder_name.upper()]}"},
        "tooltip": {
            "trigger": "axis",
            "axisPointer": {"type": "cross", "label": {"backgroundColor": "#6a7985"}},
            "triggerOn": 'mousemove',
        },
        "legend": {"data": ['Overall Accuracy']},
        "toolbox": {"feature": {"saveAsImage": {}}},
        "grid": {"left": "3%", "right": "4%", "bottom": "3%", "containLabel": True},
        "xAxis": [
            {
                "type": "category",
                "boundaryGap": False,
                "triggerEvent": True,
                "data": chart_data['Model'].tolist(),
            }
        ],
        "yAxis": [{"type": "value", 
                    "min": min_value,
                    "max": max_value, 
                    # "splitNumber": 10
                    }],
        "series": [{
                "name": f"{dataset_name}",
                "type": "line",
                "data": chart_data[f'{new_dataset_name}'].tolist(),
            }],
    }
    
    events = {
        "click": "function(params) { return params.value }"
    }
    value = st_echarts(options=options, events=events, height="500px")
    
    if value != None:
        # print(value)
        nav_to(value)
    # if value != None:
    #     highlight_table_line(value)
    '''
    Show table
    '''
    # st.divider()
    with st.expander('TABLE'):
    # chart_data['Link'] = chart_data['Model'].map(links_dic)
        st.dataframe(chart_data,
                    #  column_config = {
                    #      "Link": st.column_config.LinkColumn(
                    #          display_text= st.image(huggingface_image)
                    #      ),
                    #  }, 
                        hide_index = True, 
                        use_container_width=True)
    '''
    show samples
    '''
    show_examples(category_name, dataset_name, chart_data['Model'].tolist())
    
 |