class_docstr: Selects the right wrapper (based on the environment), runs, and saves the src.
code: def run(self) -> None:
      # Get name of the current computer (for comparison purposes)
      assert self._wrapper is not None
  
      # First, we load all the previous data
      self._load_data()
  
      # Fill keys of the data object
      self._fill_keys()
  
      # Now iterate over all tasks
      for task in TASKS:
          for seed in SEEDS:
              print(f"--- Start {task.name} with seed {seed}")
  
              # Some variables
              d = self._data[self._computer][task.id]
  
              # Check if we already calculated the data before
              if (
                  str(seed) in d["trajectory_trials"][self._version]
                  and str(seed)
                  in d["trajectory_walltime"][self._version]
              ):
                  print(f"Already done {task.name}. Skipping.")
                  continue
              else:
                  print("Not found in the data. Running...")
  
              task_wrapper = self._wrapper(task, seed)
              try:
                  task_wrapper.run()
              except NotSupportedError:
                  print("Not supported. Skipping.")
                  continue
              except Exception as e:
                  print("Something went wrong:")
                  print(e)
                  continue
  
              for sort_by in ["trials", "walltime"]:
                  # Now we collect some metrics
                  try:
                      X, Y = task_wrapper.get_trajectory(
                          sort_by=sort_by
                      )
                  except NotSupportedError:
                      continue
  
                  d[f"trajectory_{sort_by}"][self._version][
                      str(seed)
                  ] = (X, Y)
  
              self._save_data()
  
      # Plot things
      self._plot_trajectory()
  
      # Write things
      self._write_table()
  
imports: from __future__ import annotations
  import sys
  import logging
  from typing import Any
  import numpy
  import json
  import socket
  from collections import defaultdict
  from pathlib import Path
  import pandas
  from src.tasks import TASKS
  from src.utils.exceptions import NotSupportedError
  from src.utils.styled_plot import plt
  from src.wrappers.v14 import Version14
  from src.wrappers.v20 import Version20
  from src.wrappers.wrapper import Wrapper
label_desc: Use image node_id 6 for calling the Benchmark obj's underlying member method code with example usage: obj.run() without return types