-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlabels.py
45 lines (39 loc) · 1.15 KB
/
labels.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Label:
def __init__(
self,
name: str = "",
symbol: str = "",
unit: str = "",
prefix: str = "",
subscript: str = "",
superscript: str = "",
multiplier: str = "",
):
self.name = name
self.symbol = symbol
self.unit = unit
self.prefix = prefix
self.subscript = subscript
self.superscript = superscript
self.multiplier = multiplier
@property
def label(self):
name = self.name
if self.prefix:
name = self.prefix + " " + name
symbol = fr"${self.symbol}"
if self.subscript:
symbol += fr"_\mathrm{{{self.subscript}}}"
if self.superscript:
symbol += fr"^\mathrm{{{self.superscript}}}"
symbol += "$"
unit = self.unit
if self.multiplier:
unit = self.multiplier + unit
return fr"{name} {symbol} ({unit})"
def __repr__(self):
obj_repr = [f"{k}='{v}'" for k, v in vars(self).items()]
obj_repr = "Label(" + ", ".join(obj_repr) + ")"
return obj_repr
def __str__(self):
return self.label