- 在個人筆記本win10自帶子linux系統(tǒng)下奸鸯,運(yùn)行基于CPU運(yùn)算的RoseTTAFold
- 避開uniref30、BFD這兩個超大數(shù)據(jù)包的下載及解壓
- 提供便捷的pyRosetta安裝方式
- 使用網(wǎng)頁工具獲得MSA和二級結(jié)構(gòu)文件
??7月份吧趣,AlphaFold2和RoseTTAFold相繼公布源碼,讓生物圈著實(shí)沸騰了一把。尤其是AlphaFold2忱辅,預(yù)測的準(zhǔn)確性只能用“卓越”來描述焰宣,在CASP 14大賽中一騎絕塵霉囚。但AlphaFold2所需要的運(yùn)算資源太苛刻了,只適合“貴族“玩家匕积,它的“平凡之路”還很遠(yuǎn)佛嬉。RoseTTAFold雖與AlphaFold2還有一定差距,但比其他預(yù)測軟件還是有很大的優(yōu)勢闸天,最可貴的是RoseTTAFold運(yùn)算資源要求低得多暖呕,能夠滿足平民化要求。下面我就來介紹下RoseTTAFold真正“飛入尋常百姓家”的過程與方法苞氮。
??首先聲明本教程有多“貧民化”湾揽。我做測試的硬件條件是:雜牌筆記本,intel i7 9750 CPU,24G內(nèi)存库物,1T移動硬盤霸旗,有NVIDIA顯卡但無法使用(即完全CPU版運(yùn)算),系統(tǒng)是Win10下的WSL 2?Ubuntu-20.04戚揭。相信對大多數(shù)人而言诱告,這個配置沒太大難度。使用example文件夾下的示例蛋白(138aa)運(yùn)行需要30min左右民晒,224aa測試蛋白50min左右精居。因?yàn)槲沂褂玫臋C(jī)械移動硬盤,I/O受限潜必,如果使用電腦自身固態(tài)硬盤靴姿,時間估計還能減少20%-30%。
測試輸出:
Starting......
2021-08-07 **12:59:19**
>>> Running hhsearch <<<
<<< hhsearch runing Done >>>
2021-08-07 **13:05:42**
>>> Predicting distance and orientations <<<
<<< predict_pyRosetta.py running Done >>>
2021-08-07 **13:11:57**
>>> Running parallel RosettaTR.py <<<
<<< parallel RosettaTR.py running Done >>>
2021-08-07 **13:47:09**
>>> Running DeepAccNet-msa <<<
<<< DeepAccNet-msa running Done >>>
>>> Picking final models <<<
<<< Final models saved in: ./model >>>
2021-08-07 **13:48:40**
****** All Done ******
??RoseTTAFold的官方說明介紹了其安裝使用方法磁滚,按照這了步驟佛吓,我們首先來看看適合的硬件要求:
能夠運(yùn)行GPU的NVIDIA顯卡,并且要支持CUDA 10.2及以上版本垂攘。這個要求不難维雇,一般筆記本就能勝任,難得是在WSL 2下配置NVIDIA顯卡驅(qū)動和CUDA環(huán)境晒他。(如果真想將RoseTTAFold用于預(yù)測計算谆沃,還是推薦安裝真正的linux系統(tǒng),網(wǎng)上有很多安裝linux系統(tǒng)的教程仪芒。)
CPU和內(nèi)存:8核和64G內(nèi)存唁影,這個也不難。i7 cpu大多6核12線程了掂名,可能內(nèi)存達(dá)不到据沈,但事實(shí)證明16G內(nèi)存運(yùn)行224 aa的蛋白質(zhì)沒有問題,但內(nèi)存越大越好饺蔑。
硬盤空間:RoseTTAFold包含三個超大數(shù)據(jù)庫锌介,需下載432G,解壓后≈2.6T猾警,一般的筆記本是頂不住的孔祸。
uniref30 [46G] #解壓后180G
BFD [272G] #解壓后1.73T
pdb100_2021Mar03.tar.gz [114G] #解壓后666G
- 理想狀態(tài),需要配置完全匹配的conda发皿、CUDA崔慧、Tensorflow-gpu、pyRosetta環(huán)境穴墅,這對于結(jié)構(gòu)預(yù)測老手不是啥難事兒惶室,但對“還菜還愛玩兒”青銅玩家就太復(fù)雜了温自,比如我。而且皇钞,使用win10的linux子系統(tǒng)悼泌,幾乎無法按要求完成CUDA配置,因此我的GPU根本沒用上夹界。我看有帖子說必須把win10升到win11才能使WSL 2正常使用CUDA
最基本的硬件要求
- 筆記本電腦(臺式機(jī)更好)
- CPU:不低于intel i5|4核8線程|2.6 GHz(筆記本最好是i7 6核)馆里。
- 內(nèi)存:不低于16G,500多就能買個金士頓的16G內(nèi)存條可柿。
- 硬盤:不低于1T(最好是固態(tài)硬盤鸠踪,機(jī)械硬盤I/O太慢了,嚴(yán)重影響效率)趾痘。
- 十分重要:如果是筆記本慢哈,一定要配個強(qiáng)力散熱底座蔓钟,如果是筆記本永票,一定要配個強(qiáng)力散熱底座,如果是筆記本滥沫,一定要配個強(qiáng)力散熱底座(嚴(yán)重聲明:我不是賣散熱底座的)侣集。modeling過程極其吃CPU。
軟件要求
- Win10的子linux系統(tǒng)已經(jīng)安裝好兰绣,推薦ubuntu 20.04版本世分,并完成軟件包安裝換源(如果不在乎軟件安裝速度這個無所謂)。
- conda已經(jīng)安裝好缀辩,并且配置好環(huán)境變量(可以在任何路徑啟動conda)臭埋,推薦anaconda3/miniconda3。
- 修改 ~/.condarc 文件臀玄,更換conda默認(rèn)安裝頻道瓢阴,刪除“ – defaults”,添加國內(nèi)鏡像源健无,最終內(nèi)容如下:
auto_activate_base: false
channels:
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
show_channel_urls: true
使用步驟
- 下載源碼
git clone https://github.com/LiuZhen106/RoseTTAFold.git
cd RoseTTAFold/
- 下載建模用的network weights文件
wget https://files.ipd.uw.edu/pub/RoseTTAFold/weights.tar.gz
tar -zxvf weights.tar.gz
- 下載pdb100_2021Mar03.tar.gz文件并解壓到RoseTTAFold文件夾
wget -c https://files.ipd.uw.edu/pub/RoseTTAFold/pdb100_2021Mar03.tar.gz
tar -zxvf pdb100_2021Mar03.tar.gz
- 安裝conda環(huán)境
??conda是專門解決python不同版本軟件包沖突及其依賴關(guān)系的神器荣恐,安裝與使用網(wǎng)上有很多教程,本文不再贅述累贤。但有幾條常用命令叠穆,需要簡單介紹下。
conda env create -n test #新建一個名為test的環(huán)境
conda env create -f xxx.yml #從xxx.yml創(chuàng)建一個新的環(huán)境
conda remove -n test --all -y #刪除環(huán)境
conda activate XXX #啟用XXX環(huán)境
conda deactivate #關(guān)閉當(dāng)前環(huán)境
conda search xxx #查看xxx包的版本信息及channel來源
conda search xxx=yy –info #查看包的詳細(xì)信息及依賴包
conda install xxx=yy #在當(dāng)前的環(huán)境安裝yy版本的xxx包
conda remove xxx=yy #卸載包
conda config --add channels 網(wǎng)址1 #添加軟件包源
conda config --remove channels 網(wǎng)址1 #刪除軟件包源
??原程序提供了pyrosetta/e2e兩種預(yù)測模式臼膏,根據(jù)Baek等的報道pyrosetta方法要比e2e更精確一些硼被。 運(yùn)行e2e的“主攻”是pytorch,需要RoseTTAFold 環(huán)境渗磅;pyrosetta的“主攻”包括pytorch祷嘶、tensorflow屎媳、pyRosetta,需要RoseTTAFold和folding環(huán)境论巍,而且pyRosetta需要在folding環(huán)境額外安裝烛谊。tensorflow-gpu、pytorch需要特定版本的cudatoolkit嘉汰、cudnn丹禀、python依賴包,Baek已經(jīng)將它們寫到了RoseTTAFold-linux.yml鞋怀、folding-linux.yml兩個文件中双泪。而至于pyRosetta的安裝,Baek等提供了下載安裝連接密似,但需要向Rosetta Commons申請學(xué)術(shù)版賬號和密碼焙矛。我把我申請的學(xué)術(shù)賬號與密碼,寫到了folding-linux.yml文件中残腌,在安裝folding環(huán)境時村斟,會自動配置好相匹配的pyRosetta程序。這里要特別向Rosetta Commons組織和Jeffrey Gray’s實(shí)驗(yàn)室表示敬慕抛猫,感謝他們的學(xué)術(shù)分享精神蟆盹。
??這里需要說明一下,pytorch闺金、tensorflow-gpu是GPU版的逾滥,它們?nèi)绻麢z測到CUDA/GPU設(shè)備可用就調(diào)用,否則使用CPU败匹,因此不需要更改它們的版本寨昙。此外,有些同學(xué)發(fā)生psipred掀亩、psipass2運(yùn)行報錯舔哪,這很大可能是gcc版本沖突造成的,可以在RoseTTAFold 環(huán)境下下載源碼重新編譯归榕。本文通過使用網(wǎng)絡(luò)資源的方法繞過了這些步驟尸红。
- 獲取輸入文件
??本文的方法繞過了原方法的前兩個步驟,因此需要三個輸入文件:input.fa t000_.msa0.a3m t000_.msa0.horiz刹泄。.a3m外里、. horiz文件需要從網(wǎng)上獲取。
1) 獲取大規(guī)模序列比對(MSA)結(jié)果
網(wǎng)址:https://toolkit.tuebingen.mpg.de/tools/hhblits
Parameters:E-value cutoff for inclusion特石,相當(dāng)于hhblits程序的 -e 參數(shù)盅蝗,越低越嚴(yán)格,建議首選1e-6姆蘸,如果獲得的序列太少墩莫,可以調(diào)高此值芙委,不推薦超過1e-3。 Number of iterations: 相當(dāng)于 -n 參數(shù)狂秦,值越大越好灌侣,但越大運(yùn)行越慢,推薦設(shè)置2裂问。Min probability in hitlist (%):相當(dāng)于 -p 參數(shù)侧啼,值越大越準(zhǔn)確,推薦50堪簿,如果獲得的序列太少痊乾,可以調(diào)低此值。Max target hits: 相當(dāng)于 -maxfilt 參數(shù)椭更,越大越好哪审,但也會拖慢后續(xù)hhsearch運(yùn)行,推薦2000虑瀑。
??運(yùn)行結(jié)束后湿滓,可以在“Query Template MSA”菜單下,點(diǎn)擊下載完整版.a3m文件缴川。源程序的腳本里茉稠,對結(jié)果進(jìn)行了過濾描馅,先使用嚴(yán)格條件輸出.a3m把夸,如果得到的序列數(shù)量低于2000/4000,調(diào)高E-value重新執(zhí)行铭污,可以將上一步輸出的.a3m作為新的輸入文件恋日。使用該網(wǎng)站也可以模擬該循環(huán),在“Result”菜單欄點(diǎn)擊“Forward”可以自動載體輸出重新執(zhí)行hhblits嘹狞,知道獲得你認(rèn)為滿意的結(jié)果岂膳。將最終下載的.a3m更名為“t000_.msa0.a3m”,移動到輸入工作文件下(即input.fa所在目錄)磅网。
- 獲得二級結(jié)構(gòu)預(yù)測文件
網(wǎng)址:http://bioinf.cs.ucl.ac.uk/psipred/
輸入:fasta格式的蛋白質(zhì)序列谈截,不需要設(shè)置任何參數(shù)
??運(yùn)行結(jié)束可以在右側(cè)欄下載.horiz文件,下載后更名為“t000_.msa0.horiz”涧偷,同樣移動到輸入工作文件下簸喂。
6. 運(yùn)行pyrosetta_ver腳本
cd test/
../run_pyrosetta_ver_lz.sh input.fa .
7. 結(jié)果
??最終生成的結(jié)構(gòu)文件保存在model文件夾里,程序默認(rèn)挑選5個得分最高的燎潮,得分信息保存在modelQ.dat文件里喻鳄。其中model_1.pdb~model_5.pdb是軟連接,指向pdb-3track文件夾中的某些模型确封,而model_1.crderr.pdb與最終的結(jié)構(gòu)文件相比除呵,只是缺少文件頭和氨基酸殘基的權(quán)重信息再菊,而這些信息對后續(xù)結(jié)構(gòu)分析是不必要的,像zdock等蛋白-蛋白對接軟件反而不需要這些信息颜曾,因此model_1.crderr.pdb可以作為最終結(jié)構(gòu)文件使用纠拔。
8. 源碼地址
RoseTTAFold在線服務(wù)器: https://robetta.bakerlab.org
RoseTTAFold GitHub源碼: https://github.com/RosettaCommons/RoseTTAFold
本文修改的RoseTTAFold:https://github.com/LiuZhen106/RoseTTAFold