问题标签 [healpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
148 浏览

python - healpy.cartview:避免最大 xsize

我正在使用 cartview 提取更大的 Healpy 数组的一部分,如下所示:

我之前指定了 lonra、latra、xsize 和 ysize。如果 xsize,ysize < 2000,一切正常,上面的代码打印:

但是,如果它们大于 2000,我会发现:

所以尺寸似乎限制在2000,但保持纵横比。有没有办法强制cartview() 使用我的xsize 和ysize,即在像素级别上保持图像与原始图像一样?

PS:在https://github.com/healpy/healpy/blob/master/healpy/visufunc.py的 healpy 源代码中,我找不到关于 2000 年这个任意阈值的任何信息,文档也没有说明它.

0 投票
1 回答
1211 浏览

python - CMB 地图的 HEALPIx FITS 文件如何转换为 ndarrays?坐标是多少?

我正在使用 Healpy(用 Python 开发的 HEALPIx 工具)来读取和编写全天空 CMB 地图。

我对天空地图上的像素坐标如何转换为 numpy ndarray 的条目感到困惑。FITS 文件中的一个 HEALPix 像素如何转换为 ndarray 条目?

例如,假设我有一个生成的 CMB 图,Nside=64,lmax=64,使用默认的 RING 方案。总像素数由 Npix=12*Nside**2 给出。因此,在我的示例中,总像素数为 49152。

我拥有的 FITS 文件格式为 1 列乘 48 行。(第 1 列是所有温度值。)所以,我将此文件转换为 n-dim numpy ndarray。这个数组的形状是 (48,1024)。

问题1:这个二维数组是把天空上的所有地图像素投影成“矩阵”形式吗?我觉得是这样的。使用我的示例,48*1024 = 49152,像素总数。

问题二:1024标准从何而来?就 HEALPIx 地图及其坐标而言,这意味着什么?一个 2-dim ndarray 条目(像素)如何与另一个相关(按角度、按 HEALPix 位置等)?

再举一个例子,映射 Nside=1024。当我将其转换为二维 ndarray 时,我得到了形状 (12288, 1024)。

编辑:为什么存在这种 1024 元素数组的约定?这与地图上的像素坐标有何对应关系?

0 投票
0 回答
36 浏览

fits - 了解 Healpy 的 getformat 函数

我有一个 CMB 全天地图的 FITS 文件,其中包含 T、Q、U 值。

使用函数healpy.fitsfunc.getformat(t),输出是“数据类型t的FITS约定格式字符串”。

对于我的 FITS 文件,我得到“A29”。这是标准化的 FITS 约定吗?

0 投票
2 回答
3500 浏览

python-2.7 - Healpy pix2ang:从 HEALPix 索引转换为 RA、Dec 或 glong、glat

我是 HEALPIx 的新手,对 Python 也很陌生。我尝试使用 healpy 将 HEALPix 索引转换为 RA,Dec。我知道我必须使用 pix2ang,但不知道如何将输出 theta,phi 转换为 RA,Dec ......我试过这个:

但它似乎没有给出正确的结果。

希望有人能帮忙!

0 投票
1 回答
579 浏览

python - Healpy pix2ang 如何读取像素索引?

这是此问题的延续:CMB 地图的 HEALPix FITS 文件如何转换为 ndarray?坐标是多少?

CMB 地图以 FITS 文件的形式提供。该图是像素温度值的一维向量。

我想使用 Healpy 的 pix2ang 函数来读取每个像素的位置,并知道哪个像素是哪个。

http://healpy.readthedocs.org/en/latest/generated/healpy.pixelfunc.pix2ang.html

对于这个函数,“像素索引”的输入到底是什么?我是否必须首先将每个温度值像素转换为球谐函数?

我知道在球谐函数中,每个 a_lm 对应于创建的 FITS 文件扩展名将包含一个整数列,索引 = l^2+l+m+1。但是不使用 l 和 m 的像素数组呢?

0 投票
1 回答
321 浏览

plot - mollview 命令不返回绘图图像

我是 healpy 的新手,我正在尝试在 iPython27 中绘制以下内容:

这不会像我预期的那样返回图像。可能是什么问题呢?

0 投票
1 回答
221 浏览

python - lmax的Healpy默认格式

我在 Healpy 文档中发现healpy.anafastlmax 的默认值为 3*nside-1

这个标准有原因吗?它是 HEALPIx 中的标准、CMB 实验的标准,还是有物理原因?

编辑:当我anafast在天空图上运行时Nside=4,我得到的 Cl 值的长度为 12。这让我认为 lmax 应该是lmax=3Nside

但是,当使用生成的 Cl 值时,前两个数字等于零:单极子为零,偶极子为零。

因此,当我通过 设置 l 值时np.arange(len(Clvalues)),我是否还应该删除[0,1]单极子和偶极子的术语?

0 投票
2 回答
1366 浏览

python - Healpy/Healpix:总像素和总球谐系数之间有什么关系?

根据 Healpy/Healpix 文档,我无法理解天空图中的一个像素(这是一些测量值)与 Healpyhealpy.sphtfunc.map2alm函数产生的球谐系数之间的关系,该函数计算给定地图的 a_lm 系数数组。(这个问题也适用于 anafast。)

我的理解是一个给定的像素应该对应一个球谐系数。然而,事实并非如此。完全没有。

拿一张地图nside = 8。本程序使用Healpy读取FITS格式的CMB图,手动设置nside值,读入图,显示,然后计算球谐系数。

到目前为止,一切都很好。该hp.map2alm()函数现在返回 300 个值,即 300 个球谐系数 a_lm。

输出“ (300,) ”。

为什么 768 像素会计算为 300 a_lm 值?nside球谐系数和球谐系数总数之间是否存在数学关系?每个都nside给出不同数量的 a_lm 系数吗?

计算一个a_lm需要多少像素?非常感谢任何帮助/解释!


编辑:如下所述,像素总数为npix = 12*nside**2. map2alm使用默认值lmax = 3*nside-1。所以,球谐系数的总数应该是奇数之和,直到3*nside-1=23. 球谐系数的总数应该是(2*lmax+1)**2 = (6*nside-1)**2。(2*lmax+1)^2=(2*23+1)^2 = (47)^2 = 2209。那么,这个数字 300 是从哪里来的呢?究竟在map2alm做什么?这怎么可能只是一个近似值?

我预计 2209 a_lm。我算了300。

0 投票
2 回答
835 浏览

healpy - Healpy map2alm 函数不返回预期数量的 alm 值

healpy.map2alm计算输入 Healpix 映射的 alm 值数组。

功能是

该参数lmax确定 alm 系数的数量。一个设置输入lmax,代码返回 '(lmax+1)**2` 数量的 alm 系数。

l=0返回a00

l=1返回a11, a10, a1-1+ a00,即 4 个系数。

l=2返回a22, a21, a20, a2-1, a2-2,即 5+3+1 = 9 个系数。那就是(lmax+1)**2 = 3**2 = 9系数。

但是,使用healpy,这不是我得到的输出,无论我选择的地图是什么。

我的输出不是我所期望的 (lmax+1)**2。

你看到差异了吗?

对于lmax=0,我预计总共有 1 个。healpy输出 1

对于lmax=1,我预计总共有 4 个。healpy输出 3

对于lmax=2,我预计总共有 9个。healpy输出 6

对于lmax=3,我预计总共有 16个。healpy输出 10

对于lmax=4,我预计总共有 25 个。healpy输出 15

对于lmax=32,我预计总共有 1089 个。healpy输出 561

问题:为了获得正确的数组总数,我应该一起输出吗?

请问如何map2alm执行这个操作。

0 投票
2 回答
3081 浏览

python - Healpy:从数据到 Healpix 地图

我有一个数据网格,其中行代表 theta (0, pi),列代表 phi (0, 2*pi),其中 f(theta,phi) 是该位置的暗物质密度。我想为此计算功率谱并决定使用healpy。

我无法理解的是如何格式化我的数据以供 healpy 使用。如果有人可以提供代码(出于明显的原因在 python 中)或指向我的教程,那就太好了!我已经尝试使用以下代码进行操作:

但是,当我尝试执行代码来计算功率谱时。具体来说, :

我收到此错误:

TypeError:错误的像素数

如果有人可以向我指出一个好的教程或帮助编辑我的代码,那就太好了。

更多规格:我的数据位于 2d np 数组中,如果需要,我可以更改 numRows/numCols。

编辑:

我通过首先将anafast的参数更改为healpix_map解决了这个问题。我还通过设置 Nrows*Ncols=12*nside*nside 来改进间距。但是,我的功率谱仍然出现错误。如果有人有关于如何计算功率谱(theta/phi args 的条件)的良好文档/教程的链接,那将非常有帮助。