将 ASCII Table 转换为 FITS 图像
Converting ASCII Table to FITS image
我是这个领域的初学者。我有一个包含三列的文本文件:X、Y、(X, Y) 处的强度。它们基本上是数组 (1X10000),每个数组都通过 python 写在文本文件中。要绘制 python 中的数据集,我可以简单地使用 trisurf 来实现。
但是为了进一步处理,我需要从中创建一个适合的图像。
我如何从这个文本文件中制作 FITS 图像(而不是简单的 FITS table)(最好通过 python 或 matlab)。
您应该可以使用 Astropy 来完成这项工作。细节有点模糊,但您应该能够将文本文件读入 Astropy table,例如:
>>> from astropy.table import Table
>>> table = Table.read('/path/to/text/file.txt', format='ascii')
您最终传递给 Table
的选项可能在很大程度上取决于 table 的格式。
然后您需要将列转换为 Numpy 数组。你的问题陈述有点含糊,但如果你的 table 中的坐标只是像素坐标,你应该可以这样做:
>>> import numpy as np
>>> img = np.zeros((len(table), len(table))
>>> for x, y, intensity in table:
... img[x, y] = intensity
(我想知道 Numpy 是否有更巧妙的方法来做到这一点,但我不知道。)
然后将图像保存到 FITS 文件:
>>> from astropy.io import fits
>>> fits.writeto('filename.fits', img)
这是非常高级的过程。详细信息很大程度上取决于您的数据。
实际上它更容易,因为您不需要转换为 NumPy 数组阶段。
- 打开 ASCII
from astropy.table import Table
from astropy.io import fits
table = Table.read('filename.txt', format='ascii')
- 写入适合的文件:
table.write('filename.fits', format='fits')
我是这个领域的初学者。我有一个包含三列的文本文件:X、Y、(X, Y) 处的强度。它们基本上是数组 (1X10000),每个数组都通过 python 写在文本文件中。要绘制 python 中的数据集,我可以简单地使用 trisurf 来实现。 但是为了进一步处理,我需要从中创建一个适合的图像。 我如何从这个文本文件中制作 FITS 图像(而不是简单的 FITS table)(最好通过 python 或 matlab)。
您应该可以使用 Astropy 来完成这项工作。细节有点模糊,但您应该能够将文本文件读入 Astropy table,例如:
>>> from astropy.table import Table
>>> table = Table.read('/path/to/text/file.txt', format='ascii')
您最终传递给 Table
的选项可能在很大程度上取决于 table 的格式。
然后您需要将列转换为 Numpy 数组。你的问题陈述有点含糊,但如果你的 table 中的坐标只是像素坐标,你应该可以这样做:
>>> import numpy as np
>>> img = np.zeros((len(table), len(table))
>>> for x, y, intensity in table:
... img[x, y] = intensity
(我想知道 Numpy 是否有更巧妙的方法来做到这一点,但我不知道。)
然后将图像保存到 FITS 文件:
>>> from astropy.io import fits
>>> fits.writeto('filename.fits', img)
这是非常高级的过程。详细信息很大程度上取决于您的数据。
实际上它更容易,因为您不需要转换为 NumPy 数组阶段。
- 打开 ASCII
from astropy.table import Table
from astropy.io import fits
table = Table.read('filename.txt', format='ascii')
- 写入适合的文件:
table.write('filename.fits', format='fits')