bio-nwk 0.1.1 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bio/nwk/version.rb +1 -1
- data/lib/bio/nwk.rb +61 -0
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5f845416e561baa214dee9ad326763f784b5ca2f891bdb01c4deb9572f9ca23
|
4
|
+
data.tar.gz: e7720ae89b70955493c510b4291ae8f2125e00a6d83e88d4274fa8b3490b137a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a252ea335e65cbf252f3482a5fb93d5c33499df3cc401932de7db4c491628c1e3c72e9628613cf66bc632a9723bf2c541cd76c583c8aca3e8d1a456d17d71676
|
7
|
+
data.tar.gz: 960aa5a028aa7d475654d80683983f0b2f1900aaa665f09a37fa776d67bec11992ed0b9328c9d1aeb2a9fbf1bf884ee39629236f2ab70e41b6445289e3b95cdc
|
data/lib/bio/nwk/version.rb
CHANGED
data/lib/bio/nwk.rb
CHANGED
@@ -7,6 +7,7 @@ class Bio::Tree
|
|
7
7
|
DELIMITER = ';'
|
8
8
|
attr_accessor :tip2index, :index2tip
|
9
9
|
|
10
|
+
|
10
11
|
def tips(node)
|
11
12
|
rv = Array.new
|
12
13
|
if node.isTip?(self)
|
@@ -17,12 +18,19 @@ class Bio::Tree
|
|
17
18
|
return(rv)
|
18
19
|
end
|
19
20
|
|
21
|
+
|
22
|
+
def all_nodes_of_subtree(node)
|
23
|
+
[leaves(node), tips(node)].flatten
|
24
|
+
end
|
25
|
+
|
26
|
+
|
20
27
|
def cleanName!
|
21
28
|
allTips.each do |tip|
|
22
29
|
tip.name.gsub!(' ', '_')
|
23
30
|
end
|
24
31
|
end
|
25
32
|
|
33
|
+
|
26
34
|
def twoTaxaNode(node)
|
27
35
|
if node.isTip?(self)
|
28
36
|
return(node)
|
@@ -30,6 +38,7 @@ class Bio::Tree
|
|
30
38
|
return children(node).map{|child|tips(child).sort_by{|i|i.name}.shift}.sort_by{|i|i.name}
|
31
39
|
end
|
32
40
|
end
|
41
|
+
|
33
42
|
|
34
43
|
def twoTaxaNodeName(node)
|
35
44
|
if node.isTip?(self)
|
@@ -39,6 +48,17 @@ class Bio::Tree
|
|
39
48
|
end
|
40
49
|
end
|
41
50
|
|
51
|
+
|
52
|
+
def twoTaxaNodeNameStr(node, sep='|')
|
53
|
+
a = twoTaxaNodeName(node)
|
54
|
+
if a.is_a?(Array)
|
55
|
+
return(a.join(sep))
|
56
|
+
else
|
57
|
+
return(a)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
42
62
|
def sisters(node)
|
43
63
|
if node == root
|
44
64
|
return([])
|
@@ -47,10 +67,12 @@ class Bio::Tree
|
|
47
67
|
end
|
48
68
|
end
|
49
69
|
|
70
|
+
|
50
71
|
def sister(node)
|
51
72
|
return(sisters(node)[0])
|
52
73
|
end
|
53
74
|
|
75
|
+
|
54
76
|
def internal_nodes
|
55
77
|
a = Array.new
|
56
78
|
nodes.each do |node|
|
@@ -61,6 +83,7 @@ class Bio::Tree
|
|
61
83
|
return(a)
|
62
84
|
end
|
63
85
|
|
86
|
+
|
64
87
|
def allSubtreeRepresentatives
|
65
88
|
arr = Array.new
|
66
89
|
nodes.each do |node|
|
@@ -69,6 +92,7 @@ class Bio::Tree
|
|
69
92
|
return(arr)
|
70
93
|
end
|
71
94
|
|
95
|
+
|
72
96
|
def allTips
|
73
97
|
a = Array.new
|
74
98
|
nodes.each do |node|
|
@@ -77,6 +101,7 @@ class Bio::Tree
|
|
77
101
|
return(a)
|
78
102
|
end
|
79
103
|
|
104
|
+
|
80
105
|
def outputNexus(isTranslate=false, isTip2Index=false)
|
81
106
|
puts "#NEXUS"
|
82
107
|
puts
|
@@ -88,6 +113,7 @@ class Bio::Tree
|
|
88
113
|
newickIndexToTip if isTip2Index
|
89
114
|
end
|
90
115
|
|
116
|
+
|
91
117
|
def cleanNewick
|
92
118
|
output = output_newick
|
93
119
|
output.gsub!(/[\n\s]/, '')
|
@@ -95,6 +121,7 @@ class Bio::Tree
|
|
95
121
|
return(output)
|
96
122
|
end
|
97
123
|
|
124
|
+
|
98
125
|
def tipToIndex
|
99
126
|
@tip2index = Hash.new
|
100
127
|
@index2tip = Hash.new
|
@@ -104,6 +131,7 @@ class Bio::Tree
|
|
104
131
|
end
|
105
132
|
end
|
106
133
|
|
134
|
+
|
107
135
|
def newickTipToIndex()
|
108
136
|
tipToIndex
|
109
137
|
allTips.each do |tip|
|
@@ -112,6 +140,7 @@ class Bio::Tree
|
|
112
140
|
end
|
113
141
|
end
|
114
142
|
|
143
|
+
|
115
144
|
def newickIndexToTip()
|
116
145
|
tipToIndex if @index2tip.empty?
|
117
146
|
allTips.each do |tip|
|
@@ -120,6 +149,7 @@ class Bio::Tree
|
|
120
149
|
end
|
121
150
|
end
|
122
151
|
|
152
|
+
|
123
153
|
def getAlldistances()
|
124
154
|
distances = Array.new
|
125
155
|
each_edge do |node0, node1, edge|
|
@@ -129,6 +159,7 @@ class Bio::Tree
|
|
129
159
|
return(distances)
|
130
160
|
end
|
131
161
|
|
162
|
+
|
132
163
|
def normalizeBranchLength!()
|
133
164
|
min, max = getAlldistances().minmax
|
134
165
|
each_edge do |node0, node1, edge|
|
@@ -136,6 +167,7 @@ class Bio::Tree
|
|
136
167
|
end
|
137
168
|
end
|
138
169
|
|
170
|
+
|
139
171
|
def normalizeBranchLengthGainAndLoss!()
|
140
172
|
min, max = getAlldistances().select{|i|i>=0}.minmax
|
141
173
|
each_edge do |node0, node1, edge|
|
@@ -148,6 +180,27 @@ class Bio::Tree
|
|
148
180
|
end
|
149
181
|
end
|
150
182
|
|
183
|
+
|
184
|
+
def getNameTipRela()
|
185
|
+
tip2name, name2tip = [Hash.new, Hash.new]
|
186
|
+
allTips.each do |tip|
|
187
|
+
tip2name[tip] = tip.name
|
188
|
+
name2tip[tip.name] = tip
|
189
|
+
end
|
190
|
+
return([name2tip, tip2name])
|
191
|
+
end
|
192
|
+
|
193
|
+
|
194
|
+
def getNameNodeRela()
|
195
|
+
node2name, name2node = [Hash.new, Hash.new]
|
196
|
+
nodes.each do |node|
|
197
|
+
node2name[node] = node.name
|
198
|
+
name2node[node.name] = node
|
199
|
+
end
|
200
|
+
return([name2node, node2name])
|
201
|
+
end
|
202
|
+
|
203
|
+
|
151
204
|
private
|
152
205
|
def translate
|
153
206
|
# TRANSLATE
|
@@ -192,3 +245,11 @@ def getTreeObjFromNwkString(nwk_str)
|
|
192
245
|
end
|
193
246
|
|
194
247
|
|
248
|
+
def getTreeObjFromMcmctree(tree_file)
|
249
|
+
first_line = `head -1 #{tree_file}`.chomp
|
250
|
+
tree_txt = `tail -1 #{tree_file}`.chomp
|
251
|
+
treeio = Bio::Newick.new(tree_txt).tree
|
252
|
+
return([first_line, treeio])
|
253
|
+
end
|
254
|
+
|
255
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bio-nwk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sishuo Wang
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -87,11 +87,11 @@ files:
|
|
87
87
|
- lib/bio-nwk.rb
|
88
88
|
- lib/bio/nwk.rb
|
89
89
|
- lib/bio/nwk/version.rb
|
90
|
-
homepage:
|
90
|
+
homepage:
|
91
91
|
licenses:
|
92
92
|
- MIT
|
93
93
|
metadata: {}
|
94
|
-
post_install_message:
|
94
|
+
post_install_message:
|
95
95
|
rdoc_options: []
|
96
96
|
require_paths:
|
97
97
|
- lib
|
@@ -106,9 +106,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
|
-
|
110
|
-
|
111
|
-
signing_key:
|
109
|
+
rubygems_version: 3.2.3
|
110
|
+
signing_key:
|
112
111
|
specification_version: 4
|
113
112
|
summary: Some codes for parsing newick tree.
|
114
113
|
test_files: []
|