4.1 本章范圍
本章涵蓋除Affymetrix以外的大多數(shù)微陣列類型。從Affymetrix GeneChips讀取數(shù)據(jù),請使用affy,gcrma或aroma.affymetrix軟件包來讀取和標準化數(shù)據(jù)。
4.2 推薦文件
我們假設已經使用一個或多個微陣列進行了實驗全部利用相同的探針庫打印。掃描每個陣列以產生TIFF圖像,然后使用諸如ArrayVision,ImaGene,GenePix,QuantArray或SPOT的圖像分析程序處理TIFF圖像,獲得每個點的紅色和綠色的前景和背景強度。然后將點強度從圖像分析程序導出到一系列文本文件中。每個陣列對應一個文件,如果使用Imagene軟件,每個陣列對應兩個文件。
你需要有圖像分析的輸出文件。在大多數(shù)情況下,這些文件將包含ID以及探針的名稱以及可能的其他注釋信息。有些圖像分析程序,例如SPOT,不會將探針I(yè)D寫入輸出文件中。在這種情況下,你還需要一個描述探針的基因列表文件。大多數(shù)情況下,還需要一個目標文件(targets file)描述與每個陣列的每個通道雜交的是哪個RNA樣品。另一個可選文件是識別特殊探針(如控制點)的點類型文件(spot types file)。
4.3 目標框架
準備limma輸入數(shù)據(jù)的第一步通常是創(chuàng)建一個目標文件,其中列出了與每個陣列的每個通道雜交的RNA靶標。它通常是以制表符分隔的文本格式,并且應該包含實驗中的每個微陣列行。該文件可以有任何名稱,但是默認為Targets.txt。如果它具有默認名稱,使用下列命令可以將它讀入R會話
> targets <- readTargets()
一旦讀入R,它就成為了目標框架(targets frame)。
目標框架通常包含一個FileName欄,給出圖像分析輸出文件的名稱,Cy3列給出片子中用Cy3染料標記的RNA類型,Cy5列給出片子中用Cy5染料標記的RNA型。其他列是可選的。該目標文件可以使用任何文本編輯器,但電子表格程序如Microsoft Excel,比較方便。對于Swirl案例研究的目標文件包括可選的SlideNumber和Date列:

給關聯(lián)的微陣列創(chuàng)建短的可讀標簽通常是很方便的,特別是在文件名過長或非直觀的情況下用于后續(xù)的圖文輸出。包含這些標簽的列可以包含在目標文件中,例如Apoa1案例研究中使用的Name列:

此列可用于為目標框架創(chuàng)建行名稱
> targets <- readTargets("targets.txt", row.names="Name")
當讀取這些數(shù)據(jù)對象時,行名稱可以轉化成數(shù)組名稱。
對于ImaGene文件,文件名列拆分成一個FileNameCy3列和一個FileNameCy5列,因為ImaGene軟件將紅色和綠色的強度存儲在單獨的文件中。這里是一個簡短的例子:

4.4 讀取雙色強度數(shù)據(jù)
假設files是一個包含圖像分析軟件輸出文件名稱的字符向量。前景和背景強度可以使用下面的命令讀入一個RGList對象
> RG <- read.maimages(files, source="<imageanalysisprogram>", path="<directory>")
其中<imageanalysisprogram>是圖像分析程序的名稱,<directory>是包含文件目錄的完整路徑。如果文件在當前的R工作目錄中,參數(shù)path可省略;參考setwd幫助條目了解如何設置當前工作目錄。文件名通常是從目標文件中讀取的。例如,目標文件Targets.txt連同SPOT輸出文件都存在于當前工作目錄中,那么可能使用下面的命令行
> targets <- readTargets()
> RG <- read.maimages(targets$FileName, source="spot")
或者更簡單地說,可能將目標框架本身作為files的一個參數(shù)
> RG <- read.maimages(targets, source="spot")
在這種情況下,軟件將自動在目標框架中查找FileName列。
如果是GenePix輸出文件,那么可能會使用下面的命令讀取
> RG <- read.maimages(targets, source="genepix")
來給出適當?shù)哪繕宋募?。查?code>read.maimages幫助條目獲得支持的其它圖像分析程序。默認情況下,文件默認為制表符分隔,盡管其他分隔符可以用在sep=參數(shù)中來指定。
從ImaGene軟件讀取數(shù)據(jù)與其他圖像分析程序有所不同,因為紅色和綠色強度分別存儲在單獨的文件中。這意味著目標框架應該包括兩個文件名欄,比如說,FileNameCy3和FileNameCy5,分別表示包含綠色和紅色強度的文件名稱。第4.3節(jié)給出了一個例子。ImaGene數(shù)據(jù)的典型代碼可能是
> targets <- readTargets()
> files <- targets[,c("FileNameCy3","FileNameCy5")]
> RG <- read.maimages(files, source="imagene")
對于ImaGene數(shù)據(jù),files參數(shù)read.maimages()是文件名的2列矩陣,而不是一個向量。
下表給出了前景和背景強度的默認估計值:
| 來源 | 前景 | 背景 |
|---|---|---|
| agilent | Median Signal | Median Signal |
| agilent.mean | Mean Signal | Median Signal |
| agilent.median | Median Signal | Median Signal |
| bluefuse | AMPCH | None |
| genepix | F Mean | B Median |
| genepix.median | F Median | B Median |
| genepix.custom | Mean | B |
| imagene | Signal Mean | Signal Median, or Signal Mean if auto segmentation has been used |
| quantarray | Intensity | Background |
| scanarrayexpress | Mean | Median |
| smd.old | I_MEAN | B_MEDIAN |
| smd | Intensity (Mean) | Background (Median) |
| spot | mean | morph |
| spot.close.open | mean | morph.close.open |
默認估計值可以通過指定read.maimages()中的columns參數(shù)重寫。例如,假設GenePix已經使用了自定義的背景方法,然后你希望使用中位數(shù)進行前景估計。雖然limma軟件包中的預設選擇沒有提供這種前景和背景的組合,但你可以指定它
> RG <- read.maimages(files,source="genepix",
+ columns=list(R="F635 Median",G="F532 Median",Rb="B635",Gb="B532"))
如果你的圖像分析程序不在上述列表中,該怎么辦?如果圖像輸出文件是標準格式,那么你可以自己提供注釋和強度列名。
例如,
> RG <- read.maimages(files,
+ columns=list(R="F635 Mean",G="F532 Mean",Rb="B635 Median",Gb="B532 Median"),
+ annotation=c("Block","Row","Column","ID","Name"))
完全等同于source="genepix"?!皹藴矢袷健笔侵该總€感興趣的列都有一個獨特的列名稱標識,并且該文件中最后一行數(shù)據(jù)后沒有其它行。文件開始時的頭文件信息是可以接受的,但是文件末尾額外的行將導致讀取失敗。
查看你的數(shù)據(jù)來確定它是否正確讀取是一個好主意。鍵入
> show(RG)
查看前幾行數(shù)據(jù)的打印。同時嘗試
> summary(RG$R)
查看每個陣列紅色強度的5個數(shù)字摘要,等等。
可以通過幾個步驟讀取數(shù)據(jù)。如果RG1和RG2是對應于不同陣列的兩個數(shù)據(jù)集,那么
> RG <- cbind(RG1, RG2)
可以將它們合并成一個大的數(shù)據(jù)集。數(shù)據(jù)集也可以子集化。例如RG[,1]是第一陣列中的數(shù)據(jù),而RG[1:100,]是其中前100個基因的數(shù)據(jù)。
4.5 讀取單通道Agilent強度數(shù)據(jù)
讀取單通道數(shù)據(jù)類似于雙色數(shù)據(jù),除了應該添加參數(shù)green.only=TRUE到read.maimages()來說明沒有紅色通道。由Agilent特征提取軟件生成的單通道Agilent強度,可以通過下面的命令讀取
> x <- read.maimages(files, source="agilent", green.only=TRUE)
或者
> x <- read.maimages(targets, source="agilent", green.only=TRUE)
如果是雙色數(shù)據(jù),將會使用path參數(shù):
> x <- read.maimages(files, source="agilent", path="<directory>", green.only=TRUE)
如果數(shù)據(jù)文件不在當前工作目錄。green.only參數(shù)告訴read.maimages()函數(shù)輸出一個EList對象而非RGList對象。原始強度將被存儲在數(shù)據(jù)對象的E組分中,并且可以通過下面的命令檢查
> summary(x$E)
Agilent特征提取軟件擁有估計每個點前景和背景信號的能力,使用前景像素和背景像素的平均值或中值。默認read.maimages要讀取前景和背景的中值信號。
或者
x <- read.maimages(targets, source="agilent.mean", green.only=TRUE)
將會讀取前景信號平均值同時采用背景信號中位數(shù)。source的可能值是:
| 來源 | 前景 | 背景 |
|---|---|---|
| agilent | Median Signal | Median Signal |
| agilent.mean | Mean Signal | Median Signal |
| agilent.median | Median Signal | Median Signal |
至于雙色數(shù)據(jù),前景和背景估計的默認選項可以通過在read.maimages()函數(shù)指定columns參數(shù)來重寫。
Agilent特征提取輸出文件包含探針注釋列以及強度列。默認情況下,如果存在,read.maimages()函數(shù)將讀取下面的注釋列:Row,Col,Start,Sequence,SwissProt,GenBank,Primate,GenPept,ProbeUID,ControlType,ProbeName,GeneName,SystematicName,Description。
完整的單通道Agilent數(shù)據(jù)工作案例參見第17.4節(jié)。
4.6 讀取Illumina BeadChip數(shù)據(jù)
Illumina全基因組BeadChip需要特殊處理。Illumina圖像由Bead-Scan軟件掃描,Illumina的BeadStudio或GenomeStudio軟件可用于導出探針摘要文件。探針摘要文件是包含強度數(shù)據(jù)的制表符分隔文件。通常,同時處理的所有陣列都將寫入一個文件,不同列對應相應數(shù)組。我們建議從GenomeStudio導出沒有背景校正或標準化的強度,因為這些預處理步驟可以通過limma函數(shù)更好地完成。還可以要求GenomeStudio導出控制探針的配置文件,我們也建議這樣做。
Illumina文件與其他平臺不同,每個圖像輸出文件包含來自多個陣列的數(shù)據(jù),并且控制探針的強度被寫入到和常規(guī)探針分開的不同文件中。這些文件的其他功能可以可選地用于預處理和過濾。Illumina探針摘要文件可以通過read.ilmn函數(shù)讀取。典型的用法是
> x <- read.ilmn("probe profile.txt", ctrlfiles="control probe profile.txt")
probe profile.txt是主要探針摘要配置文件,control probe profile.txt是包含控件探針的配置文件名稱。
如果要讀取多個探針摘要文件,并且樣本被匯總到目標框架中,那么可以使用read.ilmn.targets函數(shù)。
讀取控制探針配置文件是可選的,但是推薦這樣做。如果控制探針文件可用,那么Illumina數(shù)據(jù)可以利用neqc或nec函數(shù)進行背景校正和標準化。否則Illumina數(shù)據(jù)將像其他單通道平臺數(shù)據(jù)一樣被背景校正和標準化。
有關Illumina微陣列數(shù)據(jù)的完整工作案例研究,請參見第17.3節(jié)。
4.7 圖像點質量權重
圖像分析程序通常輸出大量的信息,除了前景和背景強度,還提供了每個點的質量信息。有時候我們希望使用這些信息為每個點生成質量指標可以用于隨后的分析步驟。一種方法是刪除所有不符合特定質量標準的點。更復雜的方法是產生定量的質量指標,然后依賴其感知可靠性來逐級升高或降低每個點的權重。limma提供了一種同時支持這兩種計算點重量方法的計算方式。
limma方法是計算每個點的定量質量權重。重量在limma中的處理方式類似在R中的大多數(shù)回歸函數(shù),例如lm()。0重量表示在所有分析中該點因為不可靠應該被忽略。重量1表示正常質量。大于或小于1的點質量將導致該點在隨后的分析中被給予相對或多或少的權重。點重量小于0沒有意義。
當強度從圖像分析輸出文件讀取的同時,可以讀取質量信息并計算點的質量權重。質量權重的計算由read.maimages()函數(shù)的wt.fun參數(shù)定義。這個參數(shù)是一個函數(shù),其定義了如何使用從圖像分析文件中發(fā)現(xiàn)的信息計算權重。獲得好的點質量權重并不是直截了當?shù)?,非常依賴于圖像分析軟件的使用。limma提供了一些被研究人員發(fā)現(xiàn)有用的例子。
一些圖像分析程序產生質量指標作為輸出的一部分。例如,GenePix生成一個名為Flags的列,對于“正?!秉c為0,不同類別的問題點的負值越來越大。如果你正在讀取GenePix圖像分析文件,命令行
> RG <- read.maimages(files,source="genepix",wt.fun=wtflags(weight=0,cutoff=-50))
將讀取強度數(shù)據(jù),并計算點權重矩陣,給出零重量和Flags值小于-50的任何點。權重存儲在RGList數(shù)據(jù)對象的weight組件中。權重可以通過在RG列表上操作的諸如normalizeWithinArrays之類的函數(shù)自動使用。
從圖像像素方面來說,理想尺寸是一個完美的圓形點。在這個情況下,對于比這個理想尺寸要大得多或小得多的點,降低它們的權重可能有用。如果SPOT圖像分析輸出正在讀取,以下調用
> RG <- read.maimages(files,source="spot",wt.fun=wtarea(100))
將給予正好具有100個像素的區(qū)域完全的權重,降低更小和更大的點的權重,具有0面積或超過理想尺寸兩倍的點給予0重量。
計算點質量權重的適當方法取決于使用的圖像分析程序。請查閱QualityWeights幫助條目以了解可用的質量權重函數(shù)。wt.fun參數(shù)非常靈活,允許你構建自己的權重。wt.fun參數(shù)可以是將數(shù)據(jù)集作為參數(shù)并計算所需權重的任何函數(shù)。例如,如果你希望給予所有不到-50的GenePix標志零權重,你可以使用
> myfun <- function(x) as.numeric(x$Flags > -50.5)
> RG <- read.maimages(files, source="genepix", wt.fun=myfun)
wt.fun可用于基于圖像分析文件中任意數(shù)量的列計算權重。例如,一些研究人員喜歡過濾掉某些點,如果給定點的GenePix前景平均值和中位數(shù)差異超過某個閾值,比如說50,可以通過下面的命令實現(xiàn)
> myfun <- function(x, threshold=50) {
+ okred <- abs(x[,"F635 Median"]-x[,"F635 Mean"]) < threshold
+ okgreen <- abs(x[,"F532 Median"]-x[,"F532 Mean"]) < threshold
+ as.numeric(okgreen & okred)
+}
> RG <- read.maimages(files, source="genepix", wt.fun=myfun)
那么所有的“壞”點都會得到零權重,這在limma中相當于將它們標記出來。這里的myfun的定義可以用任何其他代碼來替代,利用GenePix輸出文件中的列來計算權重。
4.8 讀取探針注釋
由read.maimages()讀取的RGList幾乎總是有一個稱為genes的組件,包含探針相關聯(lián)的ID和其他注釋信息。唯一的例外是SPOT數(shù)據(jù),source=“spot”,或者當讀取通用數(shù)據(jù),source=“generic”,而不設置注釋參數(shù)時,annotation=NULL。嘗試
> names(RG$genes)
看是否已經設定了genes組分。
如果未設置genes組分,則需要從單獨的文件中讀取探針I(yè)D。如果已經使用Axon掃描儀掃描了陣列,探針I(yè)D將存儲在一個制表符分隔的GenePix數(shù)組列表(GAL)文件中。如果GAL文件的擴展名為“gal”,并且在當前的工作目錄中,那么它可能通過下面的命令被讀入一個數(shù)據(jù)框中
> RG$genes <- readGAL()
非GenePix基因列表可以使用R基礎包中的read.delim函數(shù)讀入R中。
4.9 打印布局
打印布局是陣列上的點和區(qū)塊的排列。了解打印布局和用多打印頭的機械機器人印刷的舊式學術點陣列密切相關。區(qū)塊有時稱為打印頭組或針組或多行列。每個區(qū)塊對應于打印頭上的打印針,用于打印陣列;陣列上區(qū)塊的布局對應于打印頭上打印針的布局。每個區(qū)塊中的點數(shù)是打印頭下降到陣列上的次數(shù)。在可能的情況下,例如Agilent,GenePix或ImaGene數(shù)據(jù),read.maimages函數(shù)將打印布局信息設置在組件printer中。嘗試
> names(RG$printer)
查看打印布局信息是否已設置。
如果你已經使用readGAL來設置了genes組件,那么你也可以使用getLayout來設置printer信息
> RG$printer <- getLayout(RG$genes)
請注意,這僅適用于GenePix GAL文件,而不適用于一般基因列表。
4.10 點類型文件
點類型文件(STF)是另一個可選的制表符分隔文本文件,允許識別來自基因列表條目中的不同類型的探針。它在識別不同類型的控制探針方面特別有用。STF用于設置陣列上每個探針的控制狀態(tài),使得圖像可以以適當?shù)姆绞酵怀霾煌愋偷狞c。它通常是用于區(qū)分控制探針與常規(guī)探針對應的基因,并區(qū)分陰性對照和陽性對照,校正對照和比例等。STF應該有一個SpotType列給出不同點類型的名稱。一個或多個其他列應該與基因列表中的列具有相同的名稱,并應包含模式或正則表達式足以識別點的類型。任何其他列應該包含繪圖屬性,如顏色或符號,與點的類型相關聯(lián)。每個點類型有一行用于區(qū)分。
STF使用簡化的正則表達式來匹配模式。例如,AA*表示任何以AA開頭的字符串,*AA表示以AA結尾的任何代碼,AA表示這兩個字母,*AA*表示任何包含AA的字符串,AA.意思是AA后緊跟一個其他字符,AA\.表示AA后跟一個句點,沒有其他字符。對于那些熟悉正則表達式的人,任何其他正則表達式都是允許的,但^用于字符串開始和$用于結尾的字符串代碼應該排除。注意,模式從第一個順序匹配到最后,應該首先包括更一般的模式。第一行應該指定默認的spot-type并且應該具有所有模式匹配列的pattern*。
以下是適用于ApoAI數(shù)據(jù)的簡短STF:

在此示例中,列
ID和Name位于基因列表中,并包含匹配的模式。星號是可以代表任何東西的通配符。小心使用適當?shù)拇髮懟蛐懀灰迦肴魏晤~外的空格。剩下的列給出與不同類型的點關聯(lián)的顏色。該代碼假定探針注釋數(shù)據(jù)框包括列ID和Name。如果GenePix被用于圖像分析,情況通常是這樣,但其他圖像分析軟件可能使用其他列名。
下面是一個適當?shù)挠糜贚ucidea通用記分卡控制點陣列的STF。

如果STF具有默認名稱SpotTypes.txt,那么可以通過下面的命令讀取
> spottypes <- readSpotTypes()
它通常被用作參數(shù)傳遞給controlStatus()的函數(shù),來設置陣列每個點的狀態(tài),例如
> RG$genes$Status <- controlStatus(spottypes, RG)