Skip to content

Commit 4ccc2bb

Browse files
committed
Generate a single table instead of multiple tables
1 parent c8ae164 commit 4ccc2bb

1 file changed

Lines changed: 27 additions & 40 deletions

File tree

compare_code_metrics.py

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import functools
12
import json
23
import os.path
34
from 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

4039
def _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

6360
def _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

8681
def _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

122107
def _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

191172
if __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

Comments
 (0)