LSSTApplications  21.0.0+1b62c9342b,21.0.0+45a059f35e,21.0.0-1-ga51b5d4+ceb9cf20a3,21.0.0-19-g7c7630f+a88ebbf2d9,21.0.0-2-g103fe59+3522cf3bc7,21.0.0-2-g1367e85+571a348718,21.0.0-2-g2909d54+45a059f35e,21.0.0-2-g45278ab+1b62c9342b,21.0.0-2-g4bc9b9f+35a70d5868,21.0.0-2-g5242d73+571a348718,21.0.0-2-g54e2caa+aa129c4686,21.0.0-2-g66bcc37+3caef57c29,21.0.0-2-g7f82c8f+6f9059e2fe,21.0.0-2-g8dde007+5d1b9cb3f5,21.0.0-2-g8f08a60+73884b2cf5,21.0.0-2-g973f35b+1d054a08b9,21.0.0-2-ga326454+6f9059e2fe,21.0.0-2-ga63a54e+3d2c655db6,21.0.0-2-gc738bc1+a567cb0f17,21.0.0-2-gde069b7+5a8f2956b8,21.0.0-2-ge17e5af+571a348718,21.0.0-2-ge712728+834f2a3ece,21.0.0-2-gecfae73+dfe6e80958,21.0.0-2-gfc62afb+571a348718,21.0.0-21-g006371a9+88174a2081,21.0.0-3-g4c5b185+7fd31a6834,21.0.0-3-g6d51c4a+3caef57c29,21.0.0-3-gaa929c8+55f5a6a5c9,21.0.0-3-gd222c45+afc8332dbe,21.0.0-3-gd5de2f2+3caef57c29,21.0.0-4-g3300ddd+1b62c9342b,21.0.0-4-g5873dc9+9a92674037,21.0.0-4-g8a80011+5955f0fd15,21.0.0-5-gb7080ec+8658c79ec4,21.0.0-5-gcff38f6+89f2a0074d,21.0.0-6-gd3283ba+55f5a6a5c9,21.0.0-8-g19111d86+2c4b0a9f47,21.0.0-9-g7bed000b9+c7d3cce47e,w.2021.03
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | List of all members
lsst.cp.pipe.astierCovPtcUtils.CovFft Class Reference

Public Member Functions

def __init__ (self, diff, w, fftShape, maxRangeCov)
 
def cov (self, dx, dy)
 
def reportCovFft (self, maxRange)
 

Public Attributes

 pCov
 
 pMean
 
 pCount
 

Detailed Description

A class to compute (via FFT) the nearby pixels correlation function.

Implements appendix of Astier+19.

Parameters
----------
diff: `numpy.array`
    Image where to calculate the covariances (e.g., the difference image of two flats).

w: `numpy.array`
    Weight image (mask): it should consist of 1's (good pixel) and 0's (bad pixels).

fftShape: `tuple`
    2d-tuple with the shape of the FFT

maxRangeCov: `int`
    Maximum range for the covariances.

Definition at line 28 of file astierCovPtcUtils.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.cp.pipe.astierCovPtcUtils.CovFft.__init__ (   self,
  diff,
  w,
  fftShape,
  maxRangeCov 
)

Definition at line 48 of file astierCovPtcUtils.py.

48  def __init__(self, diff, w, fftShape, maxRangeCov):
49  # check that the zero padding implied by "fft_shape"
50  # is large enough for the required correlation range
51  assert(fftShape[0] > diff.shape[0]+maxRangeCov+1)
52  assert(fftShape[1] > diff.shape[1]+maxRangeCov+1)
53  # for some reason related to numpy.fft.rfftn,
54  # the second dimension should be even, so
55  if fftShape[1]%2 == 1:
56  fftShape = (fftShape[0], fftShape[1]+1)
57  tIm = np.fft.rfft2(diff*w, fftShape)
58  tMask = np.fft.rfft2(w, fftShape)
59  # sum of "squares"
60  self.pCov = np.fft.irfft2(tIm*tIm.conjugate())
61  # sum of values
62  self.pMean = np.fft.irfft2(tIm*tMask.conjugate())
63  # number of w!=0 pixels.
64  self.pCount = np.fft.irfft2(tMask*tMask.conjugate())
65 

Member Function Documentation

◆ cov()

def lsst.cp.pipe.astierCovPtcUtils.CovFft.cov (   self,
  dx,
  dy 
)
Covariance for dx,dy averaged with dx,-dy if both non zero.

Implements appendix of Astier+19.

Parameters
----------
dx: `int`
   Lag in x

dy: `int
   Lag in y

Returns
-------
0.5*(cov1+cov2): `float`
    Covariance at (dx, dy) lag

npix1+npix2: `int`
    Number of pixels used in covariance calculation.

Definition at line 66 of file astierCovPtcUtils.py.

66  def cov(self, dx, dy):
67  """Covariance for dx,dy averaged with dx,-dy if both non zero.
68 
69  Implements appendix of Astier+19.
70 
71  Parameters
72  ----------
73  dx: `int`
74  Lag in x
75 
76  dy: `int
77  Lag in y
78 
79  Returns
80  -------
81  0.5*(cov1+cov2): `float`
82  Covariance at (dx, dy) lag
83 
84  npix1+npix2: `int`
85  Number of pixels used in covariance calculation.
86  """
87  # compensate rounding errors
88  nPix1 = int(round(self.pCount[dy, dx]))
89  cov1 = self.pCov[dy, dx]/nPix1-self.pMean[dy, dx]*self.pMean[-dy, -dx]/(nPix1*nPix1)
90  if (dx == 0 or dy == 0):
91  return cov1, nPix1
92  nPix2 = int(round(self.pCount[-dy, dx]))
93  cov2 = self.pCov[-dy, dx]/nPix2-self.pMean[-dy, dx]*self.pMean[dy, -dx]/(nPix2*nPix2)
94  return 0.5*(cov1+cov2), nPix1+nPix2
95 

◆ reportCovFft()

def lsst.cp.pipe.astierCovPtcUtils.CovFft.reportCovFft (   self,
  maxRange 
)
Produce a list of tuples with covariances.

Implements appendix of Astier+19.

Parameters
----------
maxRange: `int`
    Maximum range of covariances.

Returns
-------
tupleVec: `list`
    List with covariance tuples.

Definition at line 96 of file astierCovPtcUtils.py.

96  def reportCovFft(self, maxRange):
97  """Produce a list of tuples with covariances.
98 
99  Implements appendix of Astier+19.
100 
101  Parameters
102  ----------
103  maxRange: `int`
104  Maximum range of covariances.
105 
106  Returns
107  -------
108  tupleVec: `list`
109  List with covariance tuples.
110  """
111  tupleVec = []
112  # (dy,dx) = (0,0) has to be first
113  for dy in range(maxRange+1):
114  for dx in range(maxRange+1):
115  cov, npix = self.cov(dx, dy)
116  if (dx == 0 and dy == 0):
117  var = cov
118  tupleVec.append((dx, dy, var, cov, npix))
119  return tupleVec
120 
121 

Member Data Documentation

◆ pCount

lsst.cp.pipe.astierCovPtcUtils.CovFft.pCount

Definition at line 64 of file astierCovPtcUtils.py.

◆ pCov

lsst.cp.pipe.astierCovPtcUtils.CovFft.pCov

Definition at line 60 of file astierCovPtcUtils.py.

◆ pMean

lsst.cp.pipe.astierCovPtcUtils.CovFft.pMean

Definition at line 62 of file astierCovPtcUtils.py.


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