秦雅麗,肖炳甲,,張睿瑞,袁旗平
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等離子體剖面數據進行可視化,可以分析比較來自不同診斷系統的數據,以便相關科研人員通過圖形圖像方式更加直觀的了解等離子放電實驗中隱含的規律,從而為他們的下一次放電實驗提供更形象直觀的數據分析.
系統實現等離子體剖面數據的可視化和炮間分析等離子體剖面數據的可視化,都需要提供以下功能:數據獲取、數據處理、圖形繪制、可視化交互式操作.最重要的是,實現炮間分析等離子體剖面數據的可視化還需要提供線程機制,來提高程序效率和系統穩定性.
數據獲取:文獻[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的線程機制中的定時器.事件類用于監聽等離子體放電期間發出的事件,系統接收事件,自動繪圖.定時器用于在指定時間后調用繪制圖形的函數,實現圖形在用戶設置的時間間隔內依次動態顯示相應的數據圖形.
EAST等離子體剖面數據的可視化流程圖如圖1所示分為三個階段:生成界面,獲取數據,進行繪圖.首先,利用PyQt編寫一個實現EAST等離子體剖面數據可視化的用戶圖形界面,在界面上設置一系列控件,同時,利用Matplotlib生成繪圖窗口,并對這些控件和繪圖窗口在界面上進行布局.其次,用戶在界面上對一些界面控件進行設置,并且獲取這些數據信息.最后,從MDSplus數據庫中獲取數據,并根據界面上的設置信息展現在Matplotlib生成的繪圖窗口中.如果缺少一些必要的數據信息,要求用戶將信息填寫完整,再進行繪圖.

圖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 等離子體剖面數據可視化(在某時刻點的數據圖形)
在進行等離子體放電實驗期間,目前EAST大部分診斷系統的剖面數據都可以在每炮放電結束幾分鐘后,經過自動程序計算處理存儲到EAST二級庫中,因此我們提供了炮間分析等離子體剖面數據可視化功能,為進行下一次放電參數設置提供輔助分析.在實現上,采用了MDSplus的事件觸發機制:MDSplus采用UDP組播的方式,一方發送某個事件名,則在同一個局域網里所有電腦上的應用程序都可以監聽接收到這個事件,并且提醒用戶監聽事件成功,以此來達到觸發某個行為的目的.
本文在等離子放電期間,基于MDSplus提供的Python監聽事件接口,實現了動態監聽事件,獲取炮號進行繪圖.如圖7所示為炮間分析的流程圖,程序啟動等待MDSplus事件,當在服務器上的二級庫數據計算程序完成剖面數據計算并存儲到EAST二級庫中,計算程序會通過廣播形式把相應的事件發送出去,EAST等離子體剖面數據可視化系統收到約定的事件以后,獲取最新炮號并取得最新炮號的相應剖面數據,自動的按照設置的頻率動態的繪制最新炮所有時刻的剖面數據.EAST每次放電的時間間隔有一、二十分鐘,因此完全有時間在獲取并繪制當前炮的剖面數據后繼續等待下一次剖面數據完成的事件到來.用戶也可以退出監聽模式,通過回放功能逐個查看感興趣時刻的剖面數據.顯示哪些診斷系統的剖面數據,顯示的時間范圍,繪制的頻率等都可以在用戶界面上選擇.通過觀察炮間分析等離子體剖面數據的可視化圖形,裝置的運行人員可以進行相應的調節放電設置參數,優化下一次放電實驗.
經過多次實驗測試,系統成功連接到MDSplus數據庫并從中獲取等離子體剖面數據,并根據用戶對系統界面上的控件的設置,實現了對這些數據的可視化,對各種非正常情況(諸如無法獲取數據,用戶設置錯誤等)能夠給出合理的提示.在實際放電實驗期間,成功的利用MDSplus事件機制發送并接收相應的事件,獲取最新數據,實現系統的自動繪圖.證明了系統對這些數據進行可視化的可行性,達到了預期的設計目標,實現了科研人員對等離子體放電實驗的需求.

圖7 炮間分析等離子體剖面數據的可視化流程
本文實現了對離線分析等離子體剖面數據的可視化,同時實現了在等離子體放電期間,對等離子體剖面數據的實時監控.通過這個系統平臺,可以訪問大量的數據源,進而使這些數據轉換成圖形,通過用戶圖形界面進行人機交互.
Python和PyQt適應于許多操作系統,如Linux、Windows等,因此本系統可以跨平臺使用.目前,Linux版本安裝在一些集群服務器上,用戶可以通過遠程連接工具來遠程登錄服務器進行訪問.系統的功能仍然在進行擴展,在未來,會給大家提供更完善的EAST等離子體剖面數據的可視化系統.