2014-09-10 10 views
3

haplotype 네트워크를 플로팅하기 위해 {pegas}의 haploNet 기능을 사용하려고하지만 동일한 원형 차트의 다른 인구 집단으로부터 동일한 haplotype을 배치하는 데 문제가 있습니다.haploNet에서 원형 차트 플로팅 방법 Haplotype Networks {pegas}

x <- read.dna(file="x.fas",format="fasta") 
h <- haplotype(x) 
net <- haploNet(h) 
plot(net) 

내가 dnabin 데이터의 각 분류군의 원래 인구의 레이블을 설정하고 싶습니다, 그래서 난에서 일배 체형의 서로 다른 색상의 파이 차트를 (할 수 : 나는 다음과 같은 스크립트를 사용하여 일배 체형 망을 구축 할 수 있습니다 다른 인구 집단)에 대한 정보를 제공합니다. 나 또한 결과 haplotype 네트워크에서 겹치는 원을 제거하고 싶습니다.

도움 주셔서 감사합니다.

예 :이 스크립트는 {pegas}을 사용하여 일배 체형 네트워크를 구축하는 데 사용됩니다

> data(woodmouse) 
> x <- woodmouse[sample(15, size = 110, replace = TRUE), ] 
> h <- haplotype(x) 
> net <- haploNet(h) 
> plot(net, size=attr(net, "freq"), scale.ratio = 2, cex = 0.8) 

. 더 큰 원은 어떤 유형의 훨씬 더 일배 체형을 나타냅니다. 나는 어떻게 dnabin 매트릭스에서 haplotypes의 기원을 설정할 수 있었는지 알고 싶습니다. 그래서 그들은 네트워크에서 다른 색으로 나타날 것입니다.

+0

'dnabin 매트릭스 '란 무엇입니까? 샘플에 포함 된 개체 수는 얼마입니까? 다시 한번 말하지만, 원하는 출력이 무엇이되어야하는지에 대해 가능한 구체적으로 설명해야합니다. 이 함수가 플롯 할 값을 계산했는지 확인하십시오. 패키지에 익숙하지 않은 사람들에게 데이터를 설명하도록하십시오. ('pegas'는 매우 일반적인 것 같지 않습니다.) 사용자가 매우 특정한 경우, 사용자가 원하는대로 만들 수있는 플로팅 기능을 수정할 수 있기 때문입니다. 당신이 원하는 것과 데이터의 출처에 대해 나는 아직도이 질문에 답할 수있을 정도로 상세하게 부족하다고 생각한다. – MrFlick

+0

Pegas는 Population and Evolutionary Genetics Analysis System의 R 패키지입니다. dnabin은 행렬 또는 이름으로 파일에서 읽은 taxa의 이름이있는 행렬 또는 DNA 시퀀스 목록입니다. 기본적으로 시퀀스는 바이너리 형식. 이 dnabin 파일은 {pegas} 패키지에 read.dna라는 함수로 빌드됩니다. DNA의 데이터 세트를 가지고있을 때, 나는 다른 집단의 사람들로부터의 서열을 가지고있다. (예를 들어, 5 명의 인구 100 명, 각각 20 명의 개체). 나는 그것이 인구의 출처를 밝히기 위해 dnabin 행렬의 각 개체에 태그하는 법을 알고 싶습니다. –

답변

5

좋아, 당신의 예제에서 이해하려고. 당신이 가진 인구는 모집단 당 3 ~ 13 개의 표본이있는 곳에서 15 명입니다.

table(rownames(x)) 

# No0906S No0908S No0909S No0910S No0912S No0913S No1007S 
#  10  8  6  3  3  7  6 
# No1103S No1114S No1202S No1206S No1208S No304 No305 
#  4  13  9  6  9  13  7 
# No306 
#  6 

당신이 haplotype(x)을 실행

, 당신은 (당연히) 수 1 나타내는 15 개 일배 체형 : 일배 체형하기 위해 인구 1 매핑. 우리는 우리가 각 노드에서 그림의 문자를 그리는 음모를 꾸미고 동안이 테이블을 사용할 수

ind.hap<-with(
    stack(setNames(attr(h, "index"), rownames(h))), 
    table(hap=ind, pop=rownames(x)[values]) 
) 
ind.hap[1:10, 1:9] #print just a chunk 

#  pop 
# hap No0906S No0908S No0909S No0910S No0912S No0913S No1007S No1103S No1114S 
# I   0  0  0  0  0  0  0  0  0 
# II   0  0  0  0  0  0  6  0  0 
# III  0  0  0  0  0  0  0  4  0 
# IV  10  0  0  0  0  0  0  0  0 
# IX   0  0  0  0  0  0  0  0  0 
# V   0  0  6  0  0  0  0  0  0 
# VI   0  0  0  0  0  0  0  0  0 
# VII  0  0  0  0  0  7  0  0  0 
# VIII  0  0  0  0  0  0  0  0  13 
# X   0  0  0  0  0  0  0  0  0 

으로 인구 및 일배 체형의 관계를 나타내는 테이블을 만들 수 있습니다.

plot(net, size=attr(net, "freq"), scale.ratio = 2, cex = 0.8, pie=ind.hap) 
legend(50,50, colnames(ind.hap), col=rainbow(ncol(ind.hap)), pch=20) 

enter image description here

wrong.pop<-rep(letters[1:5], each=22) 
ind.hap2<-with(
    stack(setNames(attr(h, "index"), rownames(h))), 
    table(hap=ind, pop=wrong.pop[values]) 
) 

plot(net, size=attr(net, "freq"), scale.ratio = 2, cex = 0.8, pie=ind.hap2) 
legend(50,50, colnames(ind.hap2), col=rainbow(ncol(ind.hap2)), pch=20) 
다음

enter image description here

우리가 더 다양성을 볼 수 있습니다 더 나은, 우리는 각각의 샘플에 잘못된 인구를 할당 할 수있는 파이 차트를 표시하려면

각각의 일배 체형에서 우리는 인위적 이름으로 인구를 잘못 분류했기 때문에 잘 뭉치지 않습니다.

+0

Excelent! 고마워요! 나는 여전히 문제가 있습니다 : Dd 당신은 같은 색으로 다른 사람들을 어떻게 구상 할 수 있는지 알고 있습니까? (예 : No0906S No0908S No0909S No0910S를 같은 인구로 취급하고 이름을 유지하면서도 같은 색으로 네트워크) 저는 R이 어떻게 작동하는지 배우기 시작했습니다. 당신의 도움은 매우 유용했습니다! 고맙습니다. –

+0

내가 말할 수있는 한 그렇게 직접적이지는 않습니다. 그것은 분명히 논평 범위 밖입니다. 원한다면 다른 사람이 대답 할 수 있도록 새로운 질문을 게시 할 수 있습니다. – MrFlick

+2

@MrFlick이 코드에는 버그가 있습니다. 귀하의 첫 번째 플롯에서 일배 체형 "VIII"가 표본 "No1114S"에서 나타납니다. 그러나 그것이 플롯에서 어떻게 색이 칠지는 아닙니다. 나는이 문제에 [여기에] 대답했다. (http://stackoverflow.com/questions/31220586/r-how-to-plot-correct-pie-charts-in-haplonet-haplotyp-networks-pegas-ape-a/33107267 # 33107267). 간단히 말해, 진행하기 전에 레이블'h <- sort (h, what = "label")'에 의해 일배 체형 객체를 정렬해야합니다. – hugo