bel 0.3.0.beta1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
data/INSTALL.md ADDED
@@ -0,0 +1,19 @@
1
+ Install
2
+ =======
3
+
4
+ This library requires [Ruby](https://www.ruby-lang.org) (**>= 1.9.2**). See [how to install ruby](https://github.com/OpenBEL/bel.rb/blob/master/INSTALL_RUBY.md).
5
+
6
+ Install from [RubyGems.org](http://rubygems.org/gems/bel)
7
+
8
+ ```bash
9
+ gem install bel
10
+ ```
11
+
12
+ Build from master branch
13
+
14
+ 1. Obtain source for master branch.
15
+ - `git clone git@github.com:OpenBEL/bel.rb.git`
16
+
17
+ 2. Build
18
+ - `gem build bel.gemspec`
19
+ - `gem install bel-[VERSION].gem`
data/INSTALL_RUBY.md ADDED
@@ -0,0 +1,107 @@
1
+ # Install Ruby
2
+
3
+
4
+ ## Install Ruby (Windows)
5
+
6
+ 1. Download [RubyInstaller](http://rubyinstaller.org/downloads).
7
+ * Versions 1.9.3 and 2.x.x are supported.
8
+ 2. Install RubyInstaller version.
9
+ * Enable the _Add Ruby executables to your PATH_ option presented during installation.
10
+ 3. Open a command prompt (Windows Key + R then type `cmd`).
11
+ * Confirm installation by typing `ruby -v`.
12
+ * The output should show the ruby version (e.g. `ruby 2.0.0p451 (2014-02-24) [x64-mingw32]`).
13
+
14
+ Continue with <a href="#install_bel_gem">Install the bel gem</a>.
15
+
16
+ ## Install Ruby (Mac OSX)
17
+
18
+ _Option 1: Homebrew_
19
+
20
+ 1. Install with homebrew by typing `brew install ruby`.
21
+ 2. Add ruby commands to your PATH.
22
+ * Add to .bash_profile.
23
+ * `echo 'export PATH="/usr/local/Cellar/ruby/VERSION/bin:$PATH"' >> .bash_profile`
24
+ * Update environment by sourcing .bash_profile.
25
+ * `source ~/.bash_profile`
26
+ 3. Confirm installation by typing `ruby -v`.
27
+
28
+ _Option 2: rbenv_
29
+
30
+ * _Install with homebrew._
31
+ * `brew update`
32
+ * `brew install rbenv ruby-build`
33
+ * More details [here] (https://github.com/sstephenson/rbenv#homebrew-on-mac-os-x).
34
+
35
+ * _Install with git._
36
+ * Clone rbenv repository.
37
+ * `git clone https://github.com/sstephenson/rbenv.git ~/.rbenv`
38
+ * Add to .bash_profile.
39
+ * `echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile`
40
+ * Enable shims and autocompletion from the terminal.
41
+ * `echo 'eval "$(rbenv init -)"' >> ~/.bash_profile`
42
+ * Clone ruby-build repository.
43
+ * `git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build`
44
+ * More details [here] (https://github.com/sstephenson/rbenv#installation).
45
+
46
+ Continue with <a href="#install_bel_gem">Install the bel gem</a>.
47
+
48
+ ## Install Ruby (Linux)
49
+
50
+ _Option 1: Install via package manager._
51
+
52
+ * Example installation with Ubuntu.
53
+ * Type `sudo apt-get install ruby` in the terminal.
54
+
55
+ _Option 2: rbenv_
56
+
57
+ * _Install with git._
58
+ * Clone rbenv repository.
59
+ * `git clone https://github.com/sstephenson/rbenv.git ~/.rbenv`
60
+ * Add to .bash_profile.
61
+ * `echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile`
62
+ * Enable shims and autocompletion from the terminal.
63
+ * `echo 'eval "$(rbenv init -)"' >> ~/.bash_profile`
64
+ * Clone ruby-build repository.
65
+ * `git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build`
66
+ * More details [here] (https://github.com/sstephenson/rbenv#installation).
67
+
68
+ Continue with <a href="#install_bel_gem">Install the bel gem</a>.
69
+
70
+ <br><br>
71
+ <div id="install_bel_gem"></div>
72
+ ## Install the _bel_ gem
73
+
74
+ 1. Open a terminal or command prompt.
75
+ 2. Use the `gem` command to install the `bel` gem.
76
+ * `gem install bel`
77
+ 3. You should see the following:
78
+
79
+ <pre>
80
+ Fetching: bel-0.2.1.gem (100%)
81
+ Successfully installed bel-0.2.1
82
+ Parsing documentation for bel-0.2.1
83
+ Installing ri documentation for bel-0.2.1
84
+ 1 gem installed
85
+ </pre>
86
+ 4. Confirm you can access the `bel_upgrade` command.
87
+ 5. Continue with <a href="#upgrading_bel">Upgrading BEL</a>.
88
+
89
+ <br><br>
90
+ <div id="upgrading_bel"></div>
91
+ ## Upgrading BEL
92
+
93
+ 1. Type `bel_upgrade --help` for option details.
94
+ 2. Run command
95
+ * Example 1 - convert a BEL file
96
+ * `bel_upgrade --bel small_corpus.bel --changelog "http://resource.belframework.org/belframework/20131211/change_log.json"
97
+ * Example 2 - convert BEL from standard in
98
+ * `curl "http://resource.belframework.org/belframework/1.0/knowledge/small_corpus.bel" | bel_upgrade --changelog "http://resource.belframework.org/belframework/20131211/change_log.json"`
99
+ * More details [here] (https://github.com/OpenBEL/bel.rb).
100
+ 3. The upgraded BEL will be written to standard out. Simply redirect to a file after that.
101
+ * `bel_upgrade ... > upgraded-version.bel`
102
+
103
+ <br><br>
104
+ ## Issues
105
+
106
+ * If you have questions with `bel_upgrade` or the `bel` gem please post to the [openbel-discuss] (https://groups.google.com/forum/#!forum/openbel-discuss) google group.
107
+ * If you encounter errors please post an issue to [github issues] (https://github.com/OpenBEL/bel.rb/issues).
data/LICENSE ADDED
@@ -0,0 +1,191 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction, and
10
+ distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
13
+ owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all other entities
16
+ that control, are controlled by, or are under common control with that entity.
17
+ For the purposes of this definition, "control" means (i) the power, direct or
18
+ indirect, to cause the direction or management of such entity, whether by
19
+ contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
20
+ outstanding shares, or (iii) beneficial ownership of such entity.
21
+
22
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
23
+ permissions granted by this License.
24
+
25
+ "Source" form shall mean the preferred form for making modifications, including
26
+ but not limited to software source code, documentation source, and configuration
27
+ files.
28
+
29
+ "Object" form shall mean any form resulting from mechanical transformation or
30
+ translation of a Source form, including but not limited to compiled object code,
31
+ generated documentation, and conversions to other media types.
32
+
33
+ "Work" shall mean the work of authorship, whether in Source or Object form, made
34
+ available under the License, as indicated by a copyright notice that is included
35
+ in or attached to the work (an example is provided in the Appendix below).
36
+
37
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
38
+ is based on (or derived from) the Work and for which the editorial revisions,
39
+ annotations, elaborations, or other modifications represent, as a whole, an
40
+ original work of authorship. For the purposes of this License, Derivative Works
41
+ shall not include works that remain separable from, or merely link (or bind by
42
+ name) to the interfaces of, the Work and Derivative Works thereof.
43
+
44
+ "Contribution" shall mean any work of authorship, including the original version
45
+ of the Work and any modifications or additions to that Work or Derivative Works
46
+ thereof, that is intentionally submitted to Licensor for inclusion in the Work
47
+ by the copyright owner or by an individual or Legal Entity authorized to submit
48
+ on behalf of the copyright owner. For the purposes of this definition,
49
+ "submitted" means any form of electronic, verbal, or written communication sent
50
+ to the Licensor or its representatives, including but not limited to
51
+ communication on electronic mailing lists, source code control systems, and
52
+ issue tracking systems that are managed by, or on behalf of, the Licensor for
53
+ the purpose of discussing and improving the Work, but excluding communication
54
+ that is conspicuously marked or otherwise designated in writing by the copyright
55
+ owner as "Not a Contribution."
56
+
57
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
58
+ of whom a Contribution has been received by Licensor and subsequently
59
+ incorporated within the Work.
60
+
61
+ 2. Grant of Copyright License.
62
+
63
+ Subject to the terms and conditions of this License, each Contributor hereby
64
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
65
+ irrevocable copyright license to reproduce, prepare Derivative Works of,
66
+ publicly display, publicly perform, sublicense, and distribute the Work and such
67
+ Derivative Works in Source or Object form.
68
+
69
+ 3. Grant of Patent License.
70
+
71
+ Subject to the terms and conditions of this License, each Contributor hereby
72
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
73
+ irrevocable (except as stated in this section) patent license to make, have
74
+ made, use, offer to sell, sell, import, and otherwise transfer the Work, where
75
+ such license applies only to those patent claims licensable by such Contributor
76
+ that are necessarily infringed by their Contribution(s) alone or by combination
77
+ of their Contribution(s) with the Work to which such Contribution(s) was
78
+ submitted. If You institute patent litigation against any entity (including a
79
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
80
+ Contribution incorporated within the Work constitutes direct or contributory
81
+ patent infringement, then any patent licenses granted to You under this License
82
+ for that Work shall terminate as of the date such litigation is filed.
83
+
84
+ 4. Redistribution.
85
+
86
+ You may reproduce and distribute copies of the Work or Derivative Works thereof
87
+ in any medium, with or without modifications, and in Source or Object form,
88
+ provided that You meet the following conditions:
89
+
90
+ You must give any other recipients of the Work or Derivative Works a copy of
91
+ this License; and
92
+ You must cause any modified files to carry prominent notices stating that You
93
+ changed the files; and
94
+ You must retain, in the Source form of any Derivative Works that You distribute,
95
+ all copyright, patent, trademark, and attribution notices from the Source form
96
+ of the Work, excluding those notices that do not pertain to any part of the
97
+ Derivative Works; and
98
+ If the Work includes a "NOTICE" text file as part of its distribution, then any
99
+ Derivative Works that You distribute must include a readable copy of the
100
+ attribution notices contained within such NOTICE file, excluding those notices
101
+ that do not pertain to any part of the Derivative Works, in at least one of the
102
+ following places: within a NOTICE text file distributed as part of the
103
+ Derivative Works; within the Source form or documentation, if provided along
104
+ with the Derivative Works; or, within a display generated by the Derivative
105
+ Works, if and wherever such third-party notices normally appear. The contents of
106
+ the NOTICE file are for informational purposes only and do not modify the
107
+ License. You may add Your own attribution notices within Derivative Works that
108
+ You distribute, alongside or as an addendum to the NOTICE text from the Work,
109
+ provided that such additional attribution notices cannot be construed as
110
+ modifying the License.
111
+ You may add Your own copyright statement to Your modifications and may provide
112
+ additional or different license terms and conditions for use, reproduction, or
113
+ distribution of Your modifications, or for any such Derivative Works as a whole,
114
+ provided Your use, reproduction, and distribution of the Work otherwise complies
115
+ with the conditions stated in this License.
116
+
117
+ 5. Submission of Contributions.
118
+
119
+ Unless You explicitly state otherwise, any Contribution intentionally submitted
120
+ for inclusion in the Work by You to the Licensor shall be under the terms and
121
+ conditions of this License, without any additional terms or conditions.
122
+ Notwithstanding the above, nothing herein shall supersede or modify the terms of
123
+ any separate license agreement you may have executed with Licensor regarding
124
+ such Contributions.
125
+
126
+ 6. Trademarks.
127
+
128
+ This License does not grant permission to use the trade names, trademarks,
129
+ service marks, or product names of the Licensor, except as required for
130
+ reasonable and customary use in describing the origin of the Work and
131
+ reproducing the content of the NOTICE file.
132
+
133
+ 7. Disclaimer of Warranty.
134
+
135
+ Unless required by applicable law or agreed to in writing, Licensor provides the
136
+ Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
137
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
138
+ including, without limitation, any warranties or conditions of TITLE,
139
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
140
+ solely responsible for determining the appropriateness of using or
141
+ redistributing the Work and assume any risks associated with Your exercise of
142
+ permissions under this License.
143
+
144
+ 8. Limitation of Liability.
145
+
146
+ In no event and under no legal theory, whether in tort (including negligence),
147
+ contract, or otherwise, unless required by applicable law (such as deliberate
148
+ and grossly negligent acts) or agreed to in writing, shall any Contributor be
149
+ liable to You for damages, including any direct, indirect, special, incidental,
150
+ or consequential damages of any character arising as a result of this License or
151
+ out of the use or inability to use the Work (including but not limited to
152
+ damages for loss of goodwill, work stoppage, computer failure or malfunction, or
153
+ any and all other commercial damages or losses), even if such Contributor has
154
+ been advised of the possibility of such damages.
155
+
156
+ 9. Accepting Warranty or Additional Liability.
157
+
158
+ While redistributing the Work or Derivative Works thereof, You may choose to
159
+ offer, and charge a fee for, acceptance of support, warranty, indemnity, or
160
+ other liability obligations and/or rights consistent with this License. However,
161
+ in accepting such obligations, You may act only on Your own behalf and on Your
162
+ sole responsibility, not on behalf of any other Contributor, and only if You
163
+ agree to indemnify, defend, and hold each Contributor harmless for any liability
164
+ incurred by, or claims asserted against, such Contributor by reason of your
165
+ accepting any such warranty or additional liability.
166
+
167
+ END OF TERMS AND CONDITIONS
168
+
169
+ APPENDIX: How to apply the Apache License to your work
170
+
171
+ To apply the Apache License to your work, attach the following boilerplate
172
+ notice, with the fields enclosed by brackets "[]" replaced with your own
173
+ identifying information. (Don't include the brackets!) The text should be
174
+ enclosed in the appropriate comment syntax for the file format. We also
175
+ recommend that a file or class name and description of purpose be included on
176
+ the same "printed page" as the copyright notice for easier identification within
177
+ third-party archives.
178
+
179
+ Copyright 2013 OpenBEL Consortium
180
+
181
+ Licensed under the Apache License, Version 2.0 (the "License");
182
+ you may not use this file except in compliance with the License.
183
+ You may obtain a copy of the License at
184
+
185
+ http://www.apache.org/licenses/LICENSE-2.0
186
+
187
+ Unless required by applicable law or agreed to in writing, software
188
+ distributed under the License is distributed on an "AS IS" BASIS,
189
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
190
+ See the License for the specific language governing permissions and
191
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,319 @@
1
+ bel ruby
2
+ ========
3
+
4
+ [![Gem Version](https://badge.fury.io/rb/bel.svg)](http://badge.fury.io/rb/bel)
5
+
6
+ The bel ruby gem allows the reading, writing, and processing of BEL (Biological Expression Language) with a natural DSL.
7
+
8
+ Learn more on [BEL](http://www.openbel.org/content/bel-lang-language).
9
+
10
+ License: [Apache License, Version 2.0](http://opensource.org/licenses/Apache-2.0)
11
+
12
+ Dependencies
13
+
14
+ - Required
15
+
16
+ - Ruby 1.9.2 or greater ([how to install ruby](INSTALL_RUBY.md))
17
+
18
+ - Optional
19
+
20
+ - *rdf gem*, *addressable gem*, and *uuid gem* for RDF conversion
21
+ - *rdf-turtle gem* for serializing to RDF turtle format
22
+
23
+ Install / Build: See [INSTALL](INSTALL.md).
24
+
25
+ branches
26
+ --------
27
+
28
+ - master branch
29
+ - [![Travis CI Build](https://travis-ci.org/OpenBEL/bel.rb.svg?branch=master)](https://travis-ci.org/OpenBEL/bel.rb)
30
+
31
+ - next branch
32
+ - [![Build Status for next branch](https://travis-ci.org/OpenBEL/bel.rb.svg?branch=next)](https://travis-ci.org/OpenBEL/bel.rb)
33
+
34
+
35
+ executable commands
36
+ -------------------
37
+
38
+ **bel_upgrade**: Upgrade namespaces in BEL content to another version (i.e. *1.0* to *20131211*)
39
+
40
+ ```bash
41
+
42
+ # using BEL file and change log JSON file
43
+ bel_upgrade --bel small_corpus.bel --changelog change_log.json
44
+
45
+ # using BEL file and change log from a URL
46
+ bel_upgrade --bel small_corpus.bel --changelog http://resource.belframework.org/belframework/20131211/change_log.json
47
+
48
+ # using BEL from STDIN and change log from a URL
49
+ cat small_corpus.bel | bel_upgrade --changelog http://resource.belframework.org/belframework/20131211/change_log.json
50
+ ```
51
+
52
+ **bel_upgrade_term**: Upgrade BEL terms to another version (e.g. *1.0* to *20131211*)
53
+
54
+ ```bash
55
+
56
+ # using BEL terms and change log JSON file
57
+ bel_upgrade_term -t "p(HGNC:A2LD1)\np(EGID:84)\n" -n "1.0" -c change_log.json
58
+
59
+ # using BEL terms and change log from a URL
60
+ bel_upgrade_term -t "p(HGNC:A2LD1)\np(EGID:84)\n" -n "1.0" -c http://resource.belframework.org/belframework/20131211/change_log.json
61
+
62
+ # using BEL from STDIN
63
+ echo -e "p(EGID:84)\np(HGNC:A2LD1)" | bel_upgrade_term -n "1.0" -c change_log.json
64
+ cat terms.bel | bel_upgrade_term -n "1.0" -c change_log.json
65
+ ```
66
+
67
+ **bel_rdfschema**: Dumps the RDF Schema triples for BEL.
68
+
69
+ ```bash
70
+
71
+ # dumps schema in ntriples format (default)
72
+ bel_rdfschema
73
+
74
+ # dumps schema in turtle format
75
+ # note: requires the 'rdf-turtle' gem
76
+ bel_rdfschema --format turtle
77
+ ```
78
+
79
+ **bel2rdf**: Converts BEL to RDF.
80
+
81
+ ```bash
82
+
83
+ # dumps RDF to standard out in ntriples format (default)
84
+ # (from file)
85
+ bel2rdf --bel small_corpus.bel
86
+
87
+ # (from standard in)
88
+ cat small_corpus.bel | bel2rdf
89
+
90
+ # dumps RDF to standard out in turtle format
91
+ # (from file)
92
+ bel2rdf --bel small_corpus.bel --format turtle
93
+
94
+ # (from standard in)
95
+ cat small_corpus.bel | bel2rdf --format turtle
96
+ ```
97
+
98
+ **bel_parse**: Show parsed objects from BEL content for debugging purposes
99
+
100
+ ```bash
101
+
102
+ # ...from file
103
+ bel_parse --bel small_corpus.bel
104
+
105
+ # ...from standard in
106
+ cat small_corpus.bel | bel_parse
107
+ ```
108
+
109
+ api examples
110
+ ------------
111
+
112
+ **Use OpenBEL namespaces from the latest release.**
113
+
114
+ ```ruby
115
+
116
+ require 'bel'
117
+
118
+ # reference namespace value using standard prefixes (HGNC, MGI, RGD, etc.)
119
+ HGNC['AKT1']
120
+ => #<BEL::Language::Parameter:0x00000004df5bc0
121
+ @enc=:GRP,
122
+ @ns_def="BEL::Namespace::HGNC",
123
+ @value=:AKT1>
124
+ ```
125
+
126
+ **Load your own namespace**
127
+
128
+ ```ruby
129
+
130
+ require 'bel'
131
+
132
+ # define a NamespaceDefinition with prefix symbol and url
133
+ PUBCHEM = NamespaceDefinition.new(:PUBCHEM, 'http://your-url.org/pubchem.belns')
134
+
135
+ # reference caffeine compound, sip, and enjoy
136
+ PUBCHEM['2519']
137
+ ```
138
+
139
+ **Load namespaces from a published OpenBEL version**
140
+
141
+ ```ruby
142
+
143
+ require 'bel'
144
+
145
+ ResourceIndex.openbel_published_index('1.0').namespaces.find { |x| x.prefix == :HGU133P2 }
146
+ ResourceIndex.openbel_published_index('20131211').namespaces.find { |x| x.prefix == :AFFX }
147
+ ResourceIndex.openbel_published_index('latest-release').namespaces.find { |x| x.prefix == :AFFX }
148
+ ```
149
+
150
+ **Load namespaces from a custom resource index**
151
+
152
+ ```ruby
153
+
154
+ require 'bel'
155
+
156
+ ResourceIndex.new('/home/bel/index.xml').namespaces.map(&:prefix)
157
+ => ["AFFX", "CHEBIID", "CHEBI", "DOID", "DO", "EGID", "GOBPID", "GOBP",
158
+ "GOCCID", "GOCC", "HGNC", "MESHPP", "MESHCS", "MESHD", "MGI", "RGD",
159
+ "SCHEM", "SDIS", "SFAM", "SCOMP", "SPAC", "SP"]
160
+ ```
161
+
162
+ **Validate BEL parameters**
163
+
164
+ ```ruby
165
+
166
+ require 'bel'
167
+
168
+ # AKT1 contained within HGNC NamespaceDefinition
169
+ HGNC[:AKT1].valid?
170
+ => true
171
+
172
+ # not_in_namespace is not contained with HGNC NamespaceDefinition
173
+ HGNC[:not_in_namespace].valid?
174
+ => false
175
+
176
+ # namespace is nil so :some_value MAY exist
177
+ Parameter.new(nil, :some_value).valid?
178
+ => true
179
+ ```
180
+
181
+ **Validate BEL terms**
182
+
183
+ ```ruby
184
+
185
+ require 'bel'
186
+
187
+ tscript(g(HGNC['AKT1'])).valid?
188
+ => false
189
+ tscript(g(HGNC['AKT1'])).valid_signatures
190
+ => []
191
+ tscript(g(HGNC['AKT1'])).invalid_signatures.map(&:to_s)
192
+ => ["tscript(F:complex)a", "tscript(F:p)a"]
193
+
194
+ tscript(p(HGNC['AKT1'])).valid?
195
+ => true
196
+ tscript(p(HGNC['AKT1'])).valid_signatures.map(&:to_s)
197
+ => ["tscript(F:p)a"]
198
+ tscript(p(HGNC['AKT1'])).invalid_signatures.map(&:to_s)
199
+ => ["tscript(F:complex)a"]
200
+ ```
201
+
202
+ **Write BEL in Ruby with a DSL**
203
+
204
+ ```ruby
205
+
206
+ require 'bel'
207
+
208
+ # create BEL statements
209
+ p(HGNC['SKIL']).directlyDecreases tscript(p(HGNC['SMAD3']))
210
+ bp(GO['response to hypoxia']).increases tscript(p(EGID['7157']))
211
+ ```
212
+
213
+ **Parse BEL input**
214
+
215
+ ```ruby
216
+
217
+ require 'bel'
218
+
219
+ # example BEL document
220
+ BEL_SCRIPT = <<-EOF
221
+ SET DOCUMENT Name = "Spec"
222
+ SET DOCUMENT Authors = User
223
+ SET Disease = "Atherosclerosis"
224
+ path(MESHD:Atherosclerosis)
225
+ path(Atherosclerosis)
226
+ bp(GO:"lipid oxidation")
227
+ p(MGI:Mapkap1) -> p(MGI:Akt1,pmod(P,S,473))
228
+ path(MESHD:Atherosclerosis) => bp(GO:"lipid oxidation")
229
+ path(MESHD:Atherosclerosis) =| (p(HGNC:MYC) -> bp(GO:"apoptotic process"))
230
+ EOF
231
+
232
+ # BEL::Script.parse returns BEL::Script::Parser
233
+ BEL::Script.parse('tscript(p(HGNC:AKT1))')
234
+ => #<BEL::Script::Parser:0x007f179261d270>
235
+
236
+ # BEL::Script::Parser is Enumerable so we can analyze as we parse
237
+ # for example: count all function types into a hash
238
+ BEL::Script.parse('tscript(p(HGNC:AKT1))', {HGNC: HGNC}).find_all { |obj|
239
+ obj.is_a? Term
240
+ }.map { |term|
241
+ term.fx
242
+ }.reduce(Hash.new {|h,k| h[k] = 0}) { |result, function|
243
+ result[function.short_form] += 1
244
+ result
245
+ }
246
+ => {:p=>1, :tscript=>1}
247
+
248
+ # parse; yield each parsed object to the block
249
+ namespace_mapping = {GO: GOBP, HGNC: HGNC, MGI: MGI, MESHD: MESHD}
250
+ BEL::Script.parse(BEL_SCRIPT, namespace_mapping) do |obj|
251
+ puts "#{obj.class} #{obj}"
252
+ end
253
+ => BEL::Script::DocumentProperty: SET DOCUMENT Name = "Spec"
254
+ => BEL::Script::DocumentProperty: SET DOCUMENT Authors = "User"
255
+ => BEL::Script::Annotation: SET Disease = "Atherosclerosis"
256
+ => BEL::Script::Parameter: MESHD:Atherosclerosis
257
+ => BEL::Script::Term: path(MESHD:Atherosclerosis)
258
+ => BEL::Script::Statement: path(MESHD:Atherosclerosis)
259
+ => BEL::Script::Parameter: Atherosclerosis
260
+ => BEL::Script::Term: path(Atherosclerosis)
261
+ => BEL::Script::Statement: path(Atherosclerosis)
262
+ => BEL::Script::Parameter: GO:"lipid oxidation"
263
+ => BEL::Script::Term: bp(GO:"lipid oxidation")
264
+ => BEL::Script::Statement: bp(GO:"lipid oxidation")
265
+ => BEL::Script::Parameter: MGI:Mapkap1
266
+ => BEL::Script::Term: p(MGI:Mapkap1)
267
+ => BEL::Script::Parameter: MGI:Akt1
268
+ => BEL::Script::Parameter: P
269
+ => BEL::Script::Parameter: S
270
+ => BEL::Script::Parameter: 473
271
+ => BEL::Script::Term: p(MGI:Akt1,pmod(P,S,473))
272
+ => BEL::Script::Statement: p(MGI:Mapkap1) -> p(MGI:Akt1,pmod(P,S,473))
273
+ => BEL::Script::Parameter: MESHD:Atherosclerosis
274
+ => BEL::Script::Term: path(MESHD:Atherosclerosis)
275
+ => BEL::Script::Parameter: GO:"lipid oxidation"
276
+ => BEL::Script::Term: bp(GO:"lipid oxidation")
277
+ => BEL::Script::Statement: path(MESHD:Atherosclerosis) => bp(GO:"lipid oxidation")
278
+ => BEL::Script::Parameter: MESHD:Atherosclerosis
279
+ => BEL::Script::Term: path(MESHD:Atherosclerosis)
280
+ => BEL::Script::Parameter: HGNC:MYC
281
+ => BEL::Script::Term: p(HGNC:MYC)
282
+ => BEL::Script::Parameter: GO:"apoptotic process"
283
+ => BEL::Script::Term: bp(GO:"apoptotic process")
284
+ => BEL::Script::Statement: path(MESHD:Atherosclerosis) =| (p(HGNC:MYC) -> bp(GO:"apoptotic process"))
285
+ ```
286
+
287
+ **Iteratively parse BEL from file-like object**
288
+
289
+ ```ruby
290
+
291
+ require 'bel'
292
+ BEL::Script.parse(File.open('/home/user/small_corpus.bel')).find_all { |obj|
293
+ obj.is_a? Statement
294
+ }.to_a.size
295
+ ```
296
+
297
+ **Parse BEL and convert to RDF (requires the *rdf*, *addressable*, and *uuid* gems)**
298
+
299
+ ```ruby
300
+
301
+ require 'bel'
302
+ parser = BEL::Script::Parser.new
303
+
304
+ rdf_statements = []
305
+
306
+ # parse term
307
+ parser.parse('p(HGNC:AKT1)') do |obj|
308
+ if obj.is_a? BEL::Language::Term
309
+ rdf_statements += obj.to_rdf
310
+ end
311
+ end
312
+
313
+ # parse statement
314
+ parser.parse("p(HGNC:AKT1) => tscript(g(HGNC:TNF))\n") do |obj|
315
+ if obj.is_a? BEL::Language::Statement
316
+ rdf_statements += obj.to_rdf
317
+ end
318
+ end
319
+ ```