EAST等离子体剖面数据可视化①
2018-08-17秦雅丽肖炳甲张睿瑞袁旗平
秦雅丽,肖炳甲,,张睿瑞,袁旗平
1(中国科学技术大学 核能学院,合肥 230022)
2(中国科学院 等离子体物理研究所,合肥 230031)
先进实验超导托卡马克(Experimental Advanced Superconducting Tokamak,EAST)是一种大型的核聚变研究装置[1].就EAST装置而言,进行大量的等离子体物理实验,并且收集等离子相关实验数据.针对这些数据展开研究,进而可以更好地发挥等离子体物理数据的价值,更好的给未来的聚变堆相关技术带来突破性的进展.EAST已经初步建立较为完善的基于MDSplus的数据存储与访问的分析数据数据库,EAST分析数据数据库亦称之为EAST二级库,它存储了来自不同子系统(诊断、加热、加料等)的具体物理量数据信息.目前大部分的二级库数据可以在一炮放电结束后自动计算并存储到MDSplus数据库中提供世界范围内的用户访问.
随着大数据时代的来临,数据可视化技术越来越重要.数据可视化技术利用图形图像技术原理,将数据以图形图像的形式表现出来,从而实现了用户和数据的交互处理模式.借助于图形化手段,从不同的维度观看分析数据,并且更高效的传达数据信息,避免了观察分析各方面数据的局限性.目前EAST上已经发展了很多的可视化数据分析软件用于实验数据的分析,比如,对EAST低温历史数据进行可视化[2],对EAST工程数据进行可视化[3],对EAST等离子体放电位形数据进行可视化[4].随着EAST二级库数据的建立,诊断系统的研究人员会编写代码用于查看分析本诊断获得的剖面数据,但是这些程序通常使用Matlab这一商业化软件开发,并且程序缺乏图形用户界面,给程序的发布和使用带来一定的困难.同时程序仅针对自身诊断,缺少处理来自不同诊断系统的等离子体剖面数据的比较分析功能.
基于以上背景,本文将EAST等离子体剖面数据进行可视化,可以分析比较来自不同诊断系统的数据,以便相关科研人员通过图形图像方式更加直观的了解等离子放电实验中隐含的规律,从而为他们的下一次放电实验提供更形象直观的数据分析.
1 系统设计
1.1 功能需求分析
系统实现等离子体剖面数据的可视化和炮间分析等离子体剖面数据的可视化,都需要提供以下功能:数据获取、数据处理、图形绘制、可视化交互式操作.最重要的是,实现炮间分析等离子体剖面数据的可视化还需要提供线程机制,来提高程序效率和系统稳定性.
1.2 技术选择
数据获取:文献[5–7]都是基于MDSplus获取数据,速度快且运行稳定.MDSplus以树状结构存取数据,并提供诸如C、Java、Python等访问接口,在实现等离子体剖面数据可视化的程序设计过程中,我们采用Python语言来访问MDSplus数据库里的等离子体参数,这些数据存储在不同的MDSplus树中.
数据处理:在Python语言中,Numpy数组是数值数据的标准表示形式,并能有效地用高级语言实现数值计算[8].和原生的Python相比,用Numpy来实现数值计算,不仅代码简单,而且速度非常快.故选择Numpy进行数据处理,比如,求矩阵的均值、转置等数值计算.
图形绘制:图形的绘制用Python的绘图库Matplotlib,这个库是交互式绘图的最佳选择.同时,Matplotlib是一种优秀的2D和3D图形绘图库[9].因此,系统用它来绘制二维图形,绘制出来的图形可以放大、缩小、平移,并且以像素图像的形式保存下来.用户可以到相应的存储位置中查看图形,实现了可视化的灵活应用.
交互式操作:数据可视化与交互式设计紧密联系在一起,文献[10]表明用户与数据的交互可以帮助用户对信息进行更好的探索.GUI即人机交互图形化用户界面设计已经被广泛使用,相对于命令行界面而言,能够产生更好的视觉效果.
本文在Linux系统下,利用Python版本的Qt库PyQt4来开发用户图形界面.虽然Python语言的GUI编程方案有很多,但是PyQt的文档比其他GUI编程库的文档要丰富的多.最重要的是,Qt提供了一个辅助设计工具Qt Creator,大大减轻了用户图形界面设计者的工作量.最后,考虑到本系统的跨平台使用,选择PyQt.基于PyQt这些优势,选择PyQt来设计本系统的用户图形界面.
炮间分析等离子体剖面数据的可视化:在等离子体放电实验期间,等离子体的剖面数据在每次放电的几分钟以后就可以获取到,我们提供炮间分析功能,在控制室的大屏幕绘制最新炮号的剖面数据,为下一炮放电实验决策提供数据分析.系统设计的过程中利用MDSplus提供的事件机制及Python的线程机制中的定时器.事件类用于监听等离子体放电期间发出的事件,系统接收事件,自动绘图.定时器用于在指定时间后调用绘制图形的函数,实现图形在用户设置的时间间隔内依次动态显示相应的数据图形.
1.3 方案设计
EAST等离子体剖面数据的可视化流程图如图1所示分为三个阶段:生成界面,获取数据,进行绘图.首先,利用PyQt编写一个实现EAST等离子体剖面数据可视化的用户图形界面,在界面上设置一系列控件,同时,利用Matplotlib生成绘图窗口,并对这些控件和绘图窗口在界面上进行布局.其次,用户在界面上对一些界面控件进行设置,并且获取这些数据信息.最后,从MDSplus数据库中获取数据,并根据界面上的设置信息展现在Matplotlib生成的绘图窗口中.如果缺少一些必要的数据信息,要求用户将信息填写完整,再进行绘图.
图1 等离子体剖面数据可视化流程
2 系统实现
2.1 等离子体剖面数据可视化
目前,tokamak实验是进行脉冲放电,一次实验持续时间在几秒到几分钟之内,称为一炮放电.所有的放电数据在实验结束后按照炮号存储到MDSplus数据库中.在之后的离线分析中,研究人员关心某一炮在某个时刻下的等离子体基础参数(如等离子体电子温度Te,离子温度Ti,等离子体密度Ne等)的剖面分布情况,本系统实现了对等离子体剖面数据的可视化.为帮助用户快速发现感兴趣的时刻,本系统还提供该炮等离子体参数随时间的波形演化图,旨在帮助实验人员了解本次放电情况.
程序首先连接MDSplus数据库,按照用户在界面上输入的炮号,打开相应的MDSplus树,读取该炮号的数据信息.系统根据用户在界面右侧的控件设置,将绘制出来的图形在界面的左侧的绘图窗口中显示出来.用户可以对图形的线型、颜色、标记进行设置,对图形上的某一点进行定位.通过界面的左上方的工具栏可以对子图进行放大和缩小,对图形进行放大、缩小和平移.
在对用户图形界面上的控件进行设置的时候,如果数据信息设置错误的话,比如时间输入框中只能输入数字,如果输入字母,则会出现出错对话框提示用户输入信息错误,请输入合适的信息.如图2所示.
图2 提示错误对话框
在实现等离子体剖面数据可视化的用户图形界面上,通过界面上的控件,可以出现如图3所示的选择对话框,可以在对话框中选择想要绘制的数据信息和诊断系统.
在实现等离子体剖面数据可视化的用户图形界面上,通过界面上的控件,可以出现如图4所示的选择对话框,可以在对话框中的文本框中设置图形的绘制范围,也可以不输入任何数据信息.当不输入任何数据信息的时候,可以绘制出完整的图形.
如图5所示,系统绘制出在炮号为57431的情况下,等离子体密度Ne、温度Te、Ti、功率Pinj、Prad这五个重要参数随时间的波形演化图.
如图6所示,系统绘制出在炮号为57431、时间为5秒的情况下,等离子体密度Ne、温度Te、Ti、旋转速度Vt这四个重要参数的剖面分布图形.可以在界面上设置当前图形与上一次绘制出的图形的重叠情况.用户可以比较不同炮号在相同时刻,剖面数据对应的数据图形;也可以比较相同炮号在不同时刻,剖面数据对应的数据图形.系统提供了不同的坐标系,用户可以在界面上进行选择,绘制出想要观察的数据图形.
图3 剖面数据和诊断系统选择对话框
图4 图形绘制范围选择对话框
图5 离子体参数随时间的波形演化图
图6 等离子体剖面数据可视化(在某时刻点的数据图形)
2.2 炮间分析等离子体剖面数据可视化
在进行等离子体放电实验期间,目前EAST大部分诊断系统的剖面数据都可以在每炮放电结束几分钟后,经过自动程序计算处理存储到EAST二级库中,因此我们提供了炮间分析等离子体剖面数据可视化功能,为进行下一次放电参数设置提供辅助分析.在实现上,采用了MDSplus的事件触发机制:MDSplus采用UDP组播的方式,一方发送某个事件名,则在同一个局域网里所有电脑上的应用程序都可以监听接收到这个事件,并且提醒用户监听事件成功,以此来达到触发某个行为的目的.
本文在等离子放电期间,基于MDSplus提供的Python监听事件接口,实现了动态监听事件,获取炮号进行绘图.如图7所示为炮间分析的流程图,程序启动等待MDSplus事件,当在服务器上的二级库数据计算程序完成剖面数据计算并存储到EAST二级库中,计算程序会通过广播形式把相应的事件发送出去,EAST等离子体剖面数据可视化系统收到约定的事件以后,获取最新炮号并取得最新炮号的相应剖面数据,自动的按照设置的频率动态的绘制最新炮所有时刻的剖面数据.EAST每次放电的时间间隔有一、二十分钟,因此完全有时间在获取并绘制当前炮的剖面数据后继续等待下一次剖面数据完成的事件到来.用户也可以退出监听模式,通过回放功能逐个查看感兴趣时刻的剖面数据.显示哪些诊断系统的剖面数据,显示的时间范围,绘制的频率等都可以在用户界面上选择.通过观察炮间分析等离子体剖面数据的可视化图形,装置的运行人员可以进行相应的调节放电设置参数,优化下一次放电实验.
3 系统测试
经过多次实验测试,系统成功连接到MDSplus数据库并从中获取等离子体剖面数据,并根据用户对系统界面上的控件的设置,实现了对这些数据的可视化,对各种非正常情况(诸如无法获取数据,用户设置错误等)能够给出合理的提示.在实际放电实验期间,成功的利用MDSplus事件机制发送并接收相应的事件,获取最新数据,实现系统的自动绘图.证明了系统对这些数据进行可视化的可行性,达到了预期的设计目标,实现了科研人员对等离子体放电实验的需求.
图7 炮间分析等离子体剖面数据的可视化流程
4 结束语
本文实现了对离线分析等离子体剖面数据的可视化,同时实现了在等离子体放电期间,对等离子体剖面数据的实时监控.通过这个系统平台,可以访问大量的数据源,进而使这些数据转换成图形,通过用户图形界面进行人机交互.
Python和PyQt适应于许多操作系统,如Linux、Windows等,因此本系统可以跨平台使用.目前,Linux版本安装在一些集群服务器上,用户可以通过远程连接工具来远程登录服务器进行访问.系统的功能仍然在进行扩展,在未来,会给大家提供更完善的EAST等离子体剖面数据的可视化系统.