SummarizedBenchmark 2.16.0
模拟数据集与已知地面真理往往是用于开发和比较基因组研究的计算工具。然而,方法和方法模拟复杂的基因组数据很少统一研究。认识到这个问题的单细胞RNA-sequencing (scRNA-seq)飞溅包提供了一个统一的API scRNA-seq数据的几个“模拟器”,包括作者的自己的“网格”模拟器(Phipson Zappia和Oshlack 2017)。在飞溅包,给定一组仿真参数,每一个方法返回SingleCellExperiment模拟scRNA-seq计数的对象。
通过比较在(Phipson Zappia和Oshlack 2017),我们说明SummarizedBenchmark框架可以用来执行每个方法的输出时比较更复杂的数字(例如,一个比一个向量SingleCellExperiment)。
模拟器中实现的参数飞溅可以手动指定或使用现有的数据估计。在这里,我们使用RSEM计数高覆盖率样本的一个子集fluidigm
数据集包含在scRNAseq包中。数据是可用的SummarizedExperiment对象。
图书馆(“飞溅”)图书馆(“scRNAseq”)fluidigm < -ReprocessedFluidigmData()se < -fluidigm (,colData(fluidigm),“Coverage_Type”]= =“高”]化验(se) < - - - - - -化验(se) [“rsem_counts”]assayNames(se) < - - - - - -“计数”
这个描述的目的,我们只使用样本和基因的一个子集。
与模拟数据集进行比较容易,我们转换SummarizedExperiment对象的SingleCellExperiment类。
每一个的模拟器飞溅包走(前缀)模拟
命名约定,与相应的参数估计函数,(前缀)估计
。在这里,我们用三种方法包括比较的(Phipson Zappia和Oshlack 2017)。
bd < -BenchDesign()% > %调用addMethod(标签=“网格”,func =splatSimulate,params =rlang::、动荡频仍的(params =splatEstimate(in_data),verbose =in_verbose,种子=in_seed))% > %调用addMethod(标签=“简单”,func =simpleSimulate,params =rlang::、动荡频仍的(params =simpleEstimate(in_data),verbose =in_verbose,种子=in_seed))% > %调用addMethod(标签=“伦”,func =lunSimulate,params =rlang::、动荡频仍的(params =lunEstimate(in_data),verbose =in_verbose,种子=in_seed))
每个模拟器返回一个单身SingleCellExperiment对象包含模拟scRNA-seq计数。然而,以适应SummarizedBenchmark结构,每个方法BenchDesign必须返回一个向量或一个列表。默认情况下,如果方法返回对象不能很容易地强迫一个矩阵结构,输出每个分析捕获和使用相结合rbind
。防止警告印刷,用户可以指定帖子=列表
所有的方法。然而,请注意,这将导致所有方法输出被包裹在一个列表。
使用“计数”
化验的fluidigm
数据集作为输入,我们用三种方法生成的模拟数据。
fluidigm_dat < -列表(in_data =分析(预计,“计数”),in_verbose =假,in_seed =19120128)某人< -buildBench(双相障碍,data =fluidigm_dat)
# #警告有趣(X[[我]],…):# #方法输出不能减少矩阵。
# # # #类:SummarizedBenchmark暗淡:1(1):3 # #元数据会话# #化验(1):默认# # rownames:零构成了rowData名称(1):# # # # colnames违约(3):长条木板简单的lun (7) # # colData名称:函数。pkg func.pkg。更小……参数。种子session.idx
模拟数据集作为一行返回的测定SummarizedBenchmark对象,每一列包含有一个列表SingleCellExperiment对象。
斯普莱# # # # (1)< S4类“SingleCellExperiment”(包“SingleCellExperiment”)与9槽>简单# # # # (1)< S4类“SingleCellExperiment”(包“SingleCellExperiment”)与9槽> # # # # lun [1] < S4类“SingleCellExperiment”(包“SingleCellExperiment”)与9槽>
# # [1]“SingleCellExperiment”“SingleCellExperiment”“SingleCellExperiment”
现在,我们有了自己的组模拟数据集,我们可以比较每个模拟器的行为。幸运的是,飞溅包包括两个有用的功能比较SingleCellExperiment对象(compareSCEs
和diffSCEs
)。的测定SummarizedBenchmark可以直接传递给这些函数。我们也将原件fluidigm
数据集,南加州爱迪生公司
模拟数据集进行比较。
res_compare < -compareSCEs(c(ref =南加州爱迪生公司,分析(某人)1,)))res_diff < -diffSCEs(c(ref =南加州爱迪生公司,分析(某人)1]),ref =“ref”)
而这些功能产生几个指标和情节,我们只包括两个例证。更多细节可以找到这些函数的输出的文档飞溅包中。
虽然(方便)函数已经存在了比较模拟数据集,我们还可以定义比较指标使用SummarizedBenchmark框架与addPerformanceMetrics ()
。我们说明这个功能使用“每个细胞零”和“零/基因”指标如图3所示(Phipson Zappia和Oshlack 2017)。由于每个方法的度量是一个向量(例如0 /细胞)而不是单个值,我们再次使用列表
包装中的输出evalFunction
。
某人< -某人% > %addPerformanceMetric(分析=“默认”,evalMetric =“zerosPerCell”,evalFunction =函数(查询、真理){colMeans(分析(查询[[1]],“计数”)= =0)})% > %addPerformanceMetric(分析=“默认”,evalMetric =“zerosPerGene”,evalFunction =函数(查询、真理){rowMeans(分析(查询[[1]],“计数”)= =0)})
接下来,指标计算使用estimatePerformanceMetrics
。策划,我们只有保持标签
,价值
,performanceMetric
返回表的列。
sbmets < -estimatePerformanceMetrics(某人,整洁的=真正的)sbmets < -dplyr::选择(performanceMetric sbmets、标签、价值)头(sbmets)
值performanceMetric # # 1 # #标签长条木板0.606,0 ....zerosPerCell # 0.7076 # 2简单,....zerosPerCell # 0.3602 # 3 lun, ....zerosPerCell # # 4长条木板0.7、0.4 ....zerosPerGene # # 5简单1 1 0 .....zerosPerGene # # 6 lun 0.7、0.4 ....zerosPerGene
请注意,价值
为每个方法和度量是一个列表。这些向量可以扩展使用tidyr: unnest运算
。
# #警告:“关口”现在使用unnest运算时需要()。# #请使用关口= c(值)的
# # #一个宠物猫:6×3 # #标签值performanceMetric # # <空空的> <双> <科> # 0.606 # 1长条木板zerosPerCell # # 2长条木板0.702 zerosPerCell # # 3长条木板0.588 zerosPerCell # # 4长条木板0.572 zerosPerCell # # 5长条木板zerosPerCell 0.635 0.593 zerosPerCell # # 6长条木板
最后,性能指标可以探索使用标准的绘图功能。
ggplot(sbmetsaes(x =标签,y =值,颜色=标签,填补=标签)+geom_boxplot(α=1/2)+xlab(“方法”)+scale_color_discrete(“方法”)+scale_fill_discrete(“方法”)+facet_grid(performanceMetric~。)+theme_bw()
的一个优势SummarizedBenchmark框架是,运行比较一组新数据调用一样简单buildBench
配合新BenchDesign相同的对象data =
输入。为了说明这一点,我们再次运行相同的模拟器,但仿真参数估计使用单细胞计数数据生成使用一个例子mockSCE
从嘘包中。
图书馆(走开)scec < -mockSCE()scater_dat < -列表(in_data =scec,in_verbose =假,in_seed =19120128)buildBench(双相障碍,data =scater_dat)
# #警告有趣(X[[我]],…):# #方法输出不能减少矩阵。
# # # #类:SummarizedBenchmark暗淡:1(1):3 # #元数据会话# #化验(1):默认# # rownames:零构成了rowData名称(1):# # # # colnames违约(3):长条木板简单的lun (7) # # colData名称:函数。pkg func.pkg。更小……参数。种子session.idx
贝琳达Phipson Zappia,卢克,艾丽西亚Oshlack》2017。“飞溅:Rna单细胞测序数据的模拟。”基因组生物学。https://doi.org/10.1186/s13059 - 017 - 1305 - 0。