第五章 實作範例
5.1 生物晶片分析流程
由於生物晶片技術的問世,使的生物科學研究人員能得到大量的實驗數據以 進行分析。本章將以生物晶片資料分析為例,說明我們的系統如何能完成整個處 理的流程。如下圖所示,是某單位實際的分析流程,包含建立陣列的資料、儲存 至資料庫、資料前置處理與進行分析。該單元所使用的是一套封閉型整合平台,
所有的工具與資料都已設置在系統裡。在這個範例中,我們將以 BioOrch 來執行 這個流程。過程中我們會示範如何跨組織的合作、如何使用控制單元、如何呼叫 其他流程等等。
圖表 15、Mcroarray 流程式意圖
首先會建立 array 的資料,當流程執行到此的時候使用者需完成下列的工 作,主要是將陣列的值輸出,但必須做一些需要的前置處理如掃描陣列、量化、
去除背景、正規化,最後將陣列數值輸出。
<processdef name="bio/analysis/microarray"/>
<taskdef type="CreateArray">
<in> <folder path="@path"/></in>
<out> … </out>
</taskdef>
<in><folder path="@path"/></in>
<out><rw:var name="result"/><out>
<body>
<while>
<ifnot><done/></ifnot>
<task def="CreateArray"><user name="eros"/><task/>
</while>
<task>
<service name="DBService"/>
<in>…</in>
<out>…<out/>
<task>
<task>
<process name="preprocess">
<paramTask name="inputData" def="task1">
<user name=“…"/>
</ paramTask >
<process>
<service name="preprocessServ"/>
<in>…</in>
<out>…<out/>
<task>
<task def ="kmean"/>
<task def="showKmean"/>
<body>
</processdef>
表格 3、Microarray 分析流程定義
如上所示,我們定義了一個 while 的 block。在這個 Block 之中我們定義了一個 Task。此 Task 是交給使用者“eros”執行 create array 的動作,並回傳<succ/>繼續 執行 create array,或<done/>結束 while。在 while 裡還包含了一個條件測試<infot>
是使用 pattern match 的方式來比對輸入的 xml,如果輸入的 xml 格式符合的話,
則回傳 false,反之則回傳 true。第一次執行輸入的 xml 是從外面輸入的,之後是 使用 while 裡最後一個 Task 的輸出來比較。在工具方面,我們是使用 ArrayBuilder 來產生 Array 的檔案。ArrayBuilder 實作了系統工具的介面,所以可以整合進我 們的使用者操作環境。當使用者要執行這項工作時,系統會通知使用者有這工具 可以使用,並可以在使用者操作環境開啟這個工具。
圖表 16、ArrayBuilder 工具
當陣列都建立好之後,必須匯入資料庫儲存。這裡我們使用一個網路服務負 責將陣列上傳至資料庫之中以便稍後由資料庫進行處理。如表格 3 所示,在上傳 之前我們透過 bind 的動作將 array 的內容從檔案連結到 arraycontent 的變數。接 著便執行上傳的動作,由 Flow Engine 連接到一個叫 db 的網路服務。將 arraycontent 上傳,並回傳 array 的 id。
將陣列匯入資料庫後,流程就會交由另一個組織去做分析前置處理,對另一 個組織來說,會產生一個前置處理的流程。此流程的輸入需要指定使用哪一個資 料庫的哪些資料,如下表所示:再流程定義中使用者必須要填入 task1 的 processor 資訊。而對原本的流程來說必須要將合作流程所需要的資訊填滿,其定義的方法 如表格 3 所示。
<processdef name="preprocess">
<paramsTask name="task1">
<in>…<in>
<out>…</out>
</pramsTask>
<in><preprocess id="@id"></in>
<out><data><rw:var name="content"/></date></out>
<body>
<paramTask name="task1"/>
</body>
</processdef>
表格 4、Microarray Preprocess 流程定義
當結束後,原來流程的工作就像是呼叫 Web Service 一般接收到回傳值,並 繼續下面的工作。資料分析的目的是在找出特殊的基因表現型或是特殊的模式 (pattern)。透過不同的演算法來尋找有趣的部份,並加以研究、解釋。常用的演 算法如 Kmean、Hierarchical Clustering、SOM 等等。
<taskdef name="kmean">
<service name="analysisServ"/>
<in><dokmean><rw:var name="predate"></dokmean></in>
<out><result><rw:var name="kmeandate"></result><out/>
<taskdef>
<taskdef name="showKmean">
<user name="user"/>
<in><rw:var name="kmeandate"></in>
<out><ok/></out>
</taskdef>
我們在這個步驟使用的演算法是 Kmean,我們還多加入一個工作使的使用者可 以直接看到 Kmean 的結果。
圖表 17、分析工具
使用 BioOrch 來執行生物晶片分析流程,對流程的參與者來說,可以明確的 知道現在流程進行的情況,也可以知道工作的內容。在跨組織的部分,我們也展 示了如何使用不同組織的流程。這樣的系統同樣可以執行生物科學研究人員的分 析流程另外還提供了流程的管理與跨組織合作的優點,提高了實驗的效率並降低 研究成本。