使用bioconductorlimma進行基因表達數據分析

一、安裝和載入limma包

Limma是一款R軟體的包,可用於在微陣列和RNA-Seq下處理基因表達數據。首先,我們需要安裝limma包。代碼如下:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("limma")

載入limma包:

library(limma)

二、讀取基因表達數據

我們可以使用read.table函數來讀取數據。在下面的示例中,數據文件名為”Gene_expression.txt”,每一行代表一個基因。首列包含基因名字,接下來的列包含的是不同樣本的基因表達數據。這裡,我們假設第一列是基因名字,第二列到第六列是5個不同組織(樣本)的基因表達數據。示例代碼如下:

data=read.table("Gene_expression.txt",header=TRUE,row.names=1)

三、數據預處理

在進行微陣列或RNA-Seq數據分析之前,我們必須先進行數據預處理。這包括數據歸一化、過濾掉低表達基因、Batch效應的去除等。在這裡,我們使用normalizeBetweenArrays來進行數據標準化。相關代碼如下:

dataNorm=normalizeBetweenArrays(data,method="quantile")

在進行limma分析之前,我們需要在數據中去除所有低表達的基因。

keep=filterByExpr(dataNorm)
dataNormFilter=dataNorm[keep,]

接下來,我們進行Batch效應的去除。

batch = c(1,1,2,2,3)
design = model.matrix(~0+batch)
fit = lmFit(dataNormFilter, design)
contrMatrix = makeContrasts(batch2-batch1, levels=design)
fit2 = contrasts.fit(fit, contrasts=contrMatrix)
fit2 = eBayes(fit2)

四、配對差異分析

接下來,我們進行配對差異分析,以比較2個組織(樣本)之間的差異性。

例如,我們想要比較第一組織和第二組織的差異性:

treatment=c(1,1,2,2,1)
contrasts=makeContrasts(treatment1-treatment2,levels=design)
fit2 = contrasts.fit(fit,contrasts=contrasts)
fit2 = eBayes(fit2)

此處我們存儲了差異表達儲存

result = topTable(fit2,coef=1,number=1000)

五、GO/GSEA富集分析

使用富集分析可以幫助我們了解差異表達基因的生物學意義。

我們首先需要用DEGs獲得差異表達基因的集合。例如,我們使用默認參數在一個基因集合上執行Label的卡方富集分析,來計算差異表達基因集合的富集結果。相應代碼如下:

de <- rownames(result)  # 使用導出的差異表達基因
ego <- enrichGO(gene = de,
                OrgDb = org.Mm.eg.db,
                keyType = "ENSEMBL",
                ont = "BP",
                pvalueCutoff = 0.05,
                qvalueCutoff = 1,
                readable = TRUE)
ego <- setReadable(ego, 'org.Mm.eg.db', 'ENSEMBL')  # 用基因符號代替ENSEMBL ID
head(as.data.frame(ego), 10)

六、不同圖展示

最後,我們可以使用不同類型的圖表展示分析結果。例如,我們可以使用pheatmap包來生成熱圖。

library(pheatmap)
mat <- assay(dataNormFilter)
rownames(mat)=paste("G",1:nrow(mat),sep="")
samples <- data.frame(Tissue=colnames(mat), row.names=colnames(mat))
colnames(samples) <- c("Tissue")
colors <- colorRampPalette(rev(brewer.pal(9, "RdBu")))(75)
pheatmap(mat,
         color=colors,
         cluster_rows=TRUE,
         cluster_cols=TRUE,
         annotation_col=samples,
         fontsize=8,
         main="Heatmap of Gene Expression")

總結

在這篇文章中,我們介紹了如何使用bioconductorlimma進行基因表達數據分析。我們展示了如何讀取數據、進行數據預處理、進行配對差異分析、進行GO/GSEA富集分析以及不同類型的圖表生成。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EGTFT的頭像EGTFT
上一篇 2025-04-12 13:01
下一篇 2025-04-12 13:01

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論