illumina beadchip 芯片原始數(shù)據(jù)處理

需求

和這一篇的需求一致,不同公司的芯片原始數(shù)據(jù)處理方式也不同,最終都是為了得到表達矩陣,今天介紹的是illumina beadchip 芯片,用神奇的limma搞定它。
找不到某些GEO數(shù)據(jù)的表達矩陣腫么辦
illumina beadchip芯片原始數(shù)據(jù)處理,參考limma的userguide。

1.幫助文檔里的示例

rm(list=ls())
library(limma)
x <- read.ilmn(files="probe profile.txt",
               other.columns="Detection")

## Reading file probe profile.txt ... ...

x$E[1:4,1:4]
##                     1        2        3        4
## ILMN_1762337 52.34406 46.10429 54.01238 47.65873
## ILMN_2055271 69.91481 73.86729 58.64280 72.36581
## ILMN_1736007 57.47208 53.70050 53.39117 49.43674
## ILMN_2383229 53.60817 57.50813 48.22960 48.18757

讀取原始文件,這么簡單就拿到表達矩陣了,原示例中有一個control probe profile.txt,文檔說了它不是必須的,我直接去掉咯。畫個箱線圖

boxplot(log2(x$E),range=0,ylab="log2 intensity")
image.png

做背景校正、標準化

y <- neqc(x) 
## Note: inferring mean and variance of negative control probe intensities from the detection p-values.

聽起來很厲害,實際上一個函數(shù)搞定。

探針過濾

原始文件里的信息,被拆分成了一個表達矩陣和一個Detection P值矩陣,P值可以用于過濾樣本。

示例數(shù)據(jù)總共有12個樣本,過濾標準是至少在3個樣本里P值<0.05。

x$other$Detection[1:4,1:4]

##                       1         2          3           4
## ILMN_1762337 0.55849580 0.6754875 0.13698630 0.601388900
## ILMN_2055271 0.03064067 0.0000000 0.04931507 0.002777778
## ILMN_1736007 0.27715880 0.2924791 0.15342470 0.486111100
## ILMN_2383229 0.47353760 0.1866295 0.36575340 0.563888900

dim(y)

## [1] 48803    12

expressed <- rowSums(y$other$Detection < 0.05) >= 3 ;table(expressed)

## expressed
## FALSE  TRUE 
## 24112 24691

y <- y[expressed,]
dim(y)

## [1] 24691    12

這時的表達矩陣,也就能對接常規(guī)芯片數(shù)據(jù)的其他分析了,比如差異分析。

exp = y$E
exp[1:4,1:4]

##                      1        2        3        4
## ILMN_2055271  5.085517 5.294789 5.047373 5.274919
## ILMN_1653355  5.803398 5.901535 5.378863 5.567170
## ILMN_1787689  5.164395 4.929249 5.401202 5.006137
## ILMN_1745607 10.508010 9.922797 5.689654 5.317240

2.GEO數(shù)據(jù)實例

去GSE16997的頁面下載它的補充文件“GSE16997_raw.txt”。

讀取、背景校正和標準化

rm(list = ls())
x <- read.ilmn(files="GSE16997_raw.txt",
               expr="Sample",
               probeid="ID_REF",
               other.columns="Detection Pval")

## Reading file GSE16997_raw.txt ... ...

y <- neqc(x,detection.p="Detection Pval")

## Note: inferring mean and variance of negative control probe intensities from the detection p-values.

探針過濾

x$other$Detection[1:4,1:4]

##                       1         2          3           4
## ILMN_1762337 0.55849580 0.6754875 0.13698630 0.601388900
## ILMN_2055271 0.03064067 0.0000000 0.04931507 0.002777778
## ILMN_1736007 0.27715880 0.2924791 0.15342470 0.486111100
## ILMN_2383229 0.47353760 0.1866295 0.36575340 0.563888900

dim(y)

## [1] 48803    12

expressed <- rowSums(y$other$`Detection Pval` < 0.05) >= 3 ;table(expressed)

## expressed
## FALSE  TRUE 
## 24112 24691

y <- y[expressed,]
dim(y)

## [1] 24691    12

y$E[1:4,1:4]

##                      1        2        3        4
## ILMN_2055271  5.085517 5.294789 5.047373 5.274919
## ILMN_1653355  5.803398 5.901535 5.378863 5.567170
## ILMN_1787689  5.164395 4.929249 5.401202 5.006137
## ILMN_1745607 10.508010 9.922797 5.689654 5.317240
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容