以Fermi卫星数据为例对Fits文件的数据处理

对fits文件(以Fermi卫星数据为例)处理需要用到python的三个库:astropy、numpy、matplotlib。
通过astropy库来打开和查看fits文件,numpy库用来做数组的变换,matplotlib库用来呈现图像。
因此在操作前需调用库:

import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits

1. 文件打开部分
使用astropy库,通过刚才我们引入的fits模块来打开

hdu = fits.open('文件名')##hdu是自己起的变量名随意

此时便处于读取文件数据的状态

此时可以通过输入

hdu.info()

来查看数据信息,例如此文件信息为:

No.    Name      Ver    Type      Cards   Dimensions   Format0  PRIMARY       1 PrimaryHDU      37   ()      1  EBOUNDS       1 BinTableHDU     58   128R x 3C   [1I, 1E, 1E]   2  EVENTS        1 BinTableHDU     48   1409399R x 2C   [1D, 1I]   3  GTI           1 BinTableHDU     44   1R x 2C   [1D, 1D]

我们要处理的数据是EVENTS,我们可以看出这个数据单元中有1409399行(rows)和2列(column)Format(格式)为双精度(D)整型(I)。因此我们可以得知这是一个2维数组,一列表示时间,一列表示对应时间到达的光子数,我们可以通过处理这个数据单元得到此探头探测到的光变曲线。

2. 数据的简单提取
现在我们要提取EVENTS这个二维数组可以使用:

简单赋值

x = hdu[2].data.field(0)  ##将数据单元EVENTS的第一列数据赋值给变量x
y = hdu[2].data.field(1)  ##将数据单元EVENTS的第二列数据赋值给变量y

访问行的数据则要用

hdu[1].data[i] ##代表访问hdu[1]的第i行

3. 光变曲线的获取
画出光变曲线除了要用到matplotlib库来画图,也需要运用numpy来处理数组,下面简单介绍一些numpy的函数
np.histogram

np.histogram(a,bins=10,range=None,weights=None,density=False)
# a是待统计数据的数组;
# bins指定统计的区间个数;
# range是一个长度为2的元组,表示统计范围的最小值和最大值,默认值None,表示范围由数据的范围决定
# weights为数组的每个元素指定了权值,histogram()会对区间中数组所对应的权值进行求和
# density为True时,返回每个区间的概率密度;为False,返回每个区间中元素的个数

获取光变曲线

import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
hdu = fits.open('文件名')
trigtime = hdu[0].header['TRIGTIME']#爆发的那个时间点
b = -100
c = 300 #b c 用于一会调整x轴
t = hdu[2].data.field(0) #此时t=events所记录的时间数组
t = t-trigtime #原数组减去爆发时间 生成一个新数组 与原数组的间隔相同,但此时数组的范围到了-100到300之间。
dt = 1 #取时间间隔为一
bins = np.arange(b,c+dt,dt) #生成一个 从 -100到 300 间隔为dt=1的数组
bin_n,bin_edges = np.histogram(t,bins=bins)
# np.histogram(t,bins=bins)的结果是生成两个数组, 此时分别赋值给了bin_n,bins_edges 这两个数组分别是1.按照数组bins(-100到300)数组的间隔 统计数组t在每个区间元素的个数 2.bins_edges = bins
bin_c = (bin_edges[1]+bin_edges[:-1])*0.5 #因为要折线画图所以x y的个数要相同,刚才进行统计时结尾是开区间,所以x个数少一 此步骤就是给x轴补一位
plt.plot(bin_c,bin_n/dt)#画折线图 x = bin_c y = bin_n/dt
plt.show()

便得到grb130427A光变曲线的例如:

Fits文件在天文方面的应用(数据处理部分)相关推荐

  1. astropy对fits文件的基础操作

    astropy读取fits文件汇总 from astropy.io import fits hdu_list = fits.open(image_file) hdu_list.info() image ...

  2. python对csv文件中的数据进行分类_python 数据处理 对csv文件进行数据处理

    数据如下图: 用python对数据进行处理: #读取csv文件内容并进行数据处理 import os import csv import datetime import re from itertoo ...

  3. 只是一个文件节点类为了项目的数据处理

    已经研究生二年级下学期了,已经为了这个检索项目写了差不多2年代码了,回想大四下学期就开始接触的这个项目,在研一的时候根本不知道科研如何做,而且项目就自己一个人,也是胡乱写了代码,而且心事太多,简直只能 ...

  4. CSI数据dat文件转换mat文件问题(matlab、python数据处理)

    用intel5300网卡提取csi数据,得到的数据是dat文件,我们在数据处理时一般先将dat文件转换成mat文件. 将dat文件转换成mat文件,可以根据matlab版本和数据量大小选择mat fi ...

  5. SSWIDL——fits.fz格式批量解压简单方法__太阳数据处理

    SSWIDL--fits.fz格式批量解压简单方法__太阳数据处理 前言 何为fits格式和fz格式 批量处理.fits/.fz文件 1.SSWIDL库函数批量解压.fits.fz(不推荐!!!) 2 ...

  6. python格式文件大小_在Python中调整NVSS FITS格式文件的大小并对其进行操作

    这个问题可能主要是针对天文学家或多或少的进步. 您知道如何将NVSS拟合文件转换为仅2个(非4!)轴的拟合吗?或者,当我尝试使用astropy和其他" astro"库为Python ...

  7. 在Python中FITS格式文件数据的读取 (转载)

    在Python中FITS格式文件数据的读取 (转载) 前言 \space\space\space\space     FITS(Flexible Image Transport System)格式文件 ...

  8. 博客居 python_python天文资源索引

    Python的科学计算功能非常强大,各方面的支持也渐趋成熟.应对日常的科学计算已是绰绰有余.HYRY写的"用Python做科学计算"就是很好的入门教程.但目前中文资源仍比较少,我这 ...

  9. 天文相关Python资料收集

    一. Python 常用链接和基本工具 1. Online Python Tutor:首先,隆重推荐这个牛逼的网站,这是我看到的最让人爱不释手的学习Python的方式,千万别小看了这个简单的界面,下面 ...

  10. 一个Python用户的天文相关Python资料收集

    一. Python 常用链接和基本工具 1. Online Python Tutor:首先,隆重推荐这个牛逼的网站,这是我看到的最让人爱不释手的学习Python的方式,千万别小看了这个简单的界面,下面 ...

最新文章

  1. 呼和浩特市智慧平安城市建设迈进技防新时代
  2. 【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )
  3. 008_JavaScript输出
  4. wxWidgets:wxColourPickerEvent类用法
  5. 背景图层和普通图层的区别_图层样式(一)—高级混合选项
  6. MySQL入门之数据完整性约束与表维护
  7. 数据库设计规范 zhuan
  8. Python基础import导包问题
  9. PHP 服务器变量 $_SERVER(转)
  10. Exchange 2010 OWA更改过期密码
  11. 备份的sql文件乱码无法导入
  12. 数字IC后端设计实现流程之floorplan及powerplan规划
  13. react-native 模仿原生 实现下拉刷新/上拉加载更多(RefreshListView)
  14. 离散傅里叶变换公式推导
  15. 虚拟交换系统-VSS
  16. 调用阿里云的通用文字识别-高精版识别接口,识别图片中的文字详解
  17. java实现单词首字母小写转大写
  18. 第三方支付相关知识结构
  19. 屏幕不光只看尺寸 各材质屏幕实战解析
  20. ZIP文件夹解压小程序

热门文章

  1. English Study
  2. 如何维持APP用户的登陆状态
  3. 华为HMS:风雨突然,仍求自我
  4. 生成SQLite的db文件
  5. c4d如何把文字贴在物体表面_C4D立体贴地面字基础知识点
  6. Idea 文件定位图标显示与关闭 -- idea ver:2020.1
  7. Elasticsearch 聚合搜索技术深入
  8. Adversarial Machine Learning 经典算法解读(FGSM, DeepFool)
  9. docker容器中获取宿主机任意信息
  10. Apache RocketMQ 在阿里云大规模商业化实践之路