人生的意义就是思考其意义分享 http://blog.sciencenet.cn/u/qianlivan 天体物理工作者,家乡云南昆明。

博文

Mathematica处理分子云数据的可能性(一)读FITS文件

已有 6492 次阅读 2012-12-12 11:16 |个人分类:知识|系统分类:科研笔记| 数据处理, Mathematica, FITS文件

      前面说过,Mathematica已经不再是简单的计算工具(http://blog.sciencenet.cn /home.php?mod=space&uid=117333&do=blog&id=637954),其知识库和三维图形显示功能以及精确的计算都十分吸引人。
      之前我们大多用IDL(或者CLASS之类的软件)处理分子云数据,由于大多数研究人员都使用这些工具,所以碰到问题有人可以问,而且已经积累了很多方便的专用工具。但是这些工具的三维显示都不尽如人意,真实感比较差,看起来很费劲。我一直在考虑是否可以用Mathematica这样的工具处理数据,但是由于用这种工具处理数据的人不多,碰到问题可能没人问,所以一直对此有顾虑。Wolfram北京大会之后,我觉得无论如何得试一试用 Mathematica处理数据,因为三维图形显示对于目前的研究已经变得很重要了。
       数据处理的第一步是读数据,分子云数据大多是FITS格式的。之前知道Mathematica可以读入FITS文件,但是我的感觉是,似乎只对二维FITS文件有效。上网查,很多人也说似乎对三维FITS文件有问题,这导致我有些畏手畏脚。
       昨天事少,决定不管网上的评论,自己试一试。其实用Mathematica读数据文件是比较方便的,各种格式都用一个函数,Import,不像IDL那样对不同的格式用不同的函数。直接读入一个三维FITS文件
a=Import["xxx.fits"]
并没有像网上说的那样出错,只不过得到不是数据,而是一系列图像。上网搜了一下,发现可以加一个选项得到原始数据
a=Import["xxx.fits","RawData"]
经过测试发现,a是一个三维数组,但是和用IDL读出的数组有些不同,如果IDL读出的数组的三维分布是x,y,z,那么Mathematica读出的数组的三维是z,y,x。并且,Mathematica数组的指标是从1开始的,不像IDL那样从0开始。
       于是从FITS文件读数据的问题基本解决了。但是FITS文件还有另外一个重要的部分——头文件,这也是需要读出来的。网上搜了一圈,都是在问怎么读头文件的。其实读出头文件本身并不困难,只要把上面Import中第二个参数改为“Metadata”就可以了。
header=Import["xxx.fits","Metadata"]
但是这样得出的是一个非常复杂的列表,里面有各种单词,箭头,括号等。不过Mathematica的好处在于,数组、列表什么的其实都是同一种数据结构,所以可以自己方便地进行尝试。尝试
header[[1]]
输出的是
SIMPLE->{True,}
也就是头文件的第一项(行)。我希望得到的是NAXIS3的值,NAXIS3在第6行,尝试
header[[6]]
输出的是
NAXIS3->{228,}
但是我实际想得到的是228这个数,再尝试一下
header[[6]][[1]]
得到的是
NAXIS3
尝试
header[[6]][[2]]得到的是
{228,}
再尝试
header[[6]][[2]][[1]]
就得到
228了。这样就解决了读FITS头文件的问题。当然,其实还需要研究一下怎么用关键词直接读出数值,而不用数关键词所在的行数。

https://blog.sciencenet.cn/blog-117333-641804.html

上一篇:胡思乱想(六)能源是当今社会的基石
下一篇:Mathematica处理分子云数据的可能性(二)确定列表元素位置
收藏 IP: 159.226.169.*| 热度|

4 蒋迅 张鹏举 左沛 李宇斌

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-27 04:30

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部