内容

1简介

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

MultiDataSet有方法处理三个常见的数据集:基因表达、snp数据和DNA甲基化。基因表达ExpressionSet可以加到MultiDataSet使用add_genexp(用于微阵列)或add_rnaseq(RNAseq)功能。SNP数据可以合并到一个MultiDataSet通过使用函数add_snp.DNA甲基化包裹在aMethylationSet对象可以添加到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添加ProteomeSet最后,我们将通过创建一个MultiDataSet与蛋白质数据。

3.1定义ProteomeSet

我们选择了延伸eSet实现我们的ProteomeSet因为我们可以从中获利eSetS的方法和结构。因此,我们的ProteomeSet还将有表型和特征数据以及检索数据的方法。考虑到eSet的定义,我们应该加载它之前的定义ProteomeSet

library(Biobase) 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 msg <- validMsg(NULL, assayDataValidMembers(assayData(object), c("prots", "raw"))中有槽位'prots'和'raw')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:(character)样本表现型文件的路径。
  • 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 adata的三个文件<- 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")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第二个是ProteomeSet.如果将任何其他类传递给函数,则会返回一个错误。在函数的代码中,我们只看到两行:对的调用add_eset还有对象的返回。

library(MultiDataSet) setMethod(f = "add_prot", signature = c("MultiDataSet", "ProteomeSet"), definition = function(object, protSet, warnings = TRUE,…){##添加给定的ProteomeSet作为'蛋白质组'对象<- MultiDataSet::add_eset(object, protSet, dataset. data)。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函数。这些文件可在稿件的补充材料中找到

##创建蛋白质数据的ProteomeSet ps <- read_ldset(assayFile="assay_data. ")tsv”,phenoFile = " pheno_data。tsv”,featureFile = " feature_data。tsv) ps
## ProteomeSet (storageMode: environment) ## assayData: 5个特性,33个样本##元素名称:prots, raw ##协议数据:none ##表型数据## sampleNames: sp001 sp002…sp035(33总)## varLabels:性别板套件## varMetadata: labelDescription ## featureData ## featureNames:脂联素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)
# #[1]“蛋白质组学”

最后,显示对象提供与存储在对象中的相关的更多信息MultiDataSet

医学博士
## MultiDataSet类的对象assayData: 1 elements ##。蛋白质组学:5个特征,33个样本##。featureData: # #。蛋白质组:5行,3 cols (LoD。T,…,LoD。B) ## . rowRanges: ## . proteome: NO ## . phenoData: ## . proteome: 33 samples, 4 cols (gender, ..., kit)

该集合的名称见(蛋白质组)、蛋白质数量(特征数据中的5行)、样本数量(苯酚数据中的33个样本)和,因为没有农庄提供了,rowRanges没有