Расшифровка ошибок, связанных с одновременной подгонкой к галактикам в Галсиме

Я приспосабливаюсь к галактикам в galsim и получаю следующие ошибки:

File "/home/luis/Documents/SRC2014/galsim_work/noiseLibrary.py", line 50, in create_galaxy
gal = gal.shear(g1=e1, g2=e2)

File "/usr/lib/python2.7/dist-packages/galsim/base.py", line 572, in shear
shear = galsim.Shear(**kwargs)

File "/usr/lib/python2.7/dist-packages/galsim/shear.py", line 111, in __init__
raise ValueError("Requested shear exceeds 1: %f"%g)

ValueError: Requested shear exceeds 1: 1.007171

Я попытался исправить это, проверив значения e1 и e2 и величину в моей программе, которая создает галактики, следующим образом:

if e1 > 1:
     print "The e1 component of ellipticity is greater than 1."
     e1 = 0.99
elif e1 < -1:
     print "The e1 component of ellipticity is less than -1."
     e1 = -0.99
if e2 > 1:
     print "The e2 component of ellipticity is greater than 1."
     e2 + 0.99
elif e2 < -1:
     print "The e2 component of ellipticity is less than -1."
     e2 = -0.99

if np.sqrt(e1**2 + e2**2) > 1:
     return create_galaxy(flux, hlr, e1*0.5, e2*0.5, galtype_gal=galtype_gal, sersic_index=sersic_index,
                          psf_flag=psf_flag, psf_type=psf_type, beta=beta, size_psf=size_psf, flux_psf=flux_psf,
                          x_len=x_len, y_len=y_len, scale=scale, method=method,seed=seed)

хотя это решение работает для отдельных компонентов, я подозреваю, что рекурсивный вызов создает следующую ошибку:

File "/usr/lib/python2.7/dist-packages/galsim/base.py", line 1196, in drawImage
image.added_flux = prof.SBProfile.draw(imview.image, gain, wmult)

MemoryError

Любые рекомендации о том, как пойти по этому поводу? Обратите внимание, что я ограничиваю e1 и e2 в диапазоне от -1 до 1 для моей подходящей параметризации. Я подозреваю, что я должен ограничивать величину моей эллиптичности (чтобы она была привязана к единичному кругу), а не к квадрату единицы.

Спасибо!

1 ответ

Решение

Вы правы в том, что эллиптичность должна быть ограничена в круге единиц, поэтому отдельные границы для каждого компонента не будут работать. Это является причиной для ValueError о запрошенном сдвиге, превышающем 1.

Тем не менее, ошибка памяти трудно диагностировать в отсутствие более подробной информации. Это происходит все время или только время от времени? Можете ли вы дать нам короткий сценарий, который воспроизводит эту ошибку, включая конкретные значения для всех параметров galaxy и PSF и команды, которые вы используете для создания рисуемого объекта?

Другие вопросы по тегам