有没有办法为 SED 的“spec”参数或 Bandpass 的“吞吐量”参数传递分段(不连续)函数?我尝试使用 numpy 传递一个 delta 函数和一个三角形函数,但 galsim 不会接受任何一个作为有效的 python 函数。
我想尝试在单个波长处绘制对象,并认为我应该修改 SED 或带通以仅在单个波长处具有值。如果有更好的方法可以做到这一点,请告诉我!
有没有办法为 SED 的“spec”参数或 Bandpass 的“吞吐量”参数传递分段(不连续)函数?我尝试使用 numpy 传递一个 delta 函数和一个三角形函数,但 galsim 不会接受任何一个作为有效的 python 函数。
我想尝试在单个波长处绘制对象,并认为我应该修改 SED 或带通以仅在单个波长处具有值。如果有更好的方法可以做到这一点,请告诉我!
有更好的方法来做到这一点。
如果您已经拥有带有一些 SED 的 ChromaticObject,则可以使用 ChromaticObject.evaluateAtWavelength() 方法在单个波长处获得与该 ChromaticObject 对应的 GSObject。拥有该 GSObject 后,您可以将其绘制成图像。例如:
sed = galsim.SED('wave**0.2')
sed2 = galsim.SED('wave**1.0')
obj = galsim.Gaussian(sigma=0.1)*sed + galsim.Gaussian(sigma=0.5)*sed2
foo = obj.evaluateAtWavelength(800.0) # argument is wavelength in nm
您可以这样做并发现 obj 是彩色的,而 foo 不是。您可以轻松地为任意数量的波长执行此操作,而无需重新定义 SED。