rbbt-util 5.14.7 → 5.14.8

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: fc4fe61feb344cc28a196b45ce9a9a3f5f0cf8a1
4
- data.tar.gz: 36d5dad6c8f90493f0a998c9078c74a8836084a9
3
+ metadata.gz: d676e9769e4e13d664c42a65e74ec8c7d70bbe63
4
+ data.tar.gz: f3a75c5456360ae6e31d713ef964650adcb2edb4
5
5
  SHA512:
6
- metadata.gz: 62bcc281c2dc513b52b67515b8df46b6151b318a6660a5096b7913637779e550a24c8ade84f2847c7af18760526abd5ac30a1f1d912651c44f8db33d16b9acb8
7
- data.tar.gz: d89848d0ec11114934bb762fbdde56e5c2d81216925b5450cf223f120798d1378428c707326ac6d3840b00726e24d06c89cd0d733c1e776eaf1700a913a10796
6
+ metadata.gz: e2cb4d0761e9b44f8d108888a966b874f572f144b16620754c6551349fc8c8d04ee061393e7032d829a3fa1f0e72a04185e5f6af3d5c264d4582daf7524063e9
7
+ data.tar.gz: 8402954673614b9b0ff6c4b73237a47d1f077ef795f9c452f96fab732e665428cb470e2ae38c12ed3c818c0c1b2d512d8322444020ba3b1783e528c30ce8a048
@@ -96,6 +96,7 @@ module Association
96
96
 
97
97
  def subset_entities(entities)
98
98
  source, target = select_entities(entities)
99
+ source = :all if source.nil? and target.nil?
99
100
  raise "Please specify source entities" if source.nil?
100
101
  target = :all if target.nil?
101
102
  return if Array === target and target.empty?
@@ -38,7 +38,7 @@ module AssociationItem
38
38
  end
39
39
 
40
40
  property :value => :array2single do
41
- value = knowledge_base.get_index(database).chunked_values_at self
41
+ value = (reverse ? knowledge_base.get_index(database).reverse : knowledge_base.get_index(database)).chunked_values_at self
42
42
  value.collect{|v| NamedArray.setup(v, knowledge_base.get_index(database).fields)}
43
43
  end
44
44
 
@@ -46,6 +46,7 @@ module AssociationItem
46
46
  fields = knowledge_base.index_fields(database)
47
47
  return [{}] * self.length if fields.nil? or fields.empty?
48
48
 
49
+ value = self.value
49
50
  value.collect{|v|
50
51
  Hash[*fields.zip(v).flatten]
51
52
  }
@@ -12,19 +12,22 @@ module Association
12
12
 
13
13
  def self.add_reciprocal(tsv)
14
14
 
15
- new = {}
15
+ new = tsv.dup
16
16
  tsv.with_unnamed do
17
17
  tsv.through do |key, values|
18
- new[key] ||= values
19
- Misc.zip_fields(values).each do |fields|
20
- target, *rest = fields
21
-
22
- target_values = new[target] || tsv[target] || [[]] * values.length
23
- zipped_target_values = Misc.zip_fields(target_values)
24
-
25
- zipped_target_values << ([key].concat rest)
26
-
27
- new_values = Misc.zip_fields zipped_target_values
18
+ Misc.zip_fields(values).each do |zipped|
19
+ target, *rest = zipped
20
+
21
+ target_values = new[target] || []
22
+ if target_values and target_values.any?
23
+ zipped_target_values = Misc.zip_fields(target_values)
24
+
25
+ zipped_target_values << ([key].concat rest)
26
+
27
+ new_values = Misc.zip_fields zipped_target_values
28
+ else
29
+ new_values = [[key], rest.collect{|v| [v]}]
30
+ end
28
31
 
29
32
  new[target] = new_values
30
33
  end
@@ -196,30 +196,37 @@ class KnowledgeBase
196
196
 
197
197
  def identify_source(name, entity)
198
198
  database = get_database(name, :persist => true)
199
- return entity if database.include? entity
199
+ return entity if Symbol === entity or (String === entity and database.include? entity)
200
200
  source = source(name)
201
201
  @identifiers[name] ||= {}
202
202
  @identifiers[name]['source'] ||= begin
203
203
  if database.identifier_files.any?
204
204
  if TSV.parse_header(database.identifier_files.first).all_fields.include? source
205
- TSV.index(database.identifiers, :target => source, :persist => true)
205
+ TSV.index(database.identifiers, :target => source, :persist => true, :order => true)
206
206
  else
207
207
  {}
208
208
  end
209
209
  else
210
210
  if TSV.parse_header(Organism.identifiers(namespace)).all_fields.include? source
211
- Organism.identifiers(namespace).index(:target => source, :persist => true)
211
+ Organism.identifiers(namespace).index(:target => source, :persist => true, :order => true)
212
212
  else
213
213
  {}
214
214
  end
215
215
  end
216
216
  end
217
217
 
218
- @identifiers[name]['source'][entity]
218
+ if Array === entity
219
+ @identifiers[name]['source'].chunked_values_at(entity).zip(entity).collect{|p|
220
+ p.compact.first
221
+ }
222
+ else
223
+ @identifiers[name]['source'][entity] || entity
224
+ end
219
225
  end
220
226
 
221
227
  def identify_target(name, entity)
222
228
  database = get_database(name, :persist => true)
229
+ return entity if Symbol === entity
223
230
  target = target(name)
224
231
 
225
232
  @identifiers[name] ||= {}
@@ -238,7 +245,13 @@ class KnowledgeBase
238
245
  end
239
246
  end
240
247
  end
241
- @identifiers[name]['target'][entity]
248
+ if Array === entity
249
+ @identifiers[name]['target'].chunked_values_at(entity).zip(entity).collect{|p|
250
+ p.compact.first
251
+ }
252
+ else
253
+ @identifiers[name]['target'][entity] || entity
254
+ end
242
255
  end
243
256
 
244
257
  def identify(name, entity)
@@ -593,6 +593,7 @@ module TSV
593
593
  end
594
594
  with_unnamed do
595
595
  <<-EOF
596
+ Filename = #{Path === filename ? filename.find : (filename || "No filename")}
596
597
  Key field = #{key_field || "*No key field*"}
597
598
  Fields = #{fields ? Misc.fingerprint(fields) : "*No field info*"}
598
599
  Type = #{type}
@@ -7,7 +7,13 @@ module TSV
7
7
  identifiers, persist_input = Misc.process_options options, :identifiers, :persist_input
8
8
 
9
9
  if not tsv.fields.include? format
10
- tsv = tsv.annotate(Hash[*tsv.keys.zip(tsv.values.collect{|l| l.dup}).flatten(1)])
10
+ new = {}
11
+ tsv.each do |k,v|
12
+ new[k] = v.dup
13
+ end
14
+ orig_fields = tsv.fields
15
+ tsv = tsv.annotate new
16
+ new.fields = new.fields.collect{|f| "TMP-" << f }
11
17
 
12
18
  orig_type = tsv.type
13
19
  tsv = tsv.to_double if orig_type != :double
@@ -18,12 +24,14 @@ module TSV
18
24
  tsv = tsv.attach identifiers, :fields => [format], :persist_input => true
19
25
  end
20
26
 
21
- tsv = tsv.reorder(format, tsv.fields - [format])
27
+ tsv = tsv.reorder(format, tsv.fields[0..-2])
22
28
 
23
29
  tsv = tsv.to_flat if orig_type == :flat
24
30
 
25
31
  tsv = tsv.to_list(&block) if orig_type == :list
26
32
 
33
+ tsv.fields = orig_fields
34
+
27
35
  tsv
28
36
  else
29
37
  tsv.reorder(format)
@@ -15,8 +15,9 @@ module NamedArray
15
15
  end
16
16
 
17
17
  def self.setup(array, fields, key = nil, entity_options = nil, entity_templates = nil)
18
+ return array if array.nil?
18
19
  array.extend NamedArray unless NamedArray === array
19
- array.fields = fields
20
+ array.fields = Annotated.purge fields
20
21
  array.key = key
21
22
  array.entity_options = entity_options unless entity_options.nil?
22
23
  array.entity_templates = entity_templates unless entity_templates.nil?
@@ -112,9 +113,12 @@ module NamedArray
112
113
 
113
114
  def each(&block)
114
115
  if defined?(Entity) and not @fields.nil? and not @fields.empty?
115
- @fields.zip(self).each do |field,elem|
116
+ i = 0
117
+ super do |elem|
118
+ field = @fields[i]
116
119
  elem = prepare_entity(elem, field, entity_options)
117
120
  yield(elem)
121
+ i += 1
118
122
  elem
119
123
  end
120
124
  else
@@ -499,12 +499,13 @@ module Workflow
499
499
  real_dependencies << case dependency
500
500
  when Array
501
501
  inputs = inputs.dup
502
+ workflow, task, options = dependency
502
503
  options = dependency.last if Hash === dependency.last
503
504
  options.each{|i,v|
504
505
  case v
505
506
  when Symbol
506
507
  rec_dependency = real_dependencies.collect{|d| [d, d.dependencies].flatten}.flatten.select{|d| d.task.name == v }.first
507
- rec_dependency = rec_dependency.run unless (dependency.first.tasks[dependency[1]].input_options[i] || {})[:stream]
508
+ rec_dependency = rec_dependency.run(true).grace.join.load unless (dependency.first.tasks[dependency[1]].input_options[i] || {})[:stream]
508
509
  inputs[i] = rec_dependency
509
510
  else
510
511
  inputs[i] = v
@@ -14,11 +14,12 @@ Access workflow knowledge base
14
14
 
15
15
  -h--help Show this help:
16
16
  -cl--clean Clean the last step of the job so that it gets recomputed:
17
+ -s--source_entities* Source entities
17
18
  -sf--source_format* Source format
18
- -se--source_entities* Source entities
19
+ -t--target_entities* Target entities
19
20
  -tf--target_format* Target format
20
- -te--target_entities* Target entities
21
- -i--info Print information on matches
21
+ -d--details Print details on matches
22
+ -i--identify Attempt to identify entities by identifier translation
22
23
  EOF
23
24
 
24
25
  workflow = ARGV.shift
@@ -34,12 +35,14 @@ workflow = Workflow.require_workflow workflow
34
35
  action = :list_databases if database.nil?
35
36
  action ||= :summary
36
37
 
38
+ knowledge_base = workflow.knowledge_base
39
+
37
40
  case action.to_sym
38
41
  when :list_databases
39
- dbs = workflow.knowledge_base.registry.keys
42
+ dbs = knowledge_base.registry.keys
40
43
  puts dbs * "\n"
41
44
  when :summary
42
- db = workflow.knowledge_base.get_database(database)
45
+ db = knowledge_base.get_database(database)
43
46
  puts db.summary
44
47
  when :subset
45
48
  source_format = options[:source_format] || :source
@@ -50,12 +53,16 @@ when :subset
50
53
  source_entities = source_entities.split(/,\|/) if String === source_entities
51
54
  target_entities = target_entities.split(/,\|/) if String === target_entities
52
55
 
56
+ if options[:identify]
57
+ source_entities = knowledge_base.identify(database, source_entities)
58
+ target_entities = knowledge_base.identify(database, target_entities)
59
+ end
53
60
  entities = {source_format => source_entities, target_format => target_entities}
54
61
 
55
- matches = workflow.knowledge_base.subset(database, entities)
62
+ matches = knowledge_base.subset(database, entities)
56
63
  matches.each do |item|
57
64
  puts Log.color :magenta, item
58
- if options[:info]
65
+ if options[:details]
59
66
  source = item.source_entity
60
67
  target = item.target_entity
61
68
  source = source.name if source.respond_to? :name
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.14.7
4
+ version: 5.14.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-16 00:00:00.000000000 Z
11
+ date: 2014-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake