如何解决Healpy:在 hp.ma() 中与地图一起旋转蒙版与单独产生不同的结果?
在这种特殊情况下,我想更好地理解rotate_map_pixel() 的行为。下面我尝试提供一个最小的玩具示例:
map = hp.ma(hp.read_map(mapFile))
map.mask = np.logical_not(hp.read_map(maskFile))
rot = hp.Rotator(coord=['G','C'])
map = rot.rotate_map_pixel(map)
mask = hp.read_map(maskFile)
mask = rot.rotate_map_pixel(mask)
这会产生稍微不同的 map.mask 和 mask。 “不同”是指
skycut = np.where(map.mask[obj_pix]==False))
和
skycut = np.where(mask[obj_pix]==1.)
或
skycut = np.where(np.isclose(mask[obj_pix],1.))
都产生不同的skycut。我猜这是由于插值程序造成的?
如果我想使用遮罩来进行选择,我该怎么做?
解决方法
如果你显示 2 个掩码,你可以看到在一种情况下掩码是一个浮点数,在另一种情况下它是一个布尔值。
现在一种情况 Error: nanodbc/nanodbc.cpp:1655: EX001: Optional feature not implemented
用 healpy
填充地图,然后插值由 UNSEEN
处理。我不知道 HEALPix 内部如何处理。
在另一种情况下,我们传递 0 和 1 的映射,HEALPix 执行插值,但我们不会触发处理 HEALPix C++
值的任何特殊情况。
查看 https://zonca.dev/2021/06/healpy-rotate-mask.html 一个完整的笔记本调查。
我通过实验发现,如果我用非常接近 1 的数字将掩码四舍五入,我会找到相同的掩码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。