eEg 3 ddlZddlZddlTddlZddlZddlmZ ddl m Z ddl ZddlmZddlmZ d&dedfdZd'd ed efd Zd(d efd ZdedefdZd)dedededefdZd*defdZd'dededefdZd+dZd,dZ d-d!ed"efd#Z!d.d%Z"dS)/N)*)LogisticRegression)Navbarcenteredlayout)widerctjd|tj}d}tj|ddtjvrdtjd<|S)Nz VARCO Arena) page_titlerz T)unsafe_allow_htmlkoreanF)stset_page_configsidebaremptymarkdown session_state)rsidebar_placeholdercsss ?/home/deftson/nfs-deftson/2024/public_varco_arena/view_utils.pydefault_page_settingrsm-????***,, CKt,,,,r'''%*"  is_runningtoggle_hashstrcF|tjd<t||dS)Nr)r)r rr)rrrs r set_nav_barr's)%/B\" ~>>>>>>rdid_select_promptc$|tjd<dS)Nr)r r)rexpander_placeholders rset_prompt_previewr-s,=B()))rtextreturnc\t|tr|ddndS)N z z(Empty)) isinstancestrreplace)r s rshow_linebreak_in_mdr'1s*+5dC+@+@ O4<<h ' ' 'iOrversion entity_typect|dkrd}n5t|dkr|dvrd}n|dkrd}nd}ntd tjd tj|d d |S) aM Helper function to escape telegram markup symbols. Args: text (:obj:`str`): The text. version (:obj:`int` | :obj:`str`): Use to specify the version of telegrams Markdown. Either ``1`` or ``2``. Defaults to ``1``. entity_type (:obj:`str`, optional): For the entity types ``PRE``, ``CODE`` and the link part of ``TEXT_LINKS``, only certain characters need to be escaped in ``MarkdownV2``. See the official API documentation for details. Only valid in combination with ``version=2``, will be ignored else. z_*`[r()precodez\` text_linkz\)z_*[]()~`>#+-=|{}.!:z'Markdown version must be either 1 or 2!z([z])z\\\1)int ValueErrorresubescape)r r)r* escape_charss rescape_markdownr65s 7||q W   / ) ) LL K ' ' LL1LLBCCC 62ry..222GT B BBr float_ptscddlm}|d}|t|}|d||d<|S)z Post-processing utility for saving elo table to an excel file. Possibly work as a absolute measure for quality. elo_df: columns: Model, Elo rating add: column: relative_winrate_to_1st r)partial Elo rating)rating_bwinrate_vs_1st) functoolsr:maxelo_to_winrateapply)elo_dfr8r: rating1stwin_rate_to_1sts rcompute_relative_winrate_to_1strERsc"!!!!!|$((**IgnyAAAO%l399/JJF  Mrrating_ar<c.||z }ddd| dz zzz }|S)Nr, )rFr< rate_diffwin_rates rr@r@es,8#IA zC/001H OrrIrHc t|trtj|}|gd}tj|d|dg}tjtj t||}tj||gd}t|j }|j d}tj ||g}tj| |tj |||df<tj| |tj |||df<tj |}d ||d d k<d } |dkr)t#| d d |d<n@|d kr(t#| dd|d<t'd} | |||| jdz|z tj |j d tj fd Dddgddd}|j dz|_ |S)N)winnermodel_amodel_b)subsetrPrQ)indexT) ignore_indexrg?rOAaelo.py:L{L} compute_mle_elo() // Warning: Seeing this message indicates the regression result for elo is unreliable. You should be test-running the Varco Arena or something odd (perfect one-sided wins) is happening to avoid logistic regressor error, manually putting other class )L#gF) fit_intercept ascendingc@g|]}|t|dgS)r()round).0n elo_scoress r z#compute_mle_elo..s, E E Eaaz!}a(( ) E E ErModelr;columns)dropr,)r$listpd DataFramedropnaconcatuniqueSeriesnparangelenrSshapezerosmathlogallprintformatrfitcoef_ sort_valueskeys reset_index) dfSCALEBASE INIT_RATINGmodelspr`XYWARNINGlrras @rcompute_mle_elorls"d \"   ::: ; ;B Y9 r)}5 6 6 = = ? ?F YryV--V < < ._win_to_loss_wc_ratios :$$ 5 5 7 7883s?T?T?V?V;W;WWEE 5 5 7 7883s?T?T?V?V;W;WWE    LsB&B)) B?3B::B?r,rrzwin/loss wc ratiocategorycg|]}|dv| S))rrrJ)r_rs rrbz%_plot_length_bias..s#KKKS#5J*J*JS*J*J*Jrrdz Length bias ())xytitlewonrOrU)r wordcountslostzwon/lost ratioroutcome wordcount)rr)rrrlabels)r$rhri from_dictrArfpxvioliniterrowsappendrprrr) resultsrrrr}plot_dffigdata_rs r_plot_length_biasrs gr| , ,2,((11 E    hh41h==7 ,:''KKBKKK  i .)...    &&((  FAs KK %8}++#&co&;&;&=&=">">">S_224455     KK &8}++#&co&;&;&=&=">">">S_224455     KK 08}++#&co&;&;&=&=">">#///1122#3#3S_224455#///11223     ,t$$i .)... ) DD     <rFc Httjstji}jdd}t |\}}||d<||d<t jdd|dd d }| d d d||d<t jtj ddgdd }| ddd d||d<tj dddd}||j z}| dj}t j|j||fdd }| dddd d d!dt%d"#$|d%&||d'<tj dd(kdddd} t)| } tj dd)kdddd} t)| } tj dddd} | | j z| | j zz } | d*+d} t-| }| j||f}t j|d,d-d./}| ddd!ddd d 0|d1&||d2<t1}t3|}|d3t6|d3<|d4d5|d4<d6|j_||d7<|rd8}tj fd9|D}t j |d3d8d d8|idd t j!j"j#d:; }||d<<||d=<|S)>uv varco_arena/visualization.py 로부터 가져온 함수이나 업데이트가 많이 되었으므로 조심! revaluation_model)r length_biaslength_bias_dfrOzPosition A/B bias (rTrI)r text_autoheightz Match WinnerCountF) xaxis_title yaxis_title showlegendcounts_of_match_winnersrPrQzMatch Count per Model)rrrcz Match Count)rrrrmatch_count_for_each_modelsize)rSreaggfunc fill_valuer[z#Number of Matches (model vs. model)zModel BzModel Atopi leftrH)r)rr xaxis_siderwidth title_xanchor title_yanchorfontzModel B: %{x}
Count: %{z}) hovertemplate)match_count_of_each_combination_of_modelsrUBr,rRdBuz.2fz P(A wins B))color_continuous_scalerr)rrrrrrrzBModel A: %{y}
Model B: %{x}
P(A wins B): %{z}/fraction_of_model_a_wins_for_all_a_vs_b_matchesr;r=r7Rank elo_ratingtaskcvg|]5}td|k|6S)r)r)rassign)r_rrs rrbz!visualization..sP    4(? @AAHHdHSS   rzElo Rating by Task)rtheta line_closecategory_orderscolormarkerscolor_discrete_sequencerelo_rating_by_taskr)$r$rhririlocrrbar value_counts update_layoutrk pivot_tableTsumrzrSimshowrdict update_tracesrmeanrgr{rrEastyper0r^namerltolist line_polarcolors qualitativePastel)r is_overall figure_dictrrrptbl match_countsordering a_win_ptbl b_win_ptblnum_results_ptblrow_beats_col_freq prop_wins model_names row_beats_coleloelo_wrtasks elo_by_tasks` r visualizationr s gr| , ,2,((11K Q 23I%W BBBLC!$K $+K ! &&&((1Y111    C .gRWXXX-0K)* & 79%wy'9:;;HHJJ%   C su14K,- >    D$&=L!!--->>DH )8+,3   C  r]]]   T@CK;<!S() J%Z00J!S() J%Z00J~y)VPQ%z|3+--#''Q'//;;e;LLIy~~''((K&*; +CDM )%    C ZFIKAB ' " "C ,S 1 1F!,/66s;;F<%&67==a@@F FL &K 0&&((//11i    !     m #UO$&I$9$@&    -0 ()(K  r)r)NN)N)r(N)r7)rIrHrM)r)NT)F)#rsr2typingnumpyrnpandasrhplotly.expressexpressrplotly.graph_objects graph_objectsgo streamlitr sklearn.linear_modelr modules.navrLiteralrboolr%rrr'r0r6rEfloatr@rrrrrJrrrs2 !!!!!!333333 +5 & '.??D?C???? >>$>>>>PsPsPPPPCC#CCcCSCCCC:s&UUe....b>KK#KTKKKK\SSSSSSr