@@ -1923,13 +1923,13 @@ def _find_maxk(kim, thresh, count_thresh=True):
19231923 norm_kval = kim (ix , iy )
19241924 norm_kval = (norm_kval * norm_kval .conjugate ()).real
19251925
1926- iy += 1
1927-
19281926 if norm_kval > thresh :
19291927 maxk_ix = ix
19301928 n_below_thresh = 0
19311929 break
19321930
1931+ iy += 1
1932+
19331933 if count_thresh :
19341934 if norm_kval <= thresh :
19351935 n_below_thresh += 1
@@ -1950,12 +1950,10 @@ def test_interpolatedimage_maxk_python():
19501950 # space image of 4 pixels where pixels go above and below the
19511951 # maxk threshold. Four pixels is exactly the gap needed to trigger
19521952 # the bug in the maxk code we are testing for.
1953- im = galsim .Gaussian (fwhm = 0.9 ).drawImage (scale = 0.2 )
1953+ im = galsim .Gaussian (fwhm = 0.9 / 0.2 ).drawImage (scale = 1 )
19541954 iim = galsim .InterpolatedImage (im )
1955- orig_maxk = iim .maxk
1956- kim = iim ._xim .copy ()
1957- kim .wcs = galsim .PixelScale (1.0 )
1958- kim = kim .calculate_fft ()
1955+ xim = iim ._xim .copy ()
1956+ kim = xim .calculate_fft ()
19591957 kx , ky = kim .get_pixel_centers ()
19601958 kx *= kim .scale
19611959 ky *= kim .scale
@@ -1964,12 +1962,26 @@ def test_interpolatedimage_maxk_python():
19641962 maxk_ix = np .floor (maxk_py / kim .scale ).astype (int )
19651963 kim [maxk_ix , maxk_ix + 4 ] = kim [0 , 0 ].real * 0.1
19661964
1965+ new_im = kim .calculate_inverse_fft ()
1966+ sbii = galsim ._galsim .SBInterpolatedImage (
1967+ new_im ._image ,
1968+ new_im .bounds ._b ,
1969+ iim ._pad_image .bounds ._b ,
1970+ iim ._x_interpolant ._i ,
1971+ iim ._k_interpolant ._i ,
1972+ 0 ,
1973+ 0 ,
1974+ iim .gsparams ._gsp ,
1975+ )
1976+
19671977 maxk_py_false = _find_maxk (kim , thresh , count_thresh = False ) / im .wcs ._maxScale ()
19681978 maxk_py_true = _find_maxk (kim , thresh , count_thresh = True ) / im .wcs ._maxScale ()
1979+ sbii .calculateMaxK (0 )
1980+ sbii_maxk = sbii .maxK ()
19691981
1970- print ("galsim|pybuggy|pyfixed:" , orig_maxk , maxk_py_false , maxk_py_true )
1971- assert maxk_py_false != maxk_py_true
1972- assert orig_maxk == maxk_py_true
1982+ print ("galsim|pybuggy|pyfixed:" , sbii_maxk , maxk_py_false , maxk_py_true )
1983+ assert np . abs ( maxk_py_false - maxk_py_true ) >= kim . scale
1984+ np . testing . assert_allclose ( sbii_maxk , maxk_py_true , atol = 1e-12 , rtol = 0 )
19731985
19741986
19751987if __name__ == "__main__" :
0 commit comments