zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

itol.toolkit中文文档|PRUNE选择分枝

2023-03-07 09:08:41 时间

中文文档先于英文文档发布,TTfriends公众号首发。

最新完整文档请访问在线版:tongzhou2017.github.io/itol.toolkit/

前情

PRUNE模版的功能是选择分枝,其参数结构简单,仅由模版类型和数据构成,属于树结构类模版。

通常情况下,用户通过输入分枝名或节点,来实现对分枝或节点内全部分枝的选择,被选中的分枝会形成新的系统发育树,未被选中的分枝将不会出现在新的系统发育树中。该功能是唯一一个改变分枝数量的模版功能,其他模版功能均只是在系统发育树上进行注释。

本节文档展示使用itol.toolkit对分枝进行选择的方法,过程非常简单,主要难点在于用户需要确定哪些分枝需要被筛选,相较于没有itol.toolkit辅助的工作流,用户需要在割裂的环境分别进行数据分析和可视化准备,而itol.toolkit使整个工作流连贯,让用户在R语言环境中根据背景信息筛选分枝后直接进行模版文件输出。

常规流程

本小节使用内置数据为例,展示不同数据前处理方法,在节点或分枝水平进行分枝筛选。

首先加载Newick格式的树文件,树文件可以来自于多序列比对,也可以来自数值矩阵聚类。以下数据示例df_frequence数据包含了各模版类型在已发表研究中的使用量情况。数据示例template_parameters_count数据包含了模版类型的样式参数和数据参数信息,每列为一种参数,数值为1表示该模版使用了该参数,数值为0表示未使用。使用参数越多的模版,对于用户学习使用的难度越大。

本小节实例,我们的数据处理目的是,通过模版使用情况、模版名称特点、参数数目等信息选出对于用户使用有挑战的模版类型。

library(itol.toolkit)
tree <- system.file("extdata",
                    "tree_of_itol_templates.tree",
                    package = "itol.toolkit")
hub <- create_hub(tree = tree)
df_frequence <- data.table::fread(system.file("extdata",
                                              "templates_frequence.txt",
                                              package = "itol.toolkit"))
data("template_parameters_count")

原始树结构

我们可以混合使用节点名和分枝名,对分枝进行筛选。比如选择用户使用最多的模版以及参数最为复杂的两大类模版类型:样式和基础可视化。

ids <- df_frequence$templates
df_frequence[df_frequence > 1] <- 1 
df_frequence$templates <- ids
most_used_tip = df_frequence$templates[which.max(rowSums(df_frequence[,-1],
                                                         na.rm = T))]
select_item = c(most_used_tip, "theme_style","basic_plot")
unit_3 <- create_unit(data = select_item, 
                      key = "E003_prune_1", 
                      type = "PRUNE", 
                      tree = tree)
write_unit(unit_3,
           paste0(getwd(),"/E003_prune_1.txt"))

E003结果文件

E003效果图

我们也可以根据分枝的名称特点进行筛选,比如E004选择了DATASET_开头的分枝,这些分枝通常具有复杂的参数及格式模版要求,同时也是iTOL最具功能性的模版。

select_tip = hub@tree$main$tip.label[startsWith(hub@tree$main$tip.label,
                                                "DATASET_")]
unit_4 <- create_unit(data = select_tip, 
                                 key = "E004_prune_2", 
                                 type = "PRUNE", 
                                 tree = tree)
write_unit(unit_4,
           paste0(getwd(),"/E004_prune_2.txt"))

E004结果文件

E004效果图

我们也可以根据更多附加信息来对分枝进行筛选,比如E005我们使用了template_parameters_count数据,来筛选具有30个以上参数的模版,这些模版通常具有极复杂的功能。

tpc <- template_parameters_count
select_tip = row.names(tpc)[rowSums(tpc) > 30]
unit_5 <- create_unit(data = select_tip, 
                               key = "E005_prune_3", 
                               type = "PRUNE", 
                               tree = tree)
write_unit(unit_5,
           paste0(getwd(),"/E005_prune_3.txt"))

E005结果文件

E005效果图

PRUNE作为唯一一个改变树拓扑结构的模版功能,通常存在于工作流的前处理阶段,所以在发表论文中并无法体现出来,然而R语言用户更多使用ape::drop.tip来实现这一需求,所以该模版的应用前景堪忧,除非用户需要避免使用过多依赖工具时才有可能按需使用该功能。

红框处:0次被使用

样式修改

由于该模版类型参数简单,所以并不存在样式修改需求。

红框处:参数只有模版类型和数据

Tips

可以将E003~E005的结果加入数据及样式仓库hub对象,统一批量输出。

hub <- hub + unit_3 + unit_4 + unit_5
write_hub(hub, getwd())

文档类型:用户-单功能-树结构

链接状态:无

文档版本:1.0.0

文本:周通

编辑:凌浩

审阅:李明,赵启祥,张思威