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