fits文件的读取与查看

fits文件读取与查看

fits文件的结构

一个fits文件包括多个HDU(两个以上),开头一个是Primary HDU,储存着类似于观测日期等的信息,剩下的是Bin HDU,储存着观测数据
fits文件的读取与查看_第1张图片
每个HDU由header 和data组成,data中储存着数据,header表示相应的信息,储存着和Primary HDU一样的信息,并且描述第几列的数据是什么,类型是什么
fits文件的读取与查看_第2张图片
TTYPE1=‘obsid’表示第一列的数据是obsid,TFORM1和TDISP1表示第一列的数据的格式(format)

python读取fits文件

使用astropy包读写fits文件(astropy需要下载)

from astropy.io import fits 
#读取文件
lamost=fits.open('dr5_stellar.fits')
#查看HDU
lamost.info()
#查看第二个HDU的header
lamost[1].header
#查看第二个HDU的data
lamost[1].data
#按照关键字搜索第二个HDU的数据(例子中是查看lamost数据的赤经)
lamost[1].data.field('ra')

astropy的官方文档

python关闭fits文件

及时关闭文件以减小内存消耗

lamost.close()

fits文件转DataFrame格式

pandas的DataFrame格式操作星表更加方便,然而你将各列数据从fits文件中提取出来再写成字典,再转成DataFrame格式很不方便,而且在后续使用中可能会出现Big-endian 和 little-endian 相关的报错,这里介绍另一种简单不出错的方法

from astropy.table import Table
lamost = Table.read('dr5_stellar.fits', hdu=1)
lamost = lamost.to_pandas()

这个方法需要你知道你的数据在哪个HDU里面,一些特殊的format格式可能无法识别,比如这个LAMOST DR5里面有一种format是J,就不识别了,会给你报warning,你需要看一下不识别的那一列是不是需要的数据,如果不是,那就不重要了。

topcat操作fits文件

当数据文件比较大,而你只需要其中的一部分数据时,可以使用topcat把文件切割一下

  1. 下载topcat,进入官网,根据提示下载,不同的系统不一样
    topcat官网
    注:topcat基于Java,需要先下载Java JRE,打开https://java.com/zh-CN/download/,下载默认版本即可
  2. 运行topcat,读取较大的fits文件
    选择File,选择Load Table,选择Filestore Browser,然后找到你的fits文件,topcat支持很多种数据类型,比如CSV,ASCII,读取时选择相应的Table Format即可,如果是读取fits文件则不需要选择Table Format,读取fits文件特别快,几个G的文件也是一瞬间,读入后topcat都会认为他们是table
  3. 查看数据
    双击读入的文件,就可以查看全部的数据
    如下图点击这里,可以查看所有列名

fits文件的读取与查看_第3张图片
出来是这样的fits文件的读取与查看_第4张图片
可以看到第几列表示什么(具体的意义还是要看数据发布人的文档)勾选表示显示这列,不勾选表示不显示,比如我只需要他的ra,dec和teff,勾选这三项,然后双击数据文件打开,就只有这三项
fits文件的读取与查看_第5张图片

  1. 保存文件
    先选中,然后点击保存按钮,选中保存位置,写一个文件名即可保存,这样保存的数据就只有ra,dec和teff三列,保存文件的格式也是多样化的,取决于你的选择

  2. 查看文件的统计量
    点击在这里插入图片描述
    会出现下图
    fits文件的读取与查看_第6张图片
    可以很方便的看到每个量的平均值,最大值,最小值

  3. 将两个星表中的数据按照ra,dec进行交叉匹配
    当你读取了两个以上的星表时,点击这个标志在这里插入图片描述
    会出现下图fits文件的读取与查看_第7张图片
    选择table1,table2,在RA column和Dec column中选择你的赤经,赤纬,Max error就是你的交叉半径,一般是1角秒,Match Selection 和join Type都可以选择,一般默认就行,想要调整可以看一下topcat的官方文档

  4. 将自己的星表与服务器的星表进行交叉匹配
    点击在这里插入图片描述
    会出现fits文件的读取与查看_第8张图片
    VizieRTable ID/Alias选择你想要交叉的服务器星表,比如2MESS,Gaia DR2,Local Table选择你自己的星表,输入赤经赤纬即可,其他一般默认,最后一行的Block size指的是一次交叉多少行,把他调大可以减少交叉时间,但是如果网络波动导致中断,那么前面交叉的数据也传不回来,没有稳定的VPN建议不要动这个参数

更多topcat操作请参考topcat官网

你可能感兴趣的:(fits文件,python)