王 鑫,李 悅,文 豪,范 虹*,劉 京*
(1.陜西師范大學(xué)計算機科學(xué)學(xué)院,中國陜西西安710119;2.公安部物證鑒定中心北京市現(xiàn)場物證檢驗工程技術(shù)研究中心現(xiàn)場物證溯源技術(shù)國家工程實驗室,中國北京100038)
目前,我國親緣關(guān)系鑒定大多使用常染色體短串聯(lián)重復(fù)(short tandem repeat,STR)遺傳標(biāo)記位點[1~3]。在刑事偵查領(lǐng)域,通過對Y-STR進行檢驗,可以開展家系排查和輔助父系親緣鑒定,從而為案件偵查提供線索[4]。遺憾的是,Y-STR只能針對父系親屬,無法對母系親屬進行排查[5],而近年來半同胞、舅甥、姑侄等復(fù)雜親緣關(guān)系鑒定訴求不斷增加,現(xiàn)有的鑒定方法已遠遠無法滿足物證鑒定的需要。隨著全基因測序技術(shù)的發(fā)展,使用全基因單核苷酸多態(tài)性(single nucleotide polymorphism,SNP)數(shù)據(jù)進行親緣關(guān)系預(yù)測的技術(shù)應(yīng)運而生并快速發(fā)展[6~7],解決了當(dāng)下遇到的這一難題。該技術(shù)旨在通過親緣關(guān)系預(yù)測算法,基于全基因SNP測序數(shù)據(jù)計算某個群體中所有存在的親緣關(guān)系對。
早在2011年這些親緣關(guān)系預(yù)測算法就已經(jīng)有報道[8],且這些軟件如Plink/KING均為國外免費開源軟件。Plink是一款用于基因組關(guān)聯(lián)分析的開源軟件,具有基因組數(shù)據(jù)格式轉(zhuǎn)換、基礎(chǔ)基因組信息統(tǒng)計、LD(linked dimorphisms)計算、共祖片段IBD(identical by descent)距離計算等功能[9],在親緣關(guān)系預(yù)測中主要使用該軟件進行數(shù)據(jù)歸一化處理,為后續(xù)算法軟件提供原始輸入文件。KING是一款使用全基因SNP數(shù)據(jù)精確推斷任何一對個體親緣關(guān)系等級的軟件,可計算高達4級的親緣關(guān)系,支持接受Plink轉(zhuǎn)換后的二進制格式文件[10]。
然而,這一技術(shù)的原有預(yù)測流程十分繁瑣,需要對全基因組數(shù)據(jù)進行預(yù)處理,并使用Plink軟件將文件轉(zhuǎn)化為二進制,再使用KING軟件計算出親緣關(guān)系等級;如果需要知道其實際親屬關(guān)系,還要按照親緣關(guān)系等級判斷方法逆向還原。鑒于此,本文提出并開發(fā)了一套具有極強交互性的分析系統(tǒng)——親緣關(guān)系預(yù)測系統(tǒng)(Kinship Prediction System Version 1.0,KPS v1.0),該系統(tǒng)的處理流程界面化、自動化、簡單化,可以自動預(yù)處理全基因組數(shù)據(jù),并將最終結(jié)果自動繪制成家譜圖。
KPS v1.0極大地簡化了親緣關(guān)系預(yù)測的流程,不需要操作人員熟練掌握數(shù)據(jù)處理腳本語言和生物信息學(xué)軟件,顯著降低了操作難度,提高了分析效率,為物證鑒定工作提供了更好的服務(wù),在人類遺傳學(xué)、法醫(yī)遺傳學(xué)等領(lǐng)域有重要的應(yīng)用價值。
軟件開發(fā)平臺為Ubuntu 18.04操作系統(tǒng),Python語言v3.6版本,運行環(huán)境為安裝了瀏覽器的Windows 7及其以上操作系統(tǒng)。
KPS v1.0親緣關(guān)系模塊主要涉及前端界面和后臺計算兩大部分。后臺計算主要是基于Python語言將4個功能進行模塊化串聯(lián)設(shè)計并編程,包括輸入數(shù)據(jù)格式預(yù)處理、基于Plink軟件的數(shù)據(jù)二進制轉(zhuǎn)換、基于KING軟件的親緣關(guān)系等級計算、親緣關(guān)系等級與實際親屬關(guān)系的轉(zhuǎn)換等。前端界面包括了批次名稱錄入、數(shù)據(jù)錄入、數(shù)據(jù)類型選擇、檢測平臺選擇、親緣關(guān)系結(jié)果查看等功能。具體結(jié)構(gòu)如圖1所示。后端部分的模塊化串聯(lián)設(shè)計可以降低程序的耦合度[11],簡化程序設(shè)計、調(diào)試和維護等操作,前端界面易于用戶使用和直觀查看結(jié)果。
1.3.1 親緣關(guān)系預(yù)測方法
圖1 親緣關(guān)系模塊流程圖Fig.1 The kinship module flowchart
親緣關(guān)系預(yù)測是通過計算全基因SNP數(shù)據(jù)的共祖片段大小判斷親緣關(guān)系的遠近[12]。KPS v1.0系統(tǒng)主要基于KING軟件計算親緣關(guān)系等級,并根據(jù)親緣關(guān)系等級圖推導(dǎo)其實際親屬關(guān)系。本系統(tǒng)中親緣關(guān)系分為4級,親緣關(guān)系等級圖如圖2所示。親緣關(guān)系等級判斷方法:父母子女之間的親緣關(guān)系為一級,兩兩個體親緣關(guān)系等級為每個個體到共祖父母親緣關(guān)系的加和[13]。
1.3.2 親緣關(guān)系等級計算
當(dāng)系統(tǒng)輸入完成后,前端會將輸入數(shù)據(jù)傳遞給后臺,后臺只需新建一個Celery[14]任務(wù),并將其放置到Redis[15]任務(wù)緩沖隊列末尾,此時多核CPU會同時從隊列中讀取任務(wù)并執(zhí)行,用戶提交完任務(wù)即可隨時在任務(wù)列表中查看任務(wù)狀態(tài)。任務(wù)處理示意圖如圖3所示。
每一個Celery任務(wù)都會定義一個親緣關(guān)系計算函數(shù),并保存該任務(wù)的輸入數(shù)據(jù)。親緣關(guān)系計算函數(shù)首先根據(jù)批次數(shù)據(jù)類型的不同調(diào)用不同的接口,并基于pandas庫[16],將批次文件與相應(yīng)的檢測平臺索引文件轉(zhuǎn)化為MAP和PED格式[17]文件,接著自動調(diào)用后臺腳本(集成了Plink和KING軟件),基于數(shù)據(jù)預(yù)處理結(jié)果計算得到本批次親緣關(guān)系等級對,并將其寫入服務(wù)器指定文件。
1.3.3 系統(tǒng)輸入與輸出
系統(tǒng)輸入需要用戶填寫新建任務(wù)的批次名,選擇批次文件的數(shù)據(jù)類型和檢測平臺,并上傳批次壓縮包文件。其中檢測平臺有兩種,對應(yīng)兩種SNP索引文件,每個文件保存多個SNP位點信息。數(shù)據(jù)類型也有兩種:個體數(shù)據(jù)和原始數(shù)據(jù)。原始數(shù)據(jù)為個體基于某種檢測平臺測序直接得到的堿基對序列文本;個體數(shù)據(jù)為個體基于某種監(jiān)測平臺測序得到的基因型表格文件,直觀展示了個體在某個SNP位點處的基因型。上傳的批次壓縮包文件包含多個個體的測序數(shù)據(jù),所有測序數(shù)據(jù)格式保持一致。
圖2 親緣關(guān)系等級圖Fig.2 The kinship degree tree
圖3 任務(wù)處理示意圖Fig.3 Task processing diagram
任務(wù)計算成功后,用戶可在頁面查看親緣關(guān)系對列表,列表中顯示批次中所有存在的親緣關(guān)系對及其對應(yīng)的親緣關(guān)系等級,點擊某一對親緣關(guān)系,系統(tǒng)會自動基于親緣關(guān)系等級圖計算這對樣本可能存在的實際親屬關(guān)系,并將結(jié)果繪制為家譜圖供用戶直觀查看。
KPS v1.0包含以下5個方面的特點:1)支持導(dǎo)入群體原始基因型數(shù)據(jù);2)自動識別輸入批次內(nèi)樣本個數(shù),若樣本個數(shù)小于2,則運行失敗;3)若計算時發(fā)生異常,如用戶新建任務(wù)時選錯數(shù)據(jù)類型或檢測平臺,任務(wù)直接會顯示運行失敗;4)可一次性提交多個批次進行計算,自動識別電腦CPU核數(shù),將任務(wù)自動分配到單個CPU計算,提升運算效率;5)可基于親緣關(guān)系等級計算結(jié)果自動繪制家譜圖供用戶直觀查看。
測試樣本共計37份,來自實驗室4名志愿者家系,涵蓋1~4級親緣關(guān)系。所有樣本提供者均簽署知情同意書且實際親緣關(guān)系均基于樣本來源者自述。
將4名志愿者家族的實際親緣關(guān)系分別繪制家譜圖,與系統(tǒng)預(yù)測結(jié)果進行對比,比較結(jié)果如圖4所示。系統(tǒng)對A、B、C、D 4個志愿者家族的163對親緣關(guān)系進行了計算,預(yù)測準(zhǔn)確率分別為92.73%、93.94%、100%、90.48%,平均準(zhǔn)確率達到94.29%,其中一級親緣關(guān)系和四級親緣關(guān)系的預(yù)測準(zhǔn)確率均為100%。雖然將8對二級親緣關(guān)系預(yù)測為三級親緣關(guān)系,2對三級親緣關(guān)系預(yù)測為四級親緣關(guān)系,但對總預(yù)測的163對親緣關(guān)系而言,錯誤率僅為6.13%,表明親緣關(guān)系預(yù)測系統(tǒng)具有可觀的準(zhǔn)確性。
圖4 實際親緣關(guān)系與預(yù)測親緣關(guān)系對比圖(A)志愿者A;(B)志愿者B;(C)志愿者C;(D)志愿者D。圖中方框和圓圈分別代表家族中的男性和女性,檢測的個體已為其編號,未檢測的個體未編號。不同顏色代表不同的親緣關(guān)系等級(參考圖2的親緣關(guān)系等級圖),紅色標(biāo)注的個體代表本人,未用顏色標(biāo)注的個體為未檢測的或與本人無實際親緣關(guān)系的個體。虛線表示實際親緣關(guān)系與系統(tǒng)預(yù)測親緣關(guān)系不相符的親緣關(guān)系對,其上面的數(shù)字代表系統(tǒng)預(yù)測的親緣關(guān)系等級。Fig.4 The comparison between actual kinship and predicted kinship(A)Volunteer A;(B)Volunteer B;(C)Volunteer C;(D)Volunteer D.The boxes and circles represent the males and females,respectively.The individuals with numbers are tested,and the ones without numbers are not tested.Different colors represent different kinship degrees which are consistent with Fig.2.The individuals in red mark represent themselves,and the unmarked ones are undetected or have no actual kinship with the red-marked individual.The dotted line indicates the kinship pair whose actual kinship doesn’t match the kinship predicted by the system,and the number above it represents the kinship degree predicted by the system.
表1 系統(tǒng)與人工預(yù)測所需時間的比較Table 1 Time comparison between system and manual prediction
在不同樣本數(shù)下,對系統(tǒng)的計算時間和原始人工預(yù)測方法所需時間進行了統(tǒng)計,結(jié)果見表1。從預(yù)測所需時間來看,系統(tǒng)將預(yù)測效率提升了200多倍。同時由表中數(shù)據(jù)可知,系統(tǒng)運行時間與一個批次內(nèi)的樣本數(shù)和親緣關(guān)系對數(shù)正相關(guān),并且更易受批次內(nèi)樣本數(shù)的影響,因為系統(tǒng)需要計算所有樣本的兩兩親緣關(guān)系,最終輸出有親緣關(guān)系的樣本對,但人工預(yù)測所用時間主要受批次內(nèi)親緣關(guān)系對數(shù)的影響,因為大多數(shù)時間主要用在最終親緣關(guān)系結(jié)果的統(tǒng)計與家譜圖的繪制??傊?系統(tǒng)的開發(fā)節(jié)省了大量人力物力資源,極大提高了親緣關(guān)系預(yù)測的效率,為物證鑒定工作提供了更好的工具。
KPS v1.0是一個完整的Web系統(tǒng),需要部署在服務(wù)器上,用戶使用只需通過瀏覽器訪問即可。系統(tǒng)支持多用戶使用、人臉識別登錄、個人信息管理、用戶管理、任務(wù)管理及親緣關(guān)系查看等功能。同時,系統(tǒng)開發(fā)完畢已打包為完整的Docker鏡像,只需在服務(wù)器上安裝Docker容器即可實現(xiàn)一鍵部署[18],解決了以往項目部署難的問題。目前,系統(tǒng)在測試完成后就部署在線上投入使用,各個功能都得到了物證鑒定部門工作人員的認可,為物證鑒定工作帶來了方便,同時也極大地提高了親緣關(guān)系預(yù)測效率,實現(xiàn)了系統(tǒng)的開發(fā)意義。
本文僅著重介紹了系統(tǒng)親緣關(guān)系的預(yù)測模塊。需要指出的是,KPS v1.0后臺是基于Plink和KING軟件計算的,系統(tǒng)最終計算得到的親緣關(guān)系對與KING軟件計算結(jié)果一致,目的是將以前人工預(yù)處理數(shù)據(jù)的流程和人工繪制家譜圖的流程交由計算機來完成,這樣不僅節(jié)省了人力物力資源,而且大大地提升了分析效率。同時,以往每臺計算機每次僅執(zhí)行一個批次計算,一直要等到計算完畢才可進行下一批次的計算,這樣大大浪費了多核CPU的資源,而KPS v1.0使用異步任務(wù)處理機制妥善解決了這一難題,保證每臺計算機可以并行處理多個批次計算,達到CPU最高利用率,用戶提交完批次無需等待,不僅可隨時查看批次計算狀態(tài),還可直接計算下一批次,這樣使計算效率得到了質(zhì)的提升,并且也方便了用戶使用。
值得注意的是,目前國內(nèi)對親緣關(guān)系這一方向的研究甚少[13],而KPS v1.0的親緣關(guān)系計算軟件也大都來源于國外,在部分國內(nèi)人群中的應(yīng)用可能具有一定的局限性;同時,KPS v1.0系統(tǒng)只是針對本項目組前期采集的四大志愿者家族的37份測試樣本進行了測試,結(jié)果雖然很可觀,但無法直接用來推斷實際案件,直接確定嫌疑人,只能作為參考,輔助物證鑒定工作。
總之,KPS v1.0使用簡單,界面直觀,顯著降低了使用門檻,而且將多種流程實現(xiàn)了程序自動化,幫助物證鑒定工作人員提高了計算效率,在人類遺傳學(xué)、法醫(yī)遺傳學(xué)中為更多研究人員/分析人員提供了方便。