class_docstr: Benchmark definition
  
  Parameters
  ----------
  storage: Storage
      Instance of the storage to use
  
  name: str
      Name of the benchmark
  
  algorithms: list, optional
      Algorithms used for benchmark, and for each algorithm, it can be formats as below:
  
      - A `str` of the algorithm name
      - A `dict`, with only one key and one value, where key is the algorithm name and value is a dict for the algorithm config.
  
      Examples:
  
      >>> ["random", "tpe"]
      >>> ["random", {"tpe": {"seed": 1}}]
  
  targets: list, optional
      Targets for the benchmark, each target will be a dict with two keys.
  
      assess: list
          Assessment objects
      task: list
          Task objects
  
  executor: `orion.executor.base.BaseExecutor`, optional
      Executor to run the benchmark experiments
class_docstr_tok: ["Benchmark","definition","Parameters","--","--","--","--","--","storage",":","Storage","Instance","of","the","storage","to","use","name",":","str","Name","of","the","benchmark","algorithms",":","list",",","optional","Algorithms","used","for","benchmark",",","and","for","each","algorithm",",","it","can","be","formats","as","below",":","-","A","`","str","`","of","the","algorithm","name","-","A","`","dict","`",",","with","only","one","key","and","one","value",",","where","key","is","the","algorithm","name","and","value","is","a","dict","for","the","algorithm","config",".","Examples",":",">",">",">","[","``","random","''",",","``","tpe","''","]",">",">",">","[","``","random","''",",","{","``","tpe","''",":","{","``","seed","''",":","1","}","}","]","targets",":","list",",","optional","Targets","for","the","benchmark",",","each","target","will","be","a","dict","with","two","keys",".","assess",":","list","Assessment","objects","task",":","list","Task","objects","executor",":","`","orion.executor.base.BaseExecutor","`",",","optional","Executor","to","run","the","benchmark","experiments"]
docstr: Return all assessment figures
  
  Parameters
  ----------
  assessment: str or None, optional
      Filter analysis and only return those for the given assessment name.
  task: str or None, optional
      Filter analysis and only return those for the given task name.
  algorithms: list of str or None, optional
      Compute analysis only on specified algorithms. Compute on all otherwise.
docstr_tok: ["Return","all","assessment","figures","Parameters","--","--","--","--","--","assessment",":","str","or","None",",","optional","Filter","analysis","and","only","return","those","for","the","given","assessment","name",".","task",":","str","or","None",",","optional","Filter","analysis","and","only","return","those","for","the","given","task","name",".","algorithms",":","list","of","str","or","None",",","optional","Compute","analysis","only","on","specified","algorithms",".","Compute","on","all","otherwise","."]
code: def analysis(self, assessment=None, task=None, algorithms=None):
      """Return all assessment figures
  
      Parameters
      ----------
      assessment: str or None, optional
          Filter analysis and only return those for the given assessment name.
      task: str or None, optional
          Filter analysis and only return those for the given task name.
      algorithms: list of str or None, optional
          Compute analysis only on specified algorithms. Compute on all otherwise.
      """
      self.validate_assessment(assessment)
      self.validate_task(task)
      self.validate_algorithms(algorithms)
  
      figures = defaultdict(dict)
      for study in self.studies:
          if (
              assessment is not None
              and study.assess_name != assessment
              or task is not None
              and study.task_name != task
          ):
              continue
  
          # NOTE: From ParallelAssessment PR
          # figures[study.assess_name].update(figure[study.assess_name])
          figures[study.assess_name][study.task_name] = study.analysis(
              algorithms
          )
      return figures
  
imports: import copy
  import itertools
  import time
  from collections import defaultdict
  from tabulate import tabulate
  import orion.core
  from orion.algo.base import algo_factory
  from orion.client import create_experiment
  from orion.executor.base import executor_factory
  from orion.storage.base import BaseStorageProtocol
label_desc: Use image node_id 6 for calling the Benchmark obj's underlying member method code with example usage: obj.analysis(assessment, task, algorithms) and returns: figures