given a generator of metrics for each of the data points X_i, write the metrics, text, and labels to a json file
(self, writer_gen=None, path=None, skip_header=False)
| 427 | return len(self.X) |
| 428 | |
| 429 | def write(self, writer_gen=None, path=None, skip_header=False): |
| 430 | """ |
| 431 | given a generator of metrics for each of the data points X_i, |
| 432 | write the metrics, text, and labels to a json file |
| 433 | """ |
| 434 | if path is None: |
| 435 | path = self.path + '.results' |
| 436 | |
| 437 | jsons = [] |
| 438 | |
| 439 | if writer_gen is not None: |
| 440 | # if first item of generator is a header of what the metrics mean then write header to csv file |
| 441 | def gen_helper(): |
| 442 | keys = {} |
| 443 | keys[0] = self.label_key |
| 444 | if not skip_header: |
| 445 | for idx, k in enumerate(tuple(next(writer_gen))): |
| 446 | keys[idx + 1] = k |
| 447 | for i, row in enumerate(writer_gen): |
| 448 | if i == 0 and skip_header: |
| 449 | for idx, _ in enumerate(row): |
| 450 | keys[idx + 1] = 'metric_%d' % (idx,) |
| 451 | j = {} |
| 452 | for idx, v in enumerate((self.Y[i],) + tuple(row)): |
| 453 | k = keys[idx] |
| 454 | j[k] = v |
| 455 | yield j |
| 456 | else: |
| 457 | def gen_helper(): |
| 458 | for y in self.Y: |
| 459 | j = {} |
| 460 | j[self.label_key] = y |
| 461 | yield j |
| 462 | |
| 463 | def out_stream(): |
| 464 | for i, j in enumerate(gen_helper()): |
| 465 | j[self.text_key] = self.X[i] |
| 466 | yield j |
| 467 | |
| 468 | self.save_json_stream(path, out_stream()) |
| 469 | |
| 470 | def save_json_stream(self, save_path, json_stream): |
| 471 | if self.loose_json: |
nothing calls this directly
no test coverage detected