LSST Applications  21.0.0-131-g8cabc107+528f53ee53,22.0.0+00495a2688,22.0.0+0ef2527977,22.0.0+11a2aa21cd,22.0.0+269b7e55e3,22.0.0+2c6b6677a3,22.0.0+64c1bc5aa5,22.0.0+7b3a3f865e,22.0.0+e1b6d2281c,22.0.0+ff3c34362c,22.0.1-1-g1b65d06+c95cbdf3df,22.0.1-1-g7058be7+1cf78af69b,22.0.1-1-g7dab645+2a65e40b06,22.0.1-1-g8760c09+64c1bc5aa5,22.0.1-1-g949febb+64c1bc5aa5,22.0.1-1-ga324b9c+269b7e55e3,22.0.1-1-gf9d8b05+ff3c34362c,22.0.1-10-g781e53d+9b51d1cd24,22.0.1-10-gba590ab+b9624b875d,22.0.1-13-g76f9b8d+2c6b6677a3,22.0.1-14-g22236948+57af756299,22.0.1-18-g3db9cf4b+9b7092c56c,22.0.1-18-gb17765a+2264247a6b,22.0.1-2-g8ef0a89+2c6b6677a3,22.0.1-2-gcb770ba+c99495d3c6,22.0.1-24-g2e899d296+4206820b0d,22.0.1-3-g7aa11f2+2c6b6677a3,22.0.1-3-g8c1d971+f253ffa91f,22.0.1-3-g997b569+ff3b2f8649,22.0.1-4-g1930a60+6871d0c7f6,22.0.1-4-g5b7b756+6b209d634c,22.0.1-6-ga02864e+6871d0c7f6,22.0.1-7-g3402376+a1a2182ac4,22.0.1-7-g65f59fa+54b92689ce,master-gcc5351303a+e1b6d2281c,w.2021.32
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
lsst.cp.pipe.ptc.astierCovPtcUtils.CovFastFourierTransform Class Reference

Public Member Functions

def __init__ (self, diff, w, fftShape, maxRangeCov)
 
def cov (self, dx, dy)
 
def reportCovFastFourierTransform (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.ptc.astierCovPtcUtils.CovFastFourierTransform.__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.ptc.astierCovPtcUtils.CovFastFourierTransform.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 

◆ reportCovFastFourierTransform()

def lsst.cp.pipe.ptc.astierCovPtcUtils.CovFastFourierTransform.reportCovFastFourierTransform (   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 reportCovFastFourierTransform(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.ptc.astierCovPtcUtils.CovFastFourierTransform.pCount

Definition at line 64 of file astierCovPtcUtils.py.

◆ pCov

lsst.cp.pipe.ptc.astierCovPtcUtils.CovFastFourierTransform.pCov

Definition at line 60 of file astierCovPtcUtils.py.

◆ pMean

lsst.cp.pipe.ptc.astierCovPtcUtils.CovFastFourierTransform.pMean

Definition at line 62 of file astierCovPtcUtils.py.


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