iroki 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1fb677d25e56e8cd82079e8a1d910c62432f24e6
4
- data.tar.gz: 6a18a69751a71d0947f630ef3eabe276d1cc0d6c
3
+ metadata.gz: 6c60af26a59b2978ad8931b008ea757ffaef827b
4
+ data.tar.gz: f0af4f62235994a3f7dd4a3032cb2a131026b8ab
5
5
  SHA512:
6
- metadata.gz: 381d8fb761e14bbd4f6be2746a4b6747964c77c80611988efa1e068da7699fbe8cac6416808d0c975a96daebd49563af97678a10b67e26c061a5dbb02d0c76c8
7
- data.tar.gz: d28bee6b62b0973de7da3daefa58da5883363f913451628c40350a5f77ec2e7ac6228b928d1a78bf6edaf431c65cdf54e689e30878bc1f0731404fc55a0df63b
6
+ metadata.gz: 85a5df98c7c2e8258ee5a3247b9dab01d8a0b69651ae6a9aac9688542b574e68e3eb04dc27504b8e4213edf02945f01c1b5e0db359cc48c4e745857701490786
7
+ data.tar.gz: b5dd66465d49c85a68366bf9be7a9b0a22580cb1199bd83279df2bbc1e695d9ff45651ccb136a52160c1e21e85006669916b9e1612905b19738d2bad7c4ecde3
data/README.md CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  # Iroki #
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/iroki.svg)](https://badge.fury.io/rb/iroki) [![Build Status](https://travis-ci.org/mooreryan/iroki.svg?branch=master)](https://travis-ci.org/mooreryan/iroki) [![Coverage Status](https://coveralls.io/repos/github/mooreryan/iroki/badge.svg?branch=master)](https://coveralls.io/github/mooreryan/iroki?branch=master)
5
+ [![Gem Version](https://badge.fury.io/rb/iroki.svg)](https://badge.fury.io/rb/iroki)
6
+ [![Build Status](https://travis-ci.org/mooreryan/iroki.svg?branch=master)](https://travis-ci.org/mooreryan/iroki)
7
+ [![Coverage Status](https://coveralls.io/repos/github/mooreryan/iroki/badge.svg?branch=master)](https://coveralls.io/github/mooreryan/iroki?branch=master)
8
+ [![GitHub issues](https://img.shields.io/github/issues/mooreryan/iroki.svg)](https://github.com/mooreryan/iroki/issues)
9
+ [![GitHub license](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://raw.githubusercontent.com/mooreryan/iroki/master/COPYING)
6
10
 
7
11
  Command line app and library code for Iroki, a phylogenetic tree
8
12
  customization program.
@@ -144,3 +148,7 @@ Add `reorder_nodes` script.
144
148
 
145
149
  - Allow unusual characters in label names ([GitHub issue](https://github.com/mooreryan/iroki/issues/2))
146
150
  - Fix no method `clean` bug ([GitHub issue](https://github.com/mooreryan/iroki/issues/3))
151
+
152
+ ### 0.0.17 ###
153
+
154
+ - Color map can override color gradient from biom file
@@ -20,14 +20,16 @@ def color_given? str
20
20
  str && !str.empty?
21
21
  end
22
22
 
23
+ # TODO spec this for hex matching
23
24
  def has_label_tag? str
24
- m = str.match(/\Alabel:(\p{Alnum}+)\Z/i)
25
+ m = str.match(/\Alabel:(#?\p{Alnum}+)\Z/i)
25
26
 
26
27
  m[1] if m
27
28
  end
28
29
 
30
+ # TODO spec this for hex matching
29
31
  def has_branch_tag? str
30
- m = str.match(/\Abranch:(\p{Alnum}+)\Z/i)
32
+ m = str.match(/\Abranch:(#?\p{Alnum}+)\Z/i)
31
33
 
32
34
  m[1] if m
33
35
  end
@@ -154,7 +156,8 @@ module Iroki
154
156
  if name_to_iroki.has_key? pattern
155
157
  pattern = name_to_iroki[pattern]
156
158
  else
157
- assert false, "String '#{pattern}' has no match in #{name_to_iroki.inspect}"
159
+ assert false, "String '#{pattern}' has no match " +
160
+ "in #{name_to_iroki.inspect}"
158
161
  end
159
162
  else
160
163
  # TODO flag bad regexp
@@ -150,6 +150,9 @@ module Iroki
150
150
  newick_f: nil,
151
151
  out_f: nil)
152
152
 
153
+ args = method(__method__).parameters.map { |arg| arg[1] }
154
+ AbortIf::logger.info "Args " + args.map { |arg| "#{arg} = #{eval(arg.to_s).inspect}" }.join(', ')
155
+
153
156
  if display_auto_color_options
154
157
  STDERR.puts "\n Choices for --auto-color ..."
155
158
  STDERR.print " - kelly: up to 19 high contrast colors (purple, orange, light blue, red, ...)\n\n"
@@ -171,10 +174,6 @@ module Iroki
171
174
  abort_if single_color && biom_f.nil?,
172
175
  "--single-color was passed but no biom file was given"
173
176
 
174
- # this should be allowed
175
- abort_if biom_f && color_map_f,
176
- "--color-map and --biom-file cannot both be specified. Try iroki --help for help."
177
-
178
177
  abort_if (biom_f || color_map_f) && color_branches.nil? && color_taxa_names.nil?,
179
178
  "No coloring options selected."
180
179
 
@@ -191,6 +190,7 @@ module Iroki
191
190
 
192
191
  color_f = nil
193
192
  if !biom_f && (color_taxa_names || color_branches)
193
+ p color_map_f
194
194
  color_f = check_file color_map_f, :color_map_f
195
195
  end
196
196
 
@@ -230,10 +230,6 @@ module Iroki
230
230
  name_map = nil
231
231
  end
232
232
 
233
- if name_map_f && color_map_f.nil? && biom_f.nil? # just name map
234
- # put node names back
235
- end
236
-
237
233
  ################
238
234
  # parse name map
239
235
  #################################################################
@@ -245,8 +241,46 @@ module Iroki
245
241
  #################################################################
246
242
  # get color patterns
247
243
  ####################
244
+ p [color_f, biom_f]
245
+ if color_map_f && biom_f
246
+ color_map_patterns = parse_color_map_iroki color_map_f,
247
+ iroki_to_name,
248
+ exact_matching: exact,
249
+ auto_color: auto_color_hash
250
+ samples, counts, is_single_group = Biom.open(biom_f, "rt").parse
248
251
 
249
- if color_f
252
+ if is_single_group
253
+ biom_patterns = SingleGroupGradient.new(samples, counts, single_color).patterns
254
+ else
255
+ g1_counts = counts.map(&:first)
256
+ g2_counts = counts.map(&:last)
257
+ biom_patterns = TwoGroupGradient.new(samples, g1_counts, g2_counts).patterns
258
+ end
259
+
260
+ # these patterns have the original name for the key, so change
261
+ # the key to the iroki name
262
+ name_to_iroki = iroki_to_name.invert
263
+ biom_patterns_iroki_name = {}
264
+ biom_patterns.each do |name, val|
265
+ biom_patterns_iroki_name[name_to_iroki[name]] = val
266
+ end
267
+
268
+ patterns = biom_patterns_iroki_name.merge(color_map_patterns) do |key, oldval, newval|
269
+ new_label = if !newval[:label].nil? && !newval[:label].empty?
270
+ newval[:label]
271
+ else
272
+ oldval[:label]
273
+ end
274
+
275
+ new_branch = if !newval[:branch].nil? && !newval[:branch].empty?
276
+ newval[:branch]
277
+ else
278
+ oldval[:branch]
279
+ end
280
+
281
+ { label: new_label, branch: new_branch }
282
+ end
283
+ elsif color_f
250
284
  patterns = parse_color_map_iroki color_f,
251
285
  iroki_to_name,
252
286
  exact_matching: exact,
@@ -280,27 +314,8 @@ module Iroki
280
314
  #################################################################
281
315
 
282
316
 
283
- # puts [:tree_after_change_names, tree.newick(indent: false)]
284
317
  nil_val = { label: "", branch: "" }
285
318
 
286
- # do this first cos everything after will use the "new" names
287
- # if name_map_f
288
- # name_map = parse_name_map name_map_f
289
-
290
- # tree.collect_node! do |node|
291
- # unless node.name.nil?
292
- # # every name is cleaned no matter what
293
- # # node.name = node.name.clean_name
294
-
295
- # if name_map.has_key?(node.name)
296
- # node.name = name_map[node.name]
297
- # end
298
- # end
299
-
300
- # node
301
- # end
302
- # end
303
-
304
319
  leaves_with_names = tree.leaves.reject { |leaf| leaf.name.nil? }
305
320
  if color_taxa_names
306
321
  leaves = leaves_with_names.map do |n|
@@ -339,12 +354,6 @@ module Iroki
339
354
  # end
340
355
 
341
356
  tre_str = tree.newick(indent: false)
342
- # tree.each_node do |node|
343
- # p [:node, node.name]
344
- # end
345
- # puts [:tree_str, tre_str]
346
- # puts [:iroki_to_name, iroki_to_name]
347
- # puts [:after_change, Iroki::Tree.gsub_iroki_newick_string(tre_str, iroki_to_name)]
348
357
 
349
358
  # this hash can be used regardless of whether a name map was used
350
359
  silly_iroki_to_name = {}
data/lib/iroki/version.rb CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  # Library metadata
20
20
  module Iroki
21
- VERSION = "0.0.16"
21
+ VERSION = "0.0.17"
22
22
  COPYRIGHT = "2015 - 2016 Ryan Moore"
23
23
  CONTACT = "moorer@udel.edu"
24
24
  WEBSITE = "https://github.com/mooreryan/iroki"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iroki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Moore
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-15 00:00:00.000000000 Z
11
+ date: 2016-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler