Интерполяция параметров PSF с помощью galsim
Я надеюсь, что смогу использовать Galsim для тестирования различных методов интерполяции PSF. Я хочу сгенерировать изображение с галактиками, сэмплировать PSF в различных точках и интерполировать PSF в местоположениях галактик. Примеры демонстрируют, как генерировать PSF в определенном месте - возможно ли сгенерировать PSF по изображению и сэмплировать его в разных точках? Веб-страница Great03 galsim обещает "Реалистичный шум с пространственными корреляциями", что звучит многообещающе!
1 ответ
Пожалуйста, посмотрите на demo10 в каталоге примеров GalSim. Этот пример включает в себя PSF, который зависит от положения.
Основная идея заключается в том, что параметры модели PSF будут функциями (x,y), и тогда вы создадите модель PSF в месте расположения вашей галактики. Например (из demo10.py):
pos = b.trueCenter() - im_center
pos = galsim.PositionD(pos.x * pixel_scale , pos.y * pixel_scale)
# The image comes out as about 211 arcsec across, so we define our variable
# parameters in terms of (r/100 arcsec), so roughly the scale size of the image.
r = math.sqrt(pos.x**2 + pos.y**2) / 100
psf_fwhm = 0.9 + 0.5 * r**2 # arcsec
psf_e = 0.4 * r**1.5
psf_beta = (math.atan2(pos.y,pos.x) + math.pi/2) * galsim.radians
# Define the PSF profile
psf = galsim.Gaussian(fwhm=psf_fwhm)
psf.applyShear(e=psf_e, beta=psf_beta)
Вы также можете сделать то же самое с методом файла конфигурации. Вот соответствующая часть demo10.yaml:
psf :
type : Gaussian
fwhm :
type : Eval
str : '0.9 + 0.5 * (sky_pos.x**2 + sky_pos.y**2) / 100**2'
ellip:
type : EBeta
e :
type : Eval
fr : { type : Eval , str : '(sky_pos.x**2 + sky_pos.y**2)**0.5' }
str : '0.4 * (r/100)**1.5'
beta:
type : Eval
str : '(math.atan2(sky_pos.y,sky_pos.x) + math.pi/2.) * galsim.radians'
Переменная PSF, используемая для испытания Great3, делала в основном это, но с гораздо более сложной моделью PSF.