2016年1月13日 星期三

20151203 TMev String Panther

上課講師:辛老師

Mev 可以分析microassay的data

mev visualization
GDM

從上圖中可以看到與目標基因互相接近的幾個基因,分別是:
RALBP1
SMARCA4
DAB2
MYBBP1A
MT1H

最不相關的是:
SFPQ
SP3
SPDEF
NQ01

IVNS1BP
ENO11
UBC
USP11

GO relationship 可以由兩個網站獲得
1. http://pantherdb.org
2. http://string-db.org

Panther:






























String:
蛋白質之間的關係

相關蛋白的名稱及功能
 蛋白質的數量可增減

 特殊功能:KEGG Pathway、biological processes、molecular function、cellular component




連接 天下雜誌

BLAST X 可以找到功能
BLAST

20160112 期末作業

期末作業
1. 請選出一個跟你論文主題相關的基因 (gene X)。
2. 將 gene X 於 Pubmed 或相關文獻探勘軟體,進行篇數,年代,作者趨勢分析。
3. 將 gene X 利用 NCBI Gene 入口,獲得相關序列資訊(包括 genomic, reference sequence, peptide sequence)
4. 利用 gene X 的序列進行 Blastn 或 Blastp,找出至少10條以上,20條以下,不同種 (species) 的序列,進行 Phylip 分析。使用方法為 NJ 與 ML。bootstrap 設定在 n = 250 。
5. 將 gene X 於 NCBI GEO profile 中尋找相關的表達資訊, 至少10個以上,20個以下。製成 tab txt file。再用 TMeV 畫出聚類分析圖形(至少三種)。
6. 將上述 5. 所得與 gene X 表達相關基因,利用 STRING 預測交互作用網路,並列出最有興趣的GO關係圖形 (CC, MF, BF) 三種。 
7. 預測 gene X 的蛋白結構圖。
8. 預測 gene X 的 micorRNA binding site。
請於 1/14 前,上傳到各位的 blog, 並將未完成之實驗報告於 1/14 前補齊,以利評分。

----------------------------------------------------------------------------------------------------------
1. 請選出一個跟你論文主題相關的基因 (gene X)。

本次作業我選擇的gene X是: CD61


2. 將 gene X 於 Pubmed 或相關文獻探勘軟體,進行篇數,年代,作者趨勢分析。

利用Pubmed 和Pubmed PubReminer 搜尋 “CD61” 可搜尋到759篇相關的論文,自1990年便開始相關研究,由於它是血液細胞的marker,所以大部分論文都發表在血液學相關的期刊如Blood、Leukemia等。作者欄位可以看到埋頭于CD61研究的作者們,其中THIELE J、KVASNICKA HM及FISCHER R個別發表了最少26篇相關論文,且大部分研究都與代謝、免疫、藥物等相關。


若將搜尋條件改成 “CD61 Dengue”,最早的文章從2005年開始發表,截至今天只有8篇相關的論文,且可以看到彭老師的作品,共4篇。相關研究大部分以病毒學及代謝為主。























3. 將 gene X 利用 NCBI Gene 入口,獲得相關序列資訊(包括 genomic, reference sequence, peptide sequence)

從NCBI的入口中搜尋“CD61”可以得到很多結果,以本次作業的需求,我選了NM_000212。
這是個會轉錄出protein的gene,它位於第十七號染色體上 的q21.32位置。
























它的genomic sequence就由下方的紅框所示















genomic: NG_008332.2 RefSeqGene
mRNA: NM_000212 Homo sapiens integrin subunit beta 3 (ITGB3)
protein: NP_000203 Integrin beta-3 precursor
peptide sequence:
"MRARPRPRPLWATVLALGALAGVGVGGPNICTTRGVSSCQQCLAVSPMCAWCSDEALPLGSPRCDLKENL
LKDNCAPESIEFPVSEARVLEDRPLSDKGSGDSSQVTQVSPQRIALRLRPDDSKNFSIQVRQVEDYPVDI
YYLMDLSYSMKDDLWSIQNLGTKLATQMRKLTSNLRIGFGAFVDKPVSPYMYISPPEALENPCYDMKTTC
LPMFGYKHVLTLTDQVTRFNEEVKKQSVSRNRDAPEGGFDAIMQATVCDEKIGWRNDASHLLVFTTDAKT
HIALDGRLAGIVQPNDGQCHVGSDNHYSASTTMDYPSLGLMTEKLSQKNINLIFAVTENVVNLYQNYSEL
IPGTTVGVLSMDSSNVLQLIVDAYGKIRSKVELEVRDLPEELSLSFNATCLNNEVIPGLKSCMGLKIGDT
VSFSIEAKVRGCPQEKEKSFTIKPVGFKDSLIVQVTFDCDCACQAQAEPNSHRCNNGNGTFECGVCRCGP
GWLGSQCECSEEDYRPSQQDECSPREGQPVCSQRGECLCGQCVCHSSDFGKITGKYCECDDFSCVRYKGE
MCSGHGQCSCGDCLCDSDWTGYYCNCTTRTDTCMSSNGLLCSGRGKCECGSCVCIQPGSYGDTCEKCPTC
PDACTFKKECVECKKFDRGALHDENTCNRYCRDEIESVKELKDTGKDAVNCTYKNEDDCVVRFQYYEDSS
GKSILYVVEEPECPKGPDILVVLLSVMGAILLIGLAALLIWKLLITIHDRKEFAKFEEERARAKWDTANN
PLYKEATSTFTNITYRGT"














































4. 利用 gene X 的序列進行 Blastn 或 Blastp,找出至少10條以上,20條以下,不同種 (species) 的序列,進行 Phylip 分析。使用方法為 NJ 與 ML。bootstrap 設定在 n = 250 。

用NCBI內的BLAST程式搜尋相近的序列,將那些序列下載後用Phylip分析再用TreeView及HyperTree程式將其演化樹畫出。






ML:  TreeView & HyperTree




















NJ: TreeView & Hypertree




5. 將 gene X 於 NCBI GEO profile 中尋找相關的表達資訊, 至少10個以上,20個以下。製成 tab txt file。再用 TMeV 畫出聚類分析圖形(至少三種)。

我嘗試用CD61在 GEO Profile中搜尋相關資料,確實有找到類似的數據,可是基於一些原因,目前還無法將數據成功匯入TMev。

6. 將上述 5. 所得與 gene X 表達相關基因,利用 STRING 預測交互作用網路,並列出最有興趣的GO關係圖形 (CC, MF, BF) 三種。 

由於在無法進行TMev的分析,只好直接在String上搜尋 "CD61" ,就可看到下圖:



























搜尋結果:
可看到圖下方有許多相關蛋白質名稱以及其用途


GO - Cellular Component





















Go - Molecular Function


























Go - Biological Processes


























7. 預測 gene X 的蛋白結構圖。

從 PDB中搜尋 “CD61” 可以看到至少11個結果。
選擇氨基酸數量最相近的2Q6W作為其預測的結果(如下圖)

從 PDB 網站預測的圖形


























利用Pymol將蛋白質結構呈現 























8. 預測 gene X 的 micorRNA binding site。

從 miRTarBase 這個網站中可以找到為數不少的CD61 microRNA,並且可以與NM_000212這條序列做binding。Binding site在下圖被黃色熒光筆標示出。
















2015年12月24日 星期四

20151217 Java 程式課

上課講師:梁啟修 老師

今天是Java體驗課,需要的軟體就是Java的編輯器-Eclipse

在這之前,完全沒有接觸過Java,對於Java的程式語言完全不是很了解,但之前稍微學過一些很基本的python,所以在聽的過程中可以了解老師的邏輯。雖說如此,礙於不懂Java的編輯,在編輯上還是有許多困難,有點像“知道怎麼做,可是又做不出來”。


上圖是一個Eclipse操作界面。綠色框框是整個java的架構(包含了package、class等),看起來有階層關係;紅色框框是編輯模式、除錯模式及其執行按鈕;紫色框框是主要編輯區,上方有類似瀏覽器的分頁,其功能就是打開不同的class像分頁一樣瀏覽。紫色框框的下方有個叫console的分頁,那是結果輸出的區域。

在看這些程式碼的時候,讓我覺得困惑的是package & class之間所代表的立場是什麼?為什麼要這樣分?不同package之間的class是不能共用的嗎?

在創一個新的java時,需要先新增一個class。
當然一開始需要讓程式與使用者互動,最簡單的方式就是讓程式說點什麼!
開始 Java 的 Hello World 吧~
























輸出數字或文字的程式碼即是
【System.out.println(沒有“”代表程式內某變數的輸出,“引號內以純文字輸出”);】

---------------------------------------------------------------------------------------------------------

作業!

4. 寫一個 Java 程式進行 X-Y 平面的粒子運動並視覺化,這一題只要可以視覺化就好,沒有要求要做什麼樣的運動模型 (請將程式碼貼在自己的網頁上,完成這一題的同學90分)。


以下並不是利用Java語言編寫成的程式,而是利用 Python來編寫。

Python安裝檔 & Pygame模組:按此下載
作業檔案:按此下載

---------------------------------------------------------------------------------------------------------

import pygame
import random
import math

# Define some colors
BLACK    = (   0,   0,   0)
WHITE    = ( 255, 255, 255)
GREEN    = (   0, 255,   0)
RED      = ( 255,   0,   0)

pygame.init()

# Set the width and height of the screen [width, height]
width = 700
high = 500
size = (width, high)
screen = pygame.display.set_mode(size)

pygame.display.set_caption("Atom Movement")

# Loop until the user clicks the close button.
done = False

# Used to manage how fast the screen updates
clock = pygame.time.Clock()

# Parameters
atom_list = []
change_list = []
atom_size = 10
atom_num = 100
frame_speed = 20

# Generate atoms with random coordinate in the window
for i in range (atom_num):
    atom_x = random.randint(2 * atom_size, width - 2 * atom_size )
    atom_y = random.randint(2 * atom_size, high - 2 * atom_size)
    atom_list.append([atom_x, atom_y])
    for m in range(i):
        i_x = atom_list[i][0]
        i_y = atom_list[i][1]
        m_x = atom_list[m][0]
        m_y = atom_list[m][1]
        if math.sqrt((i_x-m_x)*(i_x-m_x)+(i_y-m_y)*(i_y-m_y)) <= 20 and math.sqrt((i_x-m_x)*(i_x-m_x)+(i_y-m_y)*(i_y-m_y)) != 0:
            atom_list.pop()
            atom_x = random.randint(2 * atom_size, width - 2 * atom_size)
            atom_y = random.randint(2 * atom_size, high - 2 * atom_size)
            atom_list.append([atom_x, atom_y])

# Generate different movement with different speed in XY direction
for l in range (atom_num):
    x_change = random.randint(-5,5)
    y_change = random.randint(-5,5)
    change_list.append([x_change, y_change])

# -------- Main Program Loop -----------
while not done:
    # --- Main event loop
    for event in pygame.event.get(): # User did something
        if event.type == pygame.QUIT: # If user clicked close
            done = True # Flag that we are done so we exit this loop

    screen.fill(BLACK)
    
# Draw atoms       
    for atom in atom_list:
        pygame.draw.circle(screen, GREEN, atom, atom_size)

# Change atom movement with adding different speed by another list
    for j in range(len(atom_list)):
        atom_list[j][0] += change_list[j][0]
        atom_list[j][1] += change_list[j][1]
        
# Create a condition for simple bounce on wall  
        if atom_list[j][0] > (width - atom_size) or atom_list[j][0] < atom_size:
            change_list[j][0] *= -1
        if atom_list[j][1] > (high - atom_size) or atom_list[j][1] < atom_size:
            change_list[j][1] *= -1
        
# Create a simple bounce on atom      
        for k in range(len(atom_list)):

            j_x = atom_list[j][0]
            j_y = atom_list[j][1]
            k_x = atom_list[k][0]
            k_y = atom_list[k][1]
            if math.sqrt((j_x-k_x)*(j_x-k_x)+(j_y-k_y)*(j_y-k_y)) < (2 * atom_size) and math.sqrt((j_x-k_x)*(j_x-k_x)+(j_y-k_y)*(j_y-k_y)) != 0:
                change_list[j][0] *= -1
                change_list[j][1] *= -1
        
        
    # --- Go ahead and update the screen with what we've drawn.
    pygame.display.flip()

    # --- Limit to 60 frames per second
    clock.tick(frame_speed)

pygame.quit()
---------------------------------------------------------------------------------------------------------


影片為程式的輸出結果

程式中有幾點Bug:
1. 各個原子的運動為隨機,原子間的碰撞以半徑小於 2r 為基準,當判斷為碰撞時,只以反方向反彈,並不會有加速的現象。所以當兩原子出現的位置重疊,則會無限反彈。
2. 兩個原子同時撞擊另一原子時,也會出現第1點的狀況,也會出現跑到視窗外的現象,而且一樣以無限反彈的形式移動。脫離視窗後,便不會再返回視窗。




2015年11月25日 星期三

20151119 PyMol

上課講師:王淑鶯老師

續上周的PyMol課程後,接下來是更進階的PyMol課程。
之前有提到如何將序列裡面的金屬原子呈現。同理,醣類也可以用這個方式呈現,但是醣類或其他有機物不會無緣無故地出現在protein上,通常都會有一些氨基酸與其有鍵結,可以通過show side chain的方式將其呈現出來。

















如上圖(4KC3),顯示蛋白質的圖形的時候,只會出現紫色及藍色的protein structure。Protein的上方的黃色部分是不會自動呈現的。
做法如下:
show>organic
select>organic on sequence
color>by element
完成後有機物會顯示出來,但是卻沒有與protein本身有鏈接,主要是因為cartoon的特性是不會把side chain顯現出來,需要自己到細部選取特定氨基酸讓其顯示 side chain即可。

另外也可以在指令欄位打上以下指令,便可完成特定角度的轉動。
command:
rotate x, 90
rotate y, 90
rotate z, 90




跟之前一樣可以放大到細部並呈現幾個重要的氨基酸,可以讓讀者了解到它們之間的關係。

上圖(4KC3)是沒有標上residue的,其中幾條虛線是用距離measurement畫出來並hide label。

有時候因為protein 3D structure 的關係,總會有一些氨基酸阻擋在視野前方,可以用手動的方式選取並用hide>cartoon的方式讓其不顯示在視野中,以方便讀者看到實際的內部構造。

上圖(4KC3)是用label>residue的方式將各個目標氨基酸呈現出來,可以清楚地表達出是哪個氨基酸比較有影響力。由於程式內部label的種類有限,可以輸出過後再用其他繪圖軟體將residue label上去。

PyMol還可以將兩個蛋白質align在一起,如上圖(3QYC-綠 & 1IGM-藍)。
將兩種蛋白匯入程式後,在任一蛋白的物件中選取 action>align>to molecule>3QYC or 1IGM
由於這兩種蛋白質基本上很相似,所以align後整體重疊性高。

但是只有部分重疊的蛋白就不能這樣做,程式不會自動選擇重疊的部分,而是整條sequence拿去align。
以另一個蛋白為例,1OL0與3QYC只有部分的structure或是sub-chain有重疊的現象(下圖),則必須手動選擇想要align的sequence然後再align。
做法如下:
1. 在選一個protein,並在protein sequence 選擇想要align的部分,選擇的物件會在<sele>物件中,可以用"set_name sele, new-name"的指令更改名字,建議更改名字比較好,因為<sele>容易被改變。
2. 選擇後在沒有進行選擇的protein物件中執行align的動作,action>align>to selection>new-name

完成後即可獲得下圖!


老師再用另外一個蛋白讓我們做之前練習過的上色及呈現金屬原子。(4LMY)
做法就不在細說了,反正就是在用 "color red, chain A",選擇Zn並更名,然後讓Zn呈現sphere,更改sphere大小及顏色 "set sphere_scale=0.5"

細部構造也是一樣的做法。不了解的話請到上週的文章看看 =D



接下來就是顯示氨基酸的正負點位,先讓蛋白質用"surface"表現,然後在改蛋白質的物件中選擇"action>generate>vacuum electrostatics>protein contact potantial(local)"
就可以看到下圖的樣子。

當然可以使用 rotate的方式讓它轉到想要觀察的角度。"rotate x, 90" (下圖)

除了sub-chain以外,也有可能是只有部分sequence有重疊,所以可以在protein sequence上先選擇高度重疊的序列後,再一起做align。
以下是4LMY及4I7H兩個protein的align結果,我取4I7H中間alpha helix部分的序列作為<sele> 然後與 4LMY 做align。

部分sequence重疊的另一個例子:3F8N-綠 & 4LMY-紅(以cartoon表示)

我想嘗試用 PyMOL 來製作影片
我選用的圖是上週最後一題的結果,讓其旋轉360度,並在過程中拍下120張圖片(每張圖片都有經過ray的處理)
最後在利用影片製作軟體將這些圖片組合成影片。

選好圖片後,在程式欄位輸入幾行指令:
----------------------------------------------------------------------------------------------
mset 1, 120                        #define movie frames
util.mroll, 1, 120, 1           #command for 120 frames in 360 degree rotate
set ray_trace_frames, 1     #ray process for every frames
mpng mov                        #start export png pictures
----------------------------------------------------------------------------------------------

輸出結束後,將會得到120張經過清晰化的圖片檔,接著再用影片製作軟體將這些圖片轉換成影片。


----------------------------------------------------------------------------------------------

以下是Homework!
1. Create a fasta sequence file of a molecule of your interest.
2. Use ExPasy to characterize the protein (such as MW, PI, secondary structure, domain…..)
3. Find the structure (or homologous structure of your molecule) in protein data bank
4. Use Pymol to generate the figure of your molecule, functional domain and important atomic interactions
5. Align the structure with a homologous structure and explain why structural alignment can help you design your experiments

1. 基於接下來的題目跟domain有關,我原本有想選擇Dengue NS1 protein當作這次的作業的蛋白,但是發現PDB與NCBI之間的蛋白並不統一以及domain的predict時,並沒有發現明顯的domain。
最後我改用NF-kB當做我本次作業的protein。

NF-kB activating protein 1
FASTA format:
>gi|57472138|gb|AAW51146.1| NFkB interacting protein 1 [Homo sapiens]
MDSEAFQSARDFLDMNFQSLAMKHMDLKQMELDTAAAKVDELTKQLESLWSDSPAPPGPQAGPPSRPPRY
SSSSIPEPFGSRGSPRKAATDGADTPFGRSESAPTLHPYSPLSPKGRPSSPRTPLYLQPDAYGSLDRATS
PRPRAFDGAGSSLGRAPSPRPGPGPLRQQGPPTPFDFLGRAGSPRGSPLAEGPQAFFPERGPSPRPPATA
YDAPASAFGSSLIGSGGSAFAPPLRAQDDLTLRRRPPKAWNESDLDVAYEKKPSQTASYERLDVFARPAS
PSLQLLPWRESSLDGLGGTGKDNLTSATLPRNYKVSPLASDRRSDAGSYRRSLGSAGPSGTLPRSWQPVS
RIPMPPSSPQPRGAPRQRSIPSMIFKLQNAFWEHGASRAMLPGSPLFTRAPPPKLQPQPQPQPQPQSQPQ
PQLPPQPQTQPQTPTPAPQHPQQTWPPVNEGPPKPPTELEPEPEIEGLLTPVLEAGDVDEGPVARPLSPT
RLQPALPPEAQSVPELEEVARVLAEIPRPLKRRGSMEQAPAVALPPTHKKQYQQIISRLFHRHGGPGPGG
PEPELSPITEGSEARAGPPAPAPPAPIPPPAPSQSSPPEQPQSMEMRSVLRKAGSPRKARRARLNPLVLL
LDAALTGELEVVQQAVKEMNDPSQPNEEGITALHNAICGANYSIVDFLITAGANVNSPDSHGWTPLHCAA
SCNDTVICMALVQHGAAIFATTLSDGATAFEKCDPYREGYADCATSLADVEQSMGLMNSGAVYALWDYSA
EFGDELSFREGESVTVLRRDGPEETDWWWAALHGQEGYVPRNYFGLFPRVKPQRSKV


2. Characteristic of NF-kB
Protein length: 827 a.a
Molecular Weight: 89 kDa
PI: pH 6.37
from: http://web.expasy.org/compute_pi/

Secondary Structure:
from: http://cho-fas.sourceforge.net

Domain: 


from:http://prosite.expasy.org
從網站中預測出NF-kB中含有SH3 domain

3. 從PDB (Protein Data Bank)中搜尋 NF-kB activating protein 1可以找到 2VGE 這個檔案,並在PyMOL中利用內建的下載器將這個蛋白下載。
在網頁的其他分頁中(紅框)找到相似的蛋白 3EHR,一樣利用PyMOL內建的下載器下載並與 2VGE 進行alignment。


4. 利用 Pymol 對 2VGE 標記先前找到的 domain 並利用顏色進行區分。
紫色+黃色:2VGE
黃色:SH3 domain


另外,取其中的一個氧原子當做interaction的中心,顯示原子附近氨基酸的side chain 並對其計算距離。

5. 在PyMOL中用先前找到的 3EHR 來作為其align的對象,得出下圖且可以了解到重疊的部分是 SH3 domain。
通過alignment可以了解到某些相似的結構具有特定的功能









未完待續...