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


* 进行系统发育相关的分析:



phylotools_analysis(tree)


1. 数据可视化:


* 绘制系统发育树:



plot_tree(tree)


* 绘制节点度的分布图:



plot_degree(tree)


* 绘制节点高度的分布图:



plot_height(tree)


##  github使用示例



library(“phytools”) # load the “phytools” package.
example<-read.csv(“example.splist.csv”,header=T) # read in the example species list.
phylo<-read.tree(“PhytoPhylo.tre”) # read in the megaphylogeny.
nodes<-read.csv(“nodes.csv”,header=T) # read in the nodes information of the megaphylogeny.
result<-S.PhyloMaker(spList=example, tree=phylo, nodes=nodes) # run the function S.PhyloMaker.
str(result) # the structure of the ouput of S.PhyloMaker.
par(mfrow=c(1,3),mar=c(0,0,1,0)) # show the phylogenies of the three scenarios.
plot(result S c e n a r i o . 1 , c e x = 1.1 , m a i n = " S c e n a r i o n O n e " ) p l o t ( r e s u l t Scenario.1,cex=1.1,main="Scenarion One") plot(result Scenario.1,cex=1.1,main="ScenarionOne")plot(resultScenario.2,cex=1.1,main=“Scenarion Two”)
plot(result$Scenario.3,cex=1.1,main=“Scenarion Three”)



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



S.PhyloMaker<-function (tree, spList, nodes, output.spList = T, scenarios = c(“S1”, “S2”, “S3”))
{
options(scipen=999)
tree0 <- tree
spList[sapply(spList, is.factor)] <- lapply(spList[sapply(spList, is.factor)], as.character)
if (any(duplicated(spListKaTeX parse error: Expected '}', got 'EOF' at end of input: … print(spListspecies[duplicated(spListKaTeX parse error: Expected 'EOF', got '}' at position 18: …ecies)]) }̲ spList <- …species), ]
spList.original <- spList
spList s p e c i e s < − g s u b ( " " , " " , s p L i s t species <- gsub(" ", "_", spList species<gsub("","",spListspecies)
spList s p e c i e s < − g s u b ( " ( [ [ : a l p h a : ] ] ) " , " U 1 " , s p L i s t species <- gsub("(^[[:alpha:]])", "\\U\\1", spList species<gsub("([[:alpha:]])","U1",spListspecies, perl = TRUE)
spList g e n u s < − g s u b ( " ( [ [ : a l p h a : ] ] ) " , " U 1 " , s p L i s t genus <- gsub("(^[[:alpha:]])", "\\U\\1", spList genus<gsub("([[:alpha:]])","U1",spListgenus, perl = TRUE)
spList f a m i l y < − g s u b ( " ( [ [ : a l p h a : ] ] ) " , " U 1 " , s p L i s t family <- gsub("(^[[:alpha:]])", "\\U\\1", spList family<gsub("([[:alpha:]])","U1",spListfamily, perl = TRUE)
rnN <- data.frame(node.label = paste(“N”, 1:length(tree n o d e . l a b e l ) , s e p = " " ) , o r i N = t r e e node.label), sep = ""), oriN = tree node.label),sep=""),oriN=treenode.label, stringsAsFactors = FALSE)
nodes[,c(“level”,“family”,“genus”,“rn”,“bn”,“taxa”)]<-lapply(nodes[,c(“level”,“family”,“genus”,“rn”,“bn”,“taxa”)], as.character)
tree n o d e . l a b e l < − p a s t e ( " N " , 1 : l e n g t h ( t r e e node.label <- paste("N", 1:length(tree node.label<paste("N",1:length(treenode.label), sep = “”)
kk<-c()
for (i in 1:length(treeKaTeX parse error: Expected '}', got 'EOF' at end of input: …,substring(treetip.label[i],1,gregexpr(““,treeKaTeX parse error: Expected 'EOF', got '}' at position 31: …1]][1]-1)) }̲ m<-data.fr…tip.label)
m<-merge(m,nodes[,c(“genus”,“family”)])
mX <- m
m <- m[,c(“genus”,“family”)]
m <- m[!duplicated(m g e n u s ) , ] d i m n a m e s ( m ) [ [ 2 ] ] [ 2 ] < − " f a m i l y i n P h y t o P h y l o " m < − m [ , c ( " g e n u s " , " f a m i l y i n P h y t o P h y l o " ) ] m 0 < − s p L i s t [ ! d u p l i c a t e d ( s p L i s t genus),] dimnames(m)[[2]][2] <- "family_in_PhytoPhylo" m<-m[,c("genus","family_in_PhytoPhylo")] m0 <- spList[!duplicated(spList genus),]dimnames(m)[[2]][2]<"familyinPhytoPhylo"m<m[,c("genus","familyinPhytoPhylo")]m0<spList[!duplicated(spListgenus), c(“genus”,“family”)]
dimnames(m0)[[2]][2] <- “family_in_spList”
mm<-merge(m0, m)
g<-mm[which(is.na(match(paste(mm g e n u s , m m genus,mm genus,mmfamily_in_spList,sep=”
”),paste(mm g e n u s , m m genus,mm genus,mmfamily_in_PhytoPhylo,sep=“")))),]
if (dim(g)[1]>0)
{
print(“Taxonomic classification not consistent between spList and PhytoPhylo.”)
print(g)
}
add.tip <- spList[which(is.na(match(spList s p e c i e s , t r e e species, tree species,treetip.label))), ]
status <- rep(“match(prune)”, dim(spList)[1])
status[which(is.na(match(spList s p e c i e s , t r e e species, tree species,treetip.label)))] <- “match(add)”
if (dim(add.tip)[1] == 0 & length(na.omit(match(spList s p e c i e s , t r e e species, tree species,treetip.label))) == 0)
stop(“Incorrect format of species list.”)
if (length(setdiff(spList s p e c i e s , t r e e 0 species, tree0 species,tree0tip.label)) == 0 & length(na.omit(match(spList s p e c i e s , t r e e species, tree species,treetip.label))) > 0)
{
print(“There is no species needs to be added, all the species are pruned from PhytoPhylo.”)
splis <- spList.original
treeX <- drop.tip(tree0, setdiff(tree0 t i p . l a b e l , s p l i s tip.label, splis tip.label,splisspecies))
splis s t a t u s < − " m a t c h ( p r u n e ) " p h y l o 0 < − l i s t ( S c e n a r i o . 1 = N U L L , S c e n a r i o . 2 = N U L L , S c e n a r i o . 3 = N U L L , S p e c i e s . l i s t = s p l i s ) i f ( " S 1 " status <- "match(prune)" phylo0 <- list(Scenario.1 = NULL, Scenario.2 = NULL, Scenario.3 = NULL, Species.list = splis) if ("S1" %in% scenarios) {phylo0 status<"match(prune)"phylo0<list(Scenario.1=NULL,Scenario.2=NULL,Scenario.3=NULL,Species.list=splis)if("S1"Scenario.1 <- treeX}
if (“S2” %in% scenarios) {phylo0KaTeX parse error: Expected 'EOF', got '}' at position 20: …ario.2 <- treeX}̲ if ("S…Scenario.3 <- treeX}
phylo0[sapply(phylo0, is.null)] <- NULL
return(phylo0)
stop()
}
add.tip s o r t < − " " a d d . t i p sort <- "" add.tip sort<""add.tipsort[which(!is.na(match(add.tip g e n u s , n o d e s [ n o d e s genus, nodes[nodes genus,nodes[nodeslevel == “G”, ] g e n u s ) ) ) ] < − " G 1 " a d d . t i p genus)))] <- "G1" add.tip genus)))]<"G1"add.tipsort[which(is.na(match(add.tip g e n u s , n o d e s [ n o d e s genus, nodes[nodes genus,nodes[nodeslevel == “G”, ]KaTeX parse error: Expected 'EOF', got '&' at position 9: genus)) &̲ !is.na(match(a…family, nodes[nodes l e v e l = = " F " , ] level == "F", ] level=="F",]family)))] <- “F1”
add.tip s o r t [ a d d . t i p sort[add.tip sort[add.tipsort == “F1”][duplicated(add.tip[add.tip s o r t = = " F 1 " , ] sort == "F1", ] sort=="F1",]genus)] <- “F2”
a <- which(add.tipKaTeX parse error: Expected '}', got 'EOF' at end of input: … print(add.tipspecies[a])
status[match(add.tip s p e c i e s [ a ] , s p L i s t species[a], spList species[a],spListspecies)] <- “unmatch”
}
spList.original s t a t u s < − s t a t u s i f ( " S 1 " t 1 < − t r e e r n N 1 < − r n N n G < − n o d e s [ n o d e s status <- status if ("S1" %in% scenarios) { t1 <- tree rnN1<-rnN nG <- nodes[nodes status<statusif("S1"t1<treernN1<rnNnG<nodes[nodeslevel == “G”, ]
nF <- nodes[nodes l e v e l = = " F " , ] d a t a < − a d d . t i p [ a d d . t i p level == "F", ] data <- add.tip[add.tip level=="F",]data<add.tip[add.tipsort == “F1”, ]
if (dim(data)[1] > 0) {
for (i in 1:dim(data)[1]) {
n <- match(data f a m i l y [ i ] , n F family[i], nF family[i],nFfamily)
g <- nF g e n . n [ n ] s < − n F gen.n[n] s <- nF gen.n[n]s<nFsp.n[n]
if (g == 1 & s == 1) {
num <- grep(nF t a x a [ n ] , t 1 taxa[n], t1 taxa[n],t1tip.label)
len <- t1 e d g e . l e n g t h [ m a t c h ( n u m , t 1 edge.length[match(num, t1 edge.length[match(num,t1edge[, 2])]
t1 <- bind.tip(t1, tip.label = data s p e c i e s [ i ] , e d g e . l e n g t h = l e n , w h e r e = n u m , p o s i t i o n = l e n ) n F species[i], edge.length = len, where = num, position = len) nF species[i],edge.length=len,where=num,position=len)nFgen.n[n] <- g + 1
nF s p . n [ n ] < − s + 1 n u m < − g r e p ( n F sp.n[n] <- s + 1 num <- grep(nF sp.n[n]<s+1num<grep(nFtaxa[n], t1 t i p . l a b e l ) t 1 tip.label) t1 tip.label)t1node.label[match(t1 e d g e [ m a t c h ( n u m , t 1 edge[match(num, t1 edge[match(num,t1edge[, 2]), 1], unique(t1 e d g e [ , 1 ] ) ) ] < − p a s t e ( " N N " , t 1 edge[, 1]))] <- paste("NN", t1 edge[,1]))]<paste("NN",t1Nnode + 1, sep = “”)
rnN1 n o d e . l a b e l [ m a t c h ( n F node.label[match(nF node.label[match(nFbn[n], rnN1 n o d e . l a b e l ) ] < − p a s t e ( " N N " , t 1 node.label)]<- paste("NN", t1 node.label)]<paste("NN",t1Nnode + 1, sep = “”)
nF b n [ n ] < − p a s t e ( " N N " , t 1 bn[n] <- paste("NN", t1 bn[n]<paste("NN",t1Nnode + 1, sep = “”)
nFKaTeX parse error: Expected 'EOF', got '}' at position 33: … }̲ …edge[, 1])[match(nF b n [ n ] , t 1 bn[n], t1 bn[n],t1node.label)]
len <- nF b n . b l [ n ] t 1 < − b i n d . t i p ( t 1 , t i p . l a b e l = d a t a bn.bl[n] t1 <- bind.tip(t1, tip.label = data bn.bl[n]t1<bind.tip(t1,tip.label=dataspecies[i], edge.length = len, where = num)
}
}
}
data <- add.tip[add.tipKaTeX parse error: Expected '}', got 'EOF' at end of input: …grep(paste(datagenus[i], "
”, sep = “”), t1KaTeX parse error: Expected '}', got 'EOF' at end of input: … len <- t1edge.length[match(num, t1 e d g e [ , 2 ] ) ] t 1 < − b i n d . t i p ( t 1 , t i p . l a b e l = d a t a edge[, 2])] t1 <- bind.tip(t1, tip.label = data edge[,2])]t1<bind.tip(t1,tip.label=dataspecies[i], edge.length = len, where = num, position = len)
}
if (length(n) > 1) {
num <- fastMRCA(t1, t1 t i p . l a b e l [ m i n ( n ) ] , t 1 tip.label[min(n)], t1 tip.label[min(n)],t1tip.label[max(n)])
len <- fastDist(t1, t1 t i p . l a b e l [ m i n ( n ) ] , t 1 tip.label[min(n)], t1 tip.label[min(n)],t1tip.label[max(n)])/2
t1 <- bind.tip(t1, tip.label = dataKaTeX parse error: Expected 'EOF', got '}' at position 63: … }̲ …tip.label), which(!is.na(match(t1 t i p . l a b e l , s p L i s t tip.label, spList tip.label,spListspecies))))
t1 <- drop.tip(t1, tip = toDrop)
Re <- which(!is.na(match(t1 n o d e . l a b e l , r n N 1 node.label, rnN1 node.label,rnN1node.label)))
noRe <- which(is.na(match(t1 n o d e . l a b e l , r n N 1 node.label, rnN1 node.label,rnN1node.label)))
t1 n o d e . l a b e l [ R e ] < − r n N 1 node.label[Re] <- rnN1 node.label[Re]<rnN1oriN[match(t1 n o d e . l a b e l , r n N 1 node.label, rnN1 node.label,rnN1node.label)[Re]]
t1KaTeX parse error: Expected 'EOF', got '}' at position 28: …oRe] <- "" }̲ else { …level == “G”, ]
nF <- nodes[nodes l e v e l = = " F " , ] d a t a < − a d d . t i p [ a d d . t i p level == "F", ] data <- add.tip[add.tip level=="F",]data<add.tip[add.tipsort == “F1”, ]
if (dim(data)[1] > 0) {
for (i in 1:dim(data)[1]) {
n <- match(data f a m i l y [ i ] , n F family[i], nF family[i],nFfamily)
g <- nF g e n . n [ n ] s < − n F gen.n[n] s <- nF gen.n[n]s<nFsp.n[n]
if (g == 1 & s == 1) {
num <- grep(nF t a x a [ n ] , t 2 taxa[n], t2 taxa[n],t2tip.label)
len <- t2 e d g e . l e n g t h [ m a t c h ( n u m , t 2 edge.length[match(num, t2 edge.length[match(num,t2edge[,2])] * sample((1:99)/100,1)
t2 <- bind.tip(t2, tip.label = data s p e c i e s [ i ] , e d g e . l e n g t h = l e n , w h e r e = n u m , p o s i t i o n = l e n ) n F species[i], edge.length = len, where = num, position = len) nF species[i],edge.length=len,where=num,position=len)nFgen.n[n] <- g + 1
nF s p . n [ n ] < − s + 1 n u m < − g r e p ( d a t a sp.n[n] <- s + 1 num <- grep(data sp.n[n]<s+1num<grep(dataspecies[i], t2 t i p . l a b e l ) t 2 tip.label) t2 tip.label)t2node.label[match(t2 e d g e [ m a t c h ( n u m , t 2 edge[match(num, t2 edge[match(num,t2edge[, 2]), 1], unique(t2 e d g e [ , 1 ] ) ) ] < − p a s t e ( " N N " , t 2 edge[,1]))] <- paste("NN", t2 edge[,1]))]<paste("NN",t2Nnode + 1, sep = “”)
rnN2 n o d e . l a b e l [ m a t c h ( n F node.label[match(nF node.label[match(nFbn[n], rnN2 n o d e . l a b e l ) ] < − p a s t e ( " N N " , t 2 node.label)]<- paste("NN", t2 node.label)]<paste("NN",t2Nnode + 1, sep = “”)
nF b n [ n ] < − p a s t e ( " N N " , t 2 bn[n] <- paste("NN", t2 bn[n]<paste("NN",t2Nnode + 1, sep = “”)
nFKaTeX parse error: Expected 'EOF', got '}' at position 33: … }̲ …edge[, 1])[match(nF b n [ n ] , t 2 bn[n], t2 bn[n],t2node.label)]
len <- t2 e d g e . l e n g t h [ m a t c h ( n u m , t 2 edge.length[match(num,t2 edge.length[match(num,t2edge[,2])] * sample((1:99)/100,1)
t2 <- bind.tip(t2, tip.label = data s p e c i e s [ i ] , e d g e . l e n g t h = l e n , w h e r e = n u m , p o s i t i o n = l e n ) n F species[i], edge.length = len, where = num, position = len) nF species[i],edge.length=len,where=num,position=len)nFgen.n[n] <- g + 1
nF s p . n [ n ] < − s + 1 n u m < − g r e p ( d a t a sp.n[n] <- s + 1 num <- grep(data sp.n[n]<s+1num<grep(dataspecies[i], t2 t i p . l a b e l ) t 2 tip.label) t2 tip.label)t2node.label[match(t2 e d g e [ m a t c h ( n u m , t 2 edge[match(num, t2 edge[match(num,t2edge[, 2]), 1], unique(t2 e d g e [ , 1 ] ) ) ] < − p a s t e ( " N N " , t 2 edge[, 1]))] <- paste("NN", t2 edge[,1]))]<paste("NN",t2Nnode + 1, sep = “”)
rnN2 n o d e . l a b e l [ m a t c h ( n F node.label[match(nF node.label[match(nFbn[n], rnN2 n o d e . l a b e l ) ] < − p a s t e ( " N N " , t 2 node.label)]<- paste("NN", t2 node.label)]<paste("NN",t2Nnode + 1, sep = “”)
nF b n [ n ] < − p a s t e ( " N N " , t 2 bn[n] <- paste("NN", t2 bn[n]<paste("NN",t2Nnode + 1, sep = “”)
nF b n . b l [ n ] < − n F bn.bl[n] <- nF bn.bl[n]<nFbn.bl[n]+len
}
}
}
data <- add.tip[add.tipKaTeX parse error: Expected '}', got 'EOF' at end of input: …grep(paste(datagenus[i], “", sep = “”), t2KaTeX parse error: Expected '}', got 'EOF' at end of input: … len <- t2edge.length[match(num, t2 e d g e [ , 2 ] ) ] ∗ s a m p l e ( ( 1 : 99 ) / 100 , 1 ) t 2 < − b i n d . t i p ( t 2 , t i p . l a b e l = d a t a edge[, 2])] * sample((1:99)/100,1) t2 <- bind.tip(t2, tip.label = data edge[,2])]sample((1:99)/100,1)t2<bind.tip(t2,tip.label=dataspecies[i], edge.length = len, where = num, position = len)
}
if (length(n) > 1) {
num <- sample(n,1)
len <- t2 e d g e . l e n g t h [ m a t c h ( n u m , t 2 edge.length[match(num, t2 edge.length[match(num,t2edge[, 2])] * sample((1:99)/100,1)
t2 <- bind.tip(t2, tip.label = dataKaTeX parse error: Expected 'EOF', got '}' at position 79: … }̲ …tip.label), which(!is.na(match(t2 t i p . l a b e l , s p L i s t tip.label, spList tip.label,spListspecies))))
t2 <- drop.tip(t2, tip = toDrop)
Re <- which(!is.na(match(t2 n o d e . l a b e l , r n N 2 node.label, rnN2 node.label,rnN2node.label)))
noRe <- which(is.na(match(t2 n o d e . l a b e l , r n N 2 node.label, rnN2 node.label,rnN2node.label)))
t2 n o d e . l a b e l [ R e ] < − r n N 2 node.label[Re] <- rnN2 node.label[Re]<rnN2oriN[match(t2 n o d e . l a b e l , r n N 2 node.label, rnN2 node.label,rnN2node.label)[Re]]
t2KaTeX parse error: Expected 'EOF', got '}' at position 28: …oRe] <- "" }̲ else { …level == “G”, ]
nF <- nodes[nodes l e v e l = = " F " , ] d a t a < − a d d . t i p [ a d d . t i p level == "F", ] data <- add.tip[add.tip level=="F",]data<add.tip[add.tipsort == “F1”, ]
if (dim(data)[1] > 0) {
for (i in 1:dim(data)[1]) {
n <- match(data f a m i l y [ i ] , n F family[i], nF family[i],nFfamily)
g <- nF g e n . n [ n ] s < − n F gen.n[n] s <- nF gen.n[n]s<nFsp.n[n]
if (g == 1 & s == 1) {
num <- grep(nF t a x a [ n ] , t 3 taxa[n], t3 taxa[n],t3tip.label)
len <- t3 e d g e . l e n g t h [ m a t c h ( n u m , t 3 edge.length[match(num, t3 edge.length[match(num,t3edge[, 2])] * (2/3)
t3 <- bind.tip(t3, tip.label = data s p e c i e s [ i ] , e d g e . l e n g t h = l e n , w h e r e = n u m , p o s i t i o n = l e n ) n F species[i], edge.length = len, where = num, position = len) nF species[i],edge.length=len,where=num,position=len)nFgen.n[n] <- g + 1
nF s p . n [ n ] < − s + 1 n u m < − g r e p ( n F sp.n[n] <- s + 1 num <- grep(nF sp.n[n]<s+1num<grep(nFtaxa[n], t3 t i p . l a b e l ) t 3 tip.label) t3 tip.label)t3node.label[match(t3 e d g e [ m a t c h ( n u m , t 3 edge[match(num, t3 edge[match(num,t3edge[, 2]), 1], unique(t3 e d g e [ , 1 ] ) ) ] < − p a s t e ( " N N " , t 3 edge[, 1]))] <- paste("NN", t3 edge[,1]))]<paste("NN",t3Nnode + 1, sep = “”)
rnN3 n o d e . l a b e l [ m a t c h ( n F node.label[match(nF node.label[match(nFbn[n], rnN3 n o d e . l a b e l ) ] < − p a s t e ( " N N " , t 3 node.label)]<- paste("NN", t3 node.label)]<paste("NN",t3Nnode + 1, sep = “”)
nF b n [ n ] < − p a s t e ( " N N " , t 3 bn[n] <- paste("NN", t3 bn[n]<paste("NN",t3Nnode + 1, sep = “”)
nFKaTeX parse error: Expected 'EOF', got '}' at position 33: … }̲ …edge[, 1])[match(nF b n [ n ] , t 3 bn[n], t3 bn[n],t3node.label)]
if ((2/3)*nF r n . b l [ n ] < = n F rn.bl[n] <= nF rn.bl[n]<=nFbn.bl[n]) { len <-(nF r n . b l [ n ] − n F rn.bl[n]-nF rn.bl[n]nFbn.bl[n])/2 }
if ((2/3)*nF r n . b l [ n ] > n F rn.bl[n] > nF rn.bl[n]>nFbn.bl[n]) { len <-nF r n . b l [ n ] ∗ 2 / 3 − n F rn.bl[n]*2/3-nF rn.bl[n]2/3nFbn.bl[n] }
t3 <- bind.tip(t3, tip.label = data s p e c i e s [ i ] , e d g e . l e n g t h = l e n , w h e r e = n u m , p o s i t i o n = l e n ) n F species[i], edge.length = len, where = num, position = len) nF species[i],edge.length=len,where=num,position=len)nFgen.n[n] <- g + 1
nF s p . n [ n ] < − s + 1 n u m < − u n i q u e ( t 3 sp.n[n] <- s + 1 num <- unique(t3 sp.n[n]<s+1num<unique(t3edge[, 1])[match(nF b n [ n ] , t 3 bn[n], t3 bn[n],t3node.label)]
t3 n o d e . l a b e l [ m a t c h ( t 3 node.label[match(t3 node.label[match(t3edge[match(num, t3 e d g e [ , 2 ] ) , 1 ] , u n i q u e ( t 3 edge[, 2]), 1], unique(t3 edge[,2]),1],unique(t3edge[, 1]))] <- paste(“NN”, t3 N n o d e + 1 , s e p = " " ) r n N 3 Nnode + 1, sep = "") rnN3 Nnode+1,sep="")rnN3node.label[match(nF b n [ n ] , r n N 3 bn[n], rnN3 bn[n],rnN3node.label)]<- paste(“NN”, t3 N n o d e + 1 , s e p = " " ) n F Nnode + 1, sep = "") nF Nnode+1,sep="")nFbn[n] <- paste(“NN”, t3 N n o d e + 1 , s e p = " " ) n F Nnode + 1, sep = "") nF Nnode+1,sep="")nFbn.bl[n] <- len+nFKaTeX parse error: Expected 'EOF', got '}' at position 26: … }̲ …edge[, 1])[match(nF b n [ n ] , t 3 bn[n], t3 bn[n],t3node.label)]
len <- nF b n . b l [ n ] t 3 < − b i n d . t i p ( t 3 , t i p . l a b e l = d a t a bn.bl[n] t3 <- bind.tip(t3, tip.label = data bn.bl[n]t3<bind.tip(t3,tip.label=dataspecies[i], edge.length = len, where = num)
}
}
}
data <- add.tip[add.tipKaTeX parse error: Expected '}', got 'EOF' at end of input: …grep(paste(datagenus[i], "
”, sep = “”), t3KaTeX parse error: Expected '}', got 'EOF' at end of input: … len <- t3edge.length[match(n, t3 e d g e [ , 2 ] ) ] / 2 t 3 < − b i n d . t i p ( t 3 , t i p . l a b e l = d a t a edge[, 2])]/2 t3 <- bind.tip(t3, tip.label = data edge[,2])]/2t3<bind.tip(t3,tip.label=dataspecies[i], edge.length = len, where = n, position = len)
nG s p . n [ m a t c h ( d a t a sp.n[match(data sp.n[match(datagenus[i], nG g e n u s ) ] < − l e n g t h ( n ) + 1 n u < − g r e p ( p a s t e ( d a t a genus)] <- length(n) + 1 nu <- grep(paste(data genus)]<length(n)+1nu<grep(paste(datagenus[i], “_”, sep = “”), t3 t i p . l a b e l ) n u m < − f a s t M R C A ( t 3 , t 3 tip.label) num <- fastMRCA(t3, t3 tip.label)num<fastMRCA(t3,t3tip.label[nu[1]], t3 t i p . l a b e l [ n u [ 2 ] ] ) t 3 tip.label[nu[2]]) t3 tip.label[nu[2]])t3node.label[match(num, unique(t3 e d g e [ , 1 ] ) ) ] < − p a s t e ( " N N " , t 3 edge[, 1]))] <- paste("NN", t3 edge[,1]))]<paste("NN",t3Nnode + 1, sep = “”)
rnN3 n o d e . l a b e l [ m a t c h ( n G node.label[match(nG node.label[match(nGbn[n], rnN3 n o d e . l a b e l ) ] < − p a s t e ( " N N " , t 3 node.label)]<- paste("NN", t3 node.label)]<paste("NN",t3Nnode + 1, sep = “”)
nG b n [ m a t c h ( d a t a bn[match(data bn[match(datagenus[i], nG g e n u s ) ] < − p a s t e ( " N N " , t 3 genus)] <- paste("NN", t3 genus)]<paste("NN",t3Nnode + 1, sep = “”)
nG b n . b l [ m a t c h ( d a t a bn.bl[match(data bn.bl[match(datagenus[i], nGKaTeX parse error: Expected 'EOF', got '}' at position 32: … }̲ …tip.label[min(n)], t3 t i p . l a b e l [ m a x ( n ) ] ) l e n < − a s . n u m e r i c ( b r a n c h i n g . t i m e s ( t 3 ) ) [ m a t c h ( n u m , u n i q u e ( t 3 tip.label[max(n)]) len <- as.numeric(branching.times(t3))[match(num, unique(t3 tip.label[max(n)])len<as.numeric(branching.times(t3))[match(num,unique(t3edge[, 1]))]
t3 <- bind.tip(t3, tip.label = dataKaTeX parse error: Expected 'EOF', got '}' at position 61: … }̲ } …tip.label), which(!is.na(match(t3 t i p . l a b e l , s p L i s t tip.label, spList tip.label,spListspecies))))
t3 <- drop.tip(t3, tip = toDrop)
Re <- which(!is.na(match(t3 n o d e . l a b e l , r n N 3 node.label, rnN3 node.label,rnN3node.label)))
noRe <- which(is.na(match(t3 n o d e . l a b e l , r n N 3 node.label, rnN3 node.label,rnN3node.label)))
t3 n o d e . l a b e l [ R e ] < − r n N 3 node.label[Re] <- rnN3 node.label[Re]<rnN3oriN[match(t3 n o d e . l a b e l , r n N 3 node.label, rnN3 node.label,rnN3node.label)[Re]]
t3$node.label[noRe] <- “”
}
else {
t3 <- NULL
}
if (output.spList == FALSE)
spList <- NULL
phylo <- list(Scenario.1 = t1, Scenario.2 = t2, Scenario.3 = t3, Species.list = spList.original)

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值