LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | List of all members
lsst.ip.diffim.diffimTools.NbasisEvaluator Class Reference
Inheritance diagram for lsst.ip.diffim.diffimTools.NbasisEvaluator:

Public Member Functions

def __init__
 
def __call__
 

Public Attributes

 psfMatchConfig
 
 psfFwhmPixTc
 
 psfFwhmPixTnc
 

Detailed Description

A functor to evaluate the Bayesian Information Criterion for the number of basis sets going into the kernel fitting

Definition at line 387 of file diffimTools.py.

Constructor & Destructor Documentation

def lsst.ip.diffim.diffimTools.NbasisEvaluator.__init__ (   self,
  psfMatchConfig,
  psfFwhmPixTc,
  psfFwhmPixTnc 
)

Definition at line 389 of file diffimTools.py.

390  def __init__(self, psfMatchConfig, psfFwhmPixTc, psfFwhmPixTnc):
391  self.psfMatchConfig = psfMatchConfig
392  self.psfFwhmPixTc = psfFwhmPixTc
393  self.psfFwhmPixTnc = psfFwhmPixTnc
394  if not self.psfMatchConfig.kernelBasisSet == "alard-lupton":
395  raise RuntimeError, "BIC only implemnted for AL (alard lupton) basis"

Member Function Documentation

def lsst.ip.diffim.diffimTools.NbasisEvaluator.__call__ (   self,
  kernelCellSet,
  log 
)

Definition at line 396 of file diffimTools.py.

397  def __call__(self, kernelCellSet, log):
398  d1, d2, d3 = self.psfMatchConfig.alardDegGauss
399  bicArray = {}
400  for d1i in range(1, d1+1):
401  for d2i in range(1, d2+1):
402  for d3i in range(1, d3+1):
403  dList = [d1i, d2i, d3i]
404  bicConfig = type(self.psfMatchConfig)(self.psfMatchConfig, alardDegGauss=dList)
405  kList = makeKernelBasisList(bicConfig, self.psfFwhmPixTc, self.psfFwhmPixTnc)
406  k = len(kList)
407  visitor = diffimLib.BuildSingleKernelVisitorF(kList, pexConfig.makePolicy(bicConfig))
408  visitor.setSkipBuilt(False)
409  kernelCellSet.visitCandidates(visitor, bicConfig.nStarPerCell)
410 
411  for cell in kernelCellSet.getCellList():
412  for cand in cell.begin(False): # False = include bad candidates
413  cand = diffimLib.cast_KernelCandidateF(cand)
414  if cand.getStatus() != afwMath.SpatialCellCandidate.GOOD:
415  continue
416  diffIm = cand.getDifferenceImage(diffimLib.KernelCandidateF.RECENT)
417  bbox = cand.getKernel(diffimLib.KernelCandidateF.RECENT).shrinkBBox(diffIm.getBBox(afwImage.LOCAL))
418  diffIm = type(diffIm)(diffIm, bbox, True)
419  chi2 = diffIm.getImage().getArray()**2 / diffIm.getVariance().getArray()
420  n = chi2.shape[0] * chi2.shape[1]
421  bic = np.sum(chi2) + k * np.log(n)
422  if not bicArray.has_key(cand.getId()):
423  bicArray[cand.getId()] = {}
424  bicArray[cand.getId()][(d1i, d2i, d3i)] = bic
425 
426  bestConfigs = []
427  candIds = bicArray.keys()
428  for candId in candIds:
429  cconfig, cvals = bicArray[candId].keys(), bicArray[candId].values()
430  idx = np.argsort(cvals)
431  bestConfig = cconfig[idx[0]]
432  bestConfigs.append(bestConfig)
433 
434  counter = Counter(bestConfigs).most_common(3)
435  log.info("B.I.C. prefers basis complexity %s %d times; %s %d times; %s %d times" % (counter[0][0], counter[0][1],
436  counter[1][0], counter[1][1],
437  counter[2][0], counter[2][1]))
438  return counter[0][0], counter[1][0], counter[2][0]

Member Data Documentation

lsst.ip.diffim.diffimTools.NbasisEvaluator.psfFwhmPixTc

Definition at line 391 of file diffimTools.py.

lsst.ip.diffim.diffimTools.NbasisEvaluator.psfFwhmPixTnc

Definition at line 392 of file diffimTools.py.

lsst.ip.diffim.diffimTools.NbasisEvaluator.psfMatchConfig

Definition at line 390 of file diffimTools.py.


The documentation for this class was generated from the following file: