TreeSummarizedExperiment 2.6.0
TreeSummarizedExperiment
对象多个TreeSummarizedExperiemnt
对象(谢霆锋)可结合使用rbind
或cbind
.这里,我们创建了一个玩具TreeSummarizedExperiment
对象使用makeTSE ()
(见? makeTSE ()
).由于树中的行/列槽是使用随机生成的树猿:rtree ()
,set.seed ()
用于创建可重复的结果。
库(treesummarizeexperiment) set.seed(1) # TSE:没有列树(tse_a <- makeTSE(包括。colTree = FALSE))
##类:treesummarizeexperiment ## dim: 10 4 ##元数据(0):## assays(1): " ## rownames(10): entity1 entity2…entity9 entity10 ## rowData names(2): var1 var2 ## colnames(4): sample1 sample2 sample3 sample4 ## colData names(2): ID group ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## rowLinks: a LinkDataFrame(10行)## rowTree: 1 phylo tree(10个叶子)## colLinks: NULL ## colTree: NULL
#通过行合并两个tse (tse_aa <- rbind(tse_a, tse_a))
##类:treesummarizeexperiment ## dim: 20 4 ##元数据(0):## assays(1):“## rownames(20): entity1 entity2…entity9 entity10 ## rowData names(2): var1 var2 ## colnames(4): sample1 sample2 sample3 sample4 ## colData names(2): ID group ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## rowLinks: a LinkDataFrame(20行)## rowTree: 1 phylo tree(10个叶子)## colLinks: NULL ## colTree: NULL
生成的tse_aa
有20行,是它的两倍tse_a
.的行树tse_aa
和里面的一样吗tse_a
.
相同的(rowTree (tse_aa) rowTree (tse_a))
##[1]真
如果我们rbind
两个tse(例如,tse_a
而且tse_b
),得到的TSE(例如,tse_ab
)将有两行树。
set.seed(2) tse_b <- makeTSE(包括。colTree= FALSE) # different row trees identical(rowTree(tse_a), rowTree(tse_b))
## [1] false
# 2 rowTree中的phylo树(tse_ab <- rbind(tse_a, tse_b))
##类:treesummarizeexperiment ## dim: 20 4 ##元数据(0):## assays(1):“## rownames(20): entity1 entity2…entity9 entity10 ## rowData names(2): var1 var2 ## colnames(4): sample1 sample2 sample3 sample4 ## colData names(2): ID group ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## rowLinks: a LinkDataFrame(20行)## rowTree: 2 phylo tree(20叶)## colLinks: NULL ## colTree: NULL
在行链接数据中whichTree
列提供有关行映射到哪棵树的信息。为tse_aa
,只有一棵树名叫phylo
.然而,对于tse_ab
,有两棵树(phylo
而且phylo.1
).
rowLinks (tse_aa)
## nodeLab nodeLab_alias nodeNum isLeaf entitree ## <字符> <字符> <整数> <逻辑> <字符> ## entity1 entity1 alias_1 1 TRUE phylo ## entity2 entity2 alias_2 2 TRUE phylo ## entity3 entity3 alias_3 3 TRUE phylo ## entity4 entity4 alias_4 4 TRUE phylo ## entity5 entity5 alias_5 TRUE phylo ## ... ... ... ... ... ...## entity6 entity6 alias_6 6 TRUE phylo ## entity7 entity7 alias_7 7 TRUE phylo ## entity8 entity8 alias_8 8 TRUE phylo ## entity9 entity9 alias_9 9 TRUE phylo ## entity10 entity10 alias_10 10 TRUE phylo
rowLinks (tse_ab)
## nodeLab nodeLab_alias nodeNum isLeaf entitree ## <字符> <字符> <整数> <逻辑> <字符> ## entity1 entity1 alias_1 1 TRUE phylo ## entity2 entity2 alias_2 2 TRUE phylo ## entity3 entity3 alias_3 3 TRUE phylo ## entity4 entity4 alias_4 4 TRUE phylo ## entity5 entity5 alias_5 TRUE phylo ## ... ... ... ... ... ...## entity6 entity6 alias_6 6 TRUE phylo。1## entity7 entity7 alias_7 7 TRUE phylo.1 ## entity8 entity8 alias_8 8 TRUE phylo.1 ## entity9 entity9 alias_9 9 TRUE phylo.1 ## entity10 entity10 alias_10 10 TRUE phylo.1
树的名称可以使用rowTreeNames
.如果输入谢霆锋用同样的名字来称呼树,rbind
将自动创建有效和唯一的名称树使用make.names
.tse_a
而且tse_b
都使用phylo
作为行树的名称。在tse_ab
的行树tse_b
命名为phylo.1
代替。
rowTreeNames (tse_aa)
##[1]“phylo”
rowTreeNames (tse_ab)
##[1]“phylo”“phylo.1”
#输入TSEs中rowTreeNames(tse_a)中的原始树名
##[1]“phylo”
rowTreeNames (tse_b)
##[1]“phylo”
一旦树的名称被更改,列whichTree
在rowLinks ()
相应更新。
rowTreeNames(tse_ab) <- paste0("tree", 1:2) rowLinks(tse_ab)
## LinkDataFrame with 20 row and 5 columns ## nodeLab nodeLab_alias nodeNum isLeaf entitree ## <字符> <字符> <逻辑> <字符> ## entity1 entity1 alias_1 1 TRUE tree1 ## entity2 entity2 alias_2 2 TRUE tree1 ## entity3 entity3 alias_3 3 TRUE tree1 ## entity4 entity4 alias_4 4 TRUE tree1 ## entity5 entity5 alias_5 TRUE tree1 ## ... ... ... ... ... ...## entity6 entity6 alias_6 6 TRUE tree2 ## entity7 entity7 alias_7 7 TRUE tree2 ## entity8 entity8 alias_8 8 TRUE tree2 ## entity9 entity9 alias_9 9 TRUE tree2 ## entity10 entity10 alias_10 10 TRUE tree2
运行cbind
,谢霆锋S在行维数上应该一致。如果谢霆锋S只在行树中不同,行树和行链接数据被删除。
cbind (tse_a tse_a)
##类:treesummarizeexperiment ## dim: 10 8 ##元数据(0):## assays(1): " ## rownames(10): entity1 entity2…entity9 entity10 ## rowData names(2): var1 var2 ## colnames(8): sample1sample3 sample4 ## colData names(2): ID group ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## rowLinks: a LinkDataFrame(10行)## rowTree: 1 phylo tree(10个叶子)## colLinks: NULL ## colTree: NULL
cbind (tse_a tse_b)
## cbind(…)中的警告:rowTree和rowLinks在提供的tse中不同。## rowTree和rowLinks在'cbind'后被删除
##类:treesummarizeexperiment ## dim: 10 8 ##元数据(0):## assays(1): " ## rownames(10): entity1 entity2…entity9 entity10 ## rowData names(2): var1 var2 ## colnames(8): sample1sample3 sample4 ## colData names(2): ID group ## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## rowLinks: a LinkDataFrame(10行)## rowTree: 1 phylo tree(10个叶子)## colLinks: NULL ## colTree: NULL
我们得到的子集tse_ab
通过提取行上的数据11:15
.这些行被映射到相同的树,名为phylo.1
.所以,rowTree
槽的上交所
只有一棵树。
(sse <- tse_ab[11:15,])
##类:treesummarize实验## dim: 5 4 ##元数据(0):## assays(1): ## rownames(5): entity1 entity2 entity3 entity4 entity5 ## rowData names(2): var1 var2 ## colnames(4): sample1 sample2 sample3 sample4 ## colData names(2): ID组## reducedDimNames(0): ## mainExpName: NULL ## altExpNames(0): ## rowLinks: a LinkDataFrame(5行)## rowTree: 1 phylo tree(10个叶子)## colLinks: NULL ## colTree: NULL
rowLinks (sse)
## LinkDataFrame with 5行5列## nodeLab nodeLab_alias nodeNum isLeaf entitree ## <字符> <字符> <整数> <逻辑> <字符> ## entity1 entity1 alias_1 1 TRUE tree2 ## entity2 entity2 alias_2 2 TRUE tree2 ## entity3 entity3 alias_3 3 TRUE tree2 ## entity4 entity4 alias_4 4 TRUE tree2 ## entity5 entity5 alias_5 TRUE tree2
[
的子集,不仅可以作为getter,还可以作为setter上交所
.
set.seed(3) tse_c <- makeTSE(包括。colTree= FALSE) rowTreeNames(tse_c) <- "new_tree" # the first two rows are from tse_c, and are mapped to 'new_tree' sse[1:2, ] <- tse_c[5:6, ] rowLinks(sse)
## LinkDataFrame with 5 row and 5 columns ## nodeLab nodeLab_alias nodeNum isLeaf validtree ## <字符> <字符> <逻辑> <字符> ## entity5 entity5 alias_5 5 TRUE new_tree ## entity6 entity6 alias_6 6 TRUE new_tree ## entity3 entity3 alias_3 3 TRUE tree2 ## entity4 entity4 alias_4 4 TRUE tree2 ## entity5 entity5 alias_5 5 TRUE tree2
的谢霆锋对象的子集也可以由节点或/和树使用subsetByNodes
# sse_a <- subsetByNode(x = sse, whatrowtree = "new_tree") rowLinks(sse_a)
## LinkDataFrame with 2行5列## nodeLab nodeLab_alias nodeNum isLeaf该树## <字符> <字符> <整数> <逻辑> <字符> ## entity5 entity5 alias_5 5 TRUE new_tree ## entity6 entity6 alias_6 6 TRUE new_tree
- subsetByNode(x = sse, rowNode = 5) rowLinks(sse_b)
## LinkDataFrame with 2行5列## nodeLab nodeLab_alias nodeNum isLeaf该树## <字符> <字符> <整数> <逻辑> <字符> ## entity5 entity5 alias_5 TRUE new_tree ## entity5 entity5 alias_5 TRUE树2
- subsetByNode(x = sse, rowNode = 5, wherowtree = " tre2 ") rowLinks(sse_c)
## LinkDataFrame with 1行5列## nodeLab nodeLab_alias nodeNum isLeaf该树## <字符> <字符> <整数> <逻辑> <字符> ## entity5 entity5 alias_5 TRUE树2
通过使用colTree
,我们可以将列树添加到上交所
之前没有列树。
colTree (sse)
# #空
library(ape) set.seed(1) col_tree <- rtree(ncol(sse)) #要使用'colTree '作为setter,输入树的节点标签应该与TSE的列名匹配#。col_tree美元小费。label <- colnames(sse) colTree(sse) <- col_tree colTree(sse)
## ##系统发育树,有4个尖端和3个内部节点。## ##提示标签:## sample1, sample2, sample3, sample4 ## ##扎根;包括分支长度。
上交所
有两行树。我们可以用一个新的树替换其中的一个whichTree
的rowTree
.
# rowLinks(sse)
## LinkDataFrame with 5 row and 5 columns ## nodeLab nodeLab_alias nodeNum isLeaf validtree ## <字符> <字符> <逻辑> <字符> ## entity5 entity5 alias_5 5 TRUE new_tree ## entity6 entity6 alias_6 6 TRUE new_tree ## entity3 entity3 alias_3 3 TRUE tree2 ## entity4 entity4 alias_4 4 TRUE tree2 ## entity5 entity5 alias_5 5 TRUE tree2
#新的行树set.seed(1) row_tree <- rtree(4) row_tree$tip. seed(4) row_tree$tip. seed)label <- paste0("entity", 5:7) #替换命名为"new_tree"的树nse <- sse rowTree(nse, whertree = "new_tree") <- row_tree rowLinks(nse)
## LinkDataFrame with 5行5列## nodeLab nodeLab_alias nodeNum isLeaf entitree ## <字符> <字符> <整数> <逻辑> <字符> ## entity5 entity5 alias_1 1 TRUE new_tree ## entity6 entity6 alias_2 2 TRUE new_tree ## entity3 entity3 alias_3 3 TRUE tree2 ## entity4 entity4 alias_4 4 TRUE tree2 ## entity5 entity5 alias_5 5 TRUE tree2
在行链接中,前两行现在在中有新值nodeNum
而且nodeLab_alias
.里面的名字whichTree
没有更改,但实际上更新了树。
# FALSE期望相同(rowTree(sse, wheretree = "new_tree"), rowTree(nse, wheretree = "new_tree")))
## [1] false
# TRUE期望相同(rowTree(nse, wheretree = "new_tree"), row_tree)
##[1]真
的输入树的节点和行谢霆锋是命名不同,用户可以匹配行节点通过changeTree
与rowNodeLab
提供。
sessionInfo ()
## R版本4.2.1(2022-06-23)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-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]基础## ##其他附加包:[5] Biostrings_2.66.0 XVector_0.38.0 ## [7] SingleCellExperiment_1.20.0 SummarizedExperiment_1.28.0 ## [9] Biobase_2.58.0 GenomicRanges_1.50.0 ## [11] GenomeInfoDb_1.34.0 IRanges_2.32.0 ## [13] S4Vectors_0.36.0 BiocGenerics_0.44.0 ## [15] MatrixGenerics_1.10.0 matrixStats_0.62.0 ## [17] BiocStyle_2.26.0 ## ##通过命名空间加载(并且没有附加):## [1] sass_0.4.2 tidyr_1.2.1 ## [4] bslib_0.4.0 assertthat_0.2.1 BiocManager_1.30.19 ## [7] highr_0.9 yulab.utils_0.0.5 GenomeInfoDbData_1.2.9 ## [10] yaml_2.3.6 pillar_1.8.1 lattice_0.20-45 ## [13] glue_1.6.2 digest_0.6.30 colorspace_2.0-3 ## [16] ggfun_0.0.7 htmltools_0.5.3 Matrix_1.5-1 ## [19] pkgconfig_2.0.3 magick_2.7.3 bookdown_0.29 ## [22] zlibbioc_1.44.0 purrr_0.3.5 patchwork_1.1.2 ## [25] tidytree_0.4.1 scales_1.2.1 ggplotify_0.1.0 ## [28] BiocParallel_1.32.0[37] crayon_1.5.2 evaluate_0.17 fansi_1.0.3 ## [40] nlme_1 .2.1 tools_lifecycle_1 .0.3 ## [43] string_1 .4.1 aplot_0.1.8 munsell_0.5.0 ## [46] DelayedArray_0.24.0 compiler_4.2.1 jquerylib_0.1.4 ## [49] gridGraphics_0.5-1 rlang_1.0.6 grid_4.2.1 ## [52] RCurl_1.98-1.9 labeling_0.4.2 bitops_1.0-7 ## [55] rmarkdown_2.17 gtable_0.3.1 codetools_0.2-18 ## [58] DBI_1.1.3R6_2.5.1 knitr_1.40 ## [61] dplyr_1.0.10 fastmap_1.1.0 utf8_1.2.2 ## [64] treeio_1.22.0 stringi_1.7.8 parallel_4.2.1 ## [67] Rcpp_1.0.9 vctrs_0.5.0 tidyselect_1.2.0 ## [70] xfun_0.34