張國強(qiáng) 劉長寧
摘要: 在針對(duì)長非編碼RNA(lncRNA)進(jìn)行CRISPR/Cas9基因編輯時(shí),從頭設(shè)計(jì)有效singleguide RNA(sgRNA)并非易事,因此收集了已經(jīng)發(fā)表文章中經(jīng)實(shí)驗(yàn)驗(yàn)證過的sgRNA信息,并基于MTV模式的Django框架,開發(fā)出CRISPRlnc網(wǎng)站數(shù)據(jù)庫。該數(shù)據(jù)庫的開發(fā)將為科研工作者針對(duì)lncRNA進(jìn)行CRISPR/Cas9基因編輯提供有效的輔助,并促進(jìn)lncRNA的功能研究和CRISPR/Cas9技術(shù)的發(fā)展。
關(guān)鍵詞: MTV模式; Django框架; lncRNA; CRISPR/Cas9
中圖分類號(hào):TP392? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2021)10-32-03
Django its development to the MVC pattern and its application
in the CRISPRlnc database
Zhang Guoqiang1,2, Liu Changning1
(1. Xishuangbanna Tropical Botanical Garden Chinese Academy of Sciences, Xishuangbanna, Yunnan 666303, China;
2. University of Chinese Academy of Sciences)
Abstract: It is not easy to design effective singleguideRNAs (sgRNAs) from scratch in CRISPR/Cas9 gene editing for long non-coding RNAs (lncRNAs), so the sgRNAs information verified by experiments in published articles is collected, and the CRISPRlnc website database based on the Django framework of MTV pattern is developed. The CRISPRlnc will not only provide a effective assistance for researchers using CRISPR/Cas9 to edit lncRNAs, but also promote the functional study of lncRNAs and the development of CRISPR/Cas9 technology.
Key words: MTV pattern; Django framework; lncRNA; CRISPR/Cas9
0 引言
由于互聯(lián)網(wǎng)技術(shù)的快速發(fā)展以及各種信息的急劇膨脹,網(wǎng)站數(shù)據(jù)庫的開發(fā)對(duì)于開發(fā)時(shí)間、開發(fā)成本和開發(fā)效率的要求更加苛刻。因此,快速搭建一個(gè)完整的Web框架對(duì)于網(wǎng)站數(shù)據(jù)庫的開發(fā)十分重要[1]。本文探究了計(jì)算機(jī)網(wǎng)絡(luò)體系架構(gòu)的發(fā)展和MVC模式,著重介紹了Django框架對(duì)MVC模式的繼承和發(fā)展,并展示了使用Django框架快速開發(fā)CRISPRlnc網(wǎng)站數(shù)據(jù)庫的實(shí)現(xiàn)。
LncRNA是一類長度超過200個(gè)核苷酸的非編碼RNA轉(zhuǎn)錄本[2]。因其位置和發(fā)揮功能機(jī)制的多樣性,在運(yùn)用CRISPR/Cas9基因編輯技術(shù)進(jìn)行l(wèi)ncRNA的基因編輯時(shí),從頭設(shè)計(jì)有效的sgRNA并非易事[3]。因此,我們收集了已發(fā)表的經(jīng)過實(shí)驗(yàn)驗(yàn)證的sgRNA信息并基于Django框架構(gòu)建了CRISPRlnc數(shù)據(jù)庫。CRISPRlnc數(shù)據(jù)庫的開發(fā)不僅會(huì)為lncRNA的基因組編輯提供有效的輔助,還會(huì)為將來lncRNA的功能研究提供一個(gè)嶄新的平臺(tái),并促進(jìn)CRISPR/Cas9基因編輯技術(shù)的應(yīng)用。
1 體系架構(gòu)的發(fā)展與MVC模式
計(jì)算機(jī)網(wǎng)絡(luò)的體系架構(gòu)從最初的集中式結(jié)構(gòu),經(jīng)過客戶端/服務(wù)器架構(gòu)(Client/Server,C/S),發(fā)展到廣泛應(yīng)用的瀏覽器/服務(wù)器架構(gòu)(Browser/Server,B/S)。B/S是從C/S派生出來的新生代架構(gòu),由瀏覽器和服務(wù)器端構(gòu)成,提高了開發(fā)效率和維護(hù)成本,更適合當(dāng)前網(wǎng)絡(luò)技術(shù)的發(fā)展[4]。MVC模式是Model-View-Controller的簡稱,即模型-視圖-控制器,是一種軟件設(shè)計(jì)的典范[5],MVC的分層、分治思想與當(dāng)前流行的分布式架構(gòu)相得益彰,是在分布式架構(gòu)特別是B/S出現(xiàn)后的主流設(shè)計(jì)模式。
1.1 C/S和B/S架構(gòu)
在C/S架構(gòu)的系統(tǒng)中,客戶端部分負(fù)責(zé)執(zhí)行前臺(tái)功能,服務(wù)器主要用于對(duì)數(shù)據(jù)的處理和對(duì)系統(tǒng)的維護(hù)上。C/S架構(gòu)開發(fā)模型簡單,數(shù)據(jù)操作和事務(wù)處理能力強(qiáng),但由于C/S結(jié)構(gòu)被設(shè)計(jì)為兩層結(jié)構(gòu),顯示邏輯和應(yīng)用業(yè)務(wù)邏輯被放在了客戶端,這樣就會(huì)對(duì)客戶端的運(yùn)行能力和存儲(chǔ)空間等硬件配置有較高的要求。另外,在升級(jí)客戶端時(shí),需要對(duì)每個(gè)用戶的電腦進(jìn)行升級(jí),大大增加了軟件升級(jí)所需的工作量。為了克服C/S架構(gòu)出現(xiàn)的問題,技術(shù)人員開發(fā)出了分布式結(jié)構(gòu),將系統(tǒng)的結(jié)構(gòu)有兩層推向了三層B/S架構(gòu),它將客戶端和服務(wù)器之間通過運(yùn)用服務(wù)程序連接,用戶只需使用瀏覽器就可以輕松實(shí)現(xiàn)對(duì)系統(tǒng)的訪問[6]。與C/S相比,B/S架構(gòu)升級(jí)簡單,運(yùn)用起來也很方便,同時(shí)對(duì)客戶端的硬件配置要求也不高。
1.2 MVC模式
MVC是在二十世紀(jì)八十年代開發(fā)出來的一種設(shè)計(jì)模式,它將輸入、處理和輸出三部分強(qiáng)制性地分開,呈現(xiàn)出松耦合的狀態(tài),如今已被廣泛地應(yīng)用于網(wǎng)絡(luò)框架和其他應(yīng)用程序中[7]?;贛VC模式開發(fā)的網(wǎng)絡(luò)框架從邏輯上可以分為三層:模型,視圖和控制器??刂破髫?fù)責(zé)接受用戶的輸入請求,并傳遞命令給視圖或者模型,它本身不做任何處理,也不輸出數(shù)據(jù);模型表示業(yè)務(wù)對(duì)象與數(shù)據(jù)庫的映射(ORM),同時(shí)負(fù)責(zé)存取數(shù)據(jù),將業(yè)務(wù)數(shù)據(jù)反饋給視圖等;視圖負(fù)責(zé)給用戶展示信息,在數(shù)據(jù)庫網(wǎng)站的開發(fā)中,視圖通常由HTML元素、模板標(biāo)記語言和模型反饋的數(shù)據(jù)共同組成。MVC模式作為B/S架構(gòu)的主流設(shè)計(jì)模式,可以很好的與其相結(jié)合,并在理論上給B/S架構(gòu)實(shí)現(xiàn)邏輯處理和表現(xiàn)分離以指導(dǎo),對(duì)網(wǎng)站數(shù)據(jù)庫的開發(fā)具有重要作用。
2 Django框架與MVC模式
2.1 Django框架對(duì)MVC模式的發(fā)展
Django是基于Python語言在MVC模式的基礎(chǔ)上開發(fā)的MTV模式(Model、Template和View)的開源Web框架,用少量的代碼就可以實(shí)現(xiàn)強(qiáng)大的功能(圖1)。Django框架遵循MVC模式,其中心思想是減少代碼的重復(fù)編寫并降低模塊間的耦合性。Django中的模型和MVC框架中的模型功能相同,負(fù)責(zé)與數(shù)據(jù)庫的交互;Django的視圖與MVC中的視圖略有不同,主要完成數(shù)據(jù)的存取、調(diào)用模型等功能;Django的模板是MVC框架中所沒有的,它負(fù)責(zé)定義文件的結(jié)構(gòu)或布局的文件,支持簡單的邏輯結(jié)構(gòu),將頁面展示給用戶[8]。
通過Django框架能快速完成網(wǎng)站搭建,結(jié)合其眾多的擴(kuò)展插件,可以快速開發(fā)出功能強(qiáng)大的網(wǎng)站服務(wù)。不同于MVC框架,Django將controller接受用戶輸入的部分由框架自行處理。
2.2 Django框架的優(yōu)點(diǎn)
Django本身就來自于實(shí)踐,注重代碼的利用率,另外豐富的組件可以方便的以插件的形式應(yīng)用于整個(gè)網(wǎng)站,提高了網(wǎng)站的開發(fā)效率。總的來說,Django框架主要有以下幾個(gè)優(yōu)點(diǎn)。
⑴ 靈活的URL設(shè)計(jì):Django框架中URL設(shè)計(jì)簡潔靈活,功能強(qiáng)大。URL通常與視圖相配合,在urls.py中通過Python正則表達(dá)式處理,使用的是匹配模式,便于搜索引擎的搜索。
⑵ 對(duì)象關(guān)系映射:Django的數(shù)據(jù)庫組件一一對(duì)象關(guān)系映射提供了數(shù)據(jù)模塊和數(shù)據(jù)引擎之間的接口。另外,Django支持的數(shù)據(jù)庫有PostgreSQL、MySQL和SQLite等,只需要修改配置文件就可以切換數(shù)據(jù)庫,使數(shù)據(jù)庫的開發(fā)更為靈活。
⑶ 可擴(kuò)展性:Django架構(gòu)的每一部分相互獨(dú)立,可以根據(jù)需求使用第三方庫來擴(kuò)展Web服務(wù)。
3 Django框架在CRISPRlnc數(shù)據(jù)庫中的實(shí)現(xiàn)
Django框架更專注于數(shù)據(jù)層面的實(shí)現(xiàn),方便科研人員快速開發(fā)相關(guān)的數(shù)據(jù)庫網(wǎng)站。在此,我們以CRISPRlnc數(shù)據(jù)庫為例,展示基于Django框架網(wǎng)站數(shù)據(jù)庫的實(shí)現(xiàn)過程和CRISPRlnc數(shù)據(jù)庫的一些基本信息。
3.1 數(shù)據(jù)的收集
首先在PubMed上根據(jù)關(guān)鍵字檢索已發(fā)表的與lncRNA相關(guān)的文獻(xiàn),然后通過Python腳本篩選出與CRISPR/Cas9基因編輯相關(guān)的文章。在人工閱讀篩選出的200多篇文獻(xiàn)后,共提取出305個(gè)lncRNA和2102個(gè)有效的sgRNA。最后將收集的lncRNA和sgRNA的相關(guān)信息整合成數(shù)據(jù)庫需要的格式。
3.2 開發(fā)環(huán)境搭建
CRISPRlnc數(shù)據(jù)庫的構(gòu)建以Linux服務(wù)器為平臺(tái),Nginx作為Web服務(wù)器,uWSGI作為通訊協(xié)議,基于Django框架,使用Python語言開發(fā)的。
首先在Linux服務(wù)器上安裝Nginx、Django、uWSGI等相關(guān)軟件。然后創(chuàng)建Django項(xiàng)目,并對(duì)Nginx、Django和uWSGI進(jìn)行配置。啟動(dòng)網(wǎng)站,完成數(shù)據(jù)庫開發(fā)環(huán)境的初步搭建。
3.3 網(wǎng)站建設(shè)和部署
網(wǎng)站的建設(shè)主要由網(wǎng)頁的設(shè)計(jì)和開發(fā),數(shù)據(jù)的導(dǎo)入,以及相關(guān)功能的實(shí)現(xiàn)等幾部分組成。通過前期對(duì)生物信息數(shù)據(jù)庫的調(diào)研并結(jié)合課題組已有資源,制定的設(shè)計(jì)方案如圖2所示:數(shù)據(jù)庫網(wǎng)站的主體框架由Django搭建;網(wǎng)頁的開發(fā)是使用HTML、CSS以及JavaScript等網(wǎng)站開發(fā)語言,結(jié)合Bootstrap前端框架完成;網(wǎng)站的數(shù)據(jù)庫是使用Django默認(rèn)的SQLite數(shù)據(jù)庫,進(jìn)入SQLite控制臺(tái)輸入前面整合好的符合數(shù)據(jù)庫格式的文件即可;在網(wǎng)站的功能方面,除了基本的檢索和展示外,還增加了在線BLAST和GBrowse功能,BLAST功能是依靠Django應(yīng)用程序Django-blastplus實(shí)現(xiàn)的,GBrowse功能是由Biodalliance實(shí)現(xiàn)的。
最后,購買域名并在阿里云服務(wù)器上完成解析,修改Nginx、uWSGI和Django的配置信息,啟動(dòng)網(wǎng)站,即可實(shí)現(xiàn)數(shù)據(jù)庫的遠(yuǎn)程訪問功能。
3.4 網(wǎng)站展示
在用戶界面,我們提供了瀏覽、檢索、下載數(shù)據(jù)以及在線BLAST服務(wù)和基因組瀏覽器等功能(圖3)。為方便用戶使用CRISPRlnc數(shù)據(jù)庫,還提供了一個(gè)說明文檔,里面列出了數(shù)據(jù)庫中每個(gè)工具的使用方法和使用CRISPR/Cas9對(duì)lncRNA進(jìn)行基因編輯的一些注意事項(xiàng)。另外,我們在網(wǎng)頁的下方還添加了鏈接欄,包括lncRNA的數(shù)據(jù)庫和sgRNA的設(shè)計(jì)工具。
4 結(jié)束語
Django是一個(gè)可以被用來快速開發(fā)功能強(qiáng)大的網(wǎng)站數(shù)據(jù)庫的Web框架,特別適合專注于數(shù)據(jù)層面的科研工作者們使用。文中基于Django開發(fā)的CRISPRlnc數(shù)據(jù)庫將為科研工作者針對(duì)lncRNA進(jìn)行CRISPR/Cas9基因編輯提供有效的輔助,并促進(jìn)CRISPR/Cas9基因編輯技術(shù)的應(yīng)用和進(jìn)步。CRISPRlnc數(shù)據(jù)庫訪問網(wǎng)址為:http://www.crisprlnc.org。
參考文獻(xiàn)(References):
[1] 汪洋,姜新通.MVC框架在Python與Django下的設(shè)計(jì)研究[J].電腦與信息技術(shù),2021.29:55-57,63
[2] K. C. Wang, H. Y. Chang. Molecular mechanisms of long noncoding RNAs[J]. Mol Cell,2011.43:904-914
[3] A. Goyal et al. Challenges of CRISPR/Cas9 applications for long non-coding RNA genes[J]. Nucleic Acids Res,2017.45:e12
[4] 王運(yùn)冰.基于B/S和C/S混合體系結(jié)構(gòu)下的BIM監(jiān)理管理系統(tǒng)研究[D].武漢理工大學(xué)碩士學(xué)位論文,2017.
[5] 任中方,張華,閆明松等.MVC模式研究的綜述[J].計(jì)算機(jī)應(yīng)用研究,2004.10:1-5
[6] 于少波,李新明,劉東.基于B_S和MVC模式的武器裝備體系評(píng)估系統(tǒng)設(shè)計(jì)[J].太赫茲科學(xué)與電子信息學(xué)報(bào),2015.13:635-640
[7] 楊凡.基于MVC模式云桌面框架設(shè)計(jì)與實(shí)現(xiàn)[D]. 電子科技大學(xué)碩士學(xué)位論文,2017.
[8] 黃瑋.毛果楊基因數(shù)據(jù)庫搭建以及可視化平臺(tái)的實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué)碩士學(xué)位論文,2019.