1+ import functools
12import json
23import os .path
34from pathlib import Path
@@ -32,9 +33,7 @@ def _generate_cc_table():
3233
3334 df = _generate_table (data , metric_names .values ())
3435
35- styled_df = df .style .apply (_highlight_minimum , axis = None ).format (precision = 2 )
36-
37- return styled_df .to_latex (hrules = True , multicol_align = "c" , convert_css = True )
36+ return df
3837
3938
4039def _generate_mi_table ():
@@ -55,9 +54,7 @@ def _generate_mi_table():
5554
5655 df = _generate_table (data , metric_names .values ())
5756
58- styled_df = df .style .apply (_highlight_maximum , axis = None ).format (precision = 2 )
59-
60- return styled_df .to_latex (hrules = True , multicol_align = "c" , convert_css = True )
57+ return df
6158
6259
6360def _generate_raw_table ():
@@ -78,27 +75,17 @@ def _generate_raw_table():
7875
7976 df = _generate_table (data , metric_names .values ())
8077
81- styled_df = df .style .apply (_highlight_minimum , axis = None ).format (precision = 2 )
82-
83- return styled_df .to_latex (hrules = True , multicol_align = "c" , convert_css = True )
78+ return df
8479
8580
8681def _generate_hal_table ():
8782 path = _PARENT_PATH / "hal.json"
8883
8984 metric_names = {
90- "h1" : "$\\ eta_1$" ,
91- "h2" : "$\\ eta_2$" ,
92- "N1" : "$N_1$" ,
93- "N2" : "$N_2$" ,
9485 "vocabulary" : "$\\ eta$" ,
9586 "length" : "$N$" ,
96- "calculated_length" : "$\\ hat{N}$" ,
9787 "volume" : "$V$" ,
9888 "difficulty" : "$D$" ,
99- "effort" : "$E$" ,
100- "time" : "$T$" ,
101- "bugs" : "$B$" ,
10289 }
10390
10491 data = json .loads (path .read_text ())
@@ -114,9 +101,7 @@ def _generate_hal_table():
114101
115102 df = _generate_table (data , metric_names .values ())
116103
117- styled_df = df .style .apply (_highlight_minimum , axis = None ).format (precision = 2 )
118-
119- return styled_df .to_latex (hrules = True , multicol_align = "c" , convert_css = True )
104+ return df
120105
121106
122107def _generate_table (data , metric_names ):
@@ -162,37 +147,39 @@ def _key_from_kernel_name(path, kernel_name):
162147 return df
163148
164149
165- def _highlight_minimum (df ):
166- styles = pd .DataFrame ("" , index = df .index , columns = df .columns )
150+ def _highlight (df ):
151+ new_df = pd .DataFrame ("" , index = df .index , columns = df .columns )
167152
168- for kernel , group in df .groupby (level = 0 ):
153+ for _ , group in df [
154+ ["LOC" , "LLOC" , "SLOC" , "$G$" , "$\\ eta$" , "$N$" , "$V$" , "$D$" ]
155+ ].groupby (level = 0 ):
169156 mask = group == group .min ()
170157
171- styles .update (
158+ new_df .update (
172159 mask .replace (True , "background-color: green!20" ).replace (False , "" )
173160 )
174161
175- return styles
176-
177-
178- def _highlight_maximum (df ):
179- styles = pd .DataFrame ("" , index = df .index , columns = df .columns )
180-
181- for kernel , group in df .groupby (level = 0 ):
162+ for _ , group in df [["$MI$" ]].groupby (level = 0 ):
182163 mask = group == group .max ()
183164
184- styles .update (
165+ new_df .update (
185166 mask .replace (True , "background-color: green!20" ).replace (False , "" )
186167 )
187168
188- return styles
169+ return new_df
189170
190171
191172if __name__ == "__main__" :
192- for latex_code in (
193- _generate_cc_table (),
194- _generate_mi_table (),
195- _generate_raw_table (),
196- _generate_hal_table (),
197- ):
198- print (latex_code )
173+ raw_table = _generate_raw_table ()
174+ cc_table = _generate_cc_table ()
175+ hal_table = _generate_hal_table ()
176+ mi_table = _generate_mi_table ()
177+
178+ df = functools .reduce (
179+ lambda left , right : pd .merge (left , right , left_index = True , right_index = True ),
180+ (raw_table , cc_table , hal_table , mi_table ),
181+ )
182+
183+ styler = df .style .apply (_highlight , axis = None ).format (precision = 2 )
184+
185+ print (styler .to_latex (hrules = True , multicol_align = "c" , convert_css = True ))
0 commit comments