bio-nwk 0.1.3 → 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 +41 -0
- metadata +2 -2
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,16 +18,19 @@ class Bio::Tree
|
|
17
18
|
return(rv)
|
18
19
|
end
|
19
20
|
|
21
|
+
|
20
22
|
def all_nodes_of_subtree(node)
|
21
23
|
[leaves(node), tips(node)].flatten
|
22
24
|
end
|
23
25
|
|
26
|
+
|
24
27
|
def cleanName!
|
25
28
|
allTips.each do |tip|
|
26
29
|
tip.name.gsub!(' ', '_')
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
33
|
+
|
30
34
|
def twoTaxaNode(node)
|
31
35
|
if node.isTip?(self)
|
32
36
|
return(node)
|
@@ -34,6 +38,7 @@ class Bio::Tree
|
|
34
38
|
return children(node).map{|child|tips(child).sort_by{|i|i.name}.shift}.sort_by{|i|i.name}
|
35
39
|
end
|
36
40
|
end
|
41
|
+
|
37
42
|
|
38
43
|
def twoTaxaNodeName(node)
|
39
44
|
if node.isTip?(self)
|
@@ -43,6 +48,7 @@ class Bio::Tree
|
|
43
48
|
end
|
44
49
|
end
|
45
50
|
|
51
|
+
|
46
52
|
def twoTaxaNodeNameStr(node, sep='|')
|
47
53
|
a = twoTaxaNodeName(node)
|
48
54
|
if a.is_a?(Array)
|
@@ -52,6 +58,7 @@ class Bio::Tree
|
|
52
58
|
end
|
53
59
|
end
|
54
60
|
|
61
|
+
|
55
62
|
def sisters(node)
|
56
63
|
if node == root
|
57
64
|
return([])
|
@@ -60,10 +67,12 @@ class Bio::Tree
|
|
60
67
|
end
|
61
68
|
end
|
62
69
|
|
70
|
+
|
63
71
|
def sister(node)
|
64
72
|
return(sisters(node)[0])
|
65
73
|
end
|
66
74
|
|
75
|
+
|
67
76
|
def internal_nodes
|
68
77
|
a = Array.new
|
69
78
|
nodes.each do |node|
|
@@ -74,6 +83,7 @@ class Bio::Tree
|
|
74
83
|
return(a)
|
75
84
|
end
|
76
85
|
|
86
|
+
|
77
87
|
def allSubtreeRepresentatives
|
78
88
|
arr = Array.new
|
79
89
|
nodes.each do |node|
|
@@ -82,6 +92,7 @@ class Bio::Tree
|
|
82
92
|
return(arr)
|
83
93
|
end
|
84
94
|
|
95
|
+
|
85
96
|
def allTips
|
86
97
|
a = Array.new
|
87
98
|
nodes.each do |node|
|
@@ -90,6 +101,7 @@ class Bio::Tree
|
|
90
101
|
return(a)
|
91
102
|
end
|
92
103
|
|
104
|
+
|
93
105
|
def outputNexus(isTranslate=false, isTip2Index=false)
|
94
106
|
puts "#NEXUS"
|
95
107
|
puts
|
@@ -101,6 +113,7 @@ class Bio::Tree
|
|
101
113
|
newickIndexToTip if isTip2Index
|
102
114
|
end
|
103
115
|
|
116
|
+
|
104
117
|
def cleanNewick
|
105
118
|
output = output_newick
|
106
119
|
output.gsub!(/[\n\s]/, '')
|
@@ -108,6 +121,7 @@ class Bio::Tree
|
|
108
121
|
return(output)
|
109
122
|
end
|
110
123
|
|
124
|
+
|
111
125
|
def tipToIndex
|
112
126
|
@tip2index = Hash.new
|
113
127
|
@index2tip = Hash.new
|
@@ -117,6 +131,7 @@ class Bio::Tree
|
|
117
131
|
end
|
118
132
|
end
|
119
133
|
|
134
|
+
|
120
135
|
def newickTipToIndex()
|
121
136
|
tipToIndex
|
122
137
|
allTips.each do |tip|
|
@@ -125,6 +140,7 @@ class Bio::Tree
|
|
125
140
|
end
|
126
141
|
end
|
127
142
|
|
143
|
+
|
128
144
|
def newickIndexToTip()
|
129
145
|
tipToIndex if @index2tip.empty?
|
130
146
|
allTips.each do |tip|
|
@@ -133,6 +149,7 @@ class Bio::Tree
|
|
133
149
|
end
|
134
150
|
end
|
135
151
|
|
152
|
+
|
136
153
|
def getAlldistances()
|
137
154
|
distances = Array.new
|
138
155
|
each_edge do |node0, node1, edge|
|
@@ -142,6 +159,7 @@ class Bio::Tree
|
|
142
159
|
return(distances)
|
143
160
|
end
|
144
161
|
|
162
|
+
|
145
163
|
def normalizeBranchLength!()
|
146
164
|
min, max = getAlldistances().minmax
|
147
165
|
each_edge do |node0, node1, edge|
|
@@ -149,6 +167,7 @@ class Bio::Tree
|
|
149
167
|
end
|
150
168
|
end
|
151
169
|
|
170
|
+
|
152
171
|
def normalizeBranchLengthGainAndLoss!()
|
153
172
|
min, max = getAlldistances().select{|i|i>=0}.minmax
|
154
173
|
each_edge do |node0, node1, edge|
|
@@ -161,6 +180,27 @@ class Bio::Tree
|
|
161
180
|
end
|
162
181
|
end
|
163
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
|
+
|
164
204
|
private
|
165
205
|
def translate
|
166
206
|
# TRANSLATE
|
@@ -212,3 +252,4 @@ def getTreeObjFromMcmctree(tree_file)
|
|
212
252
|
return([first_line, treeio])
|
213
253
|
end
|
214
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
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|