GALSIM: использование класса интерполированных изображений без указания нормализации потока
Для проекта, который я предпринимаю, мне нужно будет рассчитать производную от заданного профиля поверхностной яркости, которая свернута с функцией отклика пикселей (а также PSF и т. Д.)
По разным причинам, но главным образом для согласованности, я хочу сделать это, используя внутренности кода GALSIM. Однако, поскольку в этом случае "поток", определенный как сумма непараметрической модели, больше не имеет физического смысла с точки зрения самого изображения (в этом случае он всегда будет считаться бесшумным), существуют определенные ситуации, в которых я хотел бы иметь возможность определять интерполированное изображение без нормализации потока.
Код, кажется, не заботится, если "поток" отрицателен, но я сталкиваюсь с определенными ситуациями, когда "поток" находится в пределах точности станка, равной нулю, и, таким образом, утверждение ``dabs(flux-flux_tot) <= dabs(flux_tot)'' терпит неудачу.
Поэтому мой вопрос: можно ли указать непараметрическую модель для интерполяции без указания значения нормализации потока?
1 ответ
В настоящее время нет способа сделать это с помощью класса galsim.InterpolatedImage(); Вы можете открыть вопрос, чтобы сделать этот запрос в репозитории GalSim на GitHub.
Есть способ сделать это, используя мужество GalSim; Пример иллюстрируется функциональностью спектра мощности линзирования, если вы хотите копаться в исходном коде (lensing_ps.py - просто выполните поиск SBInterpolatedImage, чтобы найти соответствующие биты кода). Основная идея состоит в том, что вместо использования galsim.InterpolatedImage() вы используете связанный класс C++, galsim._galsim.SBInterpolatedImage(), который доступен в python. SBInterpolatedImage можно инициализировать с помощью изображения и выбора интерполантов в реальном и фурье-пространстве, как показано в примерах в lensing_ps.py, а затем запросить его с помощью метода xValue(), чтобы получить значение, интерполированное в какую-то позицию.
Этот трюк был необходим в lensing_ps.py, потому что мы интерполировали поля сдвига, которые, как правило, имеют среднее значение нуля, поэтому мы столкнулись с той же проблемой, что и вы. Использование класса SBInterpolatedImage, как правило, не рекомендуется для пользователей GalSim (мы рекомендуем использовать только классы Python), но на данный момент это определенно способ обойти вашу проблему.