基于JavaScript的叶绿素荧光信号特征点自动定位软件设计

2019-05-29 11:18程盛阳郭亚夏倩
软件工程 2019年3期

程盛阳 郭亚 夏倩

摘  要:几乎所有光合作用过程都可通过叶绿素荧光反映出来,叶绿素荧光动力学技术已经成为研究植物生理最广泛的技术之一,本软件分析叶绿素荧光参数,辅助研究光合作用过程中光系统II对光能的吸收、传递、耗散、分配等过程。程序从excel表中批量读取叶绿素荧光仪测量得到的数据,在网页中运用JavaScript语言编程,自动绘制OJIP曲线,以及相应的OJIP曲率曲线、一阶导数曲线、二阶导数曲线。用户能在交互式OJIP曲线上设定区间,根据设定算法,自动定位符合条件的I点与J点,手工调整与优化特征点位置,将定位的特征点结果作为文件导出并保存,使叶绿素荧光信号研究更加方便快捷。

关键词:JavaScript;叶绿素荧光信号;OJIP曲线

中图分类号:TP391.7     文献标识码:A

Abstract:Almost all changes in photosynthetic processes can be reflected by chlorophyll fluorescence.Chlorophyll fluorescence kinetics technology has become one of the most widely used techniques for studying the physiological ecology of plants.This paper presents a set of software that analyzes chlorophyll fluorescence parameters and helps the study of photosynthesis in the process of light energy absorption,transmission,dissipation,distribution and etc.The software is programmed in JavaScript,which reads the measured data from excel tables and automatically draws OJIP curves,as well as the corresponding OJIP curvature,first derivative curve and second derivative curve.Users can use the interactive interface to set an interval,and the software will automatically locate I and J points according to the set algorithm.It supports manual adjustment and optimization of the position of the feature points.The results of the localized feature points are exported and stored as files,making it easier and faster to study chlorophyll fluorescence signals.

Keywords:JavaScript;chlorophyll fluorescence signal;OJIP curve

1   引言(Introduction)

植物光合作用为地球上的生命活动提供物质及能量基础,提高光合作用效率具有重要的意义,为了量化衡量植物叶片的光合作用,早在1931年Kautsky和Hirsh就认识到光合原初反应和叶绿素荧光之间有着密切的关系,此关系被称为Kautsky效应[1]。经过暗适应的光合材料经过照光后,叶绿素荧光先迅速上升到一个最大值,然后逐渐下降,最后达到一个稳定值。此后,随着研究的深入,人们逐步认识到荧光诱导动力学曲线中蕴藏着丰富的信息。叶绿素荧光动力学曲线如图1所示。

叶绿素荧光动力学曲线包含了十分丰富的光合作用过程变化的信息,其分析技术是近年来在光合作用机理研究中发展起来的一种新型、快速、简便、精确且整体无损伤检测植物光合作用生理状况的新技术,被视为植物光合作用与环境关系的内在探针,得到广泛应用[2]。目前,测量叶绿素荧光的瞬变现象均是通过荧光仪来测量[3],得到的叶绿素荧光测量结果就是典型快速葉绿素荧光诱导动力学曲线(OJIP曲线),该曲线上存在O、J、I、P等特征点,其中J点与I点一般定义为叶绿素荧光诱导曲线的第一、第二个峰值点。目前定位J点与I点的方法时均是使用预设的固定时间点,存在定位过程不透明、定位结果不准确、不能调整与优化I点与J点的位置等问题[4,5]。

本文中运用一种基于对象的网页脚本语言JavaScript,编写嵌套在网页中的程序,绘制叶绿素荧光诱导动力学曲线及其导数、曲率曲线。通过可交互式图表,实现对特征点的可视化定位,且支持对定位结果的手动调整,解决了现在传统仪器存在的问题,可支持多数据调整,及调整后下载的功能。

2   系统设计(System design)

2.1   软件系统结构与处理流程

程序从测量数据文件读取OJIP曲线的坐标值,根据用户的选择,执行相应的处理,包括拟合曲线、一阶与二阶导数、曲率等计算,绘制相应的图形曲线,供用户进行交互式的分析。

程序流程包括数据导入、数据处理、OJIP曲线可视化,目标曲线绘制输出等,如图2所示。

2.2   导入数据与格式转换

OJIP曲线的坐标值以二进制数据格式,存放在Execl文件中,JavaScript提供了File API用于读取文件,其中FileReader对象的readAsBinaryString()方法允许浏览器直接将所读取的坐标原始值,作为二进制字符串存储到其result属性中,直接供后续程序解析。

由于FileReader.readAsBinaryString()是W3C组织在HTML5中新提出的文件API,一些浏览器,例如Internet Explorer无法兼容此方法。这时,先对浏览器是否支持此方法进行测试,如果不支持,就使用FileReader.readAsArrayBuffer()方法进行替代。将原始的二进制数据Blob[6]读取为字节数组ArrayBuffer,再处理转换为以Base64格式编码的字符串。

读入二进制字符串或Base64字符串后,调用js-xlsx库,可以解析数据为CSV、html、json等格式,本文使用CSV格式,生成一行字符串。excel表中每行单元格数据从左到右顺序保存,以逗号分隔,从上到下不同数据行以\n符合连接。

再通过字符串处理,将CSV字符串转存为二维数组,数组内每个元素的内容均与原工作簿中对应位置的数据相同[7]。

2.3   数据处理与曲线拟合

2.3.1   曲线拟合

程序每读取一个数据文件创建一个对象,对应建立一个OJIP曲线,原始数据与计算结果都作为对象属性存储。同时,对象定义了拟合、求导、求曲率等方法,可根据需求进行调用。

为了得到OJIP曲线,要根据导入的曲线横坐标离散值,拟合为函数表达式的形式,其计算方法如下:

2.3.2   曲率计算

求出OJIP的拟合曲线后,再求出其一阶与二阶导数表达式,将坐标点带入一阶与二阶的表达式中,求出该点处的导数值。曲率计算公式如下所示,其中与分别表示曲线的一阶与二阶导数:

2.4   交互定位特征点

设计的软件应用echarts图表库插件将离散的坐标点绘制为折线图。echarts是一个纯JavaScript的图表库,可以运行在PC和移动设备上,兼容当前绝大部分浏览器,可提供直观、可交互的数据可视化图表[8]。

绘制的图表分两种:特征点预选择图表、特征点展示与优化图表。特征点预选择图表展示所有输入的OJIP曲线的曲率图形,用户在预判I点与J点的大致位置后,通过鼠标刷选确定特征点的预选区间,程序便在该区间内自动寻找特征点,进入特征点展示与优化图表。

特征点展示图表中绘制的OJIP曲线,以及其曲率、一阶、二阶导数曲线,各曲线上均标注出自动定位的I点与J点,用户可以在任一图表上对I点与J点的位置进行微调。通过选择不同的OJIP曲线,可调整优化输入的各个OJIP曲线。

2.4.1   特征点预选择图表

程序预定义了一个chartOptions变量,用于存储图表的各项设置。在计算得到绘图所需要的各点坐标后,将每个待绘制的点的坐标插入到chartOptions.series属性中,并定义其类型为line,即折线图。通过chart.setOption()方法更新图表,使折线图显示在页面上。

为了实现通过鼠标刷选指定特征点区间的功能,需要再次将各个待绘制的点的坐标插入到chartOptions.series属性中,更改设定其类型为scatter,即散点图。这是由于echarts的折线图不支持brush()方法,无法直接在折线图上刷选,而使用散点图则解决了此问题。将散点图的symbolSize设置为0,可以使散点不显示,用户在操作时观察到的效果就和直接在折线图上刷选相同。

程序记录图表上被选中的数据点的序号,存储在一个数组中。由于同一个区域中数据点的序号是连续的,可以将序号分离为几个数组,分别对应选中的各个区域。对于每一条曲线,程序都在选中的区域内寻找极大值点作为特征点。

2.4.2   特征点展示与优化图表

程序将自动找到的I点与J点的坐标以markPoint类型插入到chartOptions.series属性中,同时也插入到各OJIP曲线对象的属性中。程序监听markPoint上的点击事件,当用户需要调整特征点的位置时,点击需要移动的特征点,程序会记录被点击的特征点的序号。之后在用户点击移动按钮时,程序更新特征点的位置,并按照新位置重繪图表。

2.4.3   数据导出

程序将需要导出的数据存贮到一个以数组为元素的数组中(array of arrays),使用XLSX.utils.aoa_to_sheet()方法将它转换为一个临时的sheet对象。其中,外层数组中的每个数组元素会成为sheet的一行,而内层数组的每个元素则成为一行中的各个单元格。将sheet对象添加到一个workbook对象之后,使用XLSX.write()方法,生成一个待输出的二进制文件。使用JavaScript提供的saveAs()方法,可以使浏览器以下载文件的方式将此文件保存到本地,完成数据的导出。

3   结论(Conclusion)

本软件自动绘制OJIP曲线,以及相应的OJIP曲率曲线、一阶导数曲线、二阶导数曲线。用户能在交互式OJIP曲线分析叶绿素荧光参数,辅助研究光合作用过程中光系统II对光能的吸收、传递、耗散、分配等过程,使叶绿素荧光信号研究更加方便快捷。

可进一步运用物联网技术,通过远程智能化的叶绿素荧光信号仪,在线实时报送数据,构成采样数据库,软件分析系统直接实时读取数据库数据,实现远程分析与自动优化。

参考文献(References)

[1] Papagorgiou G.Bioenergetics of Photosynthesis[M].New York:Academic Press,1975:319-337.

[2] K.Rohá?ek.Chlorophyll Fluorescence Parameters:The Definitions,Photosynthetic Meaning,and Mutual Relationships[J].Photosynthetica,2002,40(1):13-29.

[3] G H Krause,E Weis.Chlorophyll Fluorescence and Photosynthesis:The Basics[J].Annual Review of Plant Physiology and Plant Molecular Biology,1991,42(1):313-349.

[4] 王子毅,張春海.基于ECharts的数据可视化分析组件设计实现[J].微型机与应用,2016,35(14):46-48;51.

[5] 温国胜,田海涛,张明如,等.叶绿素荧光分析技术在林木培育中的应用[J]应用生态学报,2006,17(10):1973-1977.

[6] 王莉敏,梁正和,段全锋.基于HTML5大文件断点续传的实现方案[J].计算机与现代化,2016(03):91-95.

[7] 林立云.推荐一种读和写CSV文件的程序设计方法[C].Proceedings of 2011 National Teaching Seminar on Cryptography and Information Security(NTS-CIS 2011),2011,1(3):93-95.

[8] 万文博,华灯鑫,乐静,等.基于激光诱导叶绿素荧光寿命成像技术的植物荧光特性研究[J].物理学报,2015(19):68-74.

作者简介:

程盛阳(1996-),男,本科生.研究领域:物联网技术.

郭   亚(1977-),男,博士,教授.研究领域:物联网技术.

夏   倩(1994-),女,硕士生.研究领域:物联网技术.