对于生物出身的部分生物信息学工程师来说,很多计算机概念让人很头疼,尤其是计算机语言里面的高级对象。我以前学编程的时候,给我一个变量,一个数据,一个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-USMajor 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.6Object 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!
看起来极度的复杂,教程里面有提到一些函数可以操作这个对象,用来画图,提取数据,但是不能满足我的需要。搜索了好久,终于找到了解决方法:
> 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