Gene Ontology簡介

Gene Ontology(GO)是一個廣泛使用的術語庫,用於描述和統計基因與蛋白質功能的相互關係。GO把生物學領域中的複雜概念分解成更簡單、更易理解的術語。這些術語被組織成有向無環圖,稱為GO圖,它描述了基因、基因產物及其功能間的分層次結構關係。

一、基本概念

1、術語庫

GO術語庫分為三個主要的分支:分子功能、細胞組分和生物過程。分子功能描述分子水平上一個基因產物的活性,細胞組分描述的是這個基因產物在哪裡發揮作用,生物過程描述的是哪些事件會導致這個基因產物的表達變化。

2、GO圖

GO圖是一個由有向無環圖組成的術語描述的分層結構。三個主要的分支是分子功能,細胞組分和生物過程。每個分支是一個獨立的層級架構,相互獨立,互相連接。它們緊密地關聯在一起,構成了一個基因和蛋白質功能的完整描述。

3、GO ID

GO ID是唯一的GO名稱標識符。每個GO對應一個GO ID。GO ID 由一個「GO」字母后面跟著一個長度為7位的數字組成。

二、基於GO的生物信息分析

1、GO資料庫下載

基於GO分析需要從官方網站下載最新的資料庫文件。官網可以根據需要下載各種格式的數據。例如,可以下載完整的資料庫(GO Annotation:gene_association.goa_ref_human.gz 和go-basic.obo),或者只下載一部分數據(例如 GO ID 和前綴)。

2、基於GO的生物信息學分析流程


3、GO富集分析

GO分析可用於解釋已知基因集中基因的生物學組成。富集分析將一個基因表達數據集與基因的GO注釋信息結合起來,以確定哪些GO術語在該基因表達數據集中顯著富集。

三、使用python解析GO庫數據

1、下載GO文件和注釋文件

go-basic.obo:http://geneontology.org/ontology/go-basic.obo
gene_association.goa_ref_human:http://geneontology.org/gene-associatio
引入包和下載數據

import wget

go_obo_url = 'http://geneontology.org/ontology/go-basic.obo'
go_obo_file_name = wget.download(go_obo_url)

go_annotations_url = 'http://geneontology.org/gene-associations/gene_association.goa_ref_human.gz'
go_annotations_file_name = wget.download(go_annotations_url)

2、解析GO文件

從go-basic.obo文件中解析GO屬性

from collections import defaultdict

go_id_to_name = {}
go_id_to_namespace = defaultdict(set)

with open(go_obo_file_name) as f:
    current_block = None
    for line in f:
        if line.startswith('[Term]'):
            current_block = 'Term'
        elif line.startswith('[Typ'):
            current_block = 'Type'

        if current_block == 'Term' and line.startswith('id:'):
            go_id = line.split()[-1]
        elif current_block == 'Term' and line.startswith('name:'):
            name = line.split()[-1]
            go_id_to_name[go_id] = name
        elif current_block == 'Term' and line.startswith('namespace:'):
            namespace = line.split()[-1]
            go_id_to_namespace[namespace].add(go_id)

3、解析注釋文件

從gene_association.goa_ref_human.gz文件中解析GO注釋信息

import gzip
import pandas as pd

gene_id_to_symbol = {}
symbol_to_gene_ids = defaultdict(set)
gene_id_to_go = defaultdict(set)

with gzip.open(go_annotations_file_name) as f:
    for line in f:
        line = line.strip().decode()
        if line.startswith('!'):
            continue
        fields = line.split('\t')
        gene_id = fields[1]
        symbol = fields[2]
        go_id = fields[4]
        aspect = fields[8]
        gene_id_to_symbol[gene_id] = symbol
        symbol_to_gene_ids[symbol].add(gene_id)
        gene_id_to_go[gene_id].add(go_id)

4、結果展示

使用Python Pandas數據分析庫來展示GO分析結果

# 統計GO ID和基因數目
go_id_to_gene_count = {go_id: len(set(gene_ids)) for go_id, gene_ids in gene_id_to_go.items()}

# 構造一個dataframe來展示GO ID、GO Term、命名空間、基因計數等信息
go_info_df = pd.DataFrame({'go_term': list(go_id_to_name.values()), 
                           'namespace': [list(go_id_to_namespace['molecular_function'])[0] for i in range(len(go_id_to_name))],
                           'go_id': list(go_id_to_name.keys()), 
                           'gene_count': list(go_id_to_gene_count.values())})

# 按基因計數排序,並展示前10個結果
sorted_go_info_df = go_info_df.sort_values(by='gene_count', ascending=False)
top_10_go_term_df = sorted_go_info_df[:10][['go_id', 'go_term']]
print(top_10_go_term_df.to_string(index=False))

原創文章,作者:PJFBT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370951.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PJFBT的頭像PJFBT
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相關推薦

  • Java2D物理引擎簡介及應用

    本文將介紹Java2D物理引擎的基本概念、實現原理及應用案例,以及對應代碼示例。 一、物理引擎概述 物理引擎是一種計算機程序,用於模擬物理系統中的對象和其互動,如重力、碰撞、彈力等…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • Python三體運動簡介

    本文將從多個方面詳細闡述Python三體運動,包括什麼是三體運動,三體運動的公式與原理,實現三體運動的Python代碼等內容。 一、什麼是三體運動? 三體運動是指三個天體相互作用所…

    編程 2025-04-27
  • Java中的殭屍進程簡介與解決方法

    本文將對Java中的殭屍進程進行詳細闡述,並給出幾種解決方法。 一、殭屍進程的概念 在操作系統中,進程是指正在執行的程序。當一個進程創建了一個子進程,而該子進程完成了任務卻沒有被父…

    編程 2025-04-27
  • PyTorch模塊簡介

    PyTorch是一個開源的機器學習框架,它基於Torch,是一個Python優先的深度學習框架,同時也支持C++,非常容易上手。PyTorch中的核心模塊是torch,提供一些很好…

    編程 2025-04-27
  • Python操作DB文件簡介

    本文將從以下幾個方面詳細闡述如何使用Python操作DB文件: 創建和打開DB文件 執行SQL語句 讀取和寫入數據 關閉DB文件 一、創建和打開DB文件 Python內置了SQLi…

    編程 2025-04-27
  • Python寫Word模板簡介

    Python可以用來生成Word文檔,讓你可以自動化生成報表、合同、申請表等文檔。本文將從多個方面詳細介紹Python寫Word模板的方法和技巧。 一、Word模板的結構 要生成W…

    編程 2025-04-27
  • 雪峰老師簡介

    解答:深度剖析雪峰老師的IT技術經驗 一、教育背景 雪峰老師本科畢業於西安電子科技大學,獲得計算機科學與技術學位。隨後,他在美國獲得了計算機科學碩士學位。 雪峰老師所在大學是國內頂…

    編程 2025-04-27
  • Start UML簡介

    Start UML是可視化建模工具,採取UML標準的符號和符號語義,特別針對Java開發優化的能力。Start UML允許您創建和編輯UML 1.0,1.1,1.2,2.0或2.1…

    編程 2025-04-25
  • NetCDF簡介及其應用

    一、NetCDF是什麼 NetCDF(Network Common Data Form)是一種自我描述、可移植的二進位文件格式,用於存儲科學和工程數據,支持海洋、大氣、地球等多個學…

    編程 2025-04-24

發表回復

登錄後才能評論