2016-09-30 4 views
0

here으로 정의 된 방법론을 사용하여 부트 스트랩으로 계통 발생 트리를 만들려고합니다. 거대한 데이터 세트를 가지고 있기 때문에 각 개인의 이름을 (이 예제를 위해 1,2,3,4, ...라고 명명 된) 유익하지 않습니다. 그러므로 개인의 종을 반영하기 위해 팁을 색칠하고 싶습니다. 개별 종의 정보는 분리 매트릭스라는 종에 저장됩니다 내가 적합 $ 트리 $ 라벨에있는 그것의 종과 개인의 이름을 대체하려고 할 때마다개인의 종에 의한 계통 발생 트리의 팁을 색칠하십시오.

그럼에도 불구하고
species = data.frame(Ind=c(1 ,2 ,3 ,4 ,5), 
        Spe=c("s1","se1","se2","se2","se3")) 

이, 유일한 결과는 벡터를 비우는된다. 아마도 fit은 pml 클래스의 객체이기 때문에 내 전략과 충돌이 발생하지만 확실하지는 않습니다. 개별 종에 기초한 나무의 팁을 채색하는 방법이 있습니까? 내 코드는 지금, 다음과 같습니다

library(phangorn) 
#Create a tree from data in fasta format 
dat = read.phyDat(file = "myalignment.fasta", format ="fasta") 
tree <- pratchet(dat)   # parsimony tree 
mt <- modelTest(dat, tree=tree, multicore=TRUE) 
mt[order(mt$AICc),] 
bestmodel <- mt$Model[which.min(mt$AICc)] 
env = attr(mt, "env") 
fitStart = eval(get("GTR+G+I", env), env) 
fit = optim.pml(fitStart, rearrangement = "stochastic", optGamma=TRUE, optInv=TRUE, model="GTR") 
bs = bootstrap.pml(fit, bs=100, optNni=TRUE, multicore=TRUE) 

#Replace the names with the species... 
fit$tree$tip.label <- species[which(species[,1] == fit$tree$tip.label),2] 
#If I print fit$tree$tip.label here, the output is factor(0) 

#...and create the tree with colored tips 
plotBS(midpoint(fit$tree), bs, p = 50, type="p", show.tip.label = FALSE) 
tiplabels(pch=19, col = as.factor(fit$tree$tip.label), adj = 2.5, cex = 2) 

재현 예

저장을 위의 이름이 "myalignment.fasta"실행 코드와 다음. 문제는 색상이 아닌 레이블로 포인트를 플롯리스트 인 경우

>1 
AACCAGGAGAAAATTAA 
>2 
AAAAA---GAAAATTAA 
>3 
ACACAGGAGAAAATTAA 
>4 
AACCTTGAGAAAATTAT 
>5 
CCTGAGGAGAAAATTAA 
+0

는 최소 [재현성 예]를 생성한다 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). 샘플 데이터를 포함하십시오 (로컬 컴퓨터에서 파일을 읽을 수 없습니다). 코드를 R에 복사/붙여 넣기 할 수 있다면 테스트와 도움이 더 쉽습니다. 질문이 플로팅에 관한 것이라면 질문과 관련이없는 코드를 삭제하십시오. – MrFlick

+0

종종 패키지 함수에는 함수가 작동하는 방식을 보여주기 위해 내장 된 데이터 세트를 사용하는 샘플 코드가 포함되어 있습니다. 또한'dput()'은 포함 된 링크에 따라 변수를 다시 생성하는 데 사용할 수 있습니다. 질문 자체에 사용할 최소한의 데이터를 만들 수 있습니다. 사람들이 당신을 쉽게 도울 수 있도록하려는 경우에만 이러한 것들을 제안합니다. – MrFlick

+0

@MrFlick 코드를 재현하는 데 사용할 수있는 최소한의 "myalignment.fasta"를 만들었습니다. – j91

답변

1

그래서, 당신은 그냥 만들어 gynmastics의 조금을 할

tiplabels(pch=19, cex=2, 
    col = species$Spe[match(fit$tree$tip.label, species$Ind)]) 

을 수행 할 수 있습니다 그것은 노는 장난감 예를 만들어야합니다 라벨이 종과 일치하는지 확인합니다 (이 예에서는 동일한 순서 임).

enter image description here