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