From 47ebab3037ec880cae12238ecf955a1fd54c8383 Mon Sep 17 00:00:00 2001
From: fjosw
Date: Tue, 24 Dec 2024 14:36:46 +0000
Subject: [PATCH] Documentation updated
---
docs/pyerrors.html | 16 +-
docs/pyerrors/correlators.html | 412 +++++++++++++++----------------
docs/pyerrors/dirac.html | 12 +-
docs/pyerrors/input.html | 16 +-
docs/pyerrors/input/dobs.html | 4 +-
docs/pyerrors/input/hadrons.html | 6 +-
docs/pyerrors/input/openQCD.html | 4 +-
docs/pyerrors/obs.html | 100 ++++----
8 files changed, 285 insertions(+), 285 deletions(-)
diff --git a/docs/pyerrors.html b/docs/pyerrors.html
index b2967e43..9598a9ac 100644
--- a/docs/pyerrors.html
+++ b/docs/pyerrors.html
@@ -1155,15 +1155,15 @@ The following entries are optional:
481from .correlators import *
482from .fits import *
483from .misc import *
-484from . import dirac
-485from . import input
-486from . import linalg
-487from . import mpm
-488from . import roots
-489from . import integrate
-490from . import special
+484from . import dirac as dirac
+485from . import input as input
+486from . import linalg as linalg
+487from . import mpm as mpm
+488from . import roots as roots
+489from . import integrate as integrate
+490from . import special as special
491
-492from .version import __version__
+492from .version import __version__ as __version__
diff --git a/docs/pyerrors/correlators.html b/docs/pyerrors/correlators.html
index 4f8ca29b..602f733c 100644
--- a/docs/pyerrors/correlators.html
+++ b/docs/pyerrors/correlators.html
@@ -344,7 +344,7 @@
101 self.N = 1
102 elif all([isinstance(item, np.ndarray) or item is None for item in data_input]) and any([isinstance(item, np.ndarray) for item in data_input]):
103 self.content = data_input
- 104 noNull = [a for a in self.content if not (a is None)] # To check if the matrices are correct for all undefined elements
+ 104 noNull = [a for a in self.content if a is not None] # To check if the matrices are correct for all undefined elements
105 self.N = noNull[0].shape[0]
106 if self.N > 1 and noNull[0].shape[0] != noNull[0].shape[1]:
107 raise ValueError("Smearing matrices are not NxN.")
@@ -384,7 +384,7 @@
141 def gamma_method(self, **kwargs):
142 """Apply the gamma method to the content of the Corr."""
143 for item in self.content:
- 144 if not (item is None):
+ 144 if item is not None:
145 if self.N == 1:
146 item[0].gamma_method(**kwargs)
147 else:
@@ -402,7 +402,7 @@
159 By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to
160 """
161 if self.N == 1:
- 162 raise Exception("Trying to project a Corr, that already has N=1.")
+ 162 raise ValueError("Trying to project a Corr, that already has N=1.")
163
164 if vector_l is None:
165 vector_l, vector_r = np.asarray([1.] + (self.N - 1) * [0.]), np.asarray([1.] + (self.N - 1) * [0.])
@@ -410,16 +410,16 @@
167 vector_r = vector_l
168 if isinstance(vector_l, list) and not isinstance(vector_r, list):
169 if len(vector_l) != self.T:
- 170 raise Exception("Length of vector list must be equal to T")
+ 170 raise ValueError("Length of vector list must be equal to T")
171 vector_r = [vector_r] * self.T
172 if isinstance(vector_r, list) and not isinstance(vector_l, list):
173 if len(vector_r) != self.T:
- 174 raise Exception("Length of vector list must be equal to T")
+ 174 raise ValueError("Length of vector list must be equal to T")
175 vector_l = [vector_l] * self.T
176
177 if not isinstance(vector_l, list):
178 if not vector_l.shape == vector_r.shape == (self.N,):
- 179 raise Exception("Vectors are of wrong shape!")
+ 179 raise ValueError("Vectors are of wrong shape!")
180 if normalize:
181 vector_l, vector_r = vector_l / np.sqrt((vector_l @ vector_l)), vector_r / np.sqrt(vector_r @ vector_r)
182 newcontent = [None if _check_for_none(self, item) else np.asarray([vector_l.T @ item @ vector_r]) for item in self.content]
@@ -444,7 +444,7 @@
201 Second index to be picked.
202 """
203 if self.N == 1:
- 204 raise Exception("Trying to pick item from projected Corr")
+ 204 raise ValueError("Trying to pick item from projected Corr")
205 newcontent = [None if (item is None) else item[i, j] for item in self.content]
206 return Corr(newcontent)
207
@@ -455,8 +455,8 @@
212 timeslice and the error on each timeslice.
213 """
214 if self.N != 1:
- 215 raise Exception("Can only make Corr[N=1] plottable")
- 216 x_list = [x for x in range(self.T) if not self.content[x] is None]
+ 215 raise ValueError("Can only make Corr[N=1] plottable")
+ 216 x_list = [x for x in range(self.T) if self.content[x] is not None]
217 y_list = [y[0].value for y in self.content if y is not None]
218 y_err_list = [y[0].dvalue for y in self.content if y is not None]
219
@@ -465,9 +465,9 @@
222 def symmetric(self):
223 """ Symmetrize the correlator around x0=0."""
224 if self.N != 1:
- 225 raise Exception('symmetric cannot be safely applied to multi-dimensional correlators.')
+ 225 raise ValueError('symmetric cannot be safely applied to multi-dimensional correlators.')
226 if self.T % 2 != 0:
- 227 raise Exception("Can not symmetrize odd T")
+ 227 raise ValueError("Can not symmetrize odd T")
228
229 if self.content[0] is not None:
230 if np.argmax(np.abs([o[0].value if o is not None else 0 for o in self.content])) != 0:
@@ -480,7 +480,7 @@
237 else:
238 newcontent.append(0.5 * (self.content[t] + self.content[self.T - t]))
239 if (all([x is None for x in newcontent])):
- 240 raise Exception("Corr could not be symmetrized: No redundant values")
+ 240 raise ValueError("Corr could not be symmetrized: No redundant values")
241 return Corr(newcontent, prange=self.prange)
242
243 def anti_symmetric(self):
@@ -488,7 +488,7 @@
245 if self.N != 1:
246 raise TypeError('anti_symmetric cannot be safely applied to multi-dimensional correlators.')
247 if self.T % 2 != 0:
- 248 raise Exception("Can not symmetrize odd T")
+ 248 raise ValueError("Can not symmetrize odd T")
249
250 test = 1 * self
251 test.gamma_method()
@@ -502,7 +502,7 @@
259 else:
260 newcontent.append(0.5 * (self.content[t] - self.content[self.T - t]))
261 if (all([x is None for x in newcontent])):
- 262 raise Exception("Corr could not be symmetrized: No redundant values")
+ 262 raise ValueError("Corr could not be symmetrized: No redundant values")
263 return Corr(newcontent, prange=self.prange)
264
265 def is_matrix_symmetric(self):
@@ -535,7 +535,7 @@
292 def matrix_symmetric(self):
293 """Symmetrizes the correlator matrices on every timeslice."""
294 if self.N == 1:
- 295 raise Exception("Trying to symmetrize a correlator matrix, that already has N=1.")
+ 295 raise ValueError("Trying to symmetrize a correlator matrix, that already has N=1.")
296 if self.is_matrix_symmetric():
297 return 1.0 * self
298 else:
@@ -579,10 +579,10 @@
336 '''
337
338 if self.N == 1:
- 339 raise Exception("GEVP methods only works on correlator matrices and not single correlators.")
+ 339 raise ValueError("GEVP methods only works on correlator matrices and not single correlators.")
340 if ts is not None:
341 if (ts <= t0):
- 342 raise Exception("ts has to be larger than t0.")
+ 342 raise ValueError("ts has to be larger than t0.")
343
344 if "sorted_list" in kwargs:
345 warnings.warn("Argument 'sorted_list' is deprecated, use 'sort' instead.", DeprecationWarning)
@@ -614,9 +614,9 @@
371
372 if sort is None:
373 if (ts is None):
- 374 raise Exception("ts is required if sort=None.")
+ 374 raise ValueError("ts is required if sort=None.")
375 if (self.content[t0] is None) or (self.content[ts] is None):
- 376 raise Exception("Corr not defined at t0/ts.")
+ 376 raise ValueError("Corr not defined at t0/ts.")
377 Gt = _get_mat_at_t(ts)
378 reordered_vecs = _GEVP_solver(Gt, G0, method=method, chol_inv=chol_inv)
379 if kwargs.get('auto_gamma', False) and vector_obs:
@@ -634,14 +634,14 @@
391 all_vecs.append(None)
392 if sort == "Eigenvector":
393 if ts is None:
- 394 raise Exception("ts is required for the Eigenvector sorting method.")
+ 394 raise ValueError("ts is required for the Eigenvector sorting method.")
395 all_vecs = _sort_vectors(all_vecs, ts)
396
397 reordered_vecs = [[v[s] if v is not None else None for v in all_vecs] for s in range(self.N)]
398 if kwargs.get('auto_gamma', False) and vector_obs:
399 [[[o.gm() for o in evn] for evn in ev if evn is not None] for ev in reordered_vecs]
400 else:
- 401 raise Exception("Unknown value for 'sort'. Choose 'Eigenvalue', 'Eigenvector' or None.")
+ 401 raise ValueError("Unknown value for 'sort'. Choose 'Eigenvalue', 'Eigenvector' or None.")
402
403 if "state" in kwargs:
404 return reordered_vecs[kwargs.get("state")]
@@ -678,7 +678,7 @@
435 """
436
437 if self.N != 1:
- 438 raise Exception("Multi-operator Prony not implemented!")
+ 438 raise NotImplementedError("Multi-operator Prony not implemented!")
439
440 array = np.empty([N, N], dtype="object")
441 new_content = []
@@ -745,7 +745,7 @@
502 correlator or a Corr of same length.
503 """
504 if self.N != 1:
- 505 raise Exception("Only one-dimensional correlators can be safely correlated.")
+ 505 raise ValueError("Only one-dimensional correlators can be safely correlated.")
506 new_content = []
507 for x0, t_slice in enumerate(self.content):
508 if _check_for_none(self, t_slice):
@@ -759,7 +759,7 @@
516 elif isinstance(partner, Obs): # Should this include CObs?
517 new_content.append(np.array([correlate(o, partner) for o in t_slice]))
518 else:
- 519 raise Exception("Can only correlate with an Obs or a Corr.")
+ 519 raise TypeError("Can only correlate with an Obs or a Corr.")
520
521 return Corr(new_content)
522
@@ -826,7 +826,7 @@
583 Available choice: symmetric, forward, backward, improved, log, default: symmetric
584 """
585 if self.N != 1:
- 586 raise Exception("deriv only implemented for one-dimensional correlators.")
+ 586 raise ValueError("deriv only implemented for one-dimensional correlators.")
587 if variant == "symmetric":
588 newcontent = []
589 for t in range(1, self.T - 1):
@@ -835,7 +835,7 @@
592 else:
593 newcontent.append(0.5 * (self.content[t + 1] - self.content[t - 1]))
594 if (all([x is None for x in newcontent])):
- 595 raise Exception('Derivative is undefined at all timeslices')
+ 595 raise ValueError('Derivative is undefined at all timeslices')
596 return Corr(newcontent, padding=[1, 1])
597 elif variant == "forward":
598 newcontent = []
@@ -845,7 +845,7 @@
602 else:
603 newcontent.append(self.content[t + 1] - self.content[t])
604 if (all([x is None for x in newcontent])):
- 605 raise Exception("Derivative is undefined at all timeslices")
+ 605 raise ValueError("Derivative is undefined at all timeslices")
606 return Corr(newcontent, padding=[0, 1])
607 elif variant == "backward":
608 newcontent = []
@@ -855,7 +855,7 @@
612 else:
613 newcontent.append(self.content[t] - self.content[t - 1])
614 if (all([x is None for x in newcontent])):
- 615 raise Exception("Derivative is undefined at all timeslices")
+ 615 raise ValueError("Derivative is undefined at all timeslices")
616 return Corr(newcontent, padding=[1, 0])
617 elif variant == "improved":
618 newcontent = []
@@ -865,7 +865,7 @@
622 else:
623 newcontent.append((1 / 12) * (self.content[t - 2] - 8 * self.content[t - 1] + 8 * self.content[t + 1] - self.content[t + 2]))
624 if (all([x is None for x in newcontent])):
- 625 raise Exception('Derivative is undefined at all timeslices')
+ 625 raise ValueError('Derivative is undefined at all timeslices')
626 return Corr(newcontent, padding=[2, 2])
627 elif variant == 'log':
628 newcontent = []
@@ -875,11 +875,11 @@
632 else:
633 newcontent.append(np.log(self.content[t]))
634 if (all([x is None for x in newcontent])):
- 635 raise Exception("Log is undefined at all timeslices")
+ 635 raise ValueError("Log is undefined at all timeslices")
636 logcorr = Corr(newcontent)
637 return self * logcorr.deriv('symmetric')
638 else:
- 639 raise Exception("Unknown variant.")
+ 639 raise ValueError("Unknown variant.")
640
641 def second_deriv(self, variant="symmetric"):
642 r"""Return the second derivative of the correlator with respect to x0.
@@ -899,7 +899,7 @@
656 $$f(x) = \tilde{\partial}^2_0 log(f(x_0))+(\tilde{\partial}_0 log(f(x_0)))^2$$
657 """
658 if self.N != 1:
- 659 raise Exception("second_deriv only implemented for one-dimensional correlators.")
+ 659 raise ValueError("second_deriv only implemented for one-dimensional correlators.")
660 if variant == "symmetric":
661 newcontent = []
662 for t in range(1, self.T - 1):
@@ -908,7 +908,7 @@
665 else:
666 newcontent.append((self.content[t + 1] - 2 * self.content[t] + self.content[t - 1]))
667 if (all([x is None for x in newcontent])):
- 668 raise Exception("Derivative is undefined at all timeslices")
+ 668 raise ValueError("Derivative is undefined at all timeslices")
669 return Corr(newcontent, padding=[1, 1])
670 elif variant == "big_symmetric":
671 newcontent = []
@@ -918,7 +918,7 @@
675 else:
676 newcontent.append((self.content[t + 2] - 2 * self.content[t] + self.content[t - 2]) / 4)
677 if (all([x is None for x in newcontent])):
- 678 raise Exception("Derivative is undefined at all timeslices")
+ 678 raise ValueError("Derivative is undefined at all timeslices")
679 return Corr(newcontent, padding=[2, 2])
680 elif variant == "improved":
681 newcontent = []
@@ -928,7 +928,7 @@
685 else:
686 newcontent.append((1 / 12) * (-self.content[t + 2] + 16 * self.content[t + 1] - 30 * self.content[t] + 16 * self.content[t - 1] - self.content[t - 2]))
687 if (all([x is None for x in newcontent])):
- 688 raise Exception("Derivative is undefined at all timeslices")
+ 688 raise ValueError("Derivative is undefined at all timeslices")
689 return Corr(newcontent, padding=[2, 2])
690 elif variant == 'log':
691 newcontent = []
@@ -938,11 +938,11 @@
695 else:
696 newcontent.append(np.log(self.content[t]))
697 if (all([x is None for x in newcontent])):
- 698 raise Exception("Log is undefined at all timeslices")
+ 698 raise ValueError("Log is undefined at all timeslices")
699 logcorr = Corr(newcontent)
700 return self * (logcorr.second_deriv('symmetric') + (logcorr.deriv('symmetric'))**2)
701 else:
- 702 raise Exception("Unknown variant.")
+ 702 raise ValueError("Unknown variant.")
703
704 def m_eff(self, variant='log', guess=1.0):
705 """Returns the effective mass of the correlator as correlator object
@@ -971,7 +971,7 @@
728 else:
729 newcontent.append(self.content[t] / self.content[t + 1])
730 if (all([x is None for x in newcontent])):
- 731 raise Exception('m_eff is undefined at all timeslices')
+ 731 raise ValueError('m_eff is undefined at all timeslices')
732
733 return np.log(Corr(newcontent, padding=[0, 1]))
734
@@ -985,7 +985,7 @@
742 else:
743 newcontent.append(self.content[t - 1] / self.content[t + 1])
744 if (all([x is None for x in newcontent])):
- 745 raise Exception('m_eff is undefined at all timeslices')
+ 745 raise ValueError('m_eff is undefined at all timeslices')
746
747 return np.log(Corr(newcontent, padding=[1, 1])) / 2
748
@@ -1010,7 +1010,7 @@
767 else:
768 newcontent.append(np.abs(find_root(self.content[t][0] / self.content[t + 1][0], root_function, guess=guess)))
769 if (all([x is None for x in newcontent])):
- 770 raise Exception('m_eff is undefined at all timeslices')
+ 770 raise ValueError('m_eff is undefined at all timeslices')
771
772 return Corr(newcontent, padding=[0, 1])
773
@@ -1022,11 +1022,11 @@
779 else:
780 newcontent.append((self.content[t + 1] + self.content[t - 1]) / (2 * self.content[t]))
781 if (all([x is None for x in newcontent])):
- 782 raise Exception("m_eff is undefined at all timeslices")
+ 782 raise ValueError("m_eff is undefined at all timeslices")
783 return np.arccosh(Corr(newcontent, padding=[1, 1]))
784
785 else:
- 786 raise Exception('Unknown variant.')
+ 786 raise ValueError('Unknown variant.')
787
788 def fit(self, function, fitrange=None, silent=False, **kwargs):
789 r'''Fits function to the data
@@ -1044,7 +1044,7 @@
801 Decides whether output is printed to the standard output.
802 '''
803 if self.N != 1:
- 804 raise Exception("Correlator must be projected before fitting")
+ 804 raise ValueError("Correlator must be projected before fitting")
805
806 if fitrange is None:
807 if self.prange:
@@ -1053,12 +1053,12 @@
810 fitrange = [0, self.T - 1]
811 else:
812 if not isinstance(fitrange, list):
- 813 raise Exception("fitrange has to be a list with two elements")
+ 813 raise TypeError("fitrange has to be a list with two elements")
814 if len(fitrange) != 2:
- 815 raise Exception("fitrange has to have exactly two elements [fit_start, fit_stop]")
+ 815 raise ValueError("fitrange has to have exactly two elements [fit_start, fit_stop]")
816
- 817 xs = np.array([x for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None])
- 818 ys = np.array([self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None])
+ 817 xs = np.array([x for x in range(fitrange[0], fitrange[1] + 1) if self.content[x] is not None])
+ 818 ys = np.array([self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if self.content[x] is not None])
819 result = least_squares(xs, ys, function, silent=silent, **kwargs)
820 return result
821
@@ -1083,9 +1083,9 @@
840 else:
841 raise Exception("no plateau range provided")
842 if self.N != 1:
- 843 raise Exception("Correlator must be projected before getting a plateau.")
+ 843 raise ValueError("Correlator must be projected before getting a plateau.")
844 if (all([self.content[t] is None for t in range(plateau_range[0], plateau_range[1] + 1)])):
- 845 raise Exception("plateau is undefined at all timeslices in plateaurange.")
+ 845 raise ValueError("plateau is undefined at all timeslices in plateaurange.")
846 if auto_gamma:
847 self.gamma_method()
848 if method == "fit":
@@ -1097,16 +1097,16 @@
854 return returnvalue
855
856 else:
- 857 raise Exception("Unsupported plateau method: " + method)
+ 857 raise ValueError("Unsupported plateau method: " + method)
858
859 def set_prange(self, prange):
860 """Sets the attribute prange of the Corr object."""
861 if not len(prange) == 2:
- 862 raise Exception("prange must be a list or array with two values")
+ 862 raise ValueError("prange must be a list or array with two values")
863 if not ((isinstance(prange[0], int)) and (isinstance(prange[1], int))):
- 864 raise Exception("Start and end point must be integers")
+ 864 raise TypeError("Start and end point must be integers")
865 if not (0 <= prange[0] <= self.T and 0 <= prange[1] <= self.T and prange[0] <= prange[1]):
- 866 raise Exception("Start and end point must define a range in the interval 0,T")
+ 866 raise ValueError("Start and end point must define a range in the interval 0,T")
867
868 self.prange = prange
869 return
@@ -1143,7 +1143,7 @@
900 Optional title of the figure.
901 """
902 if self.N != 1:
- 903 raise Exception("Correlator must be projected before plotting")
+ 903 raise ValueError("Correlator must be projected before plotting")
904
905 if auto_gamma:
906 self.gamma_method()
@@ -1184,7 +1184,7 @@
941 hide_from = None
942 ax1.errorbar(x[:hide_from], y[:hide_from], y_err[:hide_from], label=corr.tag, mfc=plt.rcParams['axes.facecolor'])
943 else:
- 944 raise Exception("'comp' must be a correlator or a list of correlators.")
+ 944 raise TypeError("'comp' must be a correlator or a list of correlators.")
945
946 if plateau:
947 if isinstance(plateau, Obs):
@@ -1193,14 +1193,14 @@
950 ax1.axhline(y=plateau.value, linewidth=2, color=plt.rcParams['text.color'], alpha=0.6, marker=',', ls='--', label=str(plateau))
951 ax1.axhspan(plateau.value - plateau.dvalue, plateau.value + plateau.dvalue, alpha=0.25, color=plt.rcParams['text.color'], ls='-')
952 else:
- 953 raise Exception("'plateau' must be an Obs")
+ 953 raise TypeError("'plateau' must be an Obs")
954
955 if references:
956 if isinstance(references, list):
957 for ref in references:
958 ax1.axhline(y=ref, linewidth=1, color=plt.rcParams['text.color'], alpha=0.6, marker=',', ls='--')
959 else:
- 960 raise Exception("'references' must be a list of floating pint values.")
+ 960 raise TypeError("'references' must be a list of floating pint values.")
961
962 if self.prange:
963 ax1.axvline(self.prange[0], 0, 1, ls='-', marker=',', color="black", zorder=0)
@@ -1234,7 +1234,7 @@
991 if isinstance(save, str):
992 fig.savefig(save, bbox_inches='tight')
993 else:
- 994 raise Exception("'save' has to be a string.")
+ 994 raise TypeError("'save' has to be a string.")
995
996 def spaghetti_plot(self, logscale=True):
997 """Produces a spaghetti plot of the correlator suited to monitor exceptional configurations.
@@ -1245,7 +1245,7 @@
1002 Determines whether the scale of the y-axis is logarithmic or standard.
1003 """
1004 if self.N != 1:
-1005 raise Exception("Correlator needs to be projected first.")
+1005 raise ValueError("Correlator needs to be projected first.")
1006
1007 mc_names = list(set([item for sublist in [sum(map(o[0].e_content.get, o[0].mc_names), []) for o in self.content if o is not None] for item in sublist]))
1008 x0_vals = [n for (n, o) in zip(np.arange(self.T), self.content) if o is not None]
@@ -1287,7 +1287,7 @@
1044 elif datatype == "pickle":
1045 dump_object(self, filename, **kwargs)
1046 else:
-1047 raise Exception("Unknown datatype " + str(datatype))
+1047 raise ValueError("Unknown datatype " + str(datatype))
1048
1049 def print(self, print_range=None):
1050 print(self.__repr__(print_range))
@@ -1337,7 +1337,7 @@
1094 def __add__(self, y):
1095 if isinstance(y, Corr):
1096 if ((self.N != y.N) or (self.T != y.T)):
-1097 raise Exception("Addition of Corrs with different shape")
+1097 raise ValueError("Addition of Corrs with different shape")
1098 newcontent = []
1099 for t in range(self.T):
1100 if _check_for_none(self, self.content[t]) or _check_for_none(y, y.content[t]):
@@ -1365,7 +1365,7 @@
1122 def __mul__(self, y):
1123 if isinstance(y, Corr):
1124 if not ((self.N == 1 or y.N == 1 or self.N == y.N) and self.T == y.T):
-1125 raise Exception("Multiplication of Corr object requires N=N or N=1 and T=T")
+1125 raise ValueError("Multiplication of Corr object requires N=N or N=1 and T=T")
1126 newcontent = []
1127 for t in range(self.T):
1128 if _check_for_none(self, self.content[t]) or _check_for_none(y, y.content[t]):
@@ -1436,7 +1436,7 @@
1193 def __truediv__(self, y):
1194 if isinstance(y, Corr):
1195 if not ((self.N == 1 or y.N == 1 or self.N == y.N) and self.T == y.T):
-1196 raise Exception("Multiplication of Corr object requires N=N or N=1 and T=T")
+1196 raise ValueError("Multiplication of Corr object requires N=N or N=1 and T=T")
1197 newcontent = []
1198 for t in range(self.T):
1199 if _check_for_none(self, self.content[t]) or _check_for_none(y, y.content[t]):
@@ -1450,16 +1450,16 @@
1207 newcontent[t] = None
1208
1209 if all([item is None for item in newcontent]):
-1210 raise Exception("Division returns completely undefined correlator")
+1210 raise ValueError("Division returns completely undefined correlator")
1211 return Corr(newcontent)
1212
1213 elif isinstance(y, (Obs, CObs)):
1214 if isinstance(y, Obs):
1215 if y.value == 0:
-1216 raise Exception('Division by zero will return undefined correlator')
+1216 raise ValueError('Division by zero will return undefined correlator')
1217 if isinstance(y, CObs):
1218 if y.is_zero():
-1219 raise Exception('Division by zero will return undefined correlator')
+1219 raise ValueError('Division by zero will return undefined correlator')
1220
1221 newcontent = []
1222 for t in range(self.T):
@@ -1471,7 +1471,7 @@
1228
1229 elif isinstance(y, (int, float)):
1230 if y == 0:
-1231 raise Exception('Division by zero will return undefined correlator')
+1231 raise ValueError('Division by zero will return undefined correlator')
1232 newcontent = []
1233 for t in range(self.T):
1234 if _check_for_none(self, self.content[t]):
@@ -1527,7 +1527,7 @@
1284 if np.isnan(tmp_sum.value):
1285 newcontent[t] = None
1286 if all([item is None for item in newcontent]):
-1287 raise Exception('Operation returns undefined correlator')
+1287 raise ValueError('Operation returns undefined correlator')
1288 return Corr(newcontent)
1289
1290 def sin(self):
@@ -1635,13 +1635,13 @@
1392 '''
1393
1394 if self.N == 1:
-1395 raise Exception('Method cannot be applied to one-dimensional correlators.')
+1395 raise ValueError('Method cannot be applied to one-dimensional correlators.')
1396 if basematrix is None:
1397 basematrix = self
1398 if Ntrunc >= basematrix.N:
-1399 raise Exception('Cannot truncate using Ntrunc <= %d' % (basematrix.N))
+1399 raise ValueError('Cannot truncate using Ntrunc <= %d' % (basematrix.N))
1400 if basematrix.N != self.N:
-1401 raise Exception('basematrix and targetmatrix have to be of the same size.')
+1401 raise ValueError('basematrix and targetmatrix have to be of the same size.')
1402
1403 evecs = basematrix.GEVP(t0proj, tproj, sort=None)[:Ntrunc]
1404
@@ -1859,7 +1859,7 @@
102 self.N = 1
103 elif all([isinstance(item, np.ndarray) or item is None for item in data_input]) and any([isinstance(item, np.ndarray) for item in data_input]):
104 self.content = data_input
- 105 noNull = [a for a in self.content if not (a is None)] # To check if the matrices are correct for all undefined elements
+ 105 noNull = [a for a in self.content if a is not None] # To check if the matrices are correct for all undefined elements
106 self.N = noNull[0].shape[0]
107 if self.N > 1 and noNull[0].shape[0] != noNull[0].shape[1]:
108 raise ValueError("Smearing matrices are not NxN.")
@@ -1899,7 +1899,7 @@
142 def gamma_method(self, **kwargs):
143 """Apply the gamma method to the content of the Corr."""
144 for item in self.content:
- 145 if not (item is None):
+ 145 if item is not None:
146 if self.N == 1:
147 item[0].gamma_method(**kwargs)
148 else:
@@ -1917,7 +1917,7 @@
160 By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to
161 """
162 if self.N == 1:
- 163 raise Exception("Trying to project a Corr, that already has N=1.")
+ 163 raise ValueError("Trying to project a Corr, that already has N=1.")
164
165 if vector_l is None:
166 vector_l, vector_r = np.asarray([1.] + (self.N - 1) * [0.]), np.asarray([1.] + (self.N - 1) * [0.])
@@ -1925,16 +1925,16 @@
168 vector_r = vector_l
169 if isinstance(vector_l, list) and not isinstance(vector_r, list):
170 if len(vector_l) != self.T:
- 171 raise Exception("Length of vector list must be equal to T")
+ 171 raise ValueError("Length of vector list must be equal to T")
172 vector_r = [vector_r] * self.T
173 if isinstance(vector_r, list) and not isinstance(vector_l, list):
174 if len(vector_r) != self.T:
- 175 raise Exception("Length of vector list must be equal to T")
+ 175 raise ValueError("Length of vector list must be equal to T")
176 vector_l = [vector_l] * self.T
177
178 if not isinstance(vector_l, list):
179 if not vector_l.shape == vector_r.shape == (self.N,):
- 180 raise Exception("Vectors are of wrong shape!")
+ 180 raise ValueError("Vectors are of wrong shape!")
181 if normalize:
182 vector_l, vector_r = vector_l / np.sqrt((vector_l @ vector_l)), vector_r / np.sqrt(vector_r @ vector_r)
183 newcontent = [None if _check_for_none(self, item) else np.asarray([vector_l.T @ item @ vector_r]) for item in self.content]
@@ -1959,7 +1959,7 @@
202 Second index to be picked.
203 """
204 if self.N == 1:
- 205 raise Exception("Trying to pick item from projected Corr")
+ 205 raise ValueError("Trying to pick item from projected Corr")
206 newcontent = [None if (item is None) else item[i, j] for item in self.content]
207 return Corr(newcontent)
208
@@ -1970,8 +1970,8 @@
213 timeslice and the error on each timeslice.
214 """
215 if self.N != 1:
- 216 raise Exception("Can only make Corr[N=1] plottable")
- 217 x_list = [x for x in range(self.T) if not self.content[x] is None]
+ 216 raise ValueError("Can only make Corr[N=1] plottable")
+ 217 x_list = [x for x in range(self.T) if self.content[x] is not None]
218 y_list = [y[0].value for y in self.content if y is not None]
219 y_err_list = [y[0].dvalue for y in self.content if y is not None]
220
@@ -1980,9 +1980,9 @@
223 def symmetric(self):
224 """ Symmetrize the correlator around x0=0."""
225 if self.N != 1:
- 226 raise Exception('symmetric cannot be safely applied to multi-dimensional correlators.')
+ 226 raise ValueError('symmetric cannot be safely applied to multi-dimensional correlators.')
227 if self.T % 2 != 0:
- 228 raise Exception("Can not symmetrize odd T")
+ 228 raise ValueError("Can not symmetrize odd T")
229
230 if self.content[0] is not None:
231 if np.argmax(np.abs([o[0].value if o is not None else 0 for o in self.content])) != 0:
@@ -1995,7 +1995,7 @@
238 else:
239 newcontent.append(0.5 * (self.content[t] + self.content[self.T - t]))
240 if (all([x is None for x in newcontent])):
- 241 raise Exception("Corr could not be symmetrized: No redundant values")
+ 241 raise ValueError("Corr could not be symmetrized: No redundant values")
242 return Corr(newcontent, prange=self.prange)
243
244 def anti_symmetric(self):
@@ -2003,7 +2003,7 @@
246 if self.N != 1:
247 raise TypeError('anti_symmetric cannot be safely applied to multi-dimensional correlators.')
248 if self.T % 2 != 0:
- 249 raise Exception("Can not symmetrize odd T")
+ 249 raise ValueError("Can not symmetrize odd T")
250
251 test = 1 * self
252 test.gamma_method()
@@ -2017,7 +2017,7 @@
260 else:
261 newcontent.append(0.5 * (self.content[t] - self.content[self.T - t]))
262 if (all([x is None for x in newcontent])):
- 263 raise Exception("Corr could not be symmetrized: No redundant values")
+ 263 raise ValueError("Corr could not be symmetrized: No redundant values")
264 return Corr(newcontent, prange=self.prange)
265
266 def is_matrix_symmetric(self):
@@ -2050,7 +2050,7 @@
293 def matrix_symmetric(self):
294 """Symmetrizes the correlator matrices on every timeslice."""
295 if self.N == 1:
- 296 raise Exception("Trying to symmetrize a correlator matrix, that already has N=1.")
+ 296 raise ValueError("Trying to symmetrize a correlator matrix, that already has N=1.")
297 if self.is_matrix_symmetric():
298 return 1.0 * self
299 else:
@@ -2094,10 +2094,10 @@
337 '''
338
339 if self.N == 1:
- 340 raise Exception("GEVP methods only works on correlator matrices and not single correlators.")
+ 340 raise ValueError("GEVP methods only works on correlator matrices and not single correlators.")
341 if ts is not None:
342 if (ts <= t0):
- 343 raise Exception("ts has to be larger than t0.")
+ 343 raise ValueError("ts has to be larger than t0.")
344
345 if "sorted_list" in kwargs:
346 warnings.warn("Argument 'sorted_list' is deprecated, use 'sort' instead.", DeprecationWarning)
@@ -2129,9 +2129,9 @@
372
373 if sort is None:
374 if (ts is None):
- 375 raise Exception("ts is required if sort=None.")
+ 375 raise ValueError("ts is required if sort=None.")
376 if (self.content[t0] is None) or (self.content[ts] is None):
- 377 raise Exception("Corr not defined at t0/ts.")
+ 377 raise ValueError("Corr not defined at t0/ts.")
378 Gt = _get_mat_at_t(ts)
379 reordered_vecs = _GEVP_solver(Gt, G0, method=method, chol_inv=chol_inv)
380 if kwargs.get('auto_gamma', False) and vector_obs:
@@ -2149,14 +2149,14 @@
392 all_vecs.append(None)
393 if sort == "Eigenvector":
394 if ts is None:
- 395 raise Exception("ts is required for the Eigenvector sorting method.")
+ 395 raise ValueError("ts is required for the Eigenvector sorting method.")
396 all_vecs = _sort_vectors(all_vecs, ts)
397
398 reordered_vecs = [[v[s] if v is not None else None for v in all_vecs] for s in range(self.N)]
399 if kwargs.get('auto_gamma', False) and vector_obs:
400 [[[o.gm() for o in evn] for evn in ev if evn is not None] for ev in reordered_vecs]
401 else:
- 402 raise Exception("Unknown value for 'sort'. Choose 'Eigenvalue', 'Eigenvector' or None.")
+ 402 raise ValueError("Unknown value for 'sort'. Choose 'Eigenvalue', 'Eigenvector' or None.")
403
404 if "state" in kwargs:
405 return reordered_vecs[kwargs.get("state")]
@@ -2193,7 +2193,7 @@
436 """
437
438 if self.N != 1:
- 439 raise Exception("Multi-operator Prony not implemented!")
+ 439 raise NotImplementedError("Multi-operator Prony not implemented!")
440
441 array = np.empty([N, N], dtype="object")
442 new_content = []
@@ -2260,7 +2260,7 @@
503 correlator or a Corr of same length.
504 """
505 if self.N != 1:
- 506 raise Exception("Only one-dimensional correlators can be safely correlated.")
+ 506 raise ValueError("Only one-dimensional correlators can be safely correlated.")
507 new_content = []
508 for x0, t_slice in enumerate(self.content):
509 if _check_for_none(self, t_slice):
@@ -2274,7 +2274,7 @@
517 elif isinstance(partner, Obs): # Should this include CObs?
518 new_content.append(np.array([correlate(o, partner) for o in t_slice]))
519 else:
- 520 raise Exception("Can only correlate with an Obs or a Corr.")
+ 520 raise TypeError("Can only correlate with an Obs or a Corr.")
521
522 return Corr(new_content)
523
@@ -2341,7 +2341,7 @@
584 Available choice: symmetric, forward, backward, improved, log, default: symmetric
585 """
586 if self.N != 1:
- 587 raise Exception("deriv only implemented for one-dimensional correlators.")
+ 587 raise ValueError("deriv only implemented for one-dimensional correlators.")
588 if variant == "symmetric":
589 newcontent = []
590 for t in range(1, self.T - 1):
@@ -2350,7 +2350,7 @@
593 else:
594 newcontent.append(0.5 * (self.content[t + 1] - self.content[t - 1]))
595 if (all([x is None for x in newcontent])):
- 596 raise Exception('Derivative is undefined at all timeslices')
+ 596 raise ValueError('Derivative is undefined at all timeslices')
597 return Corr(newcontent, padding=[1, 1])
598 elif variant == "forward":
599 newcontent = []
@@ -2360,7 +2360,7 @@
603 else:
604 newcontent.append(self.content[t + 1] - self.content[t])
605 if (all([x is None for x in newcontent])):
- 606 raise Exception("Derivative is undefined at all timeslices")
+ 606 raise ValueError("Derivative is undefined at all timeslices")
607 return Corr(newcontent, padding=[0, 1])
608 elif variant == "backward":
609 newcontent = []
@@ -2370,7 +2370,7 @@
613 else:
614 newcontent.append(self.content[t] - self.content[t - 1])
615 if (all([x is None for x in newcontent])):
- 616 raise Exception("Derivative is undefined at all timeslices")
+ 616 raise ValueError("Derivative is undefined at all timeslices")
617 return Corr(newcontent, padding=[1, 0])
618 elif variant == "improved":
619 newcontent = []
@@ -2380,7 +2380,7 @@
623 else:
624 newcontent.append((1 / 12) * (self.content[t - 2] - 8 * self.content[t - 1] + 8 * self.content[t + 1] - self.content[t + 2]))
625 if (all([x is None for x in newcontent])):
- 626 raise Exception('Derivative is undefined at all timeslices')
+ 626 raise ValueError('Derivative is undefined at all timeslices')
627 return Corr(newcontent, padding=[2, 2])
628 elif variant == 'log':
629 newcontent = []
@@ -2390,11 +2390,11 @@
633 else:
634 newcontent.append(np.log(self.content[t]))
635 if (all([x is None for x in newcontent])):
- 636 raise Exception("Log is undefined at all timeslices")
+ 636 raise ValueError("Log is undefined at all timeslices")
637 logcorr = Corr(newcontent)
638 return self * logcorr.deriv('symmetric')
639 else:
- 640 raise Exception("Unknown variant.")
+ 640 raise ValueError("Unknown variant.")
641
642 def second_deriv(self, variant="symmetric"):
643 r"""Return the second derivative of the correlator with respect to x0.
@@ -2414,7 +2414,7 @@
657 $$f(x) = \tilde{\partial}^2_0 log(f(x_0))+(\tilde{\partial}_0 log(f(x_0)))^2$$
658 """
659 if self.N != 1:
- 660 raise Exception("second_deriv only implemented for one-dimensional correlators.")
+ 660 raise ValueError("second_deriv only implemented for one-dimensional correlators.")
661 if variant == "symmetric":
662 newcontent = []
663 for t in range(1, self.T - 1):
@@ -2423,7 +2423,7 @@
666 else:
667 newcontent.append((self.content[t + 1] - 2 * self.content[t] + self.content[t - 1]))
668 if (all([x is None for x in newcontent])):
- 669 raise Exception("Derivative is undefined at all timeslices")
+ 669 raise ValueError("Derivative is undefined at all timeslices")
670 return Corr(newcontent, padding=[1, 1])
671 elif variant == "big_symmetric":
672 newcontent = []
@@ -2433,7 +2433,7 @@
676 else:
677 newcontent.append((self.content[t + 2] - 2 * self.content[t] + self.content[t - 2]) / 4)
678 if (all([x is None for x in newcontent])):
- 679 raise Exception("Derivative is undefined at all timeslices")
+ 679 raise ValueError("Derivative is undefined at all timeslices")
680 return Corr(newcontent, padding=[2, 2])
681 elif variant == "improved":
682 newcontent = []
@@ -2443,7 +2443,7 @@
686 else:
687 newcontent.append((1 / 12) * (-self.content[t + 2] + 16 * self.content[t + 1] - 30 * self.content[t] + 16 * self.content[t - 1] - self.content[t - 2]))
688 if (all([x is None for x in newcontent])):
- 689 raise Exception("Derivative is undefined at all timeslices")
+ 689 raise ValueError("Derivative is undefined at all timeslices")
690 return Corr(newcontent, padding=[2, 2])
691 elif variant == 'log':
692 newcontent = []
@@ -2453,11 +2453,11 @@
696 else:
697 newcontent.append(np.log(self.content[t]))
698 if (all([x is None for x in newcontent])):
- 699 raise Exception("Log is undefined at all timeslices")
+ 699 raise ValueError("Log is undefined at all timeslices")
700 logcorr = Corr(newcontent)
701 return self * (logcorr.second_deriv('symmetric') + (logcorr.deriv('symmetric'))**2)
702 else:
- 703 raise Exception("Unknown variant.")
+ 703 raise ValueError("Unknown variant.")
704
705 def m_eff(self, variant='log', guess=1.0):
706 """Returns the effective mass of the correlator as correlator object
@@ -2486,7 +2486,7 @@
729 else:
730 newcontent.append(self.content[t] / self.content[t + 1])
731 if (all([x is None for x in newcontent])):
- 732 raise Exception('m_eff is undefined at all timeslices')
+ 732 raise ValueError('m_eff is undefined at all timeslices')
733
734 return np.log(Corr(newcontent, padding=[0, 1]))
735
@@ -2500,7 +2500,7 @@
743 else:
744 newcontent.append(self.content[t - 1] / self.content[t + 1])
745 if (all([x is None for x in newcontent])):
- 746 raise Exception('m_eff is undefined at all timeslices')
+ 746 raise ValueError('m_eff is undefined at all timeslices')
747
748 return np.log(Corr(newcontent, padding=[1, 1])) / 2
749
@@ -2525,7 +2525,7 @@
768 else:
769 newcontent.append(np.abs(find_root(self.content[t][0] / self.content[t + 1][0], root_function, guess=guess)))
770 if (all([x is None for x in newcontent])):
- 771 raise Exception('m_eff is undefined at all timeslices')
+ 771 raise ValueError('m_eff is undefined at all timeslices')
772
773 return Corr(newcontent, padding=[0, 1])
774
@@ -2537,11 +2537,11 @@
780 else:
781 newcontent.append((self.content[t + 1] + self.content[t - 1]) / (2 * self.content[t]))
782 if (all([x is None for x in newcontent])):
- 783 raise Exception("m_eff is undefined at all timeslices")
+ 783 raise ValueError("m_eff is undefined at all timeslices")
784 return np.arccosh(Corr(newcontent, padding=[1, 1]))
785
786 else:
- 787 raise Exception('Unknown variant.')
+ 787 raise ValueError('Unknown variant.')
788
789 def fit(self, function, fitrange=None, silent=False, **kwargs):
790 r'''Fits function to the data
@@ -2559,7 +2559,7 @@
802 Decides whether output is printed to the standard output.
803 '''
804 if self.N != 1:
- 805 raise Exception("Correlator must be projected before fitting")
+ 805 raise ValueError("Correlator must be projected before fitting")
806
807 if fitrange is None:
808 if self.prange:
@@ -2568,12 +2568,12 @@
811 fitrange = [0, self.T - 1]
812 else:
813 if not isinstance(fitrange, list):
- 814 raise Exception("fitrange has to be a list with two elements")
+ 814 raise TypeError("fitrange has to be a list with two elements")
815 if len(fitrange) != 2:
- 816 raise Exception("fitrange has to have exactly two elements [fit_start, fit_stop]")
+ 816 raise ValueError("fitrange has to have exactly two elements [fit_start, fit_stop]")
817
- 818 xs = np.array([x for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None])
- 819 ys = np.array([self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None])
+ 818 xs = np.array([x for x in range(fitrange[0], fitrange[1] + 1) if self.content[x] is not None])
+ 819 ys = np.array([self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if self.content[x] is not None])
820 result = least_squares(xs, ys, function, silent=silent, **kwargs)
821 return result
822
@@ -2598,9 +2598,9 @@
841 else:
842 raise Exception("no plateau range provided")
843 if self.N != 1:
- 844 raise Exception("Correlator must be projected before getting a plateau.")
+ 844 raise ValueError("Correlator must be projected before getting a plateau.")
845 if (all([self.content[t] is None for t in range(plateau_range[0], plateau_range[1] + 1)])):
- 846 raise Exception("plateau is undefined at all timeslices in plateaurange.")
+ 846 raise ValueError("plateau is undefined at all timeslices in plateaurange.")
847 if auto_gamma:
848 self.gamma_method()
849 if method == "fit":
@@ -2612,16 +2612,16 @@
855 return returnvalue
856
857 else:
- 858 raise Exception("Unsupported plateau method: " + method)
+ 858 raise ValueError("Unsupported plateau method: " + method)
859
860 def set_prange(self, prange):
861 """Sets the attribute prange of the Corr object."""
862 if not len(prange) == 2:
- 863 raise Exception("prange must be a list or array with two values")
+ 863 raise ValueError("prange must be a list or array with two values")
864 if not ((isinstance(prange[0], int)) and (isinstance(prange[1], int))):
- 865 raise Exception("Start and end point must be integers")
+ 865 raise TypeError("Start and end point must be integers")
866 if not (0 <= prange[0] <= self.T and 0 <= prange[1] <= self.T and prange[0] <= prange[1]):
- 867 raise Exception("Start and end point must define a range in the interval 0,T")
+ 867 raise ValueError("Start and end point must define a range in the interval 0,T")
868
869 self.prange = prange
870 return
@@ -2658,7 +2658,7 @@
901 Optional title of the figure.
902 """
903 if self.N != 1:
- 904 raise Exception("Correlator must be projected before plotting")
+ 904 raise ValueError("Correlator must be projected before plotting")
905
906 if auto_gamma:
907 self.gamma_method()
@@ -2699,7 +2699,7 @@
942 hide_from = None
943 ax1.errorbar(x[:hide_from], y[:hide_from], y_err[:hide_from], label=corr.tag, mfc=plt.rcParams['axes.facecolor'])
944 else:
- 945 raise Exception("'comp' must be a correlator or a list of correlators.")
+ 945 raise TypeError("'comp' must be a correlator or a list of correlators.")
946
947 if plateau:
948 if isinstance(plateau, Obs):
@@ -2708,14 +2708,14 @@
951 ax1.axhline(y=plateau.value, linewidth=2, color=plt.rcParams['text.color'], alpha=0.6, marker=',', ls='--', label=str(plateau))
952 ax1.axhspan(plateau.value - plateau.dvalue, plateau.value + plateau.dvalue, alpha=0.25, color=plt.rcParams['text.color'], ls='-')
953 else:
- 954 raise Exception("'plateau' must be an Obs")
+ 954 raise TypeError("'plateau' must be an Obs")
955
956 if references:
957 if isinstance(references, list):
958 for ref in references:
959 ax1.axhline(y=ref, linewidth=1, color=plt.rcParams['text.color'], alpha=0.6, marker=',', ls='--')
960 else:
- 961 raise Exception("'references' must be a list of floating pint values.")
+ 961 raise TypeError("'references' must be a list of floating pint values.")
962
963 if self.prange:
964 ax1.axvline(self.prange[0], 0, 1, ls='-', marker=',', color="black", zorder=0)
@@ -2749,7 +2749,7 @@
992 if isinstance(save, str):
993 fig.savefig(save, bbox_inches='tight')
994 else:
- 995 raise Exception("'save' has to be a string.")
+ 995 raise TypeError("'save' has to be a string.")
996
997 def spaghetti_plot(self, logscale=True):
998 """Produces a spaghetti plot of the correlator suited to monitor exceptional configurations.
@@ -2760,7 +2760,7 @@
1003 Determines whether the scale of the y-axis is logarithmic or standard.
1004 """
1005 if self.N != 1:
-1006 raise Exception("Correlator needs to be projected first.")
+1006 raise ValueError("Correlator needs to be projected first.")
1007
1008 mc_names = list(set([item for sublist in [sum(map(o[0].e_content.get, o[0].mc_names), []) for o in self.content if o is not None] for item in sublist]))
1009 x0_vals = [n for (n, o) in zip(np.arange(self.T), self.content) if o is not None]
@@ -2802,7 +2802,7 @@
1045 elif datatype == "pickle":
1046 dump_object(self, filename, **kwargs)
1047 else:
-1048 raise Exception("Unknown datatype " + str(datatype))
+1048 raise ValueError("Unknown datatype " + str(datatype))
1049
1050 def print(self, print_range=None):
1051 print(self.__repr__(print_range))
@@ -2852,7 +2852,7 @@
1095 def __add__(self, y):
1096 if isinstance(y, Corr):
1097 if ((self.N != y.N) or (self.T != y.T)):
-1098 raise Exception("Addition of Corrs with different shape")
+1098 raise ValueError("Addition of Corrs with different shape")
1099 newcontent = []
1100 for t in range(self.T):
1101 if _check_for_none(self, self.content[t]) or _check_for_none(y, y.content[t]):
@@ -2880,7 +2880,7 @@
1123 def __mul__(self, y):
1124 if isinstance(y, Corr):
1125 if not ((self.N == 1 or y.N == 1 or self.N == y.N) and self.T == y.T):
-1126 raise Exception("Multiplication of Corr object requires N=N or N=1 and T=T")
+1126 raise ValueError("Multiplication of Corr object requires N=N or N=1 and T=T")
1127 newcontent = []
1128 for t in range(self.T):
1129 if _check_for_none(self, self.content[t]) or _check_for_none(y, y.content[t]):
@@ -2951,7 +2951,7 @@
1194 def __truediv__(self, y):
1195 if isinstance(y, Corr):
1196 if not ((self.N == 1 or y.N == 1 or self.N == y.N) and self.T == y.T):
-1197 raise Exception("Multiplication of Corr object requires N=N or N=1 and T=T")
+1197 raise ValueError("Multiplication of Corr object requires N=N or N=1 and T=T")
1198 newcontent = []
1199 for t in range(self.T):
1200 if _check_for_none(self, self.content[t]) or _check_for_none(y, y.content[t]):
@@ -2965,16 +2965,16 @@
1208 newcontent[t] = None
1209
1210 if all([item is None for item in newcontent]):
-1211 raise Exception("Division returns completely undefined correlator")
+1211 raise ValueError("Division returns completely undefined correlator")
1212 return Corr(newcontent)
1213
1214 elif isinstance(y, (Obs, CObs)):
1215 if isinstance(y, Obs):
1216 if y.value == 0:
-1217 raise Exception('Division by zero will return undefined correlator')
+1217 raise ValueError('Division by zero will return undefined correlator')
1218 if isinstance(y, CObs):
1219 if y.is_zero():
-1220 raise Exception('Division by zero will return undefined correlator')
+1220 raise ValueError('Division by zero will return undefined correlator')
1221
1222 newcontent = []
1223 for t in range(self.T):
@@ -2986,7 +2986,7 @@
1229
1230 elif isinstance(y, (int, float)):
1231 if y == 0:
-1232 raise Exception('Division by zero will return undefined correlator')
+1232 raise ValueError('Division by zero will return undefined correlator')
1233 newcontent = []
1234 for t in range(self.T):
1235 if _check_for_none(self, self.content[t]):
@@ -3042,7 +3042,7 @@
1285 if np.isnan(tmp_sum.value):
1286 newcontent[t] = None
1287 if all([item is None for item in newcontent]):
-1288 raise Exception('Operation returns undefined correlator')
+1288 raise ValueError('Operation returns undefined correlator')
1289 return Corr(newcontent)
1290
1291 def sin(self):
@@ -3150,13 +3150,13 @@
1393 '''
1394
1395 if self.N == 1:
-1396 raise Exception('Method cannot be applied to one-dimensional correlators.')
+1396 raise ValueError('Method cannot be applied to one-dimensional correlators.')
1397 if basematrix is None:
1398 basematrix = self
1399 if Ntrunc >= basematrix.N:
-1400 raise Exception('Cannot truncate using Ntrunc <= %d' % (basematrix.N))
+1400 raise ValueError('Cannot truncate using Ntrunc <= %d' % (basematrix.N))
1401 if basematrix.N != self.N:
-1402 raise Exception('basematrix and targetmatrix have to be of the same size.')
+1402 raise ValueError('basematrix and targetmatrix have to be of the same size.')
1403
1404 evecs = basematrix.GEVP(t0proj, tproj, sort=None)[:Ntrunc]
1405
@@ -3277,7 +3277,7 @@ the temporal extent of the correlator and N is the dimension of the matrix.
102 self.N = 1
103 elif all([isinstance(item, np.ndarray) or item is None for item in data_input]) and any([isinstance(item, np.ndarray) for item in data_input]):
104 self.content = data_input
-105 noNull = [a for a in self.content if not (a is None)] # To check if the matrices are correct for all undefined elements
+105 noNull = [a for a in self.content if a is not None] # To check if the matrices are correct for all undefined elements
106 self.N = noNull[0].shape[0]
107 if self.N > 1 and noNull[0].shape[0] != noNull[0].shape[1]:
108 raise ValueError("Smearing matrices are not NxN.")
@@ -3398,7 +3398,7 @@ region identified for this correlator.
142 def gamma_method(self, **kwargs):
143 """Apply the gamma method to the content of the Corr."""
144 for item in self.content:
-145 if not (item is None):
+145 if item is not None:
146 if self.N == 1:
147 item[0].gamma_method(**kwargs)
148 else:
@@ -3427,7 +3427,7 @@ region identified for this correlator.
142 def gamma_method(self, **kwargs):
143 """Apply the gamma method to the content of the Corr."""
144 for item in self.content:
-145 if not (item is None):
+145 if item is not None:
146 if self.N == 1:
147 item[0].gamma_method(**kwargs)
148 else:
@@ -3461,7 +3461,7 @@ region identified for this correlator.
160 By default it will return the lowest source, which usually means unsmeared-unsmeared (0,0), but it does not have to
161 """
162 if self.N == 1:
-163 raise Exception("Trying to project a Corr, that already has N=1.")
+163 raise ValueError("Trying to project a Corr, that already has N=1.")
164
165 if vector_l is None:
166 vector_l, vector_r = np.asarray([1.] + (self.N - 1) * [0.]), np.asarray([1.] + (self.N - 1) * [0.])
@@ -3469,16 +3469,16 @@ region identified for this correlator.
168 vector_r = vector_l
169 if isinstance(vector_l, list) and not isinstance(vector_r, list):
170 if len(vector_l) != self.T:
-171 raise Exception("Length of vector list must be equal to T")
+171 raise ValueError("Length of vector list must be equal to T")
172 vector_r = [vector_r] * self.T
173 if isinstance(vector_r, list) and not isinstance(vector_l, list):
174 if len(vector_r) != self.T:
-175 raise Exception("Length of vector list must be equal to T")
+175 raise ValueError("Length of vector list must be equal to T")
176 vector_l = [vector_l] * self.T
177
178 if not isinstance(vector_l, list):
179 if not vector_l.shape == vector_r.shape == (self.N,):
-180 raise Exception("Vectors are of wrong shape!")
+180 raise ValueError("Vectors are of wrong shape!")
181 if normalize:
182 vector_l, vector_r = vector_l / np.sqrt((vector_l @ vector_l)), vector_r / np.sqrt(vector_r @ vector_r)
183 newcontent = [None if _check_for_none(self, item) else np.asarray([vector_l.T @ item @ vector_r]) for item in self.content]
@@ -3525,7 +3525,7 @@ By default it will return the lowest source, which usually means unsmeared-unsme
202 Second index to be picked.
203 """
204 if self.N == 1:
-205 raise Exception("Trying to pick item from projected Corr")
+205 raise ValueError("Trying to pick item from projected Corr")
206 newcontent = [None if (item is None) else item[i, j] for item in self.content]
207 return Corr(newcontent)
@@ -3563,8 +3563,8 @@ Second index to be picked.
213 timeslice and the error on each timeslice.
214 """
215 if self.N != 1:
-216 raise Exception("Can only make Corr[N=1] plottable")
-217 x_list = [x for x in range(self.T) if not self.content[x] is None]
+216 raise ValueError("Can only make Corr[N=1] plottable")
+217 x_list = [x for x in range(self.T) if self.content[x] is not None]
218 y_list = [y[0].value for y in self.content if y is not None]
219 y_err_list = [y[0].dvalue for y in self.content if y is not None]
220
@@ -3594,9 +3594,9 @@ timeslice and the error on each timeslice.
223 def symmetric(self):
224 """ Symmetrize the correlator around x0=0."""
225 if self.N != 1:
-226 raise Exception('symmetric cannot be safely applied to multi-dimensional correlators.')
+226 raise ValueError('symmetric cannot be safely applied to multi-dimensional correlators.')
227 if self.T % 2 != 0:
-228 raise Exception("Can not symmetrize odd T")
+228 raise ValueError("Can not symmetrize odd T")
229
230 if self.content[0] is not None:
231 if np.argmax(np.abs([o[0].value if o is not None else 0 for o in self.content])) != 0:
@@ -3609,7 +3609,7 @@ timeslice and the error on each timeslice.
238 else:
239 newcontent.append(0.5 * (self.content[t] + self.content[self.T - t]))
240 if (all([x is None for x in newcontent])):
-241 raise Exception("Corr could not be symmetrized: No redundant values")
+241 raise ValueError("Corr could not be symmetrized: No redundant values")
242 return Corr(newcontent, prange=self.prange)
@@ -3635,7 +3635,7 @@ timeslice and the error on each timeslice.
246 if self.N != 1:
247 raise TypeError('anti_symmetric cannot be safely applied to multi-dimensional correlators.')
248 if self.T % 2 != 0:
-249 raise Exception("Can not symmetrize odd T")
+249 raise ValueError("Can not symmetrize odd T")
250
251 test = 1 * self
252 test.gamma_method()
@@ -3649,7 +3649,7 @@ timeslice and the error on each timeslice.
260 else:
261 newcontent.append(0.5 * (self.content[t] - self.content[self.T - t]))
262 if (all([x is None for x in newcontent])):
-263 raise Exception("Corr could not be symmetrized: No redundant values")
+263 raise ValueError("Corr could not be symmetrized: No redundant values")
264 return Corr(newcontent, prange=self.prange)
@@ -3736,7 +3736,7 @@ timeslice and the error on each timeslice.
293 def matrix_symmetric(self):
294 """Symmetrizes the correlator matrices on every timeslice."""
295 if self.N == 1:
-296 raise Exception("Trying to symmetrize a correlator matrix, that already has N=1.")
+296 raise ValueError("Trying to symmetrize a correlator matrix, that already has N=1.")
297 if self.is_matrix_symmetric():
298 return 1.0 * self
299 else:
@@ -3798,10 +3798,10 @@ timeslice and the error on each timeslice.
337 '''
338
339 if self.N == 1:
-340 raise Exception("GEVP methods only works on correlator matrices and not single correlators.")
+340 raise ValueError("GEVP methods only works on correlator matrices and not single correlators.")
341 if ts is not None:
342 if (ts <= t0):
-343 raise Exception("ts has to be larger than t0.")
+343 raise ValueError("ts has to be larger than t0.")
344
345 if "sorted_list" in kwargs:
346 warnings.warn("Argument 'sorted_list' is deprecated, use 'sort' instead.", DeprecationWarning)
@@ -3833,9 +3833,9 @@ timeslice and the error on each timeslice.
372
373 if sort is None:
374 if (ts is None):
-375 raise Exception("ts is required if sort=None.")
+375 raise ValueError("ts is required if sort=None.")
376 if (self.content[t0] is None) or (self.content[ts] is None):
-377 raise Exception("Corr not defined at t0/ts.")
+377 raise ValueError("Corr not defined at t0/ts.")
378 Gt = _get_mat_at_t(ts)
379 reordered_vecs = _GEVP_solver(Gt, G0, method=method, chol_inv=chol_inv)
380 if kwargs.get('auto_gamma', False) and vector_obs:
@@ -3853,14 +3853,14 @@ timeslice and the error on each timeslice.
392 all_vecs.append(None)
393 if sort == "Eigenvector":
394 if ts is None:
-395 raise Exception("ts is required for the Eigenvector sorting method.")
+395 raise ValueError("ts is required for the Eigenvector sorting method.")
396 all_vecs = _sort_vectors(all_vecs, ts)
397
398 reordered_vecs = [[v[s] if v is not None else None for v in all_vecs] for s in range(self.N)]
399 if kwargs.get('auto_gamma', False) and vector_obs:
400 [[[o.gm() for o in evn] for evn in ev if evn is not None] for ev in reordered_vecs]
401 else:
-402 raise Exception("Unknown value for 'sort'. Choose 'Eigenvalue', 'Eigenvector' or None.")
+402 raise ValueError("Unknown value for 'sort'. Choose 'Eigenvalue', 'Eigenvector' or None.")
403
404 if "state" in kwargs:
405 return reordered_vecs[kwargs.get("state")]
@@ -3983,7 +3983,7 @@ The state one is interested in ordered by energy. The lowest state is zero.
436 """
437
438 if self.N != 1:
-439 raise Exception("Multi-operator Prony not implemented!")
+439 raise NotImplementedError("Multi-operator Prony not implemented!")
440
441 array = np.empty([N, N], dtype="object")
442 new_content = []
@@ -4152,7 +4152,7 @@ Offset the equal spacing
503 correlator or a Corr of same length.
504 """
505 if self.N != 1:
-506 raise Exception("Only one-dimensional correlators can be safely correlated.")
+506 raise ValueError("Only one-dimensional correlators can be safely correlated.")
507 new_content = []
508 for x0, t_slice in enumerate(self.content):
509 if _check_for_none(self, t_slice):
@@ -4166,7 +4166,7 @@ Offset the equal spacing
517 elif isinstance(partner, Obs): # Should this include CObs?
518 new_content.append(np.array([correlate(o, partner) for o in t_slice]))
519 else:
-520 raise Exception("Can only correlate with an Obs or a Corr.")
+520 raise TypeError("Can only correlate with an Obs or a Corr.")
521
522 return Corr(new_content)
@@ -4317,7 +4317,7 @@ Parity quantum number of the correlator, can be +1 or -1
584 Available choice: symmetric, forward, backward, improved, log, default: symmetric
585 """
586 if self.N != 1:
-587 raise Exception("deriv only implemented for one-dimensional correlators.")
+587 raise ValueError("deriv only implemented for one-dimensional correlators.")
588 if variant == "symmetric":
589 newcontent = []
590 for t in range(1, self.T - 1):
@@ -4326,7 +4326,7 @@ Parity quantum number of the correlator, can be +1 or -1
593 else:
594 newcontent.append(0.5 * (self.content[t + 1] - self.content[t - 1]))
595 if (all([x is None for x in newcontent])):
-596 raise Exception('Derivative is undefined at all timeslices')
+596 raise ValueError('Derivative is undefined at all timeslices')
597 return Corr(newcontent, padding=[1, 1])
598 elif variant == "forward":
599 newcontent = []
@@ -4336,7 +4336,7 @@ Parity quantum number of the correlator, can be +1 or -1
603 else:
604 newcontent.append(self.content[t + 1] - self.content[t])
605 if (all([x is None for x in newcontent])):
-606 raise Exception("Derivative is undefined at all timeslices")
+606 raise ValueError("Derivative is undefined at all timeslices")
607 return Corr(newcontent, padding=[0, 1])
608 elif variant == "backward":
609 newcontent = []
@@ -4346,7 +4346,7 @@ Parity quantum number of the correlator, can be +1 or -1
613 else:
614 newcontent.append(self.content[t] - self.content[t - 1])
615 if (all([x is None for x in newcontent])):
-616 raise Exception("Derivative is undefined at all timeslices")
+616 raise ValueError("Derivative is undefined at all timeslices")
617 return Corr(newcontent, padding=[1, 0])
618 elif variant == "improved":
619 newcontent = []
@@ -4356,7 +4356,7 @@ Parity quantum number of the correlator, can be +1 or -1
623 else:
624 newcontent.append((1 / 12) * (self.content[t - 2] - 8 * self.content[t - 1] + 8 * self.content[t + 1] - self.content[t + 2]))
625 if (all([x is None for x in newcontent])):
-626 raise Exception('Derivative is undefined at all timeslices')
+626 raise ValueError('Derivative is undefined at all timeslices')
627 return Corr(newcontent, padding=[2, 2])
628 elif variant == 'log':
629 newcontent = []
@@ -4366,11 +4366,11 @@ Parity quantum number of the correlator, can be +1 or -1
633 else:
634 newcontent.append(np.log(self.content[t]))
635 if (all([x is None for x in newcontent])):
-636 raise Exception("Log is undefined at all timeslices")
+636 raise ValueError("Log is undefined at all timeslices")
637 logcorr = Corr(newcontent)
638 return self * logcorr.deriv('symmetric')
639 else:
-640 raise Exception("Unknown variant.")
+640 raise ValueError("Unknown variant.")
@@ -4416,7 +4416,7 @@ Available choice: symmetric, forward, backward, improved, log, default: symmetri
657 $$f(x) = \tilde{\partial}^2_0 log(f(x_0))+(\tilde{\partial}_0 log(f(x_0)))^2$$
658 """
659 if self.N != 1:
-660 raise Exception("second_deriv only implemented for one-dimensional correlators.")
+660 raise ValueError("second_deriv only implemented for one-dimensional correlators.")
661 if variant == "symmetric":
662 newcontent = []
663 for t in range(1, self.T - 1):
@@ -4425,7 +4425,7 @@ Available choice: symmetric, forward, backward, improved, log, default: symmetri
666 else:
667 newcontent.append((self.content[t + 1] - 2 * self.content[t] + self.content[t - 1]))
668 if (all([x is None for x in newcontent])):
-669 raise Exception("Derivative is undefined at all timeslices")
+669 raise ValueError("Derivative is undefined at all timeslices")
670 return Corr(newcontent, padding=[1, 1])
671 elif variant == "big_symmetric":
672 newcontent = []
@@ -4435,7 +4435,7 @@ Available choice: symmetric, forward, backward, improved, log, default: symmetri
676 else:
677 newcontent.append((self.content[t + 2] - 2 * self.content[t] + self.content[t - 2]) / 4)
678 if (all([x is None for x in newcontent])):
-679 raise Exception("Derivative is undefined at all timeslices")
+679 raise ValueError("Derivative is undefined at all timeslices")
680 return Corr(newcontent, padding=[2, 2])
681 elif variant == "improved":
682 newcontent = []
@@ -4445,7 +4445,7 @@ Available choice: symmetric, forward, backward, improved, log, default: symmetri
686 else:
687 newcontent.append((1 / 12) * (-self.content[t + 2] + 16 * self.content[t + 1] - 30 * self.content[t] + 16 * self.content[t - 1] - self.content[t - 2]))
688 if (all([x is None for x in newcontent])):
-689 raise Exception("Derivative is undefined at all timeslices")
+689 raise ValueError("Derivative is undefined at all timeslices")
690 return Corr(newcontent, padding=[2, 2])
691 elif variant == 'log':
692 newcontent = []
@@ -4455,11 +4455,11 @@ Available choice: symmetric, forward, backward, improved, log, default: symmetri
696 else:
697 newcontent.append(np.log(self.content[t]))
698 if (all([x is None for x in newcontent])):
-699 raise Exception("Log is undefined at all timeslices")
+699 raise ValueError("Log is undefined at all timeslices")
700 logcorr = Corr(newcontent)
701 return self * (logcorr.second_deriv('symmetric') + (logcorr.deriv('symmetric'))**2)
702 else:
-703 raise Exception("Unknown variant.")
+703 raise ValueError("Unknown variant.")
@@ -4522,7 +4522,7 @@ Available choice:
729 else:
730 newcontent.append(self.content[t] / self.content[t + 1])
731 if (all([x is None for x in newcontent])):
-732 raise Exception('m_eff is undefined at all timeslices')
+732 raise ValueError('m_eff is undefined at all timeslices')
733
734 return np.log(Corr(newcontent, padding=[0, 1]))
735
@@ -4536,7 +4536,7 @@ Available choice:
743 else:
744 newcontent.append(self.content[t - 1] / self.content[t + 1])
745 if (all([x is None for x in newcontent])):
-746 raise Exception('m_eff is undefined at all timeslices')
+746 raise ValueError('m_eff is undefined at all timeslices')
747
748 return np.log(Corr(newcontent, padding=[1, 1])) / 2
749
@@ -4561,7 +4561,7 @@ Available choice:
768 else:
769 newcontent.append(np.abs(find_root(self.content[t][0] / self.content[t + 1][0], root_function, guess=guess)))
770 if (all([x is None for x in newcontent])):
-771 raise Exception('m_eff is undefined at all timeslices')
+771 raise ValueError('m_eff is undefined at all timeslices')
772
773 return Corr(newcontent, padding=[0, 1])
774
@@ -4573,11 +4573,11 @@ Available choice:
780 else:
781 newcontent.append((self.content[t + 1] + self.content[t - 1]) / (2 * self.content[t]))
782 if (all([x is None for x in newcontent])):
-783 raise Exception("m_eff is undefined at all timeslices")
+783 raise ValueError("m_eff is undefined at all timeslices")
784 return np.arccosh(Corr(newcontent, padding=[1, 1]))
785
786 else:
-787 raise Exception('Unknown variant.')
+787 raise ValueError('Unknown variant.')
@@ -4627,7 +4627,7 @@ guess for the root finder, only relevant for the root variant
802 Decides whether output is printed to the standard output.
803 '''
804 if self.N != 1:
-805 raise Exception("Correlator must be projected before fitting")
+805 raise ValueError("Correlator must be projected before fitting")
806
807 if fitrange is None:
808 if self.prange:
@@ -4636,12 +4636,12 @@ guess for the root finder, only relevant for the root variant
811 fitrange = [0, self.T - 1]
812 else:
813 if not isinstance(fitrange, list):
-814 raise Exception("fitrange has to be a list with two elements")
+814 raise TypeError("fitrange has to be a list with two elements")
815 if len(fitrange) != 2:
-816 raise Exception("fitrange has to have exactly two elements [fit_start, fit_stop]")
+816 raise ValueError("fitrange has to have exactly two elements [fit_start, fit_stop]")
817
-818 xs = np.array([x for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None])
-819 ys = np.array([self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if not self.content[x] is None])
+818 xs = np.array([x for x in range(fitrange[0], fitrange[1] + 1) if self.content[x] is not None])
+819 ys = np.array([self.content[x][0] for x in range(fitrange[0], fitrange[1] + 1) if self.content[x] is not None])
820 result = least_squares(xs, ys, function, silent=silent, **kwargs)
821 return result
@@ -4698,9 +4698,9 @@ Decides whether output is printed to the standard output.
841 else:
842 raise Exception("no plateau range provided")
843 if self.N != 1:
-844 raise Exception("Correlator must be projected before getting a plateau.")
+844 raise ValueError("Correlator must be projected before getting a plateau.")
845 if (all([self.content[t] is None for t in range(plateau_range[0], plateau_range[1] + 1)])):
-846 raise Exception("plateau is undefined at all timeslices in plateaurange.")
+846 raise ValueError("plateau is undefined at all timeslices in plateaurange.")
847 if auto_gamma:
848 self.gamma_method()
849 if method == "fit":
@@ -4712,7 +4712,7 @@ Decides whether output is printed to the standard output.
855 return returnvalue
856
857 else:
-858 raise Exception("Unsupported plateau method: " + method)
+858 raise ValueError("Unsupported plateau method: " + method)
@@ -4749,11 +4749,11 @@ apply gamma_method with default parameters to the Corr. Defaults to None
860 def set_prange(self, prange):
861 """Sets the attribute prange of the Corr object."""
862 if not len(prange) == 2:
-863 raise Exception("prange must be a list or array with two values")
+863 raise ValueError("prange must be a list or array with two values")
864 if not ((isinstance(prange[0], int)) and (isinstance(prange[1], int))):
-865 raise Exception("Start and end point must be integers")
+865 raise TypeError("Start and end point must be integers")
866 if not (0 <= prange[0] <= self.T and 0 <= prange[1] <= self.T and prange[0] <= prange[1]):
-867 raise Exception("Start and end point must define a range in the interval 0,T")
+867 raise ValueError("Start and end point must define a range in the interval 0,T")
868
869 self.prange = prange
870 return
@@ -4808,7 +4808,7 @@ apply gamma_method with default parameters to the Corr. Defaults to None
901 Optional title of the figure.
902 """
903 if self.N != 1:
-904 raise Exception("Correlator must be projected before plotting")
+904 raise ValueError("Correlator must be projected before plotting")
905
906 if auto_gamma:
907 self.gamma_method()
@@ -4849,7 +4849,7 @@ apply gamma_method with default parameters to the Corr. Defaults to None
942 hide_from = None
943 ax1.errorbar(x[:hide_from], y[:hide_from], y_err[:hide_from], label=corr.tag, mfc=plt.rcParams['axes.facecolor'])
944 else:
-945 raise Exception("'comp' must be a correlator or a list of correlators.")
+945 raise TypeError("'comp' must be a correlator or a list of correlators.")
946
947 if plateau:
948 if isinstance(plateau, Obs):
@@ -4858,14 +4858,14 @@ apply gamma_method with default parameters to the Corr. Defaults to None
951 ax1.axhline(y=plateau.value, linewidth=2, color=plt.rcParams['text.color'], alpha=0.6, marker=',', ls='--', label=str(plateau))
952 ax1.axhspan(plateau.value - plateau.dvalue, plateau.value + plateau.dvalue, alpha=0.25, color=plt.rcParams['text.color'], ls='-')
953 else:
-954 raise Exception("'plateau' must be an Obs")
+954 raise TypeError("'plateau' must be an Obs")
955
956 if references:
957 if isinstance(references, list):
958 for ref in references:
959 ax1.axhline(y=ref, linewidth=1, color=plt.rcParams['text.color'], alpha=0.6, marker=',', ls='--')
960 else:
-961 raise Exception("'references' must be a list of floating pint values.")
+961 raise TypeError("'references' must be a list of floating pint values.")
962
963 if self.prange:
964 ax1.axvline(self.prange[0], 0, 1, ls='-', marker=',', color="black", zorder=0)
@@ -4899,7 +4899,7 @@ apply gamma_method with default parameters to the Corr. Defaults to None
992 if isinstance(save, str):
993 fig.savefig(save, bbox_inches='tight')
994 else:
-995 raise Exception("'save' has to be a string.")
+995 raise TypeError("'save' has to be a string.")
@@ -4958,7 +4958,7 @@ Optional title of the figure.
1003 Determines whether the scale of the y-axis is logarithmic or standard.
1004 """
1005 if self.N != 1:
-1006 raise Exception("Correlator needs to be projected first.")
+1006 raise ValueError("Correlator needs to be projected first.")
1007
1008 mc_names = list(set([item for sublist in [sum(map(o[0].e_content.get, o[0].mc_names), []) for o in self.content if o is not None] for item in sublist]))
1009 x0_vals = [n for (n, o) in zip(np.arange(self.T), self.content) if o is not None]
@@ -5025,7 +5025,7 @@ Determines whether the scale of the y-axis is logarithmic or standard.
1045 elif datatype == "pickle":
1046 dump_object(self, filename, **kwargs)
1047 else:
-1048 raise Exception("Unknown datatype " + str(datatype))
+1048 raise ValueError("Unknown datatype " + str(datatype))
@@ -5447,13 +5447,13 @@ specifies a custom path for the file (default '.')
1393 '''
1394
1395 if self.N == 1:
-1396 raise Exception('Method cannot be applied to one-dimensional correlators.')
+1396 raise ValueError('Method cannot be applied to one-dimensional correlators.')
1397 if basematrix is None:
1398 basematrix = self
1399 if Ntrunc >= basematrix.N:
-1400 raise Exception('Cannot truncate using Ntrunc <= %d' % (basematrix.N))
+1400 raise ValueError('Cannot truncate using Ntrunc <= %d' % (basematrix.N))
1401 if basematrix.N != self.N:
-1402 raise Exception('basematrix and targetmatrix have to be of the same size.')
+1402 raise ValueError('basematrix and targetmatrix have to be of the same size.')
1403
1404 evecs = basematrix.GEVP(t0proj, tproj, sort=None)[:Ntrunc]
1405
diff --git a/docs/pyerrors/dirac.html b/docs/pyerrors/dirac.html
index 12765d15..49b94a06 100644
--- a/docs/pyerrors/dirac.html
+++ b/docs/pyerrors/dirac.html
@@ -139,7 +139,7 @@
34 """
35 test_set = set((i, j, k))
36 if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))):
-37 raise Exception("Unexpected input", i, j, k)
+37 raise ValueError("Unexpected input", i, j, k)
38
39 return (i - j) * (j - k) * (k - i) / 2
40
@@ -157,7 +157,7 @@
52 """
53 test_set = set((i, j, k, o))
54 if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))):
-55 raise Exception("Unexpected input", i, j, k, o)
+55 raise ValueError("Unexpected input", i, j, k, o)
56
57 return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12
58
@@ -197,7 +197,7 @@
92 elif gamma_tag == 'SigmaZT':
93 g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2])
94 else:
-95 raise Exception('Unkown gamma structure', gamma_tag)
+95 raise ValueError('Unkown gamma structure', gamma_tag)
96 return g
@@ -353,7 +353,7 @@
35 """
36 test_set = set((i, j, k))
37 if not (test_set <= set((1, 2, 3)) or test_set <= set((0, 1, 2))):
-38 raise Exception("Unexpected input", i, j, k)
+38 raise ValueError("Unexpected input", i, j, k)
39
40 return (i - j) * (j - k) * (k - i) / 2
@@ -397,7 +397,7 @@ Element (i,j,k) of the epsilon tensor of rank 3
53 """
54 test_set = set((i, j, k, o))
55 if not (test_set <= set((1, 2, 3, 4)) or test_set <= set((0, 1, 2, 3))):
-56 raise Exception("Unexpected input", i, j, k, o)
+56 raise ValueError("Unexpected input", i, j, k, o)
57
58 return (i - j) * (j - k) * (k - i) * (i - o) * (j - o) * (o - k) / 12
@@ -463,7 +463,7 @@ Element (i,j,k,o) of the epsilon tensor of rank 4
93 elif gamma_tag == 'SigmaZT':
94 g = 0.5 * (gamma[2] @ gamma[3] - gamma[3] @ gamma[2])
95 else:
-96 raise Exception('Unkown gamma structure', gamma_tag)
+96 raise ValueError('Unkown gamma structure', gamma_tag)
97 return g
diff --git a/docs/pyerrors/input.html b/docs/pyerrors/input.html
index 80bcdd52..966d6dfb 100644
--- a/docs/pyerrors/input.html
+++ b/docs/pyerrors/input.html
@@ -100,14 +100,14 @@ See pyerrors.obs.Obs.export_jackkn
5For comparison with other analysis workflows `pyerrors` can also generate jackknife samples from an `Obs` object or import jackknife samples into an `Obs` object.
6See `pyerrors.obs.Obs.export_jackknife` and `pyerrors.obs.import_jackknife` for details.
7'''
- 8from . import bdio
- 9from . import dobs
-10from . import hadrons
-11from . import json
-12from . import misc
-13from . import openQCD
-14from . import pandas
-15from . import sfcf
+ 8from . import bdio as bdio
+ 9from . import dobs as dobs
+10from . import hadrons as hadrons
+11from . import json as json
+12from . import misc as misc
+13from . import openQCD as openQCD
+14from . import pandas as pandas
+15from . import sfcf as sfcf
diff --git a/docs/pyerrors/input/dobs.html b/docs/pyerrors/input/dobs.html
index 6f4dbbcb..b2a872be 100644
--- a/docs/pyerrors/input/dobs.html
+++ b/docs/pyerrors/input/dobs.html
@@ -175,7 +175,7 @@
79 o += space
80 o += li + '\n'
81 if li.startswith('<') and not cm:
- 82 if not '<%s' % ('/') in li:
+ 82 if '<%s' % ('/') not in li:
83 c += 1
84 cm = False
85 return o
@@ -767,7 +767,7 @@
671 o += space
672 o += li + '\n'
673 if li.startswith('<') and not cm:
-674 if not '<%s' % ('/') in li:
+674 if '<%s' % ('/') not in li:
675 c += 1
676 cm = False
677 return o
diff --git a/docs/pyerrors/input/hadrons.html b/docs/pyerrors/input/hadrons.html
index 92219b4d..7512c1f8 100644
--- a/docs/pyerrors/input/hadrons.html
+++ b/docs/pyerrors/input/hadrons.html
@@ -218,7 +218,7 @@
113 infos = []
114 for hd5_file in files:
115 h5file = h5py.File(path + '/' + hd5_file, "r")
-116 if not group + '/' + entry in h5file:
+116 if group + '/' + entry not in h5file:
117 raise Exception("Entry '" + entry + "' not contained in the files.")
118 raw_data = h5file[group + '/' + entry + '/corr']
119 real_data = raw_data[:].view("complex")
@@ -291,7 +291,7 @@
186 for hd5_file in files:
187 h5file = h5py.File(path + '/' + hd5_file, "r")
188 for key in keys:
-189 if not tree + '/' + key in h5file:
+189 if tree + '/' + key not in h5file:
190 raise Exception("Entry '" + key + "' not contained in the files.")
191 raw_data = h5file[tree + '/' + key + '/data']
192 real_data = raw_data[:].astype(np.double)
@@ -792,7 +792,7 @@
114 infos = []
115 for hd5_file in files:
116 h5file = h5py.File(path + '/' + hd5_file, "r")
-117 if not group + '/' + entry in h5file:
+117 if group + '/' + entry not in h5file:
118 raise Exception("Entry '" + entry + "' not contained in the files.")
119 raw_data = h5file[group + '/' + entry + '/corr']
120 real_data = raw_data[:].view("complex")
diff --git a/docs/pyerrors/input/openQCD.html b/docs/pyerrors/input/openQCD.html
index f57e2b3a..0a73c540 100644
--- a/docs/pyerrors/input/openQCD.html
+++ b/docs/pyerrors/input/openQCD.html
@@ -146,7 +146,7 @@
47 Reweighting factors read
48 """
49 known_oqcd_versions = ['1.4', '1.6', '2.0']
- 50 if not (version in known_oqcd_versions):
+ 50 if version not in known_oqcd_versions:
51 raise Exception('Unknown openQCD version defined!')
52 print("Working with openQCD version " + version)
53 if 'postfix' in kwargs:
@@ -1460,7 +1460,7 @@
48 Reweighting factors read
49 """
50 known_oqcd_versions = ['1.4', '1.6', '2.0']
- 51 if not (version in known_oqcd_versions):
+ 51 if version not in known_oqcd_versions:
52 raise Exception('Unknown openQCD version defined!')
53 print("Working with openQCD version " + version)
54 if 'postfix' in kwargs:
diff --git a/docs/pyerrors/obs.html b/docs/pyerrors/obs.html
index c68d54d4..cebdb983 100644
--- a/docs/pyerrors/obs.html
+++ b/docs/pyerrors/obs.html
@@ -558,7 +558,7 @@
222 tmp = kwargs.get(kwarg_name)
223 if isinstance(tmp, (int, float)):
224 if tmp < 0:
- 225 raise Exception(kwarg_name + ' has to be larger or equal to 0.')
+ 225 raise ValueError(kwarg_name + ' has to be larger or equal to 0.')
226 for e, e_name in enumerate(self.e_names):
227 getattr(self, kwarg_name)[e_name] = tmp
228 else:
@@ -627,7 +627,7 @@
291 texp = self.tau_exp[e_name]
292 # Critical slowing down analysis
293 if w_max // 2 <= 1:
- 294 raise Exception("Need at least 8 samples for tau_exp error analysis")
+ 294 raise ValueError("Need at least 8 samples for tau_exp error analysis")
295 for n in range(1, w_max // 2):
296 _compute_drho(n + 1)
297 if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2:
@@ -956,7 +956,7 @@
620 if not hasattr(self, 'e_dvalue'):
621 raise Exception('Run the gamma method first.')
622 if np.isclose(0.0, self._dvalue, atol=1e-15):
- 623 raise Exception('Error is 0.0')
+ 623 raise ValueError('Error is 0.0')
624 labels = self.e_names
625 sizes = [self.e_dvalue[name] ** 2 for name in labels] / self._dvalue ** 2
626 fig1, ax1 = plt.subplots()
@@ -995,7 +995,7 @@
659 with open(file_name + '.p', 'wb') as fb:
660 pickle.dump(self, fb)
661 else:
- 662 raise Exception("Unknown datatype " + str(datatype))
+ 662 raise TypeError("Unknown datatype " + str(datatype))
663
664 def export_jackknife(self):
665 """Export jackknife samples from the Obs
@@ -1012,7 +1012,7 @@
676 """
677
678 if len(self.names) != 1:
- 679 raise Exception("'export_jackknife' is only implemented for Obs defined on one ensemble and replicum.")
+ 679 raise ValueError("'export_jackknife' is only implemented for Obs defined on one ensemble and replicum.")
680
681 name = self.names[0]
682 full_data = self.deltas[name] + self.r_values[name]
@@ -1047,7 +1047,7 @@
711 should agree with samples from a full bootstrap analysis up to O(1/N).
712 """
713 if len(self.names) != 1:
- 714 raise Exception("'export_boostrap' is only implemented for Obs defined on one ensemble and replicum.")
+ 714 raise ValueError("'export_boostrap' is only implemented for Obs defined on one ensemble and replicum.")
715
716 name = self.names[0]
717 length = self.N
@@ -1603,7 +1603,7 @@
1267 if 'man_grad' in kwargs:
1268 deriv = np.asarray(kwargs.get('man_grad'))
1269 if new_values.shape + data.shape != deriv.shape:
-1270 raise Exception('Manual derivative does not have correct shape.')
+1270 raise ValueError('Manual derivative does not have correct shape.')
1271 elif kwargs.get('num_grad') is True:
1272 if multi > 0:
1273 raise Exception('Multi mode currently not supported for numerical derivative')
@@ -1669,7 +1669,7 @@
1333 new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad}
1334
1335 if not set(new_covobs.keys()).isdisjoint(new_deltas.keys()):
-1336 raise Exception('The same name has been used for deltas and covobs!')
+1336 raise ValueError('The same name has been used for deltas and covobs!')
1337 new_samples = []
1338 new_means = []
1339 new_idl = []
@@ -1710,7 +1710,7 @@
1374 Has to be a subset of idx_old.
1375 """
1376 if not len(deltas) == len(idx_old):
-1377 raise Exception('Length of deltas and idx_old have to be the same: %d != %d' % (len(deltas), len(idx_old)))
+1377 raise ValueError('Length of deltas and idx_old have to be the same: %d != %d' % (len(deltas), len(idx_old)))
1378 if type(idx_old) is range and type(idx_new) is range:
1379 if idx_old == idx_new:
1380 return deltas
@@ -1718,7 +1718,7 @@
1382 return deltas
1383 indices = np.intersect1d(idx_old, idx_new, assume_unique=True, return_indices=True)[1]
1384 if len(indices) < len(idx_new):
-1385 raise Exception('Error in _reduce_deltas: Config of idx_new not in idx_old')
+1385 raise ValueError('Error in _reduce_deltas: Config of idx_new not in idx_old')
1386 return np.array(deltas)[indices]
1387
1388
@@ -1740,12 +1740,12 @@
1404 result = []
1405 for i in range(len(obs)):
1406 if len(obs[i].cov_names):
-1407 raise Exception('Error: Not possible to reweight an Obs that contains covobs!')
+1407 raise ValueError('Error: Not possible to reweight an Obs that contains covobs!')
1408 if not set(obs[i].names).issubset(weight.names):
-1409 raise Exception('Error: Ensembles do not fit')
+1409 raise ValueError('Error: Ensembles do not fit')
1410 for name in obs[i].names:
1411 if not set(obs[i].idl[name]).issubset(weight.idl[name]):
-1412 raise Exception('obs[%d] has to be defined on a subset of the configs in weight.idl[%s]!' % (i, name))
+1412 raise ValueError('obs[%d] has to be defined on a subset of the configs in weight.idl[%s]!' % (i, name))
1413 new_samples = []
1414 w_deltas = {}
1415 for name in sorted(obs[i].names):
@@ -1782,14 +1782,14 @@
1446 """
1447
1448 if sorted(obs_a.names) != sorted(obs_b.names):
-1449 raise Exception(f"Ensembles do not fit {set(sorted(obs_a.names)) ^ set(sorted(obs_b.names))}")
+1449 raise ValueError(f"Ensembles do not fit {set(sorted(obs_a.names)) ^ set(sorted(obs_b.names))}")
1450 if len(obs_a.cov_names) or len(obs_b.cov_names):
-1451 raise Exception('Error: Not possible to correlate Obs that contain covobs!')
+1451 raise ValueError('Error: Not possible to correlate Obs that contain covobs!')
1452 for name in obs_a.names:
1453 if obs_a.shape[name] != obs_b.shape[name]:
-1454 raise Exception('Shapes of ensemble', name, 'do not fit')
+1454 raise ValueError('Shapes of ensemble', name, 'do not fit')
1455 if obs_a.idl[name] != obs_b.idl[name]:
-1456 raise Exception('idl of ensemble', name, 'do not fit')
+1456 raise ValueError('idl of ensemble', name, 'do not fit')
1457
1458 if obs_a.reweighted is True:
1459 warnings.warn("The first observable is already reweighted.", RuntimeWarning)
@@ -1891,7 +1891,7 @@
1555
1556 condn = np.linalg.cond(corr)
1557 if condn > 0.1 / np.finfo(float).eps:
-1558 raise Exception(f"Cannot invert correlation matrix as its condition number exceeds machine precision ({condn:1.2e})")
+1558 raise ValueError(f"Cannot invert correlation matrix as its condition number exceeds machine precision ({condn:1.2e})")
1559 if condn > 1e13:
1560 warnings.warn("Correlation matrix may be ill-conditioned, condition number: {%1.2e}" % (condn), RuntimeWarning)
1561 chol = np.linalg.cholesky(corr)
@@ -1972,7 +1972,7 @@
1636 Number of eigenvalues to be left substantially unchanged
1637 """
1638 if not (2 < E < corr.shape[0] - 1):
-1639 raise Exception(f"'E' has to be between 2 and the dimension of the correlation matrix minus 1 ({corr.shape[0] - 1}).")
+1639 raise ValueError(f"'E' has to be between 2 and the dimension of the correlation matrix minus 1 ({corr.shape[0] - 1}).")
1640 vals, vec = np.linalg.eigh(corr)
1641 lambda_min = np.mean(vals[:-E])
1642 vals[vals < lambda_min] = lambda_min
@@ -2104,9 +2104,9 @@
1768 """
1769 replist = [item for obs in list_of_obs for item in obs.names]
1770 if (len(replist) == len(set(replist))) is False:
-1771 raise Exception('list_of_obs contains duplicate replica: %s' % (str(replist)))
+1771 raise ValueError('list_of_obs contains duplicate replica: %s' % (str(replist)))
1772 if any([len(o.cov_names) for o in list_of_obs]):
-1773 raise Exception('Not possible to merge data that contains covobs!')
+1773 raise ValueError('Not possible to merge data that contains covobs!')
1774 new_dict = {}
1775 idl_dict = {}
1776 for o in list_of_obs:
@@ -2157,7 +2157,7 @@
1821 for i in range(len(means)):
1822 ol.append(covobs_to_obs(Covobs(means[i], cov, name, pos=i, grad=grad)))
1823 if ol[0].covobs[name].N != len(means):
-1824 raise Exception('You have to provide %d mean values!' % (ol[0].N))
+1824 raise ValueError('You have to provide %d mean values!' % (ol[0].N))
1825 if len(ol) == 1:
1826 return ol[0]
1827 return ol
@@ -2173,7 +2173,7 @@
1837
1838 gap = min(gaps)
1839 if not np.all([gi % gap == 0 for gi in gaps]):
-1840 raise Exception(f"Replica for ensemble {e_name} do not have a common spacing.", gaps)
+1840 raise ValueError(f"Replica for ensemble {e_name} do not have a common spacing.", gaps)
1841
1842 return gap
1843
@@ -2413,7 +2413,7 @@
223 tmp = kwargs.get(kwarg_name)
224 if isinstance(tmp, (int, float)):
225 if tmp < 0:
-226 raise Exception(kwarg_name + ' has to be larger or equal to 0.')
+226 raise ValueError(kwarg_name + ' has to be larger or equal to 0.')
227 for e, e_name in enumerate(self.e_names):
228 getattr(self, kwarg_name)[e_name] = tmp
229 else:
@@ -2482,7 +2482,7 @@
292 texp = self.tau_exp[e_name]
293 # Critical slowing down analysis
294 if w_max // 2 <= 1:
-295 raise Exception("Need at least 8 samples for tau_exp error analysis")
+295 raise ValueError("Need at least 8 samples for tau_exp error analysis")
296 for n in range(1, w_max // 2):
297 _compute_drho(n + 1)
298 if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2:
@@ -2811,7 +2811,7 @@
621 if not hasattr(self, 'e_dvalue'):
622 raise Exception('Run the gamma method first.')
623 if np.isclose(0.0, self._dvalue, atol=1e-15):
-624 raise Exception('Error is 0.0')
+624 raise ValueError('Error is 0.0')
625 labels = self.e_names
626 sizes = [self.e_dvalue[name] ** 2 for name in labels] / self._dvalue ** 2
627 fig1, ax1 = plt.subplots()
@@ -2850,7 +2850,7 @@
660 with open(file_name + '.p', 'wb') as fb:
661 pickle.dump(self, fb)
662 else:
-663 raise Exception("Unknown datatype " + str(datatype))
+663 raise TypeError("Unknown datatype " + str(datatype))
664
665 def export_jackknife(self):
666 """Export jackknife samples from the Obs
@@ -2867,7 +2867,7 @@
677 """
678
679 if len(self.names) != 1:
-680 raise Exception("'export_jackknife' is only implemented for Obs defined on one ensemble and replicum.")
+680 raise ValueError("'export_jackknife' is only implemented for Obs defined on one ensemble and replicum.")
681
682 name = self.names[0]
683 full_data = self.deltas[name] + self.r_values[name]
@@ -2902,7 +2902,7 @@
712 should agree with samples from a full bootstrap analysis up to O(1/N).
713 """
714 if len(self.names) != 1:
-715 raise Exception("'export_boostrap' is only implemented for Obs defined on one ensemble and replicum.")
+715 raise ValueError("'export_boostrap' is only implemented for Obs defined on one ensemble and replicum.")
716
717 name = self.names[0]
718 length = self.N
@@ -3610,7 +3610,7 @@ list of ranges or lists on which the samples are defined
223 tmp = kwargs.get(kwarg_name)
224 if isinstance(tmp, (int, float)):
225 if tmp < 0:
-226 raise Exception(kwarg_name + ' has to be larger or equal to 0.')
+226 raise ValueError(kwarg_name + ' has to be larger or equal to 0.')
227 for e, e_name in enumerate(self.e_names):
228 getattr(self, kwarg_name)[e_name] = tmp
229 else:
@@ -3679,7 +3679,7 @@ list of ranges or lists on which the samples are defined
292 texp = self.tau_exp[e_name]
293 # Critical slowing down analysis
294 if w_max // 2 <= 1:
-295 raise Exception("Need at least 8 samples for tau_exp error analysis")
+295 raise ValueError("Need at least 8 samples for tau_exp error analysis")
296 for n in range(1, w_max // 2):
297 _compute_drho(n + 1)
298 if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2:
@@ -3813,7 +3813,7 @@ of the autocorrelation function (default True)
223 tmp = kwargs.get(kwarg_name)
224 if isinstance(tmp, (int, float)):
225 if tmp < 0:
-226 raise Exception(kwarg_name + ' has to be larger or equal to 0.')
+226 raise ValueError(kwarg_name + ' has to be larger or equal to 0.')
227 for e, e_name in enumerate(self.e_names):
228 getattr(self, kwarg_name)[e_name] = tmp
229 else:
@@ -3882,7 +3882,7 @@ of the autocorrelation function (default True)
292 texp = self.tau_exp[e_name]
293 # Critical slowing down analysis
294 if w_max // 2 <= 1:
-295 raise Exception("Need at least 8 samples for tau_exp error analysis")
+295 raise ValueError("Need at least 8 samples for tau_exp error analysis")
296 for n in range(1, w_max // 2):
297 _compute_drho(n + 1)
298 if (self.e_rho[e_name][n] - self.N_sigma[e_name] * self.e_drho[e_name][n]) < 0 or n >= w_max // 2 - 2:
@@ -4409,7 +4409,7 @@ show expanded history for irregular Monte Carlo chains (default: True).
621 if not hasattr(self, 'e_dvalue'):
622 raise Exception('Run the gamma method first.')
623 if np.isclose(0.0, self._dvalue, atol=1e-15):
-624 raise Exception('Error is 0.0')
+624 raise ValueError('Error is 0.0')
625 labels = self.e_names
626 sizes = [self.e_dvalue[name] ** 2 for name in labels] / self._dvalue ** 2
627 fig1, ax1 = plt.subplots()
@@ -4474,7 +4474,7 @@ saves the figure to a file named 'save' if.
660 with open(file_name + '.p', 'wb') as fb:
661 pickle.dump(self, fb)
662 else:
-663 raise Exception("Unknown datatype " + str(datatype))
+663 raise TypeError("Unknown datatype " + str(datatype))
@@ -4523,7 +4523,7 @@ specifies a custom path for the file (default '.')
677 """
678
679 if len(self.names) != 1:
-680 raise Exception("'export_jackknife' is only implemented for Obs defined on one ensemble and replicum.")
+680 raise ValueError("'export_jackknife' is only implemented for Obs defined on one ensemble and replicum.")
681
682 name = self.names[0]
683 full_data = self.deltas[name] + self.r_values[name]
@@ -4587,7 +4587,7 @@ should agree with samples from a full jackknife analysis up to O(1/N).
712 should agree with samples from a full bootstrap analysis up to O(1/N).
713 """
714 if len(self.names) != 1:
-715 raise Exception("'export_boostrap' is only implemented for Obs defined on one ensemble and replicum.")
+715 raise ValueError("'export_boostrap' is only implemented for Obs defined on one ensemble and replicum.")
716
717 name = self.names[0]
718 length = self.N
@@ -5488,7 +5488,7 @@ should agree with samples from a full bootstrap analysis up to O(1/N).
1268 if 'man_grad' in kwargs:
1269 deriv = np.asarray(kwargs.get('man_grad'))
1270 if new_values.shape + data.shape != deriv.shape:
-1271 raise Exception('Manual derivative does not have correct shape.')
+1271 raise ValueError('Manual derivative does not have correct shape.')
1272 elif kwargs.get('num_grad') is True:
1273 if multi > 0:
1274 raise Exception('Multi mode currently not supported for numerical derivative')
@@ -5554,7 +5554,7 @@ should agree with samples from a full bootstrap analysis up to O(1/N).
1334 new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad}
1335
1336 if not set(new_covobs.keys()).isdisjoint(new_deltas.keys()):
-1337 raise Exception('The same name has been used for deltas and covobs!')
+1337 raise ValueError('The same name has been used for deltas and covobs!')
1338 new_samples = []
1339 new_means = []
1340 new_idl = []
@@ -5640,12 +5640,12 @@ functions. For the ratio of two observables one can e.g. use
1405 result = []
1406 for i in range(len(obs)):
1407 if len(obs[i].cov_names):
-1408 raise Exception('Error: Not possible to reweight an Obs that contains covobs!')
+1408 raise ValueError('Error: Not possible to reweight an Obs that contains covobs!')
1409 if not set(obs[i].names).issubset(weight.names):
-1410 raise Exception('Error: Ensembles do not fit')
+1410 raise ValueError('Error: Ensembles do not fit')
1411 for name in obs[i].names:
1412 if not set(obs[i].idl[name]).issubset(weight.idl[name]):
-1413 raise Exception('obs[%d] has to be defined on a subset of the configs in weight.idl[%s]!' % (i, name))
+1413 raise ValueError('obs[%d] has to be defined on a subset of the configs in weight.idl[%s]!' % (i, name))
1414 new_samples = []
1415 w_deltas = {}
1416 for name in sorted(obs[i].names):
@@ -5713,14 +5713,14 @@ on the configurations in obs[i].idl. Default False.
1447 """
1448
1449 if sorted(obs_a.names) != sorted(obs_b.names):
-1450 raise Exception(f"Ensembles do not fit {set(sorted(obs_a.names)) ^ set(sorted(obs_b.names))}")
+1450 raise ValueError(f"Ensembles do not fit {set(sorted(obs_a.names)) ^ set(sorted(obs_b.names))}")
1451 if len(obs_a.cov_names) or len(obs_b.cov_names):
-1452 raise Exception('Error: Not possible to correlate Obs that contain covobs!')
+1452 raise ValueError('Error: Not possible to correlate Obs that contain covobs!')
1453 for name in obs_a.names:
1454 if obs_a.shape[name] != obs_b.shape[name]:
-1455 raise Exception('Shapes of ensemble', name, 'do not fit')
+1455 raise ValueError('Shapes of ensemble', name, 'do not fit')
1456 if obs_a.idl[name] != obs_b.idl[name]:
-1457 raise Exception('idl of ensemble', name, 'do not fit')
+1457 raise ValueError('idl of ensemble', name, 'do not fit')
1458
1459 if obs_a.reweighted is True:
1460 warnings.warn("The first observable is already reweighted.", RuntimeWarning)
@@ -5903,7 +5903,7 @@ This construction ensures that the estimated covariance matrix is positive semi-
1556
1557 condn = np.linalg.cond(corr)
1558 if condn > 0.1 / np.finfo(float).eps:
-1559 raise Exception(f"Cannot invert correlation matrix as its condition number exceeds machine precision ({condn:1.2e})")
+1559 raise ValueError(f"Cannot invert correlation matrix as its condition number exceeds machine precision ({condn:1.2e})")
1560 if condn > 1e13:
1561 warnings.warn("Correlation matrix may be ill-conditioned, condition number: {%1.2e}" % (condn), RuntimeWarning)
1562 chol = np.linalg.cholesky(corr)
@@ -6185,9 +6185,9 @@ chain to be reconstructed.
1769 """
1770 replist = [item for obs in list_of_obs for item in obs.names]
1771 if (len(replist) == len(set(replist))) is False:
-1772 raise Exception('list_of_obs contains duplicate replica: %s' % (str(replist)))
+1772 raise ValueError('list_of_obs contains duplicate replica: %s' % (str(replist)))
1773 if any([len(o.cov_names) for o in list_of_obs]):
-1774 raise Exception('Not possible to merge data that contains covobs!')
+1774 raise ValueError('Not possible to merge data that contains covobs!')
1775 new_dict = {}
1776 idl_dict = {}
1777 for o in list_of_obs:
@@ -6266,7 +6266,7 @@ list of the Obs object to be combined
1822 for i in range(len(means)):
1823 ol.append(covobs_to_obs(Covobs(means[i], cov, name, pos=i, grad=grad)))
1824 if ol[0].covobs[name].N != len(means):
-1825 raise Exception('You have to provide %d mean values!' % (ol[0].N))
+1825 raise ValueError('You have to provide %d mean values!' % (ol[0].N))
1826 if len(ol) == 1:
1827 return ol[0]
1828 return ol