R与bioconductor--ExpressionSet SummarizedExperiment GEOquery biomaRt S4-Classes S4-Methods

本文主要是介绍R与bioconductor--ExpressionSet SummarizedExperiment GEOquery biomaRt S4-Classes S4-Methods,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博主自学了coursera上来自约翰霍普金斯大学<使用Bioconductor分析基因组科学数据>,很不错,推荐给大家
ExpressionSet Overview
ExpressionSet
-Expression Matrix
-Phenotype data Feature data
eSet:仅仅是有多个Expression Matrix




ExpressionSet

library(ALL)
data(ALL)
experimentData(ALL)
exprs(ALL)[1:4,1:4]
head(sampleNames(ALL))
head(featureNames(ALL))
head(pData(ALL))
ALL$sex
ALL[1:10,1:5]
featureData(ALL)#包含关于基因的信息,但是经常没有
ids <- featureNames(ALL)[1:5]
library(hgu95av2.db)#之前数据集里面写了芯片平台hgu95av2.db
as.list(hgu95av2ENTREZID[ids])
phenoData(ALL)#不如使用pData(ALL),phenoData(ALL)内容更多些
names(pData(ALL))#有时相当于varLabels(ALL),有时varLabels(ALL)更详细


SummarizedExperiment

#SummarizedExperiment
library(airway)
data("airway")
airway
colData(airway)#pData(ALL)
airway$cell
colnames(airway)
head(rownames(airway))
assayNames(airway)#要想获得表达矩阵,使用assay accessor,用assayNames()获得全部表达矩阵名
assay(airway,"counts")[1:4,1:4]
length(rowRanges(airway))
rowRanges(airway)#SummarizedExperiment特别之处在于每行每列都有关联的GRanges
start(airway)
gr = GRanges("1",ranges = IRanges(start = 1,end = 10^7))
subsetByOverlaps(airway,gr)
#'正是有着关联GRanges,可以取出染色体"某一区域内"基因的表达值


GEOquery

library(GEOquery)
eList <- getGEO("GSE11675")
length(eList)
eData = eList[[1]]
eData
names(pData(eData))
eList2 = getGEOSuppFiles("GSE11675")#下载原始tar包
eList2



biomaRt

library(biomaRt)
head(listMarts())
mart <- useMart("ensembl")
mart
head(listDatasets(mart))
ensemble <- useDataset("hsapiens_gene_ensembl",mart)
values <- c("202763_at","209310_s_at","207500_at")
getBM(attributes = c("ensembl_gene_id","affy_hg_u133_plus_2"),
      filters = "affy_hg_u133_plus_2",values = values,mart = ensemble)
attributes <- listAttributes(ensemble)#可以查询到的条目
nrow(attributes)#可以把一个物种的基因转换到另一个物种的同源基因
head(attributes)
filters <- listFilters(ensemble)#可以查询到的条目
nrow(filters)#可以把一个物种的基因转换到另一个物种的同源基因
head(filters)
attributePages(ensemble)#attributes存储在一个一个page中,可以用这个减小搜索范围
attributes <- listAttributes(ensemble,page = "feature_page")
nrow(attributes)

R S4 Classes

library(ALL)
library(GenomicRanges)
#'S3对象就是像一个list,list中每个对象都有各自的name
#'而S4对象定义了每个class应该是有些什么东西
data("ALL")
ALL
class(ALL)
isS4(ALL)
class?ExpressionSet#查看一个class的简介
?"ExpressionSet-class"#查看一个class的简介
#'list的规则:首字母大写
#'构造方法
ExpressionSet()
getClass("ExpressionSet")#Slots插槽,就是这个class由哪儿些小class构成
ALL@annotation
annotation(ALL)
#class升级了,定义改变了,用updateObject
OLD_OBJECT = updateObject(OLD_OBJECT)
validObject(ALL)#检测对象是否正确,是否符合class的定义


R S4 Methods

library(GenomicRanges)
GenomicRanges::as.data.frame#S4方法
base::as.data.frame#S3方法
showMethods("as.data.frame")#可以看见,X类型不同,后续选用的程序代码也不同
#查看传入某一特定类型,对应的相关程序代码
getMethod("as.data.frame","GenomicRanges")
getMethod("as.data.frame",signature(x="GenomicRanges"))
#查看传入某一特定类型,对应的帮助文档
method?"as.data.frame,DataFrame"
method?"as.data.frame,GenomicRanges"
?"as.data.frame,DataFrame-method"
?"as.data.frame,GenomicRanges-method"
showMethods("findOverlaps")
getMethod("findOverlaps",signature(query = "Ranges",subject = "Ranges"))
?"findOverlaps,Ranges,Ranges-method"
#'S4缺点:难以找到help文档,难以直接看源代码,难以debug
#'但是最好S4写一个package,方便管理

最后是完整代码片段
#ExpressionSet
library(ALL)
data(ALL)
experimentData(ALL)
exprs(ALL)[1:4,1:4]
head(sampleNames(ALL))
head(featureNames(ALL))
head(pData(ALL))
ALL$sex
ALL[1:10,1:5]
featureData(ALL)#包含关于基因的信息,但是经常没有
ids <- featureNames(ALL)[1:5]
library(hgu95av2.db)#之前数据集里面写了芯片平台hgu95av2.db
as.list(hgu95av2ENTREZID[ids])
phenoData(ALL)#不如使用pData(ALL),phenoData(ALL)内容更多些
names(pData(ALL))#有时相当于varLabels(ALL),有时varLabels(ALL)更详细#SummarizedExperiment
library(airway)
data("airway")
airway
colData(airway)#pData(ALL)
airway$cell
colnames(airway)
head(rownames(airway))
assayNames(airway)#要想获得表达矩阵,使用assay accessor,用assayNames()获得全部表达矩阵名
assay(airway,"counts")[1:4,1:4]
length(rowRanges(airway))
rowRanges(airway)#SummarizedExperiment特别之处在于每行每列都有关联的GRanges
start(airway)
gr = GRanges("1",ranges = IRanges(start = 1,end = 10^7))
subsetByOverlaps(airway,gr)
#'正是有着关联GRanges,可以取出染色体"某一区域内"基因的表达值library(GEOquery)
eList <- getGEO("GSE11675")
length(eList)
eData = eList[[1]]
eData
names(pData(eData))
eList2 = getGEOSuppFiles("GSE11675")#下载原始tar包
eList2library(biomaRt)
head(listMarts())
mart <- useMart("ensembl")
mart
head(listDatasets(mart))
ensemble <- useDataset("hsapiens_gene_ensembl",mart)
values <- c("202763_at","209310_s_at","207500_at")
getBM(attributes = c("ensembl_gene_id","affy_hg_u133_plus_2"),filters = "affy_hg_u133_plus_2",values = values,mart = ensemble)
attributes <- listAttributes(ensemble)#可以查询到的条目
nrow(attributes)#可以把一个物种的基因转换到另一个物种的同源基因
head(attributes)
filters <- listFilters(ensemble)#可以查询到的条目
nrow(filters)#可以把一个物种的基因转换到另一个物种的同源基因
head(filters)
attributePages(ensemble)#attributes存储在一个一个page中,可以用这个减小搜索范围
attributes <- listAttributes(ensemble,page = "feature_page")
nrow(attributes)library(ALL)
library(GenomicRanges)
#'S3对象就是像一个list,list中每个对象都有各自的name
#'而S4对象定义了每个class应该是有些什么东西
data("ALL")
ALL
class(ALL)
isS4(ALL)
class?ExpressionSet#查看一个class的简介
?"ExpressionSet-class"#查看一个class的简介
#'list的规则:首字母大写
#'构造方法
ExpressionSet()
getClass("ExpressionSet")#Slots插槽,就是这个class由哪儿些小class构成
ALL@annotation
annotation(ALL)
#class升级了,定义改变了,用updateObject
OLD_OBJECT = updateObject(OLD_OBJECT)
validObject(ALL)#检测对象是否正确,是否符合class的定义library(GenomicRanges)
GenomicRanges::as.data.frame#S4方法
base::as.data.frame#S3方法
showMethods("as.data.frame")#可以看见,X类型不同,后续选用的程序代码也不同
#查看传入某一特定类型,对应的相关程序代码
getMethod("as.data.frame","GenomicRanges")
getMethod("as.data.frame",signature(x="GenomicRanges"))
#查看传入某一特定类型,对应的帮助文档
method?"as.data.frame,DataFrame"
method?"as.data.frame,GenomicRanges"
?"as.data.frame,DataFrame-method"
?"as.data.frame,GenomicRanges-method"showMethods("findOverlaps")
getMethod("findOverlaps",signature(query = "Ranges",subject = "Ranges"))
?"findOverlaps,Ranges,Ranges-method"
#'S4缺点:难以找到help文档,难以直接看源代码,难以debug
#'但是最好S4写一个package,方便管理




这篇关于R与bioconductor--ExpressionSet SummarizedExperiment GEOquery biomaRt S4-Classes S4-Methods的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/196170

相关文章

【VueJS】深入理解 computed 和 methods 方法

前言   模板内的表达式是非常便利的,但是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="example">{{ message.split('').reverse().join('') }}</div> computed 方法   所以引入了计算属性computed,将复杂的逻辑放入计算中进行处理,同时computed有缓存功能,

the following classes could not be found android.support.v7.internal.

打开XML的界面时候显示 rendering problems: the following classes could not be found android.support.v7.internal.....。 后来发现http://stackoverflow.com/questions/33742114/the-following-classes-could-not-be-fou

Vue3,格式化时间的函数作为组件的方法(methods)、计算属性(computed properties)来使用

确实,在Vue3组件中,你可以将这些用于格式化时间的函数作为组件的方法(methods)来使用,或者更优雅地,作为计算属性(computed properties)来使用,特别是当你需要基于响应式数据动态地格式化时间时。 作为方法(Methods) 在Vue组件的methods对象中定义这些函数,并在模板或其他方法中调用它们。 <template> <div> <p>Formatted

Android 解决 No static method in class La/a/a/a; or its super classes

错误堆栈: Process: com.chaozh.iReader, PID: 24217java.lang.NoSuchMethodError: No static method getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; in class La/a/a/a; or its super

备战S4!想上钻石必须注意的20个细节

英雄联盟S4赛季即将来临,不知道各位小伙伴们做好了准备没有,今天为大家带来英雄联盟决定分段的二十个细节,小编觉得无论是哪个赛季,作为一个优秀的LOL玩家,这20条细节都至关重要。   1、心态   千万不要做情绪选手,良好的心态决定了本场的发挥,20分钟前人头差10个以内都是能够翻盘的,往往坚持到最后的才是赢家。   2、质疑   排位选人的时候,看见队友选了一个非常规英

微积分复习笔记 Calculus Volume 1 - 1.2 Basic Classes of Functions

1.2 Basic Classes of Functions - Calculus Volume 1 | OpenStax

SCALA 集合框架文档翻译-Concrete Mutable Collection Classes

具体可变集合类  英文原文:http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html 上一章已经介绍了 Scala 标准库中最常使用的不可变具体集合类。本文将对具体可变集合类进行说明。 Array Buffers         ArrayBuffer 中保存了

Android方法数methods超过65536

当Android App中的方法数超过65535时,如果往下兼容到低版本设备时,就会报编译错误: Cannot fit requested classes in a single dex file. Try supplying a main-dex list.# methods: 86204 > 65536Message{kind=ERROR, text=Cannot fit request

MATLAB报错:MTIMES is not fully supported for integer classes. At least one input must be scalar.

Error using  *  MTIMES is not fully supported for integer classes. At least one input must be scalar. To compute elementwise TIMES, use TIMES (.*) instead. double型数据 * uint8型数据 会出现上述错误 需要把uint8

Vue的计算属性:methods方法、computed计算属性、watch监听属性

1、methods 方法 在创建的 Vue 应用程序实例中,可以通过 methods 选项定义方法。应用程序实例本身会代理 methods 选项中的所有方法,因此可以像访问 data 数据那样来调用方法。 【实例】在 Vue 应用程序中,使用 methods 选项定义获取用户信息方法和乘法计算方法。 <!DOCTYPE html><html lang="en"><head><meta ch