in lmms_eval/utils.py [0:0]
def make_table(result_dict, column: str = "results"):
"""Generate table of results."""
from pytablewriter import MarkdownTableWriter, LatexTableWriter
if column == "results":
column_name = "Tasks"
elif column == "groups":
column_name = "Groups"
all_headers = [
column_name,
"Version",
"Filter",
"n-shot",
"Metric",
"Value",
"",
"Stderr",
]
md_writer = MarkdownTableWriter()
latex_writer = LatexTableWriter()
md_writer.headers = all_headers
latex_writer.headers = all_headers
# Set column alignments for LaTeX
latex_writer.column_alignments = ["center"] * len(all_headers)
# Set padding for LaTeX columns (this will add space between columns)
latex_writer.column_format = " ".join(["|c"] * len(all_headers)) + "|"
values = []
for k, dic in result_dict[column].items():
version = result_dict["versions"][k]
n = str(result_dict["n-shot"][k])
if "alias" in dic:
k = dic.pop("alias")
for (mf), v in dic.items():
m, _, f = mf.partition(",")
if m.endswith("_stderr"):
continue
points = "N/A"
if v is not None:
points = "%.4f" % v
if m + "_stderr" + "," + f in dic:
if v is None:
se = "N/A"
else:
se = dic[m + "_stderr" + "," + f]
if se != "N/A":
se = "%.4f" % se
values.append([k, version, f, n, m, points, "±", se])
else:
values.append([k, version, f, n, m, points, "", ""])
k = ""
version = ""
md_writer.value_matrix = values
latex_writer.value_matrix = values
# Print LaTeX table to see how it looks
# print(latex_writer.dumps())
# Return Markdown table (note: column width and text alignment may not be supported)
return md_writer.dumps()