LSSTApplications  17.0+124,17.0+14,17.0+73,18.0.0+37,18.0.0+80,18.0.0-4-g68ffd23+4,18.1.0-1-g0001055+12,18.1.0-1-g03d53ef+5,18.1.0-1-g1349e88+55,18.1.0-1-g2505f39+44,18.1.0-1-g5315e5e+4,18.1.0-1-g5e4b7ea+14,18.1.0-1-g7e8fceb+4,18.1.0-1-g85f8cd4+48,18.1.0-1-g8ff0b9f+4,18.1.0-1-ga2c679d+1,18.1.0-1-gd55f500+35,18.1.0-10-gb58edde+2,18.1.0-11-g0997b02+4,18.1.0-13-gfe4edf0b+12,18.1.0-14-g259bd21+21,18.1.0-19-gdb69f3f+2,18.1.0-2-g5f9922c+24,18.1.0-2-gd3b74e5+11,18.1.0-2-gfbf3545+32,18.1.0-26-g728bddb4+5,18.1.0-27-g6ff7ca9+2,18.1.0-3-g52aa583+25,18.1.0-3-g8ea57af+9,18.1.0-3-gb69f684+42,18.1.0-3-gfcaddf3+6,18.1.0-32-gd8786685a,18.1.0-4-gf3f9b77+6,18.1.0-5-g1dd662b+2,18.1.0-5-g6dbcb01+41,18.1.0-6-gae77429+3,18.1.0-7-g9d75d83+9,18.1.0-7-gae09a6d+30,18.1.0-9-gc381ef5+4,w.2019.45
LSSTDataManagementBasePackage
Classes | Functions
lsst.cp.pipe.makeBrighterFatterKernel Namespace Reference

Classes

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)
 

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 
)
Calculate the bias induced when sigma-clipping non-Gassian 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 simiulate.
    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

Returns:
--------
biases : `dict` of `list` of `float`
    A dictionary, keyed by flux level, containing a list of the biases
    for each repeat at that flux level
means : `dict` of `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` of `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 1218 of file makeBrighterFatterKernel.py.

1218  correlationStrength=0.1, maxLag=10, nSigmaClip=5, border=10):
1219  """Calculate the bias induced when sigma-clipping non-Gassian distributions.
1220 
1221  Fill image-pairs of the specified size with Poisson-distributed values,
1222  adding correlations as necessary. Then calculate the cross correlation,
1223  and calculate the bias induced using the cross-correlation image
1224  and the image means.
1225 
1226  Parameters:
1227  -----------
1228  fluxLevels : `list` of `int`
1229  The mean flux levels at which to simiulate.
1230  Nominal values might be something like [70000, 90000, 110000]
1231  imageShape : `tuple` of `int`
1232  The shape of the image array to simulate, nx by ny pixels.
1233  repeats : `int`, optional
1234  Number of repeats to perform so that results
1235  can be averaged to improve SNR.
1236  seed : `int`, optional
1237  The random seed to use for the Poisson points.
1238  addCorrelations : `bool`, optional
1239  Whether to add brighter-fatter-like correlations to the simulated images
1240  If true, a correlation between x_{i,j} and x_{i+1,j+1} is introduced
1241  by adding a*x_{i,j} to x_{i+1,j+1}
1242  correlationStrength : `float`, optional
1243  The strength of the correlations.
1244  This is the value of the coefficient `a` in the above definition.
1245  maxLag : `int`, optional
1246  The maximum lag to work to in pixels
1247  nSigmaClip : `float`, optional
1248  Number of sigma to clip to when calculating the sigma-clipped mean.
1249  border : `int`, optional
1250  Number of border pixels to mask
1251 
1252  Returns:
1253  --------
1254  biases : `dict` of `list` of `float`
1255  A dictionary, keyed by flux level, containing a list of the biases
1256  for each repeat at that flux level
1257  means : `dict` of `list` of `float`
1258  A dictionary, keyed by flux level, containing a list of the average mean
1259  fluxes (average of the mean of the two images)
1260  for the image pairs at that flux level
1261  xcorrs : `dict` of `list` of `np.ndarray`
1262  A dictionary, keyed by flux level, containing a list of the xcorr
1263  images for the image pairs at that flux level
1264  """
1265  means = {f: [] for f in fluxLevels}
1266  xcorrs = {f: [] for f in fluxLevels}
1267  biases = {f: [] for f in fluxLevels}
1268 
1269  config = MakeBrighterFatterKernelTaskConfig()
1270  config.isrMandatorySteps = [] # no isr but the validation routine is still run
1271  config.isrForbiddenSteps = []
1272  config.nSigmaClipXCorr = nSigmaClip
1273  config.nPixBorderXCorr = border
1274  config.maxLag = maxLag
1275  task = MakeBrighterFatterKernelTask(config=config)
1276 
1277  im0 = afwImage.maskedImage.MaskedImageF(imageShape[1], imageShape[0])
1278  im1 = afwImage.maskedImage.MaskedImageF(imageShape[1], imageShape[0])
1279 
1280  random = np.random.RandomState(seed)
1281 
1282  for rep in range(repeats):
1283  for flux in fluxLevels:
1284  data0 = random.poisson(flux, (imageShape)).astype(float)
1285  data1 = random.poisson(flux, (imageShape)).astype(float)
1286  if addCorrelations:
1287  data0[1:, 1:] += correlationStrength*data0[: -1, : -1]
1288  data1[1:, 1:] += correlationStrength*data1[: -1, : -1]
1289  im0.image.array[:, :] = data0
1290  im1.image.array[:, :] = data1
1291 
1292  _xcorr, _means = task._crossCorrelate(im0, im1, runningBiasCorrSim=True)
1293 
1294  means[flux].append(_means)
1295  xcorrs[flux].append(_xcorr)
1296  if addCorrelations:
1297  bias = xcorrs[flux][-1][1, 1]/means[flux][-1]*(1 + correlationStrength)/correlationStrength
1298  print("Simulated/expected avg. flux: %.1f, %.1f" % (flux, means[flux][-1]/2))
1299  print("Bias: %.6f" % bias)
1300  else:
1301  bias = xcorrs[flux][-1][0, 0]/means[flux][-1]
1302  print("Simulated/expected avg. flux: %.1f, %.1f" % (flux, means[flux][-1]/2))
1303  print("Bias: %.6f" % bias)
1304  biases[flux].append(bias)
1305 
1306  return biases, means, xcorrs
1307 
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33