Python和1D频谱如何在fits-fi中访问数据

2024-05-23 14:12:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python很陌生,一直在寻找我想要的答案,但一直没有找到。我有一个1D光谱文件(.fits),想访问它的波长和通量信息。例如,如果我插入一个波长值,我试图写一个程序,它可以给我输入波长的通量。有谁能给我一个快速的指南,如何编写这样的程序,或我需要从哪些模块开始?numpy和pyfits足够完成这项任务吗?非常感谢你。在


Tags: 模块文件答案程序numpy信息指南光谱
1条回答
网友
1楼 · 发布于 2024-05-23 14:12:36

从克劳斯提到的FITS标准中我可以发现,你需要PyFits和Numpy(Numpy是PyFits的先决条件)。获取numpy 1.7的MKL版本

我下载了这个文件:HST FOS (FOS 2 x 2064 primary array spectrum containing the flux and wavelength arrays, plus a small table extension),它包含了光谱和波长。现在,我不熟悉这种格式,但我可以发现:

import pyfits
hdulist = pyfits.open('testFits.fits')
tbdata = hdulist[1].data

hdulist.info()给了我这个: hdulist.info公司()

^{pr2}$

很明显,我对此无法理解:),所以更深入一点:

print tbdata[0]

给了我:

(1.0, 1.0, 1.0, 0.0, 2.738755e-15,
182.63573015259999, 39.405888372579994, 0, 0, 49099.133531036357, 49099.133541163668, 'PIXEL', 'SINGLE', 0, -1516.0, 'OBJ', 31.249689, 0.0, 0.0)

我想这对你有意义。在

print tbdata.columns

冷冻三尺(

    name = 'CRVAL1'; format = 'D25.16'; start = 1
    name = 'CRPIX1'; format = 'E15.7'; start = 29
    name = 'CD1_1'; format = 'E15.7'; start = 45
    name = 'DATAMIN'; format = 'E15.7'; start = 61
    name = 'DATAMAX'; format = 'E15.7'; start = 77
    name = 'RA_APER'; format = 'D25.16'; start = 93
    name = 'DEC_APER'; format = 'D25.16'; start = 121
    name = 'FILLCNT'; format = 'I11'; start = 149
    name = 'ERRCNT'; format = 'I11'; start = 161
    name = 'FPKTTIME'; format = 'D25.16'; start = 173
    name = 'LPKTTIME'; format = 'D25.16'; start = 201
    name = 'CTYPE1'; format = 'A8'; start = 229
    name = 'APER_POS'; format = 'A8'; start = 241
    name = 'PASS_DIR'; format = 'I11'; start = 253
    name = 'YPOS'; format = 'E15.7'; start = 265
    name = 'YTYPE'; format = 'A4'; start = 281
    name = 'EXPOSURE'; format = 'E15.7'; start = 289
    name = 'X_OFFSET'; format = 'E15.7'; start = 305
    name = 'Y_OFFSET'; format = 'E15.7'; start = 321

现在,使用这些列,可以将模块制作为:

  1. 取输入通量
  2. 搜索匹配通量的列
  3. 显示匹配行的波长

相关问题 更多 >