2

Newick ツリーを ape (read.tree) で R にインポートしました。問題は、1000 個のヒントがあるため、ツリーをプロットするとラベルが重なることです。非常に長い表現なので、ここではツリーをコピーしません。どの個体が木のどの先端にいるかを確認する方法はありますか?

1000個の標本のうち、それらがチップに1から1000まで順番に配置されているとは思いませんが、ツリーが何らかの形でそれらを再配置したとは思いません...したがって、チップラベルまたは何かの新しいシーケンスが必要になります...

ツリーは次のようになります。

![ここに画像の説明を入力][1]

色を無視して、一連のヒントを取得できるようにする必要があります...下からの最初のヒントがヒント79で、次にその上のヒントが82、次に87という単一のケースを考えてみてください.. ..

ここのような木を考えてください

((((penHA34a,penHA34b,penHA32b,penHA32a,penSH30b,penSH30a,penSH28b,penSH28a,penIT13b,penIT13a,penIT12a,firSA26b,firGU7b,firGU8b,firSP18b,firSP20b,firSP36b,firSP39b,penSH31a,penSH31b),(firSP19b,(firSP17b,penIT12b))),firSA24a,firSA24b,firSA25a,firSA26a,firGU7a,firGU8a,firSP17a,firSP18a,firSP19a,firSP20a,firSP36a,firSP39a,(firSA25b,firSP40b),firSP40a,penIT11b,penIT11a),(ovi47a,ovi47b));

また、そこからヒントラベルだけを含むベクトルを取得するにはどうすればよいですか?

4

2 に答える 2

3

1000 の分類群の系統発生のヒントを読みやすくするのは難しいでしょうが、1) ツリーをファンとして描く、2) ヒント ラベルのサイズを小さくする、3) 図の余白を小さくする、の 3 つが役立つでしょう。 .

# Load ape
library(ape)

# Generate 1000 taxa tree
tree <- rcoal(1000)

# Reduce figure margins to 0
par(mar=c(0,0,0,0))

# Plot fan tree with reduced tip label size
plot(tree, type="fan", cex=0.2)

実際に近づいて目を細めると、結果のツリーが読みやすいことがわかりました。

于 2016-05-10T22:27:54.590 に答える
0

data.tree はあなたの友達です。例えば:

newick <- '((((penHA34a,penHA34b,penHA32b,penHA32a,penSH30b,penSH30a,penSH28b,penSH28a,penIT13b,penIT13a,penIT12a,firSA26b,firGU7b,firGU8b,firSP18b,firSP20b,firSP36b,firSP39b,penSH31a,penSH31b),(firSP19b,(firSP17b,penIT12b))),firSA24a,firSA24b,firSA25a,firSA26a,firGU7a,firGU8a,firSP17a,firSP18a,firSP19a,firSP20a,firSP36a,firSP39a,(firSA25b,firSP40b),firSP40a,penIT11b,penIT11a),(ovi47a,ovi47b));'
library(data.tree)
library(ape)
phylo <- read.tree(text = newick)
tree <- as.Node(phylo)

#find a specific individual:
tree$FindNode('firSA24b')$path

これにより、次のことが得られます。

[1] "43/44/firSA24b"

ツリー全体を印刷するか、ファイルに出力して特定のノードを探すことができます。

print(tree)
#print a sub-tree
tree$FindNode('45')
#print only part of the tree:
print(tree, pruneMethod = "dist", limit = 25)
#slightly more sophisticated:
print(tree, pruneFun = function(node) !node$isLeaf || node$position <= 5)
#or:
print(tree, pruneFun = function(node) !node$isLeaf || substr(node$name, 1, 4) == 'firS')

最後のステートメントは次のように出力します。

                      levelName
1  43                          
2   ¦--44                      
3   ¦   ¦--45                  
4   ¦   ¦   ¦--46              
5   ¦   ¦   ¦   ¦--firSA26b    
6   ¦   ¦   ¦   ¦--firSP18b    
7   ¦   ¦   ¦   ¦--firSP20b    
8   ¦   ¦   ¦   ¦--firSP36b    
9   ¦   ¦   ¦   °--firSP39b    
10  ¦   ¦   °--47              
11  ¦   ¦       ¦--firSP19b    
12  ¦   ¦       °--48          
13  ¦   ¦           °--firSP17b
14  ¦   ¦--firSA24a            
15  ¦   ¦--firSA24b            
16  ¦   ¦--firSA25a            
17  ¦   ¦--firSA26a            
18  ¦   ¦--firSP17a            
19  ¦   ¦--firSP18a            
20  ¦   ¦--firSP19a            
21  ¦   ¦--firSP20a            
22  ¦   ¦--firSP36a            
23  ¦   ¦--firSP39a            
24  ¦   ¦--49                  
25  ¦   ¦   ¦--firSA25b        
26  ¦   ¦   °--firSP40b        
27  ¦   °--firSP40a            
28  °--50    

ツリー全体のヒントを見つけるのも簡単です。

Get(tree$leaves, "name")

これにより、次の結果が得られます。

  penHA34a   penHA34b   penHA32b   penHA32a   penSH30b   penSH30a   penSH28b   penSH28a   penIT13b   penIT13a   penIT12a   firSA26b    firGU7b 
"penHA34a" "penHA34b" "penHA32b" "penHA32a" "penSH30b" "penSH30a" "penSH28b" "penSH28a" "penIT13b" "penIT13a" "penIT12a" "firSA26b"  "firGU7b" 
   firGU8b   firSP18b   firSP20b   firSP36b   firSP39b   penSH31a   penSH31b   firSP19b   firSP17b   penIT12b   firSA24a   firSA24b   firSA25a 
 "firGU8b" "firSP18b" "firSP20b" "firSP36b" "firSP39b" "penSH31a" "penSH31b" "firSP19b" "firSP17b" "penIT12b" "firSA24a" "firSA24b" "firSA25a" 
  firSA26a    firGU7a    firGU8a   firSP17a   firSP18a   firSP19a   firSP20a   firSP36a   firSP39a   firSA25b   firSP40b   firSP40a   penIT11b 
"firSA26a"  "firGU7a"  "firGU8a" "firSP17a" "firSP18a" "firSP19a" "firSP20a" "firSP36a" "firSP39a" "firSA25b" "firSP40b" "firSP40a" "penIT11b" 
  penIT11a     ovi47a     ovi47b 
"penIT11a"   "ovi47a"   "ovi47b" 

または、特定のパスに対して同じことを行うことができます。

Get(tree$Climb(44, 45, 47, 48)$children, "name")
于 2016-05-11T03:59:52.477 に答える