蛋白質是生物大分子,是構成生命體結構和實現生物學功能必需的化合物。蛋白質是由胺基酸首尾相接共價連接而成。胺基酸的序列為蛋白質的一級結構;多個胺基酸的局部結構為二級結構(如α螺旋、β摺疊、β轉角和無規則捲曲等);三級和四級結構為更為高級的空間結構。蛋白質的空間結構由一級結構為基礎,空間結構決定著蛋白質的生物活性。今日我們以
Python語言為基礎,調用
BioPython框架/模塊,以2003年
SARS冠狀病毒的
刺突蛋白(spike protein)為例子來實現蛋白質的解析與可視化。
BioPython計劃是一個使用Python語言開發計算生物學工具的國際社團,而BioPython是該社團開發的生命科學研究模塊。現在很多生物信息學家、基礎和臨床醫學研究者喜歡使用Python來編程,而調用BioPython模塊/框架可以節省很多時間和精力來實現想要的生物信息學算法。今天咱們就使用BioPython模塊來解析和可視化蛋白質分子。
BioPython模塊的安裝
首先,在終端下安裝BioPython模塊:
pip install biopython
經過一些提示BioPython即刻安裝完成。這裡多說一句,由於國內應用pip安裝模塊很慢,如果想要高速安裝,可以選用清華大學的鏡像,即清華大學的tuna鏡像。第一步升級pip,默認的版本為>=10.0.0,第二部用tuna來配置pip:
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Jupyter Notebook可視化擴展插件為了能夠更好地在Jupyter Notebook中顯示蛋白質的結構,如放大、縮小和3D旋轉等,我們需要安裝nglview的擴展插件。使用conda工具進行安裝:
conda config --add channels conda-forge
conda install nglview -c bioconda
jupyter-nbextension enable nglview --py --sys-prefix
蛋白質數據的獲得
我們可以通過
蛋白質資料庫(PDB)來下載蛋白質數據,網址:www.rcsb.org。我們尋找2003年SARS冠狀病毒的spike蛋白結構,其代碼為5wrg,在網址上輸入該代碼,就會出現該蛋白質的信息,點擊「下載」,在選項裡選擇
PDB文件。冠狀病毒的spike蛋白通過結合人體多個宿主細胞膜上的血管緊張素轉化酶2(ACE2)作為受體,與宿主細胞融合而侵入感染程序部分程序編寫開始,首先讀入BioPython模塊的PDB對象:
import Bio.PDB
建立PDB的列表對象,並令該對象提取剛才下載的5wrg文件:
pdbl = Bio.PDB.PDBList()
pdbl.retrieve_pdb_file('5wrg')
這時會顯示提示的警告信息,即讀入的PDB文件會被轉換為cif文件:
Structure exists: 'C:\yourPath\5wrg.cif'
WARNING: The default download format has changed from PDB to PDBx/mmCif
'C:\\yourPath\\5wrg.cif'
下一步,解析蛋白質文件開始,首先定義和賦值一個parser對象,再令這個parser讀取新生成的這個cif文件,並可將任務命名為SpikeProteinSARS。
parser = Bio.PDB.MMCIFParser()
structure = parser.get_structure('SpikeProteinSARS', 'wr/5wrg.cif')
如果你感興趣,可以試著輸出structure這個對象。其實這個對象是一個生成器(generator),需要iteration去讀取。這時,如果我們想要了解該蛋白質的肽鏈信息,可以用循環語句來輸出:
for i in structure.get_chains():
print(i)
<Chain id=A>
<Chain id=B>
<Chain id=C>
import nglview as nv
view = nv.show_biopython(structure)
view.clear_representations()
view.add_cartoon()
在Jupyter Notebook的cell裡輸入view,即
可視化蛋白質的結構,通過滑鼠左鍵可以將分子進行旋轉,滾輪是放大縮小,滑鼠右鍵是所處位置:
在轉動的過程中,可以任意選擇其中的胺基酸殘基:
view.center()
如果想要保存圖像,可以用download_image()函數,第一個參數的字符串為文件名,第二個參數factor為解析度,數值越大,解析度越高:
view.download_image('SpikeProteinSARS.png', factor = 10)
通過remove_cartoon()函數和add_ball_and_stick()可將蛋白質模型由卡通變為棍球型:下面,我們簡單
解析一下蛋白質。定義一個model對象,賦值為structure的第一個index。再將A鏈賦值於變量chain_A。這時,可以顯示每一個胺基酸殘基的信息:第一項為胺基酸殘基縮寫,第二項為所處肽鏈的位置。
model = structure[0]
chain_A = model['A']
for residue in chain_A:
print(residue.resname, residue.id[1])
THR 261
PHE 262
MET 263
LEU 264
LYS 265
TYR 266
ASP 267
GLU 268
ASN 269
GLY 270
...
VAL 1047
THR 1048
TYR 1049
VAL 1050
PRO 1051
SER 1052
GLN 1053
GLU 1054
ARG 1055
ASN 1056
PHE 1057
THR 1058
若想解析某一個胺基酸殘基(如蘇氨酸THR)的原子,可運行:
for atom in residue.get_atoms():
print(atom)
<Atom N>
<Atom CA>
<Atom C>
<Atom O>
<Atom CB>
組成這個肽單元(胺基酸殘基)的原子分別為:氨基氮(N)、α碳(CA)、羧基碳(C)、羧基氧(O)和β碳(CB)。
若想知道特定位點的胺基酸殘基,可以應用chain_A去引用:
chain_A = model['A']
chain_A[336]
<Residue SER het= resseq=336 icode= >
A肽鏈上第336個胺基酸殘基是絲氨酸(Serine)。
最後,所有上述源程序代碼都在我的GitHub代碼庫中,地址:https://github.com/YangChuan80/Bioinformatics/blob/master/Projects/CoronaParser/PDB_Biopython.ipynb除了上述的功能外,BioPython還可以實現生物序列注釋,並且能夠讀取和寫入各種文件格式(FASTA,FASTQ,GenBank和Clustal等), 支持以程序化方式訪問生物信息的在線資料庫(例如,NCBI)。其它衍生的獨立模塊還擴展了Biopython的序列比對、蛋白質結構、群體遺傳學、系統發育、序列基序和機器學習等功能。今後有機會再和各位探討。
最後,向在武漢和全國各地奮戰在防疫第一線的醫療同行們致以最誠摯的問候:你們辛苦了!祝你們早日平安歸來!
關注Chuan Workstation
獲得更多臨床醫學和
生物信息學新技術和新進展