在galsim lib中,applyShear做了什么?

时间:2014-12-15 08:47:43

标签: galsim

它是否与applyTransformation做同样的图像失真? 还有这个函数applyTransformation吗?

关于applyShear函数, 它只应用剪切,没有其他透镜效应,即没有放大效应,或没有其他更高阶效应,对吗?

3 个答案:

答案 0 :(得分:1)

所有书面文档,示例和源代码都可以在GitHub上的以下位置找到。 https://github.com/GalSim-developers/GalSim

我建议先查看,如果没有任何文档直接回答您的问题,您可以随时学习您所描述的applyShear功能的源代码。

祝你好运

答案 1 :(得分:0)

我想在ne1410s中添加上述回复(我没有声誉点来评论他或她的帖子)。

除了这些优秀的信息之外,还有大多数标准功能的完整文档字符串,您可以使用python help()例程查看,即

import galsim
help(galsim.GSObject.applyShear)

对于applyShear(),在最新版本的GalSim中不推荐使用此例程,但文档字符串仍然存在并将用户指向新功能。对于旧版本的GalSim,有一个完整的文档字符串可以解释applyShear()的工作原理。

总而言之,访问GalSim存储库,您可以通过以下方式获得帮助:

  1. 通过示例中的演示/(他们被广泛评论)。
  2. 浏览doc /
  3. 中的快速参考指南
  4. 转到http://galsim-developers.github.io/GalSim/
  5. 的完整文档,包括所有文档字符串

    然后有个别例程的文档字符串,可以通过help()访问。通常,不应该阅读源代码来了解例程的工作原理。

答案 2 :(得分:0)

在1.1版中,不推荐使用方法applyShearapplyTransformation。首选方法现在是sheartransform

shear方法通常用作sheared_obj = obj.shear(g1=g1, g2=g2),其中g1g2是要应用的减少剪切的组成部分。您还可以提供e1e2(扭曲而不是剪切),或gbetaebeta(给出幅度)和位置角度),以及其他可能性。有关在GalSim中指定剪切的方法的更多信息,请参阅Shear class的文档。

无论如何指定剪切,shear方法都会以保留总光通量的方式剪切给定的表面亮度曲线。

transform方法更为通用,因为您可以通过任意2x2坐标转换矩阵进行变换。具体来说,您指定一个任意的雅可比行列式:dudxdudydvdxdvdy,其中(x,y)是原始坐标,(u,v)是变换坐标。使用此方法,您可以应用相当于剪切的变换,但是您需要在雅可比行列式中手动计算正确的项。

另一个区别是transform不一定保留通量。只有雅可比行列式具有单位行列式才能保留通量。因此,根据您的使用情况,您可能希望在完成后通过行列式重新调整通量。

我的猜测是,您通常希望使用shear而不是transform。以下是一个示例用例(取自GalSim示例目录中的demo5.py):

gal = galsim.Exponential(flux=1., half_light_radius=gal_re)

[...] 

for [...]:
    # Now in a loop to draw many versions of this galaxy with different shears, etc.

    # Make a new copy of the galaxy with an applied e1/e2-type distortion 
    # by specifying the ellipticity and a real-space position angle
    this_gal = gal.shear(e=ellip, beta=beta)

    # Apply the gravitational reduced shear by specifying g1/g2
    this_gal = this_gal.shear(g1=gal_g1, g2=gal_g2)

    [...]

希望这有帮助。

注意:上面的链接是截至2014年12月的最新链接。如果它们过时,请尝试从top level of the Doxygen documentation导航,希望这仍然有效。