内容

1简介

生物技术的最新进展为生物信息提供了新的来源。因此,开发人员需要创建类来2021欧洲杯体育投注开户正确地存储和管理这些新类型的数据。

MultiDataSet有方法处理三个常见的数据集:基因表达、snp数据和DNA甲基化。基因表达ExpressionSet可以添加到MultiDataSet使用add_genexp(微阵列)或add_rnaseq(RNAseq)函数。SNP数据可以合并到一个MultiDataSet通过使用函数add_snp.DNA甲基化包裹在一个MethylationSet对象可以添加到MultiDataSet使用add_methy.此外,MultiDataSet也能够工作与任何其他类的对象基于eSetSummarizedExperiment, Bioconductor框架的两大类。因此,开发人员可以实现扩展的2021欧洲杯体育投注开户方法MultiDataSet与自己的班级一起工作。

在本文档中,我们将展示如何创建一个新方法,以便向其中添加一个新的对象类MultiDataSet.这个过程通过创建一个新的类来存储蛋白质组学数据来证明。为此,我们将延长eSet类。应该注意的是,如果这个类是基于SummarizedExperiment

2客观的

本文档的目的是说明如何创建一个方法,以便向其中添加一个新的对象类MultiDataSet.本教程适用于开发了新类来管理新omic数据或其他类型信息的软件开发人员2021欧洲杯体育投注开户MultiDataSet对象。

3.实现

蛋白质组数据通常表示为蛋白质水平的矩阵。这些数据有一个特殊的特点:由于检测限(LOD)和量化限(LOQ),有些信息无法测量。在执行统计分析时,在数据矩阵中拥有LOD信息是至关重要的。将蛋白质作为结果,需要使用不同于分析基因表达数据的统计方法。LOD使得蛋白质是左截尾变量,因此不可能使用线性回归或t检验等标准分析方法。

处理这类数据可以采用的一种方法是将LOD/2分配给那些低于LOD的值。这将允许用户使用标准包分析蛋白质数据,如limma该模型使用线性模型。然而,这种方法是有偏见的。已经开发了其他方法来正确分析左截尾变量。这些方法需要知道每个蛋白质的LOD。因此,掌握蛋白质水平和LOD的信息对下游分析至关重要。目前,用LOD存储蛋白质数据的类还不存在。为了解决这个问题,我们建议创建ProteomeSet的新类eSet.我们的新类将包含原始蛋白质水平,关于LOD的信息和数据低于LOD等于LOD/2的蛋白质水平。

我们将从定义新类开始:ProteomeSet.其次,我们将开发一个函数来加载蛋白质数据和LOD到R中,并创建我们的ProteomeSet.第三,我们将实现一个方法MultiDataSet添加ProteomeSets.最后,我们将通过创建一个MultiDataSet蛋白质数据。

3.1定义ProteomeSet

我们选择了扩展eSet执行我们的ProteomeSet因为我们可以从中获利eSetS的方法和结构。因此,我们的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 } })

在本小节中,我们已经介绍了扩展基于eSet.对更高级特性感兴趣的读者可以找到关于扩展的更多信息R类和扩展eset

3.2加载蛋白质组数据

在这里,我们创建了一个函数,从文本文件加载蛋白质组数据,替换LOD以下和LOQ以上的值,并返回一个ProteomeSet用可用的数据。修正检测限度一般定义如下:

  1. 如果蛋白的表达量低于LOD,则用LOD/2代替。
  2. 如果某个蛋白的表达量高于其LOQ,则用LOQ*1.5代替。

这个函数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) }

3.3延长MultiDataSet

到目前为止,我们已经开发了一个函数来定义一类新的对象来封装蛋白质组学数据。在本节中,我们将展示如何添加ProteomeSet对象MultiDataSet.为此,我们将创建一个添加蛋白质的通用方法(add_prot)MultiDataSet以及它的实现add_eset

该方法add_protMultiDataSet将接受两个参数:aMultiDataSet和一个ProteomeSet.遵循S4开发规则,一个新的通用方法add_prot需要设置:

setGeneric("add_prot", function(object, protSet, warnings = TRUE,…)
##[1]“add_prot”

在定义中add_prot,我们可以看到这个函数的三个主要参数。对象MultiDataSet我们将在哪里添加ProteomeSetprotSet是新的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包括在ExpressionSetNA以防没有基因组坐标可用于集合的特征。在这种情况下,因为我们研究的是蛋白质,所以没有给出基因组坐标。

3.4数据示例:向MultiDataSet对象中添加Proteome数据

出于说明目的,我们已经创建了三个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,我们可以把它添加到一个新的MultiDataSetMultiDataSet对象可以使用构造函数创建createMultiDataSet.然后是方法add_prot用于包括蛋白质组数据到医学博士

md <- createMultiDataSet() md <- add_prot(md, ps)

该方法的名字MultiDataSet控件中存储的数据集MultiDataSetMultiDataSet存储按数据类型调用的数据集。

名(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没有