Belle II Software  release-05-01-25
metaoptions.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # std
5 from typing import Optional, Iterable, List
6 
7 
9  """
10  Class to simplify the parsing of plot options
11  supplied by the MetaOption named object attached
12  to root plots.
13 
14  A typical meta options list might look like this:
15  ["pvalue-warn=0.9", "pvalue-error=0.4"]
16  """
17 
18  def __init__(self, meta_option_list: Optional[Iterable] = None):
19  """
20  Initialize MetaOptionParser
21  @param meta_option_list: list of meta options read from ROOT object
22  or None
23  """
24  if meta_option_list is None:
25  meta_option_list = []
26  meta_option_list = list(meta_option_list)
27 
28  self.mo = meta_option_list # type: List[str]
29 
30  def has_option(self, option_name):
31  """
32  Checks whether an option is contained in the
33  meta options
34  @param option_name: name of the option to check for
35  @return: True if the option is contained in the meta option list
36  False otherwise
37  """
38  return option_name in self.mo
39 
40  def pvalue_warn(self):
41  """
42  @return: The custom warning level for the pvalue setting of plot
43  comparison. None if no custom value was set for the plot.
44  """
45  return self.float_value("pvalue-warn")
46 
47  def pvalue_error(self):
48  """
49  @return: The custom error level for the pvalue setting of plot
50  comparison. None if no custom value was set for the plot.
51  """
52  return self.float_value("pvalue-error")
53 
54  def float_value(self, key, default=None):
55  """
56  Extract the float value from a meta option list
57  @param key: the key to identify the value from the list
58  @param default: default value
59  @return: The float value or the default value if this key did not exist
60  or the float value could not be parsed.
61  """
62  v = self.parse_key_value(key)
63  if v is None:
64  return default
65  try:
66  return float(v)
67  except ValueError:
68  return default
69 
70  def int_value(self, key, default=None):
71  """
72  Extract the int value from a meta option list
73  @param key: the key to identify the value from the list
74  @param default: default value
75  @return: The int value or None if this key did not exist
76  or the float value could not be parsed.
77  """
78  v = self.parse_key_value(key)
79  if v is None:
80  return default
81  try:
82  return int(v)
83  except ValueError:
84  return default
85 
86  def parse_key_value(self, key):
87  """
88  Searches the meta options list for a key value entry and parses it
89  @param key: The key to look for
90  @retun: The value which was associated to the key or None if the
91  key was not found.
92  """
93  it = [s for s in self.mo if s.startswith(key + "=")]
94  if len(it) == 0:
95  return None
96 
97  key_value_pair = it[0].split("=")
98 
99  if len(key_value_pair) < 2:
100  return None
101 
102  return key_value_pair[1]
metaoptions.MetaOptionParser.int_value
def int_value(self, key, default=None)
Definition: metaoptions.py:70
metaoptions.MetaOptionParser.pvalue_warn
def pvalue_warn(self)
Definition: metaoptions.py:40
metaoptions.MetaOptionParser.has_option
def has_option(self, option_name)
Definition: metaoptions.py:30
metaoptions.MetaOptionParser.pvalue_error
def pvalue_error(self)
Definition: metaoptions.py:47
metaoptions.MetaOptionParser.mo
mo
store the meta option list for usage in the functions below
Definition: metaoptions.py:28
metaoptions.MetaOptionParser.float_value
def float_value(self, key, default=None)
Definition: metaoptions.py:54
metaoptions.MetaOptionParser.__init__
def __init__(self, Optional[Iterable] meta_option_list=None)
Definition: metaoptions.py:18
metaoptions.MetaOptionParser.parse_key_value
def parse_key_value(self, key)
Definition: metaoptions.py:86
metaoptions.MetaOptionParser
Definition: metaoptions.py:8