bel 0.2.0 → 0.2.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: dbb6ddb6754232d8fc70152ae5ffcf4d0a4432df
4
- data.tar.gz: 40b40949e19877e45095c94afb6c86384683d3ec
3
+ metadata.gz: 3f744cb7280ca000b3f0d88c83e997cbaf05f654
4
+ data.tar.gz: e49304e421acd5e906fcf4022c91b9156ccc4b90
5
5
  SHA512:
6
- metadata.gz: 3088d9456c11b4f7625626fb336a30da1c2f53a16fad5a361c03d37d64d55840d0dcf1a331262c828efd1784d17c30f32243df7cd6bcdc533e1a6983bc9c93ba
7
- data.tar.gz: ea570c12d61203e0fb486c9535a471d29977d71c2b3984a240ca4258abbabfccc9fe44594e42e066bc828751fd10d4d567a49c6c90b4cf83c4e1328463f71f15
6
+ metadata.gz: fd2a6f3a6218651f9398eb1407489a73d3d4f2271b89a5950b839f2939382d60b49669d078bffc5e2c4408d8c0fad84803e5babb264b52f5822ea79923b613e8
7
+ data.tar.gz: 1e42739d9092c3f1a92e6b3b64cdcc028f5f9582ca60aabfe388ace26fd70b34d5c86db421d83b93af17dfd7421531e8116ff035ba1fd144f9e883aa6bbddc4f
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env ruby
2
+ # bel_upgrade: Upgrade BEL content to a new set of resources.
3
+ #
4
+ # From BEL file
5
+ # usage: ruby bel_upgrade -b file.bel -c file.json
6
+ #
7
+ # From standard in
8
+ # usage: echo "<BEL DOCUMENT STRING>" | ruby bel_upgrade -c file.json
9
+
10
+ require 'bel'
11
+ require 'json'
12
+ require 'optparse'
13
+ require 'set'
14
+ require 'open-uri'
15
+
16
+ # setup and parse options
17
+ options = {}
18
+ OptionParser.new do |opts|
19
+ opts.banner = "Usage: upgrade-namespaces.rb [options] [.bel file]"
20
+ opts.on('-b', '--bel FILE', 'BEL file to upgrade. STDIN (standard in) can also be used for BEL content.') do |bel|
21
+ options['bel'] = bel
22
+ end
23
+ opts.on("-c", "--changelog [FILE | URI]", "Change log JSON") do |change_log|
24
+ options['change_log'] = change_log
25
+ end
26
+ end.parse!
27
+
28
+ # option guards
29
+ unless options['bel'] or not STDIN.tty?
30
+ $stderr.puts "No bel content provided. Either use --bel option or STDIN (standard in). Use -h / --help for details."
31
+ exit 1
32
+ end
33
+ unless options['change_log']
34
+ $stderr.puts "Missing --changelog option. Use -h / --help for details."
35
+ exit 1
36
+ end
37
+ if not File.exists? options['change_log']
38
+ begin
39
+ open(options['change_log']) do |f|
40
+ unless f.content_type == 'application/json'
41
+ $stderr.puts "Expected application/json content type, actual: #{f.content_type}"
42
+ exit 1
43
+ end
44
+ end
45
+ rescue OpenURI::HTTPError => e
46
+ $stderr.puts "Cannot read URI for change_log, #{options['change_log']}, status: #{e}"
47
+ exit 1
48
+ end
49
+ end
50
+ if options['bel'] and not File.exists? options['bel']
51
+ $stderr.puts "No file for bel, #{options['bel']}"
52
+ exit 1
53
+ end
54
+
55
+ # read bel content
56
+ content = (STDIN.tty?) ? File.open(options['bel']).read : $stdin.read
57
+
58
+ # read change log
59
+ changelog = nil
60
+ if File.exists? options['change_log']
61
+ File.open(options['change_log']) do |f|
62
+ changelog = JSON.parse(f.read)
63
+ end
64
+ else
65
+ open(options['change_log']) do |file|
66
+ changelog = JSON.parse(file.read)
67
+ end
68
+ end
69
+
70
+ unless changelog
71
+ $stderr.puts "Cannot retrieve change_log #{options['change_log']}"
72
+ end
73
+
74
+ class Main
75
+
76
+ EvidenceMatcher = Regexp.compile(/SET Evidence = ([0-9a-zA-Z]+)/)
77
+ attr_reader :ttl
78
+
79
+ def initialize(content, change_log)
80
+ @change_log = change_log
81
+ @keywords_seen = Set.new
82
+ parser = BEL::Script::Parser.new
83
+ parser.add_observer self
84
+ parser.parse(content)
85
+ end
86
+ def update(obj)
87
+ # redefine namespace based on change log's `redefine` block
88
+ if obj.is_a? BEL::Script::NamespaceDefinition
89
+ if @change_log.has_key? 'redefine'
90
+ redefine = @change_log['redefine']
91
+ if redefine.has_key? obj.prefix
92
+ entry = redefine[obj.prefix]
93
+ obj.prefix = entry['new_keyword']
94
+ obj.value = entry['new_url']
95
+ end
96
+ end
97
+
98
+ # deduplicate namespaces for output purposes
99
+ if @keywords_seen.include? obj.prefix
100
+ return
101
+ end
102
+ @keywords_seen.add(obj.prefix)
103
+ end
104
+
105
+ if obj.is_a? BEL::Script::Annotation
106
+ if obj.name == 'Evidence'
107
+ ev = obj.to_s
108
+ ev.gsub!(EvidenceMatcher, 'SET Evidence = "\1"')
109
+ puts ev
110
+ return
111
+ end
112
+ end
113
+
114
+ if obj.is_a? BEL::Script::Parameter
115
+ if @change_log.has_key? obj.ns
116
+ clog_ns = @change_log[obj.ns]
117
+ if clog_ns.has_key? obj.value
118
+ replacement = clog_ns[obj.value]
119
+ if replacement == 'unresolved' or replacement == 'withdrawn'
120
+ $stderr.puts "no replacement value for #{obj.ns} '#{obj.value}' - value '#{replacement}'"
121
+ return
122
+ end
123
+ obj.value = replacement
124
+ end
125
+ end
126
+ # redefine param namespace based on change log's `redefine` block
127
+ if @change_log.has_key? 'redefine'
128
+ redefine = @change_log['redefine']
129
+ if redefine.has_key? obj.ns
130
+ obj.ns = redefine[obj.ns]['new_keyword']
131
+ end
132
+ end
133
+ return
134
+ end
135
+
136
+ if obj.is_a? BEL::Script::Term
137
+ return # do not print (part of statement)
138
+ end
139
+
140
+ puts obj.to_s
141
+ end
142
+
143
+ private
144
+
145
+ def error_file(file_name)
146
+ $stderr.puts "#{file_name} is not readable"
147
+ exit 1
148
+ end
149
+ end
150
+
151
+ Main.new(content, changelog)
152
+ # vim: ts=2 sw=2:
153
+ # encoding: utf-8
data/lib/bel.rb CHANGED
@@ -1,6 +1,7 @@
1
- # vim: ts=2 sw=2:
2
1
  module BEL
3
2
  autoload :Language, "#{File.dirname(__FILE__)}/bel/language"
4
3
  autoload :Namespace, "#{File.dirname(__FILE__)}/bel/namespace"
5
4
  autoload :Script, "#{File.dirname(__FILE__)}/bel/script"
6
5
  end
6
+ # vim: ts=2 sw=2:
7
+ # encoding: utf-8
@@ -1,5 +1,3 @@
1
- # vim: ts=2 sw=2:
2
-
3
1
  module BEL
4
2
  module Language
5
3
  class Signature
@@ -574,3 +572,5 @@ module BEL
574
572
  end
575
573
  end
576
574
  end
575
+ # vim: ts=2 sw=2:
576
+ # encoding: utf-8
@@ -1,4 +1,3 @@
1
- # vim: ts=2 sw=2:
2
1
  require 'open-uri'
3
2
  require_relative './language'
4
3
 
@@ -104,3 +103,5 @@ module BEL
104
103
  ]
105
104
  end
106
105
  end
106
+ # vim: ts=2 sw=2:
107
+ # encoding: utf-8
@@ -1,4 +1,3 @@
1
- # vim: ts=2 sw=2:
2
1
  require 'singleton'
3
2
 
4
3
  module BEL
@@ -112,3 +111,5 @@ module BEL
112
111
  private
113
112
  end
114
113
  end
114
+ # vim: ts=2 sw=2:
115
+ # encoding: utf-8
@@ -1,5 +1,4 @@
1
1
 
2
- # vim: ts=2 sw=2:
3
2
  =begin
4
3
 
5
4
  class << self
@@ -186841,3 +186840,5 @@ if __FILE__ == $0
186841
186840
  parser.add_observer(DefaultObserver.new)
186842
186841
  parser.parse(content)
186843
186842
  end
186843
+ # vim: ts=2 sw=2:
186844
+ # encoding: utf-8
metadata CHANGED
@@ -1,120 +1,123 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Bargnesi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: 10.1.0
20
15
  requirement: !ruby/object:Gem::Requirement
21
16
  requirements:
22
- - - ~>
17
+ - - "~>"
23
18
  - !ruby/object:Gem::Version
24
- version: 10.1.0
25
- prerelease: false
19
+ version: '10.1'
26
20
  type: :development
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
21
+ prerelease: false
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
- - - ~>
24
+ - - "~>"
32
25
  - !ruby/object:Gem::Version
33
- version: 2.14.0
26
+ version: '10.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
34
29
  requirement: !ruby/object:Gem::Requirement
35
30
  requirements:
36
- - - ~>
31
+ - - "~>"
37
32
  - !ruby/object:Gem::Version
38
- version: 2.14.0
39
- prerelease: false
33
+ version: '2.14'
40
34
  type: :development
41
- - !ruby/object:Gem::Dependency
42
- name: yard
35
+ prerelease: false
43
36
  version_requirements: !ruby/object:Gem::Requirement
44
37
  requirements:
45
- - - ~>
38
+ - - "~>"
46
39
  - !ruby/object:Gem::Version
47
- version: 0.8.7.0
40
+ version: '2.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: yard
48
43
  requirement: !ruby/object:Gem::Requirement
49
44
  requirements:
50
- - - ~>
45
+ - - "~>"
51
46
  - !ruby/object:Gem::Version
52
- version: 0.8.7.0
53
- prerelease: false
47
+ version: '0.8'
54
48
  type: :development
55
- - !ruby/object:Gem::Dependency
56
- name: rdoc
49
+ prerelease: false
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: 4.0.0
54
+ version: '0.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
62
57
  requirement: !ruby/object:Gem::Requirement
63
58
  requirements:
64
- - - ~>
59
+ - - "~>"
65
60
  - !ruby/object:Gem::Version
66
- version: 4.0.0
67
- prerelease: false
61
+ version: '4.0'
68
62
  type: :development
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
63
+ prerelease: false
71
64
  version_requirements: !ruby/object:Gem::Requirement
72
65
  requirements:
73
- - - ~>
66
+ - - "~>"
74
67
  - !ruby/object:Gem::Version
75
- version: 1.3.0
68
+ version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
76
71
  requirement: !ruby/object:Gem::Requirement
77
72
  requirements:
78
- - - ~>
73
+ - - "~>"
79
74
  - !ruby/object:Gem::Version
80
- version: 1.3.0
81
- prerelease: false
75
+ version: '1.3'
82
76
  type: :development
83
- description: The BEL gem allows the reading, writing, and processing of BEL (Biological Expression Language) with a natural DSL.
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
83
+ description: The BEL gem allows the reading, writing, and processing of BEL (Biological
84
+ Expression Language) with a natural DSL.
84
85
  email: abargnesi@selventa.com
85
- executables: []
86
+ executables:
87
+ - bel_upgrade
86
88
  extensions: []
87
89
  extra_rdoc_files: []
88
90
  files:
91
+ - LICENSE
92
+ - bin/bel_upgrade
89
93
  - lib/bel.rb
90
- - lib/bel/parse_objects.rb
91
- - lib/bel/namespace.rb
92
94
  - lib/bel/language.rb
95
+ - lib/bel/namespace.rb
96
+ - lib/bel/parse_objects.rb
93
97
  - lib/bel/script.rb
94
- - LICENSE
95
98
  homepage: https://github.com/OpenBEL/bel.rb
96
99
  licenses:
97
100
  - Apache-2.0
98
101
  metadata: {}
99
- post_install_message:
102
+ post_install_message:
100
103
  rdoc_options: []
101
104
  require_paths:
102
105
  - lib
103
106
  required_ruby_version: !ruby/object:Gem::Requirement
104
107
  requirements:
105
- - - '>='
108
+ - - ">="
106
109
  - !ruby/object:Gem::Version
107
110
  version: '0'
108
111
  required_rubygems_version: !ruby/object:Gem::Requirement
109
112
  requirements:
110
- - - '>='
113
+ - - ">="
111
114
  - !ruby/object:Gem::Version
112
115
  version: '0'
113
116
  requirements: []
114
- rubyforge_project:
115
- rubygems_version: 2.1.9
116
- signing_key:
117
+ rubyforge_project:
118
+ rubygems_version: 2.2.0
119
+ signing_key:
117
120
  specification_version: 4
118
121
  summary: Process BEL with ruby.
119
122
  test_files: []
120
- has_rdoc:
123
+ has_rdoc: