标签:
有了探针排布图像的基础,我们就可以更好地理解CDF文件了。假如每个探针的位置用一个坐标表示,以左上角为(0,0),那么整张芯片的坐标就如下图(行数n必须等于列数m,这里共有n*m个探针):
0,0 |
1,0 |
2,0 |
3,0 |
… |
m,0 |
0,1 |
|
|
|
|
|
0,2 |
|
|
|
|
|
0,3 |
|
|
|
|
|
… |
|
|
|
|
|
0,n |
|
|
|
|
|
那么这些探针怎么根据坐标对应到探针组呢?我们来看CDF文件的格式:
[CDF]
Version=GC3.0
[Chip]
Name=HG-U133A_2
Rows=732
Cols=732
NumberOfUnits=22277
MaxUnit=23214
……
[Unit1000_Block1]
Name=1007_s_at
BlockNumber=1
NumAtoms=16
NumCells=32
StartPosition=0
StopPosition=15
CellHeader=X Y PROBE FEAT ……
Cell1=416 177 N control ……
Cell2=416 178 N control ……
Cell3=569 289 N control ……
……
Cell31=568 9 N control ……
Cell32=568 10 N control ……
……
HG-U133A_2是芯片型号,行数(Rows)和列数(Cols)都是732,探针组数目(NumberOfUnits)是22277。其中一个探针组名称为1007_s_at,它包含16对探针,32个Cell(一个Cell代表一个探针,一个特征)。我们已经知道,PM和MM是成对出现的,而且PM总是在与之对应的MM的上方,由此可判断出Cell1和Cell2是一对探针,因为它们的X坐标都是416,且Cell1的Y坐标比Cell2小1,Cell1是PM,Cell2是与之对应的MM。
我们也可以用R语言来获取1007_s_at探针组的PM/MM探针的位置:
library(affy)
rawData <- ReadAffy()
> pmindex(rawData,"1007_s_at") ## MM探针用mmindex(rawData,”1007_s_at”)
$`1007_s_at`
[1] 129981 212118 393384 84268 429999 425542 431862 72955 431473 99100
[11] 504441 441769 340582 205738 460599 7157
这样就能看到1007_s_at探针组的16个PM探针在阵列中的位置了。可以看到,这里的位置已经不是用坐标(X,Y)来表示了,而是用index=(X+Y*列数+1)来表示。如,Cell1是第一个PM,它的X=416,Y=177,那么129981就刚好等于416+177*732+1。相反,如果我们知道了位置,怎么反推出它的坐标?如位置index=129981,我们可以:Y=floor((index-1)/列数)=floor((129981-1)/732)=177,X=(index-1)-列数*Y=(129981-1)-732*177=416。
每种型号的芯片都有着对应的探针定位信息,所以用R语言做分析的时候会自动下载对应的CDF包(若未安装的话),如HG-U133A_2型号下载hgu133a2cdf包。HG-U133A_2是直接从CEL文件读取出来的型号名称,把HG-U133A_2的所有大写字母改成小写字母并去掉短横线(可以用R语言的cleancdfname方法实现),并且在末尾加上“cdf”就是对应的cdf包的名字。
标签:
原文地址:http://www.cnblogs.com/xianwen/p/4522173.html