張國(guó)強(qiáng) 劉長(zhǎng)寧
摘要: 在針對(duì)長(zhǎng)非編碼RNA(lncRNA)進(jìn)行CRISPR/Cas9基因編輯時(shí),從頭設(shè)計(jì)有效singleguide RNA(sgRNA)并非易事,因此收集了已經(jīng)發(fā)表文章中經(jīng)實(shí)驗(yàn)驗(yàn)證過(guò)的sgRNA信息,并基于MTV模式的Django框架,開(kāi)發(fā)出CRISPRlnc網(wǎng)站數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)的開(kāi)發(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ù)庫(kù)的開(kāi)發(fā)對(duì)于開(kāi)發(fā)時(shí)間、開(kāi)發(fā)成本和開(kāi)發(fā)效率的要求更加苛刻。因此,快速搭建一個(gè)完整的Web框架對(duì)于網(wǎng)站數(shù)據(jù)庫(kù)的開(kāi)發(fā)十分重要[1]。本文探究了計(jì)算機(jī)網(wǎng)絡(luò)體系架構(gòu)的發(fā)展和MVC模式,著重介紹了Django框架對(duì)MVC模式的繼承和發(fā)展,并展示了使用Django框架快速開(kāi)發(fā)CRISPRlnc網(wǎng)站數(shù)據(jù)庫(kù)的實(shí)現(xiàn)。
LncRNA是一類長(zhǎng)度超過(guò)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)過(guò)實(shí)驗(yàn)驗(yàn)證的sgRNA信息并基于Django框架構(gòu)建了CRISPRlnc數(shù)據(jù)庫(kù)。CRISPRlnc數(shù)據(jù)庫(kù)的開(kāi)發(fā)不僅會(huì)為lncRNA的基因組編輯提供有效的輔助,還會(huì)為將來(lái)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)過(guò)客戶端/服務(wù)器架構(gòu)(Client/Server,C/S),發(fā)展到廣泛應(yīng)用的瀏覽器/服務(wù)器架構(gòu)(Browser/Server,B/S)。B/S是從C/S派生出來(lái)的新生代架構(gòu),由瀏覽器和服務(wù)器端構(gòu)成,提高了開(kāi)發(fā)效率和維護(hù)成本,更適合當(dāng)前網(wǎng)絡(luò)技術(shù)的發(fā)展[4]。MVC模式是Model-View-Controller的簡(jiǎn)稱,即模型-視圖-控制器,是一種軟件設(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)開(kāi)發(fā)模型簡(jiǎn)單,數(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)的問(wèn)題,技術(shù)人員開(kāi)發(fā)出了分布式結(jié)構(gòu),將系統(tǒng)的結(jié)構(gòu)有兩層推向了三層B/S架構(gòu),它將客戶端和服務(wù)器之間通過(guò)運(yùn)用服務(wù)程序連接,用戶只需使用瀏覽器就可以輕松實(shí)現(xiàn)對(duì)系統(tǒng)的訪問(wèn)[6]。與C/S相比,B/S架構(gòu)升級(jí)簡(jiǎn)單,運(yùn)用起來(lái)也很方便,同時(shí)對(duì)客戶端的硬件配置要求也不高。
1.2 MVC模式
MVC是在二十世紀(jì)八十年代開(kāi)發(fā)出來(lái)的一種設(shè)計(jì)模式,它將輸入、處理和輸出三部分強(qiáng)制性地分開(kāi),呈現(xiàn)出松耦合的狀態(tài),如今已被廣泛地應(yīng)用于網(wǎng)絡(luò)框架和其他應(yīng)用程序中[7]?;贛VC模式開(kāi)發(fā)的網(wǎng)絡(luò)框架從邏輯上可以分為三層:模型,視圖和控制器??刂破髫?fù)責(zé)接受用戶的輸入請(qǐng)求,并傳遞命令給視圖或者模型,它本身不做任何處理,也不輸出數(shù)據(jù);模型表示業(yè)務(wù)對(duì)象與數(shù)據(jù)庫(kù)的映射(ORM),同時(shí)負(fù)責(zé)存取數(shù)據(jù),將業(yè)務(wù)數(shù)據(jù)反饋給視圖等;視圖負(fù)責(zé)給用戶展示信息,在數(shù)據(jù)庫(kù)網(wǎng)站的開(kāi)發(fā)中,視圖通常由HTML元素、模板標(biāo)記語(yǔ)言和模型反饋的數(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ù)庫(kù)的開(kāi)發(fā)具有重要作用。
2 Django框架與MVC模式
2.1 Django框架對(duì)MVC模式的發(fā)展
Django是基于Python語(yǔ)言在MVC模式的基礎(chǔ)上開(kāi)發(fā)的MTV模式(Model、Template和View)的開(kāi)源Web框架,用少量的代碼就可以實(shí)現(xiàn)強(qiáng)大的功能(圖1)。Django框架遵循MVC模式,其中心思想是減少代碼的重復(fù)編寫(xiě)并降低模塊間的耦合性。Django中的模型和MVC框架中的模型功能相同,負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互;Django的視圖與MVC中的視圖略有不同,主要完成數(shù)據(jù)的存取、調(diào)用模型等功能;Django的模板是MVC框架中所沒(méi)有的,它負(fù)責(zé)定義文件的結(jié)構(gòu)或布局的文件,支持簡(jiǎn)單的邏輯結(jié)構(gòu),將頁(yè)面展示給用戶[8]。
通過(guò)Django框架能快速完成網(wǎng)站搭建,結(jié)合其眾多的擴(kuò)展插件,可以快速開(kāi)發(fā)出功能強(qiáng)大的網(wǎng)站服務(wù)。不同于MVC框架,Django將controller接受用戶輸入的部分由框架自行處理。
2.2 Django框架的優(yōu)點(diǎn)
Django本身就來(lái)自于實(shí)踐,注重代碼的利用率,另外豐富的組件可以方便的以插件的形式應(yīng)用于整個(gè)網(wǎng)站,提高了網(wǎng)站的開(kāi)發(fā)效率??偟膩?lái)說(shuō),Django框架主要有以下幾個(gè)優(yōu)點(diǎn)。
⑴ 靈活的URL設(shè)計(jì):Django框架中URL設(shè)計(jì)簡(jiǎn)潔靈活,功能強(qiáng)大。URL通常與視圖相配合,在urls.py中通過(guò)Python正則表達(dá)式處理,使用的是匹配模式,便于搜索引擎的搜索。
⑵ 對(duì)象關(guān)系映射:Django的數(shù)據(jù)庫(kù)組件一一對(duì)象關(guān)系映射提供了數(shù)據(jù)模塊和數(shù)據(jù)引擎之間的接口。另外,Django支持的數(shù)據(jù)庫(kù)有PostgreSQL、MySQL和SQLite等,只需要修改配置文件就可以切換數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)的開(kāi)發(fā)更為靈活。
⑶ 可擴(kuò)展性:Django架構(gòu)的每一部分相互獨(dú)立,可以根據(jù)需求使用第三方庫(kù)來(lái)擴(kuò)展Web服務(wù)。
3 Django框架在CRISPRlnc數(shù)據(jù)庫(kù)中的實(shí)現(xiàn)
Django框架更專注于數(shù)據(jù)層面的實(shí)現(xiàn),方便科研人員快速開(kāi)發(fā)相關(guān)的數(shù)據(jù)庫(kù)網(wǎng)站。在此,我們以CRISPRlnc數(shù)據(jù)庫(kù)為例,展示基于Django框架網(wǎng)站數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程和CRISPRlnc數(shù)據(jù)庫(kù)的一些基本信息。
3.1 數(shù)據(jù)的收集
首先在PubMed上根據(jù)關(guān)鍵字檢索已發(fā)表的與lncRNA相關(guān)的文獻(xiàn),然后通過(guò)Python腳本篩選出與CRISPR/Cas9基因編輯相關(guān)的文章。在人工閱讀篩選出的200多篇文獻(xiàn)后,共提取出305個(gè)lncRNA和2102個(gè)有效的sgRNA。最后將收集的lncRNA和sgRNA的相關(guān)信息整合成數(shù)據(jù)庫(kù)需要的格式。
3.2 開(kāi)發(fā)環(huán)境搭建
CRISPRlnc數(shù)據(jù)庫(kù)的構(gòu)建以Linux服務(wù)器為平臺(tái),Nginx作為Web服務(wù)器,uWSGI作為通訊協(xié)議,基于Django框架,使用Python語(yǔ)言開(kāi)發(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ù)庫(kù)開(kāi)發(fā)環(huán)境的初步搭建。
3.3 網(wǎng)站建設(shè)和部署
網(wǎng)站的建設(shè)主要由網(wǎng)頁(yè)的設(shè)計(jì)和開(kāi)發(fā),數(shù)據(jù)的導(dǎo)入,以及相關(guān)功能的實(shí)現(xiàn)等幾部分組成。通過(guò)前期對(duì)生物信息數(shù)據(jù)庫(kù)的調(diào)研并結(jié)合課題組已有資源,制定的設(shè)計(jì)方案如圖2所示:數(shù)據(jù)庫(kù)網(wǎng)站的主體框架由Django搭建;網(wǎng)頁(yè)的開(kāi)發(fā)是使用HTML、CSS以及JavaScript等網(wǎng)站開(kāi)發(fā)語(yǔ)言,結(jié)合Bootstrap前端框架完成;網(wǎng)站的數(shù)據(jù)庫(kù)是使用Django默認(rèn)的SQLite數(shù)據(jù)庫(kù),進(jìn)入SQLite控制臺(tái)輸入前面整合好的符合數(shù)據(jù)庫(kù)格式的文件即可;在網(wǎng)站的功能方面,除了基本的檢索和展示外,還增加了在線BLAST和GBrowse功能,BLAST功能是依靠Django應(yīng)用程序Django-blastplus實(shí)現(xiàn)的,GBrowse功能是由Biodalliance實(shí)現(xiàn)的。
最后,購(gòu)買域名并在阿里云服務(wù)器上完成解析,修改Nginx、uWSGI和Django的配置信息,啟動(dòng)網(wǎng)站,即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)的遠(yuǎn)程訪問(wèn)功能。
3.4 網(wǎng)站展示
在用戶界面,我們提供了瀏覽、檢索、下載數(shù)據(jù)以及在線BLAST服務(wù)和基因組瀏覽器等功能(圖3)。為方便用戶使用CRISPRlnc數(shù)據(jù)庫(kù),還提供了一個(gè)說(shuō)明文檔,里面列出了數(shù)據(jù)庫(kù)中每個(gè)工具的使用方法和使用CRISPR/Cas9對(duì)lncRNA進(jìn)行基因編輯的一些注意事項(xiàng)。另外,我們?cè)诰W(wǎng)頁(yè)的下方還添加了鏈接欄,包括lncRNA的數(shù)據(jù)庫(kù)和sgRNA的設(shè)計(jì)工具。
4 結(jié)束語(yǔ)
Django是一個(gè)可以被用來(lái)快速開(kāi)發(fā)功能強(qiáng)大的網(wǎng)站數(shù)據(jù)庫(kù)的Web框架,特別適合專注于數(shù)據(jù)層面的科研工作者們使用。文中基于Django開(kāi)發(fā)的CRISPRlnc數(shù)據(jù)庫(kù)將為科研工作者針對(duì)lncRNA進(jìn)行CRISPR/Cas9基因編輯提供有效的輔助,并促進(jìn)CRISPR/Cas9基因編輯技術(shù)的應(yīng)用和進(jìn)步。CRISPRlnc數(shù)據(jù)庫(kù)訪問(wèn)網(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ù)庫(kù)搭建以及可視化平臺(tái)的實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué)碩士學(xué)位論文,2019.