LSSTApplications  17.0+10,17.0+51,17.0+88,18.0.0+10,18.0.0+15,18.0.0+34,18.0.0+4,18.0.0+6,18.0.0-2-ge43143a+6,18.1.0-1-g0001055+2,18.1.0-1-g0896a44+10,18.1.0-1-g1349e88+9,18.1.0-1-g2505f39+7,18.1.0-1-g380d4d4+9,18.1.0-1-g5e4b7ea+2,18.1.0-1-g7e8fceb,18.1.0-1-g85f8cd4+7,18.1.0-1-g9a6769a+3,18.1.0-1-ga1a4c1a+6,18.1.0-1-gc037db8+2,18.1.0-1-gd55f500+3,18.1.0-1-ge10677a+7,18.1.0-10-g73b8679e+12,18.1.0-12-gf30922b,18.1.0-13-g451e75588,18.1.0-13-gbfe7f7f,18.1.0-2-g31c43f9+7,18.1.0-2-g9c63283+9,18.1.0-2-gdf0b915+9,18.1.0-2-gf03bb23+2,18.1.0-3-g52aa583+3,18.1.0-3-g8f4a2b1+1,18.1.0-3-g9cb968e+8,18.1.0-4-g7bbbad0,18.1.0-5-g510c42a+8,18.1.0-5-ga46117f,18.1.0-5-gaeab27e+9,18.1.0-6-gdda7f3e+11,18.1.0-8-g4084bf03+1,w.2019.34
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