Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _region_init(self, fit, par0, par1):
self.stat = fit.calc_stat()
self.xlabel = par0.fullname
self.ylabel = par1.fullname
self.parval0 = par0.val
self.parval1 = par1.val
if self.levels is None:
stat = self.stat
if self.sigma is None or numpy.isscalar(self.sigma):
raise ConfidenceErr('needlist', 'sigma bounds')
thelevels = numpy.zeros(len(self.sigma), SherpaFloat)
for i in range(len(self.sigma)):
thelevels[i] = stat - (2. * numpy.log(1. - erf(
self.sigma[i] / numpy.sqrt(2.))))
self.levels = thelevels
if self.min is None or self.max is None:
oldestmethod = fit.estmethod
fit.estmethod = Covariance()
r = fit.est_errors()
fit.estmethod = oldestmethod
index0 = list(r.parnames).index(par0.fullname)
index1 = list(r.parnames).index(par1.fullname)
if self.min is None:
bscal = self.backscal
if bscal is not None:
bscal = self._check_scale(bscal, filter=filter)
bkgsum = (bscal * bscal) * bkgsum
# Correct the background counts by the source AREASCAL
# setting. Is this correct?
ascal = self.areascal
if ascal is not None:
ascal = self._check_scale(ascal, filter=filter)
bkgsum = (ascal * ascal) * bkgsum
if self.exposure is not None:
bkgsum = (self.exposure * self.exposure) * bkgsum
nbkg = SherpaFloat(nbkg)
if staterr is not None:
staterr = staterr * staterr + bkgsum / (nbkg * nbkg)
staterr = numpy.sqrt(staterr)
return staterr
def _try_col(crate, colname, make_copy=False, fix_type=False, dtype=SherpaFloat):
"""
checked for new crates
"""
if not crate.column_exists(colname):
return None
col = crate.get_column(colname)
if col is None:
return None
if hasattr(col, 'is_varlen') and col.is_varlen():
values = col.get_fixed_length_array()
else:
values = col.values
def _get_wcs_key(hdu, key0, key1, fix_type=False, dtype=SherpaFloat):
"""Return the pair of keyword values as an array of values of
the requested datatype. If either key is missing then return
().
"""
if _has_key(hdu, key0) and _has_key(hdu, key1):
return numpy.array([_try_key(hdu, key0, fix_type, dtype),
_try_key(hdu, key1, fix_type, dtype)], dtype)
return ()
bkgsum = sum(bdata_list)
backscal = self.backscal
if backscal is not None:
backscal = self._check_scale(backscal, group=False)
bkgsum = backscal * bkgsum
areascal = self.areascal
if areascal is not None:
areascal = self._check_scale(areascal, group=False)
bkgsum = areascal * bkgsum
if self.exposure is not None:
bkgsum = self.exposure * bkgsum
return bkgsum / SherpaFloat(nbkg)
a particular I/O backend.
Create a `sherpa.astro.data.DataIMG` object from the FITS file
``img.fits``:
>>> d = read_image('img.fits')
Select the physical coordinate system from the file:
>>> d = read_image('img.fits', coord='physical')
"""
data, filename = backend.get_image_data(arg)
axlens = data['y'].shape
x0 = numpy.arange(axlens[1], dtype=SherpaFloat) + 1.
x1 = numpy.arange(axlens[0], dtype=SherpaFloat) + 1.
x0, x1 = reshape_2d_arrays(x0, x1)
data['y'] = data['y'].ravel()
data['coord'] = coord
data['shape'] = axlens
if issubclass(dstype, DataIMGInt):
dataset = dstype(filename, x0 - 0.5, x1 - 0.5, x0 + 0.5, x1 + 0.5,
**data)
elif issubclass(dstype, Data2DInt):
for name in ['coord', 'eqpos', 'sky', 'header']:
data.pop(name, None)
dataset = dstype(filename, x0 - 0.5, x1 - 0.5, x0 + 0.5, x1 + 0.5,
**data)
else:
val = numpy.asarray(val)
res = []
for v in val.flat:
if tuple(numpy.flatnonzero(elo <= v)) == ():
if elo[0] > elo[-1] and ehi[0] > ehi[-1]:
res.append(SherpaFloat(len(elo)))
else:
res.append(SherpaFloat(1))
elif tuple(numpy.flatnonzero(ehi > v)) == ():
if elo[0] > elo[-1] and ehi[0] > ehi[-1]:
res.append(SherpaFloat(1))
else:
res.append(SherpaFloat(len(ehi)))
elif tuple(numpy.flatnonzero((elo <= v) & (ehi > v)) + 1) != ():
res.append(SherpaFloat(
numpy.flatnonzero((elo <= v) & (ehi > v)) + 1))
elif (elo <= v).argmin() == (ehi > v).argmax():
res.append(SherpaFloat((elo <= v).argmin()))
else:
raise DataErr("energytochannel", v)
if val.shape == ():
return res[0]
return numpy.asarray(res, SherpaFloat)
def _try_key_list(crate, keyname, num, dtype=SherpaFloat, fix_type=False):
"""
checked for new crates
"""
if not crate.key_exists(keyname):
return None
key = crate.get_key(keyname)
# Make a copy of the data, since we don't know that pycrates will
# do something sensible wrt reference counting
key = numpy.array([key.value] * num)
if fix_type:
key = key.astype(dtype)
return key
def _energy_to_channel(self, val):
elo, ehi = self._get_ebins()
val = numpy.asarray(val)
res = []
for v in val.flat:
if tuple(numpy.flatnonzero(elo <= v)) == ():
if elo[0] > elo[-1] and ehi[0] > ehi[-1]:
res.append(SherpaFloat(len(elo)))
else:
res.append(SherpaFloat(1))
elif tuple(numpy.flatnonzero(ehi > v)) == ():
if elo[0] > elo[-1] and ehi[0] > ehi[-1]:
res.append(SherpaFloat(1))
else:
res.append(SherpaFloat(len(ehi)))
elif tuple(numpy.flatnonzero((elo <= v) & (ehi > v)) + 1) != ():
res.append(SherpaFloat(
numpy.flatnonzero((elo <= v) & (ehi > v)) + 1))
elif (elo <= v).argmin() == (ehi > v).argmax():
res.append(SherpaFloat((elo <= v).argmin()))
else:
raise DataErr("energytochannel", v)
if val.shape == ():
return res[0]
return numpy.asarray(res, SherpaFloat)