顯示具有 PDB 標籤的文章。 顯示所有文章
顯示具有 PDB 標籤的文章。 顯示所有文章

2018年2月25日 星期日

PyMOL分開與合併不同的states

遇到一些用NMR解出來的蛋白質分子,PDB檔案會有很多個models,在PyMOL裡面叫作不同的states。要分開這些states成獨立的結構,或是把獨立的結構合併成一個:
  1. split_states 1nmr
  2. for x in cmd.get_names(): cmd.cealign("1nmr_0001///30-70/", x+"///30-70/")
  3. join_states 1nmr2, 1nmr_*

2017年8月9日 星期三

讓sort用多核心跑

GNU sort(就是在Linux裡面預設的,作者是Mike Haertel與Paul Eggert),裡面有個平行化的選項,如果不選的話預設就會開多核心。這邊測試《PDB中最常出現的氨基酸片段》裡面排序進一億筆5-mer,得到的速度與用單核心來比較



2017年8月7日 星期一

氨基酸B、Z、X、J、O、U

蛋白質的氨基酸序列中,除了原本的20種氨基酸以外,有時候會出現:
  • B:也稱Asx、此位置是Asparagine (N)或Aspartic acid (D)
  • Z:也稱Glx、此位置是Glutamine (Q)或Glutamic acid (E)
  • X:也稱Xaa代表此位置未知、或是在此位置可以是任何一種氨基酸
  • J:也稱Xle,代表此位置是Leucine (L)或Isoleucine (I)
  • O:也稱Pyl,全稱Pyrrolysine,第22種氨基酸
  • U:也稱Sec,全稱Selenocysteine,第21種氨基酸

2017年8月6日 星期日

PDB中最常出現的氨基酸片段

想要知道五個連續氨基酸出現次數用下面兩個指令就可以得到:
  1. wget ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt
  2. cat pdb_seqres.txt | grep -e "mol:protein" -A 1 \
    | sed '/^--$/d' | grep -v "^>" \
    | awk '{while(length($0)>=5){print substr($0,1,5);gsub(/^./,"")}}' \
    | grep X -v | sort | uniq -c | sort -k 1 -n -r \
    > prot_sorted_5peptide.count
第1個指令是下載當前所有PDB檔案序列pdb_seqres.txt,約122MB
第2個指令是計算個數的檔案,結果存在prot_sorted_5peptide.count裡面,計算的時間約莫是五分鐘,下面是分析的指令:

2017年7月18日 星期二

定期更新PDB資料庫

《將整個PDB下載回本機端》說明要怎樣將整個蛋白質資料庫(PDB)下載回自己的機器上。但PDB這個資料庫現在是每個星期三UTC 00:00會更新,台灣是UTC+8,所以就是每個星期三早上八點會更新。考量到每個資料庫一更新完一堆人會去抓、還有週間大家使用資料庫比較頻繁,所以建議週末再來做更新。
  • VISUAL=vim crontab -e
  • crontab -l | grep -v ^#
    3 2 * * 6 /dw/rsyncPDB.sh

2017年6月14日 星期三

將整個PDB下載回本機端

目前整個PDB大小約436G,要下載前請先注意自己的硬碟大小

首先編寫 rsynPDB.sh 如下

#!/bin/sh
MIRRORDIR=/dw/rcsb           # your top level rsync directory
LOGFILE=/dw/rsyncPDB.log/rsyncPDB.`/bin/date +"%Y%m%d"`  # file for storing logs
RSYNC=/usr/bin/rsync         # location of local rsync
SERVER=rsync.wwpdb.org::ftp  # RCSB PDB server name
PORT=33444                   # port RCSB PDB server is using
${RSYNC} -rlpt -v -z --delete --port=$PORT ${SERVER}/ $MIRRORDIR > $LOGFILE 2>/dev/null

上面這個腳本會把整個PDB都放在 /dw/rcsb 這個資料夾之下
每次執行rsynPDB.sh,只會用rsync做更新,而不會每次都要重新下載整個PDB
整個更新的紀錄會放在 /dw/rsyncPDB.log/rsyncPDB.更新日期 這個檔案裡面

2017年5月31日 星期三

蛋白質資料庫(PDB)的資料簡介

前面的《蛋白質資料庫(PDB)簡介》介紹了有哪些網站存放了蛋白質立體結構,這篇則是要說明其中RCSB PDB這個資料庫的資料。下面列出《Introduction to PDB Data》提到的主題:
  • Biological Assemblies:由於大部分的蛋白質立體結構都來自於X-ray crystallography,所以解出來的結構是根據蛋白質結晶所得。因此,存放的結構有可能最基礎的結晶單位Asymmetric Unit,或是由作者提供的Biological Assembly(代表在生物體內有作用的結構)
  • Dealing with Coordinates:所謂紀錄的立體結構,代表著記錄蛋白質分子裡面每個組成原子的座標(coordinates)。這一段就是在介紹PDB檔案如何存放這些原子座標內容
  • Methods for Determining Structure:要得到上述的原子座標(或者稱之為“解結構“),有幾種不同的實驗方法可以做到,包含了
    • X-ray Crystallography:X光結晶法
    • X-ray Free Electron Lasers (XFEL):這是種基於X-ray Crystallography的新方法,用飛秒雷射去打,然後組合許多繞射圖案來猜結構
    • NMR Spectroscopy:核磁共振(Nuclear Magnetic Resonance)法
    • Electron Microscopy:電子顯微鏡法。對於比較大的蛋白質是不錯的方式
  • Missing Coordinates and Biological Assemblies:解結構並不一定總是可以得到所有的原子座標。這邊介紹有哪些情況下,會得到不完整的結構資訊
  • Molecular Graphics Programs:解完結構後,有哪些軟體可以顯示立體結構。就像是地圖有許多表示法,結構也一樣有許多表現手法
  • Resolution:解出來的結構的解析度
  • R-value and R-free:解出來的結構的可信度。R越靠近0越好,一般來說會是0.2,隨機亂做的結果是0.63
  • Structure Factors and Electron Density:結構的電子密度分佈
  • Primary Sequences and the PDB Format:蛋白質序列與核酸序列存放在這邊
  • Small Molecule Ligands:與整個蛋白質分子一起解出結構的小分子
_EOF_

2017年5月23日 星期二

蛋白質資料庫(PDB)簡介

蛋白質資料庫(Protein Data Bank, PDB),是存放蛋白質、或是生物巨分子立體結構的資料庫。其中Worldwide PDB (wwPDB) 這個組織存放所有結構資訊並確保這些資料可以被公眾自由存取,而來自世界各地的wwPDB members,會有自己的網站來提供大眾各自的服務

簡單說就是同份資料(由wwPDB統合),各自表述(由wwPDB members各自做網站):
  • PDBj (Protein Data Bank Japan): 日本版,有日文、中文與韓文版本
  • BMRB (Biological Magnetic Resonance Data Bank):提供與NMR實驗相關結果,包含chemical shift, coupling constants, hydrogen exchange rates, pKa values, and relaxation parameters
  • PDBe (Protein Data Bank in Europe):歐洲版,提供一些進階服務像是PDBePISA, PDBeFold, PDBeMotif等等
  • RCSB PDB (Research Collaboratory for Structural Bioinformatics Protein Data Bank):美國版,有做行動版App、一些視覺化工具可用,還有不錯的教學資源
若對PDB這個資料庫不熟悉,或是不知道什麼叫做生物巨分子裡體結構,可以先從RCSB PDB的教學資源像是PDB-101、Molecular of the Month開始入門

_EOF_

2017年1月17日 星期二

統計PDB中蛋白質鍊的長度

只要依序執行下面五個指令就能夠拿到所有protein chains的長度與敘述:
  • wget ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt
  • grep "mol:protein" pdb_seqres.txt | sed -e's/  /!/' | cut -d'!' -f1 | sed -e's/^>//' | cut -d' ' -f1 > protein_seqres.id
  • grep "mol:protein" pdb_seqres.txt | sed -e's/  /!/' | cut -d'!' -f1 | sed -e's/^>//' | cut -d' ' -f3 | cut -d':' -f2 > protein_seqres.length
  • grep "mol:protein" pdb_seqres.txt | sed -e's/  /!/' | cut -d'!' -f2 > protein_seqres.des
  • paste -d'\t' protein_seqres.id protein_seqres.length protein_seqres.des > protein_seqres.csv

2017年1月16日 星期一

PDB裡面最長和最短的蛋白質序列

依序執行下述指令就知道PDB裡面最長與最短的序列:
  1. wget ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt
  2. grep -e "mol:protein" -A 1 pdb_seqres.txt | sed '/^--$/d' | grep "^>" | cut -d' ' -f3 | cut -d':' -f2 | sort -n | head -n 1
  3. grep -e "mol:protein" -A 1 pdb_seqres.txt | sed '/^--$/d' | grep "^>" | cut -d' ' -f3 | cut -d':' -f2 | sort -n | tail -n 1
上面的Bash指令意思分別是:
  1. 抓所有PDB的序列(fasta format)
  2. 最短的序列,長度是2
  3. 最長的序列,長度是5037

2017年1月5日 星期四

處理PDB裡面的alternate location

PDB上面的結構,某些殘基在空間上面會有兩種可能所在的位置,這種情況叫做alternate location,紀錄方式則是在ATOM行裡面的第17個位置出現A, B, ...。例如說3a34這個lysozyme的結構第125個residue,PDB格式的紀錄是:
ATOM    978  N  AARG A 125     -27.100  10.115  13.597  0.70 14.83           N  
ATOM    979  N  BARG A 125     -27.088  10.117  13.613  0.30 14.68           N  
ATOM    980  CA AARG A 125     -27.589  10.764  14.811  0.70 15.46           C  
ATOM    981  CA BARG A 125     -27.618  10.820  14.785  0.30 15.06           C  
ATOM    982  C  AARG A 125     -26.471  10.888  15.838  0.70 15.45           C  
ATOM    983  C  BARG A 125     -26.603  10.877  15.926  0.30 15.27           C  
ATOM    984  O  AARG A 125     -25.761   9.921  16.120  0.70 15.55           O  
ATOM    985  O  BARG A 125     -26.111   9.846  16.388  0.30 15.38           O

上面粗體的部分就是alternate location (altLoc),意思是說ARG這個residue可能會在A這個位置、也可能會在B這個位置。最簡單的解決方案是只留下A,用PyMOL處理只要兩行指令:
  • remove not alt ''+A
  • alter all, alt=''
第一行移除所有altLoc不是A也不是空白的原子
第二行將所有altLoc都變成空白

_EOF_

2017年1月4日 星期三

計算PDB結構裡面原子的數目

要計算一個PDB結構裡面有多少個原子,在PyMOL只要用count_atom這個指令:
  • fetch 1lyz
  • count_atoms 1lyz
  • count atoms 1lyz and not HETATM
  • count atoms 1lyz and n. ca

2016年11月11日 星期五

統計蛋白質資料庫

蛋白質資料庫(Protein Data Bank,簡稱PDB)上面存放著以蛋白質為主的生物巨分子立體結構資料。首頁顯示 "An Information Portal to 124286 Biological Macromolecular Structures",更多的統計資料可參考《PDB Statistics》。這邊用幾個簡單的指令來分析PDB這個資料庫
  1. wget ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_entry_type.txt
  2. TOTAL=`cat pdb_entry_type.txt | wc -l`; echo $TOTAL
  3. head -n 5 pdb_entry_type.txt 
  4. for TYPE in `cat pdb_entry_type.txt | cut -f 2 -d$'\t' | sort | uniq`; do printf "$TYPE "; NUM=`cat pdb_entry_type.txt | cut -f 2 -d$'\t' | grep $TYPE | wc -l`; printf "$NUM "; FRAC=`echo "scale=4; $NUM/$TOTAL" | bc -l`; echo $FRAC; done
  5. for METHOD in `cat pdb_entry_type.txt | cut -f 3 -d$'\t' | sort | uniq`; do printf "$METHOD "; NUM=`cat pdb_entry_type.txt | cut -f 3 -d$'\t' | grep $METHOD | wc -l`; printf "$NUM "; FRAC=`echo "scale=4; $NUM/$TOTAL" | bc -l`; echo $FRAC; done

2016年8月25日 星期四

最早解出立體結構的蛋白質

多數蛋白質的外觀有著固定的形狀,也就是所謂的立體結構(3D structure)。研究這些結構的學門叫做結構生物學(Structural Biology)。這個學門從1950年代末期開始發展,到1970年代初有一打的蛋白質結構,簡單介紹如下:
  • Myoglobin (1mbn):肌紅素、John Kendrew's structure,1958年得到
  • Hemoglobin (2dhb):血紅素、Max Perutz's structure
  • Hemoglobin from lamprey (2lhb):八目鰻的血紅素,結構介於肌紅素與血紅素之間
  • Lysozyme (1lyz):溶菌酶、DC Philips' structure,1965年解得
  • Carboxypeptidase (3cap):從蛋白質的C端切斷肽鍵(peptide bond)
  • Subtilisin (1sbt):切斷絲氨酸(serine)的肽鍵
  • Chymotrypsin (2cha):切斷含有芳香環的氨基酸,像是酪氨酸(tyrosine)、色氨酸(tryptophan)與苯丙氨酸(phenylalanine)的肽鍵
  • Papain (9pap):木瓜蛋白酶
  • Pancreatic trypsin inhibitor (4pti):胰蛋白酶抑制物,很短的蛋白質
  • Oligomeric lactate dehydrogenase (6ldh):單體型態的乳酸脫氫酶(LDH),當時解出來最大的蛋白質結構。一個單體由334個氨基酸組成,整個LDH則是由四個單體組成的四聚體(tetramer)
  • Rubredoxin (4rxn):含鐵離子的蛋白質,使用四個硫原子來抓住鐵離子
  • Cytochrome b5 (1cyo):還鐵離子的蛋白質,但是用heme group來抓