测定基因表达
寻找SNP
寻找转录因子结合位点
biocLite()安装,安装后仍需要library()才能使用 source("http://bioconductor.org/biocLite.R")
biocLite()
phenoData <- new("AnnotatedDataFrame",data=pData, varMetadata=metadata) 建立AnnotatedDataFrame类型数据exampleSet <- ExpressionSet(assayData=exprs,phenoData=phenoData,experimentData=experimentData,annotation="hgu95av2")exampleSet[ , exampleSet$gender == "Male"]esApply 用来针对ExpressionSet应用函数library(Biobase)library(GEOquery)geoq <- getGEO("GSE9514") 从基因表达精选集(GEO)上得到数据表达集names(geoq) 得到文件名e <- geoq[[1]] 得到数据集dim(e) 查看表达集维度 给出样本数与特征值,也就是测定序列数dim(exprs(e)) 与上面等同,给出基因分析数据dim(pData(e)) 给出8个样本的信息,信息头用names(pData(e))给出dim(fData(e)) 给出特征与信息头列表library(IRanges) 序列范围ir <- IRanges(start = c(3, 5, 17), end = c(10, 8, 20)) 定义序列IRanges(5, 10) 表示5到10这6个碱基对,可以shiftrange(ir) 表示存在ir中序列的起止范围gaps(ir) 表示寻找ir中间隔片段disjoin(ir) 表示将ir中序列碎片化后互不重叠的片段library(GenomicRanges) 基因范围gr <- GRanges("chrZ", IRanges(start = c(5, 10), end = c(35, 45)), strand = "+", seqlengths = c(chrZ = 100L)) 定义位于染色体chrZ上几个序列范围,认为这些范围共同定义一个基因mcols(gr)$value <- c(-1, 4) 定义该基因类型中的列并赋值grl <- GRangesList(gr, gr2) 多个Granges定义一个基因库length(grl) 给出基因库里基因个数mcols(grl)$value <- c(5, 7) 定义该基因库类型中的列并赋值fo <- findOverlaps(gr1, gr2) 寻找两个基因重叠序列queryHits(fo) 与 subjectHits(fo) 提取两个基因重叠序号 成对出现gr1[gr1 %over% gr2] 提取对应序列范围Rle(c(1, 1, 1, 0, 0, -2, -2, -2, rep(-1, 20))) 表示4组处理,每组各有 3 2 3 20 个重复as.numeric()提取原始数据Views(r, start = c(4, 2), end = c(7, 6) 提取对应实验组library(affy)tab <- read.delim("sampleinfo.txt", check.names = FALSE, as.is = TRUE) 读取样本信息ab <- ReadAffy(phenoData = tab) 读取样本数据,探针层次ejust <- justRMA(filenames = tab[, 1], phenoData = tab) 直接读取为基因层数据e <- rma(ab) 对样本进行背景校正与正则化,从探针层转化为基因层数据-log10(p.value)library(pasillaBamSubset) 用来对Bam文件取子集 这里使用其中示例数据library(TxDb.Dmelanogaster.UCSC.dm3.ensGene) 转录数据库library(biomaRt) 提取基因工具m <- useMart("ensembl", dataset = "dmelanogaster_gene_ensembl") 提取数据库基因名map <- getBM(mart = m, attributes = c("ensembl_gene_id", "flybasename_gene"), filters = "flybasename_gene", values = "lgs") 通过过滤得到相关基因的信息grl <- exonsBy(TxDb.Dmelanogaster.UCSC.dm3.ensGene, by = "gene") 从转录数据库中提取外显子序列gene <- grl[[map$ensembl_gene_id[1]]] 通过基因信息锁定相关序列位置library(Gviz) 读取可视化包gtrack <- GenomeAxisTrack() 基因组坐标轴atrack <- AnnotationTrack(gene, name = "Gene Model") 索取基因位置fl1 <- untreated1_chr4() fl2 <- untreated3_chr4() 提取两组数library(GenomicAlignments) 将数据序列Rle提取出来x <- readGAlignments(fl1);y <- readGAlignments(fl2) 提取数据序列xcov <- coverage(x);ycov <- coverage(y) 提取数据序列信息xgr <- as(xcov, "GRanges") 将样本1从Rle转为序列区间ygr <- as(ycov, "GRanges") 将样本1从Rle转为序列区间dtrack1 <- DataTrack(xgr[xgr %over% gene], name = "sample 1") 样本1在基因范围映射dtrack2 <- DataTrack(ygr[ygr %over% gene], name = "sample 2") 样本2在基因范围映射plotTracks(list(gtrack, atrack, dtrack1, dtrack2)) 可视化完成devtools::install_github("coloncancermeth","genomicsclass")
library(coloncancermeth)
data(coloncancermeth)
该数据集为结肠癌病人与对照的DNA甲基化数据集。
dim(meth)
dim(pd)
length(gr)
meth为测序数据,pd为样本信息,gr测序片段信息。
colnames(pd)
table(pd$Status)
X = model.matrix(~pd$Status)
查看病患与正常人的分组并构建模型。
chr = as.factor(seqnames(gr))
pos = start(gr)
library(bumphunter)
cl = clusterMaker(chr,pos,maxGap=500)
res = bumphunter(meth,X,chr=chr,pos=pos,cluster=cl,cutoff=0.1,B=0)
按染色体生成因子变量,找出基因起始位点,然后利用bumphunter包寻找甲基化数据中某个阈值(0.1)下甲基化基因聚类的后出现的位置,聚类号,聚类相关性等信息寻找问题基因,可从中提取相关信息
cols=ifelse(pd$Status=="normal",1,2)
Index=(res$table[6,7]-3):(res$table[6,8]+3)
matplot(pos[Index],meth[Index,,drop=TRUE],col=cols,pch=1,xlab="genomic location",ylab="Methylation",ylim=c(0,1))
Index=(res$table[6,7]):(res$table[6,8])
test <- meth[Index,,drop=T]
colnames(test) <- pd$bcr_patient_barcode
test1 <- test[,cols==1]
test2 <- test[,cols==2]
test3 <- apply(test2, 2, mean)
apply(matrix, 1, rank)
从上面可以得到有差异的甲基化数据所在的基因位置并提取相关样本数据信息。可根据差异作图,得到两组数据甲基化水平差异所在的基因位置。可对差异进行平滑操作,得到位置。这样就可以知道甲基化发生的序列位置与水平差异的信息了。
下面的例子是用人类基因组数据探索潜在的CpG岛。
library(BSgenome.Hsapiens.UCSC.hg19)
Hsapiens[["chr1"]]
# 计算某染色体上潜在位点个数
countPattern('CG',Hsapiens[["chr1"]])
# 计算某染色体上特定序列比例 观察与期望出现的比例
CG <- countPattern('CG',Hsapiens[["chr1"]])/length(Hsapiens[["chr1"]])
GC <- countPattern('GC',Hsapiens[["chr1"]])/length(Hsapiens[["chr1"]])
table <- alphabetFrequency(Hsapiens[["chr1"]])
expect <- table['C']%*%table['G']/(length(Hsapiens[["chr1"]]))^2
CG/expect