Definition at line 1416 of file C2Functions.py. 01416 : 01417 01418 if not isinstance(binheights, C2Function): #must be a data table, create interpolator 01419 np=len(binheights) 01420 be=_numeric.array(bincenters) 01421 bh=_numeric.array(binheights) 01422 01423 reversed = be[1] < be[0] #// check for backwards channels 01424 01425 if reversed: 01426 be=be[::-1] 01427 bh=bh[::-1] 01428 01429 temp=self.IntermediateInterpolator(be, bh) #// create a temporary InterpolatingFunction to integrate 01430 else: 01431 temp=binheights 01432 01433 # integrate from first to last bin in original order, leaving results in integral 01434 # ask for relative error of 1e-6 on each bin, with absolute error set to 0 (since we don't know the data scale). 01435 integral=[0] + temp.partial_integrals(bincenters, 01436 absolute_error_tolerance=0, 01437 relative_error_tolerance=1e-6) 01438 01439 scale=1.0/sum(integral) 01440 01441 for i in range(1,len(integral)): 01442 integral[i]=integral[i]*scale + integral[i-1] 01443 integral[-1]=1.0 #force exact value on the boundary 01444 01445 InterpolatingFunction.__init__(self, integral, bincenters, 01446 lowerSlope=1.0/(scale*temp(bincenters[0])), upperSlope=1.0/(scale*temp(bincenters[-1])) 01447 ) # use integral as x axis in inverse function 01448 class LinLogInverseIntegratedDensity(InverseIntegratedDensity):
|