1

它和 applyTransformation 的图像失真一样吗?还有这个函数applyTransformation吗?

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

4

3 回答 3

2

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

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

祝你好运

于 2014-12-15T11:03:44.790 回答
1

我只想补充一下 ne1410s 的上述回复(我没有声誉点来评论他或她的帖子)。

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

import galsim
help(galsim.GSObject.applyShear)

在 applyShear() 的情况下,此例程在最新版本的 GalSim 中已被弃用,但文档字符串仍然存在并将用户指向新功能。对于旧版本的 GalSim,有一个完整的文档字符串解释了 applyShear() 的工作原理。

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

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

然后是各个例程的文档字符串,可通过 help() 访问。一般来说,不必阅读源代码来了解例程的工作原理。

于 2014-12-15T13:31:34.203 回答
1

在 1.1 版中,方法applyShearapplyTransformation已弃用。首选的方法是 nowsheartransform.

shear方法通常用于sheared_obj = obj.shear(g1=g1, g2=g2)其中g1,g2是要应用的减少剪切的组件。您还可以给出e1, e2(扭曲而不是剪切)或g,betae, beta(给出幅度和位置角度),以及其他可能性。有关在 GalSim 中指定剪切的方法的更多信息,请参阅Shear该类的文档。

无论您如何指定剪切,该shear方法都会以保持总通量的方式将给定的表面亮度轮廓剪切该数量。

transform方法更通用,因为您可以通过任意 2x2 坐标变换矩阵进行变换。具体来说,您指定任意雅可比行列式:dudx, dudy, dvdx, dvdy, 其中 (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 月的最新链接。如果它们过时,请尝试从Doxygen 文档的顶层导航,希望它仍然有效。

于 2014-12-16T02:22:33.193 回答