no such file or directory什么意思_什么是Fits文件?我们该如何读取它其中的数据呢?...

我使用的环境是Ubuntu系统,以及Python。当然Windows及macOS也可以,环境略有不同,但是代码都是一样的。

大家好,对于一名天文学新学生来说,首先需要接触到的文件格式就是 .Fits ,本文将简单讨论什么是Fits文件?我们该如何读取它其中的数据呢?由于作者也是刚刚踏入天文学这个专业,学识水平有限,如有错误之处,希望大家提出建议,多多指正!

1. Fits文件格式简介。

FITS 全称是Flexible Image Transport System,它是天文学界常用的数据格式,它专门为在不同平台之间交换数据而设计,国际天文学会(IAU)于1982 年确定为世界各天文台之间用于数据传输、交换的统一标准格式。所以我们必须要了解此类文件的基本特性,以及使用方法。

一个 FITS 文件包含一系列逻辑单元,而每个单元的开头都是用一组标题记录描述随后的数据记录。一个 FITS 文件的逻辑记录长度总是 2880 字节(bytes),每字节 8 位(bits)。标题和数据组都在一个新的逻辑记录里起始。FITS 标题用 ASCII 码编辑成每一个开始用一个 8 字符的关键词(keyword) 定义信息的类型(80字符)。参数值用标准 FORTRAN-77 规则编辑,它们详细地描述了标题记录后面的数据。在文件里最后的标题/数据单元后面,可能存在附加的记录。标题的设计对描述的数据组所需的参数定义有较大的灵活性。总是需要给出很好定义的标准关键词组,甚至用简单的程序也容易能够读出数据的基本内容。

如下图:

cc402a8243108b6a87b805757b715d05.png

图一 fits文件基本组成

看这些学术性的描述,感觉有些抽象,我们下面看一个真实的天文数据,如下图,这是tess卫星开放的数据,一个恒星的光变曲线文件:

e67b2ba962cc505d520186767dc2ebf6.png

图二 fits文件

那么我们看到文件结尾是.fits。

下面我们看看打开它之后长什么样子,这里我用的Python打开:

输入代码 from astropy.io import fits 加载用于处理fits文件的包

5a8939720474e6a7a37c52b5c07f70a2.png

图三

输入代码 hdu=fits.open('tess2019198215352-s0014-0000000142520516-0150-s_lc.fits')

括号里是文件名,其中hdu是变量,可以自己输入想用的

接着输入代码 hdu.info() info是查看基本信息

a4710360725194ad95d4b57e1d9bcd3c.png

图四

那么我们能看到一些关于文件的基本信息,例如文件名,以及文件头和数据。

其中,No.0 是每个文件都有的,后面的NO.1等便是我们这个文件的数据所在,我们之前讲了这是一个恒星的光变曲线文件,我们看到NO.1 的名字便是lightcurve(光变曲线),所以我们所需的数据便存储在里面,我们看到后面Dimensions下面写着19337R x 20C,意思是文件数据有19337行,20列,这就是一个二维数组。后面的format是数据类型,其中是这样规定的:I表示整型, J表示长整形, E表示浮点型, D表示双精度浮点型,A表示字符型。19337R x 20C后面的中括号里依次写的意思就是不同列的数据类型。

我们打开No.0看看,

输入代码:hdu[0].header

331e213f49243945d0164447262c453c.png

图五

上图便是no.0的结果,header看的是头文件,相当于目录,编写规则是:

1-8列是关键词,9列是=,10列空格,11-80是描述。一些基本的关键词意思是:

SIMPLE 逻辑变量,指明文件是否符合基本 FITS 标准。

BITPIX 整数变量,指明用于表示每一个象元值的位数。

当然,每个关键词后面都有描述,可以自己翻译看一下。

我们接下来主要看下no.1的内容。

输入代码 hdu[1].header

370c16886e28be01daa8ed7aa0468deb.png

图六

同样,我们打开的是头文件,相当于目录,

我们可以输入hdu[1].header['BITPIX'],来看BITPIX对应的内容,当然,本身我们直接也能看到等于8

4b7712725ef8fae545135c6213d182cc.png

图7

这是关于头文件,接下来,我们如何查看数据呢?

我们可以使用data函数。

输入hdu[1].data[i][j],可以返回数据,其中i是行,j是列。

当然我们也可以只要某一列,比如之前的time,如果我们知道这列名称是什么,比如 time,

7be2349b4da7cd0181c3fad1fdb7edff.png

图8

就使用:hdu[1].data.field(‘time’),注意,代码都是使用英文输入。

ed2a6813dc02700c2eb05d0554387ee7.png

图9

就得到上图的结果,如果你没有查看目录(header),也可以通过下面的代码查看数据的名字。

代码:hdu[1].data.names

下图为结果:

3eb17ae55eb1e7bb9d46e1d9fc8a5fa3.png

图10

其实,还有以下方法也可以访问数据

代码:hdu['LIGHTCURVE'].data['TIME']

即你如果知道关键词。

结果:

a7be58e68d06522852490119187764db.png

图11

以上就是关于fits文件的读取方法。

总结:

from astropy.io import fits # 加载科学包

hdu=fits.open( ‘ 文件名 ‘ ) # 打开文件

hdu.info() #查看文件信息

hdu[?].header #查看头文件信息 ?写想看的单元

hdu[?].data[i][j] #查看i行j列数据

hdu[1].data.field(‘time’) #查看time 的数据

hdu[1].data.names #查看数据名字

hdu['LIGHTCURVE'].data['TIME'] #直接访问数据

Tip: 注意使用英文模式输入代码。


题外话,其时现在也有软件可以直接打开fits格式,我在Windows上安装了叫做fv的软件,长这个样子

088fc31f9004461d9b6c9925ad1548c5.png

图12

,它是由美国NASA开发的用于打开fits 的软件,官网链接:https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/

打开后界面很简陋:

867436a346a5402bb36f0287cfaea3fc.png

图13

可以进行可视化读取,但是我也没玩懂这个软件,有兴趣的可以自己玩。

除此之外,还有下面的软件可以打开fits:

1、GIMP 开发者:The GIMP Development Team 兼容:Windows、macOS、Linux。链接:https://www.gimp.org/

2、 Wolfram Research Mathematica 开发者:Wolfram Research 兼容:Windows、macOS、Linux。链接:https://www.wolfram.com/mathematica/

3、MSB AVIS 开发者:开源 兼容:Windows 链接:http://www.msbsoftware.it/avis/

4、MicroObservatory Image 开发者:开源 兼容:Windows、macOS、Linux

链接:https://waps.cfa.harvard.edu/eduportal/js9/software.php

部分引用:

1. https://www.cnblogs.com/tyjsjl/p/3952823.html

2. https://baike.baidu.com/item/fits/9223832?fr=aladdin

3. https://www.solvusoft.com/zh-cn/file-extensions/file-extension-fits

2020.03.07

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值