Changes in PSF from Eigen 3.2.0 to 3.2.5

pipe_tasks tests/testProcessCcd.py runs ProcessCcdTask obs_test’s data for visit 1. When we switched from Eigen 3.2.0 to 3.2.5 this changed the values computed by that test. Tim Jenness posted the following values in DM-3699:

Results with Eigen 3.2.5 (identical on MacOS and Linux):

background mean = 327.61695151065607, stdDev = 0.40081096398879795
len(icSrc) : 28
numGoodPix = 1953514
image mean = 1.7045581411166495, stdDev = 163.66290334994014
variance mean = 212.5416436210289, stdDev = 121.25084470503148
psf Ixx = 2.790601924907123, Iyy = 2.1989110429762513, Ixy = 0.16599586021207952

Results on MacOS using Eigen 3.2.0 (results on Linux are slightly different):

background mean = 327.6174259770811, stdDev = 0.40092292423115011
len(icSrc) : 28
numGoodPix = 1953741
image mean = 1.7040836829913804, stdDev = 163.66290022176776
variance mean = 212.5416436210289, stdDev = 121.25084470503148
psf Ixx = 2.70878038061245, Iyy = 2.337206373864037, Ixy = 0.6668964779553879

By far the largest change is in the PSF shape parameters. For the record I am making the old and new psf fits files and images of the PSFs available.
psfImage_eigen_3_2_5.fits (11.3 KB)psfImage_eigen_3_2_0.fits (11.3 KB)psf_eigen_3_2_5.fits (59.1 KB)psf_eigen_3_2_0.fits (59.1 KB)

The psfImage_eigen_… fits files are FITS images of the PSF at the default location.

The psf_eigen… fits files are persisted PcaPsf objects which can be unpersisted as follows:

from lsst.meas.algorithms import PcaPsf
psf = PcaPsf.readFits(path)

I’d have thought that this was a JIRA topic rather than a discourse one. Someone needs to go into the code with a debugger and sort out what exactly eigen is doing different (e.g. it’s a in the eigenvalues of the following nearly-singular matrix …)

It was all discussed in a JIRA topic: DM-3699 covered the discussion.