專利名稱:基于細分方法的分子表面網(wǎng)格生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ー種基于細分方法(Subdivision Method)的分子表面網(wǎng)格生成方法,屬于計算機科學(xué)與分子生物學(xué)相結(jié)合的技術(shù)領(lǐng)域。
背景技術(shù):
近年來,分子生物學(xué)、結(jié)構(gòu)生物學(xué)和計算機技術(shù)的結(jié)合已成為一種趨勢。這兩門學(xué)科主要研究生物大分子的結(jié)構(gòu)和功能,對分子表面模型的構(gòu)造非常迫切。由于細分方法在曲面造型技術(shù)中具有絕對的優(yōu)勢,細分曲面模型構(gòu)造逐漸成為學(xué)術(shù)界研究的熱點,但是將細分的方法應(yīng)用在分子表面的研究還較少。本發(fā)明也正是在這樣ー個背景下提出了基于細分方法的分子表面網(wǎng)格生成方法。分子表面模型構(gòu)造已在制藥、生物、醫(yī)學(xué)、量子化學(xué)等領(lǐng)域發(fā)揮著越來越重要的作用,對ー些蛋白質(zhì)分子高質(zhì)量可視化的需求與日俱增。所以本發(fā)明具有較高的學(xué)術(shù)意義和應(yīng)用價值
人們對分子表面模型構(gòu)造的研究始于19世紀(jì)70年代。這個時候有很多學(xué)者開始討論分子表面模型的定義,但關(guān)于分子表面模型的理論體系還未形成。直到1983年,MichaelL. Connolly 發(fā)表了《Analysis of Molecular Surface Calculation》,詳細闡述分子表面的形成過程,并給出計算分子表面的公式。至此,才開創(chuàng)了分子表面研究的先河。1971 年,Lee 和 Richards 提出了 SAS (solvent-accessible surface,溶劑可接觸表面)分子表面模型,如圖I所示。它模擬一個探針小球在分子表面滾動,在滾動過程中,探針小球中心掃描過的點的軌跡就形成了 SAS分子表面模型。1977年,Richards進ー步提出了光滑的分子表面模型(Smooth Molecular Surface). 1978年,Greer和Bush在Richards工作的基礎(chǔ)上提出了 SES (solvent-excluded surface,溶劑非可接觸表面)分子表面模型。它模擬探針小球在分子表面滾動,在滾動過程中,探針小球與所接觸到的原子的邊界所形成的軌跡即為SES。具體形成過程如下
探針小球(Probe)在分子表面滾動過程中,它同時與三個或者更多原子接觸時的位置稱為一個固定位置(如圖I,探針球Probe和三個原子atoml, atom2, atom3同時接觸),在這一位置,探針球和三個原子的接觸點pl,p2, p3形成了ー個三角凹面(此三角凹面屬于探針球面的一部分)。然后,探針球Probe繞著atom2與atom3所形成的軸線滾動直到和原子atom4接觸時停止(如圖I)。在這ー滾動過程中,探針球與原子atom2, atom3的接觸點從p2到p4,從p3到p5劃過一道弧線,這樣,就形成了由p2,p4,p5,p3所圍成的馬鞍凹環(huán)面。當(dāng)探針小球只和ー個原子接觸吋,它在這一原子上滾動所形成的面即為凸球面,如圖2中三角網(wǎng)格所示。探針小球在滾動過程中所形成的所有三角凹面、馬鞍環(huán)面、凸球面共同組成了 SES分子表面。由以上介紹可知,SES主要由三種面片組成三角凹面片、馬鞍環(huán)面片和凸球面片。如圖3所示,紅色球為當(dāng)前考慮原子,其它六個藍色球是它的鄰近原子(鄰近原子的定義在本文第三部分已說明),與其對應(yīng)的SES分子表面網(wǎng)格圖如圖3所示。根據(jù)本文第二部分對分子表面SES的闡述,探針球與當(dāng)前原子以及此原子的兩個鄰近原子同時接觸時形成ー個固定位置,探針球的每個固定位置將形成一個三角凹面片,如圖3中三角形網(wǎng)格所示。探針球從ー個固定位置滾動到另ー個固定位置的過程中將形成ー個馬鞍環(huán)面,如圖3中四邊形網(wǎng)格所示。探針球只與當(dāng)前原子接觸滾動過程中所形成的面即為凸球面,如圖3中三角形網(wǎng)格所示。此后,對分子表面的研究成為學(xué)術(shù)界的ー個熱點,先后有不少學(xué)者發(fā)表了很多關(guān)于分子表面模型的文章。1995 年 8 月,Michel F. Sanner, Arthur J. Olson 在 Connolly的基礎(chǔ)上提出了ー種基于精簡表面的高效計算分子表面的方法。2000年,Laug,P.,Borouchaki, H.又提出了分子表面有限網(wǎng)格自動生成方法。2007年5月楊俊清提出了基于四邊形網(wǎng)格細分曲面生成方法。該方法是基于Catmull - Clark細分模式,具有局部性好、簡單、易操作的特點,可成功應(yīng)用于工程實際,解決細分曲面的生成問題 。2008年,Shuhua Lai和Kenjiro T. Miura提出了基于Doo-Sabin細分方法的分子光滑表面重構(gòu)方法。2009 年 2 月,Joonghyun Ryua, Youngsong Choa, Deok-Soo Kimb 等人在計算機輔助設(shè)計上發(fā)表了《分子表面的三角化》,提出了時間復(fù)雜度為0(n)的分子表面三角化算法。2009 年,Adriano N. Raposo and Joao A. Queiroz and Abel J. P. Gomes 等人提出了基于等值面算法的分子表面三角化方法。OpenGL(全稱Open Graphics Librar)是個定義了一個跨編程語言、跨平臺的編程接ロ的規(guī)格,它用于三維圖形圖像(ニ維的亦可)的渲染。OpenGL是個專業(yè)的圖形程序接ロ,是ー個功能強大,調(diào)用方便的底層圖形庫。CUDA (Compute Unified Device Architecture,全稱計算統(tǒng)一設(shè)備架構(gòu))是NVIDIA為自家的GPU編寫了一套編譯器NVCC及其相關(guān)的庫文件。CUDA主要在驅(qū)動程序方面和函數(shù)庫方面進行了擴充。在CUDA庫中提供了標(biāo)準(zhǔn)的FFT與BLAS庫,一個為NVDIA GPU設(shè)計的C編譯器。CUDA是ー種由NVIDIA推出的通用并行計算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計算問題。它包含了 CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計算引擎。開發(fā)人員現(xiàn)在可以使用應(yīng)用最廣泛的高級編程語言C語言來為CUDA架構(gòu)編寫程序。因此可以在支持CUDA的處理器上以超高性能運行。將來還會支持其它語言,包括FORTRAN以及C++。CUDA軟件堆棧包含多個層次,主要有硬件驅(qū)動(CUDA Drivers)、應(yīng)用編程接ロ(CUDA Libraries)及運行時庫(Runtime Libraries)等三個層次,還有兩個高層公共數(shù)學(xué)函數(shù)庫CUFFT (快速傅立葉變換)與CUBLAS(基本線性代數(shù)變換)。CUDA的基本思想是盡量應(yīng)用線程級并行(Thread Level Parallel),這些線thread在硬件中能夠得到很好地動態(tài)調(diào)度和運行。CPU上通過循環(huán)而實現(xiàn)的大量數(shù)據(jù)的重復(fù)操作,在CUDA中則是以網(wǎng)格(grid)的形式被分割為多個大小相等的線程塊(block),每一個線程塊最多可以包含512個線程(thread)。同一個block的所有thread有著相同的指令地址,能夠并行運行,thread之間的通信則是依靠共享存儲器實現(xiàn)的。所有block的執(zhí)行都是沒有順序的,是真正的完全并行。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對已有技術(shù)存在的缺陷,提供ー種基于細分方法的分子表面網(wǎng)格生成方法,該方法在分子表面構(gòu)造中達到很好的效果,且效率更高。
為達到上述目的,本發(fā)明的構(gòu)思是針對SES分子表面的三種面片,提出了具體的網(wǎng)格細分生成算法;對馬鞍環(huán)面片采用扇形極限細分法,對三角凹面片和凸球面采用基于三角形邊細分的球面映射法。并借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。根據(jù)上述發(fā)明構(gòu)思,本發(fā)明采用下述技術(shù)方案
ー種基于細分方法的分子表面網(wǎng)格生成方法,其操作步驟如下①對組成分子的所有原子進行預(yù)處理,使用分子表面原子滾動算法簡稱MSARA算法,提取出暴露在SES分子表面的原子,即探針求probe在滾動過程中可以接觸到;剔除棹被覆蓋在分子內(nèi)部,從外面看不到的那些內(nèi)部原子;
②分別對組成SES的三類面片ー馬鞍環(huán)面片、三角凹面片和凸球面,進行細分對馬鞍環(huán)面片采用扇形極限細分法;對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法,它是ー種結(jié)合調(diào)和映射和球面均值的細分方法,專門對三角凹面片和凸球面進行細分;
③使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示;
④借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。所述步驟①中所述的MSARA算法的算法流程如下
(1)建立一個鏈表’L_atom’存儲從PDB文件中讀出所有原子信息并標(biāo)記為內(nèi)部原子,每ー個鏈表節(jié)點存儲原子的三維坐標(biāo)和ー個指向該原子所有鄰接原子的指針,接著按下面的步驟遍歷鏈表’ L_atom’ ;
(2)atom_ii’L_atom’中的某個原子,遍歷此原子的鄰接原子鏈表‘L_neighbor’ ;
(3)從‘L_neighbor’ 中取出兩個原子 atom_j, atom_k ,當(dāng) atom_j 與 atom_k 也相鄰
時根據(jù)Connolly公式pijk = bijk 土 h· ■ Ulfk ,其中byk為基準(zhǔn)點的空間坐標(biāo);h,為探針
球到基準(zhǔn)平面的距離Aik為基準(zhǔn)平面的単位法向量。計算探針球的中心坐標(biāo)P,若atom_
j與atom_k不相鄰則繼續(xù)在’ L_neighbor’中取下兩個原子進行同樣的計算;
(4)各自計算探針球中心P到原子atom_j, atom_k所有的鄰接原子中心的距離dl,d2, ".,dn…如果dl, d2, ···,dn…都大于它們的半徑之和,則標(biāo)記atom_i原子為表面原子,否則繼續(xù)遍歷aotm_i的鄰接原子鏈表’ L_neighbor’。所述步驟②對馬鞍環(huán)面片采用扇形極限細分法和對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法來完成的其實現(xiàn)步驟如下
(1)首先,使用扇形極限細分法對馬鞍環(huán)面片細分圖中圓弧進行細分,所謂扇形極限細分即對扇形圓弧進行等弧長細分,然后對半徑為111,!12,!13,···,!^的圓弧同樣采用扇形極限細分法進行細分;當(dāng)細分一定的次數(shù)后就形成了馬鞍環(huán)面網(wǎng)格;
(2)先選擇正八面體作為初始網(wǎng)格,然后在初始網(wǎng)格基礎(chǔ)上對每個三角形進行細分;每個三角形經(jīng)邊細分后將產(chǎn)生四個三角形,這個細分過程是ー個遞歸的過程;ー個三角形細分成4個三角形,接著繼續(xù)細分成4*4=16個三角形,依此類推;
(3)對步驟(2)中使用三角形細分法新生成的點作一些處理,即對它們進行規(guī)范化把它們映射到球的表面上;細分一次就映射一次,摒棄中間的過程從結(jié)果來看,就好比在原來的球面上插入一系列的點;當(dāng)細分的次數(shù)足夠多,使得這些一系列的點足夠的密,由這些點組成的小三角形面片形成的面就無限逼近原來的球面了。所述步驟③中使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示的實現(xiàn)步驟如下
(1)三角凹面片和凸球面片的顯示是將細分后得到的三角形網(wǎng)格數(shù)據(jù)在OpenGL環(huán)境下進行三角形面片的渲染完成分子表面中三角凹面和凸球面的顯示;
(2)同理,馬鞍面片的顯示是將細分后得到的四邊形網(wǎng)格數(shù)據(jù)在OpenGL環(huán)境下進行四邊形面片的渲染完成分子表面中馬鞍面的顯示;0penGL定義的面包括點、線和面三部分,每兩個三角形単元都是通過它們共有的一條邊來連接,每條邊都是通過兩個端點的節(jié)點坐標(biāo)來繪制,即單元和節(jié)點的拓撲關(guān)系;將所有的三角形単元面片繪制出來就完成了三角凹面和凸球面的繪制;同一類面片的三角形単元數(shù)目越多,拼接出來的表面就越逼近于真實;三角形單元的三個頂點是逆時針順序的,繪制函數(shù)如下
glBegin(GLTRIANGLES);
glVertex3d(xl, yl, zl) ;//三角形的第一個頂點
glVertex3d(x2, y2, z2) ;//三角形的第二個頂點
glVertex3d(x3, y3, z3) ;//三角形的第三個頂點
glEndO ;
同理對于馬鞍環(huán)面,則是由有限四邊形單元網(wǎng)格組成,每兩個四邊形單元都是通過它們共有的一條邊來連接,每條邊都是通過兩個端點的節(jié)點坐標(biāo)來繪制,將所有的四邊形單元繪制出來就完成了馬鞍環(huán)面的繪制。所述步驟④中借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。其實現(xiàn)步驟如下
(1)利用CPU擅長的復(fù)雜邏輯運算能力和GPU超強的并行計算能力,將分子表面模型快速構(gòu)造方法中串行處理部分和并行計算部分提取出來;
(2)讓CPU在主機端完成串行處理部分的工作讀入分子模型數(shù)據(jù),計算原子鄰接關(guān)系,提取分子表面原子,提取三類網(wǎng)格面片,將三類網(wǎng)格數(shù)據(jù)從主機端拷貝到設(shè)備端;讓GTO在設(shè)備端完成三類面片細分的并行計算任務(wù),最大限度地利用計算機的處理能力。
圖I是SES分子表面形成過程示意圖。圖2是原子實體圖。圖3是三類網(wǎng)格面片圖。圖4是正六邊形向圓形極限逼近圖。圖5是扇形極限逼近圖。圖6馬鞍環(huán)面細分示意圖。圖7馬鞍面片網(wǎng)格圖。圖8三角細分過程圖。圖9正八面體形成示意圖。圖10球面一次、二次細分網(wǎng)格圖。圖11凸球面和三角凹面片細分網(wǎng)格圖。
圖12主程序框圖。圖13子程序框圖I 圖14子程序框圖2
圖15子程序框圖3 圖16子程序框圖4 圖17最終的分子表面細分網(wǎng)格圖。本發(fā)明與已有技術(shù)相比具有如下特點
(I)本發(fā)明在對分子表面網(wǎng)格化之前對組成分子的原子進行了預(yù)處理。剔除了被其它表面原子覆蓋在分子內(nèi)的內(nèi)部原子,大大減少了在分子表面網(wǎng)格化和顯示階段所花的時間。 (2)本發(fā)明所使用的細分方法可從任意形狀網(wǎng)格出發(fā)構(gòu)造分子光滑的表面而無需考慮幾何連通性問題;而且能夠很好地產(chǎn)生拓撲結(jié)構(gòu)復(fù)雜的分子表面。(3)本發(fā)明使用CUDA并行技術(shù)加速網(wǎng)格化和顯示過程,使得分子表面的網(wǎng)格化和顯不效率大大提尚。
具體實施例方式本發(fā)明的優(yōu)選實施例結(jié)合附圖詳述如下
實施例一
參見圖12,本基于細分方法的分子表面網(wǎng)格生成方法,其操作步驟如下
①對組成分子的所有原子進行預(yù)處理,使用分子表面原子滾動算法簡稱MSARA算法,提取出暴露在SES分子表面的原子,即探針求probe在滾動過程中可以接觸到;剔除棹被覆蓋在分子內(nèi)部,從外面看不到的那些內(nèi)部原子;
②分別對組成SES的三類面片ー馬鞍環(huán)面片、三角凹面片和凸球面,進行細分對馬鞍環(huán)面片采用扇形極限細分法;對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法,它是ー種結(jié)合調(diào)和映射和球面均值的細分方法,專門對三角凹面片和凸球面進行細分;
③使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示;
④借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。實施例ニ
參見圖12 16,本實施例與實施例一基本相同,特別之處如下
所述步驟①中所述的MSARA算法的算法流程如下
(5)建立一個鏈表’L_atom’存儲從PDB文件中讀出所有原子信息并標(biāo)記為內(nèi)部原子,每ー個鏈表節(jié)點存儲原子的三維坐標(biāo)和ー個指向該原子所有鄰接原子的指針,接著按下面的步驟遍歷鏈表’ L_atom’ ;
(6)atom_ii’L_atom’中的某個原子,遍歷此原子的鄰接原子鏈表‘L_neighbor’ ;
(7)從‘L_neighbor’ 中取出兩個原子 atom_j, atom_k ,當(dāng) atom_j 與 atom_k 也相鄰
時根據(jù)Connolly公式=b +,其中byk為基準(zhǔn)點的空間坐標(biāo);h,為探針球到基準(zhǔn)平面的距離;ttiPc為基準(zhǔn)平面的単位法向量。計算探針球的中心坐標(biāo)P,若atom_
j與atom_k不相鄰則繼續(xù)在’ L_neighbor’中取下兩個原子進行同樣的計算;
(8)各自計算探針球中心P到原子atom_j, atom_k所有的鄰接原子中心的距離dl,d2, ".,dn…如果dl, d2, ···,dn…都大于它們的半徑之和,則標(biāo)記atom_i原子為表面原子,否則繼續(xù)遍歷aotm_i的 鄰接原子鏈表’ L_neighbor’ .。所述步驟②對馬鞍環(huán)面片采用扇形極限細分法和對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法來完成的其實現(xiàn)步驟如下
(1)首先,使用扇形極限細分法對馬鞍環(huán)面片細分圖中圓弧進行細分,所謂扇形極限細分即對扇形圓弧進行等弧長細分,然后對半徑為111,!12,!13,···,!^的圓弧同樣采用扇形極限細分法進行細分;當(dāng)細分一定的次數(shù)后就形成了馬鞍環(huán)面網(wǎng)格;
(2)先選擇正八面體作為初始網(wǎng)格,然后在初始網(wǎng)格基礎(chǔ)上對每個三角形進行細分;每個三角形經(jīng)邊細分后將產(chǎn)生四個三角形,這個細分過程是ー個遞歸的過程;ー個三角形細分成4個三角形,接著繼續(xù)細分成4*4=16個三角形,依此類推;
(3)對步驟(2)中使用三角形細分法新生成的點作一些處理,即對它們進行規(guī)范化把它們映射到球的表面上;細分一次就映射一次,摒棄中間的過程從結(jié)果來看,就好比在原來的球面上插入一系列的點;當(dāng)細分的次數(shù)足夠多,使得這些一系列的點足夠的密,由這些點組成的小三角形面片形成的面就無限逼近原來的球面了。所述步驟③中使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示的實現(xiàn)步驟如下
(1)三角凹面片和凸球面片的顯示是將細分后得到的三角形網(wǎng)格數(shù)據(jù)在OpenGL環(huán)境下進行三角形面片的渲染完成分子表面中三角凹面和凸球面的顯示;
(2)同理,馬鞍面片的顯示是將細分后得到的四邊形網(wǎng)格數(shù)據(jù)在OpenGL環(huán)境下進行四邊形面片的渲染完成分子表面中馬鞍面的顯示;OpenGL定義的面包括點、線和面三部分,每兩個三角形単元都是通過它們共有的一條邊來連接,每條邊都是通過兩個端點的節(jié)點坐標(biāo)來繪制,即單元和節(jié)點的拓撲關(guān)系;將所有的三角形単元面片繪制出來就完成了三角凹面和凸球面的繪制;同一類面片的三角形単元數(shù)目越多,拼接出來的表面就越逼近于真實;三角形單元的三個頂點是逆時針順序的,繪制函數(shù)如下
glBegin(GLTRIANGLES);
glVertex3d(xl, yl, zl) ;//三角形的第一個頂點
glVertex3d(x2, y2, z2) ;//三角形的第二個頂點
glVertex3d(x3, y3, z3) ;//三角形的第三個頂點
glEndO ;
同理對于馬鞍環(huán)面,則是由有限四邊形單元網(wǎng)格組成,每兩個四邊形單元都是通過它們共有的一條邊來連接,每條邊都是通過兩個端點的節(jié)點坐標(biāo)來繪制,將所有的四邊形單元繪制出來就完成了馬鞍環(huán)面的繪制。所述步驟④中借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。其實現(xiàn)步驟如下
(I)利用CPU擅長的復(fù)雜邏輯運算能力和GPU超強的并行計算能力,將分子表面模型快速構(gòu)造方法中串行處理部分和并行計算部分提取出來;
(2)讓CPU在主機端完成串行處理部分的工作讀入分子模型數(shù)據(jù),計算原子鄰接關(guān)系,提取分子表面原子,提取三類網(wǎng)格面片,將三類網(wǎng)格數(shù)據(jù)從主機端拷貝到設(shè)備端;讓GTO在設(shè)備端完成三類面片細分的并行計算任務(wù),最大限度地利用計算機的處理能力。實施 例三
本基于細分方法的分子表面網(wǎng)格生成方法的操作步驟如下(對應(yīng)的主程序框圖如圖12所示)
①對組成分子的所有原子進行預(yù)處理,使用分子表面原子滾動算法(簡稱MSARA算法)提取出暴露在SES分子表面(即探針求probe在滾動過程中可以接觸到)的原子。剔除掉被覆蓋在分子內(nèi)部,從外面看不到的那些內(nèi)部原子。②分別對組成SES的三類面片(馬鞍環(huán)面片、三角凹面片和凸球面)進行細分對馬鞍環(huán)面片采用扇形極限細分法;對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法。③使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示。④借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。一、分子表面原子提取算法
本發(fā)明采用分子表面原子滾動算法(簡稱MSARA算法)提取分子表面原子。其算法過程如下,對應(yīng)的程序框圖如圖13所示。(9)建立一個鏈表’L_atom’存儲從PDB文件中讀出所有原子信息并標(biāo)記為內(nèi)部原子。每ー個鏈表節(jié)點存儲原子的三維坐標(biāo)和ー個指向該原子所有鄰接原子的指針。接著按下面的步驟遍歷鏈表’ L_atom’ .
(10)例如,atom_i是’L_atom’中的某個原子,遍歷此原子的鄰接原子鏈表‘L_neighbor ;
(11)從‘L_neighbor’ 中取出兩個原子 atom_j, atom_k ,當(dāng) atom_j 與 atom_k 也相鄰時根據(jù)Connolly在其發(fā)表的文獻中給出的公式計算探針球的中心坐標(biāo)P,若atom_j與atom_k不相鄰則繼續(xù)在’ L_neighbor’中取下兩個原子進行同樣的計算。(12) 各自計算探針球中心P到原子atom_j, atom_k所有的鄰接原子中心的距離dl, d2, ".,dn…如果dl, d2, ···,dn…都大于它們的半徑之和,則標(biāo)記atom_i原子為表面原子,否則繼續(xù)遍歷aotm_i的鄰接原子鏈表’ L_neighbor’ .
ニ、馬鞍環(huán)面片細分過程
在闡述馬鞍環(huán)面片的細分過程之前,首先我們看看有關(guān)細分的極限理論。如圖4已知正六邊形ABCDEF,作它的內(nèi)切圓,設(shè)OA = a, Z AOF = β
則ZAOB = ZAOF =0。P 是 AB 的中點,故 Z AOP = Q /2,則 OP = a· cos 三。設(shè) OA
與內(nèi)切圓的交點為A;,則Of= OP = a* cos 。于是可根據(jù)A的坐標(biāo)求得A;的坐標(biāo)。同理可求得ぎ,C1 , Ot , E' , F''的坐標(biāo),順次連接這些點,就形成了ー個正12邊形。并繼續(xù)作它的內(nèi)切圓,同理可求得這個內(nèi)切圓的半徑為
權(quán)利要求
1.一種基于細分方法的分子表面網(wǎng)格生成方法,其操作步驟如下 ①對組成分子的所有原子進行預(yù)處理,使用分子表面原子滾動算法簡稱MSARA算法,提取出暴露在SES分子表面的原子,即探針求probe在滾動過程中可以接觸到;剔除掉被覆蓋在分子內(nèi)部,從外面看不到的那些內(nèi)部原子; ②分別對組成SES的三類面片一馬鞍環(huán)面片、三角凹面片和凸球面,進行細分對馬鞍環(huán)面片采用扇形極限細分法;對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法,它是一種結(jié)合調(diào)和映射和球面均值的細分方法,專門對三角凹面片和凸球面進行細分; ③使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示; ④借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。
2.按照權(quán)利要求I所述的基于細分方法的分子表面網(wǎng)格生成方法,其特征在于所述步驟①中所述的MSARA算法的算法流程如下 (1)建立一個鏈表’L_atom’存儲從PDB文件中讀出所有原子信息并標(biāo)記為內(nèi)部原子,每一個鏈表節(jié)點存儲原子的三維坐標(biāo)和一個指向該原子所有鄰接原子的指針,接著按下面的步驟遍歷鏈表’ L_atom’ ; (2)atom_i是’L_atom’中的某個原子,遍歷此原子的鄰接原子鏈表‘L_neighbor’; (3)從‘L_neighbor’ 中取出兩個原子 atom_j, atom_k ,當(dāng) atom_j 與 atom_k 也相鄰時根據(jù)Connolly公式n = +I1 .u ,其中為基準(zhǔn)點的空間坐標(biāo);h,為探 Fijk — wIjk 丄 llIjk tiIjk針球到基準(zhǔn)平面的距離為基準(zhǔn)平面的單位法向量; 計算探針球的中心坐標(biāo)P,若atom_j與atom_k不相鄰則繼續(xù)在’L_neighbor’中取下兩個原子進行同樣的計算; (4)各自計算探針球中心P到原子atom_j,atom_k所有的鄰接原子中心的距離dl,d2, ".,dn…如果dl, d2,…,dn…都大于它們的半徑之和,則標(biāo)記atom_i原子為表面原子,否則繼續(xù)遍歷aotm_i的鄰接原子鏈表’ L_neighbor’ .。
3.按照權(quán)利要求I所述的基于細分方法的分子表面網(wǎng)格生成方法,其特征在于所述步驟②對馬鞍環(huán)面片采用扇形極限細分法和對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法來完成的其實現(xiàn)步驟如下 (1)首先,使用扇形極限細分法對馬鞍環(huán)面片細分圖中圓弧進行細分,所謂扇形極限細分即對扇形圓弧進行等弧長細分,然后對半徑為111,!12,!13,···,!^的圓弧同樣采用扇形極限細分法進行細分;當(dāng)細分一定的次數(shù)后就形成了馬鞍環(huán)面網(wǎng)格; (2)先選擇正八面體作為初始網(wǎng)格,然后在初始網(wǎng)格基礎(chǔ)上對每個三角形進行細分;每個三角形經(jīng)邊細分后將產(chǎn)生四個三角形,這個細分過程是一個遞歸的過程;一個三角形細分成4個三角形,接著繼續(xù)細分成4*4=16個三角形,依此類推; (3)對步驟(2)中使用三角形細分法新生成的點作一些處理,即對它們進行規(guī)范化把它們映射到球的表面上;細分一次就映射一次,摒棄中間的過程從結(jié)果來看,就好比在原來的球面上插入一系列的點;當(dāng)細分的次數(shù)足夠多,使得這些一系列的點足夠的密,由這些點組成的小三角形面片形成的面就無限逼近原來的球面了。
4.按照權(quán)利要求I所述的基于細分方法的分子表面網(wǎng)格生成方法,其特征在于所述步驟③中使用OpenGL工具對細分后所得到的三維數(shù)據(jù)進行顯示的實現(xiàn)步驟如下 (1)三角凹面片和凸球面片的顯示是將細分后得到的三角形網(wǎng)格數(shù)據(jù)在OpenGL環(huán)境下進行三角形面片的渲染完成分子表面中三角凹面和凸球面的顯示; (2)同理,馬鞍面片的顯示是將細分后得到的四邊形網(wǎng)格數(shù)據(jù)在OpenGL環(huán)境下進行四邊形面片的渲染完成分子表面中馬鞍面的顯示;0penGL定義的面包括點、線和面三部分,每兩個三角形單元都是通過它們共有的一條邊來連接,每條邊都是通過兩個端點的節(jié)點坐標(biāo)來繪制,即單元和節(jié)點的拓撲關(guān)系;將所有的三角形單元面片繪制出來就完成了三角凹面和凸球面的繪制;同一類面片的三角形單元數(shù)目越多,拼接出來的表面就越逼近于真實;三角形單元的三個頂點是逆時針順序的,繪制函數(shù)如下glBegin(GLTRIANGLES); glVertex3d(xl, yl, zl) ;//三角形的第一個頂點 glVertex3d(x2, y2, z2) ;//三角形的第二個頂點 glVertex3d(x3, y3, z3) ;//三角形的第三個頂點glEndO ; 同理對于馬鞍環(huán)面,則是由有限四邊形單元網(wǎng)格組成,每兩個四邊形單元都是通過它們共有的一條邊來連接,每條邊都是通過兩個端點的節(jié)點坐標(biāo)來繪制,將所有的四邊形單元繪制出來就完成了馬鞍環(huán)面的繪制。
5.按照權(quán)利要求I所述的基于細分方法的分子表面網(wǎng)格生成方法,其特征在于所述步驟④中借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程; 其實現(xiàn)步驟如下 (1)利用CPU擅長的復(fù)雜邏輯運算能力和GPU超強的并行計算能力,將分子表面模型快速構(gòu)造方法中串行處理部分和并行計算部分提取出來; (2)讓CPU在主機端完成串行處理部分的工作讀入分子模型數(shù)據(jù),計算原子鄰接關(guān)系,提取分子表面原子,提取三類網(wǎng)格面片,將三類網(wǎng)格數(shù)據(jù)從主機端拷貝到設(shè)備端;讓GTO在設(shè)備端完成三類面片細分的并行計算任務(wù),最大限度地利用計算機的處理能力。
全文摘要
本發(fā)明公開了一種基于細分方法的分子表面網(wǎng)格生成方法。針對SES分子表面的三種面片提出了具體的網(wǎng)格細分生成算法。對馬鞍環(huán)面片采用扇形極限細分法;對三角凹面片和凸球面片采用基于三角形邊細分的球面映射法。并使用OpenGL工具在vs2010開發(fā)環(huán)境下實現(xiàn)了這一算法,并借助CUDA并行技術(shù)加速網(wǎng)格化和顯示過程。實驗結(jié)果表明,該方法在分子表面構(gòu)造中達到了很好的效果,且效率更高。
文檔編號G06T17/30GK102663822SQ20121005724
公開日2012年9月12日 申請日期2012年3月7日 優(yōu)先權(quán)日2012年3月7日
發(fā)明者盧詩義, 吳三子, 張景嶠, 戴基亭, 羅文 申請人:上海大學(xué)