将ASCII表转换为FITS图像

时间:2015-03-06 06:18:23

标签: python matlab fits pyfits

我是这个领域的初学者。我有一个包含三列的文本文件:X,Y,(X,Y)处的强度。它们基本上是数组(1X10000),每个都是通过python在文本文件中写出来的。要在python中绘制数据集,我可以简单地使用trisurf来实现这一点。 但是为了进一步处理,我需要从中创建一个拟合图像。 如何从这个文本文件中创建FITS图像(而不是简单的FITS表)(通过python或matlab将是更好的选择)。

2 个答案:

答案 0 :(得分:3)

你应该能够使用Astropy来做这件事。细节有点模糊,但您应该能够将文本文件读入Astropy表中,如:

>>> from astropy.table import Table
>>> table = Table.read('/path/to/text/file.txt', format='ascii')

您最终传递给Table的选项可能在很大程度上取决于表格的格式。

然后您需要将列转换为Numpy数组。您的问题陈述有点模糊,但如果表格中的坐标只是像素坐标,您应该可以执行以下操作:

>>> 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)

这是一个非常高级别的过程。细节很大程度上取决于您的数据。

答案 1 :(得分:0)

实际上它更容易,因为你不需要转换为numpy数组阶段。

1)打开ascii表:

from astropy.table import Table
from astropy.io import fits
table = Table.read('ascii_table', format='ascii')

2)写入适合文件:

table.write('new_fits')