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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03f6be5c7eebbea8000cc8df4593339ecfc3ecd905b00ddb4ff17c2ccb5acc2d
4
- data.tar.gz: eb4ed5e27f07a141d3dd9e9bac24e4f9fb979c1dd2e1070d2f43c5d10d309bef
3
+ metadata.gz: b5f845416e561baa214dee9ad326763f784b5ca2f891bdb01c4deb9572f9ca23
4
+ data.tar.gz: e7720ae89b70955493c510b4291ae8f2125e00a6d83e88d4274fa8b3490b137a
5
5
  SHA512:
6
- metadata.gz: fc5f5ff47d1df75f9b0a0660345e6e8b839fd0bc5cce43201a6865681c3a0d805947a73eb6a58aab1e302194785f6514c1fac493226d580297e3ed6c2b602028
7
- data.tar.gz: f6b20529784c8339cdb17c4ef53c69942f1b896953e8821667e4b9921a1aba520eda97a6c79f96a3111a78b74262c92fec1fe1bd6b0e82ec60023505f94d9355
6
+ metadata.gz: a252ea335e65cbf252f3482a5fb93d5c33499df3cc401932de7db4c491628c1e3c72e9628613cf66bc632a9723bf2c541cd76c583c8aca3e8d1a456d17d71676
7
+ data.tar.gz: 960aa5a028aa7d475654d80683983f0b2f1900aaa665f09a37fa776d67bec11992ed0b9328c9d1aeb2a9fbf1bf884ee39629236f2ab70e41b6445289e3b95cdc
@@ -1,5 +1,5 @@
1
1
  module Bio
2
2
  module Nwk
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.4"
4
4
  end
5
5
  end
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.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: 2020-07-06 00:00:00.000000000 Z
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
- rubyforge_project:
110
- rubygems_version: 2.7.3
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: []