MCPcopy Create free account
hub / github.com/NSLS2/PyXRF / ElementController

Class ElementController

pyxrf/model/parameters.py:76–213  ·  view source on GitHub ↗

This class performs basic ways to rank elements, show elements, calculate normed intensity, and etc.

Source from the content-addressed store, hash-verified

74
75
76class ElementController(object):
77 """
78 This class performs basic ways to rank elements, show elements,
79 calculate normed intensity, and etc.
80 """
81
82 def __init__(self):
83 self.element_dict = OrderedDict()
84
85 def delete_item(self, k):
86 try:
87 del self.element_dict[k]
88 self.update_norm()
89 logger.debug("Item {} is deleted.".format(k))
90 except KeyError:
91 pass
92
93 def order(self, option="z"):
94 """
95 Order dict in different ways.
96 """
97 if option == "z":
98 self.element_dict = OrderedDict(sorted(self.element_dict.items(), key=lambda t: t[1].z))
99 elif option == "energy":
100 self.element_dict = OrderedDict(sorted(self.element_dict.items(), key=lambda t: t[1].energy))
101 elif option == "name":
102 self.element_dict = OrderedDict(sorted(self.element_dict.items(), key=lambda t: t[0]))
103 elif option == "maxv":
104 self.element_dict = OrderedDict(
105 sorted(self.element_dict.items(), key=lambda t: t[1].maxv, reverse=True)
106 )
107
108 def add_to_dict(self, dictv):
109 """
110 This function updates the dictionary element if it already exists.
111 """
112 self.element_dict.update(dictv)
113 logger.debug("Item {} is added.".format(list(dictv.keys())))
114 self.update_norm()
115
116 def update_norm(self, threshv=0.0):
117 """
118 Calculate the normalized intensity for each element peak.
119
120 Parameters
121 ----------
122 threshv : float
123 No value is shown when smaller than the threshold value
124 """
125 # Do nothing if no elements are selected
126 if not self.element_dict:
127 return
128
129 max_dict = np.max([v.maxv for v in self.element_dict.values()])
130
131 for v in self.element_dict.values():
132 v.norm = v.maxv / max_dict * 100
133 v.lbd_stat = bool(v.norm > threshv)

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected