PhenoTips™ is a software tool for collecting and analyzing phenotypic information for patients with genetic disorders.git
Phenotips是一款分析基因疾病的Web工具。以它的源碼做爲起點,我會隨看隨寫一些經驗下來與你們分享。因爲我不是作生物信息的,因此裏面會穿插不少相關的基本知識,行家直接跳過github
項目源碼託管在Github中,從首頁底下就能夠找到連接。數據庫
Clone的過程比較久,主要裏面包含了一些數據庫。項目很活躍,很贊。後端
按照README裏的步驟走下來,JDK,Maven,git clone,調高Maven內存,mvn install
,就能夠等着啦。api
表型 ( phenotype )
表型,又稱表現型,對於一個生物而言,表示它某一特定的物理外觀或成分。一我的是否有耳珠、植物的高度、人的血型、蛾的顏色等等,都是表型的例子。
表型可分爲連續變異或不連續變異的。前者好比身高、智力,後者好比血型(ABO那些)、捲舌。網絡基因突變 ( genetic disorder )
基因突變很容易理解,就是遺傳過程當中,一個或多個基因位的異常變化,這種變化有可能形成一些很罕見的疾病。這裏指的罕見幾萬,幾百萬分之一這種機率。maven
我猜你看到這裏,mvn install
還沒結束。因此這裏再作一個建議:使用intelliJ打開Phenotips工程,打開的時候選擇maven項目。固然,用intelliJ打開之後依然會maven install一堆東西。此時建議你把它打開,放到一個好的網絡環境內,而後去吃個飯。函數
使用intelliJ打開工程之後就能夠發現這是一個規劃的挺好的項目。工具
components, distribution, resources劃分的很明確。邏輯模塊都在components裏,每個模塊基本都按這樣組織。api, 各類ui。ui
由表及裏,咱們找一個入口切入來開始分析之旅。咱們來挑選Quick Phenotype Search做爲第一步。這個功能的主要做用是把醫生輸入的症狀文字轉換爲HPO(Human Phenotype Ontology)
中文人類表型標準用語 ( Human Phenotype Ontology )
HPO是一套描述人類疾病所致的異常表型的標準詞語集,目前已經有一萬多個條目。也有中國的團隊在作相應的中文版翻譯。
這裏,當用戶輸入文字的時候會彈出autocomplete的窗口,因此天然也會有後端的API與之對應。咱們打開Chrome Dev Tools看一下就發現這裏用到的API是
GET bin/get/PhenoTips/SolrService q:fever defType:edismax spellcheck.collate:true spellcheck:true lowercaseOperators:false
幾個參數有用的基本就是那個q啦。API裏面還有SolrService,看來使用了Solr做爲搜索引擎。那咱們就去IntelliJ裏去找Solr和這堆參數就好,挑個最難重名的來搜就好,就lowercaseOperators了。
找到4個有用的,再看看後面所在文件,就最後那個啦。簡單的就跟到了search這個函數,AbstractOBOSolrVocabulary,DefaultVocabularyTermSuggestionsResource,xwiki這種看起來很牛的庫。