胡振鑫,李川,蒲雪梅,袁榕澳
(1.四川大學計算機學院,成都610065;2.四川大學化學學院,成都610065;3.四川大學吳玉章學院,成都610065)
蛋白質是生物體內的一類重要的生物大分子,在生命體的活動中發(fā)揮著重要的功能。不同的氨基酸排列會導致蛋白質具有不同的結構及作用方式,最終導致蛋白質表現(xiàn)出不同的功能。在現(xiàn)實生活中,很多真實存在的系統(tǒng)都可以通過網絡來進行表示。如萬維網可以表征成由網頁通過超鏈接進行連接的網絡;基因調控網絡則可以看成是由基因之間存在調控與被調控所構成的網絡。目前復雜網絡的概念已經被運用到了工程科學,數理科學以及生物科學等許多不同的領域。將蛋白質表征成以氨基酸作為節(jié)點,氨基酸之間的距離作為邊的復雜網絡模型,可以從拓撲結構上對蛋白質進行分析,利用復雜網絡知識領域的網絡性質等信息可以分析出表征蛋白質結構的氨基酸網絡中的重要節(jié)點信息,利用找到的重要節(jié)點信息可以輔助研究人員對蛋白質結構及功能做進一步的分析。
Flask 框架是基于Python 進行開發(fā)的“微框架”,可以在較短時間內完成一個網站的構建,基于利用復雜網絡知識表征蛋白質結構信息網絡的思路,我們結合了Flask 框架,ECharts 框架,基于WebGL 的Three.js,NGL Viewer 等技術,實現(xiàn)了氨基酸網絡的構建,并進一步計算了網絡的重要節(jié)點性質,并同時實現(xiàn)了網絡的可視化以及網絡性質的可視化,為研究蛋白質結構提供了一套較為完善的分析系統(tǒng)。
本文利用蛋白質的三維結構信息來構建蛋白質殘基相互作用網絡。該網絡中的節(jié)點用蛋白質中的殘基來表征,兩個節(jié)點之間是否可以形成邊則通過兩個殘基之間的距離來進行判斷,當該值大于給定閾值,才定義該殘基對之間形成網絡的邊。
本文提供了3 類網絡特征的計算,分別是度中心度、中介中心度、接近中心度,具體的計算公式如表1所示。度中心性較為直觀地反映了一個節(jié)點在網絡中的重要程度,定義為與該節(jié)點連接的邊的數目;中介中心度表達了節(jié)點在全局網絡中的作用和影響力,定義為網絡中所有最短路徑經過該節(jié)點的數量。
Flask[1]是一種使用Python 開發(fā)的開源的Web 應用框架,主要基于Werkzeug WSGI 工具箱和Jinja2 模板引擎。Flask 也被叫做“微框架”,因為與其他基于Python 開發(fā)的Web 應用框架(例如Django)相比,它只使用了最簡單的核心,該核心只能提供基本的功能(例如模板系統(tǒng)、路由視圖等服務),但是可以使用其他插件來增加功能,如ORM、表單驗證工具,文件上傳工具和各種開放式的身份驗證技術等。Flask 在設計時就攜帶了擴展模塊的接口,按照Flask 規(guī)范編寫的擴展在結構上和Flask 松耦合,在功能上能和Flask 本身完美結合,這種擴展添加的方式可以使得開發(fā)方式更加靈活。

表1 3 種網絡特征的定義
ECharts[2]是由百度推出的一款基于JavaScript 的開源的可視化框架,底層依賴于輕量級的Canvas 類庫ZRender,可以提供比較直觀,交互豐富,可高度個性化定制的數據可視化圖表,具有豐富的可視化圖表類型(包括如柱狀圖、折線圖,以及支持圖與圖之間的組合),支持對于二維表、key-value 等多種格式的數據支持,數據采用分塊加載、異步渲染,擁有多維數據及豐富的視覺編碼手段等特性,并且通過配置項的設置,可以控制數據呈現(xiàn)形式和視覺效果。使用ECharts 可以減少了數據可視化頁面的編寫,降低了系統(tǒng)設計開發(fā)的難度。
NGL Viewer[3]是一個蛋白質和其他分子結構的在線查看器。它是為Web 應用程序(包括圖形界面)的用戶和希望在自己的項目中使用NGL Viewer 的開發(fā)人員設計的。它可用于交互地可視化分子結構,可以查看分子動力學軌跡數據,支持從多種庫中讀取結構和軌跡,包括biopython、ase、cctbx、mdanalysis、pyrosetta、pytraj、rdkit 等,也可以直接從PDB 數據庫中讀取數據。NGL Viewer 可以安裝在本地或專用的Web 服務器上,也可以嵌入到其他網頁中,并通過JavaScript API進行控制。
WebGL 屬于一種3D 繪圖標準,該標準允許將JavaScript 和OpenGL ES 2.0 結合在一起,通過基于OpenGL ES 2.0 實現(xiàn)了JavaScript 綁定,就可以為HTML5 Canvas 提供硬件3D 加速渲染,Web 開發(fā)人員就可以借助系統(tǒng)顯卡來在瀏覽器里更流暢地展示3D 場景和模型了,還能創(chuàng)建復雜的導航和數據視覺化。WebGL技術標準免去了開發(fā)網頁專用渲染插件的麻煩,可被用于創(chuàng)建具有復雜3D 結構的網站頁面,甚至可以用來設計3D 網頁游戲,等等。
Three.js[4]底層實現(xiàn)了WebGL 規(guī)范,對WebGL 代碼進行了簡單封裝,通過隱藏底層的一些繁瑣的實現(xiàn)細節(jié),減輕了開發(fā)者的開發(fā)負擔并提升了開發(fā)者的開發(fā)速率,在處理瀏覽器3D 效果方面有較好的表現(xiàn)。Three.js 可以支持多種渲染器(renderer)進行場景繪制,并且提供了點、線、面、向量、矩陣等三維創(chuàng)建時所需的基本要素,并可以快速簡單地將鏡頭(Cameras)、物體(objects)、光線(lights)等對象添加到場景(Scene)中。Three.js 是開源的,提供了大量可用的實例源代碼,開發(fā)者可通過采用逆向工程,進行充分深入的研究,進行三維場景創(chuàng)建。
按照系統(tǒng)的功能需求,基于Flask 的氨基酸網絡分析平臺的總體結構設計圖如圖1 所示。

圖1 系統(tǒng)功能設計框架
項目整體采用了B/S(瀏覽器/服務器)架構。
項目前端部分的開發(fā)采用了HTTP、CSS3、JavaScript、Bootstrap 框架和jinja2 模板語言,可視化部分則采用了ECharts 框架來對網絡性質分析進行圖表的繪制,服務端的開發(fā)采用了Flask 框架進行搭建。從總體結構設計來看可以分為兩部分,一部分是通過Flask 框架對前端、后端進行設計,另一部分是數據的處理,包括數據的處理、分析、傳輸等功能。

圖2 系統(tǒng)結構設計框架
后臺工作的主要流程(如圖2(a))為:首先使用Flask 自帶的request 模塊接收用戶所上傳的數據,隨后對所上傳的PDB 文件進行數據解析,利用Python 腳本networx.py 進行網絡的構建與分析,其中包括接收用戶指定的一些參數(包括距離閾值、是否加權等)的讀取,進行網絡的構建以及后續(xù)對于網絡的性質的計算以及可視化,最終通過自定義可視化模塊進行可視化展示,包括蛋白質網絡的結構信息可視化以及網絡性質分析結果可視化,通過網頁的加載進行結果的呈現(xiàn)。
軟件的整體計算流程(如圖2(b))為:首先得到用戶所輸入的PDB 文件信息以及用戶指定的一些可調控參數,隨后將蛋白質信息建模為網絡信息,其中,我們將每一個殘基當做一個網絡的節(jié)點,進行殘基間的距離計算,得到氨基酸網絡鄰接矩陣,通過查看殘基之間的距離是否超過閾值來判斷兩個殘基之間是否可以形成邊,后續(xù)的計算流程主要分成兩部分內容,一部分是對網絡的重要性質進行計算,包括度中心度、接近中心度以及緊密中心度,我們利用Python 包中的networkx 包進行網絡數據的存儲以及網絡性質的計算,另一部分是進行網絡的可視化分析,其中,蛋白質結構可視化部分我們采用WebGL,Three.js 以及NGL Viewer等技術進行網絡的3D 結構以及網絡結構的展示,蛋白質網絡性質的可視化我們則采用了ECharts 框架所提供的技術來實現(xiàn),利用該技術,我們可以較為輕松地實現(xiàn)出可交互式的折線圖、柱狀圖、餅狀圖等多種可視化分析結果,方便用戶更加直觀的進行結果的分析,用戶可以通過點擊圖中的某一個節(jié)點便可以找到其對應的殘基以及該殘基的性質的具體值,極大地提升用戶體驗。
氨基酸網絡模型為研究蛋白質結構提供了嶄新的視角。網絡拓撲結構中的度中心度、接近中心度、中介中心度等性質,反映了單個氨基酸與蛋白質整體結構的關系。本 文利用HTML、JavaScript、NGL Viewer、ECharts、WebGL 和Three.js 等技術模塊搭建了一個氨基酸網絡分析及可視化平臺。用戶可以利用蛋白質結構信息搭建網絡結構,并計算接近中心性等網絡的拓撲信息。另外,該分析平臺還可以進行蛋白質結構以及網絡性質的可視化。結果表明,基于Flask 構建的氨基酸網絡分析平臺對于從拓撲結構角度分析蛋白質有重要的幫助。