MultiDataSet 1.24.0
生物技术的最新进展为生物信息提供了新的来源。因此,开发人员需要创建类来2021欧洲杯体育投注开户正确地存储和管理这些新类型的数据。
MultiDataSet
有方法处理三个常见的数据集:基因表达、snp数据和DNA甲基化。基因表达ExpressionSet
可以添加到MultiDataSet
使用add_genexp
(微阵列)或add_rnaseq
(RNAseq)函数。SNP数据可以合并到一个MultiDataSet
通过使用函数add_snp
.DNA甲基化包裹在一个MethylationSet
对象可以添加到MultiDataSet
使用add_methy
.此外,MultiDataSet
也能够工作与任何其他类的对象基于eSet
或SummarizedExperiment
, Bioconductor框架的两大类。因此,开发人员可以实现扩展的2021欧洲杯体育投注开户方法MultiDataSet
与自己的班级一起工作。
在本文档中,我们将展示如何创建一个新方法,以便向其中添加一个新的对象类MultiDataSet
.这个过程通过创建一个新的类来存储蛋白质组学数据来证明。为此,我们将延长eSet
类。应该注意的是,如果这个类是基于SummarizedExperiment
.
本文档的目的是说明如何创建一个方法,以便向其中添加一个新的对象类MultiDataSet
.本教程适用于开发了新类来管理新omic数据或其他类型信息的软件开发人员2021欧洲杯体育投注开户MultiDataSet
对象。
蛋白质组数据通常表示为蛋白质水平的矩阵。这些数据有一个特殊的特点:由于检测限(LOD)和量化限(LOQ),有些信息无法测量。在执行统计分析时,在数据矩阵中拥有LOD信息是至关重要的。将蛋白质作为结果,需要使用不同于分析基因表达数据的统计方法。LOD使得蛋白质是左截尾变量,因此不可能使用线性回归或t检验等标准分析方法。
处理这类数据可以采用的一种方法是将LOD/2分配给那些低于LOD的值。这将允许用户使用标准包分析蛋白质数据,如limma
该模型使用线性模型。然而,这种方法是有偏见的。已经开发了其他方法来正确分析左截尾变量。这些方法需要知道每个蛋白质的LOD。因此,掌握蛋白质水平和LOD的信息对下游分析至关重要。目前,用LOD存储蛋白质数据的类还不存在。为了解决这个问题,我们建议创建ProteomeSet
的新类eSet
.我们的新类将包含原始蛋白质水平,关于LOD的信息和数据低于LOD等于LOD/2的蛋白质水平。
我们将从定义新类开始:ProteomeSet
.其次,我们将开发一个函数来加载蛋白质数据和LOD到R中,并创建我们的ProteomeSet
.第三,我们将实现一个方法MultiDataSet
添加ProteomeSet
s.最后,我们将通过创建一个MultiDataSet
蛋白质数据。
我们选择了扩展eSet
执行我们的ProteomeSet
因为我们可以从中获利eSet
S的方法和结构。因此,我们的ProteomeSet
还将有表型和特征数据以及检索数据的方法。考虑到eSet
是在Biobase包中定义的,我们应该在定义ProteomeSet
:
library(bioobase) setClass (Class = "ProteomeSet", contains = "eSet", prototype = prototype(new("VersionedBiobase", versions = c(classVersion("eSet"), ProteomeSet = "1.0.0"))))
这ProteomeSet
被定义为另一个eSet
对象。如前所述,蛋白质组数据应该包含一些特定的特征。的setValidity
函数定义了对象必须实现的有效需求。assayData的ProteomeSet
对象应该有两个槽来封装原始数据和修改数据(例如,低于LOD的值替换为LOD/2)。这些插槽将被调用生
而且普罗特
,分别。ProteomeSet
还应包含LOD和LOQ的信息。该数据将从列中获得LoD。T
而且LoD。B
可用为featureData。我们可以通过以下代码行引入这些需求:
setValidity("ProteomeSet", function(object){##检查对象在assayData中是否有槽位'prots'和'raw' msg <- validMsg(NULL, assayDataValidMembers(assayData(object), c("prots", "raw"))) ##检查对象是否有列的LoD。T'和'LoD。B' in featureData msg <- validMsg(msg, ifelse(any(!c("LoD.T", "LoD.B") %in% fvarLabels(object)), "fData must contain columns 'LoD.T' and 'LoD.B'", FALSE)) if (is.null(msg)){ TRUE } else{ msg } })
在这里,我们创建了一个函数,从文本文件加载蛋白质组数据,替换LOD以下和LOQ以上的值,并返回一个ProteomeSet
用可用的数据。修正检测限度一般定义如下:
这个函数read_ldset
将执行此任务。它需要四个参数:
assayFile
:(字符)蛋白质组测量文件的路径。phenoFile
:(字符)样本表型文件的路径。featureFile
:(character)特性注释文件的路径。9月
:(character)以上三个文件的字段分隔符。这三个输入文件必须是TSV样式(TSV:制表符分隔的文件),并且必须包含一个头文件。assayFile
而且phenoFile
必须有一个列叫做样本
使用唯一的示例id。featureFile
必须有一个列叫做功能
对于唯一的特征id,它必须等于assayFile
的列名。此外,featureFile
必须有两个列调用LoD。B
而且LoD。T
,对应LOD (检测下限)及限量(检测上限)。
read_lds
检查分析数据和特征数据中的特征名称是否相同。属性的两列是否为特征数据检测范围.执行两次检查后,read_ldset
用每个蛋白质的最新表达水平创建基质。然后一个ProteomeSet
,包含原始矩阵为生
更新后的矩阵为普罗特
.表型数据和特征注释也包括:
read_ldset <- function(assayFile, phenoFile, featureFile, sep="\t"){##加载将用于创建ProteomeSet的三个文件<- read.delim(assayFile, sep=sep, header=TRUE, row.names="sample") pdata <- read.delim(phenoFile, sep=sep, header=TRUE, row.names="sample") fdata <- read.delim(featureFile, sep=sep, header=TRUE, row.names="feature") ## / ##检查分析数据中的蛋白质在特征数据中是否相同if(! same (colnames(adata),rownames(fdata))) {stop("分析数据(列)中的特征名称不等于","特征数据(列)中的特征名称。")}##/ ##检查特征数据是否包含列LoD。B和LoD。Tif(sum(c("LoD.T", "LoD.B") %in% colnames(fdata)) != 2) { stop("Feature data must contain two columns labeled 'LoD.T' (top ", "limit of dectection) and 'LoD.B (bottom limit of dectection)") } ## / ## Perform the transformation of the protein level of expression low <- fdata[colnames(adata), "LoD.B"] up <- fdata[colnames(adata), "LoD.T"] names(low) <- names(up) <- rownames(fdata) faux <- function(x, low, up) { x[x < low] <- as.double(low / 2) x[x > up] <- as.double(up * 1.5) x } tadata <- mapply(FUN = faux, x = as.list(adata), low = as.list(low), up = as.list(up)) dimnames(tadata) <- dimnames(adata) ## / ## Create the ExpressionSet with the two matrices prot <- new("ProteomeSet", assayData = assayDataNew("environment", prots = t(tadata), raw = t(adata)), phenoData = AnnotatedDataFrame(pdata), featureData = AnnotatedDataFrame(fdata) ) ## / ## Check that the new ProteomeSet is valid validObject(prot) ## / return(prot) }
到目前为止,我们已经开发了一个函数来定义一类新的对象来封装蛋白质组学数据。在本节中,我们将展示如何添加ProteomeSet
对象MultiDataSet
.为此,我们将创建一个添加蛋白质的通用方法(add_prot
)MultiDataSet
以及它的实现add_eset
.
该方法add_prot
为MultiDataSet
将接受两个参数:aMultiDataSet
和一个ProteomeSet
.遵循S4开发规则,一个新的通用方法add_prot
需要设置:
setGeneric("add_prot", function(object, protSet, warnings = TRUE,…)
##[1]“add_prot”
在定义中add_prot
,我们可以看到这个函数的三个主要参数。对象
是MultiDataSet
我们将在哪里添加ProteomeSet
.protSet
是新的ProteomeSet
这将被添加。最后,警告
是一个标志,用于指示是否显示警告。
下面的代码显示了的实现add_prot
.在签名中,我们指定第一个参数应该是aMultiDataSet
第二个aProteomeSet
.如果将任何其他类传递给该函数,则将返回错误。在函数的代码中,我们只看到两行:对add_eset
还有对象的返回。
library(MultiDataSet) setMethod(f = "add_prot", signature = c("MultiDataSet", "ProteomeSet"), definition = function(object, proteset, warnings = TRUE,…){##添加给定的ProteomeSet作为'proteome'对象<- MultiDataSet::add_eset(object, proteset, dataset. .)type = "proteome", GRanges = NA,…)## / return(object)})
基本方法add_eset
用于添加eSet
派生类对MultiDataSet
并接受了几个论点。其中四个用于实现add_prot
.如上所述,第一个和第二个是MultiDataSet
对象的蛋白质将添加和ProteomeSet
用蛋白质数据。第三,dataset.type
,用于标记组学数据的类型add_prot
增加了MultiDataSet
.此参数被设置为“蛋白质组学”
在add_prot
,“表情”
在add_genexp
而且“单核苷酸多态性
在add_snps
.第四个论点,农庄
设置为NA
.这个参数可以接受两种类型的值农庄
对象的等效内容fData
包括在ExpressionSet
或NA
以防没有基因组坐标可用于集合的特征。在这种情况下,因为我们研究的是蛋白质,所以没有给出基因组坐标。
出于说明目的,我们已经创建了三个tsv-dummy文件,它们将在下面的代码中用于创建ProteomeSet
使用read_ldset
函数。这些文件可以在稿件的补充材料中找到
##用蛋白质数据ps创建一个ProteomeSet <- read_ldset(assayFile="assay_data. ps ")tsv”,phenoFile = " pheno_data。tsv”,featureFile = " feature_data。Tsv”)ps
## ProteomeSet (storageMode: environment) ## assayData: 5个特征,33个样本##元素名称:prots, raw ## protocolData: none ##表型数据## sampleNames: sp001 sp002…sp035(33总)## varLabels:性别板试剂盒## varMetadata: labelDescription ## featureData ## featurename:脂联素CRP…13日。E (5 total) ## fvarLabels: LoD。T LoD。Bunit ## fvarMetadata: labelDescription ## experimentData: use 'experimentData(object)' ## Annotation:
创建的对象ps
是一个ProteomeSet
它包含两个元素普罗特
而且生
.此外,ps
的特征数据包含两列LoD。B
而且LoD。T
.
既然蛋白质组数据已经加载并存储在ProteomeSet
,我们可以把它添加到一个新的MultiDataSet
.MultiDataSet
对象可以使用构造函数创建createMultiDataSet
.然后是方法add_prot
用于包括蛋白质组数据到医学博士
:
md <- createMultiDataSet() md <- add_prot(md, ps)
该方法的名字
的MultiDataSet
控件中存储的数据集MultiDataSet
.MultiDataSet
存储按数据类型调用的数据集。
名(md)
“蛋白质组”
最后,显示对象的值给出了存储在对象中的更多相关信息MultiDataSet
:
医学博士
MultiDataSet类的对象assayData: 1元素##。蛋白质组:5个特征,33个样本##。featureData: ##。蛋白质组:5行,3 cols (LoD。T,…,LoD。B) ## . rowRanges: ## . proteome: NO ## . phenoData: ## . proteome: 33 samples, 4 cols (gender, ..., kit)
集合的名称显示为(蛋白质组
),蛋白质数量(特征数据中为5行),样本数量(pheno数据中为33个样本),由于没有农庄
提供了,rowRanges
是没有
.