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

博文

CLASS探索(二)生成数据块文件

已有 4846 次阅读 2012-5-29 23:19 |个人分类:总结|系统分类:科研笔记|关键词:学者| 数据处理, 源代码

       天文里的数据处理软件都是为了方便、提高效率而设计的,相比直接用编程语言实现节省了很多时间,因为常用操作在数据处理软件中可能只需要一个命令。但是从不同的角度看,事物的优点也往往正是他们的缺点所在。方便的同时也就少了灵活性,当需要进行一些不太常规的操作时,使用数据处理软件就比较费劲。这时候可能就需要参考数据处理软件的源代码写一些适合自己的小程序。
       最近对成图观测比较感兴趣,之前自己也进行文献调研,也进行了自己的思考,但总有一些问题想不明白。前几周学习使用CLASS的时候发现CLASS有将谱线列表(时间序列)转化为数据块的功能(用xy_map实现)。所以我决定对CLASS的相关源代码进行研究。
        上网下载一份CLASS的源代码(http://www.iram.fr/~gildas/dist/gildas-src-jan12a-beta.tar.gz)。在Google里搜索xy_map.f90可以发现这个文件在程序包中的位置(实际上也可以在Linux的shell中用grep xy_map -r ./进行搜索),可以发现此文件在packages/class/lib文件夹中。查看xy_map.f90后发现,此程序根据谱线的时间序列计算了每个点的坐标值,这是可以预料的。此外,在将时间序列转化为数据块的时候,进行了两个操作。首先是将谱线数据填到各种中最接近的坐标点的数组中去(一个数据块中某个确定x,y指标位置对应的光谱)。这是通过doplace函数实现的,在程序包的根目录下grep doplace -r ./可以找到含有doplace字段的函数,这个函数在packages/class/lib文件夹中的map-lib-misc.f90文件中。实际做的事情就是计算时间序列对应的坐标值,然后再将坐标值转换为像素值(取了整),然后把相应的光谱填到三维数组相应的位置。之后要做的事就是对这个填好的三维数组进行重新采样(其实就用某个函数进行卷积、平均)。首先用conv_fn_computation 函数计算平滑函数(类似波束),放在共用区里的xbuff, ybuff里。算卷积的时候用的是doconv函数,需要注意的是,光谱数据放在一个叫visi的数值中,visi的最前面一段存的是指标(当 i<max(nx,ny)时visi(i,j)=i),visi中的数据放在i>=max(nx,ny)的部分,按y轴的指标排序。算卷积的 时候原则上要对每条光谱进行计算,但是实际操作上可以只算一个范围,这就是指定所谓的支持集(support)。将此范围内的数据点加权平均(权重应归一 化)就可以得到最终的数据块。


https://m.sciencenet.cn/blog-117333-576398.html

上一篇:旧时光(一)看《黑炮事件》
下一篇:思考题(十四)金星凌日前后几天傍晚时金星位置为何?

0

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

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

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

GMT+8, 2024-6-3 19:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部