R一大利器之对象的操作函数查询

对于生物出身的部分生物信息学工程师来说,很多计算机概念让人很头疼,尤其是计算机语言里面的高级对象。我以前学编程的时候,给我一个变量,一个数据,一个hash,我就心满意足了,可以解决大部分我数据处理问题,可事情远比想象之中复杂。因为很多高手喜欢用封装,代码复用,喜欢用高级对象。在R的bioconductor里面尤其是如此,经常会遇到各种包装好的S3,S4对象,看过说明书,倒是知道一些对象里面有什么,可以去如何处理那些对象,提取我们想要的信息,比如我就写过一系列的帖子:

那个时候傻傻的去搜集总结每个对象的操作函数,辛苦死了,一直想有没有地方可以查询这些对象,到底应该用什么函数呢?人怎么能记住一堆函数呢《比如seqnames(),strand(),cigar(),qwidth(),start(),end(),width(),njunc() 这些函数对这个GAlignments对象进行处理》

今天我又遇到了一个LumiBatch对象,也是很复杂,我明明知道里面有基因和探针,但就是拿它没办法:

Summary of data information:
Illumina Inc. BeadStudio version 1.4.0.1
Normalization = none
Array Content = 11188230_100CP_MAGE-ML.XML
Error Model = none
DateTime = 2/3/2005 3:21 PM
Local Settings = en-US

Major Operation History:
submitted finished command lumiVersion
1 2007-04-22 00:08:36 2007-04-22 00:10:36 lumiR("../data/Barnes_gene_profile.txt") 1.1.6
2 2007-04-22 00:10:36 2007-04-22 00:10:38 lumiQ(x.lumi = x.lumi) 1.1.6
3 2007-04-22 00:13:06 2007-04-22 00:13:10 addNuId2lumi(x.lumi = x.lumi, lib = "lumiHumanV1") 1.1.6
4 2007-04-22 00:59:20 2007-04-22 00:59:36 Subsetting 8000 features and 4 samples. 1.1.6

Object Information:
LumiBatch (storageMode: lockedEnvironment)
assayData: 8000 features, 4 samples
element names: beadNum, detection, exprs, se.exprs
protocolData: none
phenoData
sampleNames: A01 A02 B01 B02
varLabels: sampleID label
varMetadata: labelDescription
featureData
featureNames: oZsQEQXp9ccVIlwoQo 9qedFRd_5Cul.ueZeQ ... 33KnLHy.RFaieogAF4 (8000 total)
fvarLabels: TargetID
fvarMetadata: labelDescription
experimentData: use 'experimentData(object)'
Annotation: lumiHumanAll.db
Control Data: Available
QC information: Please run summary(x, 'QC') for details!

看起来极度的复杂,教程里面有提到一些函数可以操作这个对象,用来画图,提取数据,但是不能满足我的需要。搜索了好久,终于找到了解决方法:

这些函数是有规律的,而且这个网站也提供了查询接口,很容易就可以了解每个对象是如何设置的,有哪些属性,定义好了哪些函数可以去操作它。
我需要自己组合 pData(featureData(x.lumi)) 才能从 x.lumi这个对象里面提取到我想要的 ProbeID TargetID
> head(pData(featureData(x.lumi)))
ProbeID TargetID
6450255 6450255 7A5
2570615 2570615 A1BG
6370619 6370619 A1BG
2600039 2600039 A1CF
2650615 2650615 A1CF
5340672 5340672 A1CF
以前就是把说明书给翻烂也找不到!
 而且,你只需要class一下你的对象,就知道它的具体名字,然后用method就可以看到它所有可供操作的函数!
> class(x.lumi)
[1] "LumiBatch"
attr(,"package")
[1] "lumi"
> methods(class='LumiBatch')
[1] $ $<- [ [[ [[<- abstract annotation annotation<-
[9] as.matrix asBigMatrix assayData assayData<- beadNum beadNum<- boxplot classVersion
[17] classVersion<- coerce combine controlData controlData<- density description description<-
[25] detection detection<- dim dimnames dimnames<- dims esApply experimentData
[33] experimentData<- exprs exprs<- fData fData<- featureData featureData<- featureNames
[41] featureNames<- fvarLabels fvarLabels<- fvarMetadata fvarMetadata<- getHistory hist initialize
[49] isCurrent isVersioned makeDataPackage MAplot notes notes<- pairs pData
[57] pData<- phenoData phenoData<- plot preproc preproc<- protocolData protocolData<-
[65] pubMedIds pubMedIds<- rowMedians rowQ sampleNames sampleNames<- se.exprs se.exprs<-
[73] show storageMode storageMode<- summary updateObject updateObjectTo varLabels varLabels<-
[81] varMetadata varMetadata<- write.exprs
see '?methods' for accessing help and source code
>

Comments are closed.