2014-07-26 162 views
1

我不断收到以下错误运行脚本时保存动画:FFT运行时错误在运行Galsim

RuntimeError: SB Error: fourierDraw() requires an FFT that is too large, 6144 
If you can handle the large FFT, you may update gsparams.maximum_fft_size. 

于是我走进/Galsim/include/galsim/GSparams.h

和我从maximum_fft_size改变以下

maximum_fft_size(16384)(4096)

或2^14从2^12。

我仍然得到和以前一样的错误。我应该重新启动我的机器吗?

回答

1

这不是要在哪里更改maximum_fft_size参数。有关如何使用GSParams对象和更新参数的示例,请参见demo7。 GSObject的文档字符串中也有一个示例:

>>> gal = galsim.Sersic(n=4, half_light_radius=4.3) 
    >>> psf = galsim.Moffat(beta=3, fwhm=2.85) 
    >>> conv = galsim.Convolve([gal,psf]) 
    >>> im = galsim.Image(1000,1000, scale=0.05)  # Note the very small pixel scale! 
    >>> im = conv.drawImage(image=im)     # This uses the default GSParams. 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
     File "galsim/base.py", line 1236, in drawImage 
     image.added_flux = prof.SBProfile.draw(imview.image, gain, wmult) 
    RuntimeError: SB Error: fourierDraw() requires an FFT that is too large, 6144 
    If you can handle the large FFT, you may update gsparams.maximum_fft_size. 
    >>> big_fft_params = galsim.GSParams(maximum_fft_size=10240) 
    >>> conv = galsim.Convolve([gal,psf],gsparams=big_fft_params) 
    >>> im = conv.drawImage(image=im)     # Now it works (but is slow!) 
    >>> im.write('high_res_sersic.fits') 
+0

感谢@Mike Jarvis!应该现在工作。 – alvarezcl