内容

Metaviz是宏基因组测序数据的交互式可视化和探索工具。Metaviz提供了主要的导航工具,用于探索分层特征数据,并与多种数据可视化(包括热图、堆叠柱状图和散点图)相结合。Metaviz支持灵活的插件框架,因此用户可以添加新的插件d3可视化。有关Metaviz的更多信息,请访问http://metaviz.cbcb.umd.edu/help

metavizr类之间的双向通信R / Bioconductor计算基因组学环境和Metaviz.对象中的对象R / Bioconductor控件可以可视化和浏览会话Metaviz导航工具和绘图。Metavizr使用Websockets在浏览器Javascript客户端和R / Bioconductor会话。Websockets是流行协议的基础闪亮的用R编写交互式基于web的报告的系统。

1初步:数据

在这篇短文中,我们将看到两个数据集,一个来自病例/对照研究,另一个来自时间序列。中加载第一个数据集msd16sBioconductor包。这些数据来自对孟加拉国、肯尼亚、马里和冈比亚四个国家的儿童进行的中重度腹泻病研究。从每个国家收集病例和对照粪便样本,年龄范围为0-6个月、6-12个月、12-18个月、18-24个月和24-60个月。popet al.[1]中描述了对该数据的分析。

需要(metavizr)需要(metagenomeSeq)需要(msd16s)

2metavizr会话管理器

联系Metaviz是否通过类的会话管理器对象进行管理EpivizApp.我们可以创建这个对象并打开Metaviz使用startMetaviz函数。

app <- startMetaviz()

注意:在构建小插图时,以下命令不可见。这些命令用于注册每种图表类型,以便在使用localhost启动新的Metaviz会话时构建小插画。如果使用,则不需要这些命令startMetaviz使用默认启动Metaviz会话http://metaviz.cbcb.umd.edu

这将打开一个websocket连接R会话和浏览器客户端。这将允许我们可视化存储在Metaviz服务器与数据一起进行交互R会话。


Windows用户:在Windows平台中,我们需要使用服务功能让交互R会话连接到epivizWeb应用程序和服务数据请求。然后我们转义(使用ctl-cesc这取决于你的环境)来继续互动R会话。这在任何时候都是必需的metavizr为web应用程序提供数据,例如,当与UI交互时。(我们正在积极开发对Windows平台上非阻塞会话的支持)。

应用服务器服务()美元

为了便于描述,我们将把992划分为子集msd16s孟加拉国301份样品。此外,我们将把计数矩阵聚合到物种级别。我们发现,在使用WebSockets的R会话中,100个样本和4000个特征的矩阵大小在交互可视化方面表现良好。对于较大的丰度矩阵,我们建议使用图数据库后端https://github.com/epiviz/metaviz-data-provider.一旦有了数据子集,我们将聚合级别设置为“类”,规范化,找到“类”级别上差异丰富的特征,将这些选择传播到聚合到“物种”级别的mreexperiment,然后探索层次结构。

feature_order <- c("superkingdom", "phylum", "class", "order", "family", "genus", "species", "OTU") aggregated_feature_order <- feature_order[1:7] msd16s_species <- msd16s fData(msd16s)[feature_order] fData(msd16s) <- fData(msd16s_species)[aggregated_feature_order] bangladesh <- msd16s[, (pData(msd16s)$Country == " bangladesh ")]孟加拉国物种<- msd16s[,which(pData(msd16s_species)$Country == "Bangladesh")] aggregated_species <- cumNorm(aggregateByTaxonomy(bengesh_species, lvl="species"), p = 0.75) aggregation_level <- "class" aggregated_bangladesh <- aggregated_bangladesh (Bangladesh, lvl=aggregation_level) normed_bangladesh <- cumNorm(aggregated_bangladesh, p = 0.75)孟加拉国sample_data <- pData(normed_bangladesh) mod <- model。matrix(~1+ dytery, data =孟加拉国,sample_data) results_bangladesh <- fitFeatureModel(normed_bangladesh, mod)
##警告:glm。拟合:算法未收敛
##警告:glm。拟合:数值为0或1的拟合概率
logFC_bangladesh <- MRcoefs(results_bangladesh, number = nrow(normed_bangladesh)) features <- rownames(logFC_bangladesh) featuresToKeep_names <- features[which(logFC_bangladesh[which(abs(logFC_bangladesh$logFC) > 1),]$adjPvalues < .1)] featuresToKeep <- rep(2, length(featuresToKeep_names)) names(featuresToKeep) <- featuresToKeep_names featuresToRemove_names <- features[!(features %in% featuresToKeep_names)] featuresToRemove <- rep(0, length(featuresToRemove_names)) names(featuresToRemove) <- featuresToRemove_names . (features %in% featuresToKeep_names)

metavizControl允许用户指定在mreexperiment对象上操作的设置,包括数据分析,如规范化和日志转换。我们创建了一个metavizControl,其中featuresselection作为发现差异丰度的节点,这些节点在创建Metaviz图时是可见的。metavizControl中的其余设置将使用默认参数。

control <- metavizr::metavizControl(featuresselection = c(featuresToKeep, featuresToRemove))

3.添加Icicle导航小部件以探索宏基因组特征

一旦浏览器打开,我们可以可视化宏基因组的特征mouseData对象。我们使用情节方法来这样做。的情节函数可以接受在epivirData中注册的任何类作为输入。

icicle_plot <- app$plot(aggregated_species, datasource_name="mmssdd", type =" LeafCounts", control = control, feature_order = aggregated_feature_order)
##实验对象已验证…通过
##创建hierarchy_tree
##创建node_ids_table
##创建节点表
##创建leaf_of_table
##创建leaf_sample_count_table

的宏基因组特征的层次结构,您现在应该看到一个icicle小部件mouseData对象。为了导航特征空间的复杂层次结构,我们开发了一个冰柱/facet缩放可视化。由于屏幕尺寸和渲染大型树的性能的限制,冰柱图是导航树的有效可视化方法。冰柱可视化有助于放大和缩小树和遍历子树。冰柱上的每个节点都有一个与之相关的状态。节点有三种可能的状态:1)展开—在分析过程中使用所有子树节点2)崩溃—将子树下的所有节点聚集到选定的节点3)移除—丢弃子树中用于分析的所有节点。节点的状态也会传播给它的所有子节点,并且可以通过节点的不透明度来识别。行级控件可用于在冰柱的左侧设置层次结构中选定深度/分类类上的所有节点的状态。如果行控件的两端是v形,则冰柱是可穿越的。用户可以在节点上设置状态,以定义特征空间上的切割。 The cut defines how the count data is queried, analyzed and visualized in other plots like heat maps or stacked line plots. In addition to defining the cut, we also have a navigation bar on top of the icicle to limit the range of features when querying for count data. Navigation bar is a flexible component (increase/decrease the length) and controls are available to move the bar left/right and extend over the entire range of the current tree in the icicle. Each of these actions would query the count data and automatically propagate the changes to other visualizations in the workspace. When navigating outside the scope of the navigation bar, chevrons (left/right) appear on the navigation bar to help identify the current position. Brushing/hovering is another important visual element we focused on our implementation of an icicle. Hovering over a node hovers its path in the tree i.e. highlight both its parents and children. When there are other visualizations like heat maps or stacked line plots in the workspace, hovering over a chart element highlights the mapped feature nodes in all the other plots.

4控件中的计数数据可视化mouseDataMRExperiment对象

现在我们可以将数据视为热图调用revisualize

heatmap <- app$chart_mgr$ revisalize (chart_type = "HeatmapPlot", chart = icicle_plot)

使用相同的数据,我们还可以在堆叠图中重新修改它,以查看样本中各种特征的丰度。由于度量是在创建icicle_plot时添加的,所以我们只需要添加一个堆叠的线形图。

<- app$chart_mgr$ revisalize (chart_type ="StackedLinePlot", chart = icicle_plot)

最后,我们可以更新我们对折叠变化的阈值截断,将这些修改传递给冰柱图,并查看更新传播到热图和堆叠图。这显示了统计引导交互式可视化的用例。

feature_names_update < - rownames (logFC_bangladesh [(logFC_bangladesh[这(abs (logFC_bangladesh logFC美元)> 0。5),]adjPvalues < . 05),美元])fSelection_update < -代表(2,长度(feature_names_update))的名字(fSelection_update) < - feature_names_update agg_level = (feature_order = = aggregation_level) select_value = 2名(select_value) = agg_level应用get_ms_object美元(icicle_plot)美元propagateHierarchyChanges (fSelection_update, selectedLevels = select_value request_with_labels = TRUE)

5纵向数据分析

metavizr的另一个特性是使用折线图可视化数据。我们详细介绍了执行此分析的步骤,并使用Paulson等人在使用平滑样条[2]和[3]分析此时间序列数据时使用的Metaviz创建线状图。

首先,导入etec16s数据集,选择前9天的样本数据,并选择感兴趣的特性注释。

library(etec16s) data(etec16s) etec16s <- etec16s[,-which(pData(etec16s)$Day>9)]

接下来,使用metagenomeSeq对时间序列数据拟合平滑样条。

featureData(etec16s)$Kingdom <- "细菌" feature_order <- c("王国","门","纲","目","科","属","种","OTU.ID") featureData(etec16s) <- featureData(etec16s)[,feature_order]

为了使用Metaviz绘制数据,我们将拟合值设置为y坐标,将时间点设置为x坐标。我们需要打电话ts2MRexperiment使用示例数据和特征数据的参数,在本例中分别是时间点和注释。这是在的构造函数中完成的EpivizMetagenomicsDataTimeSeries-class.最后,我们添加了mre实验作为测量使用add_measurements方法,然后将这些测量结果可视化为LinePlot。

ic_plot <- app$plot(object = etec16s, type =" TimeSeries", datasource_name =" etec_splines", control = metavizControl(norm=FALSE, aggregateAtDepth = 4), formula = abundance~id + time*class + AntiGiven, class="AnyDayDiarrhea", id="SubjectID", time="Day", lvl="Family", feature_order = feature_order, B=1, seed = 1234, runFitTimeSeries = TRUE, fitThreshold = 2)
##加载所需的命名空间:gss
##实验对象已验证…通过
##创建hierarchy_tree
##创建node_ids_table
##创建节点表
##创建leaf_of_table
##创建leaf_sample_count_table
splineChart <- app$chart_mgr$ revisalize ("LinePlot", ic_plot)

我们可以在样条图上更新颜色和设置。例如,我们将y轴限制在-10到10之间。为此,我们使用set_chart_settings方法。控件列出图表的现有设置list_chart_settings函数。

## type js_class ## 1 HeatmapPlot epiviz.plugins.charts.LinePlot ## 3 StackedLinePlot epiviz.plugins.charts.StackedLinePlot ## 4 epiviz.ui.charts.tree.Icicle epiviz.ui.charts.tree.Icicle ## num_settings ## 1 17 ## 2 16 ## 3 14 ## 4 5 ## settings ## 1 title,marginTop,marginBottom,marginLeft,marginRight,measurementGroupsAggregator,…## 2标题,marginTop,marginBottom,marginLeft,marginRight,measurementGroupsAggregator,…## 3标题,marginTop,marginBottom,marginLeft,marginRight,measurementGroupsAggregator,…## 4标题,marginTop,marginBottom,marginLeft,marginRight ## num_colors ## 1 8 ## 2 20 ## 3 20 ## 4 10
default_value # # 1 # # id标签标题标题# # 2 marginTop上边距30 # # 3 marginBottom下边距50 # # 4 marginLeft左边框30 # # 5 marginRight右边距15 # # 6 measurementGroupsAggregator聚合器测量组mean-stdev # # 7 colLabel列标签colLabel # # 8 rowLabel行标签名称# # 9 showPoints展示分假# # 10 showLines展示真正的# # 11 showErrorBars行显示误差线真正的# # 12 pointRadius点半径4 # # 13 lineThickness线厚度3 # # 14yMin分钟Y默认15 yMax Max Y默认的# # # # # # 16插值插值基础possible_values # # 1 # # 2 # # 3 # # 4 # # 5 # # 6 mean-stdev,四分位数,统计,Min,马克斯,# #和7 # # 8 # 9 # 10 # 11 # # # 12 # # 13 # # 14 # # 15 # # 16线性阶段,一步之后,基础,basis-open, basis-closed,包,红衣主教,cardinal-open,单调的# # # # # # 1型字符串2号# # 3号# # 4号# # 5号# # 6直言# # 7 measurementsMetadata measurementsAnnotation 8 # # # # 9布尔# # 10布尔# # 11Boolean ## 12 number ## 13 number ## 14 number ## 15 number ## 16 category
花键metavizr

花键metavizr

6使用curatedMetagenomicData的数据可视化整个宏基因组鸟枪测序

除了标记基因调查测序结果,Metaviz还可以从整个宏基因组鸟枪测序中可视化分类群落概况。为了展示这一实用功能,我们将在Bioconductor 2017研讨会中使用小插图的部分:https://github.com/waldronlab/MicrobiomeWorkshop.我们首先检索一个名为Zeller_2014从curatedMetagenomicData,并将包含丰度测量的表达集转换为mre实验,然后我们将与Metaviz一起使用。

##加载所需的包:ExperimentHub
##加载所需包:AnnotationHub
##加载所需包:BiocFileCache
##加载所需的包:dbplyr
## ##附加包:'AnnotationHub'
下面的对象从'package:Biobase'屏蔽:## ##缓存
##加载所需的包:tidyr
## ##附加包:“tidyr”
以下对象从'package:Matrix'中屏蔽:## ## expand, pack, unpack
## snapshotDate(): 2022-04-19
参见curatedMetagenomicData和browseVignettes('curatedMetagenomicData')获取文档
##从缓存加载

我们将mrex实验添加到Metaviz应用程序中,并调用情节指定type = " innerNodeCounts "。

##实验对象已验证…通过
##创建hierarchy_tree
##创建node_ids_table
##创建节点表
##创建leaf_sample_count_table

的分类层次结构现在可见FacetZoom实用程序Zeller_2014数据集。现在我们可以添加一个热图来测量该数据的丰度。

FacetZoom控件可用于选择感兴趣的特征,以显示在链接的热图中。用户可以在分类层次结构的较低级别上进行探索,并根据需要从数据可视化中删除节点。我们完成后,所有的图表都可以通过调用Metaviz应用程序图表管理器来删除。

6.0.1中关闭Metavizr并结束会话

要关闭与metaviz和R会话的连接,我们使用stop_app函数。

应用stop_app美元()

6.0.2SessionInfo

sessionInfo ()
## R版本4.2.0 RC (2022-04-19 r82224) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.4 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.15-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.15-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils datasets methods ##[8]基础## ##其他附加包:# # # # [1] curatedMetagenomicData_3.3.4 TreeSummarizedExperiment_2.4.0 [3] Biostrings_2.64.0 XVector_0.36.0 # # [5] SingleCellExperiment_1.18.0 SummarizedExperiment_1.26.0 # # [7] GenomicRanges_1.48.0 GenomeInfoDb_1.32.0 # # [9] IRanges_2.30.0 S4Vectors_0.34.0 # # [11] MatrixGenerics_1.8.0 matrixStats_0.62.0 # # [13] tidyr_1.2.0 ExperimentHub_2.4.0 # # [15] AnnotationHub_3.4.0 BiocFileCache_2.4.0 # # [17] dbplyr_2.1.1 etec16s_1.23.0 # # [19] msd16s_1.15.0 metavizr_1.20.0 # # [21] digest_0.6.29data.table_1.14.2 ## [23] metagenomeSeq_1.38.0 RColorBrewer_1.1-3 ## [25] glmnet_4.1-4 Matrix_1.4-1 ## [27] limma_3.52.0 Biobase_2.56.0 ## [29] BiocGenerics_0.42.0 BiocStyle_2.24.0 ## ##通过命名空间加载(并且没有附加):# # # # [1] utf8_1.2.2 tidyselect_1.1.2 [3] RSQLite_2.2.12 AnnotationDbi_1.58.0 # # [5] grid_4.2.0 BiocParallel_1.30.0 # # [7] ScaledMatrix_1.4.0 munsell_0.5.0 # # [9] codetools_0.2-18 withr_2.5.0 # # [11] colorspace_2.0-3 filelock_1.0.2 # # [13] OrganismDbi_1.38.0 phyloseq_1.40.0 # # [15] knitr_1.38 GenomeInfoDbData_1.2.8 # # [17] bit64_4.0.5 rhdf5_2.40.0 # # [19] vctrs_0.4.1 treeio_1.20.0 # # [21] generics_0.1.2 xfun_0.30 # # [23] R6_2.5.1 ggbeeswarm_0.6.0 # # [25] rsvd_1.0.5 locfit_1.5 - 9.5 # # [27][31] DelayedArray_0.22.0 assertthat_0.2.1 ## [33] promises_1.2.0.1 BiocIO_1.6.0 ## [37] gtable_0.3.0 beachmat_0.12.0 ## [41] splines_4.2.0 rtracklayer_1.1.6.0 ## [43] lazyeval_0.2.2 epivizrData_1.24.0 ## [45] BiocManager_1.30.17 yaml_2.3.5 ## [49] httpuv_1.6.5 RBGL_1.72.0 ## [51] tools_4.2.0 ##bookdown_0.26 # # [53] ggplot2_3.3.5 decontam_1.16.0 # # [55] ellipsis_0.3.2 gplots_3.1.3 # # [57] jquerylib_0.1.4 biomformat_1.24.0 # # [59] MultiAssayExperiment_1.22.0 Rcpp_1.0.8.3 # # [61] plyr_1.8.7 sparseMatrixStats_1.8.0 # # [63] progress_1.2.2 zlibbioc_1.42.0 # # [65] purrr_0.3.4 rcurl_1.98 - 1.6 # # [67] prettyunits_1.1.1 Wrench_1.14.0 # # [69] viridis_0.6.2 epivizrStandalone_1.24.0 # # [71] ggrepel_0.9.1 cluster_2.1.3 # # [73] DECIPHER_2.24.0 magrittr_2.0.3 # # [75] ProtGenerics_1.28.0 hms_1.1.1 # # [77] mime_0.12 evaluate_0.15 ## [79] xtable_1.8-4 XML_3.99-0.9 ## [81] gridExtra_2.3 shape_1.4.6 ## [83] compiler_4.2.0 biomaRt_2.52.0 ## [85] scater_1.24.0 gss_2.2-3 ## [87] tibble_3.1.6 KernSmooth_2.23-20 ## [89] crayon_1.5.1 htmltools_0.5.2 ## [91] mgcv_1.8-40 later_1.3.0 ## [93] DBI_1.1.2 MASS_7.3-57 ## [95] rappdirs_0.3.3 ade4_1.7-19 ## [97] epivizrServer_1.24.0 permute_0.9-7 ## [99] cli_3.3.0 parallel_4.2.0 ## [101] igraph_1.3.1 pkgconfig_2.0.3 ## [103] GenomicAlignments_1.32.0 scuttle_1.6.0 ## [105] xml2_1.3.3 foreach_1.5.2 ## [107] DirichletMultinomial_1.38.0 vipor_0.4.5 ## [109] bslib_0.3.1 multtest_2.52.0 ## [111] mia_1.4.0 yulab.utils_0.0.4 ## [113] stringr_1.4.0 vegan_2.6-2 ## [115] graph_1.74.0 rmarkdown_2.14 ## [117] tidytree_0.3.9 epivizr_2.26.0 ## [119] DelayedMatrixStats_1.18.0 restfulr_0.0.13 ## [121] curl_4.3.2 shiny_1.7.1 ## [123] Rsamtools_2.12.0 gtools_3.9.2 ## [125] rjson_0.2.21 lifecycle_1.0.1 ## [127] nlme_3.1-157 jsonlite_1.8.0 ## [129] Rhdf5lib_1.18.0 BiocNeighbors_1.14.0 ## [131] viridisLite_0.4.0 fansi_1.0.3 ## [133] pillar_1.7.0 lattice_0.20-45 ## [135] KEGGREST_1.36.0 fastmap_1.1.0 ## [137] httr_1.4.2 survival_3.3-1 ## [139] interactiveDisplayBase_1.34.0 glue_1.6.2 ## [141] png_0.1-7 iterators_1.0.14 ## [143] BiocVersion_3.15.2 bit_4.0.4 ## [145] stringi_1.7.6 sass_0.4.1 ## [147] blob_1.2.3 BiocSingular_1.12.0 ## [149] caTools_1.18.2 memoise_2.0.1 ## [151] dplyr_1.0.8 irlba_2.3.5 ## [153] ape_5.6-2

引用:

[1] Pop, M., Walker, a.w., Paulson, J., Lindsay, B., Antonio, M., hosssain, m.a., Oundo, J., Tamboura, B., Mai, V., Astrovskaya, I.和Bravo, h.c., 2014。低收入国家的幼儿腹泻会导致肠道菌群组成的大规模改变。生物工程学报,15(6),p.1。

[2] Pop, M., Paulson, J.N., Chakraborty, S., Astrovskaya, I., Lindsay, B.R., Li, S., Bravo, H.C., Harro, C., Parkhill, J., Walker, A.W.和Walker, r.i., 2016。人肠道菌群在与产肠毒素大肠杆菌挑战和随后环丙沙星治疗后的个体特异性变化。中国生物医学工程学报,17(1),p.1。

[3] Paulson J.N, Talukder H.,和Bravo H.C,使用平滑样条进行微生物标记基因调查的纵向差异丰度分析。在提交。