refactor: isinstance comparisons in correlators module simplified

This commit is contained in:
Fabian Joswig 2022-02-10 11:12:31 +00:00
parent 31a98f81c4
commit 3523bfa568

View file

@ -69,10 +69,10 @@ class Corr:
if isinstance(data_input, list): if isinstance(data_input, list):
if all([(isinstance(item, Obs) or isinstance(item, CObs)) for item in data_input]): if all([isinstance(item, (Obs, CObs)) for item in data_input]):
_assert_equal_properties(data_input) _assert_equal_properties(data_input)
self.content = [np.asarray([item]) for item in data_input] self.content = [np.asarray([item]) for item in data_input]
if all([(isinstance(item, Obs) or isinstance(item, CObs)) or item is None for item in data_input]): if all([isinstance(item, (Obs, CObs)) or item is None for item in data_input]):
_assert_equal_properties([o for o in data_input if o is not None]) _assert_equal_properties([o for o in data_input if o is not None])
self.content = [np.asarray([item]) if item is not None else None for item in data_input] self.content = [np.asarray([item]) if item is not None else None for item in data_input]
self.N = 1 self.N = 1
@ -735,7 +735,7 @@ class Corr:
else: else:
ax1.set_ylim(y_range) ax1.set_ylim(y_range)
if comp: if comp:
if isinstance(comp, Corr) or isinstance(comp, list): if isinstance(comp, (Corr, list)):
for corr in comp if isinstance(comp, list) else [comp]: for corr in comp if isinstance(comp, list) else [comp]:
x, y, y_err = corr.plottable() x, y, y_err = corr.plottable()
plt.errorbar(x, y, y_err, label=corr.tag, mfc=plt.rcParams['axes.facecolor']) plt.errorbar(x, y, y_err, label=corr.tag, mfc=plt.rcParams['axes.facecolor'])
@ -846,7 +846,7 @@ class Corr:
newcontent.append(self.content[t] + y.content[t]) newcontent.append(self.content[t] + y.content[t])
return Corr(newcontent) return Corr(newcontent)
elif isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float) or isinstance(y, CObs): elif isinstance(y, (Obs, int, float, CObs)):
newcontent = [] newcontent = []
for t in range(self.T): for t in range(self.T):
if (self.content[t] is None): if (self.content[t] is None):
@ -869,7 +869,7 @@ class Corr:
newcontent.append(self.content[t] * y.content[t]) newcontent.append(self.content[t] * y.content[t])
return Corr(newcontent) return Corr(newcontent)
elif isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float) or isinstance(y, CObs): elif isinstance(y, (Obs, int, float, CObs)):
newcontent = [] newcontent = []
for t in range(self.T): for t in range(self.T):
if (self.content[t] is None): if (self.content[t] is None):
@ -900,7 +900,7 @@ class Corr:
raise Exception("Division returns completely undefined correlator") raise Exception("Division returns completely undefined correlator")
return Corr(newcontent) return Corr(newcontent)
elif isinstance(y, Obs) or isinstance(y, CObs): elif isinstance(y, (Obs, CObs)):
if isinstance(y, Obs): if isinstance(y, Obs):
if y.value == 0: if y.value == 0:
raise Exception('Division by zero will return undefined correlator') raise Exception('Division by zero will return undefined correlator')
@ -916,7 +916,7 @@ class Corr:
newcontent.append(self.content[t] / y) newcontent.append(self.content[t] / y)
return Corr(newcontent, prange=self.prange) return Corr(newcontent, prange=self.prange)
elif isinstance(y, int) or isinstance(y, float): elif isinstance(y, (int, float)):
if y == 0: if y == 0:
raise Exception('Division by zero will return undefined correlator') raise Exception('Division by zero will return undefined correlator')
newcontent = [] newcontent = []
@ -937,7 +937,7 @@ class Corr:
return self + (-y) return self + (-y)
def __pow__(self, y): def __pow__(self, y):
if isinstance(y, Obs) or isinstance(y, int) or isinstance(y, float) or isinstance(y, CObs): if isinstance(y, (Obs, int, float, CObs)):
newcontent = [None if (item is None) else item**y for item in self.content] newcontent = [None if (item is None) else item**y for item in self.content]
return Corr(newcontent, prange=self.prange) return Corr(newcontent, prange=self.prange)
else: else: