LSSTApplications  19.0.0-14-gb0260a2+72efe9b372,20.0.0+7927753e06,20.0.0+8829bf0056,20.0.0+995114c5d2,20.0.0+b6f4b2abd1,20.0.0+bddc4f4cbe,20.0.0-1-g253301a+8829bf0056,20.0.0-1-g2b7511a+0d71a2d77f,20.0.0-1-g5b95a8c+7461dd0434,20.0.0-12-g321c96ea+23efe4bbff,20.0.0-16-gfab17e72e+fdf35455f6,20.0.0-2-g0070d88+ba3ffc8f0b,20.0.0-2-g4dae9ad+ee58a624b3,20.0.0-2-g61b8584+5d3db074ba,20.0.0-2-gb780d76+d529cf1a41,20.0.0-2-ged6426c+226a441f5f,20.0.0-2-gf072044+8829bf0056,20.0.0-2-gf1f7952+ee58a624b3,20.0.0-20-geae50cf+e37fec0aee,20.0.0-25-g3dcad98+544a109665,20.0.0-25-g5eafb0f+ee58a624b3,20.0.0-27-g64178ef+f1f297b00a,20.0.0-3-g4cc78c6+e0676b0dc8,20.0.0-3-g8f21e14+4fd2c12c9a,20.0.0-3-gbd60e8c+187b78b4b8,20.0.0-3-gbecbe05+48431fa087,20.0.0-38-ge4adf513+a12e1f8e37,20.0.0-4-g97dc21a+544a109665,20.0.0-4-gb4befbc+087873070b,20.0.0-4-gf910f65+5d3db074ba,20.0.0-5-gdfe0fee+199202a608,20.0.0-5-gfbfe500+d529cf1a41,20.0.0-6-g64f541c+d529cf1a41,20.0.0-6-g9a5b7a1+a1cd37312e,20.0.0-68-ga3f3dda+5fca18c6a4,20.0.0-9-g4aef684+e18322736b,w.2020.45
LSSTDataManagementBasePackage
Classes | Functions
lsst.cp.pipe.makeBrighterFatterKernel Namespace Reference

Classes

class  BrighterFatterGain
 
class  BrighterFatterKernel
 
class  BrighterFatterKernelTaskDataIdContainer
 
class  MakeBrighterFatterKernelTask
 
class  MakeBrighterFatterKernelTaskConfig
 

Functions

def calcBiasCorr (fluxLevels, imageShape, repeats=1, seed=0, addCorrelations=False, correlationStrength=0.1, maxLag=10, nSigmaClip=5, border=10, logger=None)
 

Function Documentation

◆ calcBiasCorr()

def lsst.cp.pipe.makeBrighterFatterKernel.calcBiasCorr (   fluxLevels,
  imageShape,
  repeats = 1,
  seed = 0,
  addCorrelations = False,
  correlationStrength = 0.1,
  maxLag = 10,
  nSigmaClip = 5,
  border = 10,
  logger = None 
)
Calculate the bias induced when sigma-clipping non-Gaussian distributions.

Fill image-pairs of the specified size with Poisson-distributed values,
adding correlations as necessary. Then calculate the cross correlation,
and calculate the bias induced using the cross-correlation image
and the image means.

Parameters:
-----------
fluxLevels : `list` of `int`
    The mean flux levels at which to simulate.
    Nominal values might be something like [70000, 90000, 110000]
imageShape : `tuple` of `int`
    The shape of the image array to simulate, nx by ny pixels.
repeats : `int`, optional
    Number of repeats to perform so that results
    can be averaged to improve SNR.
seed : `int`, optional
    The random seed to use for the Poisson points.
addCorrelations : `bool`, optional
    Whether to add brighter-fatter-like correlations to the simulated images
    If true, a correlation between x_{i,j} and x_{i+1,j+1} is introduced
    by adding a*x_{i,j} to x_{i+1,j+1}
correlationStrength : `float`, optional
    The strength of the correlations.
    This is the value of the coefficient `a` in the above definition.
maxLag : `int`, optional
    The maximum lag to work to in pixels
nSigmaClip : `float`, optional
    Number of sigma to clip to when calculating the sigma-clipped mean.
border : `int`, optional
    Number of border pixels to mask
logger : `lsst.log.Log`, optional
    Logger to use. Instantiated anew if not provided.

Returns:
--------
biases : `dict` [`float`, `list` of `float`]
    A dictionary, keyed by flux level, containing a list of the biases
    for each repeat at that flux level
means : `dict` [`float`, `list` of `float`]
    A dictionary, keyed by flux level, containing a list of the average
    mean fluxes (average of the mean of the two images)
    for the image pairs at that flux level
xcorrs : `dict` [`float`, `list` of `np.ndarray`]
    A dictionary, keyed by flux level, containing a list of the xcorr
    images for the image pairs at that flux level

Definition at line 1615 of file makeBrighterFatterKernel.py.

1615 def calcBiasCorr(fluxLevels, imageShape, repeats=1, seed=0, addCorrelations=False,
1616  correlationStrength=0.1, maxLag=10, nSigmaClip=5, border=10, logger=None):
1617  """Calculate the bias induced when sigma-clipping non-Gaussian distributions.
1618 
1619  Fill image-pairs of the specified size with Poisson-distributed values,
1620  adding correlations as necessary. Then calculate the cross correlation,
1621  and calculate the bias induced using the cross-correlation image
1622  and the image means.
1623 
1624  Parameters:
1625  -----------
1626  fluxLevels : `list` of `int`
1627  The mean flux levels at which to simulate.
1628  Nominal values might be something like [70000, 90000, 110000]
1629  imageShape : `tuple` of `int`
1630  The shape of the image array to simulate, nx by ny pixels.
1631  repeats : `int`, optional
1632  Number of repeats to perform so that results
1633  can be averaged to improve SNR.
1634  seed : `int`, optional
1635  The random seed to use for the Poisson points.
1636  addCorrelations : `bool`, optional
1637  Whether to add brighter-fatter-like correlations to the simulated images
1638  If true, a correlation between x_{i,j} and x_{i+1,j+1} is introduced
1639  by adding a*x_{i,j} to x_{i+1,j+1}
1640  correlationStrength : `float`, optional
1641  The strength of the correlations.
1642  This is the value of the coefficient `a` in the above definition.
1643  maxLag : `int`, optional
1644  The maximum lag to work to in pixels
1645  nSigmaClip : `float`, optional
1646  Number of sigma to clip to when calculating the sigma-clipped mean.
1647  border : `int`, optional
1648  Number of border pixels to mask
1649  logger : `lsst.log.Log`, optional
1650  Logger to use. Instantiated anew if not provided.
1651 
1652  Returns:
1653  --------
1654  biases : `dict` [`float`, `list` of `float`]
1655  A dictionary, keyed by flux level, containing a list of the biases
1656  for each repeat at that flux level
1657  means : `dict` [`float`, `list` of `float`]
1658  A dictionary, keyed by flux level, containing a list of the average
1659  mean fluxes (average of the mean of the two images)
1660  for the image pairs at that flux level
1661  xcorrs : `dict` [`float`, `list` of `np.ndarray`]
1662  A dictionary, keyed by flux level, containing a list of the xcorr
1663  images for the image pairs at that flux level
1664  """
1665  if logger is None:
1666  logger = lsstLog.Log.getDefaultLogger()
1667 
1668  means = {f: [] for f in fluxLevels}
1669  xcorrs = {f: [] for f in fluxLevels}
1670  biases = {f: [] for f in fluxLevels}
1671 
1672  config = MakeBrighterFatterKernelTaskConfig()
1673  config.isrMandatorySteps = [] # no isr but the validation routine is still run
1674  config.isrForbiddenSteps = []
1675  config.nSigmaClipXCorr = nSigmaClip
1676  config.nPixBorderXCorr = border
1677  config.maxLag = maxLag
1678  task = MakeBrighterFatterKernelTask(config=config)
1679 
1680  im0 = afwImage.maskedImage.MaskedImageF(imageShape[1], imageShape[0])
1681  im1 = afwImage.maskedImage.MaskedImageF(imageShape[1], imageShape[0])
1682 
1683  random = np.random.RandomState(seed)
1684 
1685  for rep in range(repeats):
1686  for flux in fluxLevels:
1687  data0 = random.poisson(flux, (imageShape)).astype(float)
1688  data1 = random.poisson(flux, (imageShape)).astype(float)
1689  if addCorrelations:
1690  data0[1:, 1:] += correlationStrength*data0[: -1, : -1]
1691  data1[1:, 1:] += correlationStrength*data1[: -1, : -1]
1692  im0.image.array[:, :] = data0
1693  im1.image.array[:, :] = data1
1694 
1695  _xcorr, _means = task._crossCorrelate(im0, im1, runningBiasCorrSim=True)
1696 
1697  means[flux].append(_means)
1698  xcorrs[flux].append(_xcorr)
1699  if addCorrelations:
1700  bias = xcorrs[flux][-1][1, 1]/means[flux][-1]*(1 + correlationStrength)/correlationStrength
1701  msg = f"Simulated/expected avg. flux: {flux:.1f}, {(means[flux][-1]/2):.1f}"
1702  logger.info(msg)
1703  logger.info(f"Bias: {bias:.6f}")
1704  else:
1705  bias = xcorrs[flux][-1][0, 0]/means[flux][-1]
1706  msg = f"Simulated/expected avg. flux: {flux:.1f}, {(means[flux][-1]/2):.1f}"
1707  logger.info(msg)
1708  logger.info(f"Bias: {bias:.6f}")
1709  biases[flux].append(bias)
1710 
1711  return biases, means, xcorrs
ast::append
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33
lsst.cp.pipe.makeBrighterFatterKernel.calcBiasCorr
def calcBiasCorr(fluxLevels, imageShape, repeats=1, seed=0, addCorrelations=False, correlationStrength=0.1, maxLag=10, nSigmaClip=5, border=10, logger=None)
Definition: makeBrighterFatterKernel.py:1615