rbbt-util 5.17.0 → 5.17.1

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
  SHA1:
3
- metadata.gz: 0077c74cde35411d5404cfef3280cbf2364d916c
4
- data.tar.gz: 0c5c8378d8a78fe1341c17cad09d88652714899c
3
+ metadata.gz: 1ac03b5ef9630246419ee1b188f942ce49b51b5c
4
+ data.tar.gz: 7334d42c5ca19a5927a0ffb842b2cbac3f75517e
5
5
  SHA512:
6
- metadata.gz: 42f65b06e9cc69f73efc641c01693ebbeeb2d149888d78a06e3466c5dc09da467c4a36bc4cd6670839de121d1aae51c7d719f6ac6010b93b6ea43c63307d3456
7
- data.tar.gz: e4888af1096ab853bf2b30eaa72f98ba3c7c6026914e974f7e4ca49596b389112552ef71f14df6d251ce959faabddcc9b76c613bbe05ff62682923ad68385f92
6
+ metadata.gz: 04a74c22d7618b91ae8d8ea1e1eea99f05cb667aee28fecc0b66ce426f73bb112a844cb1509b7ad8af4d87bf6ea3005d148a817427c7470b4cba9a73d149ee3d
7
+ data.tar.gz: 88954c0d848fafd43e5c2defc0b8d490ebb1b3d21d3ab2a5a4dae54cc45dd23a3b9d2e457cc4854b640045006df255cbb0de49bde84f05baf7fcae7b91668424
@@ -20,7 +20,7 @@ module Association
20
20
 
21
21
  data = Persist.persist_tsv(file, "Association Database", options, persist_options) do |data|
22
22
  options = options.dup
23
- tsv = Association.database(file, options.merge(:persist => persist))
23
+ tsv = Association.database(file, options.merge(:persist => persist, :unnamed => true))
24
24
  tsv = tsv.to_double unless tsv.type == :double
25
25
 
26
26
  tsv.annotate data
@@ -46,11 +46,12 @@ class KnowledgeBase
46
46
  assignments[target] = (matches.any? ? matches.target.uniq : []) if is_wildcard? target
47
47
  end
48
48
 
49
- def find_paths(rules, all_matches, assignments)
49
+ def clean_matches(rules, all_matches, assignments)
50
50
  paths = {}
51
51
 
52
52
  rules.zip(all_matches).each do |rule, matches|
53
53
  source, db, target = rule.split /\s+/
54
+
54
55
  if is_wildcard? source
55
56
  assigned = assignments[source]
56
57
  matches = matches.select{|m| assigned.include? m.source }
@@ -63,11 +64,78 @@ class KnowledgeBase
63
64
 
64
65
  paths[rule] = matches
65
66
  end
67
+
66
68
  paths
67
69
  end
68
70
 
71
+ def _fp(rules, clean_matches, assignments)
72
+ return true if rules.empty?
73
+
74
+ rule, *rest = rules
75
+ source, db, target = rule.split /\s+/
76
+
77
+ paths = {}
78
+ matches = clean_matches[rule]
79
+ Annotated.purge(matches).each do |match|
80
+ new_assignments = nil
81
+ match_source, _sep, match_target = match.partition "~"
82
+
83
+ if is_wildcard? source
84
+ next if assignments[source] and assignments[source] != match_source
85
+ new_assignments ||= assignments.dup
86
+ new_assignments[source] = match_source
87
+ end
88
+
89
+ if is_wildcard? target
90
+ next if assignments[target] and assignments[target] != match_target
91
+ new_assignments ||= assignments.dup
92
+ new_assignments[target] = match_target
93
+ end
94
+
95
+ new_paths = _fp(rest, clean_matches, new_assignments)
96
+ next unless new_paths
97
+ paths[match] = new_paths
98
+ end
99
+
100
+ return false if paths.empty?
101
+
102
+ paths
103
+ end
104
+
105
+ def _ep(paths)
106
+ found = []
107
+ paths.each do |match,_next|
108
+ case _next
109
+ when TrueClass
110
+ found << [match]
111
+ when FalseClass
112
+ next
113
+ else
114
+ _ep(_next).each do |_n|
115
+ found << [match] + _n
116
+ end
117
+ end
118
+ end
119
+ found
120
+ end
121
+
122
+ def find_paths(rules, all_matches, assignments)
123
+ clean_matches = clean_matches(rules, all_matches, assignments)
124
+
125
+ path_hash = _fp(rules, clean_matches, {})
126
+
127
+ return [] unless path_hash
128
+ _ep(path_hash).collect do |path|
129
+ path.zip(clean_matches.values_at(*rules)).collect do |item, matches|
130
+ matches.first.annotate item.dup
131
+ end
132
+ end
133
+ end
134
+
135
+
69
136
  def traverse
70
137
  all_matches = []
138
+
71
139
  rules.each do |rule|
72
140
  rule = rule.strip
73
141
  next if rule.empty?
@@ -76,6 +144,7 @@ class KnowledgeBase
76
144
  source_entities, target_entities = identify db, source, target
77
145
 
78
146
  matches = kb.subset(db, :source => source_entities, :target => target_entities)
147
+
79
148
  if conditions
80
149
  conditions.split(/\s+/).each do |condition|
81
150
  if condition.index "="
@@ -88,6 +157,7 @@ class KnowledgeBase
88
157
  end
89
158
 
90
159
  reassign matches, source, target
160
+
91
161
  all_matches << matches
92
162
  end
93
163
 
data/lib/rbbt/persist.rb CHANGED
@@ -72,7 +72,7 @@ module Persist
72
72
  Path.setup(persistence_dir) unless Path === persistence_dir
73
73
 
74
74
  filename = perfile.gsub(/\s/,'_').gsub(/\//,'>')
75
- clean_options = options
75
+ clean_options = options.dup
76
76
  clean_options.delete :unnamed
77
77
  clean_options.delete "unnamed"
78
78
 
@@ -252,9 +252,16 @@ module TSV
252
252
  if self.include? key
253
253
  new = []
254
254
  self[key, true].each_with_index do |v,i|
255
- new << (v << values[i])
255
+ _v = values[i]
256
+ case _v
257
+ when Array
258
+ _n = v + _v
259
+ else
260
+ _n = v << _v
261
+ end
262
+ new << _n
256
263
  end
257
- self[key] == new
264
+ self[key] = new
258
265
  else
259
266
  self[key] = Array === values.first ? values.dup : values.collect{|v| [v] }
260
267
  end
@@ -284,6 +284,8 @@ module TSV
284
284
 
285
285
  data.extend TSV unless TSV === data
286
286
  self.annotate(data)
287
+ data.entity_options = self.entity_options
288
+ data.entity_templates = self.entity_templates
287
289
 
288
290
  data.key_field = new_key_field_name
289
291
  data.fields = new_field_names
@@ -535,9 +535,6 @@ module TSV
535
535
  bar = Misc.process_options options, :bar
536
536
  bar ||= Misc.process_options options, :progress
537
537
  options[:bar] = case bar
538
- when Step
539
- max = guess_max(obj)
540
- Log::ProgressBar.new_bar(max, {:desc => bar.status, :file => bar.file(:progress)})
541
538
  when String
542
539
  max = guess_max(obj)
543
540
  Log::ProgressBar.new_bar(max, {:desc => bar})
@@ -554,7 +551,12 @@ module TSV
554
551
  bar.max ||= guess_max(obj)
555
552
  bar
556
553
  else
557
- bar
554
+ if (defined? Step and Step === bar)
555
+ max = guess_max(obj)
556
+ Log::ProgressBar.new_bar(max, {:desc => bar.status, :file => bar.file(:progress)})
557
+ else
558
+ bar
559
+ end
558
560
  end
559
561
 
560
562
  if into
@@ -284,6 +284,8 @@ module TSV
284
284
 
285
285
  def cast_values_single(value)
286
286
  case
287
+ when (value.nil? or value.empty?)
288
+ nil
287
289
  when Symbol === cast
288
290
  value.send(cast)
289
291
  when Proc === cast
@@ -294,27 +296,27 @@ module TSV
294
296
  def cast_values_list(values)
295
297
  case
296
298
  when Symbol === cast
297
- values.collect{|v| v.send(cast)}
299
+ values.collect{|v| v.nil? or v.empty? ? nil : v.send(cast)}
298
300
  when Proc === cast
299
- values.collect{|v| cast.call v}
301
+ values.collect{|v| v.nil? or v.empty? ? nil : cast.call(v)}
300
302
  end
301
303
  end
302
304
 
303
305
  def cast_values_flat(values)
304
306
  case
305
307
  when Symbol === cast
306
- values.collect{|v| v.send(cast)}
308
+ values.collect{|v| v.nil? or v.empty? ? nil : v.send(cast)}
307
309
  when Proc === cast
308
- values.collect{|v| cast.call v }
310
+ values.collect{|v| v.nil? or v.empty? ? nil : cast.call(v) }
309
311
  end
310
312
  end
311
313
 
312
314
  def cast_values_double(values)
313
315
  case
314
316
  when Symbol === cast
315
- values.collect{|list| list.collect{|v| v.send(cast)}}
317
+ values.collect{|list| list.collect{|v| v.nil? or v.empty? ? nil : v.send(cast)}}
316
318
  when Proc === cast
317
- values.collect{|list| list.collect{|v| cast.call v }}
319
+ values.collect{|list| list.collect{|v| v.nil? or v.empty? ? nil : cast.call(v) }}
318
320
  end
319
321
  end
320
322
 
@@ -539,7 +541,7 @@ module TSV
539
541
  desc = monitor[:desc] if monitor.include? :desc
540
542
  step = monitor[:step] if monitor.include? :step
541
543
  end
542
- progress_monitor = Log::ProgressBar.new(size, :desc => desc)
544
+ progress_monitor = Log::ProgressBar.new_bar(size, :desc => desc)
543
545
  end
544
546
 
545
547
  # parser
@@ -548,8 +550,9 @@ module TSV
548
550
 
549
551
  while not line.nil?
550
552
  begin
551
- #progress_monitor.tick(stream.pos) if progress_monitor
552
- progress_monitor.tick if progress_monitor
553
+ if progress_monitor
554
+ progress_monitor.tick(line.bytesize)
555
+ end
553
556
 
554
557
  raise SKIP_LINE if line.empty?
555
558
 
@@ -588,6 +591,7 @@ module TSV
588
591
  end
589
592
  end
590
593
  ensure
594
+ Log::ProgressBar.remove_bar(progress_monitor)
591
595
  stream.close unless stream.closed?
592
596
  stream.join if stream.respond_to? :join and not stream.joined?
593
597
  end
data/lib/rbbt/util/R.rb CHANGED
@@ -8,13 +8,20 @@ module R
8
8
  UTIL = File.join(LIB_DIR, 'util.R')
9
9
  PLOT = File.join(LIB_DIR, 'plot.R')
10
10
 
11
- def self.run(command, options = {})
11
+ def self.run(command, source = nil, options = {})
12
12
  cmd =<<-EOF
13
13
  # Loading basic rbbt environment
14
14
  source('#{UTIL}');
15
15
 
16
16
  EOF
17
17
 
18
+ require_sources = source.collect{|source|
19
+ source = R::LIB_DIR["plot.R"] if source == :plot
20
+ "source('#{source}')"
21
+ } * ";\n" if Array === source and source.any?
22
+
23
+ cmd << require_sources + "\n\n" if require_sources
24
+
18
25
  case
19
26
  when IO === command
20
27
  cmd << command.read
@@ -16,7 +16,7 @@ module Log
16
16
  @last_count = nil
17
17
  @last_percent = nil
18
18
  @depth = depth
19
- @desc = desc
19
+ @desc = desc.nil? ? nil : desc.gsub(/\n/,' ')
20
20
  @file = file
21
21
  end
22
22
 
@@ -24,9 +24,9 @@ module Log
24
24
  (@ticks * 100) / @max
25
25
  end
26
26
 
27
- def tick(step = nil)
27
+ def tick(step = 1)
28
28
  return if ENV["RBBT_NO_PROGRESS"] == "true"
29
- @ticks += 1
29
+ @ticks += step
30
30
 
31
31
  begin
32
32
  time = Time.now
data/lib/rbbt/workflow.rb CHANGED
@@ -41,7 +41,12 @@ module Workflow
41
41
 
42
42
  def self.load_workflow_file(filename)
43
43
  begin
44
- $LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(filename)), 'lib'))
44
+ workflow_lib_dir = File.join(File.dirname(File.expand_path(filename)), 'lib')
45
+ #$LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(filename)), 'lib'))
46
+ if File.directory? workflow_lib_dir
47
+ Log.debug "Adding workflow lib directory to LOAD_PATH: #{workflow_lib_dir}"
48
+ $LOAD_PATH.unshift(workflow_lib_dir)
49
+ end
45
50
 
46
51
  filename = File.expand_path(filename)
47
52
 
@@ -8,12 +8,34 @@ class TestKnowledgeBaseTraverse < Test::Unit::TestCase
8
8
  Genomics.knowledge_base
9
9
  end
10
10
 
11
- def test_traverse
11
+ def _test_traverse
12
12
  rules = []
13
- rules << "SF3B1 pina ?1 - Method=MI:0006"
14
- rules << "TP53 pina ?1"
13
+ rules << "?1 pina SF3B1 - Method=MI:0006"
14
+ rules << "TP53 pina ?2"
15
+ rules << "?2 pina ?1"
15
16
  res = kb.traverse rules
17
+ iii res
16
18
  assert res.first.include? "?1"
17
19
  end
20
+
21
+ def _test_path
22
+ rules = []
23
+ rules << "?1 pina ARPC2"
24
+ rules << "ARPC3 pina ?2"
25
+ rules << "?2 pina ?1"
26
+ res = kb.traverse rules
27
+ assert res.first.include? "?1"
28
+ iii res.last.first
29
+ end
30
+
31
+ def test_path2
32
+ rules = []
33
+ rules << "?1 pina SF3B1"
34
+ rules << "?2 pina SF3B1"
35
+ rules << "?1 pina ?2"
36
+ res = kb.traverse rules
37
+ assert res.first.include? "?1"
38
+ iii res.last.first.first.source
39
+ end
18
40
  end
19
41
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.17.0
4
+ version: 5.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-20 00:00:00.000000000 Z
11
+ date: 2015-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake