它是否与applyTransformation做同样的图像失真? 还有这个函数applyTransformation吗?
关于applyShear函数, 它只应用剪切,没有其他透镜效应,即没有放大效应,或没有其他更高阶效应,对吗?
答案 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存储库,您可以通过以下方式获得帮助:
然后有个别例程的文档字符串,可以通过help()访问。通常,不应该阅读源代码来了解例程的工作原理。
答案 2 :(得分:0)
在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
class的文档。
无论如何指定剪切,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月的最新链接。如果它们过时,请尝试从top level of the Doxygen documentation导航,希望这仍然有效。