GALSIM:使用插值图像 class 而不指定通量归一化
GALSIM: Using interpolated image class without specifying flux normalisation
对于我正在进行的项目,我需要计算与像素响应函数(以及 PSF 等)卷积的给定表面亮度分布的导数
出于各种原因,但主要是为了保持一致性,我希望使用 GALSIM 代码的核心来做到这一点。然而,由于在这种情况下定义为非参数模型总和的“通量”就图像本身而言不再具有物理意义(在这种情况下它总是被认为是无噪声的),所以有一定的我希望能够在没有通量归一化的情况下定义插值图像的情况。
代码似乎并不关心 'flux' 是否为负数,但我遇到了某些情况,其中 'flux' 在机器精度为零的范围内,因此断言``dabs (flux-flux_tot) <= dabs(flux_tot)'' 失败。
因此我的问题是:是否可以在不指定通量归一化值的情况下指定一个非参数模型进行插值?
目前无法使用 galsim.InterpolatedImage() class;您可以在 GitHub.
上的 GalSim 存储库中提出一个问题来提出此功能请求
有一种方法可以使用 GalSim 的内核来做到这一点;如果您愿意深入研究源代码(lensing_ps.py——只需搜索 SBInterpolatedImage 即可找到相关的代码位),透镜功率谱功能中会举例说明。基本思想是不使用 galsim.InterpolatedImage(),而是使用关联的 C++ class、galsim._galsim.SBInterpolatedImage(),它们可在 python 中访问。 SBInterpolatedImage 可以用图像和实数和傅立叶插值选择进行初始化 space,如 lensing_ps.py 中的示例所示,然后使用 xValue() 方法查询以获得插值值到某个位置。
这个技巧在 lensing_ps.py 中是必要的,因为我们插值的剪切场的平均值往往为零,所以我们 运行 解决了与您相同的问题。通常不建议 GalSim 用户使用 SBInterpolatedImage class(我们建议仅使用 python classes),但它现在绝对是解决您问题的方法。
对于我正在进行的项目,我需要计算与像素响应函数(以及 PSF 等)卷积的给定表面亮度分布的导数
出于各种原因,但主要是为了保持一致性,我希望使用 GALSIM 代码的核心来做到这一点。然而,由于在这种情况下定义为非参数模型总和的“通量”就图像本身而言不再具有物理意义(在这种情况下它总是被认为是无噪声的),所以有一定的我希望能够在没有通量归一化的情况下定义插值图像的情况。
代码似乎并不关心 'flux' 是否为负数,但我遇到了某些情况,其中 'flux' 在机器精度为零的范围内,因此断言``dabs (flux-flux_tot) <= dabs(flux_tot)'' 失败。
因此我的问题是:是否可以在不指定通量归一化值的情况下指定一个非参数模型进行插值?
目前无法使用 galsim.InterpolatedImage() class;您可以在 GitHub.
上的 GalSim 存储库中提出一个问题来提出此功能请求有一种方法可以使用 GalSim 的内核来做到这一点;如果您愿意深入研究源代码(lensing_ps.py——只需搜索 SBInterpolatedImage 即可找到相关的代码位),透镜功率谱功能中会举例说明。基本思想是不使用 galsim.InterpolatedImage(),而是使用关联的 C++ class、galsim._galsim.SBInterpolatedImage(),它们可在 python 中访问。 SBInterpolatedImage 可以用图像和实数和傅立叶插值选择进行初始化 space,如 lensing_ps.py 中的示例所示,然后使用 xValue() 方法查询以获得插值值到某个位置。
这个技巧在 lensing_ps.py 中是必要的,因为我们插值的剪切场的平均值往往为零,所以我们 运行 解决了与您相同的问题。通常不建议 GalSim 用户使用 SBInterpolatedImage class(我们建议仅使用 python classes),但它现在绝对是解决您问题的方法。