66 from strenum import StrEnum
77
88
9- # Controls
10- class Parallel (StrEnum ):
11- """Defines the available options for parallelization"""
9+ class RATEnum (StrEnum ):
10+ @classmethod
11+ def _missing_ (cls , value : str ):
12+ value = value .lower ()
1213
13- Single = "single"
14- Points = "points"
15- Contrasts = "contrasts"
14+ # Replace common alternative spellings
15+ value = value .replace ("-" , " " ).replace ("_" , " " ).replace ("++" , "pp" ).replace ("polarized" , "polarised" )
16+
17+ for member in cls :
18+ if member .value .lower () == value :
19+ return member
20+ return None
1621
1722
18- class Procedures (StrEnum ):
23+ # Controls
24+ class Procedures (RATEnum ):
1925 """Defines the available options for procedures"""
2026
2127 Calculate = "calculate"
2228 Simplex = "simplex"
23- DE = "de "
24- NS = "ns "
25- Dream = "dream "
29+ DE = "DE "
30+ NS = "NS "
31+ DREAM = "DREAM "
2632
2733
28- class Display (StrEnum ):
34+ class Parallel (RATEnum ):
35+ """Defines the available options for parallelization"""
36+
37+ Single = "single"
38+ Points = "points"
39+ Contrasts = "contrasts"
40+
41+
42+ class Display (RATEnum ):
2943 """Defines the available options for display"""
3044
3145 Off = "off"
@@ -34,15 +48,6 @@ class Display(StrEnum):
3448 Final = "final"
3549
3650
37- class BoundHandling (StrEnum ):
38- """Defines the available options for bound handling"""
39-
40- Off = "off"
41- Reflect = "reflect"
42- Bound = "bound"
43- Fold = "fold"
44-
45-
4651class Strategies (Enum ):
4752 """Defines the available options for strategies"""
4853
@@ -54,48 +59,56 @@ class Strategies(Enum):
5459 RandomEitherOrAlgorithm = 6
5560
5661
57- # Models
58- class Hydration (StrEnum ):
59- None_ = "none"
60- BulkIn = "bulk in"
61- BulkOut = "bulk out"
62- Oil = "oil"
63-
64-
65- class Languages (StrEnum ):
66- Cpp = "cpp"
67- Python = "python"
68- Matlab = "matlab"
69-
62+ class BoundHandling (RATEnum ):
63+ """Defines the available options for bound handling"""
7064
71- class Priors (StrEnum ):
72- Uniform = "uniform"
73- Gaussian = "gaussian"
65+ Off = "off"
66+ Reflect = "reflect"
67+ Bound = "bound"
68+ Fold = "fold"
7469
7570
76- class TypeOptions (StrEnum ):
71+ # Models
72+ class TypeOptions (RATEnum ):
7773 Constant = "constant"
7874 Data = "data"
7975 Function = "function"
8076
8177
82- class BackgroundActions (StrEnum ):
78+ class BackgroundActions (RATEnum ):
8379 Add = "add"
8480 Subtract = "subtract"
8581
8682
83+ class Languages (RATEnum ):
84+ Cpp = "Cpp"
85+ Python = "python"
86+ Matlab = "matlab"
87+
88+
89+ class Hydration (RATEnum ):
90+ None_ = "none"
91+ BulkIn = "bulk in"
92+ BulkOut = "bulk out"
93+
94+
95+ class Priors (RATEnum ):
96+ Uniform = "uniform"
97+ Gaussian = "gaussian"
98+
99+
87100# Project
88- class Calculations (StrEnum ):
101+ class Calculations (RATEnum ):
89102 NonPolarised = "non polarised"
90103 Domains = "domains"
91104
92105
93- class Geometries (StrEnum ):
94- AirSubstrate = "air/substrate"
95- SubstrateLiquid = "substrate/liquid"
96-
97-
98- class LayerModels (StrEnum ):
106+ class LayerModels (RATEnum ):
99107 CustomLayers = "custom layers"
100108 CustomXY = "custom xy"
101109 StandardLayers = "standard layers"
110+
111+
112+ class Geometries (RATEnum ):
113+ AirSubstrate = "air/substrate"
114+ SubstrateLiquid = "substrate/liquid"
0 commit comments