def bin_size(self, bs): if self.histogram.dim != 1: raise GeneralError('Currently only 1D histograms can be binned') if isinstance(bs, int): # You can only bin further the histogram, there is no # way back (load original data again) if bs > self._bin_size: self._bin_size = bs self.histogram = self.histogram.rebin1d(bs) elif bs <= self._bin_size: pass else: raise GeneralError('Attempt to set bin size to {}'.\ format(bs)) else: raise GeneralError('Attempt to set bin size to {}'.\ format(bs))
def _add_errors(self, error1, error2): """Add two error arrays \sigma = \sqrt{\sigma_1^2 + \sigma_2^2} """ if error1.shape != error2.shape: raise GeneralError('Shape of array mismatches') errors = numpy.zeros(error1.shape) for index, d in numpy.ndenumerate(error1): errors[index] = math.sqrt(error1[index]**2 + error2[index]**2) return errors
def mode(self, mode): """Deactivate all plots that have different mode (dimension)""" if mode not in [1, 2]: raise GeneralError('Only 1D and 2D plotting modes are possible') # if mode == 2: # self.plotter.ylin() Experiment._mode = mode for p in self.plots: if p.histogram.dim != mode: p.active = False
def norm(self, n): if self.histogram.dim != 1: raise GeneralError('Currently only 1D histograms can be normalized') self.histogram = self.histogram.normalize1d(n, self.bin_size)