有了探针排布图像的基础,我们就可以更好地理解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包的名字。

02、CDF文件的更多相关文章

  1. 关于Mathematica 的cdf 文件的嵌入应用

    // // '); cdf.embed('http://files.cnblogs.com/Leonhard-E/AreaOfANormalDistribution.cdf', 635, 913); ...

  2. oracle 11g 数据库恢复技术 ---02 控制文件

    oracle 11g 数据库恢复技术 ---02 控制文件 SYS@ orcl >show parameter control_file NAME TYPE VALUE ------------ ...

  3. PHP学习笔记 02 之文件上传

    我们了解了表单传值后,这些我就可以完成PHP的文件上传了.我们了解PHP文件上传前,先了解PHP文件上传的原理. 一.PHP上传文件原理 第一步:将本地的文件通过form表单上传到服务器的临时目录中, ...

  4. 【C#进阶系列】02 PE文件,程序集,托管模块,元数据——还是那个Hello world

    好了,还是这张图,还是一样的Hello world. 因为本章其实很多都是讲一些命令行编译啊什么鬼的配置类的东西,要用的时候直接百度或者回头查书就可以了, 所以了解一下也就行了,也没有记录下来,接下来 ...

  5. Android 数据存储02之文件读写

    Android文件读写 版本 修改内容 日期 修改人 V1.0 原始版本 2013/2/25 skywang Android文件读写的有两种方式.一种,是通过标准的JavaIO库去读写.另一种,是通过 ...

  6. OpenCV 学习笔记 02 处理文件、摄像头和图形用户界面

    在处理文件前需要引入OpenCV库,同时也引入unmpy库 import cv2 import numpy as np 1 基本的读写操作 1.1 图像文件的读写操作 1.1.1 图像文件的读取操作 ...

  7. 02 svn 文件提交与目录结构

    一:文件操作给svn服务器提交程序文件: ① 在被提交文件的身上点击右键------> tortoiseSVN----->add ② 在被提交文件身上点击右键------> comm ...

  8. 03、重定义CDF

    有一篇文章“Evolving gene/transcript definitions significantly alter the interpretation of GeneChip data”, ...

  9. .net 实现Office文件预览 Word PPT Excel 2015-01-23 08:47 63人阅读 评论(0) 收藏

    先打个广告: .Net交流群:252713569 本人QQ :524808775 欢迎技术探讨, 近期公司要求上传的PPT和Word都需要可以在线预览.. 小弟我是从来没有接触过这一块的东西 感觉很棘 ...

随机推荐

  1. [CSP-S模拟测试]:中间值(二分)

    题目背景 $Maxtir$喜欢序列的中间值. 题目传送门(内部题127) 输入格式 第一行输入两个正整数$n,m$,其中$m$是操作和询问次数. 接下来两行每行输入$n$个非负整数,每一行分别表示两个 ...

  2. Zookeeper基础命令操作

    转载链接:https://blog.csdn.net/dandandeshangni/article/details/80558383 安装参考链接https://blog.csdn.net/qiun ...

  3. Docker入门-Dockerfile的使用

    使用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,这个脚本就是Dockerfile. Dockerfile ...

  4. Spring Data JPA的Respository接口中查询方法

  5. bloom filter小结

    Bloom Filter是由 Howard Bloom在 1970 年提出的一种多哈希函数映射的快速查找算法,它是一种空间效率很高的随机数据结构,利用位数组很简洁地表示一个集合,并能判断一个元素是否属 ...

  6. JAVA TCP Socket

    服务器端   package com.Pong.tcpip; import java.io.BufferedReader; import java.io.IOException; import jav ...

  7. android 注入框架 DI

    android 主要注入框架以及github如下: (1)Roboguice https://github.com/roboguice/roboguice (2)Butterknife https:/ ...

  8. android 播放音乐媒体文件(二)

    MediaPlayer使用 官方文档: https://developer.android.com/guide/topics/media/mediaplayer.html 示例代码: 首先网络音频资源 ...

  9. 4. 获取当前的文件夹的路径,以及当前文件名的路径 os.path.realpath

    使用os.path.realpath(__file__) 获得当前的文件夹的路径名, 使用os.path.split 进行路径切割 import os src, _= os.path.split(os ...

  10. 代码实现:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n

    import java.util.Scanner; //编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n public ...