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 +4 -4
- data/bin/bel_upgrade +153 -0
- data/lib/bel.rb +2 -1
- data/lib/bel/language.rb +2 -2
- data/lib/bel/namespace.rb +2 -1
- data/lib/bel/parse_objects.rb +2 -1
- data/lib/bel/script.rb +2 -1
- metadata +53 -50
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3f744cb7280ca000b3f0d88c83e997cbaf05f654
|
|
4
|
+
data.tar.gz: e49304e421acd5e906fcf4022c91b9156ccc4b90
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fd2a6f3a6218651f9398eb1407489a73d3d4f2271b89a5950b839f2939382d60b49669d078bffc5e2c4408d8c0fad84803e5babb264b52f5822ea79923b613e8
|
|
7
|
+
data.tar.gz: 1e42739d9092c3f1a92e6b3b64cdcc028f5f9582ca60aabfe388ace26fd70b34d5c86db421d83b93af17dfd7421531e8116ff035ba1fd144f9e883aa6bbddc4f
|
data/bin/bel_upgrade
ADDED
|
@@ -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
data/lib/bel/language.rb
CHANGED
data/lib/bel/namespace.rb
CHANGED
data/lib/bel/parse_objects.rb
CHANGED
data/lib/bel/script.rb
CHANGED
|
@@ -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.
|
|
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
|
|
25
|
-
prerelease: false
|
|
19
|
+
version: '10.1'
|
|
26
20
|
type: :development
|
|
27
|
-
|
|
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:
|
|
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
|
|
39
|
-
prerelease: false
|
|
33
|
+
version: '2.14'
|
|
40
34
|
type: :development
|
|
41
|
-
|
|
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:
|
|
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
|
|
53
|
-
prerelease: false
|
|
47
|
+
version: '0.8'
|
|
54
48
|
type: :development
|
|
55
|
-
|
|
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:
|
|
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
|
|
67
|
-
prerelease: false
|
|
61
|
+
version: '4.0'
|
|
68
62
|
type: :development
|
|
69
|
-
|
|
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:
|
|
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
|
|
81
|
-
prerelease: false
|
|
75
|
+
version: '1.3'
|
|
82
76
|
type: :development
|
|
83
|
-
|
|
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.
|
|
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:
|