Coverage for pesummary/utils/parameters.py: 93.3%
45 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-12-09 22:34 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-12-09 22:34 +0000
1# Licensed under an MIT style license -- see LICENSE.md
3from .list import List
4from pesummary.gw.file.standard_names import descriptive_names
6__author__ = ["Charlie Hoy <charlie.hoy@ligo.org>"]
9class Parameter(str):
10 """Class to handle a single parameter
12 Parameters
13 ----------
14 parameter: str
15 name of the parameter
16 description: str, optional
17 text describing what parameter represents. Default, look to see if
18 pesummary has a descriptive name for parameter else 'Unknown parameter
19 description
21 Attributes
22 ----------
23 description: str
24 return text describing what parameter represents
25 """
26 def __new__(self, parameter, **kwargs):
27 return super(Parameter, self).__new__(self, parameter)
29 def __init__(self, parameter, description=None):
30 self._parameter = parameter
31 self._description = "Unknown parameter description"
32 if description is None:
33 if parameter in descriptive_names.keys():
34 self._description = descriptive_names[parameter]
35 else:
36 self._description = description
38 @property
39 def description(self):
40 return self._description
42 def __repr__(self):
43 return repr(self._parameter)
46class Parameters(List):
47 """Class to store the list of parameters
49 Parameters
50 ----------
51 args: tuple
52 all arguments are passed to the list class
53 **kwargs: dict
54 all kwargs are passed to the list class
56 Attributes
57 ----------
58 added: list
59 list of parameters that have been appended to the original list
60 """
61 def __init__(self, *args, cls=Parameter, **kwargs):
62 self._cls = cls
63 if len(args) == 1:
64 super(Parameters, self).__init__(*args, cls=Parameter, **kwargs)
65 else:
66 _args = list(args)
67 _args[2] = Parameter
68 super(Parameters, self).__init__(*_args, **kwargs)
70 def __iter__(self, *args, **kwargs):
71 _iter = super(Parameters, self).__iter__(*args, **kwargs)
72 for _value in _iter:
73 yield self._cls(_value)
76class MultiAnalysisParameters(List):
77 """Class to store a multidimensional list of parameters
79 Parameters
80 ----------
81 args: tuple
82 all arguments are passed to the list class
83 **kwargs: dict
84 all kwargs are passed to the list class
86 Attributes
87 ----------
88 added: list
89 list of parameters that have been appended to the original list
90 """
91 def __init__(self, *args, cls=Parameters, **kwargs):
92 self._cls = cls
93 if len(args) == 1:
94 super(MultiAnalysisParameters, self).__init__(
95 *args, cls=cls, **kwargs
96 )
97 else:
98 _args = list(args)
99 _args[2] = Parameters
100 super(MultiAnalysisParameters, self).__init__(*_args, **kwargs)
102 def __getitem__(self, *args, **kwargs):
103 self.cls = None
104 output = super(List, self).__getitem__(*args, **kwargs)
105 self.cls = self._cls
106 if isinstance(output[0], list):
107 return [self.cls(value) for value in output]
108 return self.cls(output)