minfi 是一个用于分析DNA 甲基化芯片的R包。官网如下:
http://www.bioconductor.org/packages/release/bioc/html/minfi.html
如果要用这个包进行分析,首先需要在R中将我们的芯片数据读取进来,就是常说的import data
。对于minfi 来说,其设计思路是通过读取SampleSheet.csv 文件,在事先约定好的目录结构中查找所有样本的原始数据,来自动化的读取所有样本的信息。
在illumina 的官方网站,我们可以找到对应的SampleSheet 文件的模板和测试数据集
450K 芯片的SampleSheet.csv 模板示例如下:
在SampelSheet 文件中, 开头的几行是注释信息,[Data]
下面的样本的基本信息。
一张甲基化芯片上最多可以有12个样本,每个样本根据Sentrix_Position
标识, 当样本个数大于12个时,必然需要另外一张芯片,对于每张芯片,使用Sentrix_ID
标识。minfi
就是通过 Sentrix_ID 和 Sentrix_Position 这两个字段来查找样本的原始数据。
对于每个样本,会有两个.idat 文件,基于示例的SampleSheet.csv 文件,对应的文件名称为
200514040030_R01C01_Grn.idat
200514040030_R02C01_Red.idat
我们只需要整理成如下所示的目录结构就可以了
SampleSheet.csv
Sentrix_ID/
├── Sentrix_ID_Sentrix_Position.Grn.idat
└── Sentrix_ID_Sentrix_Position.Red.idat
SampleSheet.csv 文件在第一层,然后是每张芯片对应的的Sentrix_ID
是一个目录,在每个Sentrix_ID
目录下,是该芯片上样本的原始数据,文件名称为 Sentrix_ID_Sentrix_Position.Grn.idat
这种格式。
整理SampleSheet.csv 文件和对应的目录结构之后,就可以在R中进行读取了。
read.metharray.sheet
函数读取SampleSheet.csv 文件, 第一个参数为该文件所在的目录,第二个参数为文件的名称,支持正则表达式,如果不习惯正则,直接指定为对应的文件名称就好了。
read in the sample sheet for the experiment targets <- read.metharray.sheet(dataDirectory, pattern=”SampleSheet.csv”)
read.metharray.exp
函数读取样本的.idat 文件,参数read.metharraty.sheet
返回的对象
read in the raw data from the IDAT files rgSet <- read.metharray.exp(targets=targets)
通过上面两步,就实现了数据的读取。
SampleSheet.csv文件中的Sentrix_ID
标识每张芯片,Sentrix_Position
标识芯片上的每一个样本,通过这两个字段的信息,可以得到对应的文件名称。原始下机数据的目录结构都是满足minfi 的要求的,对于不符合要求的情况,比如从GEO 数据库下载的芯片数据,我们只有.idat 文件,可以根据样本信息构造出SampleSheet.csv 文件,然后再使用 minfi 进行读取;