它做的图像失真与applyTransformation相同吗?还有这个函数applyTransformation吗?
关于applyShear函数,它只适用于剪切,没有其他透镜效应,即没有放大率,或者没有其他高阶效应,对吗?
发布于 2014-12-16 02:22:33
在1.1版中,不推荐使用applyShear和applyTransformation方法。现在使用的首选方法是shear和transform。
shear方法通常用作sheared_obj = obj.shear(g1=g1, g2=g2),其中g1、g2是要应用的简化剪切的组成部分。你也可以给出e1,e2 (变形而不是剪切),或者g,beta或e,beta (给出大小和位置角度),等等。有关在班级中指定剪切的方法的更多信息,请参见GalSim的文档。
无论你如何指定剪切,shear方法将剪切给定的表面亮度轮廓,以保持总通量的方式。
transform方法更通用,因为您可以通过任意2x2坐标转换矩阵进行转换。具体来说,您指定了任意Jacobian:dudx、dudy、dvdx、dvdy,其中(x,y)是原始坐标,(u,v)是转换的坐标。使用此方法,您可以应用等效于剪切的转换,但需要在Jacobian中手动计算正确的术语。
另一个不同之处是,transform不一定保留通量。只有当雅可比有单位行列式时,通量才能保持。因此,根据您的用例,您可能希望在完成时通过行列式重新确定流量。
我的猜测是,您通常希望使用shear而不是transform。下面是一个示例用例(取自demo5.py中的GalSim示例目录):
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月为最新链接。如果它们过时了,尝试从DO2文档的最高层导航,希望它仍能工作。
发布于 2014-12-15 11:03:44
所有编写的文档、示例和源代码都可以在GitHub上找到,位置如下。https://github.com/GalSim-developers/GalSim
我建议先查看一下,如果没有任何文档直接回答您的问题,您可以始终研究您所描述的applyShear功能的源代码。
祝好运
发布于 2014-12-15 13:31:34
我只想补充一下ne1410s上面的回复(我没有名誉点来评论他或她的帖子)。
除了这些优秀的信息之外,大多数标准功能都有完整的docstring,您可以使用python帮助()例程来检查这些字符串,即
import galsim
help(galsim.GSObject.applyShear)在applyShear()的情况下,这个例程在最新版本的GalSim中被废弃,但是docstring仍然存在,并将用户指向新的功能。对于旧版本的GalSim,有一个完整的docstring来解释applyShear()是如何工作的。
总之,进入GalSim存储库,您可以通过以下方式获得帮助:
然后是各个例程的docstring,它们可以通过help()访问。一般来说,不需要阅读源代码来了解例程是如何工作的。
https://stackoverflow.com/questions/27480230
复制相似问题