脚本语言在SVOM科学中心的应用*

2011-01-25 07:53黄茂海刘飞飞
天文研究与技术 2011年2期
关键词:脚本流水线数据处理

陈 晟,黄茂海,刘飞飞

(1.中国科学院国家天文台,北京 100012;2.中国科学院研究生院,北京 100049)

天基多波段天文变源监视器(Space-based Multi-band Astronomical Variable Object Monitor,简称SVOM)项目是中法合作建造的天文小卫星[1-2],用于探测伽玛暴(Gamma Ray Burst,GRB)及其余辉,预计2014年发射。SVOM的科学目标是检测所有已知类型的GRB,通过天地配合快速、可靠、精确地提供GRB的位置信息,测量GRB的能谱和光变信息,并快速辨识GRB余辉。

针对项目的科学任务需求,SVOM项目共包含中法双方提供的4个星上载荷和3台地面设备。4个星上载荷包括1个X射线和伽玛射线相机(CXG),1个伽玛射线监视器(GRM),1台软X射线望远镜(SXT)和1台光学望远镜(VT)。3台地面设备则包括2台1 m口径望远镜(GFT)和1个广角相机阵列(GWAC)。卫星发现新的GRB爆发后,将迅速进行定位和测光,并通过地面上的VHF网络即时把GRB触发警报传播给地面后随观测系统,地面后随观测系统再进一步进行高精度的观测。

SVOM卫星拥有4种观测模式。GRB观测模式对GRB爆发进行监测、报告、后续观测;日常观测模式通过从科学界收集观测提案,按照提案的要求进行常规天文观测,并进行数据处理;快速反应和机遇目标观测模式对偶然发生的、值得观测的目标进行观测;定标与维护安全模式则对航天器和有效载荷进行工程维护或故障排除、系统修复。

1 脚本语言与SVOM数据处理

1.1 SVOM数据处理特点与要求

SVOM的项目需求与运行模式决定了其科学数据不同于传统的地面天文设备的观测数据,而具有以下特点:

第一,数据关系复杂。数据处理人员需要将来自有效载荷仪器的科学数据与卫星平台、轨道、空间环境、地面配合观测设备等大量数据结合起来,经过多级流水线处理才能形成可发布的最终产品。

第二,处理方法试验性强。处理方法一方面要根据卫星平台状态、载荷状态、空间环境、个体GRB事件的特性、每个日常观测提案的特性等因素的变动经常调整,另一方面也会随着处理算法的改进而变动,因此不宜使用传统的固化程序进行处理。

第三,时效性要求高。GRB观测要求异常高速的天地协同观测能力,需要对每一个GRB事件进行快速处理并立刻发布报告产品,以供后续观测使用。

第四,用户需求广泛多样。SVOM项目由中法合作建造,双方的载荷需要协同使用,统一管理。其主要用户还将包括来自全世界的天文学家。不同国家不同文化的用户对处理方法的易用性、灵活性都有较高要求,很多用户希望按照自己的思维方式做定制处理。

针对SVOM观测数据的这些特点,提出了基于脚本语言的数据处理方法。开发高效、配置灵活的脚本语言,让仪器工程师和天文学家等非专业软件开发人员都可以在短时间内开发出高质量的处理程序,从而充分适应多变的需求。

1.2 脚本语言简介

脚本语言(Scripting Languages)是一种新兴的致力于高效灵活开发的人性化编程语言。与传统的系统编程语言(System Programming Languages)不同,脚本通常可以交互式的解释运行而非编译,并且拥有简单、易学、易用的语法,能够快速灵活地完成程序编写。应用程序的终端用户可以利用脚本语言按自己的需求定制程序,不再单一地扮演使用者的角色。

相比于以C、C++、Java为代表的系统编程语言,脚本语言的特点主要表现在以下几个方面:

(1)脚本语言一般都是解释执行,节省了大量编译、连接的时间。地面系统软件往往包括几十万行规模的代码,整体编译一遍即使在专用的编译服务器上也需要2 h以上。如果不使用脚本编程去适应可能随时变化的需求,任何一个微小修改的实现与测试将变得非常繁琐。

(2)解释执行的机制还给脚本语言带来了很好的交互性。程序可以逐行单步执行、随时跳转,即时看到执行结果,并修改下一步的操作,这让程序调试变得非常方便。

(3)脚本语言还可以实现运行时的热编码功能,给应用程序带来很大的适应性和可用性。例如,服务器端根据用户需求即时生成的Javascript脚本,脚本在浏览器中解释执行,达到动态渲染页面的效果。Erlang脚本的代码热拔插特性使其在系统不中断运行的情况下,随时更新自己的模块,一段结构良好的Erlang脚本可以在其整个生命周期中一直保持运行,这对于要求高可用性的场景来说是一个非常引人注目的特性。

(4)脚本语言通常注重简洁实用,既有很强的可读性,又能带来很高的开发效率。同样功能的系统编程语言常常比脚本语言长5~10倍。统计显示,一条典型的脚本语言语句要执行几百甚至上千条机器指令,而系统编程语言的一条语句一般只执行5~10条指令[3]。例如:Perl可以像使用一个整数一样直接使用正则表达式,而Java至少需要创建2个对象(Pattern、Matcher)、调用3个方法(编译、匹配、查找)才能完成一次正则匹配。

(5)脚本语言的灵活性还表现在语法要求不那么严格,大部分脚本语言采用弱类型变量(Python、Jython除外),一个字符串可以随意与一个整数、甚至一个函数进行操作而不需要强制类型转换。弱类型使得脚本语言可以更好地兼容来自不同系统、不同语言的代码,更好地发挥粘合剂的作用。

(6)脚本语言自由的访问规则,自动的内存管理,以及强大内置类库,也让开发者能受益于基于组件(component)的编程,从而更专注于程序的业务逻辑,而非计算机或者编程语言本身。

(7)使用系统语言编写的模块在脚本的粘合下,系统语言的性能优势和脚本语言的灵活性互为促进,使用范围大大增强。最广泛的例子就是Unix里的shell脚本,大部分Unix命令使用C语言编写,而完成系统和用户任务的几乎由shell脚本完成。Java平台的广泛应用,也推进了大量基于Java的脚本语言的发展,如Jython、JRuby、Groovy。

1.3 脚本语言的发展趋势

脚本语言刚诞生的时候,仅仅被当作批处理和控制台脚本等粘合工具使用,主要作为高级语言的辅助,处于非主流地位。随着脚本语言自身的不断发展,其内置类库越来越强大,逐渐可以不依赖于其他高级语言,独立开发出完整、复杂的应用程序。特别是随着因特网的广泛应用,对程序的灵活性、适应性和开发周期提出了更高的要求,脚本语言得到了空前飞速的发展,逐渐登上了主流编程语言的舞台。到了今天,脚本语言已经在TIOBE发布的编程语言排行榜[4]的前十名中稳占五位(PHP、Python、JavaScript、Perl、Ruby,Visual Basic未包含其中虽然大量 asp程序很可能使用 VB Script编写)。

随着计算机硬件性能指数级的迅速提高,解释执行带来的性能损失也越来越微不足道。不少脚本语言还发展出即时(Just-In-Time,JIT)编译的运行方式,在程序首次运行时将脚本进行编译,这对于虽然需要经常修改、但是修改次数远小于程序执行次数的场景特别适用,这样既享受了脚本语言带来的酣畅淋漓的开发效率,又在很大程度上避免了运行效率问题。而当前最流行的WEB程序绝大部分都符合这样的场景,这也是脚本语言如今在WEB开发中占据绝对主导地位的重要原因。

与此同时,现代系统编程语言也开始意识到脚本语言的意义,逐渐开始学习和吸收脚本语言的优势,使得脚本和系统编程语言之间的界限越来越模糊。Google最近推出的热门编程语言GO语言便是以高速编译为亮点,号称集合了C的性能和Python的开发效率。而Sun公司更是在Java6中提供了对脚本引擎的全面支持(JSR-223[5]),只要遵循JSR-223的接口规范,用户完全可以根据项目需求量身定制自己的脚本语言,并在Java中对脚本进行解释或编译,脚本与Java的整合从此变得空前简单。

1.4 脚本语言与SVOM数据处理

脚本语言的上述特点使其特别适合于SVOM的数据处理。

首先,脚本的交互性非常适合处理大量关系复杂的数据,通过脚本的单步执行,数据分析员可以即时查看数据内容和处理结果,并对后面的处理方法做出改进。

其次,脚本无需编译即改即用的特点也适合于SVOM这样数据处理需求经常变动的项目。SVOM的数据处理系统需要支持SVOM从研发测试到在轨运行的整个项目周期,由于对有效载荷特性的认识的深化、定标方式的改进、定标要求的变更,需要数据处理方法在受控情况下改进,保证数据处理质量随着用户对有效载荷和处理方法进行的改进而提高。特别是GRB的偶然性与SVOM的高时效性,更要求数据处理系统能够在可控范围内快速完成修改。

此外,脚本语言的易用性在SVOM项目中也具有重大优势,一方面专业的软件开发人员在项目前期原型系统开发中效率更高、代码更可读,另一方面仪器工程师、项目科学家、时间分配委员会专家等非专业的参与者也能以更平缓的学习曲线,开发出质量更高的处理程序。

2 脚本语言在SVOM科学中心的应用

2.1 SVOM科学中心

SVOM科学中心是SVOM项目科学数据处理的核心。SVOM卫星的下行原始数据和测控数据在科学中心进行合并,通过定标等多级流水线处理,最终获得具有科学价值的数据产品,供广大天文学家使用。SVOM科学中心的数据处理系统(DP)是科学中心的核心子系统之一,主要提供以下功能:

(1)数据产品的定义与生成:包括数据建模和标准产品生成;

(2)数据产品的存储与访问:产品的读取、保存、修改、删除、查询等,存储地点既可以在本机,也可以基于网络;

(3)数据处理流水线:针对不同观测模式提供标准的数据产品处理流水线;

(4)强大的数学和绘图类库:可以对光谱、图像、数据表天文数据等进行可视化的交互分析。

该系统除了部署在科学中心服务器上之外,还可以安装在任何一台个人计算机上,由用户按照自己的需要更新定标数据,创建、修改数据处理流程,或进行进一步的科学分析,从而更方便地为项目科学家、仪器工程师以及广大天文学家服务。

根据已经取得的预先研究成果,SVOM科学中心数据处理系统拟使用Java语言开发,避免多平台部署问题和主硬件平台迅速过时的风险,采用完全面向对象的设计,并把Jython[6]作为脚本语言嵌入到整个数据处理中,大大提高系统的开发效率与可配置性。系统利用赫歇尔空间天文台的交互式分析环境HIPE(Herschel Interactive Processing Environment[7])提供的强大类库和工具包。HIPE是欧空局赫歇尔开发团队贡献给天文学界的一款开源软件,中国科学院国家天文台自2004年起就加入该项目的软件研制,包括作者在内的项目团队贡献了多个核心组件[8-9]。将HIPE在赫歇尔项目中的成功经验,结合SVOM项目的具体需求,应用到SVOM科学中心的数据处理系统中。根据SVOM项目进展要求,科学中心的研发目前正处于原型验证阶段。

2.2 脚本语言Jython

Jython是脚本语言Python的Java实现,是一种高级、动态、面向对象的脚本语言。作为一款开源的自由软件(Free Software),Jython在商业和非商业用途都可以免费使用和发布,友好的使用协议最大限度地降低了授权风险。

Jython完全继承了Python简洁精悍的语法,既极大地减少了编程的代码量,又降低了新语言的学习曲线。Numpy、Scipy、Pyraf等Python类库的出现,已经在天文学家中积累了大量Python用户,而Jython语法与天文学家常用的IDL也较为接近,即使不熟悉Python的用户也可以进行较为平滑的过渡,享受Jython带来的免费和跨平台的优势。

Jython能够直接与内存中的Java对象进行交互访问,从而实现与Java语言无缝集成。一方面Jython可以直接使用Java类,从而使大量Java类库和API可以应用在脚本编程中,这里不仅包括Java公共类库,还有本系统为天文学家定制开发的强大的数学类库(numeric包),大大弥补了Jython在数学处理方面较为薄弱的缺陷。另一方面,Java也可以通过PythonInterpreter实现对Jython脚本的控制(见图1),包括将内存中的Java对象注入Jython和把Jython对象转为Java对象。

图1 Java与Jython无缝交互Fig.1 Seamless interaction between Java and Jython objects

2.3 利用Jython获取SVOM数据产品

一个基本的SVOM数据产品(Product)包含产品的元数据(Metadata)和数据表两部分。元数据与天文学家常用的FITS文件头信息一一对应,记录了观测时间、观测目标、观测仪器等等。数据表可以是整数、浮点数、字符串组成的数组(1~5维)或表格(列数不限),以及由此衍生出的光谱数据表(1、2维数组)、图像数据表(2维数组)等。

由此基本数据产品可以衍生出多种科学数据产品[10],具体如图2。

(1)触发报告产品(GRBAlertProduct):GRB触发信号,包括GRB爆发时间、位置、测光红移等基本信息;

(2)观测数据产品(SpaceObservationProduct):星上观测产品,包括载荷观测数据和航天器信息,四个载荷分别由此衍生出各自的观测产品;

(3)地基观测产品(GroundObservationProduct):由地面观测系统获得的观测数据。

所有数据产品都可以通过数行Jython代码方便地读写与查询,大大方便了天文学家获取SVOM的科学数据。图2显示的Jython脚本片段的功能是从远程服务器(SVOM Achieve Server)查询指定观测者的VT产品、检查其内容并保存到本地。脚本对本地和远程服务器的访问方法完全一致,即数据存储的物理位置对访问者是透明的。查询结果将以FITS格式按指定策略分类保存到本地计算机上。

图2 SVOM数据产品结构Fig.2 Structure of the SVOM data product

2.4 基于Jython的SVOM数据处理流程

SVOM的原始数据(Raw Data)从地面站接收后,经过任务中心的译码、解包等预处理,成为未经处理的包括所有信息的0级产品。在0级产品的基础上,科学中心根据载荷类型、观测事件和观测模式对数据进行分类,使用辅助数据注解,并将数据从工程单位转换为物理单位,形成1级产品。1级产品经过数据处理流水线的进一步处理,去除仪器效应形成定标后的2级产品,然后经过更多的科学分析得到高层的3级产品,包括GRB流量、光变曲线、GRB警报等等。图3详细展示了SVOM的数据处理流程。

图3 SVOM数据处理流程Fig.3 Flowchart of SVOM data processing

根据SVOM项目需求,卫星发现GRB发回触发报告后,地面系统需要快速做出响应,因此SVOM的处理流水线又分为快速处理和详细处理两部分。快速处理的对象是GRB触发报告产品,采用批处理自动完成,其目的是快速提供光学对应体的位置和亮度,为地面大望远镜的光谱和测光观测提供指导。而详细处理则是处理观测数据产品。这部分可以加入人工干预,最终完成数据的深加工过程。例如:光学数据处理的流水线处理部分(预处理部分)包括仪器效应的改正和定标。数据的深加工过程包括:(1)对光学对应体的证认,这是对星载光学观测数据处理的第一重要任务;(2)对光学对应体的测光;(3)光变曲线的生成。

科学中心所有数据处理流水线都拟使用基于Jython的脚本语言编写。各级流水线以任务模块(Task)为基本单位,任务模块是数据处理的基本组件,完成诸如去宇宙线、去温漂等基础操作,可以使用Jython脚本编写,也可以用高级语言Java完成。Jython将各种任务模块按需求的逻辑关系整合在一起,形成整条数据处理流水线。

科学中心提供的标准数据处理流水线将通过数据驱动自动完成。同时,经处理的0~3级数据产品和标准处理流水线脚本本身都发布给天文学家,天文学家可以直接使用自动生成的高级产品进行快视浏览,也可以在标准处理流水线的基础上按各自独特的需求进行交互式的分析并做出自己的修改,修改后的脚本无须编译就可以在用户计算机上直接运行,在任意一级产品的基础上处理得到自己想要的科学数据。另一方面,随着将来对仪器特性认识的深化和定标产品、定标方法的更新,用户只需下载新的标准流水线脚本和定标产品,就可以将已有的产品重新处理,得到更高质量的科学成果。

2.5 利用Jython的Task Framework

为了软件的可重用性,大部分基础处理操作被封装成一个个小模块。Task Framework则为这种处理模块定义了统一的模板,它设定了输入输出格式、处理参数与默认值(包括可选与必选),以及记录处理历史、显示帮助信息等等。众多任务模块通过Jython脚本按需求的逻辑关系整合在一起,形成数据处理流水线。所以,任务模块也是上层的Jython流水线与底层Java组件(数据产品、数据存储等)通讯的桥梁(图4)。开发者在此框架下,只需指定输入输出参数,编写处理方法,就能实现一个支持各种Jython特性的完整的处理模块。

图4 Task是流水线脚本与Java底层组件交互的桥梁Fig.4 TASK as an interactive bridge between the pipelines and Java infrastructure

一个Task通常由两部分构成:

(1)签名(Signature):用来标识Task的唯一性,并存储任务执行的输入输出、处理参数和历史记录,签名中还存储着任务的进度信息,方便外部随时监视任务的执行状态。

(2)执行(Execution):即具体的处理方法实现,Task的执行包括3个方法:预处理(Preamble)在正式处理之前执行,例如检查输入参数是否合法;处理(Execute)过程则包含了具体的处理算法;后处理(Postamble)在处理之后执行,默认为空,开发者可以按需设置。3个方法都是无参数方法,因为所有中间信息都保存在签名中。

图5 Task Framework类图Fig.5 A class diagram of the TASK FRAMEWORK

Task Framework的结构如图5,任务模块通过实现JythonEnhancedAccess和JythonCallable接口与Jython脚本进行通讯。JythonEnhancedAccess接口继承自 JythonPropertyAccess和JythonDictionaryAccess两个接口,两个接口分别实现了在Jython脚本中方便地访问Java类的成员变量,前者以object.property的方式调用,后者则以 object[“key”]的方式访问。JythonCallable接口则是允许result=myTask(value)的方式直接执行任务得到结果,将传统的先构造对象(task=myTask(value))再调用其方法(result=task.perform())的两个步骤合二为一,这样的实现使得所有任务模块的调用可以一行完成,方便了使用。JythonCallable接口的实现方法如下:

2.6 Jython的集成开发环境HIPE与可视化交互分析

HIPE(Herschel Interactive Processing Environment)是包括中科院国家天文台成员在内的欧空局赫歇尔开发团队贡献给天文学界的一款开源软件,提供了基于Jython脚本的强大的集成开发环境,包括可以单步执行的脚本编辑器、命令行接口、任务变量列表、历史日志等功能。

图6 HIPE的用户界面Fig.6 GUI of the HIPE

在HIPE中,用户(图6)既可以使用其强大的脚本编程环境进行脚本调试,也可以通过各种可视化工具进行交互式的分析。图7展示了HIPE的绘图和光谱分析工具。

图7 HIPE的绘图(左)与光谱分析工具(右)Fig.7 The plot package(left panel)and spectral analysis tools(right panel)of the HIPE

2.7 利用Jython处理SVOM科学数据应用实例

获得精确的GRB定位是SVOM项目的基本科学需求。GRB的定位流程是先从CCD图像中提取亮源,再将提取的亮源表与已知的亮星表进行匹配,从而获得GRB的精确位置[11]。下面的Jython脚本演示了从图像中提取亮源的过程。脚本调用了HIPE提供SourceExtractor任务,支持当前通行的DAOPHOT[12]、Bayesian[13]两种提取算法。

这样通过短短的几行脚本,就实现了提取亮源和结果展示。数秒后脚本执行完成,结果如图8。提取结果sourceList也是一种数据产品(SourceListProduct),包含一个表格数据集(TableDataset)和相关属性信息(MetaData),表格里记录了所有提取出来的源的坐标、尺度和流量等信息。用户可以用命令行将结果输出,也可以方便地利用可视化工具浏览表格内容,或选取某几列数据绘制成图表。

图8 亮源提取结果。左上图为原始图像;右上图为提取结果,其中黄色圆圈代表提取出的源;左下、右下图分别为结果的列表和绘图展示Fig.8 Results of source extraction.The upper-left panel is the original image.The upper-right panel shows the result of extraction.The table and plot of the results are shown on the lower-left and lower-right panels,respectively

2.8 Jython脚本优化

较慢的运行速度是脚本语言一个不可忽视的问题,不过所幸的是,性能问题完全是一个可以预见的问题,这对于空间项目来讲尤其重要。如果系统性能在地面测试中不能达标,可以采用优化算法、提高计算机性能等方式应对,直到性能达到要求。相对于固化编程后需求变更而又找不到程序员修改的情况,这并不是一个灾难性的问题。

在实际使用中,采取有针对性的优化,可以大大缓解性能问题的影响。软件工程的经验告诉我们,90%的软件性能问题出在10%的代码中,只要对软件进行性能测试找出性能瓶颈所在,就可以极大改进软件性能。

循环是数据处理中最常用的工具之一,而直接在脚本中做循环遍历是一个非常耗时的操作,因此Jython本身与numeric类库都提供了大量函数来避免直接在脚本中使用循环。Jython提供很多诸如map()、filter()、reduce()、zip()等函数对数组序列进行高效的遍历,numeric包里的大量构造函数和修饰方法也尽可能地将循环转移到Java内部执行。所有内置数组类的get()、set()方法都使用内部循环定义,使用where()方法则可以选择操作多个数组元素。例如:

map、filter方法可以将对数组中的每一个元素执行指定函数,循环在Jython底层的C语言API中执行,从而使效率大大提高。如下面的代码对data数组中所有元素使用str()函数(转为字符串),速度大大优于在循环中一个一个操作:

Jython还继承了Python语言中序列理解(List Comprehension)的精妙之处,不但可以提高效率,还能显著增强程序的可读性,让原本多层嵌套循环在一行内实现。如果需要有选择地对序列中某些元素执行操作,map、filter函数需要自定义函数来过滤元素,序列理解这时就可以发挥作用了。下列代码可以将data数组中所有Count属性大于4的元素乘3,得到一个新数组:

Jython中使用+做字符串连接的耗时是四次方于字符串长度,而使用join函数连接耗时是线性的。

3 总结与展望

SVOM的科学需求和数据特点需要一个简单、高效、能够根据需求快速做出变更的数据处理系统。由于脚本语言是解释执行而无需编译,给编程带来很大的灵活性,特别适合于开发生命周期长、需求经常变化的项目,而脚本语言高效灵活的语法和交互式的特性也特别适合于处理和分析SVOM的科学数据。将基于Jython的脚本语言应用在SVOM科学中心的数据处理中,作为其数据处理流水线编写和交互式分析的工具,其易用性和灵活性不仅大大提高了软件工程师的开发效率,也让仪器工程师和天文学家等非专业软件开发人员可以在短时间内开发出高质量的处理程序,从而充分适应多变的需求。

同时,SVOM的需求特点在很大程度上反映了空间天文项目的共性。脚本语言在SVOM数据处理系统中的成功运用,不但为SVOM科学中心的数据处理等系统提供优秀的解决方案,也会为国内其他空间天文项目的数据处理方法研究开辟新的途径。可以预见,基于脚本语言的空间天文数据处理系统通过对多个空间天文项目的长生命周期的支持,将不断的发展和完善,逐渐形成一套通用的天文数据处理系统。目前我们的系统已经提供了虚拟天文台(VO)数据的导入接口,未来将可以提供更多的与虚拟天文台的无缝交互功能,从而使我们的系统成为一个更加通用的天文数据处理平台,从而更好为广大天文学家服务。

致谢:感谢SVOM项目为本项研究提供必要的基础环境,同时感谢赫歇尔地面段研发团队提供的优秀类库支持,特别要感谢团队中的中方软件工程师李波、李晶晶做出的杰出贡献。

[1]You Zheng,Guo Jian,Hao Jinxin,et al.SVOM:Chinese First Space Based Astronomy Observatory [C]//34th COSPAR Scientific Assembly,2002:Q-1-02.

[2]Paul Jacques,Wei Jianyan,Zhang Shuangnan,et al.The Chinese-French SVOM Mission for Gamma-Ray Burst Studies[C]//37th COSPAK Scientific Assembly,2008:2368.

[3]Ousterhout J.Scripting:Higher Level Programming for the 21st Century [J].IEEE Computer 1998,31(3):23-30.

[4]TIOBE Programming Community[EB/OL].http://www.tiobe.com.

[5]JSR 223:Scripting for the Java Platform [EB/OL].http://jcp.org/en/jsr/detail?id=223.

[6]Jython [EB/OL].http://www.jython.org.

[7]Ott S,Bakker J,Brumfitt J,et al.The Herschel Data Processing System [C]//Astronomical Society of the Pacific,2006(315):516.

[8]黄茂海.欧洲空间局的赫歇尔(Herschel)空间天文台 [J].深空探测研究,2005(12):31.

[9]Guest S,Huang M.NAOC-SPIRE Collaboration Evaluation Report[R].SPIRE-RAL-REP-003180,2009.

[10]黄茂海.中法合作天文卫星(SVOM)项目科学地面段方案设计报告 [R].2008:9.

[11]Wang T,Qiu Y,Cai H,et al.A Fast Onboard Star-extraction Algorithm Optimized for the SVOM Visible Telescope[J].Science in China Series G,2010,53(1):51-55.

[12]Stetson P.DAOPHOT-A ComputerProgram forCrowed-field StellarPhotometry [J].Astronomical Society of the Pacific,1987(99):191-222.

[13]SavageR,OliverS.Bayesian MethodsofAstronomicalSourceExtraction [J].The Astrophysical Journal,2007,661(2):1339 -1346.

猜你喜欢
脚本流水线数据处理
酒驾
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
安奇奇与小cool 龙(第二回)
流水线
快乐假期
小编的新年愿望
报废汽车拆解半自动流水线研究
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用
Matlab在密立根油滴实验数据处理中的应用