Rstudio安装
BiocManager::install("aroma.affymetrix")
library(aroma.affymetrix)
所有的aroma包被设计成数据文件位于特定目录下,遵循严格的目录结构。
Affymetrix数据分析的基础是CEL和CDF文件。CEL文件是所谓的数据文件,它包含观测到的信号,而芯片定义文件(CDF)是所谓的注释文件,它包含有关特定芯片类型布局的信息。为了尽量减少用户指定的参数个数,aroma包Affymetrix在下面的预定义目录中查找注释文件。
注释数据文件的位置
annotationData/chipTypes/Mapping50K_Hind240/Mapping50K_Hind240.cdf
annotationData/chipTypes/Mapping50K_Hind240/Mapping50K_Hind240,monocell.cdf
按照上面的文件路径放置文件(注意格式不能错)
Affymetrix NetAffx CSV files文件位置
annotationData/chipTypes/Mapping50K_Hind240/NetAffx/Mapping50K_Hind240_annot.csv
Affymetrix probe-tab files探针文件位置
所谓的Affymetrix探针标签文件是包含关于探针序列等信息的注释文件。可以在Affymetrix网站上找到。例如,GCRMA背景校正需要这些。不幸的是,这些文件的名称没有正式的格式,但它们通常以类似于芯片类型的东西开始,然后是后缀'_probe_tab',没有文件名扩展名。对于所有注释文件,将它们放在相应的芯片类型目录下,例如。
annotationData/chipTypes/Mapping50K_Hind240/Mapping50K_Hind_probe_tab
DChip annotation files注释文件位置
这些可从http://www.dchip.org/的几种芯片类型。确保将它们放在相应的目录下
annotationData/chipTypes/Mapping50K_Hind240/dChip/50k hind genome info AfAm june 05 hg17.xls
annotationData/chipTypes/Mapping50K_Hind240/dChip/Mapping100K_Hind snp info.txt
原始数据CEL files文件的位置
rawData/SinclairA_etal_2006/
Mapping250K_Nsp/
01,XX,2006-07-12.cel
02,XY,2006-07-14.cel
...
10,XX.cel
C1.cel 02,XY,2006-07-12.cel
注意,上面的两个数组集有样本“01”,“02”,…,共有“10”,而样本“C1”仅与Nsp芯片杂交,样本“C348”仅与Sty芯片杂交。无论芯片类型,数据都有样本“01”,…、“10”、“C1”和“C358”。
例如你可以按照下面的目录方式设置自己的文件目录
C:/Documents and Settings/JoeD/My Documents/ProjectA/
+- annotationData/
| +- chipTypes/
| +- Mapping50K_Hind240/
| | +- Mapping50K_Hind240.cdf
| | +- Mapping50K_Hind240,monocell.cdf
| | +- Mapping50K_Hind_probe_tab
| | |
| | +- dChip/
| | | +- 50k hind genome info AfAm june 05 hg17.xls
| | | +- Mapping100K_Hind snp info.txt
| | |
| | +- NetAffx/
| | +- Mapping50K_Hind240_annot.csv
| |
| +- Mapping250K_Nsp/
| | +- Mapping250K_Nsp.cdf
| |
| +- Mapping250K_Sty/
| +- Mapping250K_Sty.cdf
|
+- rawData/
+- SinclairA_etal_2006/
| +- Mapping250K_Nsp/
| | +- 01,XX,2006-07-12.cel
| | +- 02,XY,2006-07-14.cel
| | +- ...
| | +- 10,XX.cel
| | +- C1.cel
| |
| +- Mapping250K_Sty/
| +- 01,XX,2006-07-19,2nd.cel
| +- 02,XY,2006-07-20.cel
| +- ...
| +- 10,XX.cel
| +- C358,control.cel
|
+- Yu50K
+- Mapping50K_Hind240/
+- XYZ0001.cel
+- XYZ0002.cel
+- XYZ0003.cel
+- XYZ0004.cel
+- XYZ0005.cel
今天我们重点学习使用CRMA v1 (10K, 100K, 500K)进行总拷贝数分析
所谓500K SNP芯片,由Mapping250K_Nsp和Mapping250K_Sty两种芯片类型组成,可查询500,568(=262264+238304)个SNP。单核苷酸多态性的选择是基于其技术性能,而不是基于连锁不平衡(LD) 芯片类型:Mapping250K_Nsp & Mapping250K_Sty
The GeneChip® Human Mapping 500K Array Set provides consistently high coverage across different populations. It is comprised of two arrays, each capable of genotyping on average 250,000 SNPs (approximately 262,000 for Nsp arrays and 238,000 for Sty arrays)
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("aroma.affymetrix")
BiocManager::install("aroma.core")
BiocManager::install("GLAD")
install.packages("gsl")
library(aroma.core)
library(aroma.affymetrix)
library(GLAD)
verbose <- Arguments$getVerbose(-8, timestamp=TRUE)
name <- "ESCC_RawData"
chipTypes <- c("Mapping250K_Nsp", "Mapping250K_Sty")
#验证注释文件
getwd()
setwd("/home/ug0439/zjs/ovarian/CNVsignatures/Aroma_CallCNV/")
cdfs <- lapply(chipTypes, FUN=function(chipType) {
AffymetrixCdfFile$byChipType(chipType)
})
print(cdfs)
##自动检测ugp和ufl文件是否在正确的位置,环境是否正确
#在我们继续之前,下面将断言可以找到UFL和UGP注释文件,并且它们与给定的CDF兼容。这些步骤实际上并不需要进行分析,因为它们是在后台完成的,但这是一个很好的测试,可以查看设置是否正确,并捕捉已经在这里设置的任何错误。
gis <- lapply(cdfs, FUN=getGenomeInformation)
print(gis)
sis <- lapply(cdfs, FUN=getSnpInformation)
print(sis)
#定义CEL集
cesNList <- list()
##===================对于第一种芯片类型重复以下所有步骤========
chipType <- chipTypes[1] #重复或者并行运行这个代码【1】【2】
cs <- AffymetrixCelSet$byName(name, chipType=chipType)
cs <- cs[!isDuplicated(cs)]
print(cs)
#均一化
qn <- QuantileNormalization(cs)
print(qn)
csN <- process(qn, verbose=verbose)
#归一化
对于忽略链信息的总拷贝数分析
plm <- RmaCnPlm(csN, combineAlleles=TRUE, mergeStrands=TRUE)
print(plm)
fit(plm, verbose=verbose) #使PLM符合所有数据
#PCR片段长度均一划
#为了将由于不同snp的PCR片段长度不同而产生的系统效应归一化,
ces <- getChipEffectSet(plm)
fln <- FragmentLengthNormalization(ces)
print(fln)
#使芯片效应正常化
cesNList[[chipType]] <- process(fln, verbose=verbose)
##===================对于第二种芯片类型重复以上所有步骤======
chipType <- chipTypes[2]#重复或者并行运行这个代码【1】【2】
cs <- AffymetrixCelSet$byName(name, chipType=chipType)
cs <- cs[!isDuplicated(cs)]
print(cs)
#均一化
qn <- QuantileNormalization(cs)
print(qn)
csN <- process(qn, verbose=verbose)
#归一化
对于忽略链信息的总拷贝数分析
plm <- RmaCnPlm(csN, combineAlleles=TRUE, mergeStrands=TRUE)
print(plm)
fit(plm, verbose=verbose) #使PLM符合所有数据
#PCR片段长度均一划
#为了将由于不同snp的PCR片段长度不同而产生的系统效应归一化,
ces <- getChipEffectSet(plm)
fln <- FragmentLengthNormalization(ces)
print(fln)
#使芯片效应正常化
cesNList[[chipType]] <- process(fln, verbose=verbose)
###==================当done以后,打印下面的信息======
print(cesNList)
##==================拷贝数区域(CNRs)的识别======
#GLAD (DNA Gain and Loss Analysis of DNA)模型可以应用于原始拷贝数(CNs)分析。
#对于每个位置,原始CN被计算为相对于正常参考样品的芯片效应的芯片效应。
#如果没有参考样本,可以使用所有样本的稳健平均值。
#为了使用样本的稳健平均作为参考集来建立GLAD模型,
##需要在http://www.dchip.org/里面下载genome annotation data file for genome 'Human放在.注意这里遇到了问题
#找不到基因组文件(网站已过期,目前给作者已经写信询问)。
glad <- GladModel(cesNList)
#此外,目前安装的GLAD型号的“芯片类型”是两种芯片类型的混合。该包通过一个新的虚拟“芯片类型”将输出数据标记为输入芯片类型的最小组合字符串,按字典顺序排序,例如从Mapping250K_Sty和Mapping250K_Nsp组合的芯片类型成为“Mapping250K_Nsp+Sty”。注意,该芯片类型没有CDF,但它指示了这两种芯片类型。
print(glad)
##=================输出拷贝数=========
#给定任何CopyNumberChromosomalModel,包括GladModel,都可以提取原始拷贝数
#log-ratios 可以参考https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=pubmed&cmd=prlinks&retmode=ref&id=18204055
rawCNs <- extractRawCopyNumbers(glad, array=1, chromosome=1)
print(rawCNs)
#该对象保存(在内存中)原始CN估计值(CN)和它们在请求染色体上的基因组位置(x)。处理这些数据最简单的方法是将其转换为数据帧:
#不管CN模型是什么,原始CNs都是用完全相同的方法估计的
rawCNs <- as.data.frame(rawCNs)
str(rawCNs)
#==============拟合拷贝数模型并显示结果=======
#数据分别对每个样本和每个染色体进行拟合。
#对于单个250K数组,每个数组将花费大约30-40分钟使GLAD符合所有22+1染色体。如果两个250K数组合并,就像本例中那样,处理时间不是增加一倍,而是大约增加四倍,即每个数组2-2.5小时。
#换句话说,将GLAD与Nsp和Sty结合起来可能需要数天时间才能得到一个大的数据集。(脚注:为了加快建模速度,GLAD包必须进行优化;没有什么可以优化它的香气。affymetrix包。)如果一些数组只是为了作为参考样本而包含,则不必使GLAD与这些数组相匹配,这将节省处理时间。
#此外,由于GLAD是独立地贴合到每个阵列和每个染色体上的,因此可以在许多不同的计算机上并行地贴合GLAD。
#我们可以利用ChromosomeExplorer类来适应模型并生成可浏览的图像文件,这是数组和/或染色体的选定子集。
ce <- ChromosomeExplorer(glad)
##setArrays(ce, c("样本A名字", "样本B名字", "样本C名字", "样本D名字"))
setArrays(ce, c("1", "2", "3", "4")) #要建模的数组
setAlias(ce, "ESCC_500K_CNVcallResult") #为输出命名不同的数据集名称
print(ce)
##=以适应GLAD模型并创建报告文件
process(ce, verbose=verbose)
##如果为了只做染色体的一个子集,例如染色体19、22和23 (X),做:
process(ce, chromosomes=c(19,22,23), verbose=verbose)
可参考下面的文件设置
ug0439@gs62:~/zjs/ovarian/CNVsignatures/Aroma_CallCNV$ tree
.
├── annotationData
│ └── chipTypes
│ ├── Mapping250k_genome_info_hg18.rar
│ ├── Mapping250K_Nsp
│ │ ├── dChip
│ │ │ └── NetAffxGenomicAnnotations.Homo_sapiens.hg18.na28.db
│ │ ├── Mapping250K_Nsp.cdf
│ │ ├── Mapping250K_Nsp,HB20080710.acs
│ │ ├── Mapping250K_Nsp,monocell.CDF
│ │ ├── Mapping250K_Nsp,monocell.CDF.md5
│ │ ├── Mapping250K_Nsp_na31_HB20101007.ufl
│ │ ├── Mapping250K_Nsp_na31_HB20101007.ugp
│ │ ├── Mapping500K.na24.annot.db
│ │ ├── NetAffx
│ │ │ └── Mapping250K_Nsp,na32,annot.csv
│ │ └── NetAffxGenomicAnnotations.Homo_sapiens.hg18.na28.db
│ └── Mapping250K_Sty
│ ├── dChip
│ │ └── NetAffxGenomicAnnotations.Homo_sapiens.hg18.na28.db
│ ├── Mapping250K_Sty.cdf
│ ├── Mapping250K_Sty,HB20080710.acs
│ ├── Mapping250K_Sty,monocell.CDF
│ ├── Mapping250K_Sty,monocell.CDF.md5
│ ├── Mapping250K_Sty_na31_HB20101007.ufl
│ ├── Mapping250K_Sty_na31_HB20101007.ugp
│ ├── Mapping500K.na24.annot.db
│ ├── NetAffx
│ │ └── Mapping250K_Sty,na32,annot.csv
│ └── NetAffxGenomicAnnotations.Homo_sapiens.hg18.na28.db
├── plmData
│ ├── ESCC_RawData,QN,RMA,A+B
│ │ ├── Mapping250K_Nsp
│ │ │ ├── GSM388956,chipEffects.CEL
│ │ │ ├── GSM388956,chipEffects.CEL.md5
│ │ │ ├── GSM388957,chipEffects.CEL
│ │ │ ├── GSM388957,chipEffects.CEL.md5
│ │ │ ├── GSM389036,chipEffects.CEL
│ │ │ ├── GSM389036,chipEffects.CEL.md5
│ │ │ ├── GSM389037,chipEffects.CEL
│ │ │ ├── GSM389037,chipEffects.CEL.md5
│ │ │ ├── probeAffinities.CEL
│ │ │ └── probeAffinities.CEL.md5
│ │ └── Mapping250K_Sty
│ │ ├── GSM389088,chipEffects.CEL
│ │ ├── GSM389088,chipEffects.CEL.md5
│ │ ├── GSM389089,chipEffects.CEL
│ │ ├── GSM389089,chipEffects.CEL.md5
│ │ ├── GSM389168,chipEffects.CEL
│ │ ├── GSM389168,chipEffects.CEL.md5
│ │ ├── GSM389169,chipEffects.CEL
│ │ ├── GSM389169,chipEffects.CEL.md5
│ │ ├── probeAffinities.CEL
│ │ └── probeAffinities.CEL.md5
│ └── ESCC_RawData,QN,RMA,A+B,FLN,-XY
│ ├── Mapping250K_Nsp
│ │ ├── GSM388956,chipEffects.CEL
│ │ ├── GSM388956,chipEffects.CEL.md5
│ │ ├── GSM388957,chipEffects.CEL
│ │ ├── GSM388957,chipEffects.CEL.md5
│ │ ├── GSM389036,chipEffects.CEL
│ │ ├── GSM389036,chipEffects.CEL.md5
│ │ ├── GSM389037,chipEffects.CEL
│ │ └── GSM389037,chipEffects.CEL.md5
│ └── Mapping250K_Sty
│ ├── GSM389088,chipEffects.CEL
│ ├── GSM389088,chipEffects.CEL.md5
│ ├── GSM389089,chipEffects.CEL
│ ├── GSM389089,chipEffects.CEL.md5
│ ├── GSM389168,chipEffects.CEL
│ ├── GSM389168,chipEffects.CEL.md5
│ ├── GSM389169,chipEffects.CEL
│ └── GSM389169,chipEffects.CEL.md5
├── probeData
│ └── ESCC_RawData,QN
│ ├── Mapping250K_Nsp
│ │ ├── GSM388956.CEL
│ │ ├── GSM388956.CEL.md5
│ │ ├── GSM388957.CEL
│ │ ├── GSM388957.CEL.md5
│ │ ├── GSM389036.CEL
│ │ ├── GSM389036.CEL.md5
│ │ ├── GSM389037.CEL
│ │ └── GSM389037.CEL.md5
│ └── Mapping250K_Sty
│ ├── GSM389088.CEL
│ ├── GSM389088.CEL.md5
│ ├── GSM389089.CEL
│ ├── GSM389089.CEL.md5
│ ├── GSM389168.CEL
│ ├── GSM389168.CEL.md5
│ ├── GSM389169.CEL
│ └── GSM389169.CEL.md5
└── rawData
└── ESCC_RawData
├── Mapping250K_Nsp
│ ├── GSM388956.CEL
│ ├── GSM388957.CEL
│ ├── GSM389036.CEL
│ └── GSM389037.CEL
└── Mapping250K_Sty
├── GSM389088.CEL
├── GSM389089.CEL
├── GSM389168.CEL
└── GSM389169.CEL