它和 applyTransformation 的图像失真一样吗?还有这个函数applyTransformation吗?
而关于 applyShear 函数,它只应用剪切,没有其他透镜效果,即没有放大,或者没有其他高阶效果,对吧?
它和 applyTransformation 的图像失真一样吗?还有这个函数applyTransformation吗?
而关于 applyShear 函数,它只应用剪切,没有其他透镜效果,即没有放大,或者没有其他高阶效果,对吧?
所有书面文档、示例和源代码都可以在 GitHub 上的以下位置找到。 https://github.com/GalSim-developers/GalSim
我建议先看看那里,如果没有任何文档可以直接回答您的问题,您可以随时研究applyShear
您所描述功能的源代码。
祝你好运
我只想补充一下 ne1410s 的上述回复(我没有声誉点来评论他或她的帖子)。
除了这些优秀的信息之外,还有大多数标准功能的完整文档字符串,您可以使用 python help() 例程检查,即
import galsim
help(galsim.GSObject.applyShear)
在 applyShear() 的情况下,此例程在最新版本的 GalSim 中已被弃用,但文档字符串仍然存在并将用户指向新功能。对于旧版本的 GalSim,有一个完整的文档字符串解释了 applyShear() 的工作原理。
总而言之,进入 GalSim 存储库,您可以通过以下方式获得帮助:
然后是各个例程的文档字符串,可通过 help() 访问。一般来说,不必阅读源代码来了解例程的工作原理。
在 1.1 版中,方法applyShear
和applyTransformation
已弃用。首选的方法是 nowshear
和transform
.
该shear
方法通常用于sheared_obj = obj.shear(g1=g1, g2=g2)
其中g1
,g2
是要应用的减少剪切的组件。您还可以给出e1
, e2
(扭曲而不是剪切)或g
,beta
或e
, 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 文档的顶层导航,希望它仍然有效。