种系进化树分析和构建工具R工具包S 物种系统进化树

种系进化树分析和构建工具R工具包Sa. 删除物种分支: prune.phylo(file, species)
b. 裁剪物种分支的范围: crop.phylo(file, start, end)
c. 在物种

a.删除物种分支:prune.phylo(file, Species)

b. 裁剪物种分支的范围:Crop.phylo(file, start, end)

c. 向物种分支添加标签:label.phylo(file,labels)

d. 提取物种分支的信息:extract.phylo(file, column)

导出物种进化枝数据:

a. 导出为NEXUS 格式:export.nexus(file,output)

b. 导出为Newick 格式:export.newick(file,output)

具体使用方法

S.PhyloMaker 是一个用于处理系统发育数据的R 工具包。您可以根据原始数据创建系统发育树,并执行一系列数据处理和可视化操作。下面是使用说明和常用命令。

脚步:

安装R:首先需要安装R语言环境。安装时可以从R官网(https://www.r-project.org/)下载相应的系统安装包。安装S.PhyloMaker:打开R控制台并在命令行输入以下命令来安装S.PhyloMaker包。

install.packages(\’S.PhyloMaker\’)

加载S.PhyloMaker 包:在R 控制台中键入以下命令以加载S.PhyloMaker 包。

库(S.PhyloMaker)

创建系统发育树。

使用原始数据创建系统发育树。

树- phylo_maker(data=mydata, type=\’raw\’)

这里mydata是原始数据,type参数指定数据类型为“raw”。

从现有的系统发育树文件创建系统发育树。

树- phylo_maker(data=\’tree_file.nwk\’, type=\’tree\’)

其中tree_file.nwk是现有树文件的路径,type参数指定数据类型为“tree”。

数据处理与分析:

提取叶节点和内部节点。

叶子- get_leaves(tree)

节点- get_nodes(树)

计算节点的度。

度数- get_ Degree(树)

计算节点的高度。

高度- get_height(树)

计算节点的深度。

深度- get_Depth(树)

进行系统发育关联分析。

phylotools_analysis(树)

数据可视化:

画出系统发育树。

情节树(树)

绘制节点度的分布图。

绘图度(树)

绘制节点高度的分布图。

地块高度(树)

github使用示例

Library(\’phytools\’) # 加载\’phytools\’ 包。

example-read.csv(\’example.splist.csv\’,header=T) # 读取样本物种列表。

phylo-read.tree(\’PhytoPhylo.tre\’) # 读取一个巨大的谱系。

nodes-read.csv(\’nodes.csv\’,header=T) # 读取巨型系统的节点信息。

result-S.PhyloMaker(spList=example,tree=phylo,nodes=nodes) # 运行函数S.PhyloMaker。

str(result) # S.PhyloMaker 输出的结构。

par(mfrow=c(1,3),mar=c(0,0,1,0)) # 显示三种场景的系统发育。

Plot(结果$Scenario.1,cex=1.1,main=\’场景1\’)

Plot(结果$Scenario.2,cex=1.1,main=\’场景2\’)

Plot(结果$Scenario.3,cex=1.1,main=\’场景3\’)

S.PhyloMaker完成分析脚本(有动手能力的可以改改):

S.PhyloMaker 函数(树、spList、节点、output.spList=T、场景=c(\’S1\’、\’S2\’、\’S3\’))

{

选项(scipen=999)

树0 树

spList[sapply(spList, is.factor)] – lagply(spList[sapply(spList, is.factor)], as.character)

if (任意(重复(spList$species)))

{

警告(“检测到重复物种并删除。”)

打印(spList $物种[重复(spList $物种)])

}

spList – spList[!duplicate(spList$species), ]

spList.original – spList

spList$species – gsub(\’ \’, \’_\’, spList$species)

spList$species – gsub(\'(^[[:alpha:]])\’, \’\\\\U\\\\1\’, spList$species, perl=TRUE)

spList$genus – gsub(\'(^[[:alpha:]])\’, \’\\\\U\\\\1\’, spList$genus, perl=TRUE)

spList$family – gsub(\'(^[[:alpha:]])\’, \’\\\\U\\\\1\’, spList$family, perl=TRUE)

rnN – data.frame(node.label=过去(\’N\’, 1:length(tree$node.label), sep=\’\’), oriN=tree$node.label, stringsAsFactors=FALSE)

节点[,c(\’级别\’,\’家族\’,\’属\’,\’rn\’,\’bn\’,\’分类a\’)]-lapply(节点[,c(\’级别\’,\’家族\’,\’属\’ , \’rn\’,\’bn\’,\’taxa\’)], as.character)

树$node.label – 粘贴(\’N\’, 1: 长度(tree$node.label), sep=\’\’)

k-c()

for (i in 1:length(tree$tip.label)) {

kk-c(kk,substring(tree$tip.label[i],1,gregexpr(\’_\’,tree$tip.label[i])[[1]][1]-1))

}

m-data.frame(num=1:length(kk),属=kk,种类=tree$tip.label)

m-merge(m,节点[,c(\’属\’,\’家族\’)])

mX-m

m – m[,c(\’属\’,\’科\’)]

m – m[!重复(m$属),]

dimnames(m)[[2]][2] – \’family_in_PhytoPhylo\’

m-m[,c(\’属\’,\’family_in_PhytoPhylo\’)]

m0 – spList[!duplicate(spList$genus), c(\’属\’,\’家族\’)]

dimnames(m0)[[2]][2] – \’family_in_spList\’

mm-合并(m0, m)

g-mm[which(is.na(match(粘贴(mm$genus,mm$family_in_spList,sep=\’_\’),粘贴(mm$genus,mm$family_in_PhytoPhylo,sep=\’_\’))),]

如果(暗淡(g)[1]0)

{

print(\’spList 和PhytoPhylo 之间的分类学分类不匹配。\’)

打印量(克)

}

add.tip – spList[which(is.na(match(spList$species,tree$tip.label))), ]

状态-rep(\’match(prune)\’, dim(spList)[1])

状态[which(is.na(match(spList$species,tree$tip.label)))] – \’match(add)\’

if (dim(add.tip)[1]==0 长度(na.omit(match(spList$species,tree$tip.label)))==0)

stop(\’物种列表格式错误。\’)

if (length(setdiff(spList$species,tree0$tip.label))==0 长度(na.omit(match(spList$species,tree$tip.label))) 0)

{

print(\’不需要添加任何物种。所有物种都将从PhytoPhylo 中删除。\’)

splis – spList.original

TreeX – drop.tip(tree0, setdiff(tree0$tip.label, splis$species))

splis$status – \’匹配(修剪)\’

phylo0 – 列表(场景.1=NULL,场景.2=NULL,场景.3=NULL,Species.list=splis)

if (\’S1\’ %in% 场景) {phylo0$Scenario.1 – TreeX}

if (\’S2\’ %in% 场景) {phylo0$Scenario.2 – TreeX}

if (\’S3\’ %in% 场景) {phylo0$Scenario.3 – TreeX}

phylo0[sapply(phylo0, is.null)] – NULL

返回(phylo0)

停止()

}

add.tip$sort-\’\’

add.tip$sort[which(!is.na(match(add.tip$genus,nodes[nodes$level==\’G\’,]$genus)))] – \’G1\’

add.tip$sort[which(is.na(match(add.tip$genus, node[nodes$level==\’G\’, ]$genus)) !is.na(match(add.tip$family, 节点[node$level==\’F\’, ]$family)))] – \’F1\’

add.tip$sort[add.tip$sort==\’F1\’][重复(add.tip[add.tip$sort==\’F1\’, ]$genus)] – \’F2\’

a – which(add.tip$sort==\’\’)

如果(长度(a)0)

{

print(paste(\’Note:\’, length(a), \’taxa unmatch:\’,sep=\’ \’))

打印(add.tip$species[a])

status[match(add.tip$species[a], spList$species)] – \’匹配\’

}

spList.original$status – 状态

if (\’S1\’ %in% 场景) {

t1树

RNN1-RNN

nG – 节点[nodes$level==\’G\’, ]

nF – 节点[nodes$level==\’F\’, ]

数据- add.tip[add.tip$sort==\’F1\’, ]

如果(暗淡(数据)[1] 0){

for (i in 1:dim(data)[1]) {

n – 匹配(数据$family[i],nF$family)

g – nF$gen.n[n]

s – nF$sp.n[n]

如果(g==1 s==1){

num – grep(nF$taxa[n], t1$tip.label)

len – t1$edge.length[匹配(num, t1$edge[, 2])]

t1 – 绑定.tip(t1,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

nF$gen.n[n] – g + 1

nF$sp.n[n] – s + 1

num – grep(nF$taxa[n], t1$tip.label)

t1$node.label[match(t1$edge[match(num, t1$edge[, 2]), 1], unique(t1$edge[, 1]))] – 过去(\’NN\’, t1$Nnode ) + 1, 九月=\’\’)

rnN1$node.label[match(nF$bn[n], rnN1$node.label)]-paste(\’NN\’, t1$Nnode + 1, sep=\’\’)

nF$bn[n] – 粘贴(\’NN\’, t1$Nnode + 1, sep=\’\’)

nF$bn.bl[n]-len

}

除此之外{

num – unique(t1$edge[, 1])[match(nF$bn[n], t1$node.label)]

Len – nF$bn.bl[n]

t1 – 绑定.tip(t1,tip.label=data$species[i],edge.length=len, where=num)

}

}

}

数据- add.tip[add.tip$sort !=\’F1\’, ]

如果(暗淡(数据)[1] 0){

for (i in 1:dim(data)[1]) {

n – grep(paste(data$genus[i], \’_\’, sep=\’\’), t1$tip.label)

如果(长度(n)==1){

数字-n

len – t1$edge.length[匹配(num, t1$edge[, 2])]

t1 – 绑定.tip(t1,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

}

如果(长度(n)1){

num – fastMRCA(t1, t1$tip.label[min(n)], t1$tip.label[max(n)])

len – fastDist(t1, t1$tip.label[min(n)], t1$tip.label[max(n)])/2

t1 – 绑定.tip(t1,tip.label=data$species[i],edge.length=len, where=num)

}

}

}

toDrop – setdiff(1:length(t1$tip.label), which(!is.na(match(t1$tip.label, spList$species))))

t1 – drop.tip(t1, Tip=toDrop)

重新- 什么(!is.na(match(t1$node.label, rnN1$node.label)))

noRe – 什么(is.na(match(t1$node.label, rnN1$node.label)))

t1$node.label[回复] – rnN1$oriN[match(t1$node.label, rnN1$node.label)[回复]]

t1$node.label[noRe] – \’\’

}

除此之外{

t1 – 空

}

if (\’S2\’ %in% 场景) {

t2树

RNN2-RNN

nG – 节点[nodes$level==\’G\’, ]

nF – 节点[nodes$level==\’F\’, ]

数据- add.tip[add.tip$sort==\’F1\’, ]

如果(暗淡(数据)[1] 0){

for (i in 1:dim(data)[1]) {

n – 匹配(数据$family[i],nF$family)

g – nF$gen.n[n]

s – nF$sp.n[n]

如果(g==1 s==1){

num – grep(nF$taxa[n], t2$tip.label)

len – t2$edge.length[匹配(num, t2$edge[,2])] *样本((1:99)/100,1)

t2 – 绑定.tip(t2,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

nF$gen.n[n] – g + 1

nF$sp.n[n] – s + 1

num – grep(data$species[i], t2$tip.label)

t2$node.label[match(t2$edge[match(num, t2$edge[, 2]), 1], unique(t2$edge[,1]))] – 过去(\’NN\’, t2$Nnode ) + 1, 九月=\’\’)

rnN2$node.label[match(nF$bn[n], rnN2$node.label)]-paste(\’NN\’, t2$Nnode + 1, sep=\’\’)

nF$bn[n] – 粘贴(\’NN\’, t2$Nnode + 1, sep=\’\’)

nF$bn.bl[n]-len

}

除此之外{

num – unique(t2$edge[, 1])[match(nF$bn[n], t2$node.label)]

len – t2$edge.length[匹配(num,t2$edge[,2])] *样本((1:99)/100,1)

t2 – 绑定.tip(t2,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

nF$gen.n[n] – g + 1

nF$sp.n[n] – s + 1

num – grep(data$species[i], t2$tip.label)

t2$node.label[match(t2$edge[match(num, t2$edge[, 2]), 1], unique(t2$edge[, 1]))] – 过去(\’NN\’, t2$Nnode ) + 1, 九月=\’\’)

rnN2$node.label[match(nF$bn[n], rnN2$node.label)]-paste(\’NN\’, t2$Nnode + 1, sep=\’\’)

nF$bn[n] – 粘贴(\’NN\’, t2$Nnode + 1, sep=\’\’)

nF$bn.bl[n] – nF$bn.bl[n]+len

}

}

}

数据- add.tip[add.tip$sort !=\’F1\’, ]

如果(暗淡(数据)[1] 0){

for (i in 1:dim(data)[1]) {

n – grep(paste(data$genus[i], \’_\’, sep=\’\’), t2$tip.label)

如果(长度(n)==1){

数字-n

len – t2$edge.length[匹配(num, t2$edge[, 2])] * 样本((1:99)/100,1)

t2 – 绑定.tip(t2,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

}

如果(长度(n)1){

样本数量(n,1)

len – t2$edge.length[匹配(num, t2$edge[, 2])] * 样本((1:99)/100,1)

t2 – 绑定.tip(t2,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

}

}

}

toDrop – setdiff(1:length(t2$tip.label), which(!is.na(match(t2$tip.label, spList$species))))

t2 – drop.chip(t2, 芯片=toDrop)

重新- 什么(!is.na(match(t2$node.label, rnN2$node.label)))

noRe – 什么(is.na(match(t2$node.label, rnN2$node.label)))

t2$node.label[回复] – rnN2$oriN[match(t2$node.label, rnN2$node.label)[回复]]

t2$node.label[noRe] – \’\’

}

除此之外{

t2 – 空

}

if (\’S3\’ %in% 场景) {

t3树

RNN3-RNN

nG – 节点[nodes$level==\’G\’, ]

nF – 节点[nodes$level==\’F\’, ]

数据- add.tip[add.tip$sort==\’F1\’, ]

如果(暗淡(数据)[1] 0){

for (i in 1:dim(data)[1]) {

n – 匹配(数据$family[i],nF$family)

g – nF$gen.n[n]

s – nF$sp.n[n]

如果(g==1 s==1){

num – grep(nF$taxa[n], t3$tip.label)

len – t3$edge.length[匹配(num, t3$edge[, 2])] * (2/3)

t3 – 绑定.tip(t3,tip.label=data$species[i],edge.length=len,其中=num,位置=len)

nF$gen.n[n] – g + 1

nF$sp.n[n] – s + 1

我们整理了数百道**【运维技术栈面试题】**,成为您运维面试的得力助手。这将帮助您在面试时不慌不忙,并为高质量的面试做好准备。付费报价!

这些面试题涵盖了从Shell、MySQL到K8等云原生技术栈,不仅适合运维行业新人的面试需求,也适合对运维感兴趣的朋友是适合的。升职或换工作以增加薪水。 **

![](https://img-blog.csdnimg.cn/img_convert/98b432fc06b15bae9951824c87b0b407.png)

本次访谈集内容为

* **174 运维工程师面试题**

* **128道k8s面试题**

* **108 个shell 脚本面试问题**

* **200 个Linux 面试问题**

* **51 个Docker 面试问题**

* **35 个Jenkis 面试问题**

* **78 MongoDB 面试问题**

* **17 Ansible 面试问题**

* **60 个Dubbo 面试问题**

* **53 次卡夫卡访谈**

* **18道mysql面试题**

* **40 个nginx 面试题**

* **77 个Redis 面试问题**

* **28 守门员**

**总共1000多道面试题,内容丰富、信息丰富**

* **174 运维工程师面试题**

1.什么是运维?

2、运维人员在工作场所经常需要与操作人员进行交互。运营人员做什么工作?

3. 给定300台服务器,如何管理它们?

4、我们简单解释一下raid0、raid1和raid5这两种运行模式的运行原理和特点。

5、LVS、Nginx、HAproxy有什么区别,工作中如何选择?

6. Squid、Varinsh、Nginx 有什么区别,你在工作中如何选择?

7.Tomcat和Resin有什么区别?

8.什么是中间件?

9. Tomcat 的三个端口8005、8009、8080 是什么意思?

10.什么是CDN?

11.什么是网站灰度发布?

12、请简单说明一下DNS域名解析的过程。

13.什么是RabbitMQ?

14.Keepalived如何工作?

15.描述LVS工作流程的三种模式。

16、mysql的innodb如何识别锁定问题以及mysql如何减少主从复制延迟?

管理人员做什么的?

3. 给定300台服务器,如何管理它们?

4、我们简单解释一下raid0、raid1和raid5这两种运行模式的运行原理和特点。

5、LVS、Nginx、HAproxy有什么区别,工作中如何选择?

6. Squid、Varinsh、Nginx 有什么区别,你在工作中如何选择?

7.Tomcat和Resin有什么区别?

8.什么是中间件?

9. Tomcat 的三个端口8005、8009、8080 是什么意思?

10.什么是CDN?

11.什么是网站灰度发布?

12、请简单说明一下DNS域名解析的过程。

13.什么是RabbitMQ?

14.Keepalived如何工作?

15.描述LVS工作流程的三种模式。

16、mysql的innodb如何识别锁定问题以及mysql如何减少主从复制延迟?

17.如何重置mysql root密码?

以上关于#系统发育树分析/构建工具R Toolkit S的相关内容来源网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91393.html

(0)
CSDN的头像CSDN
上一篇 2024年6月22日
下一篇 2024年6月22日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注