Generate table of results.
(result_dict, column: str = "results")
| 215 | |
| 216 | |
| 217 | def make_table(result_dict, column: str = "results"): |
| 218 | """Generate table of results.""" |
| 219 | from pytablewriter import LatexTableWriter, MarkdownTableWriter |
| 220 | |
| 221 | if column == "results": |
| 222 | column_name = "Tasks" |
| 223 | elif column == "groups": |
| 224 | column_name = "Groups" |
| 225 | |
| 226 | all_headers = [ |
| 227 | column_name, |
| 228 | "Version", |
| 229 | "Filter", |
| 230 | "n-shot", |
| 231 | "Metric", |
| 232 | "Value", |
| 233 | "", |
| 234 | "Stderr", |
| 235 | ] |
| 236 | |
| 237 | md_writer = MarkdownTableWriter() |
| 238 | latex_writer = LatexTableWriter() |
| 239 | md_writer.headers = all_headers |
| 240 | latex_writer.headers = all_headers |
| 241 | |
| 242 | values = [] |
| 243 | |
| 244 | for k, dic in result_dict[column].items(): |
| 245 | version = result_dict["versions"][k] |
| 246 | n = str(result_dict["n-shot"][k]) |
| 247 | |
| 248 | if "alias" in dic: |
| 249 | k = dic.pop("alias") |
| 250 | |
| 251 | for (mf), v in dic.items(): |
| 252 | m, _, f = mf.partition(",") |
| 253 | if m.endswith("_stderr"): |
| 254 | continue |
| 255 | |
| 256 | if m + "_stderr" + "," + f in dic: |
| 257 | se = dic[m + "_stderr" + "," + f] |
| 258 | if se != "N/A": |
| 259 | se = "%.4f" % se |
| 260 | values.append([k, version, f, n, m, "%.4f" % v, "±", se]) |
| 261 | else: |
| 262 | values.append([k, version, f, n, m, "%.4f" % v, "", ""]) |
| 263 | k = "" |
| 264 | version = "" |
| 265 | md_writer.value_matrix = values |
| 266 | latex_writer.value_matrix = values |
| 267 | |
| 268 | # todo: make latex table look good |
| 269 | # print(latex_writer.dumps()) |
| 270 | |
| 271 | return md_writer.dumps() |
| 272 | |
| 273 | |
| 274 | def positional_deprecated(fn): |