code: def print_statistics(self, run=None, f=sys.stdout):
      if run is not None:
          result = torch.tensor(self.results["valid"][run])
          print(f"Run {run + 1:02d}:", file=f)
          print(f"Highest Valid: {result.max():.4f}", file=f)
          print(
              f"Highest Eval Point: {result.argmax().item()+1}", file=f
          )
          if not self.info.no_test:
              print(
                  f'   Final Test Point[1]: {self.results["test"][run][0][0]}',
                  f'   Final Valid: {self.results["test"][run][0][1]}',
                  f'   Final Test: {self.results["test"][run][0][2]}',
                  sep="\n",
                  file=f,
              )
      else:
          best_result = torch.tensor(
              [test_res[0] for test_res in self.results["test"]]
          )
  
          print(f"All runs:", file=f)
          r = best_result[:, 1]
          print(
              f"Highest Valid: {r.mean():.4f} ± {r.std():.4f}", file=f
          )
          if not self.info.no_test:
              r = best_result[:, 2]
              print(
                  f"   Final Test: {r.mean():.4f} ± {r.std():.4f}",
                  file=f,
              )
  
file_path: dgl/examples/pytorch/ogb/ngnn_seal/utils.py
imports: import random
  import sys
  import numpy
  import torch
  from dgl.sampling import global_uniform_negative_sampling
  from scipy.sparse.csgraph import shortest_path
label_desc: Use image node_id 3 for calling the Logger obj's underlying member method code with example usage: obj.print_statistics(run, f) without return types